snaptrade 2.0.171 → 2.0.173

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,441 @@
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+ =end
9
+
10
+ require 'date'
11
+ require 'time'
12
+
13
+ module SnapTrade
14
+ class OrderUpdatedResponseOrder
15
+ # Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system.
16
+ attr_accessor :brokerage_order_id
17
+
18
+ # Indicates the status of an order. SnapTrade does a best effort to map brokerage statuses to statuses in this enum. Possible values include: - NONE - PENDING - ACCEPTED - FAILED - REJECTED - CANCELED - PARTIAL_CANCELED - CANCEL_PENDING - EXECUTED - PARTIAL - REPLACE_PENDING - REPLACED - EXPIRED - QUEUED - TRIGGERED - ACTIVATED
19
+ attr_accessor :status
20
+
21
+ attr_accessor :universal_symbol
22
+
23
+ attr_accessor :option_symbol
24
+
25
+ attr_accessor :quote_universal_symbol
26
+
27
+ attr_accessor :quote_currency
28
+
29
+ # The action describes the intent or side of a trade. This is usually `BUY` or `SELL` but can include other potential values like the following depending on the specific brokerage. - BUY - SELL - BUY_COVER - SELL_SHORT - BUY_OPEN - BUY_CLOSE - SELL_OPEN - SELL_CLOSE
30
+ attr_accessor :action
31
+
32
+ # The total number of shares or contracts of the order. This should be the sum of the filled, canceled, and open quantities. Can be a decimal number for fractional shares.
33
+ attr_accessor :total_quantity
34
+
35
+ # The number of shares or contracts that are still open (waiting for execution). Can be a decimal number for fractional shares.
36
+ attr_accessor :open_quantity
37
+
38
+ # The number of shares or contracts that have been canceled. Can be a decimal number for fractional shares.
39
+ attr_accessor :canceled_quantity
40
+
41
+ # The number of shares or contracts that have been filled. Can be a decimal number for fractional shares.
42
+ attr_accessor :filled_quantity
43
+
44
+ # The price at which the order was executed.
45
+ attr_accessor :execution_price
46
+
47
+ # The limit price is maximum price one is willing to pay for a buy order or the minimum price one is willing to accept for a sell order. Should only apply to `Limit` and `StopLimit` orders.
48
+ attr_accessor :limit_price
49
+
50
+ # The stop price is the price at which a stop order is triggered. Should only apply to `Stop` and `StopLimit` orders.
51
+ attr_accessor :stop_price
52
+
53
+ # The type of order placed. The most common values are `Market`, `Limit`, `Stop`, and `StopLimit`. We try our best to map brokerage order types to these values. When mapping fails, we will return the brokerage's order type value.
54
+ attr_accessor :order_type
55
+
56
+ # The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. We try our best to map brokerage time in force values to the following. When mapping fails, we will return the brokerage's time in force value. - `Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled. - `GTD` - Good Til Date. The order is valid until the specified date. - `MOO` - Market On Open. The order is to be executed at the day's opening price. - `EHP` - Extended Hours P.M. The order is to be placed during extended hour trading, after markets close.
57
+ attr_accessor :time_in_force
58
+
59
+ # The time the order was placed. This is the time the order was submitted to the brokerage.
60
+ attr_accessor :time_placed
61
+
62
+ # The time the order was last updated in the brokerage system. This value is not always available from the brokerage.
63
+ attr_accessor :time_updated
64
+
65
+ # The time the order was executed in the brokerage system. This value is not always available from the brokerage.
66
+ attr_accessor :time_executed
67
+
68
+ # The time the order expires. This value is not always available from the brokerage.
69
+ attr_accessor :expiry_date
70
+
71
+ # A unique ID for the security within SnapTrade, scoped to the brokerage account that the security belongs to. This is a legacy field and should not be used. Do not rely on this being a stable ID as it can change.
72
+ attr_accessor :symbol
73
+
74
+ attr_accessor :child_brokerage_order_ids
75
+
76
+ # Attribute mapping from ruby-style variable name to JSON key.
77
+ def self.attribute_map
78
+ {
79
+ :'brokerage_order_id' => :'brokerage_order_id',
80
+ :'status' => :'status',
81
+ :'universal_symbol' => :'universal_symbol',
82
+ :'option_symbol' => :'option_symbol',
83
+ :'quote_universal_symbol' => :'quote_universal_symbol',
84
+ :'quote_currency' => :'quote_currency',
85
+ :'action' => :'action',
86
+ :'total_quantity' => :'total_quantity',
87
+ :'open_quantity' => :'open_quantity',
88
+ :'canceled_quantity' => :'canceled_quantity',
89
+ :'filled_quantity' => :'filled_quantity',
90
+ :'execution_price' => :'execution_price',
91
+ :'limit_price' => :'limit_price',
92
+ :'stop_price' => :'stop_price',
93
+ :'order_type' => :'order_type',
94
+ :'time_in_force' => :'time_in_force',
95
+ :'time_placed' => :'time_placed',
96
+ :'time_updated' => :'time_updated',
97
+ :'time_executed' => :'time_executed',
98
+ :'expiry_date' => :'expiry_date',
99
+ :'symbol' => :'symbol',
100
+ :'child_brokerage_order_ids' => :'child_brokerage_order_ids'
101
+ }
102
+ end
103
+
104
+ # Returns all the JSON keys this model knows about
105
+ def self.acceptable_attributes
106
+ attribute_map.values
107
+ end
108
+
109
+ # Attribute type mapping.
110
+ def self.openapi_types
111
+ {
112
+ :'brokerage_order_id' => :'String',
113
+ :'status' => :'AccountOrderRecordStatus',
114
+ :'universal_symbol' => :'AccountOrderRecordUniversalSymbol',
115
+ :'option_symbol' => :'AccountOrderRecordOptionSymbol',
116
+ :'quote_universal_symbol' => :'AccountOrderRecordQuoteUniversalSymbol',
117
+ :'quote_currency' => :'AccountOrderRecordQuoteCurrency',
118
+ :'action' => :'String',
119
+ :'total_quantity' => :'String',
120
+ :'open_quantity' => :'String',
121
+ :'canceled_quantity' => :'String',
122
+ :'filled_quantity' => :'String',
123
+ :'execution_price' => :'Float',
124
+ :'limit_price' => :'Float',
125
+ :'stop_price' => :'Float',
126
+ :'order_type' => :'String',
127
+ :'time_in_force' => :'String',
128
+ :'time_placed' => :'Time',
129
+ :'time_updated' => :'Time',
130
+ :'time_executed' => :'Time',
131
+ :'expiry_date' => :'Time',
132
+ :'symbol' => :'String',
133
+ :'child_brokerage_order_ids' => :'AccountOrderRecordChildBrokerageOrderIds'
134
+ }
135
+ end
136
+
137
+ # List of attributes with nullable: true
138
+ def self.openapi_nullable
139
+ Set.new([
140
+ :'total_quantity',
141
+ :'open_quantity',
142
+ :'canceled_quantity',
143
+ :'filled_quantity',
144
+ :'execution_price',
145
+ :'limit_price',
146
+ :'stop_price',
147
+ :'order_type',
148
+ :'time_updated',
149
+ :'time_executed',
150
+ :'expiry_date',
151
+ :'child_brokerage_order_ids'
152
+ ])
153
+ end
154
+
155
+ # List of class defined in allOf (OpenAPI v3)
156
+ def self.openapi_all_of
157
+ [
158
+ :'AccountOrderRecord'
159
+ ]
160
+ end
161
+
162
+ # Initializes the object
163
+ # @param [Hash] attributes Model attributes in the form of hash
164
+ def initialize(attributes = {})
165
+ if (!attributes.is_a?(Hash))
166
+ fail ArgumentError, "The input argument (attributes) must be a hash in `SnapTrade::OrderUpdatedResponseOrder` initialize method"
167
+ end
168
+
169
+ # check to see if the attribute exists and convert string to symbol for hash key
170
+ attributes = attributes.each_with_object({}) { |(k, v), h|
171
+ if (!self.class.attribute_map.key?(k.to_sym))
172
+ fail ArgumentError, "`#{k}` is not a valid attribute in `SnapTrade::OrderUpdatedResponseOrder`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
173
+ end
174
+ h[k.to_sym] = v
175
+ }
176
+
177
+ if attributes.key?(:'brokerage_order_id')
178
+ self.brokerage_order_id = attributes[:'brokerage_order_id']
179
+ end
180
+
181
+ if attributes.key?(:'status')
182
+ self.status = attributes[:'status']
183
+ end
184
+
185
+ if attributes.key?(:'universal_symbol')
186
+ self.universal_symbol = attributes[:'universal_symbol']
187
+ end
188
+
189
+ if attributes.key?(:'option_symbol')
190
+ self.option_symbol = attributes[:'option_symbol']
191
+ end
192
+
193
+ if attributes.key?(:'quote_universal_symbol')
194
+ self.quote_universal_symbol = attributes[:'quote_universal_symbol']
195
+ end
196
+
197
+ if attributes.key?(:'quote_currency')
198
+ self.quote_currency = attributes[:'quote_currency']
199
+ end
200
+
201
+ if attributes.key?(:'action')
202
+ self.action = attributes[:'action']
203
+ end
204
+
205
+ if attributes.key?(:'total_quantity')
206
+ self.total_quantity = attributes[:'total_quantity']
207
+ end
208
+
209
+ if attributes.key?(:'open_quantity')
210
+ self.open_quantity = attributes[:'open_quantity']
211
+ end
212
+
213
+ if attributes.key?(:'canceled_quantity')
214
+ self.canceled_quantity = attributes[:'canceled_quantity']
215
+ end
216
+
217
+ if attributes.key?(:'filled_quantity')
218
+ self.filled_quantity = attributes[:'filled_quantity']
219
+ end
220
+
221
+ if attributes.key?(:'execution_price')
222
+ self.execution_price = attributes[:'execution_price']
223
+ end
224
+
225
+ if attributes.key?(:'limit_price')
226
+ self.limit_price = attributes[:'limit_price']
227
+ end
228
+
229
+ if attributes.key?(:'stop_price')
230
+ self.stop_price = attributes[:'stop_price']
231
+ end
232
+
233
+ if attributes.key?(:'order_type')
234
+ self.order_type = attributes[:'order_type']
235
+ end
236
+
237
+ if attributes.key?(:'time_in_force')
238
+ self.time_in_force = attributes[:'time_in_force']
239
+ end
240
+
241
+ if attributes.key?(:'time_placed')
242
+ self.time_placed = attributes[:'time_placed']
243
+ end
244
+
245
+ if attributes.key?(:'time_updated')
246
+ self.time_updated = attributes[:'time_updated']
247
+ end
248
+
249
+ if attributes.key?(:'time_executed')
250
+ self.time_executed = attributes[:'time_executed']
251
+ end
252
+
253
+ if attributes.key?(:'expiry_date')
254
+ self.expiry_date = attributes[:'expiry_date']
255
+ end
256
+
257
+ if attributes.key?(:'symbol')
258
+ self.symbol = attributes[:'symbol']
259
+ end
260
+
261
+ if attributes.key?(:'child_brokerage_order_ids')
262
+ self.child_brokerage_order_ids = attributes[:'child_brokerage_order_ids']
263
+ end
264
+ end
265
+
266
+ # Show invalid properties with the reasons. Usually used together with valid?
267
+ # @return Array for valid properties with the reasons
268
+ def list_invalid_properties
269
+ invalid_properties = Array.new
270
+ invalid_properties
271
+ end
272
+
273
+ # Check to see if the all the properties in the model are valid
274
+ # @return true if the model is valid
275
+ def valid?
276
+ true
277
+ end
278
+
279
+ # Checks equality by comparing each attribute.
280
+ # @param [Object] Object to be compared
281
+ def ==(o)
282
+ return true if self.equal?(o)
283
+ self.class == o.class &&
284
+ brokerage_order_id == o.brokerage_order_id &&
285
+ status == o.status &&
286
+ universal_symbol == o.universal_symbol &&
287
+ option_symbol == o.option_symbol &&
288
+ quote_universal_symbol == o.quote_universal_symbol &&
289
+ quote_currency == o.quote_currency &&
290
+ action == o.action &&
291
+ total_quantity == o.total_quantity &&
292
+ open_quantity == o.open_quantity &&
293
+ canceled_quantity == o.canceled_quantity &&
294
+ filled_quantity == o.filled_quantity &&
295
+ execution_price == o.execution_price &&
296
+ limit_price == o.limit_price &&
297
+ stop_price == o.stop_price &&
298
+ order_type == o.order_type &&
299
+ time_in_force == o.time_in_force &&
300
+ time_placed == o.time_placed &&
301
+ time_updated == o.time_updated &&
302
+ time_executed == o.time_executed &&
303
+ expiry_date == o.expiry_date &&
304
+ symbol == o.symbol &&
305
+ child_brokerage_order_ids == o.child_brokerage_order_ids
306
+ end
307
+
308
+ # @see the `==` method
309
+ # @param [Object] Object to be compared
310
+ def eql?(o)
311
+ self == o
312
+ end
313
+
314
+ # Calculates hash code according to all attributes.
315
+ # @return [Integer] Hash code
316
+ def hash
317
+ [brokerage_order_id, status, universal_symbol, option_symbol, quote_universal_symbol, quote_currency, action, total_quantity, open_quantity, canceled_quantity, filled_quantity, execution_price, limit_price, stop_price, order_type, time_in_force, time_placed, time_updated, time_executed, expiry_date, symbol, child_brokerage_order_ids].hash
318
+ end
319
+
320
+ # Builds the object from hash
321
+ # @param [Hash] attributes Model attributes in the form of hash
322
+ # @return [Object] Returns the model itself
323
+ def self.build_from_hash(attributes)
324
+ new.build_from_hash(attributes)
325
+ end
326
+
327
+ # Builds the object from hash
328
+ # @param [Hash] attributes Model attributes in the form of hash
329
+ # @return [Object] Returns the model itself
330
+ def build_from_hash(attributes)
331
+ return nil unless attributes.is_a?(Hash)
332
+ attributes = attributes.transform_keys(&:to_sym)
333
+ self.class.openapi_types.each_pair do |key, type|
334
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
335
+ self.send("#{key}=", nil)
336
+ elsif type =~ /\AArray<(.*)>/i
337
+ # check to ensure the input is an array given that the attribute
338
+ # is documented as an array but the input is not
339
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
340
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
341
+ end
342
+ elsif !attributes[self.class.attribute_map[key]].nil?
343
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
344
+ end
345
+ end
346
+
347
+ self
348
+ end
349
+
350
+ # Deserializes the data based on type
351
+ # @param string type Data type
352
+ # @param string value Value to be deserialized
353
+ # @return [Object] Deserialized data
354
+ def _deserialize(type, value)
355
+ case type.to_sym
356
+ when :Time
357
+ Time.parse(value)
358
+ when :Date
359
+ Date.parse(value)
360
+ when :String
361
+ value.to_s
362
+ when :Integer
363
+ value.to_i
364
+ when :Float
365
+ value.to_f
366
+ when :Boolean
367
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
368
+ true
369
+ else
370
+ false
371
+ end
372
+ when :Object
373
+ # generic object (usually a Hash), return directly
374
+ value
375
+ when /\AArray<(?<inner_type>.+)>\z/
376
+ inner_type = Regexp.last_match[:inner_type]
377
+ value.map { |v| _deserialize(inner_type, v) }
378
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
379
+ k_type = Regexp.last_match[:k_type]
380
+ v_type = Regexp.last_match[:v_type]
381
+ {}.tap do |hash|
382
+ value.each do |k, v|
383
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
384
+ end
385
+ end
386
+ else # model
387
+ # models (e.g. Pet) or oneOf
388
+ klass = SnapTrade.const_get(type)
389
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
390
+ end
391
+ end
392
+
393
+ # Returns the string representation of the object
394
+ # @return [String] String presentation of the object
395
+ def to_s
396
+ to_hash.to_s
397
+ end
398
+
399
+ # to_body is an alias to to_hash (backward compatibility)
400
+ # @return [Hash] Returns the object in the form of hash
401
+ def to_body
402
+ to_hash
403
+ end
404
+
405
+ # Returns the object in the form of hash
406
+ # @return [Hash] Returns the object in the form of hash
407
+ def to_hash
408
+ hash = {}
409
+ self.class.attribute_map.each_pair do |attr, param|
410
+ value = self.send(attr)
411
+ if value.nil?
412
+ is_nullable = self.class.openapi_nullable.include?(attr)
413
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
414
+ end
415
+
416
+ hash[param] = _to_hash(value)
417
+ end
418
+ hash
419
+ end
420
+
421
+ # Outputs non-array value in the form of hash
422
+ # For object, use to_hash. Otherwise, just return the value
423
+ # @param [Object] value Any valid value
424
+ # @return [Hash] Returns the value in the form of hash
425
+ def _to_hash(value)
426
+ if value.is_a?(Array)
427
+ value.compact.map { |v| _to_hash(v) }
428
+ elsif value.is_a?(Hash)
429
+ {}.tap do |hash|
430
+ value.each { |k, v| hash[k] = _to_hash(v) }
431
+ end
432
+ elsif value.respond_to? :to_hash
433
+ value.to_hash
434
+ else
435
+ value
436
+ end
437
+ end
438
+
439
+ end
440
+
441
+ end
@@ -15,7 +15,7 @@ module SnapTrade
15
15
  class Position
