architect-py 3.2.1__py3-none-any.whl → 5.0.0__py3-none-any.whl

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.
Files changed (207) hide show
  1. architect_py/__init__.py +18 -2
  2. architect_py/async_client.py +1089 -658
  3. architect_py/client.py +36 -33
  4. architect_py/client_interface.py +63 -0
  5. architect_py/common_types/__init__.py +6 -0
  6. architect_py/common_types/order_dir.py +91 -0
  7. architect_py/common_types/scalars.py +25 -0
  8. architect_py/common_types/tradable_product.py +59 -0
  9. architect_py/graphql_client/__init__.py +2 -0
  10. architect_py/graphql_client/client.py +3 -6
  11. architect_py/graphql_client/enums.py +5 -0
  12. architect_py/graphql_client/fragments.py +3 -6
  13. architect_py/graphql_client/get_fills_query.py +2 -1
  14. architect_py/graphql_client/search_symbols_query.py +2 -1
  15. architect_py/graphql_client/subscribe_orderflow.py +2 -1
  16. architect_py/graphql_client/subscribe_trades.py +2 -1
  17. architect_py/grpc/__init__.py +145 -0
  18. architect_py/grpc/client.py +94 -0
  19. architect_py/{grpc_client → grpc/models}/Accounts/AccountsRequest.py +6 -3
  20. architect_py/{grpc_client → grpc/models}/Accounts/AccountsResponse.py +1 -1
  21. architect_py/{grpc_client → grpc/models}/Accounts/__init__.py +1 -1
  22. architect_py/grpc/models/Algo/AlgoOrder.py +114 -0
  23. architect_py/grpc/models/Algo/AlgoOrderRequest.py +46 -0
  24. architect_py/grpc/models/Algo/AlgoOrdersRequest.py +72 -0
  25. architect_py/grpc/models/Algo/AlgoOrdersResponse.py +27 -0
  26. architect_py/grpc/models/Algo/CreateAlgoOrderRequest.py +56 -0
  27. architect_py/grpc/models/Algo/PauseAlgoRequest.py +42 -0
  28. architect_py/grpc/models/Algo/PauseAlgoResponse.py +20 -0
  29. architect_py/grpc/models/Algo/StartAlgoRequest.py +42 -0
  30. architect_py/grpc/models/Algo/StartAlgoResponse.py +20 -0
  31. architect_py/grpc/models/Algo/StopAlgoRequest.py +42 -0
  32. architect_py/grpc/models/Algo/StopAlgoResponse.py +20 -0
  33. architect_py/{grpc_client → grpc/models}/Algo/__init__.py +1 -1
  34. architect_py/grpc/models/Auth/CreateJwtRequest.py +47 -0
  35. architect_py/grpc/models/Auth/CreateJwtResponse.py +23 -0
  36. architect_py/{grpc_client/Cpty → grpc/models/Auth}/__init__.py +1 -1
  37. architect_py/grpc/models/Boss/DepositsRequest.py +40 -0
  38. architect_py/grpc/models/Boss/DepositsResponse.py +27 -0
  39. architect_py/grpc/models/Boss/RqdAccountStatisticsRequest.py +42 -0
  40. architect_py/grpc/models/Boss/RqdAccountStatisticsResponse.py +25 -0
  41. architect_py/grpc/models/Boss/StatementUrlRequest.py +40 -0
  42. architect_py/grpc/models/Boss/StatementUrlResponse.py +23 -0
  43. architect_py/grpc/models/Boss/StatementsRequest.py +40 -0
  44. architect_py/grpc/models/Boss/StatementsResponse.py +27 -0
  45. architect_py/grpc/models/Boss/WithdrawalsRequest.py +40 -0
  46. architect_py/grpc/models/Boss/WithdrawalsResponse.py +27 -0
  47. architect_py/{grpc_client/Folio → grpc/models/Boss}/__init__.py +1 -1
  48. architect_py/grpc/models/Core/ConfigRequest.py +37 -0
  49. architect_py/grpc/models/Core/ConfigResponse.py +25 -0
  50. architect_py/grpc/models/Core/__init__.py +2 -0
  51. architect_py/{grpc_client → grpc/models}/Cpty/CptyRequest.py +5 -4
  52. architect_py/{grpc_client → grpc/models}/Cpty/CptyResponse.py +6 -6
  53. architect_py/grpc/models/Cpty/CptyStatus.py +48 -0
  54. architect_py/grpc/models/Cpty/CptyStatusRequest.py +45 -0
  55. architect_py/grpc/models/Cpty/CptysRequest.py +37 -0
  56. architect_py/grpc/models/Cpty/CptysResponse.py +27 -0
  57. architect_py/grpc/models/Cpty/__init__.py +2 -0
  58. architect_py/{grpc_client → grpc/models}/Folio/AccountHistoryRequest.py +2 -2
  59. architect_py/{grpc_client → grpc/models}/Folio/AccountHistoryResponse.py +1 -1
  60. architect_py/{grpc_client → grpc/models}/Folio/AccountSummariesRequest.py +2 -2
  61. architect_py/{grpc_client → grpc/models}/Folio/AccountSummariesResponse.py +1 -1
  62. architect_py/{grpc_client → grpc/models}/Folio/AccountSummary.py +1 -1
  63. architect_py/{grpc_client → grpc/models}/Folio/AccountSummaryRequest.py +2 -2
  64. architect_py/{grpc_client → grpc/models}/Folio/HistoricalFillsRequest.py +7 -4
  65. architect_py/{grpc_client → grpc/models}/Folio/HistoricalFillsResponse.py +1 -1
  66. architect_py/{grpc_client → grpc/models}/Folio/HistoricalOrdersRequest.py +3 -3
  67. architect_py/{grpc_client → grpc/models}/Folio/HistoricalOrdersResponse.py +1 -1
  68. architect_py/grpc/models/Folio/__init__.py +2 -0
  69. architect_py/{grpc_client → grpc/models}/Health/HealthCheckRequest.py +2 -2
  70. architect_py/{grpc_client → grpc/models}/Health/HealthCheckResponse.py +1 -1
  71. architect_py/grpc/models/Health/__init__.py +2 -0
  72. architect_py/{grpc_client → grpc/models}/Marketdata/Candle.py +1 -1
  73. architect_py/{grpc_client → grpc/models}/Marketdata/HistoricalCandlesRequest.py +11 -8
  74. architect_py/{grpc_client → grpc/models}/Marketdata/HistoricalCandlesResponse.py +1 -1
  75. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshot.py +52 -5
  76. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshotRequest.py +8 -3
  77. architect_py/{grpc_client → grpc/models}/Marketdata/L1BookSnapshotsRequest.py +6 -3
  78. architect_py/{grpc_client → grpc/models}/Marketdata/L2BookSnapshot.py +1 -1
  79. architect_py/{grpc_client → grpc/models}/Marketdata/L2BookSnapshotRequest.py +2 -2
  80. architect_py/{grpc_client → grpc/models}/Marketdata/Liquidation.py +2 -2
  81. architect_py/{grpc_client → grpc/models}/Marketdata/MarketStatus.py +1 -1
  82. architect_py/{grpc_client → grpc/models}/Marketdata/MarketStatusRequest.py +2 -2
  83. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeCandlesRequest.py +2 -2
  84. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeCurrentCandlesRequest.py +3 -4
  85. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeL1BookSnapshotsRequest.py +6 -3
  86. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeL2BookUpdatesRequest.py +2 -2
  87. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeLiquidationsRequest.py +2 -2
  88. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeManyCandlesRequest.py +2 -2
  89. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeTickersRequest.py +2 -2
  90. architect_py/{grpc_client → grpc/models}/Marketdata/SubscribeTradesRequest.py +2 -2
  91. architect_py/{grpc_client → grpc/models}/Marketdata/Ticker.py +14 -3
  92. architect_py/{grpc_client → grpc/models}/Marketdata/TickerRequest.py +2 -2
  93. architect_py/{grpc_client → grpc/models}/Marketdata/TickersRequest.py +2 -2
  94. architect_py/{grpc_client → grpc/models}/Marketdata/TickersResponse.py +1 -1
  95. architect_py/{grpc_client → grpc/models}/Marketdata/Trade.py +2 -2
  96. architect_py/grpc/models/Marketdata/__init__.py +2 -0
  97. architect_py/grpc/models/Oms/Cancel.py +90 -0
  98. architect_py/{grpc_client → grpc/models}/Oms/CancelAllOrdersRequest.py +2 -2
  99. architect_py/{grpc_client → grpc/models}/Oms/CancelAllOrdersResponse.py +1 -1
  100. architect_py/{grpc_client → grpc/models}/Oms/CancelOrderRequest.py +2 -2
  101. architect_py/{grpc_client → grpc/models}/Oms/OpenOrdersRequest.py +2 -2
  102. architect_py/{grpc_client → grpc/models}/Oms/OpenOrdersResponse.py +1 -1
  103. architect_py/{grpc_client → grpc/models}/Oms/Order.py +6 -13
  104. architect_py/{grpc_client → grpc/models}/Oms/PendingCancelsRequest.py +2 -2
  105. architect_py/{grpc_client → grpc/models}/Oms/PendingCancelsResponse.py +1 -1
  106. architect_py/{grpc_client → grpc/models}/Oms/PlaceOrderRequest.py +16 -23
  107. architect_py/grpc/models/Oms/__init__.py +2 -0
  108. architect_py/grpc/models/OptionsMarketdata/OptionsChain.py +30 -0
  109. architect_py/grpc/models/OptionsMarketdata/OptionsChainGreeks.py +30 -0
  110. architect_py/grpc/models/OptionsMarketdata/OptionsChainGreeksRequest.py +47 -0
  111. architect_py/grpc/models/OptionsMarketdata/OptionsChainRequest.py +45 -0
  112. architect_py/grpc/models/OptionsMarketdata/OptionsExpirations.py +29 -0
  113. architect_py/grpc/models/OptionsMarketdata/OptionsExpirationsRequest.py +42 -0
  114. architect_py/grpc/models/OptionsMarketdata/__init__.py +2 -0
  115. architect_py/{grpc_client → grpc/models}/Orderflow/DropcopyRequest.py +2 -2
  116. architect_py/{grpc_client → grpc/models}/Orderflow/OrderflowRequest.py +2 -1
  117. architect_py/{grpc_client → grpc/models}/Orderflow/SubscribeOrderflowRequest.py +2 -2
  118. architect_py/grpc/models/Orderflow/__init__.py +2 -0
  119. architect_py/grpc/models/Symbology/DownloadProductCatalogRequest.py +42 -0
  120. architect_py/grpc/models/Symbology/DownloadProductCatalogResponse.py +27 -0
  121. architect_py/grpc/models/Symbology/ExecutionInfoRequest.py +47 -0
  122. architect_py/grpc/models/Symbology/ExecutionInfoResponse.py +27 -0
  123. architect_py/{grpc_client → grpc/models}/Symbology/PruneExpiredSymbolsRequest.py +2 -2
  124. architect_py/{grpc_client → grpc/models}/Symbology/PruneExpiredSymbolsResponse.py +1 -1
  125. architect_py/{grpc_client → grpc/models}/Symbology/SubscribeSymbology.py +1 -1
  126. architect_py/{grpc_client → grpc/models}/Symbology/SymbologyRequest.py +2 -2
  127. architect_py/{grpc_client → grpc/models}/Symbology/SymbologySnapshot.py +7 -2
  128. architect_py/{grpc_client → grpc/models}/Symbology/SymbologyUpdate.py +9 -2
  129. architect_py/{grpc_client → grpc/models}/Symbology/SymbolsRequest.py +2 -2
  130. architect_py/{grpc_client → grpc/models}/Symbology/SymbolsResponse.py +1 -1
  131. architect_py/grpc/models/Symbology/UploadProductCatalogRequest.py +49 -0
  132. architect_py/grpc/models/Symbology/UploadProductCatalogResponse.py +20 -0
  133. architect_py/{grpc_client → grpc/models}/Symbology/UploadSymbologyRequest.py +2 -2
  134. architect_py/{grpc_client → grpc/models}/Symbology/UploadSymbologyResponse.py +1 -1
  135. architect_py/grpc/models/Symbology/__init__.py +2 -0
  136. architect_py/grpc/models/__init__.py +2 -0
  137. architect_py/{grpc_client → grpc/models}/definitions.py +671 -934
  138. architect_py/grpc/resolve_endpoint.py +70 -0
  139. architect_py/{grpc_client/grpc_server.py → grpc/server.py} +13 -9
  140. architect_py/grpc/utils.py +32 -0
  141. architect_py/internal_utils/__init__.py +0 -0
  142. architect_py/internal_utils/no_pandas.py +3 -0
  143. architect_py/tests/conftest.py +91 -85
  144. architect_py/tests/test_book_building.py +49 -50
  145. architect_py/tests/test_marketdata.py +168 -0
  146. architect_py/tests/test_order_entry.py +37 -0
  147. architect_py/tests/test_orderflow.py +41 -0
  148. architect_py/tests/test_portfolio_management.py +23 -0
  149. architect_py/tests/test_rounding.py +28 -28
  150. architect_py/tests/test_symbology.py +37 -30
  151. architect_py/utils/nearest_tick.py +2 -5
  152. architect_py/utils/nearest_tick_2.py +1 -2
  153. architect_py/utils/orderbook.py +35 -0
  154. architect_py/utils/pandas.py +44 -0
  155. architect_py/utils/price_bands.py +0 -3
  156. architect_py/utils/symbol_parsing.py +29 -0
  157. architect_py-5.0.0.dist-info/METADATA +54 -0
  158. architect_py-5.0.0.dist-info/RECORD +214 -0
  159. {architect_py-3.2.1.dist-info → architect_py-5.0.0.dist-info}/WHEEL +2 -1
  160. architect_py-5.0.0.dist-info/top_level.txt +4 -0
  161. examples/__init__.py +0 -0
  162. examples/book_subscription.py +52 -0
  163. examples/candles.py +30 -0
  164. examples/common.py +116 -0
  165. examples/external_cpty.py +77 -0
  166. examples/funding_rate_mean_reversion_algo.py +186 -0
  167. examples/order_sending.py +91 -0
  168. examples/stream_l1_marketdata.py +25 -0
  169. examples/stream_l2_marketdata.py +38 -0
  170. examples/trades.py +21 -0
  171. examples/tutorial_async.py +86 -0
  172. examples/tutorial_sync.py +95 -0
  173. scripts/generate_functions_md.py +166 -0
  174. scripts/generate_sync_interface.py +226 -0
  175. scripts/postprocess_grpc.py +604 -0
  176. scripts/preprocess_grpc_schema.py +708 -0
  177. templates/exceptions.py +83 -0
  178. templates/juniper_base_client.py +371 -0
  179. architect_py/client_protocol.py +0 -52
  180. architect_py/grpc_client/Algo/AlgoOrderForTwapAlgo.py +0 -61
  181. architect_py/grpc_client/Algo/CreateAlgoOrderRequestForTwapAlgo.py +0 -59
  182. architect_py/grpc_client/Algo/ModifyAlgoOrderRequestForTwapAlgo.py +0 -45
  183. architect_py/grpc_client/Folio/AggregatedAccountSummariesRequest.py +0 -59
  184. architect_py/grpc_client/Folio/AggregatedAccountSummariesResponse.py +0 -27
  185. architect_py/grpc_client/Health/__init__.py +0 -2
  186. architect_py/grpc_client/Marketdata/__init__.py +0 -2
  187. architect_py/grpc_client/Oms/Cancel.py +0 -42
  188. architect_py/grpc_client/Oms/__init__.py +0 -2
  189. architect_py/grpc_client/Orderflow/__init__.py +0 -2
  190. architect_py/grpc_client/Symbology/__init__.py +0 -2
  191. architect_py/grpc_client/__init__.py +0 -2
  192. architect_py/grpc_client/grpc_client.py +0 -405
  193. architect_py/scalars.py +0 -172
  194. architect_py/tests/test_accounts.py +0 -31
  195. architect_py/tests/test_client.py +0 -29
  196. architect_py/tests/test_grpc_client.py +0 -30
  197. architect_py/tests/test_order_sending.py +0 -61
  198. architect_py/tests/test_snapshots.py +0 -52
  199. architect_py/tests/test_subscriptions.py +0 -129
  200. architect_py-3.2.1.dist-info/METADATA +0 -212
  201. architect_py-3.2.1.dist-info/RECORD +0 -146
  202. /architect_py/{grpc_client → grpc/models}/Marketdata/ArrayOfL1BookSnapshot.py +0 -0
  203. /architect_py/{grpc_client → grpc/models}/Marketdata/L2BookUpdate.py +0 -0
  204. /architect_py/{grpc_client → grpc/models}/Marketdata/TickerUpdate.py +0 -0
  205. /architect_py/{grpc_client → grpc/models}/Orderflow/Dropcopy.py +0 -0
  206. /architect_py/{grpc_client → grpc/models}/Orderflow/Orderflow.py +0 -0
  207. {architect_py-3.2.1.dist-info → architect_py-5.0.0.dist-info/licenses}/LICENSE +0 -0
