-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstruments_models.go
380 lines (351 loc) · 19 KB
/
instruments_models.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
package tasty
import (
"time"
"github.com/shopspring/decimal"
)
type DestinationVenueSymbol struct {
ID int `json:"id"`
Symbol string `json:"symbol"`
DestinationVenue string `json:"destination-venue"`
MaxQuantityPrecision int `json:"max-quantity-precision"`
MaxPricePrecision int `json:"max-price-precision"`
Routable bool `json:"routable"`
}
type CryptocurrencyInfo struct {
ID int `json:"id"`
Symbol string `json:"symbol"`
InstrumentType InstrumentType `json:"instrument-type"`
ShortDescription string `json:"short-description"`
Description string `json:"description"`
IsClosingOnly bool `json:"is-closing-only"`
Active bool `json:"active"`
TickSize decimal.Decimal `json:"tick-size"`
StreamerSymbol string `json:"streamer-symbol"`
DestinationVenueSymbols []DestinationVenueSymbol `json:"destination-venue-symbols"`
}
type TickSize struct {
Value decimal.Decimal `json:"value"`
Threshold decimal.Decimal `json:"threshold"`
Symbol string `json:"symbol"`
}
type Equity struct {
ID int `json:"id"`
Symbol string `json:"symbol"`
InstrumentType InstrumentType `json:"instrument-type"`
Cusip string `json:"cusip"`
ShortDescription string `json:"short-description"`
IsIndex bool `json:"is-index"`
ListedMarket string `json:"listed-market"`
Description string `json:"description"`
Lendability string `json:"lendability"`
BorrowRate decimal.Decimal `json:"borrow-rate"`
HaltedAt string `json:"halted-at"`
StopsTradingAt time.Time `json:"stops-trading-at"`
MarketTimeInstrumentCollection string `json:"market-time-instrument-collection"`
IsClosingOnly bool `json:"is-closing-only"`
IsOptionsClosingOnly bool `json:"is-options-closing-only"`
Active bool `json:"active"`
IsFractionalQuantityEligible bool `json:"is-fractional-quantity-eligible"`
IsIlliquid bool `json:"is-illiquid"`
IsEtf bool `json:"is-etf"`
StreamerSymbol string `json:"streamer-symbol"`
TickSizes []TickSize `json:"tick-sizes"`
OptionTickSizes []TickSize `json:"option-tick-sizes"`
}
type EquityOption struct {
Symbol string `json:"symbol"`
InstrumentType InstrumentType `json:"instrument-type"`
Active bool `json:"active"`
ListedMarket string `json:"listed-market"`
StrikePrice decimal.Decimal `json:"strike-price"`
RootSymbol string `json:"root-symbol"`
UnderlyingSymbol string `json:"underlying-symbol"`
ExpirationDate string `json:"expiration-date"`
ExerciseStyle string `json:"exercise-style"`
SharesPerContract int `json:"shares-per-contract"`
OptionType OptionType `json:"option-type"`
OptionChainType string `json:"option-chain-type"`
ExpirationType string `json:"expiration-type"`
SettlementType string `json:"settlement-type"`
HaltedAt string `json:"halted-at"`
StopsTradingAt time.Time `json:"stops-trading-at"`
MarketTimeInstrumentCollection string `json:"market-time-instrument-collection"`
DaysToExpiration int `json:"days-to-expiration"`
ExpiresAt time.Time `json:"expires-at"`
IsClosingOnly bool `json:"is-closing-only"`
OldSecurityNumber string `json:"old-security-number"`
StreamerSymbol string `json:"streamer-symbol"`
}
type FutureETFEquivalent struct {
Symbol string `json:"symbol"`
ShareQuantity int `json:"share-quantity"`
}
type Roll struct {
Name string `json:"name"`
ActiveCount int `json:"active-count"`
CashSettled bool `json:"cash-settled"`
BusinessDaysOffset int `json:"business-days-offset"`
FirstNotice bool `json:"first-notice"`
}
type Future struct {
Symbol string `json:"symbol"`
ProductCode string `json:"product-code"`
ContractSize decimal.Decimal `json:"contract-size"`
TickSize decimal.Decimal `json:"tick-size"`
NotionalMultiplier decimal.Decimal `json:"notional-multiplier"`
MainFraction decimal.Decimal `json:"main-fraction"`
SubFraction decimal.Decimal `json:"sub-fraction"`
DisplayFactor decimal.Decimal `json:"display-factor"`
LastTradeDate string `json:"last-trade-date"`
ExpirationDate string `json:"expiration-date"`
ClosingOnlyDate string `json:"closing-only-date"`
Active bool `json:"active"`
ActiveMonth bool `json:"active-month"`
NextActiveMonth bool `json:"next-active-month"`
IsClosingOnly bool `json:"is-closing-only"`
FirstNoticeDate string `json:"first-notice-date"`
StopsTradingAt time.Time `json:"stops-trading-at"`
ExpiresAt time.Time `json:"expires-at"`
ProductGroup string `json:"product-group"`
Exchange string `json:"exchange"`
RollTargetSymbol string `json:"roll-target-symbol"`
StreamerExchangeCode string `json:"streamer-exchange-code"`
StreamerSymbol string `json:"streamer-symbol"`
BackMonthFirstCalendarSymbol bool `json:"back-month-first-calendar-symbol"`
IsTradeable bool `json:"is-tradeable"`
TrueUnderlyingSymbol string `json:"true-underlying-symbol"`
FutureETFEquivalent FutureETFEquivalent `json:"future-etf-equivalent"`
FutureProduct FutureProduct `json:"future-product"`
TickSizes []TickSize `json:"tick-sizes"`
OptionTickSizes []TickSize `json:"option-tick-sizes"`
SpreadTickSizes []TickSize `json:"spread-tick-sizes"`
}
type FutureOptionProduct struct {
RootSymbol string `json:"root-symbol"`
CashSettled bool `json:"cash-settled"`
Code string `json:"code"`
LegacyCode string `json:"legacy-code"`
ClearportCode string `json:"clearport-code"`
ClearingCode string `json:"clearing-code"`
ClearingExchangeCode string `json:"clearing-exchange-code"`
ClearingPriceMultiplier decimal.Decimal `json:"clearing-price-multiplier"`
DisplayFactor decimal.Decimal `json:"display-factor"`
Exchange string `json:"exchange"`
ProductType string `json:"product-type"`
ExpirationType string `json:"expiration-type"`
SettlementDelayDays int `json:"settlement-delay-days"`
IsRollover bool `json:"is-rollover"`
ProductSubtype string `json:"product-subtype"`
MarketSector string `json:"market-sector"`
FutureProduct FutureProduct `json:"future-product"`
}
type FutureProduct struct {
RootSymbol string `json:"root-symbol"`
Code string `json:"code"`
Description string `json:"description"`
ClearingCode string `json:"clearing-code"`
ClearingExchangeCode string `json:"clearing-exchange-code"`
ClearportCode string `json:"clearport-code"`
LegacyCode string `json:"legacy-code"`
Exchange string `json:"exchange"`
LegacyExchangeCode string `json:"legacy-exchange-code"`
ProductType string `json:"product-type"`
ListedMonths []string `json:"listed-months"`
ActiveMonths []string `json:"active-months"`
NotionalMultiplier decimal.Decimal `json:"notional-multiplier"`
TickSize decimal.Decimal `json:"tick-size"`
DisplayFactor decimal.Decimal `json:"display-factor"`
BaseTick int `json:"base-tick"`
SubTick int `json:"sub-tick"`
StreamerExchangeCode string `json:"streamer-exchange-code"`
SmallNotional bool `json:"small-notional"`
BackMonthFirstCalendarSymbol bool `json:"back-month-first-calendar-symbol"`
FirstNotice bool `json:"first-notice"`
CashSettled bool `json:"cash-settled"`
ContractLimit int `json:"contract-limit"`
SecurityGroup string `json:"security-group"`
ProductSubtype string `json:"product-subtype"`
TrueUnderlyingCode string `json:"true-underlying-code"`
MarketSector string `json:"market-sector"`
OptionProducts []FutureOptionProduct `json:"option-products"`
Roll Roll `json:"roll"`
}
type FutureOption struct {
Symbol string `json:"symbol"`
UnderlyingSymbol string `json:"underlying-symbol"`
ProductCode string `json:"product-code"`
ExpirationDate string `json:"expiration-date"`
RootSymbol string `json:"root-symbol"`
OptionRootSymbol string `json:"option-root-symbol"`
StrikePrice decimal.Decimal `json:"strike-price"`
Exchange string `json:"exchange"`
ExchangeSymbol string `json:"exchange-symbol"`
StreamerSymbol string `json:"streamer-symbol"`
OptionType OptionType `json:"option-type"`
ExerciseStyle string `json:"exercise-style"`
IsVanilla bool `json:"is-vanilla"`
IsPrimaryDeliverable bool `json:"is-primary-deliverable"`
FuturePriceRatio decimal.Decimal `json:"future-price-ratio"`
Multiplier decimal.Decimal `json:"multiplier"`
UnderlyingCount decimal.Decimal `json:"underlying-count"`
IsConfirmed bool `json:"is-confirmed"`
NotionalValue decimal.Decimal `json:"notional-value"`
DisplayFactor decimal.Decimal `json:"display-factor"`
SecurityExchange string `json:"security-exchange"`
SxID string `json:"sx-id"`
SettlementType string `json:"settlement-type"`
StrikeFactor decimal.Decimal `json:"strike-factor"`
MaturityDate string `json:"maturity-date"`
IsExercisableWeekly bool `json:"is-exercisable-weekly"`
LastTradeTime string `json:"last-trade-time"`
DaysToExpiration int `json:"days-to-expiration"`
IsClosingOnly bool `json:"is-closing-only"`
Active bool `json:"active"`
StopsTradingAt time.Time `json:"stops-trading-at"`
ExpiresAt time.Time `json:"expires-at"`
FutureOptionProduct FutureOptionProduct `json:"future-option-product"`
}
type QuantityDecimalPrecision struct {
InstrumentType InstrumentType `json:"instrument-type"`
Symbol string `json:"symbol"`
Value int `json:"value"`
MinimumIncrementPrecision int `json:"minimum-increment-precision"`
}
type Warrant struct {
Symbol string `json:"symbol"`
InstrumentType InstrumentType `json:"instrument-type"`
Cusip string `json:"cusip"`
ListedMarket string `json:"listed-market"`
Description string `json:"description"`
IsClosingOnly bool `json:"is-closing-only"`
Active bool `json:"active"`
}
type Strike struct {
StrikePrice decimal.Decimal `json:"strike-price"`
Call string `json:"call"`
CallStreamerSymbol string `json:"call-streamer-symbol"`
Put string `json:"put"`
PutStreamerSymbol string `json:"put-streamer-symbol"`
}
type FuturesExpiration struct {
UnderlyingSymbol string `json:"underlying-symbol"`
RootSymbol string `json:"root-symbol"`
OptionRootSymbol string `json:"option-root-symbol"`
OptionContractSymbol string `json:"option-contract-symbol"`
Asset string `json:"asset"`
ExpirationDate string `json:"expiration-date"`
DaysToExpiration int `json:"days-to-expiration"`
ExpirationType string `json:"expiration-type"`
SettlementType string `json:"settlement-type"`
NotionalValue decimal.Decimal `json:"notional-value"`
DisplayFactor decimal.Decimal `json:"display-factor"`
StrikeFactor decimal.Decimal `json:"strike-factor"`
StopsTradingAt time.Time `json:"stops-trading-at"`
ExpiresAt time.Time `json:"expires-at"`
TickSizes []TickSize `json:"tick-sizes"`
Strikes []Strike `json:"strikes"`
}
type Expiration struct {
ExpirationType string `json:"expiration-type"`
ExpirationDate string `json:"expiration-date"`
DaysToExpiration int `json:"days-to-expiration"`
SettlementType string `json:"settlement-type"`
Strikes []Strike `json:"strikes"`
}
type NestedFuture struct {
Symbol string `json:"symbol"`
RootSymbol string `json:"root-symbol"`
ExpirationDate string `json:"expiration-date"`
DaysToExpiration int `json:"days-to-expiration"`
ActiveMonth bool `json:"active-month"`
NextActiveMonth bool `json:"next-active-month"`
StopsTradingAt time.Time `json:"stops-trading-at"`
ExpiresAt time.Time `json:"expires-at"`
}
type OptionChains struct {
UnderlyingSymbol string `json:"underlying-symbol"`
RootSymbol string `json:"root-symbol"`
ExerciseStyle string `json:"exercise-style"`
Expirations []FuturesExpiration `json:"expirations"`
}
type NestedFuturesOptionChains struct {
Futures []NestedFuture `json:"futures"`
OptionChains []OptionChains `json:"option-chains"`
}
type Deliverable struct {
ID int `json:"id"`
RootSymbol string `json:"root-symbol"`
DeliverableType string `json:"deliverable-type"`
Description string `json:"description"`
Amount decimal.Decimal `json:"amount"`
Symbol string `json:"symbol"`
InstrumentType InstrumentType `json:"instrument-type"`
Percent decimal.Decimal `json:"percent"`
}
type NestedOptionChains struct {
UnderlyingSymbol string `json:"underlying-symbol"`
RootSymbol string `json:"root-symbol"`
OptionChainType string `json:"option-chain-type"`
SharesPerContract int `json:"shares-per-contract"`
TickSizes []TickSize `json:"tick-sizes"`
Deliverables []Deliverable `json:"deliverables"`
Expirations []Expiration `json:"expirations"`
}
type CompactOptionChains struct {
UnderlyingSymbol string `json:"underlying-symbol"`
RootSymbol string `json:"root-symbol"`
OptionChainType string `json:"option-chain-type"`
SettlementType string `json:"settlement-type"`
SharesPerContract int `json:"shares-per-contract"`
ExpirationType string `json:"expiration-type"`
Deliverables []Deliverable `json:"deliverables"`
Symbols []string `json:"symbols"`
StreamerSymbols []string `json:"streamer-symbols"`
}
type ActiveEquitiesQuery struct {
// PerPage equities to return per page. Default: 1000
PerPage int `url:"per-page"`
// PageOffset defaults to 0
PageOffset int `url:"page-offset"`
// Lendability Available values : Easy To Borrow, Locate Required, Preborrow
Lendability Lendability `url:"lendability"`
}
type EquitiesQuery struct {
// The symbols of the equity(s), i.e AAPL
Symbols []string `url:"symbol[]"`
// Available values : Easy To Borrow, Locate Required, Preborrow
Lendability Lendability `url:"lendability"`
// Flag indicating if equity is an index instrument
IsIndex bool `url:"is-index"`
// Flag indicating if equity is an etf instrument
IsETF bool `url:"is-etf"`
}
type EquityOptionsQuery struct {
// The symbol(s) of the equity option(s) using OCC Symbology, i.e. [FB 180629C00200000]
Symbols []string `url:"symbol[]"`
// Whether an option is available for trading with the broker.
// Terminology is somewhat misleading as this is generally used
// to filter non-standard / flex options out.
Active bool `url:"active"`
// Include expired options
WithExpired bool `url:"with-expired"`
}
type FuturesQuery struct {
// The symbol(s) of the future(s), i.e. symbol[]=ESZ9. Leading forward slash is not required.
Symbols []string `url:"symbol[],omitempty"`
// The product code of the future(s), i.e. ES or 6A
// Ignored if Symbols parameter is given
ProductCode []string `url:"product-code[],omitempty"`
}
type FutureOptionsQuery struct {
// The symbol(s) of the future(s), i.e. symbol[]=ESZ9. Leading forward slash is not required.
Symbols []string `url:"symbol[]"`
// Future option root, i.e. EW3 or SO
OptionRootSymbol string `url:"option-root-symbol,omitempty"`
// Expiration date
ExpirationDate time.Time `layout:"2006-01-02" url:"expiration-date,omitempty"`
// P(ut) or C(all)
OptionType OptionType `url:"option-type,omitempty"`
// Strike price using display factor
StrikePrice float32 `url:"strike-price,omitempty"`
}