16
16
  attr_accessor :symbol
17
17
 
18
- # The number of shares of the position. This can be fractional or integer units.
18
+ # The number of shares of the position. This can be fractional or integer units. A positive number indicates a long position, while a negative number indicates a short position.
19
19
  attr_accessor :units
20
20
 
21
21
  # Last known market price for the symbol. The freshness of this price depends on the brokerage. Some brokerages provide real-time prices, while others provide delayed prices. It is recommended that you rely on your own third-party market data provider for most up to date prices.
@@ -8,5 +8,5 @@ Contact: api@snaptrade.com
8
8
  =end
9
9
 
10
10
  module SnapTrade
11
- VERSION = '2.0.171'
11
+ VERSION = '2.0.173'
12
12
  end
data/lib/snaptrade.rb CHANGED
@@ -123,6 +123,7 @@ require 'snaptrade/models/option_impact'
123
123
  require 'snaptrade/models/option_leg'
124
124
  require 'snaptrade/models/option_leg_action'
125
125
  require 'snaptrade/models/option_quote'
126
+ require 'snaptrade/models/option_quote_greeks'
126
127
  require 'snaptrade/models/option_strategy'
127
128
  require 'snaptrade/models/option_strategy_legs_inner'
128
129
  require 'snaptrade/models/option_type'