@@ -2,7 +2,7 @@
2
2
  # filename: definitions.json
3
3
 
4
4
  from __future__ import annotations
5
- from architect_py.scalars import OrderDir
5
+ from architect_py.common_types import OrderDir
6
6
  from datetime import datetime, timezone
7
7
 
8
8
  from datetime import date, datetime, time
@@ -12,6 +12,8 @@ from typing import Annotated, Any, Dict, List, Literal, Optional, Union
12
12
 
13
13
  from msgspec import Meta, Struct
14
14
 
15
+ from .Marketdata.Ticker import Ticker
16
+
15
17
  Model = Any
16
18
 
17
19
 
@@ -49,7 +51,7 @@ class AccountPosition(Struct, omit_defaults=True):
49
51
  Unrealized PNL of the position, if known.
50
52
  """
51
53
 
52
- # below is a constructor that takes all field titles as arguments for convenience
54
+ # Constructor that takes all field titles as arguments for convenience
53
55
  @classmethod
54
56
  def new(
55
57
  cls,
@@ -131,7 +133,7 @@ class AccountStatistics(Struct, omit_defaults=True):
131
133
  Yesterday total account equity.
132
134
  """
133
135
 
134
- # below is a constructor that takes all field titles as arguments for convenience
136
+ # Constructor that takes all field titles as arguments for convenience
135
137
  @classmethod