@@ -131,6 +132,7 @@ require 'snaptrade/models/options_position_currency'
131
132
  require 'snaptrade/models/options_symbol'
132
133
  require 'snaptrade/models/order_type_strict'
133
134
  require 'snaptrade/models/order_updated_response'
135
+ require 'snaptrade/models/order_updated_response_order'
134
136
  require 'snaptrade/models/paginated_universal_activity'
135
137
  require 'snaptrade/models/pagination_details'
136
138
  require 'snaptrade/models/partner_data'
@@ -27,16 +27,16 @@ describe 'OptionsApi' do
27
27
  end
28
28
  end
29
29
 
30
- # unit tests for get_option_quote
30
+ # unit tests for get_user_account_option_quotes
31
31
  # Get option quote
32
- # Returns a real-time quote for a single option contract. The option contract is specified using in the 21 character OCC format. For example &#x60;AAPL 251114C00240000&#x60; represents a call option on AAPL expiring on 2025-11-14 with a strike price of $240. For more information on the OCC format, see [here](https://en.wikipedia.org/wiki/Option_symbol#OCC_format)
32
+ # Returns a quote for a single option contract. The option contract is specified using in the 21 character OCC format. For example &#x60;AAPL 251114C00240000&#x60; represents a call option on AAPL expiring on 2025-11-14 with a strike price of $240. For more information on the OCC format, see [here](https://en.wikipedia.org/wiki/Option_symbol#OCC_format) **Note:** These are derived values and are not suitable for trading purposes.
33
33
  # @param user_id
34
34
  # @param user_secret
35
35
  # @param account_id
36
36
  # @param symbol The OCC-formatted option symbol.
37
37
  # @param [Hash] opts the optional parameters
38
38
  # @return [OptionQuote]
39
- describe 'get_option_quote test' do
39
+ describe 'get_user_account_option_quotes test' do
40
40
  it 'should work' do
41
41
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
42
42
  end
@@ -74,7 +74,7 @@ describe 'TradingApi' do
74
74
 
75
75
  # unit tests for get_option_impact
76
76
  # Get option order impact
77
- # Simulates an option order with up to 4 legs and returns the estimated cost and transaction fees without placing it. Only supported for certain brokerages. Please refer to the [brokerage trading support page](https://snaptrade.notion.site/brokerages) for more information on which brokerages support this endpoint.
77
+ # Simulates an option order with up to 4 legs and returns the estimated cost and transaction fees without placing it. Only supported for certain enabled brokerages. Please refer to the [brokerage trading support page](https://support.snaptrade.com/brokerages) for more information on which brokerages support this endpoint.
78
78
  # @param user_id
79
79
  # @param user_secret
80
80
  # @param account_id
@@ -0,0 +1,47 @@
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+ =end
9
+
10
+ require 'spec_helper'
11
+ require 'json'
12
+ require 'date'
13
+
14
+ # Unit tests for SnapTrade::OptionQuoteGreeks
15
+ describe SnapTrade::OptionQuoteGreeks do
16
+ let(:instance) { SnapTrade::OptionQuoteGreeks.new }
17
+
18
+ describe 'test an instance of OptionQuoteGreeks' do
19
+ it 'should create an instance of OptionQuoteGreeks' do
20
+ expect(instance).to be_instance_of(SnapTrade::OptionQuoteGreeks)
21
+ end
22
+ end
23
+ describe 'test attribute "delta"' do
24
+ it 'should work' do
25
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
26
+ end
27
+ end
28
+
29
+ describe 'test attribute "gamma"' do
30
+ it 'should work' do
31
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
32
+ end
33
+ end
34
+
35
+ describe 'test attribute "theta"' do
36
+ it 'should work' do
37
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
38
+ end
39
+ end
40
+
41
+ describe 'test attribute "vega"' do
42
+ it 'should work' do
43
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
44
+ end
45
+ end
46
+
47
+ end
@@ -26,49 +26,7 @@ describe SnapTrade::OptionQuote do
26
26
  end