136
138
  def new(
137
139
  cls,
@@ -159,108 +161,11 @@ class AccountStatistics(Struct, omit_defaults=True):
159
161
  return f"AccountStatistics(cash_excess={self.cash_excess},equity={self.equity},position_margin={self.position_margin},purchasing_power={self.purchasing_power},realized_pnl={self.realized_pnl},total_margin={self.total_margin},unrealized_pnl={self.unrealized_pnl},yesterday_equity={self.yesterday_equity})"
160
162
 
161
163
 
162
- class AggregatedAccountSummary(Struct, omit_defaults=True):
163
- account: str
164
- balances: Dict[str, Decimal]
165
- positions: Dict[str, AccountPosition]
166
- timestamp: datetime
167
- cash_excess: Optional[
168
- Annotated[Optional[Decimal], Meta(description="Cash available to withdraw.")]
169
- ] = None
170
- """
171
- Cash available to withdraw.
172
- """
173
- equity: Optional[
174
- Annotated[
175
- Optional[Decimal],
176
- Meta(description="Total account equity; net liquidation value."),
177
- ]
178
- ] = None
179
- """
180
- Total account equity; net liquidation value.
181
- """
182
- position_margin: Optional[
183
- Annotated[
184
- Optional[Decimal],
185
- Meta(description="Margin requirement based on current positions only."),
186
- ]
187
- ] = None
188
- """
189
- Margin requirement based on current positions only.
190
- """
191
- purchasing_power: Optional[
192
- Annotated[
193
- Optional[Decimal],
194
- Meta(
195
- description="Total purchasing power; post-multiplied. (e.g. for cash margin account could be 2x available cash)"
196
- ),
197
- ]
198
- ] = None
199
- """
200
- Total purchasing power; post-multiplied. (e.g. for cash margin account could be 2x available cash)
201
- """
202
- realized_pnl: Optional[Decimal] = None
203
- total_margin: Optional[
204
- Annotated[
205
- Optional[Decimal],
206
- Meta(
207
- description="Margin requirement calculated for worst-case based on open positions and working orders."
208
- ),
209
- ]
210
- ] = None
211
- """
212
- Margin requirement calculated for worst-case based on open positions and working orders.
213
- """
214
- unrealized_pnl: Optional[Decimal] = None
215
- yesterday_equity: Optional[
216
- Annotated[
217
- Optional[Decimal], Meta(description="Yesterday total account equity.")
218
- ]
219
- ] = None
220
- """
221
- Yesterday total account equity.
222
- """
223
-
224
- # below is a constructor that takes all field titles as arguments for convenience
225
- @classmethod
226
- def new(
227
- cls,
228
- account: str,
229
- balances: Dict[str, Decimal],
230
- positions: Dict[str, AccountPosition],
231
- timestamp: datetime,
232
- cash_excess: Optional[Decimal] = None,
233
- equity: Optional[Decimal] = None,
234
- position_margin: Optional[Decimal] = None,
235
- purchasing_power: Optional[Decimal] = None,
236
- realized_pnl: Optional[Decimal] = None,
237
- total_margin: Optional[Decimal] = None,
238
- unrealized_pnl: Optional[Decimal] = None,
239
- yesterday_equity: Optional[Decimal] = None,
240
- ):
241
- return cls(
242
- account,
243
- balances,
244
- positions,
245
- timestamp,
246
- cash_excess,
247
- equity,
248
- position_margin,
249
- purchasing_power,
250
- realized_pnl,
251
- total_margin,
252
- unrealized_pnl,
253
- yesterday_equity,
254
- )
255
-
256
- def __str__(self) -> str:
257
- return f"AggregatedAccountSummary(account={self.account},balances={self.balances},positions={self.positions},timestamp={self.timestamp},cash_excess={self.cash_excess},equity={self.equity},position_margin={self.position_margin},purchasing_power={self.purchasing_power},realized_pnl={self.realized_pnl},total_margin={self.total_margin},unrealized_pnl={self.unrealized_pnl},yesterday_equity={self.yesterday_equity})"
258
-
259
-
260
- class AlgoState(str, Enum):
261
- Pending = "Pending"
262
- Running = "Running"
263
- Stopped = "Stopped"
164
+ class AlgoOrderStatus(int, Enum):
165
+ Working = 1
166
+ Rejected = 2
167
+ Paused = 63
168
+ Stopped = 127
264
169
 
265
170
 
266
171
  class CancelStatus(int, Enum):
@@ -272,17 +177,17 @@ class CancelStatus(int, Enum):
272
177
 
273
178
  class CandleWidth(int, Enum):
274
179
  OneSecond = 1
275
- FiveSecond = 2
276
- OneMinute = 4
277
- FifteenMinute = 8
278
- OneHour = 16
279
- OneDay = 32
180
+ FiveSecond = 5
181
+ OneMinute = 60
182
+ FifteenMinute = 900
183
+ OneHour = 3600
184
+ OneDay = 86400
280
185
 
281
186
 
282
187
  class CptyLogoutRequest(Struct, omit_defaults=True):
283
188
  pass
284
189
 
285
- # below is a constructor that takes all field titles as arguments for convenience
190
+ # Constructor that takes all field titles as arguments for convenience
286
191
  @classmethod
287
192
  def new(
288
193
  cls,
@@ -293,6 +198,35 @@ class CptyLogoutRequest(Struct, omit_defaults=True):
293
198
  return f"CptyLogoutRequest()"
294
199
 
295
200
 
201
+ DateTimeOrUtc = datetime
202
+
203
+
204
+ class Deposit(Struct, omit_defaults=True):
205
+ account: str
206
+ amount: Decimal
207
+ description: str
208
+ timestamp: datetime
209
+
210
+ # Constructor that takes all field titles as arguments for convenience
211
+ @classmethod
212
+ def new(
213
+ cls,
214
+ account: str,
215
+ amount: Decimal,
216
+ description: str,
217
+ timestamp: datetime,
218
+ ):
219
+ return cls(
220
+ account,
221
+ amount,
222
+ description,
223
+ timestamp,
224
+ )
225
+
226
+ def __str__(self) -> str:
227
+ return f"Deposit(account={self.account},amount={self.amount},description={self.description},timestamp={self.timestamp})"
228
+
229
+
296
230
  class HealthMetric(Struct, omit_defaults=True):
297
231
  timestamp: int
298
232
  value: float
@@ -301,7 +235,7 @@ class HealthMetric(Struct, omit_defaults=True):
301
235
  should_be_less_than: Optional[float] = None
302
236
  should_be_less_than_or_equal_to: Optional[float] = None
303
237
 
304
- # below is a constructor that takes all field titles as arguments for convenience
238
+ # Constructor that takes all field titles as arguments for convenience
305
239
  @classmethod
306
240
  def new(
307
241
  cls,
@@ -368,7 +302,7 @@ class L2BookDiff(Struct, omit_defaults=True):
368
302
  tn: Annotated[int, Meta(ge=0, title="timestamp_ns")]
369
303
  ts: Annotated[int, Meta(title="timestamp")]
370
304
 
371
- # below is a constructor that takes all field titles as arguments for convenience
305
+ # Constructor that takes all field titles as arguments for convenience
372
306
  @classmethod
373
307
  def new(
374
308
  cls,
@@ -448,34 +382,15 @@ class L2BookDiff(Struct, omit_defaults=True):
448
382
  return datetime.fromtimestamp(self.ts)
449
383
 
450
384
 
451
- class OrderId(Struct, omit_defaults=True):
452
- """
453
- System-unique, persistent order identifiers
454
- """
455
-
456
- seqid: str
457
- seqno: Annotated[int, Meta(ge=0)]
458
-
459
- # below is a constructor that takes all field titles as arguments for convenience
460
- @classmethod
461
- def new(
462
- cls,
463
- seqid: str,
464
- seqno: int,
465
- ):
466
- return cls(
467
- seqid,
468
- seqno,
469
- )
470
-
471
- def __str__(self) -> str:
472
- return f"OrderId(seqid={self.seqid},seqno={self.seqno})"
385
+ OrderId = Annotated[
386
+ str, Meta(description="System-unique, persistent order identifiers")
387
+ ]
473
388
 
474
389
 
475
390
  class OrderOut(Struct, omit_defaults=True):
476
391
  id: OrderId
477
392
 
478
- # below is a constructor that takes all field titles as arguments for convenience
393
+ # Constructor that takes all field titles as arguments for convenience
479
394
  @classmethod
480
395
  def new(
481
396
  cls,
@@ -516,7 +431,7 @@ class OrderSource(int, Enum):
516
431
  class OrderStale(Struct, omit_defaults=True):
517
432
  id: OrderId
518
433
 
519
- # below is a constructor that takes all field titles as arguments for convenience
434
+ # Constructor that takes all field titles as arguments for convenience
520
435
  @classmethod
521
436
  def new(
522
437
  cls,
@@ -542,6 +457,256 @@ class OrderStatus(int, Enum):
542
457
  Unknown = 255
543
458
 
544
459
 
460
+ class OrderType(str, Enum):
461
+ LIMIT = "LIMIT"
462
+ STOP_LOSS_LIMIT = "STOP_LOSS_LIMIT"
463
+ TAKE_PROFIT_LIMIT = "TAKE_PROFIT_LIMIT"
464
+
465
+
466
+ class ProductCatalogInfo(Struct, omit_defaults=True):
467
+ """
468
+ Loosely normalized information about exchange products; used to seed symbology loaders and populate extended product info;
469
+
470
+ Symbology loaders will use catalog fields to augment and/or cross-check any other load source.
471
+ """
472
+
473
+ exchange: str
474
+ exchange_product: Annotated[str, Meta(description="Could be anything really")]
475
+ """
476
+ Could be anything really
477
+ """
478
+ category: Optional[str] = None
479
+ cqg_contract_symbol: Optional[str] = None
480
+ info_url: Optional[
481
+ Annotated[Optional[str], Meta(description="URL to more product info")]
482
+ ] = None
483
+ """
484
+ URL to more product info
485
+ """
486
+ long_description: Optional[str] = None
487
+ multiplier: Optional[
488
+ Annotated[
489
+ Optional[Decimal],
490
+ Meta(description="For derivatives contracts, the multiplier"),
491
+ ]
492
+ ] = None
493
+ """
494
+ For derivatives contracts, the multiplier
495
+ """
496
+ price_display_format: Optional[str] = None
497
+ quote_currency: Optional[str] = None
498
+ schedule_description: Optional[str] = None
499
+ settle_method: Optional[str] = None
500
+ short_description: Optional[
501
+ Annotated[
502
+ Optional[str],
503
+ Meta(
504
+ description="Short description of the product, suitable for display in a bubble, for example"
505
+ ),
506
+ ]
507
+ ] = None
508
+ """
509
+ Short description of the product, suitable for display in a bubble, for example
510
+ """
511
+ sub_category: Optional[str] = None
512
+
513
+ # Constructor that takes all field titles as arguments for convenience
514
+ @classmethod
515
+ def new(
516
+ cls,
517
+ exchange: str,
518
+ exchange_product: str,
519
+ category: Optional[str] = None,
520
+ cqg_contract_symbol: Optional[str] = None,
521
+ info_url: Optional[str] = None,
522
+ long_description: Optional[str] = None,
523
+ multiplier: Optional[Decimal] = None,
524
+ price_display_format: Optional[str] = None,
525
+ quote_currency: Optional[str] = None,
526
+ schedule_description: Optional[str] = None,
527
+ settle_method: Optional[str] = None,
528
+ short_description: Optional[str] = None,
529
+ sub_category: Optional[str] = None,
530
+ ):
531
+ return cls(
532
+ exchange,
533
+ exchange_product,
534
+ category,
535
+ cqg_contract_symbol,
536
+ info_url,
537
+ long_description,
538
+ multiplier,
539
+ price_display_format,
540
+ quote_currency,
541
+ schedule_description,
542
+ settle_method,
543
+ short_description,
544
+ sub_category,
545
+ )
546
+
547
+ def __str__(self) -> str:
548
+ return f"ProductCatalogInfo(exchange={self.exchange},exchange_product={self.exchange_product},category={self.category},cqg_contract_symbol={self.cqg_contract_symbol},info_url={self.info_url},long_description={self.long_description},multiplier={self.multiplier},price_display_format={self.price_display_format},quote_currency={self.quote_currency},schedule_description={self.schedule_description},settle_method={self.settle_method},short_description={self.short_description},sub_category={self.sub_category})"
549
+
550
+
551
+ class RqdAccountStatistics(Struct, omit_defaults=True):
552
+ account_number: str
553
+ account_type: Optional[str] = None
554
+ as_of_date: Optional[str] = None
555
+ available_cash_balance: Optional[Decimal] = None
556
+ cash_available_for_withdrawal: Optional[Decimal] = None
557
+ cumulative_day_trade_pnl: Optional[Decimal] = None
558
+ day_trading_buying_power: Optional[Decimal] = None
559
+ day_trading_buying_power_high_water_mark: Optional[Decimal] = None
560
+ day_trading_buying_power_maintenance_margin_multiplier: Optional[Decimal] = None
561
+ day_trading_house_minimum_equity_margin_call_amount: Optional[Decimal] = None
562
+ day_trading_margin_call_amount: Optional[Decimal] = None
563
+ day_trading_minimum_equity_margin_call_amount: Optional[Decimal] = None
564
+ excess_sma_amount: Optional[Decimal] = None
565
+ house_initial_margin_requirement_adjustment_factor: Optional[Decimal] = None
566
+ house_margin_call_amount: Optional[Decimal] = None
567
+ house_margin_requirement: Optional[Decimal] = None
568
+ house_margin_requirement_adjustment_factor: Optional[Decimal] = None
569
+ is_day_trader: Optional[str] = None
570
+ maintenance_margin_requirement: Optional[Decimal] = None
571
+ margin_call_amount: Optional[Decimal] = None
572
+ marginable_equity: Optional[Decimal] = None
573
+ market_value_adjustment_factor: Optional[Decimal] = None
574
+ number_open_day_trading_margin_calls: Optional[Decimal] = None
575
+ option_only_maintenance_margin_requirement: Optional[Decimal] = None
576
+ option_trade_date_short_market_value: Optional[Decimal] = None
577
+ overall_current_sma_balance: Optional[Decimal] = None
578
+ overnight_buying_power: Optional[Decimal] = None
579
+ reg_t_initial_margin_requirement: Optional[Decimal] = None
580
+ reg_t_maintenance_margin_requirement_adjustment_factor: Optional[str] = None
581
+ reg_t_margin_call_amount: Optional[Decimal] = None
582
+ settlement_date_cash_balance: Optional[Decimal] = None
583
+ settlement_date_long_market_value: Optional[Decimal] = None
584
+ settlement_date_option_long_market_value: Optional[Decimal] = None
585
+ settlement_date_option_short_market_value: Optional[Decimal] = None
586
+ settlement_date_short_market_value: Optional[Decimal] = None
587
+ start_of_day_day_trading_buying_power: Optional[Decimal] = None
588
+ start_of_day_day_trading_buying_power_margin_call_amount: Optional[Decimal] = None
589
+ start_of_day_house_margin_call_amount: Optional[Decimal] = None
590
+ start_of_day_maintenance_margin_call_amount: Optional[Decimal] = None
591
+ start_of_day_reg_t_margin_call_amount: Optional[Decimal] = None
592
+ strategy_based_relief_adjustment_factor: Optional[Decimal] = None
593
+ total_equity: Optional[Decimal] = None
594
+ trade_date_cash_balance: Optional[Decimal] = None
595
+ trade_date_option_long_market_value: Optional[Decimal] = None
596
+ trade_date_total_long_market_value: Optional[Decimal] = None
597
+ trade_date_total_short_market_value: Optional[Decimal] = None
598
+ usable_sma_balance: Optional[Decimal] = None
599
+
600
+ # Constructor that takes all field titles as arguments for convenience
601
+ @classmethod
602
+ def new(
603
+ cls,
604
+ account_number: str,
605
+ account_type: Optional[str] = None,
606
+ as_of_date: Optional[str] = None,
607
+ available_cash_balance: Optional[Decimal] = None,
608
+ cash_available_for_withdrawal: Optional[Decimal] = None,
609
+ cumulative_day_trade_pnl: Optional[Decimal] = None,
610
+ day_trading_buying_power: Optional[Decimal] = None,
611
+ day_trading_buying_power_high_water_mark: Optional[Decimal] = None,
612
+ day_trading_buying_power_maintenance_margin_multiplier: Optional[
613
+ Decimal
614
+ ] = None,
615
+ day_trading_house_minimum_equity_margin_call_amount: Optional[Decimal] = None,
616
+ day_trading_margin_call_amount: Optional[Decimal] = None,
617
+ day_trading_minimum_equity_margin_call_amount: Optional[Decimal] = None,
618
+ excess_sma_amount: Optional[Decimal] = None,
619
+ house_initial_margin_requirement_adjustment_factor: Optional[Decimal] = None,
620
+ house_margin_call_amount: Optional[Decimal] = None,
621
+ house_margin_requirement: Optional[Decimal] = None,
622
+ house_margin_requirement_adjustment_factor: Optional[Decimal] = None,
623
+ is_day_trader: Optional[str] = None,
624
+ maintenance_margin_requirement: Optional[Decimal] = None,
625
+ margin_call_amount: Optional[Decimal] = None,
626
+ marginable_equity: Optional[Decimal] = None,
627
+ market_value_adjustment_factor: Optional[Decimal] = None,
628
+ number_open_day_trading_margin_calls: Optional[Decimal] = None,
629
+ option_only_maintenance_margin_requirement: Optional[Decimal] = None,
630
+ option_trade_date_short_market_value: Optional[Decimal] = None,
631
+ overall_current_sma_balance: Optional[Decimal] = None,
632
+ overnight_buying_power: Optional[Decimal] = None,
633
+ reg_t_initial_margin_requirement: Optional[Decimal] = None,
634
+ reg_t_maintenance_margin_requirement_adjustment_factor: Optional[str] = None,
635
+ reg_t_margin_call_amount: Optional[Decimal] = None,
636
+ settlement_date_cash_balance: Optional[Decimal] = None,
637
+ settlement_date_long_market_value: Optional[Decimal] = None,
638
+ settlement_date_option_long_market_value: Optional[Decimal] = None,
639
+ settlement_date_option_short_market_value: Optional[Decimal] = None,
640
+ settlement_date_short_market_value: Optional[Decimal] = None,
641
+ start_of_day_day_trading_buying_power: Optional[Decimal] = None,
642
+ start_of_day_day_trading_buying_power_margin_call_amount: Optional[
643
+ Decimal
644
+ ] = None,
645
+ start_of_day_house_margin_call_amount: Optional[Decimal] = None,
646
+ start_of_day_maintenance_margin_call_amount: Optional[Decimal] = None,
647
+ start_of_day_reg_t_margin_call_amount: Optional[Decimal] = None,
648
+ strategy_based_relief_adjustment_factor: Optional[Decimal] = None,
649
+ total_equity: Optional[Decimal] = None,
650
+ trade_date_cash_balance: Optional[Decimal] = None,
651
+ trade_date_option_long_market_value: Optional[Decimal] = None,
652
+ trade_date_total_long_market_value: Optional[Decimal] = None,
653
+ trade_date_total_short_market_value: Optional[Decimal] = None,
654
+ usable_sma_balance: Optional[Decimal] = None,
655
+ ):
656
+ return cls(
657
+ account_number,
658
+ account_type,
659
+ as_of_date,
660
+ available_cash_balance,
661
+ cash_available_for_withdrawal,
662
+ cumulative_day_trade_pnl,
663
+ day_trading_buying_power,
664
+ day_trading_buying_power_high_water_mark,
665
+ day_trading_buying_power_maintenance_margin_multiplier,
666
+ day_trading_house_minimum_equity_margin_call_amount,
667
+ day_trading_margin_call_amount,
668
+ day_trading_minimum_equity_margin_call_amount,
669
+ excess_sma_amount,
670
+ house_initial_margin_requirement_adjustment_factor,
671
+ house_margin_call_amount,
672
+ house_margin_requirement,
673
+ house_margin_requirement_adjustment_factor,
674
+ is_day_trader,
675
+ maintenance_margin_requirement,
676
+ margin_call_amount,
677
+ marginable_equity,
678
+ market_value_adjustment_factor,
679
+ number_open_day_trading_margin_calls,
680
+ option_only_maintenance_margin_requirement,
681
+ option_trade_date_short_market_value,
682
+ overall_current_sma_balance,
683
+ overnight_buying_power,
684
+ reg_t_initial_margin_requirement,
685
+ reg_t_maintenance_margin_requirement_adjustment_factor,
686
+ reg_t_margin_call_amount,
687
+ settlement_date_cash_balance,
688
+ settlement_date_long_market_value,
689
+ settlement_date_option_long_market_value,
690
+ settlement_date_option_short_market_value,
691
+ settlement_date_short_market_value,
692
+ start_of_day_day_trading_buying_power,
693
+ start_of_day_day_trading_buying_power_margin_call_amount,
694
+ start_of_day_house_margin_call_amount,
695
+ start_of_day_maintenance_margin_call_amount,
696
+ start_of_day_reg_t_margin_call_amount,
697
+ strategy_based_relief_adjustment_factor,
698
+ total_equity,
699
+ trade_date_cash_balance,
700
+ trade_date_option_long_market_value,
701
+ trade_date_total_long_market_value,
702
+ trade_date_total_short_market_value,
703
+ usable_sma_balance,
704
+ )
705
+
706
+ def __str__(self) -> str:
707
+ return f"RqdAccountStatistics(account_number={self.account_number},account_type={self.account_type},as_of_date={self.as_of_date},available_cash_balance={self.available_cash_balance},cash_available_for_withdrawal={self.cash_available_for_withdrawal},cumulative_day_trade_pnl={self.cumulative_day_trade_pnl},day_trading_buying_power={self.day_trading_buying_power},day_trading_buying_power_high_water_mark={self.day_trading_buying_power_high_water_mark},day_trading_buying_power_maintenance_margin_multiplier={self.day_trading_buying_power_maintenance_margin_multiplier},day_trading_house_minimum_equity_margin_call_amount={self.day_trading_house_minimum_equity_margin_call_amount},day_trading_margin_call_amount={self.day_trading_margin_call_amount},day_trading_minimum_equity_margin_call_amount={self.day_trading_minimum_equity_margin_call_amount},excess_sma_amount={self.excess_sma_amount},house_initial_margin_requirement_adjustment_factor={self.house_initial_margin_requirement_adjustment_factor},house_margin_call_amount={self.house_margin_call_amount},house_margin_requirement={self.house_margin_requirement},house_margin_requirement_adjustment_factor={self.house_margin_requirement_adjustment_factor},is_day_trader={self.is_day_trader},maintenance_margin_requirement={self.maintenance_margin_requirement},margin_call_amount={self.margin_call_amount},marginable_equity={self.marginable_equity},market_value_adjustment_factor={self.market_value_adjustment_factor},number_open_day_trading_margin_calls={self.number_open_day_trading_margin_calls},option_only_maintenance_margin_requirement={self.option_only_maintenance_margin_requirement},option_trade_date_short_market_value={self.option_trade_date_short_market_value},overall_current_sma_balance={self.overall_current_sma_balance},overnight_buying_power={self.overnight_buying_power},reg_t_initial_margin_requirement={self.reg_t_initial_margin_requirement},reg_t_maintenance_margin_requirement_adjustment_factor={self.reg_t_maintenance_margin_requirement_adjustment_factor},reg_t_margin_call_amount={self.reg_t_margin_call_amount},settlement_date_cash_balance={self.settlement_date_cash_balance},settlement_date_long_market_value={self.settlement_date_long_market_value},settlement_date_option_long_market_value={self.settlement_date_option_long_market_value},settlement_date_option_short_market_value={self.settlement_date_option_short_market_value},settlement_date_short_market_value={self.settlement_date_short_market_value},start_of_day_day_trading_buying_power={self.start_of_day_day_trading_buying_power},start_of_day_day_trading_buying_power_margin_call_amount={self.start_of_day_day_trading_buying_power_margin_call_amount},start_of_day_house_margin_call_amount={self.start_of_day_house_margin_call_amount},start_of_day_maintenance_margin_call_amount={self.start_of_day_maintenance_margin_call_amount},start_of_day_reg_t_margin_call_amount={self.start_of_day_reg_t_margin_call_amount},strategy_based_relief_adjustment_factor={self.strategy_based_relief_adjustment_factor},total_equity={self.total_equity},trade_date_cash_balance={self.trade_date_cash_balance},trade_date_option_long_market_value={self.trade_date_option_long_market_value},trade_date_total_long_market_value={self.trade_date_total_long_market_value},trade_date_total_short_market_value={self.trade_date_total_short_market_value},usable_sma_balance={self.usable_sma_balance})"
708
+
709
+
545
710
  class SortTickersBy(str, Enum):
546
711
  VOLUME_DESC = "VOLUME_DESC"
547
712
  CHANGE_ASC = "CHANGE_ASC"
@@ -549,10 +714,42 @@ class SortTickersBy(str, Enum):
549
714
  ABS_CHANGE_DESC = "ABS_CHANGE_DESC"
550
715
 
551
716
 
717
+ class Statement(Struct, omit_defaults=True):
718
+ account: str
719
+ clearing_firm: str
720
+ filename: str
721
+ statement_date: date
722
+ statement_type: str
723
+ statement_uuid: str
724
+
725
+ # Constructor that takes all field titles as arguments for convenience
726
+ @classmethod
727
+ def new(
728
+ cls,
729
+ account: str,
730
+ clearing_firm: str,
731
+ filename: str,
732
+ statement_date: date,
733
+ statement_type: str,
734
+ statement_uuid: str,
735
+ ):
736
+ return cls(
737
+ account,
738
+ clearing_firm,
739
+ filename,
740
+ statement_date,
741
+ statement_type,
742
+ statement_uuid,
743
+ )
744
+
745
+ def __str__(self) -> str:
746
+ return f"Statement(account={self.account},clearing_firm={self.clearing_firm},filename={self.filename},statement_date={self.statement_date},statement_type={self.statement_type},statement_uuid={self.statement_uuid})"
747
+
748
+
552
749
  class GoodTilDate(Struct, omit_defaults=True):
553
750
  GTD: datetime
554
751
 
555
- # below is a constructor that takes all field titles as arguments for convenience
752
+ # Constructor that takes all field titles as arguments for convenience
556
753
  @classmethod
557
754
  def new(
558
755
  cls,
@@ -581,27 +778,33 @@ TimeInForce = Union[GoodTilDate, TimeInForceEnum]
581
778
  TraderIdOrEmail = str
582
779
 
583
780
 
584
- class TwapStatus(Struct, omit_defaults=True):
585
- quantity_filled: Decimal
586
- realized_twap: Optional[Decimal] = None
781
+ UserId = str
782
+
587
783
 
588
- # below is a constructor that takes all field titles as arguments for convenience
784
+ class Withdrawal(Struct, omit_defaults=True):
785
+ account: str
786
+ amount: Decimal
787
+ description: str
788
+ timestamp: datetime
789
+
790
+ # Constructor that takes all field titles as arguments for convenience
589
791
  @classmethod
590
792
  def new(
591
793
  cls,
592
- quantity_filled: Decimal,
593
- realized_twap: Optional[Decimal] = None,
794
+ account: str,
795
+ amount: Decimal,
796
+ description: str,
797
+ timestamp: datetime,
594
798
  ):
595
799
  return cls(
596
- quantity_filled,
597
- realized_twap,
800
+ account,
801
+ amount,
802
+ description,
803
+ timestamp,
598
804
  )
599
805
 
600
806
  def __str__(self) -> str:
601
- return f"TwapStatus(quantity_filled={self.quantity_filled},realized_twap={self.realized_twap})"
602
-
603
-
604
- UserId = str
807
+ return f"Withdrawal(account={self.account},amount={self.amount},description={self.description},timestamp={self.timestamp})"
605
808
 
606
809
 
607
810
  class AccountPermissions(Struct, omit_defaults=True):
@@ -615,7 +818,7 @@ class AccountPermissions(Struct, omit_defaults=True):
615
818
  trade: bool
616
819
  view: bool
617
820
 
618
- # below is a constructor that takes all field titles as arguments for convenience
821
+ # Constructor that takes all field titles as arguments for convenience
619
822
  @classmethod
620
823
  def new(
621
824
  cls,
@@ -654,44 +857,26 @@ class FillKind(int, Enum):
654
857
  Correction = 2
655
858
 
656
859
 
657
- HumanDuration = str
860
+ class Unit(str, Enum):
861
+ base = "base"
862
+ quote = "quote"
658
863
 
659
864
 
660
- class Base(Struct, omit_defaults=True):
661
- unit: Literal["base"]
865
+ class MinOrderQuantityUnit(Struct, omit_defaults=True):
866
+ unit: Unit
662
867
 
663
- # below is a constructor that takes all field titles as arguments for convenience
868
+ # Constructor that takes all field titles as arguments for convenience
664
869
  @classmethod
665
870
  def new(
666
871
  cls,
667
- unit: Literal["base"],
872
+ unit: Unit,
668
873
  ):
669
874
  return cls(
670
875
  unit,
671
876
  )
672
877
 
673
878
  def __str__(self) -> str:
674
- return f"Base(unit={self.unit})"
675
-
676
-
677
- class Quote(Struct, omit_defaults=True):
678
- unit: Literal["quote"]
679
-
680
- # below is a constructor that takes all field titles as arguments for convenience
681
- @classmethod
682
- def new(
683
- cls,
684
- unit: Literal["quote"],
685
- ):
686
- return cls(
687
- unit,
688
- )
689
-
690
- def __str__(self) -> str:
691
- return f"Quote(unit={self.unit})"
692
-
693
-
694
- MinOrderQuantityUnit = Union[Base, Quote]
879
+ return f"MinOrderQuantityUnit(unit={self.unit})"
695
880
 
696
881
 
697
882
  class OptionsExerciseType(str, Enum):
@@ -706,7 +891,7 @@ PriceDisplayFormat = str
706
891
  class Fiat(Struct, omit_defaults=True):
707
892
  product_type: Literal["Fiat"]
708
893
 
709
- # below is a constructor that takes all field titles as arguments for convenience
894
+ # Constructor that takes all field titles as arguments for convenience
710
895
  @classmethod
711
896
  def new(
712
897
  cls,
@@ -723,7 +908,7 @@ class Fiat(Struct, omit_defaults=True):
723
908
  class Commodity(Struct, omit_defaults=True):
724
909
  product_type: Literal["Commodity"]
725
910
 
726
- # below is a constructor that takes all field titles as arguments for convenience
911
+ # Constructor that takes all field titles as arguments for convenience
727
912
  @classmethod
728
913
  def new(
729
914
  cls,
@@ -740,7 +925,7 @@ class Commodity(Struct, omit_defaults=True):
740
925
  class Crypto(Struct, omit_defaults=True):
741
926
  product_type: Literal["Crypto"]
742
927
 
743
- # below is a constructor that takes all field titles as arguments for convenience
928
+ # Constructor that takes all field titles as arguments for convenience
744
929
  @classmethod
745
930
  def new(
746
931
  cls,
@@ -758,7 +943,7 @@ class Equity(Struct, omit_defaults=True):
758
943
  product_type: Literal["Equity"]
759
944
  easy_to_borrow: Optional[bool] = None
760
945
 
761
- # below is a constructor that takes all field titles as arguments for convenience
946
+ # Constructor that takes all field titles as arguments for convenience
762
947
  @classmethod
763
948
  def new(
764
949
  cls,
@@ -777,7 +962,7 @@ class Equity(Struct, omit_defaults=True):
777
962
  class Index(Struct, omit_defaults=True):
778
963
  product_type: Literal["Index"]
779
964
 
780
- # below is a constructor that takes all field titles as arguments for convenience
965
+ # Constructor that takes all field titles as arguments for convenience
781
966
  @classmethod
782
967
  def new(
783
968
  cls,
@@ -800,7 +985,7 @@ class Future(Struct, omit_defaults=True):
800
985
  series: Optional[str] = None
801
986
  underlying: Optional[str] = None
802
987
 
803
- # below is a constructor that takes all field titles as arguments for convenience
988
+ # Constructor that takes all field titles as arguments for convenience
804
989
  @classmethod
805
990
  def new(
806
991
  cls,
@@ -832,7 +1017,7 @@ class Perpetual(Struct, omit_defaults=True):
832
1017
  product_type: Literal["Perpetual"]
833
1018
  underlying: Optional[str] = None
834
1019
 
835
- # below is a constructor that takes all field titles as arguments for convenience
1020
+ # Constructor that takes all field titles as arguments for convenience
836
1021
  @classmethod
837
1022
  def new(
838
1023
  cls,
@@ -855,7 +1040,7 @@ class Perpetual(Struct, omit_defaults=True):
855
1040
  class Unknown(Struct, omit_defaults=True):
856
1041
  product_type: Literal["Unknown"]
857
1042
 
858
- # below is a constructor that takes all field titles as arguments for convenience
1043
+ # Constructor that takes all field titles as arguments for convenience
859
1044
  @classmethod
860
1045
  def new(
861
1046
  cls,
@@ -869,10 +1054,62 @@ class Unknown(Struct, omit_defaults=True):
869
1054
  return f"Unknown(product_type={self.product_type})"
870
1055
 
871
1056
 
1057
+ class PutOrCall(str, Enum):
1058
+ P = "P"
1059
+ C = "C"
1060
+
1061
+
1062
+ class SnapshotOrUpdateForStringAndProductCatalogInfo1(Struct, omit_defaults=True):
1063
+ snapshot: Dict[str, ProductCatalogInfo]
1064
+
1065
+ # Constructor that takes all field titles as arguments for convenience
1066
+ @classmethod
1067
+ def new(
1068
+ cls,
1069
+ snapshot: Dict[str, ProductCatalogInfo],
1070
+ ):
1071
+ return cls(
1072
+ snapshot,
1073
+ )
1074
+
1075
+ def __str__(self) -> str:
1076
+ return (
1077
+ f"SnapshotOrUpdateForStringAndProductCatalogInfo1(snapshot={self.snapshot})"
1078
+ )
1079
+
1080
+
1081
+ Update6 = List[Union[str, Optional[ProductCatalogInfo]]]
1082
+
1083
+
1084
+ class SnapshotOrUpdateForStringAndProductCatalogInfo2(Struct, omit_defaults=True):
1085
+ updates: List[Update6]
1086
+
1087
+ # Constructor that takes all field titles as arguments for convenience
1088
+ @classmethod
1089
+ def new(
1090
+ cls,
1091
+ updates: List[Update6],
1092
+ ):
1093
+ return cls(
1094
+ updates,
1095
+ )
1096
+
1097
+ def __str__(self) -> str:
1098
+ return (
1099
+ f"SnapshotOrUpdateForStringAndProductCatalogInfo2(updates={self.updates})"
1100
+ )
1101
+
1102
+
1103
+ SnapshotOrUpdateForStringAndProductCatalogInfo = Union[
1104
+ SnapshotOrUpdateForStringAndProductCatalogInfo1,
1105
+ SnapshotOrUpdateForStringAndProductCatalogInfo2,
1106
+ ]
1107
+
1108
+
872
1109
  class SnapshotOrUpdateForStringAndString1(Struct, omit_defaults=True):
873
1110
  snapshot: Dict[str, str]
874
1111
 
875
- # below is a constructor that takes all field titles as arguments for convenience
1112
+ # Constructor that takes all field titles as arguments for convenience
876
1113
  @classmethod
877
1114
  def new(
878
1115
  cls,
@@ -886,17 +1123,17 @@ class SnapshotOrUpdateForStringAndString1(Struct, omit_defaults=True):
886
1123
  return f"SnapshotOrUpdateForStringAndString1(snapshot={self.snapshot})"
887
1124
 
888
1125
 
889
- Update5 = List[Union[str, Optional[str]]]
1126
+ Update7 = List[Union[str, Optional[str]]]
890
1127
 
891
1128
 
892
1129
  class SnapshotOrUpdateForStringAndString2(Struct, omit_defaults=True):
893
- updates: List[Update5]
1130
+ updates: List[Update7]
894
1131
 
895
- # below is a constructor that takes all field titles as arguments for convenience
1132
+ # Constructor that takes all field titles as arguments for convenience
896
1133
  @classmethod
897
1134
  def new(
898
1135
  cls,
899
- updates: List[Update5],
1136
+ updates: List[Update7],
900
1137
  ):
901
1138
  return cls(
902
1139
  updates,
@@ -914,7 +1151,7 @@ SnapshotOrUpdateForStringAndString = Union[
914
1151
  class SimpleDecimal(Struct, omit_defaults=True):
915
1152
  simple: Decimal
916
1153
 
917
- # below is a constructor that takes all field titles as arguments for convenience
1154
+ # Constructor that takes all field titles as arguments for convenience
918
1155
  @classmethod
919
1156
  def new(
920
1157
  cls,
@@ -934,7 +1171,7 @@ Threshold = List[Decimal]
934
1171
  class Varying1(Struct, omit_defaults=True):
935
1172
  thresholds: List[Threshold]
936
1173
 
937
- # below is a constructor that takes all field titles as arguments for convenience
1174
+ # Constructor that takes all field titles as arguments for convenience
938
1175
  @classmethod
939
1176
  def new(
940
1177
  cls,
@@ -955,7 +1192,7 @@ class Varying(Struct, omit_defaults=True):
955
1192
 
956
1193
  varying: Varying1
957
1194
 
958
- # below is a constructor that takes all field titles as arguments for convenience
1195
+ # Constructor that takes all field titles as arguments for convenience
959
1196
  @classmethod
960
1197
  def new(
961
1198
  cls,
@@ -972,605 +1209,6 @@ class Varying(Struct, omit_defaults=True):
972
1209
  TickSize = Union[SimpleDecimal, Varying]
973
1210
 
974
1211
 
975
- class TimeZone(str, Enum):
976
- Africa_Abidjan = "Africa/Abidjan"
977
- Africa_Accra = "Africa/Accra"
978
- Africa_Addis_Ababa = "Africa/Addis_Ababa"
979
- Africa_Algiers = "Africa/Algiers"
980
- Africa_Asmara = "Africa/Asmara"
981
- Africa_Asmera = "Africa/Asmera"
982
- Africa_Bamako = "Africa/Bamako"
983
- Africa_Bangui = "Africa/Bangui"
984
- Africa_Banjul = "Africa/Banjul"
985
- Africa_Bissau = "Africa/Bissau"
986
- Africa_Blantyre = "Africa/Blantyre"
987
- Africa_Brazzaville = "Africa/Brazzaville"
988
- Africa_Bujumbura = "Africa/Bujumbura"
989
- Africa_Cairo = "Africa/Cairo"
990
- Africa_Casablanca = "Africa/Casablanca"
991
- Africa_Ceuta = "Africa/Ceuta"
992
- Africa_Conakry = "Africa/Conakry"
993
- Africa_Dakar = "Africa/Dakar"
994
- Africa_Dar_es_Salaam = "Africa/Dar_es_Salaam"
995
- Africa_Djibouti = "Africa/Djibouti"
996
- Africa_Douala = "Africa/Douala"
997
- Africa_El_Aaiun = "Africa/El_Aaiun"
998
- Africa_Freetown = "Africa/Freetown"
999
- Africa_Gaborone = "Africa/Gaborone"
1000
- Africa_Harare = "Africa/Harare"
1001
- Africa_Johannesburg = "Africa/Johannesburg"
1002
- Africa_Juba = "Africa/Juba"
1003
- Africa_Kampala = "Africa/Kampala"
1004
- Africa_Khartoum = "Africa/Khartoum"
1005
- Africa_Kigali = "Africa/Kigali"
1006
- Africa_Kinshasa = "Africa/Kinshasa"
1007
- Africa_Lagos = "Africa/Lagos"
1008
- Africa_Libreville = "Africa/Libreville"
1009
- Africa_Lome = "Africa/Lome"
1010
- Africa_Luanda = "Africa/Luanda"
1011
- Africa_Lubumbashi = "Africa/Lubumbashi"
1012
- Africa_Lusaka = "Africa/Lusaka"
1013
- Africa_Malabo = "Africa/Malabo"
1014
- Africa_Maputo = "Africa/Maputo"
1015
- Africa_Maseru = "Africa/Maseru"
1016
- Africa_Mbabane = "Africa/Mbabane"
1017
- Africa_Mogadishu = "Africa/Mogadishu"
1018
- Africa_Monrovia = "Africa/Monrovia"
1019
- Africa_Nairobi = "Africa/Nairobi"
1020
- Africa_Ndjamena = "Africa/Ndjamena"
1021
- Africa_Niamey = "Africa/Niamey"
1022
- Africa_Nouakchott = "Africa/Nouakchott"
1023
- Africa_Ouagadougou = "Africa/Ouagadougou"
1024
- Africa_Porto_Novo = "Africa/Porto-Novo"
1025
- Africa_Sao_Tome = "Africa/Sao_Tome"
1026
- Africa_Timbuktu = "Africa/Timbuktu"
1027
- Africa_Tripoli = "Africa/Tripoli"
1028
- Africa_Tunis = "Africa/Tunis"
1029
- Africa_Windhoek = "Africa/Windhoek"
1030
- America_Adak = "America/Adak"
1031
- America_Anchorage = "America/Anchorage"
1032
- America_Anguilla = "America/Anguilla"
1033
- America_Antigua = "America/Antigua"
1034
- America_Araguaina = "America/Araguaina"
1035
- America_Argentina_Buenos_Aires = "America/Argentina/Buenos_Aires"
1036
- America_Argentina_Catamarca = "America/Argentina/Catamarca"
1037
- America_Argentina_ComodRivadavia = "America/Argentina/ComodRivadavia"
1038
- America_Argentina_Cordoba = "America/Argentina/Cordoba"
1039
- America_Argentina_Jujuy = "America/Argentina/Jujuy"
1040
- America_Argentina_La_Rioja = "America/Argentina/La_Rioja"
1041
- America_Argentina_Mendoza = "America/Argentina/Mendoza"
1042
- America_Argentina_Rio_Gallegos = "America/Argentina/Rio_Gallegos"
1043
- America_Argentina_Salta = "America/Argentina/Salta"
1044
- America_Argentina_San_Juan = "America/Argentina/San_Juan"
1045
- America_Argentina_San_Luis = "America/Argentina/San_Luis"
1046
- America_Argentina_Tucuman = "America/Argentina/Tucuman"
1047
- America_Argentina_Ushuaia = "America/Argentina/Ushuaia"
1048
- America_Aruba = "America/Aruba"
1049
- America_Asuncion = "America/Asuncion"
1050
- America_Atikokan = "America/Atikokan"
1051
- America_Atka = "America/Atka"
1052
- America_Bahia = "America/Bahia"
1053
- America_Bahia_Banderas = "America/Bahia_Banderas"
1054
- America_Barbados = "America/Barbados"
1055
- America_Belem = "America/Belem"
1056
- America_Belize = "America/Belize"
1057
- America_Blanc_Sablon = "America/Blanc-Sablon"
1058
- America_Boa_Vista = "America/Boa_Vista"
1059
- America_Bogota = "America/Bogota"
1060
- America_Boise = "America/Boise"
1061
- America_Buenos_Aires = "America/Buenos_Aires"
1062
- America_Cambridge_Bay = "America/Cambridge_Bay"
1063
- America_Campo_Grande = "America/Campo_Grande"
1064
- America_Cancun = "America/Cancun"
1065
- America_Caracas = "America/Caracas"
1066
- America_Catamarca = "America/Catamarca"
1067
- America_Cayenne = "America/Cayenne"
1068
- America_Cayman = "America/Cayman"
1069
- America_Chicago = "America/Chicago"
1070
- America_Chihuahua = "America/Chihuahua"
1071
- America_Ciudad_Juarez = "America/Ciudad_Juarez"
1072
- America_Coral_Harbour = "America/Coral_Harbour"
1073
- America_Cordoba = "America/Cordoba"
1074
- America_Costa_Rica = "America/Costa_Rica"
1075
- America_Creston = "America/Creston"
1076
- America_Cuiaba = "America/Cuiaba"
1077
- America_Curacao = "America/Curacao"
1078
- America_Danmarkshavn = "America/Danmarkshavn"
1079
- America_Dawson = "America/Dawson"
1080
- America_Dawson_Creek = "America/Dawson_Creek"
1081
- America_Denver = "America/Denver"
1082
- America_Detroit = "America/Detroit"
1083
- America_Dominica = "America/Dominica"
1084
- America_Edmonton = "America/Edmonton"
1085
- America_Eirunepe = "America/Eirunepe"
1086
- America_El_Salvador = "America/El_Salvador"
1087
- America_Ensenada = "America/Ensenada"
1088
- America_Fort_Nelson = "America/Fort_Nelson"
1089
- America_Fort_Wayne = "America/Fort_Wayne"
1090
- America_Fortaleza = "America/Fortaleza"
1091
- America_Glace_Bay = "America/Glace_Bay"
1092
- America_Godthab = "America/Godthab"
1093
- America_Goose_Bay = "America/Goose_Bay"
1094
- America_Grand_Turk = "America/Grand_Turk"
1095
- America_Grenada = "America/Grenada"
1096
- America_Guadeloupe = "America/Guadeloupe"
1097
- America_Guatemala = "America/Guatemala"
1098
- America_Guayaquil = "America/Guayaquil"
1099
- America_Guyana = "America/Guyana"
1100
- America_Halifax = "America/Halifax"
1101
- America_Havana = "America/Havana"
1102
- America_Hermosillo = "America/Hermosillo"
1103
- America_Indiana_Indianapolis = "America/Indiana/Indianapolis"
1104
- America_Indiana_Knox = "America/Indiana/Knox"
1105
- America_Indiana_Marengo = "America/Indiana/Marengo"
1106
- America_Indiana_Petersburg = "America/Indiana/Petersburg"
1107
- America_Indiana_Tell_City = "America/Indiana/Tell_City"
1108
- America_Indiana_Vevay = "America/Indiana/Vevay"
1109
- America_Indiana_Vincennes = "America/Indiana/Vincennes"
1110
- America_Indiana_Winamac = "America/Indiana/Winamac"
1111
- America_Indianapolis = "America/Indianapolis"
1112
- America_Inuvik = "America/Inuvik"
1113
- America_Iqaluit = "America/Iqaluit"
1114
- America_Jamaica = "America/Jamaica"
1115
- America_Jujuy = "America/Jujuy"
1116
- America_Juneau = "America/Juneau"
1117
- America_Kentucky_Louisville = "America/Kentucky/Louisville"
1118
- America_Kentucky_Monticello = "America/Kentucky/Monticello"
1119
- America_Knox_IN = "America/Knox_IN"
1120
- America_Kralendijk = "America/Kralendijk"
1121
- America_La_Paz = "America/La_Paz"
1122
- America_Lima = "America/Lima"
1123
- America_Los_Angeles = "America/Los_Angeles"
1124
- America_Louisville = "America/Louisville"
1125
- America_Lower_Princes = "America/Lower_Princes"
1126
- America_Maceio = "America/Maceio"
1127
- America_Managua = "America/Managua"
1128
- America_Manaus = "America/Manaus"
1129
- America_Marigot = "America/Marigot"
1130
- America_Martinique = "America/Martinique"
1131
- America_Matamoros = "America/Matamoros"
1132
- America_Mazatlan = "America/Mazatlan"
1133
- America_Mendoza = "America/Mendoza"
1134
- America_Menominee = "America/Menominee"
1135
- America_Merida = "America/Merida"
1136
- America_Metlakatla = "America/Metlakatla"
1137
- America_Mexico_City = "America/Mexico_City"
1138
- America_Miquelon = "America/Miquelon"
1139
- America_Moncton = "America/Moncton"
1140
- America_Monterrey = "America/Monterrey"
1141
- America_Montevideo = "America/Montevideo"
1142
- America_Montreal = "America/Montreal"
1143
- America_Montserrat = "America/Montserrat"
1144
- America_Nassau = "America/Nassau"
1145
- America_New_York = "America/New_York"
1146
- America_Nipigon = "America/Nipigon"
1147
- America_Nome = "America/Nome"
1148
- America_Noronha = "America/Noronha"
1149
- America_North_Dakota_Beulah = "America/North_Dakota/Beulah"
1150
- America_North_Dakota_Center = "America/North_Dakota/Center"
1151
- America_North_Dakota_New_Salem = "America/North_Dakota/New_Salem"
1152
- America_Nuuk = "America/Nuuk"
1153
- America_Ojinaga = "America/Ojinaga"
1154
- America_Panama = "America/Panama"
1155
- America_Pangnirtung = "America/Pangnirtung"
1156
- America_Paramaribo = "America/Paramaribo"
1157
- America_Phoenix = "America/Phoenix"
1158
- America_Port_au_Prince = "America/Port-au-Prince"
1159
- America_Port_of_Spain = "America/Port_of_Spain"
1160
- America_Porto_Acre = "America/Porto_Acre"
1161
- America_Porto_Velho = "America/Porto_Velho"
1162
- America_Puerto_Rico = "America/Puerto_Rico"
1163
- America_Punta_Arenas = "America/Punta_Arenas"
1164
- America_Rainy_River = "America/Rainy_River"
1165
- America_Rankin_Inlet = "America/Rankin_Inlet"
1166
- America_Recife = "America/Recife"
1167
- America_Regina = "America/Regina"
1168
- America_Resolute = "America/Resolute"
1169
- America_Rio_Branco = "America/Rio_Branco"
1170
- America_Rosario = "America/Rosario"
1171
- America_Santa_Isabel = "America/Santa_Isabel"
1172
- America_Santarem = "America/Santarem"
1173
- America_Santiago = "America/Santiago"
1174
- America_Santo_Domingo = "America/Santo_Domingo"
1175
- America_Sao_Paulo = "America/Sao_Paulo"
1176
- America_Scoresbysund = "America/Scoresbysund"
1177
- America_Shiprock = "America/Shiprock"
1178
- America_Sitka = "America/Sitka"
1179
- America_St_Barthelemy = "America/St_Barthelemy"
1180
- America_St_Johns = "America/St_Johns"
1181
- America_St_Kitts = "America/St_Kitts"
1182
- America_St_Lucia = "America/St_Lucia"
1183
- America_St_Thomas = "America/St_Thomas"
1184
- America_St_Vincent = "America/St_Vincent"
1185
- America_Swift_Current = "America/Swift_Current"
1186
- America_Tegucigalpa = "America/Tegucigalpa"
1187
- America_Thule = "America/Thule"
1188
- America_Thunder_Bay = "America/Thunder_Bay"
1189
- America_Tijuana = "America/Tijuana"
1190
- America_Toronto = "America/Toronto"
1191
- America_Tortola = "America/Tortola"
1192
- America_Vancouver = "America/Vancouver"
1193
- America_Virgin = "America/Virgin"
1194
- America_Whitehorse = "America/Whitehorse"
1195
- America_Winnipeg = "America/Winnipeg"
1196
- America_Yakutat = "America/Yakutat"
1197
- America_Yellowknife = "America/Yellowknife"
1198
- Antarctica_Casey = "Antarctica/Casey"
1199
- Antarctica_Davis = "Antarctica/Davis"
1200
- Antarctica_DumontDUrville = "Antarctica/DumontDUrville"
1201
- Antarctica_Macquarie = "Antarctica/Macquarie"
1202
- Antarctica_Mawson = "Antarctica/Mawson"
1203
- Antarctica_McMurdo = "Antarctica/McMurdo"
1204
- Antarctica_Palmer = "Antarctica/Palmer"
1205
- Antarctica_Rothera = "Antarctica/Rothera"
1206
- Antarctica_South_Pole = "Antarctica/South_Pole"
1207
- Antarctica_Syowa = "Antarctica/Syowa"
1208
- Antarctica_Troll = "Antarctica/Troll"
1209
- Antarctica_Vostok = "Antarctica/Vostok"
1210
- Arctic_Longyearbyen = "Arctic/Longyearbyen"
1211
- Asia_Aden = "Asia/Aden"
1212
- Asia_Almaty = "Asia/Almaty"
1213
- Asia_Amman = "Asia/Amman"
1214
- Asia_Anadyr = "Asia/Anadyr"
1215
- Asia_Aqtau = "Asia/Aqtau"
1216
- Asia_Aqtobe = "Asia/Aqtobe"
1217
- Asia_Ashgabat = "Asia/Ashgabat"
1218
- Asia_Ashkhabad = "Asia/Ashkhabad"
1219
- Asia_Atyrau = "Asia/Atyrau"
1220
- Asia_Baghdad = "Asia/Baghdad"
1221
- Asia_Bahrain = "Asia/Bahrain"
1222
- Asia_Baku = "Asia/Baku"
1223
- Asia_Bangkok = "Asia/Bangkok"
1224
- Asia_Barnaul = "Asia/Barnaul"
1225
- Asia_Beirut = "Asia/Beirut"
1226
- Asia_Bishkek = "Asia/Bishkek"
1227
- Asia_Brunei = "Asia/Brunei"
1228
- Asia_Calcutta = "Asia/Calcutta"
1229
- Asia_Chita = "Asia/Chita"
1230
- Asia_Choibalsan = "Asia/Choibalsan"
1231
- Asia_Chongqing = "Asia/Chongqing"
1232
- Asia_Chungking = "Asia/Chungking"
1233
- Asia_Colombo = "Asia/Colombo"
1234
- Asia_Dacca = "Asia/Dacca"
1235
- Asia_Damascus = "Asia/Damascus"
1236
- Asia_Dhaka = "Asia/Dhaka"
1237
- Asia_Dili = "Asia/Dili"
1238
- Asia_Dubai = "Asia/Dubai"
1239
- Asia_Dushanbe = "Asia/Dushanbe"
1240
- Asia_Famagusta = "Asia/Famagusta"
1241
- Asia_Gaza = "Asia/Gaza"
1242
- Asia_Harbin = "Asia/Harbin"
1243
- Asia_Hebron = "Asia/Hebron"
1244
- Asia_Ho_Chi_Minh = "Asia/Ho_Chi_Minh"
1245
- Asia_Hong_Kong = "Asia/Hong_Kong"
1246
- Asia_Hovd = "Asia/Hovd"
1247
- Asia_Irkutsk = "Asia/Irkutsk"
1248
- Asia_Istanbul = "Asia/Istanbul"
1249
- Asia_Jakarta = "Asia/Jakarta"
1250
- Asia_Jayapura = "Asia/Jayapura"
1251
- Asia_Jerusalem = "Asia/Jerusalem"
1252
- Asia_Kabul = "Asia/Kabul"
1253
- Asia_Kamchatka = "Asia/Kamchatka"
1254
- Asia_Karachi = "Asia/Karachi"
1255
- Asia_Kashgar = "Asia/Kashgar"
1256
- Asia_Kathmandu = "Asia/Kathmandu"
1257
- Asia_Katmandu = "Asia/Katmandu"
1258
- Asia_Khandyga = "Asia/Khandyga"
1259
- Asia_Kolkata = "Asia/Kolkata"
1260
- Asia_Krasnoyarsk = "Asia/Krasnoyarsk"
1261
- Asia_Kuala_Lumpur = "Asia/Kuala_Lumpur"
1262
- Asia_Kuching = "Asia/Kuching"
1263
- Asia_Kuwait = "Asia/Kuwait"
1264
- Asia_Macao = "Asia/Macao"
1265
- Asia_Macau = "Asia/Macau"
1266
- Asia_Magadan = "Asia/Magadan"
1267
- Asia_Makassar = "Asia/Makassar"
1268
- Asia_Manila = "Asia/Manila"
1269
- Asia_Muscat = "Asia/Muscat"
1270
- Asia_Nicosia = "Asia/Nicosia"
1271
- Asia_Novokuznetsk = "Asia/Novokuznetsk"
1272
- Asia_Novosibirsk = "Asia/Novosibirsk"
1273
- Asia_Omsk = "Asia/Omsk"
1274
- Asia_Oral = "Asia/Oral"
1275
- Asia_Phnom_Penh = "Asia/Phnom_Penh"
1276
- Asia_Pontianak = "Asia/Pontianak"
1277
- Asia_Pyongyang = "Asia/Pyongyang"
1278
- Asia_Qatar = "Asia/Qatar"
1279
- Asia_Qostanay = "Asia/Qostanay"
1280
- Asia_Qyzylorda = "Asia/Qyzylorda"
1281
- Asia_Rangoon = "Asia/Rangoon"
1282
- Asia_Riyadh = "Asia/Riyadh"
1283
- Asia_Saigon = "Asia/Saigon"
1284
- Asia_Sakhalin = "Asia/Sakhalin"
1285
- Asia_Samarkand = "Asia/Samarkand"
1286
- Asia_Seoul = "Asia/Seoul"
1287
- Asia_Shanghai = "Asia/Shanghai"
1288
- Asia_Singapore = "Asia/Singapore"
1289
- Asia_Srednekolymsk = "Asia/Srednekolymsk"
1290
- Asia_Taipei = "Asia/Taipei"
1291
- Asia_Tashkent = "Asia/Tashkent"
1292
- Asia_Tbilisi = "Asia/Tbilisi"
1293
- Asia_Tehran = "Asia/Tehran"
1294
- Asia_Tel_Aviv = "Asia/Tel_Aviv"
1295
- Asia_Thimbu = "Asia/Thimbu"
1296
- Asia_Thimphu = "Asia/Thimphu"
1297
- Asia_Tokyo = "Asia/Tokyo"
1298
- Asia_Tomsk = "Asia/Tomsk"
1299
- Asia_Ujung_Pandang = "Asia/Ujung_Pandang"
1300
- Asia_Ulaanbaatar = "Asia/Ulaanbaatar"
1301
- Asia_Ulan_Bator = "Asia/Ulan_Bator"
1302
- Asia_Urumqi = "Asia/Urumqi"
1303
- Asia_Ust_Nera = "Asia/Ust-Nera"
1304
- Asia_Vientiane = "Asia/Vientiane"
1305
- Asia_Vladivostok = "Asia/Vladivostok"
1306
- Asia_Yakutsk = "Asia/Yakutsk"
1307
- Asia_Yangon = "Asia/Yangon"
1308
- Asia_Yekaterinburg = "Asia/Yekaterinburg"
1309
- Asia_Yerevan = "Asia/Yerevan"
1310
- Atlantic_Azores = "Atlantic/Azores"
1311
- Atlantic_Bermuda = "Atlantic/Bermuda"
1312
- Atlantic_Canary = "Atlantic/Canary"
1313
- Atlantic_Cape_Verde = "Atlantic/Cape_Verde"
1314
- Atlantic_Faeroe = "Atlantic/Faeroe"
1315
- Atlantic_Faroe = "Atlantic/Faroe"
1316
- Atlantic_Jan_Mayen = "Atlantic/Jan_Mayen"
1317
- Atlantic_Madeira = "Atlantic/Madeira"
1318
- Atlantic_Reykjavik = "Atlantic/Reykjavik"
1319
- Atlantic_South_Georgia = "Atlantic/South_Georgia"
1320
- Atlantic_St_Helena = "Atlantic/St_Helena"
1321
- Atlantic_Stanley = "Atlantic/Stanley"
1322
- Australia_ACT = "Australia/ACT"
1323
- Australia_Adelaide = "Australia/Adelaide"
1324
- Australia_Brisbane = "Australia/Brisbane"
1325
- Australia_Broken_Hill = "Australia/Broken_Hill"
1326
- Australia_Canberra = "Australia/Canberra"
1327
- Australia_Currie = "Australia/Currie"
1328
- Australia_Darwin = "Australia/Darwin"
1329
- Australia_Eucla = "Australia/Eucla"
1330
- Australia_Hobart = "Australia/Hobart"
1331
- Australia_LHI = "Australia/LHI"
1332
- Australia_Lindeman = "Australia/Lindeman"
1333
- Australia_Lord_Howe = "Australia/Lord_Howe"
1334
- Australia_Melbourne = "Australia/Melbourne"
1335
- Australia_NSW = "Australia/NSW"
1336
- Australia_North = "Australia/North"
1337
- Australia_Perth = "Australia/Perth"
1338
- Australia_Queensland = "Australia/Queensland"
1339
- Australia_South = "Australia/South"
1340
- Australia_Sydney = "Australia/Sydney"
1341
- Australia_Tasmania = "Australia/Tasmania"
1342
- Australia_Victoria = "Australia/Victoria"
1343
- Australia_West = "Australia/West"
1344
- Australia_Yancowinna = "Australia/Yancowinna"
1345
- Brazil_Acre = "Brazil/Acre"
1346
- Brazil_DeNoronha = "Brazil/DeNoronha"
1347
- Brazil_East = "Brazil/East"
1348
- Brazil_West = "Brazil/West"
1349
- CET = "CET"
1350
- CST6CDT = "CST6CDT"
1351
- Canada_Atlantic = "Canada/Atlantic"
1352
- Canada_Central = "Canada/Central"
1353
- Canada_Eastern = "Canada/Eastern"
1354
- Canada_Mountain = "Canada/Mountain"
1355
- Canada_Newfoundland = "Canada/Newfoundland"
1356
- Canada_Pacific = "Canada/Pacific"
1357
- Canada_Saskatchewan = "Canada/Saskatchewan"
1358
- Canada_Yukon = "Canada/Yukon"
1359
- Chile_Continental = "Chile/Continental"
1360
- Chile_EasterIsland = "Chile/EasterIsland"
1361
- Cuba = "Cuba"
1362
- EET = "EET"
1363
- EST = "EST"
1364
- EST5EDT = "EST5EDT"
1365
- Egypt = "Egypt"
1366
- Eire = "Eire"
1367
- Etc_GMT = "Etc/GMT"
1368
- Etc_GMT_0 = "Etc/GMT+0"
1369
- Etc_GMT_1 = "Etc/GMT+1"
1370
- Etc_GMT_10 = "Etc/GMT+10"
1371
- Etc_GMT_11 = "Etc/GMT+11"
1372
- Etc_GMT_12 = "Etc/GMT+12"
1373
- Etc_GMT_2 = "Etc/GMT+2"
1374
- Etc_GMT_3 = "Etc/GMT+3"
1375
- Etc_GMT_4 = "Etc/GMT+4"
1376
- Etc_GMT_5 = "Etc/GMT+5"
1377
- Etc_GMT_6 = "Etc/GMT+6"
1378
- Etc_GMT_7 = "Etc/GMT+7"
1379
- Etc_GMT_8 = "Etc/GMT+8"
1380
- Etc_GMT_9 = "Etc/GMT+9"
1381
- Etc_GMT_0_1 = "Etc/GMT-0"
1382
- Etc_GMT_1_1 = "Etc/GMT-1"
1383
- Etc_GMT_10_1 = "Etc/GMT-10"
1384
- Etc_GMT_11_1 = "Etc/GMT-11"
1385
- Etc_GMT_12_1 = "Etc/GMT-12"
1386
- Etc_GMT_13 = "Etc/GMT-13"
1387
- Etc_GMT_14 = "Etc/GMT-14"
1388
- Etc_GMT_2_1 = "Etc/GMT-2"
1389
- Etc_GMT_3_1 = "Etc/GMT-3"
1390
- Etc_GMT_4_1 = "Etc/GMT-4"
1391
- Etc_GMT_5_1 = "Etc/GMT-5"
1392
- Etc_GMT_6_1 = "Etc/GMT-6"
1393
- Etc_GMT_7_1 = "Etc/GMT-7"
1394
- Etc_GMT_8_1 = "Etc/GMT-8"
1395
- Etc_GMT_9_1 = "Etc/GMT-9"
1396
- Etc_GMT0 = "Etc/GMT0"
1397
- Etc_Greenwich = "Etc/Greenwich"
1398
- Etc_UCT = "Etc/UCT"
1399
- Etc_UTC = "Etc/UTC"
1400
- Etc_Universal = "Etc/Universal"
1401
- Etc_Zulu = "Etc/Zulu"
1402
- Europe_Amsterdam = "Europe/Amsterdam"
1403
- Europe_Andorra = "Europe/Andorra"
1404
- Europe_Astrakhan = "Europe/Astrakhan"
1405
- Europe_Athens = "Europe/Athens"
1406
- Europe_Belfast = "Europe/Belfast"
1407
- Europe_Belgrade = "Europe/Belgrade"
1408
- Europe_Berlin = "Europe/Berlin"
1409
- Europe_Bratislava = "Europe/Bratislava"
1410
- Europe_Brussels = "Europe/Brussels"
1411
- Europe_Bucharest = "Europe/Bucharest"
1412
- Europe_Budapest = "Europe/Budapest"
1413
- Europe_Busingen = "Europe/Busingen"
1414
- Europe_Chisinau = "Europe/Chisinau"
1415
- Europe_Copenhagen = "Europe/Copenhagen"
1416
- Europe_Dublin = "Europe/Dublin"
1417
- Europe_Gibraltar = "Europe/Gibraltar"
1418
- Europe_Guernsey = "Europe/Guernsey"
1419
- Europe_Helsinki = "Europe/Helsinki"
1420
- Europe_Isle_of_Man = "Europe/Isle_of_Man"
1421
- Europe_Istanbul = "Europe/Istanbul"
1422
- Europe_Jersey = "Europe/Jersey"
1423
- Europe_Kaliningrad = "Europe/Kaliningrad"
1424
- Europe_Kiev = "Europe/Kiev"
1425
- Europe_Kirov = "Europe/Kirov"
1426
- Europe_Kyiv = "Europe/Kyiv"
1427
- Europe_Lisbon = "Europe/Lisbon"
1428
- Europe_Ljubljana = "Europe/Ljubljana"
1429
- Europe_London = "Europe/London"
1430
- Europe_Luxembourg = "Europe/Luxembourg"
1431
- Europe_Madrid = "Europe/Madrid"
1432
- Europe_Malta = "Europe/Malta"
1433
- Europe_Mariehamn = "Europe/Mariehamn"
1434
- Europe_Minsk = "Europe/Minsk"
1435
- Europe_Monaco = "Europe/Monaco"
1436
- Europe_Moscow = "Europe/Moscow"
1437
- Europe_Nicosia = "Europe/Nicosia"
1438
- Europe_Oslo = "Europe/Oslo"
1439
- Europe_Paris = "Europe/Paris"
1440
- Europe_Podgorica = "Europe/Podgorica"
1441
- Europe_Prague = "Europe/Prague"
1442
- Europe_Riga = "Europe/Riga"
1443
- Europe_Rome = "Europe/Rome"
1444
- Europe_Samara = "Europe/Samara"
1445
- Europe_San_Marino = "Europe/San_Marino"
1446
- Europe_Sarajevo = "Europe/Sarajevo"
1447
- Europe_Saratov = "Europe/Saratov"
1448
- Europe_Simferopol = "Europe/Simferopol"
1449
- Europe_Skopje = "Europe/Skopje"
1450
- Europe_Sofia = "Europe/Sofia"
1451
- Europe_Stockholm = "Europe/Stockholm"
1452
- Europe_Tallinn = "Europe/Tallinn"
1453
- Europe_Tirane = "Europe/Tirane"
1454
- Europe_Tiraspol = "Europe/Tiraspol"
1455
- Europe_Ulyanovsk = "Europe/Ulyanovsk"
1456
- Europe_Uzhgorod = "Europe/Uzhgorod"
1457
- Europe_Vaduz = "Europe/Vaduz"
1458
- Europe_Vatican = "Europe/Vatican"
1459
- Europe_Vienna = "Europe/Vienna"
1460
- Europe_Vilnius = "Europe/Vilnius"
1461
- Europe_Volgograd = "Europe/Volgograd"
1462
- Europe_Warsaw = "Europe/Warsaw"
1463
- Europe_Zagreb = "Europe/Zagreb"
1464
- Europe_Zaporozhye = "Europe/Zaporozhye"
1465
- Europe_Zurich = "Europe/Zurich"
1466
- GB = "GB"
1467
- GB_Eire = "GB-Eire"
1468
- GMT = "GMT"
1469
- GMT_0 = "GMT+0"
1470
- GMT_0_1 = "GMT-0"
1471
- GMT0 = "GMT0"
1472
- Greenwich = "Greenwich"
1473
- HST = "HST"
1474
- Hongkong = "Hongkong"
1475
- Iceland = "Iceland"
1476
- Indian_Antananarivo = "Indian/Antananarivo"
1477
- Indian_Chagos = "Indian/Chagos"
1478
- Indian_Christmas = "Indian/Christmas"
1479
- Indian_Cocos = "Indian/Cocos"
1480
- Indian_Comoro = "Indian/Comoro"
1481
- Indian_Kerguelen = "Indian/Kerguelen"
1482
- Indian_Mahe = "Indian/Mahe"
1483
- Indian_Maldives = "Indian/Maldives"
1484
- Indian_Mauritius = "Indian/Mauritius"
1485
- Indian_Mayotte = "Indian/Mayotte"
1486
- Indian_Reunion = "Indian/Reunion"
1487
- Iran = "Iran"
1488
- Israel = "Israel"
1489
- Jamaica = "Jamaica"
1490
- Japan = "Japan"
1491
- Kwajalein = "Kwajalein"
1492
- Libya = "Libya"
1493
- MET = "MET"
1494
- MST = "MST"
1495
- MST7MDT = "MST7MDT"
1496
- Mexico_BajaNorte = "Mexico/BajaNorte"
1497
- Mexico_BajaSur = "Mexico/BajaSur"
1498
- Mexico_General = "Mexico/General"
1499
- NZ = "NZ"
1500
- NZ_CHAT = "NZ-CHAT"
1501
- Navajo = "Navajo"
1502
- PRC = "PRC"
1503
- PST8PDT = "PST8PDT"
1504
- Pacific_Apia = "Pacific/Apia"
1505
- Pacific_Auckland = "Pacific/Auckland"
1506
- Pacific_Bougainville = "Pacific/Bougainville"
1507
- Pacific_Chatham = "Pacific/Chatham"
1508
- Pacific_Chuuk = "Pacific/Chuuk"
1509
- Pacific_Easter = "Pacific/Easter"
1510
- Pacific_Efate = "Pacific/Efate"
1511
- Pacific_Enderbury = "Pacific/Enderbury"
1512
- Pacific_Fakaofo = "Pacific/Fakaofo"
1513
- Pacific_Fiji = "Pacific/Fiji"
1514
- Pacific_Funafuti = "Pacific/Funafuti"
1515
- Pacific_Galapagos = "Pacific/Galapagos"
1516
- Pacific_Gambier = "Pacific/Gambier"
1517
- Pacific_Guadalcanal = "Pacific/Guadalcanal"
1518
- Pacific_Guam = "Pacific/Guam"
1519
- Pacific_Honolulu = "Pacific/Honolulu"
1520
- Pacific_Johnston = "Pacific/Johnston"
1521
- Pacific_Kanton = "Pacific/Kanton"
1522
- Pacific_Kiritimati = "Pacific/Kiritimati"
1523
- Pacific_Kosrae = "Pacific/Kosrae"
1524
- Pacific_Kwajalein = "Pacific/Kwajalein"
1525
- Pacific_Majuro = "Pacific/Majuro"
1526
- Pacific_Marquesas = "Pacific/Marquesas"
1527
- Pacific_Midway = "Pacific/Midway"
1528
- Pacific_Nauru = "Pacific/Nauru"
1529
- Pacific_Niue = "Pacific/Niue"
1530
- Pacific_Norfolk = "Pacific/Norfolk"
1531
- Pacific_Noumea = "Pacific/Noumea"
1532
- Pacific_Pago_Pago = "Pacific/Pago_Pago"
1533
- Pacific_Palau = "Pacific/Palau"
1534
- Pacific_Pitcairn = "Pacific/Pitcairn"
1535
- Pacific_Pohnpei = "Pacific/Pohnpei"
1536
- Pacific_Ponape = "Pacific/Ponape"
1537
- Pacific_Port_Moresby = "Pacific/Port_Moresby"
1538
- Pacific_Rarotonga = "Pacific/Rarotonga"
1539
- Pacific_Saipan = "Pacific/Saipan"
1540
- Pacific_Samoa = "Pacific/Samoa"
1541
- Pacific_Tahiti = "Pacific/Tahiti"
1542
- Pacific_Tarawa = "Pacific/Tarawa"
1543
- Pacific_Tongatapu = "Pacific/Tongatapu"
1544
- Pacific_Truk = "Pacific/Truk"
1545
- Pacific_Wake = "Pacific/Wake"
1546
- Pacific_Wallis = "Pacific/Wallis"
1547
- Pacific_Yap = "Pacific/Yap"
1548
- Poland = "Poland"
1549
- Portugal = "Portugal"
1550
- ROC = "ROC"
1551
- ROK = "ROK"
1552
- Singapore = "Singapore"
1553
- Turkey = "Turkey"
1554
- UCT = "UCT"
1555
- US_Alaska = "US/Alaska"
1556
- US_Aleutian = "US/Aleutian"
1557
- US_Arizona = "US/Arizona"
1558
- US_Central = "US/Central"
1559
- US_East_Indiana = "US/East-Indiana"
1560
- US_Eastern = "US/Eastern"
1561
- US_Hawaii = "US/Hawaii"
1562
- US_Indiana_Starke = "US/Indiana-Starke"
1563
- US_Michigan = "US/Michigan"
1564
- US_Mountain = "US/Mountain"
1565
- US_Pacific = "US/Pacific"
1566
- US_Samoa = "US/Samoa"
1567
- UTC = "UTC"
1568
- Universal = "Universal"
1569
- W_SU = "W-SU"
1570
- WET = "WET"
1571
- Zulu = "Zulu"
1572
-
1573
-
1574
1212
  AccountName = str
1575
1213
 
1576
1214
 
@@ -1578,7 +1216,7 @@ class OptionLike(Struct, omit_defaults=True):
1578
1216
  strike: Decimal
1579
1217
  expiration: Optional[datetime] = None
1580
1218
 
1581
- # below is a constructor that takes all field titles as arguments for convenience
1219
+ # Constructor that takes all field titles as arguments for convenience
1582
1220
  @classmethod
1583
1221
  def new(
1584
1222
  cls,
@@ -1597,7 +1235,7 @@ class OptionLike(Struct, omit_defaults=True):
1597
1235
  class EventContractSeriesInstance2(Struct, omit_defaults=True):
1598
1236
  OptionLike: OptionLike
1599
1237
 
1600
- # below is a constructor that takes all field titles as arguments for convenience
1238
+ # Constructor that takes all field titles as arguments for convenience
1601
1239
  @classmethod
1602
1240
  def new(
1603
1241
  cls,
@@ -1611,6 +1249,33 @@ class EventContractSeriesInstance2(Struct, omit_defaults=True):
1611
1249
  return f"EventContractSeriesInstance2(OptionLike={self.OptionLike})"
1612
1250
 
1613
1251
 
1252
+ class OptionsSeriesInstance(Struct, omit_defaults=True):
1253
+ """
1254
+ A specific option from a series.
1255
+ """
1256
+
1257
+ expiration: datetime
1258
+ put_or_call: PutOrCall
1259
+ strike: Decimal
1260
+
1261
+ # Constructor that takes all field titles as arguments for convenience
1262
+ @classmethod
1263
+ def new(
1264
+ cls,
1265
+ expiration: datetime,
1266
+ put_or_call: PutOrCall,
1267
+ strike: Decimal,
1268
+ ):
1269
+ return cls(
1270
+ expiration,
1271
+ put_or_call,
1272
+ strike,
1273
+ )
1274
+
1275
+ def __str__(self) -> str:
1276
+ return f"OptionsSeriesInstance(expiration={self.expiration},put_or_call={self.put_or_call},strike={self.strike})"
1277
+
1278
+
1614
1279
  class SpreadLeg(Struct, omit_defaults=True):
1615
1280
  product: str
1616
1281
  quantity: Annotated[
@@ -1623,7 +1288,7 @@ class SpreadLeg(Struct, omit_defaults=True):
1623
1288
  Some spreads have different ratios for their legs, like buy 1 A, sell 2 B, buy 1 C; We would represent that with quantities in the legs: 1, -2, 1
1624
1289
  """
1625
1290
 
1626
- # below is a constructor that takes all field titles as arguments for convenience
1291
+ # Constructor that takes all field titles as arguments for convenience
1627
1292
  @classmethod
1628
1293
  def new(
1629
1294
  cls,
@@ -1642,7 +1307,7 @@ class SpreadLeg(Struct, omit_defaults=True):
1642
1307
  class Outcome(Struct, omit_defaults=True):
1643
1308
  name: str
1644
1309
 
1645
- # below is a constructor that takes all field titles as arguments for convenience
1310
+ # Constructor that takes all field titles as arguments for convenience
1646
1311
  @classmethod
1647
1312
  def new(
1648
1313
  cls,
@@ -1656,11 +1321,6 @@ class Outcome(Struct, omit_defaults=True):
1656
1321
  return f"Outcome(name={self.name})"
1657
1322
 
1658
1323
 
1659
- class PutOrCall(str, Enum):
1660
- P = "P"
1661
- C = "C"
1662
-
1663
-
1664
1324
  class AberrantFill(Struct, omit_defaults=True):
1665
1325
  """
1666
1326
  Fills which we received but couldn't parse fully, return details best effort
@@ -1669,9 +1329,9 @@ class AberrantFill(Struct, omit_defaults=True):
1669
1329
  id: Annotated[str, Meta(title="fill_id")]
1670
1330
  x: Annotated[str, Meta(title="execution_venue")]
1671
1331
  a: Optional[Annotated[Optional[str], Meta(title="account")]] = None
1672
- atn: Optional[Annotated[Optional[int], Meta(ge=0, title="recv_time_ns")]] = None
1332
+ atn: Optional[Annotated[Optional[int], Meta(title="recv_time_ns")]] = None
1673
1333
  ats: Optional[Annotated[Optional[int], Meta(title="recv_time")]] = None
1674
- d: Optional[Annotated[Optional[OrderDir], Meta(title="direction")]] = None
1334
+ d: Optional[Annotated[Optional[OrderDir], Meta(title="dir")]] = None
1675
1335
  f: Optional[Annotated[Optional[Decimal], Meta(title="fee")]] = None
1676
1336
  fu: Optional[Annotated[Optional[str], Meta(title="fee_currency")]] = None
1677
1337
  k: Optional[Annotated[Optional[FillKind], Meta(title="fill_kind")]] = None
@@ -1679,12 +1339,12 @@ class AberrantFill(Struct, omit_defaults=True):
1679
1339
  p: Optional[Annotated[Optional[Decimal], Meta(title="price")]] = None
1680
1340
  q: Optional[Annotated[Optional[Decimal], Meta(title="quantity")]] = None
1681
1341
  s: Optional[Annotated[Optional[str], Meta(title="symbol")]] = None
1682
- tn: Optional[Annotated[Optional[int], Meta(ge=0, title="trade_time_ns")]] = None
1342
+ tn: Optional[Annotated[Optional[int], Meta(title="trade_time_ns")]] = None
1683
1343
  ts: Optional[Annotated[Optional[int], Meta(title="trade_time")]] = None
1684
1344
  u: Optional[Annotated[Optional[UserId], Meta(title="trader")]] = None
1685
1345
  xid: Optional[Annotated[Optional[str], Meta(title="exchange_fill_id")]] = None
1686
1346
 
1687
- # below is a constructor that takes all field titles as arguments for convenience
1347
+ # Constructor that takes all field titles as arguments for convenience
1688
1348
  @classmethod
1689
1349
  def new(
1690
1350
  cls,
@@ -1693,7 +1353,7 @@ class AberrantFill(Struct, omit_defaults=True):
1693
1353
  account: Optional[str] = None,
1694
1354
  recv_time_ns: Optional[int] = None,
1695
1355
  recv_time: Optional[int] = None,
1696
- direction: Optional[OrderDir] = None,
1356
+ dir: Optional[OrderDir] = None,
1697
1357
  fee: Optional[Decimal] = None,
1698
1358
  fee_currency: Optional[str] = None,
1699
1359
  fill_kind: Optional[FillKind] = None,
@@ -1712,7 +1372,7 @@ class AberrantFill(Struct, omit_defaults=True):
1712
1372
  account,
1713
1373
  recv_time_ns,
1714
1374
  recv_time,
1715
- direction,
1375
+ dir,
1716
1376
  fee,
1717
1377
  fee_currency,
1718
1378
  fill_kind,
@@ -1727,7 +1387,7 @@ class AberrantFill(Struct, omit_defaults=True):
1727
1387
  )
1728
1388
 
1729
1389
  def __str__(self) -> str:
1730
- return f"AberrantFill(fill_id={self.id},execution_venue={self.x},account={self.a},recv_time_ns={self.atn},recv_time={self.ats},direction={self.d},fee={self.f},fee_currency={self.fu},fill_kind={self.k},order_id={self.oid},price={self.p},quantity={self.q},symbol={self.s},trade_time_ns={self.tn},trade_time={self.ts},trader={self.u},exchange_fill_id={self.xid})"
1390
+ return f"AberrantFill(fill_id={self.id},execution_venue={self.x},account={self.a},recv_time_ns={self.atn},recv_time={self.ats},dir={self.d},fee={self.f},fee_currency={self.fu},fill_kind={self.k},order_id={self.oid},price={self.p},quantity={self.q},symbol={self.s},trade_time_ns={self.tn},trade_time={self.ts},trader={self.u},exchange_fill_id={self.xid})"
1731
1391
 
1732
1392
  @property
1733
1393
  def fill_id(self) -> str:
@@ -1770,11 +1430,11 @@ class AberrantFill(Struct, omit_defaults=True):
1770
1430
  self.ats = value
1771
1431
 
1772
1432
  @property
1773
- def direction(self) -> Optional[OrderDir]:
1433
+ def dir(self) -> Optional[OrderDir]:
1774
1434
  return self.d
1775
1435
 
1776
- @direction.setter
1777
- def direction(self, value: Optional[OrderDir]) -> None:
1436
+ @dir.setter
1437
+ def dir(self, value: Optional[OrderDir]) -> None:
1778
1438
  self.d = value
1779
1439
 
1780
1440
  @property
@@ -1871,7 +1531,7 @@ class CancelReject(Struct, omit_defaults=True):
1871
1531
  xid: str
1872
1532
  rm: Optional[str] = None
1873
1533
 
1874
- # below is a constructor that takes all field titles as arguments for convenience
1534
+ # Constructor that takes all field titles as arguments for convenience
1875
1535
  @classmethod
1876
1536
  def new(
1877
1537
  cls,
@@ -1893,7 +1553,7 @@ class CptyLoginRequest(Struct, omit_defaults=True):
1893
1553
  account: str
1894
1554
  trader: UserId
1895
1555
 
1896
- # below is a constructor that takes all field titles as arguments for convenience
1556
+ # Constructor that takes all field titles as arguments for convenience
1897
1557
  @classmethod
1898
1558
  def new(
1899
1559
  cls,
@@ -1934,7 +1594,7 @@ class ExecutionInfo(Struct, omit_defaults=True):
1934
1594
  initial_margin: Optional[Decimal] = None
1935
1595
  maintenance_margin: Optional[Decimal] = None
1936
1596
 
1937
- # below is a constructor that takes all field titles as arguments for convenience
1597
+ # Constructor that takes all field titles as arguments for convenience
1938
1598
  @classmethod
1939
1599
  def new(
1940
1600
  cls,
@@ -1965,7 +1625,7 @@ class ExecutionInfo(Struct, omit_defaults=True):
1965
1625
 
1966
1626
 
1967
1627
  class Fill(Struct, omit_defaults=True):
1968
- d: Annotated[OrderDir, Meta(title="direction")]
1628
+ d: Annotated[OrderDir, Meta(title="dir")]
1969
1629
  id: Annotated[str, Meta(title="fill_id")]
1970
1630
  k: Annotated[FillKind, Meta(title="fill_kind")]
1971
1631
  p: Annotated[Decimal, Meta(title="price")]
@@ -1982,7 +1642,7 @@ class Fill(Struct, omit_defaults=True):
1982
1642
  x: Annotated[str, Meta(title="execution_venue")]
1983
1643
  a: Optional[Annotated[Optional[str], Meta(title="account")]] = None
1984
1644
  agg: Optional[Annotated[int, Meta(title="is_taker")]] = None
1985
- atn: Optional[Annotated[Optional[int], Meta(ge=0, title="recv_time_ns")]] = None
1645
+ atn: Optional[Annotated[Optional[int], Meta(title="recv_time_ns")]] = None
1986
1646
  ats: Optional[
1987
1647
  Annotated[
1988
1648
  Optional[int],
@@ -2012,11 +1672,11 @@ class Fill(Struct, omit_defaults=True):
2012
1672
  u: Optional[Annotated[Optional[UserId], Meta(title="trader")]] = None
2013
1673
  xid: Optional[Annotated[Optional[str], Meta(title="exchange_fill_id")]] = None
2014
1674
 
2015
- # below is a constructor that takes all field titles as arguments for convenience
1675
+ # Constructor that takes all field titles as arguments for convenience
2016
1676
  @classmethod
2017
1677
  def new(
2018
1678
  cls,
2019
- direction: OrderDir,
1679
+ dir: OrderDir,
2020
1680
  fill_id: str,
2021
1681
  fill_kind: FillKind,
2022
1682
  price: Decimal,
@@ -2036,7 +1696,7 @@ class Fill(Struct, omit_defaults=True):
2036
1696
  exchange_fill_id: Optional[str] = None,
2037
1697
  ):
2038
1698
  return cls(
2039
- direction,
1699
+ dir,
2040
1700
  fill_id,
2041
1701
  fill_kind,
2042
1702
  price,
@@ -2057,14 +1717,14 @@ class Fill(Struct, omit_defaults=True):
2057
1717
  )
2058
1718
 
2059
1719
  def __str__(self) -> str:
2060
- return f"Fill(direction={self.d},fill_id={self.id},fill_kind={self.k},price={self.p},quantity={self.q},symbol={self.s},trade_time_ns={self.tn},trade_time={self.ts},execution_venue={self.x},account={self.a},is_taker={self.agg},recv_time_ns={self.atn},recv_time={self.ats},fee={self.f},fee_currency={self.fu},order_id={self.oid},trader={self.u},exchange_fill_id={self.xid})"
1720
+ return f"Fill(dir={self.d},fill_id={self.id},fill_kind={self.k},price={self.p},quantity={self.q},symbol={self.s},trade_time_ns={self.tn},trade_time={self.ts},execution_venue={self.x},account={self.a},is_taker={self.agg},recv_time_ns={self.atn},recv_time={self.ats},fee={self.f},fee_currency={self.fu},order_id={self.oid},trader={self.u},exchange_fill_id={self.xid})"
2061
1721
 
2062
1722
  @property
2063
- def direction(self) -> OrderDir:
1723
+ def dir(self) -> OrderDir:
2064
1724
  return self.d
2065
1725
 
2066
- @direction.setter
2067
- def direction(self, value: OrderDir) -> None:
1726
+ @dir.setter
1727
+ def dir(self, value: OrderDir) -> None:
2068
1728
  self.d = value
2069
1729
 
2070
1730
  @property
@@ -2204,11 +1864,90 @@ class Fill(Struct, omit_defaults=True):
2204
1864
  self.xid = value
2205
1865
 
2206
1866
 
1867
+ class OptionsContract(Struct, omit_defaults=True):
1868
+ expiration: date
1869
+ put_or_call: PutOrCall
1870
+ strike: Decimal
1871
+ ticker: Ticker
1872
+ underlying: str
1873
+ in_the_money: Optional[bool] = None
1874
+
1875
+ # Constructor that takes all field titles as arguments for convenience
1876
+ @classmethod
1877
+ def new(
1878
+ cls,
1879
+ expiration: date,
1880
+ put_or_call: PutOrCall,
1881
+ strike: Decimal,
1882
+ ticker: Ticker,
1883
+ underlying: str,
1884
+ in_the_money: Optional[bool] = None,
1885
+ ):
1886
+ return cls(
1887
+ expiration,
1888
+ put_or_call,
1889
+ strike,
1890
+ ticker,
1891
+ underlying,
1892
+ in_the_money,
1893
+ )
1894
+
1895
+ def __str__(self) -> str:
1896
+ return f"OptionsContract(expiration={self.expiration},put_or_call={self.put_or_call},strike={self.strike},ticker={self.ticker},underlying={self.underlying},in_the_money={self.in_the_money})"
1897
+
1898
+
1899
+ class OptionsGreeks(Struct, omit_defaults=True):
1900
+ delta: Decimal
1901
+ expiration: date
1902
+ gamma: Decimal
1903
+ implied_volatility: Decimal
1904
+ put_or_call: PutOrCall
1905
+ rho: Decimal
1906
+ strike: Decimal
1907
+ symbol: str
1908
+ theta: Decimal
1909
+ underlying: str
1910
+ vega: Decimal
1911
+
1912
+ # Constructor that takes all field titles as arguments for convenience
1913
+ @classmethod
1914
+ def new(
1915
+ cls,
1916
+ delta: Decimal,
1917
+ expiration: date,
1918
+ gamma: Decimal,
1919
+ implied_volatility: Decimal,
1920
+ put_or_call: PutOrCall,
1921
+ rho: Decimal,
1922
+ strike: Decimal,
1923
+ symbol: str,
1924
+ theta: Decimal,
1925
+ underlying: str,
1926
+ vega: Decimal,
1927
+ ):
1928
+ return cls(
1929
+ delta,
1930
+ expiration,
1931
+ gamma,
1932
+ implied_volatility,
1933
+ put_or_call,
1934
+ rho,
1935
+ strike,
1936
+ symbol,
1937
+ theta,
1938
+ underlying,
1939
+ vega,
1940
+ )
1941
+
1942
+ def __str__(self) -> str:
1943
+ return f"OptionsGreeks(delta={self.delta},expiration={self.expiration},gamma={self.gamma},implied_volatility={self.implied_volatility},put_or_call={self.put_or_call},rho={self.rho},strike={self.strike},symbol={self.symbol},theta={self.theta},underlying={self.underlying},vega={self.vega})"
1944
+
1945
+
2207
1946
  class OptionsSeriesInfo(Struct, omit_defaults=True):
2208
1947
  derivative_kind: DerivativeKind
2209
1948
  exercise_type: OptionsExerciseType
2210
1949
  expiration_time_of_day: time
2211
- expiration_time_zone: TimeZone
1950
+ expiration_time_zone: str
2212
1951
  is_cash_settled: bool
2213
1952
  multiplier: Decimal
2214
1953
  options_series: str
@@ -2217,14 +1956,14 @@ class OptionsSeriesInfo(Struct, omit_defaults=True):
2217
1956
  underlying: str
2218
1957
  venue_discriminant: Optional[str] = None
2219
1958
 
2220
- # below is a constructor that takes all field titles as arguments for convenience
1959
+ # Constructor that takes all field titles as arguments for convenience
2221
1960
  @classmethod
2222
1961
  def new(
2223
1962
  cls,
2224
1963
  derivative_kind: DerivativeKind,
2225
1964
  exercise_type: OptionsExerciseType,
2226
1965
  expiration_time_of_day: time,
2227
- expiration_time_zone: TimeZone,
1966
+ expiration_time_zone: str,
2228
1967
  is_cash_settled: bool,
2229
1968
  multiplier: Decimal,
2230
1969
  options_series: str,
@@ -2255,7 +1994,7 @@ class OrderAck(Struct, omit_defaults=True):
2255
1994
  id: Annotated[OrderId, Meta(title="order_id")]
2256
1995
  eid: Optional[Annotated[Optional[str], Meta(title="exchange_order_id")]] = None
2257
1996
 
2258
- # below is a constructor that takes all field titles as arguments for convenience
1997
+ # Constructor that takes all field titles as arguments for convenience
2259
1998
  @classmethod
2260
1999
  def new(
2261
2000
  cls,
@@ -2291,7 +2030,7 @@ class OrderCanceled(Struct, omit_defaults=True):
2291
2030
  id: OrderId
2292
2031
  xid: Optional[str] = None
2293
2032
 
2294
- # below is a constructor that takes all field titles as arguments for convenience
2033
+ # Constructor that takes all field titles as arguments for convenience
2295
2034
  @classmethod
2296
2035
  def new(
2297
2036
  cls,
@@ -2311,7 +2050,7 @@ class OrderCanceling(Struct, omit_defaults=True):
2311
2050
  id: OrderId
2312
2051
  xid: Optional[str] = None
2313
2052
 
2314
- # below is a constructor that takes all field titles as arguments for convenience
2053
+ # Constructor that takes all field titles as arguments for convenience
2315
2054
  @classmethod
2316
2055
  def new(
2317
2056
  cls,
@@ -2329,25 +2068,41 @@ class OrderCanceling(Struct, omit_defaults=True):
2329
2068
 
2330
2069
  class OrderReject(Struct, omit_defaults=True):
2331
2070
  id: OrderId
2332
- r: OrderRejectReason
2333
- rm: Optional[str] = None
2071
+ r: Annotated[OrderRejectReason, Meta(title="reject_reason")]
2072
+ rm: Optional[Annotated[Optional[str], Meta(title="message")]] = None
2334
2073
 
2335
- # below is a constructor that takes all field titles as arguments for convenience
2074
+ # Constructor that takes all field titles as arguments for convenience
2336
2075
  @classmethod
2337
2076
  def new(
2338
2077
  cls,
2339
2078
  id: OrderId,
2340
- r: OrderRejectReason,
2341
- rm: Optional[str] = None,
2079
+ reject_reason: OrderRejectReason,
2080
+ message: Optional[str] = None,
2342
2081
  ):
2343
2082
  return cls(
2344
2083
  id,
2345
- r,
2346
- rm,
2084
+ reject_reason,
2085
+ message,
2347
2086
  )
2348
2087
 
2349
2088
  def __str__(self) -> str:
2350
- return f"OrderReject(id={self.id},r={self.r},rm={self.rm})"
2089
+ return f"OrderReject(id={self.id},reject_reason={self.r},message={self.rm})"
2090
+
2091
+ @property
2092
+ def reject_reason(self) -> OrderRejectReason:
2093
+ return self.r
2094
+
2095
+ @reject_reason.setter
2096
+ def reject_reason(self, value: OrderRejectReason) -> None:
2097
+ self.r = value
2098
+
2099
+ @property
2100
+ def message(self) -> Optional[str]:
2101
+ return self.rm
2102
+
2103
+ @message.setter
2104
+ def message(self, value: Optional[str]) -> None:
2105
+ self.rm = value
2351
2106
 
2352
2107
 
2353
2108
  class SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString1(
@@ -2355,7 +2110,7 @@ class SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString1(
2355
2110
  ):
2356
2111
  snapshot: Dict[str, SnapshotOrUpdateForStringAndString]
2357
2112
 
2358
- # below is a constructor that takes all field titles as arguments for convenience
2113
+ # Constructor that takes all field titles as arguments for convenience
2359
2114
  @classmethod
2360
2115
  def new(
2361
2116
  cls,
@@ -2377,7 +2132,7 @@ class SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString2(
2377
2132
  ):
2378
2133
  updates: List[Update]
2379
2134
 
2380
- # below is a constructor that takes all field titles as arguments for convenience
2135
+ # Constructor that takes all field titles as arguments for convenience
2381
2136
  @classmethod
2382
2137
  def new(
2383
2138
  cls,
@@ -2400,7 +2155,7 @@ SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString = Union[
2400
2155
  class SnapshotOrUpdateForStringAndOptionsSeriesInfo1(Struct, omit_defaults=True):
2401
2156
  snapshot: Dict[str, OptionsSeriesInfo]
2402
2157
 
2403
- # below is a constructor that takes all field titles as arguments for convenience
2158
+ # Constructor that takes all field titles as arguments for convenience
2404
2159
  @classmethod
2405
2160
  def new(
2406
2161
  cls,
@@ -2422,7 +2177,7 @@ Update1 = List[Union[str, Optional[OptionsSeriesInfo]]]
2422
2177
  class SnapshotOrUpdateForStringAndOptionsSeriesInfo2(Struct, omit_defaults=True):
2423
2178
  updates: List[Update1]
2424
2179
 
2425
- # below is a constructor that takes all field titles as arguments for convenience
2180
+ # Constructor that takes all field titles as arguments for convenience
2426
2181
  @classmethod
2427
2182
  def new(
2428
2183
  cls,
@@ -2442,49 +2197,58 @@ SnapshotOrUpdateForStringAndOptionsSeriesInfo = Union[
2442
2197
  ]
2443
2198
 
2444
2199
 
2445
- class TwapParams(Struct, omit_defaults=True):
2446
- dir: OrderDir
2447
- end_time: datetime
2448
- execution_venue: str
2449
- interval: HumanDuration
2450
- quantity: Decimal
2451
- reject_lockout: HumanDuration
2452
- symbol: str
2453
- take_through_frac: Optional[Decimal] = None
2200
+ class SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo1(
2201
+ Struct
2202
+ ):
2203
+ snapshot: Dict[str, SnapshotOrUpdateForStringAndProductCatalogInfo]
2454
2204
 
2455
- # below is a constructor that takes all field titles as arguments for convenience
2205
+ # Constructor that takes all field titles as arguments for convenience
2456
2206
  @classmethod
2457
2207
  def new(
2458
2208
  cls,
2459
- dir: OrderDir,
2460
- end_time: datetime,
2461
- execution_venue: str,
2462
- interval: HumanDuration,
2463
- quantity: Decimal,
2464
- reject_lockout: HumanDuration,
2465
- symbol: str,
2466
- take_through_frac: Optional[Decimal] = None,
2209
+ snapshot: Dict[str, SnapshotOrUpdateForStringAndProductCatalogInfo],
2467
2210
  ):
2468
2211
  return cls(
2469
- dir,
2470
- end_time,
2471
- execution_venue,
2472
- interval,
2473
- quantity,
2474
- reject_lockout,
2475
- symbol,
2476
- take_through_frac,
2212
+ snapshot,
2213
+ )
2214
+
2215
+ def __str__(self) -> str:
2216
+ return f"SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo1(snapshot={self.snapshot})"
2217
+
2218
+
2219
+ Update4 = List[Union[str, Optional[SnapshotOrUpdateForStringAndProductCatalogInfo]]]
2220
+
2221
+
2222
+ class SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo2(
2223
+ Struct
2224
+ ):
2225
+ updates: List[Update4]
2226
+
2227
+ # Constructor that takes all field titles as arguments for convenience
2228
+ @classmethod
2229
+ def new(
2230
+ cls,
2231
+ updates: List[Update4],
2232
+ ):
2233
+ return cls(
2234
+ updates,
2477
2235
  )
2478
2236
 
2479
2237
  def __str__(self) -> str:
2480
- return f"TwapParams(dir={self.dir},end_time={self.end_time},execution_venue={self.execution_venue},interval={self.interval},quantity={self.quantity},reject_lockout={self.reject_lockout},symbol={self.symbol},take_through_frac={self.take_through_frac})"
2238
+ return f"SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo2(updates={self.updates})"
2239
+
2240
+
2241
+ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo = Union[
2242
+ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo1,
2243
+ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo2,
2244
+ ]
2481
2245
 
2482
2246
 
2483
2247
  class Account(Struct, omit_defaults=True):
2484
2248
  id: str
2485
2249
  name: AccountName
2486
2250
 
2487
- # below is a constructor that takes all field titles as arguments for convenience
2251
+ # Constructor that takes all field titles as arguments for convenience
2488
2252
  @classmethod
2489
2253
  def new(
2490
2254
  cls,
@@ -2504,7 +2268,7 @@ class FutureSpread(Struct, omit_defaults=True):
2504
2268
  legs: List[SpreadLeg]
2505
2269
  product_type: Literal["FutureSpread"]
2506
2270
 
2507
- # below is a constructor that takes all field titles as arguments for convenience
2271
+ # Constructor that takes all field titles as arguments for convenience
2508
2272
  @classmethod
2509
2273
  def new(
2510
2274
  cls,
@@ -2520,10 +2284,33 @@ class FutureSpread(Struct, omit_defaults=True):
2520
2284
  return f"FutureSpread(legs={self.legs},product_type={self.product_type})"
2521
2285
 
2522
2286
 
2287
+ class Option(Struct, omit_defaults=True):
2288
+ instance: OptionsSeriesInstance
2289
+ product_type: Literal["Option"]
2290
+ series: str
2291
+
2292
+ # Constructor that takes all field titles as arguments for convenience
2293
+ @classmethod
2294
+ def new(
2295
+ cls,
2296
+ instance: OptionsSeriesInstance,
2297
+ product_type: Literal["Option"],
2298
+ series: str,
2299
+ ):
2300
+ return cls(
2301
+ instance,
2302
+ product_type,
2303
+ series,
2304
+ )
2305
+
2306
+ def __str__(self) -> str:
2307
+ return f"Option(instance={self.instance},product_type={self.product_type},series={self.series})"
2308
+
2309
+
2523
2310
  class SnapshotOrUpdateForStringAndExecutionInfo1(Struct, omit_defaults=True):
2524
2311
  snapshot: Dict[str, ExecutionInfo]
2525
2312
 
2526
- # below is a constructor that takes all field titles as arguments for convenience
2313
+ # Constructor that takes all field titles as arguments for convenience
2527
2314
  @classmethod
2528
2315
  def new(
2529
2316
  cls,
@@ -2537,17 +2324,17 @@ class SnapshotOrUpdateForStringAndExecutionInfo1(Struct, omit_defaults=True):
2537
2324
  return f"SnapshotOrUpdateForStringAndExecutionInfo1(snapshot={self.snapshot})"
2538
2325
 
2539
2326
 
2540
- Update4 = List[Union[str, Optional[ExecutionInfo]]]
2327
+ Update5 = List[Union[str, Optional[ExecutionInfo]]]
2541
2328
 
2542
2329
 
2543
2330
  class SnapshotOrUpdateForStringAndExecutionInfo2(Struct, omit_defaults=True):
2544
- updates: List[Update4]
2331
+ updates: List[Update5]
2545
2332
 
2546
- # below is a constructor that takes all field titles as arguments for convenience
2333
+ # Constructor that takes all field titles as arguments for convenience
2547
2334
  @classmethod
2548
2335
  def new(
2549
2336
  cls,
2550
- updates: List[Update4],
2337
+ updates: List[Update5],
2551
2338
  ):
2552
2339
  return cls(
2553
2340
  updates,
@@ -2566,7 +2353,7 @@ SnapshotOrUpdateForStringAndExecutionInfo = Union[
2566
2353
  class Enumerated(Struct, omit_defaults=True):
2567
2354
  outcome: Outcome
2568
2355
 
2569
- # below is a constructor that takes all field titles as arguments for convenience
2356
+ # Constructor that takes all field titles as arguments for convenience
2570
2357
  @classmethod
2571
2358
  def new(
2572
2359
  cls,
@@ -2583,7 +2370,7 @@ class Enumerated(Struct, omit_defaults=True):
2583
2370
  class EventContractSeriesInstance1(Struct, omit_defaults=True):
2584
2371
  Enumerated: Enumerated
2585
2372
 
2586
- # below is a constructor that takes all field titles as arguments for convenience
2373
+ # Constructor that takes all field titles as arguments for convenience
2587
2374
  @classmethod
2588
2375
  def new(
2589
2376
  cls,
@@ -2602,39 +2389,12 @@ EventContractSeriesInstance = Union[
2602
2389
  ]
2603
2390
 
2604
2391
 
2605
- class OptionsSeriesInstance(Struct, omit_defaults=True):
2606
- """
2607
- A specific option from a series.
2608
- """
2609
-
2610
- expiration: datetime
2611
- put_or_call: PutOrCall
2612
- strike: Decimal
2613
-
2614
- # below is a constructor that takes all field titles as arguments for convenience
2615
- @classmethod
2616
- def new(
2617
- cls,
2618
- expiration: datetime,
2619
- put_or_call: PutOrCall,
2620
- strike: Decimal,
2621
- ):
2622
- return cls(
2623
- expiration,
2624
- put_or_call,
2625
- strike,
2626
- )
2627
-
2628
- def __str__(self) -> str:
2629
- return f"OptionsSeriesInstance(expiration={self.expiration},put_or_call={self.put_or_call},strike={self.strike})"
2630
-
2631
-
2632
2392
  class AccountWithPermissions(Struct, omit_defaults=True):
2633
2393
  account: Account
2634
2394
  permissions: AccountPermissions
2635
2395
  trader: UserId
2636
2396
 
2637
- # below is a constructor that takes all field titles as arguments for convenience
2397
+ # Constructor that takes all field titles as arguments for convenience
2638
2398
  @classmethod
2639
2399
  def new(
2640
2400
  cls,
@@ -2657,7 +2417,7 @@ class SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndExecutionInfo1(
2657
2417
  ):
2658
2418
  snapshot: Dict[str, SnapshotOrUpdateForStringAndExecutionInfo]
2659
2419
 
2660
- # below is a constructor that takes all field titles as arguments for convenience
2420
+ # Constructor that takes all field titles as arguments for convenience
2661
2421
  @classmethod
2662
2422
  def new(
2663
2423
  cls,
@@ -2679,7 +2439,7 @@ class SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndExecutionInfo2(
2679
2439
  ):
2680
2440
  updates: List[Update3]
2681
2441
 
2682
- # below is a constructor that takes all field titles as arguments for convenience
2442
+ # Constructor that takes all field titles as arguments for convenience
2683
2443
  @classmethod
2684
2444
  def new(
2685
2445
  cls,
@@ -2699,35 +2459,12 @@ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndExecutionInfo = Union[
2699
2459
  ]
2700
2460
 
2701
2461
 
2702
- class Option(Struct, omit_defaults=True):
2703
- instance: OptionsSeriesInstance
2704
- product_type: Literal["Option"]
2705
- series: str
2706
-
2707
- # below is a constructor that takes all field titles as arguments for convenience
2708
- @classmethod
2709
- def new(
2710
- cls,
2711
- instance: OptionsSeriesInstance,
2712
- product_type: Literal["Option"],
2713
- series: str,
2714
- ):
2715
- return cls(
2716
- instance,
2717
- product_type,
2718
- series,
2719
- )
2720
-
2721
- def __str__(self) -> str:
2722
- return f"Option(instance={self.instance},product_type={self.product_type},series={self.series})"
2723
-
2724
-
2725
2462
  class EventContract(Struct, omit_defaults=True):
2726
2463
  instance: EventContractSeriesInstance
2727
2464
  product_type: Literal["EventContract"]
2728
2465
  series: str
2729
2466
 
2730
- # below is a constructor that takes all field titles as arguments for convenience
2467
+ # Constructor that takes all field titles as arguments for convenience
2731
2468
  @classmethod
2732
2469
  def new(
2733
2470
  cls,
@@ -2765,7 +2502,7 @@ class ProductInfo(Struct, omit_defaults=True):
2765
2502
  price_display_format: Optional[PriceDisplayFormat] = None
2766
2503
  primary_venue: Optional[str] = None
2767
2504
 
2768
- # below is a constructor that takes all field titles as arguments for convenience
2505
+ # Constructor that takes all field titles as arguments for convenience
2769
2506
  @classmethod
2770
2507
  def new(
2771
2508
  cls,
@@ -2786,7 +2523,7 @@ class ProductInfo(Struct, omit_defaults=True):
2786
2523
  class SnapshotOrUpdateForStringAndProductInfo1(Struct, omit_defaults=True):
2787
2524
  snapshot: Dict[str, ProductInfo]
2788
2525
 
2789
- # below is a constructor that takes all field titles as arguments for convenience
2526
+ # Constructor that takes all field titles as arguments for convenience
2790
2527
  @classmethod
2791
2528
  def new(
2792
2529
  cls,
@@ -2806,7 +2543,7 @@ Update2 = List[Union[str, Optional[ProductInfo]]]
2806
2543
  class SnapshotOrUpdateForStringAndProductInfo2(Struct, omit_defaults=True):
2807
2544
  updates: List[Update2]
2808
2545
 
2809
- # below is a constructor that takes all field titles as arguments for convenience
2546
+ # Constructor that takes all field titles as arguments for convenience
2810
2547
  @classmethod
2811
2548
  def new(
2812
2549
  cls,