27
27
  end
28
28
 
29
- describe 'test attribute "bid_price"' do
30
- it 'should work' do
31
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
32
- end
33
- end
34
-
35
- describe 'test attribute "bid_size"' do
36
- it 'should work' do
37
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
38
- end
39
- end
40
-
41
- describe 'test attribute "ask_price"' do
42
- it 'should work' do
43
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
44
- end
45
- end
46
-
47
- describe 'test attribute "ask_size"' do
48
- it 'should work' do
49
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
50
- end
51
- end
52
-
53
- describe 'test attribute "last_price"' do
54
- it 'should work' do
55
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
56
- end
57
- end
58
-
59
- describe 'test attribute "last_size"' do
60
- it 'should work' do
61
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
62
- end
63
- end
64
-
65
- describe 'test attribute "open_interest"' do
66
- it 'should work' do
67
- # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
68
- end
69
- end
70
-
71
- describe 'test attribute "volume"' do
29
+ describe 'test attribute "synthetic_price"' do
72
30
  it 'should work' do
73
31
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
74
32
  end
@@ -80,13 +38,13 @@ describe SnapTrade::OptionQuote do
80
38
  end
81
39
  end
82
40
 
83
- describe 'test attribute "underlying_price"' do
41
+ describe 'test attribute "timestamp"' do
84
42
  it 'should work' do
85
43
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
86
44
  end
87
45
  end
88
46
 
89
- describe 'test attribute "timestamp"' do
47
+ describe 'test attribute "greeks"' do
90
48
  it 'should work' do
91
49
  # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
92
50
  end