architect-py 5.0.0b1__py3-none-any.whl → 5.0.0b3__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 (74) hide show
  1. architect_py/__init__.py +10 -3
  2. architect_py/async_client.py +291 -174
  3. architect_py/client_interface.py +19 -18
  4. architect_py/common_types/order_dir.py +12 -6
  5. architect_py/graphql_client/__init__.py +2 -0
  6. architect_py/graphql_client/enums.py +5 -0
  7. architect_py/grpc/__init__.py +25 -7
  8. architect_py/grpc/client.py +13 -5
  9. architect_py/grpc/models/Accounts/AccountsRequest.py +4 -1
  10. architect_py/grpc/models/Algo/AlgoOrder.py +114 -0
  11. architect_py/grpc/models/Algo/{ModifyAlgoOrderRequestForTwapAlgo.py → AlgoOrderRequest.py} +11 -10
  12. architect_py/grpc/models/Algo/AlgoOrdersRequest.py +72 -0
  13. architect_py/grpc/models/Algo/AlgoOrdersResponse.py +27 -0
  14. architect_py/grpc/models/Algo/CreateAlgoOrderRequest.py +56 -0
  15. architect_py/grpc/models/Algo/PauseAlgoRequest.py +42 -0
  16. architect_py/grpc/models/Algo/PauseAlgoResponse.py +20 -0
  17. architect_py/grpc/models/Algo/StartAlgoRequest.py +42 -0
  18. architect_py/grpc/models/Algo/StartAlgoResponse.py +20 -0
  19. architect_py/grpc/models/Algo/StopAlgoRequest.py +42 -0
  20. architect_py/grpc/models/Algo/StopAlgoResponse.py +20 -0
  21. architect_py/grpc/models/Boss/DepositsRequest.py +40 -0
  22. architect_py/grpc/models/Boss/DepositsResponse.py +27 -0
  23. architect_py/grpc/models/Boss/RqdAccountStatisticsRequest.py +42 -0
  24. architect_py/grpc/models/Boss/RqdAccountStatisticsResponse.py +25 -0
  25. architect_py/grpc/models/Boss/StatementUrlRequest.py +40 -0
  26. architect_py/grpc/models/Boss/StatementUrlResponse.py +23 -0
  27. architect_py/grpc/models/Boss/StatementsRequest.py +40 -0
  28. architect_py/grpc/models/Boss/StatementsResponse.py +27 -0
  29. architect_py/grpc/models/Boss/WithdrawalsRequest.py +40 -0
  30. architect_py/grpc/models/Boss/WithdrawalsResponse.py +27 -0
  31. architect_py/grpc/models/Boss/__init__.py +2 -0
  32. architect_py/grpc/models/Folio/HistoricalFillsRequest.py +4 -1
  33. architect_py/grpc/models/Marketdata/L1BookSnapshot.py +16 -2
  34. architect_py/grpc/models/Oms/Cancel.py +67 -19
  35. architect_py/grpc/models/Oms/Order.py +4 -11
  36. architect_py/grpc/models/Oms/PlaceOrderRequest.py +13 -20
  37. architect_py/grpc/models/OptionsMarketdata/OptionsChain.py +30 -0
  38. architect_py/grpc/models/OptionsMarketdata/OptionsChainGreeks.py +30 -0
  39. architect_py/grpc/models/OptionsMarketdata/OptionsChainGreeksRequest.py +47 -0
  40. architect_py/grpc/models/OptionsMarketdata/OptionsChainRequest.py +45 -0
  41. architect_py/grpc/models/OptionsMarketdata/OptionsExpirations.py +29 -0
  42. architect_py/grpc/models/OptionsMarketdata/OptionsExpirationsRequest.py +42 -0
  43. architect_py/grpc/models/OptionsMarketdata/__init__.py +2 -0
  44. architect_py/grpc/models/Symbology/ExecutionInfoRequest.py +47 -0
  45. architect_py/grpc/models/Symbology/ExecutionInfoResponse.py +27 -0
  46. architect_py/grpc/models/definitions.py +457 -790
  47. architect_py/grpc/resolve_endpoint.py +4 -1
  48. architect_py/internal_utils/__init__.py +0 -0
  49. architect_py/internal_utils/no_pandas.py +3 -0
  50. architect_py/tests/conftest.py +11 -6
  51. architect_py/tests/test_marketdata.py +19 -19
  52. architect_py/tests/test_orderflow.py +31 -28
  53. {architect_py-5.0.0b1.dist-info → architect_py-5.0.0b3.dist-info}/METADATA +2 -3
  54. {architect_py-5.0.0b1.dist-info → architect_py-5.0.0b3.dist-info}/RECORD +72 -42
  55. {architect_py-5.0.0b1.dist-info → architect_py-5.0.0b3.dist-info}/WHEEL +1 -1
  56. examples/book_subscription.py +2 -3
  57. examples/candles.py +3 -3
  58. examples/common.py +29 -20
  59. examples/external_cpty.py +4 -4
  60. examples/funding_rate_mean_reversion_algo.py +14 -20
  61. examples/order_sending.py +32 -33
  62. examples/stream_l1_marketdata.py +2 -2
  63. examples/stream_l2_marketdata.py +1 -3
  64. examples/trades.py +2 -2
  65. examples/tutorial_async.py +9 -7
  66. examples/tutorial_sync.py +5 -5
  67. scripts/generate_functions_md.py +3 -1
  68. scripts/generate_sync_interface.py +30 -11
  69. scripts/postprocess_grpc.py +21 -11
  70. scripts/preprocess_grpc_schema.py +174 -113
  71. architect_py/grpc/models/Algo/AlgoOrderForTwapAlgo.py +0 -61
  72. architect_py/grpc/models/Algo/CreateAlgoOrderRequestForTwapAlgo.py +0 -59
  73. {architect_py-5.0.0b1.dist-info → architect_py-5.0.0b3.dist-info}/licenses/LICENSE +0 -0
  74. {architect_py-5.0.0b1.dist-info → architect_py-5.0.0b3.dist-info}/top_level.txt +0 -0
@@ -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
 
@@ -159,26 +161,27 @@ 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 AlgoState(str, Enum):
163
- Pending = "Pending"
164
- Running = "Running"
165
- Stopped = "Stopped"
164
+ class AlgoOrderStatus(int, Enum):
165
+ Working = 1
166
+ Rejected = 2
167
+ Paused = 63
168
+ Stopped = 127
166
169
 
167
170
 
168
- class CancelStatus(str, Enum):
169
- Pending = "Pending"
170
- Acked = "Acked"
171
- Rejected = "Rejected"
172
- Out = "Out"
171
+ class CancelStatus(int, Enum):
172
+ Pending = 0
173
+ Acked = 1
174
+ Rejected = 2
175
+ Out = 127
173
176
 
174
177
 
175
- class CandleWidth(str, Enum):
176
- OneSecond = "OneSecond"
177
- FiveSecond = "FiveSecond"
178
- OneMinute = "OneMinute"
179
- FifteenMinute = "FifteenMinute"
180
- OneHour = "OneHour"
181
- OneDay = "OneDay"
178
+ class CandleWidth(int, Enum):
179
+ OneSecond = 1
180
+ FiveSecond = 5
181
+ OneMinute = 60
182
+ FifteenMinute = 900
183
+ OneHour = 3600
184
+ OneDay = 86400
182
185
 
183
186
 
184
187
  class CptyLogoutRequest(Struct, omit_defaults=True):
@@ -198,6 +201,32 @@ class CptyLogoutRequest(Struct, omit_defaults=True):
198
201
  DateTimeOrUtc = datetime
199
202
 
200
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
+
201
230
  class HealthMetric(Struct, omit_defaults=True):
202
231
  timestamp: int
203
232
  value: float
@@ -353,28 +382,9 @@ class L2BookDiff(Struct, omit_defaults=True):
353
382
  return datetime.fromtimestamp(self.ts)
354
383
 
355
384
 
356
- class OrderId(Struct, omit_defaults=True):
357
- """
358
- System-unique, persistent order identifiers
359
- """
360
-
361
- seqid: str
362
- seqno: Annotated[int, Meta(ge=0)]
363
-
364
- # Constructor that takes all field titles as arguments for convenience
365
- @classmethod
366
- def new(
367
- cls,
368
- seqid: str,
369
- seqno: int,
370
- ):
371
- return cls(
372
- seqid,
373
- seqno,
374
- )
375
-
376
- def __str__(self) -> str:
377
- return f"OrderId(seqid={self.seqid},seqno={self.seqno})"
385
+ OrderId = Annotated[
386
+ str, Meta(description="System-unique, persistent order identifiers")
387
+ ]
378
388
 
379
389
 
380
390
  class OrderOut(Struct, omit_defaults=True):
@@ -408,14 +418,14 @@ class OrderRejectReason(str, Enum):
408
418
  Unknown = "Unknown"
409
419
 
410
420
 
411
- class OrderSource(str, Enum):
412
- API = "API"
413
- GUI = "GUI"
414
- Algo = "Algo"
415
- Reconciled = "Reconciled"
416
- CLI = "CLI"
417
- Telegram = "Telegram"
418
- Other = "Other"
421
+ class OrderSource(int, Enum):
422
+ API = 0
423
+ GUI = 1
424
+ Algo = 2
425
+ Reconciled = 3
426
+ CLI = 4
427
+ Telegram = 5
428
+ Other = 255
419
429
 
420
430
 
421
431
  class OrderStale(Struct, omit_defaults=True):
@@ -435,16 +445,22 @@ class OrderStale(Struct, omit_defaults=True):
435
445
  return f"OrderStale(id={self.id})"
436
446
 
437
447
 
438
- class OrderStatus(str, Enum):
439
- Pending = "Pending"
440
- Open = "Open"
441
- Rejected = "Rejected"
442
- Out = "Out"
443
- Canceling = "Canceling"
444
- Canceled = "Canceled"
445
- ReconciledOut = "ReconciledOut"
446
- Stale = "Stale"
447
- Unknown = "Unknown"
448
+ class OrderStatus(int, Enum):
449
+ Pending = 0
450
+ Open = 1
451
+ Rejected = 2
452
+ Out = 127
453
+ Canceling = 128
454
+ Canceled = 129
455
+ ReconciledOut = 130
456
+ Stale = 254
457
+ Unknown = 255
458
+
459
+
460
+ class OrderType(str, Enum):
461
+ LIMIT = "LIMIT"
462
+ STOP_LOSS_LIMIT = "STOP_LOSS_LIMIT"
463
+ TAKE_PROFIT_LIMIT = "TAKE_PROFIT_LIMIT"
448
464
 
449
465
 
450
466
  class ProductCatalogInfo(Struct, omit_defaults=True):
@@ -532,6 +548,165 @@ class ProductCatalogInfo(Struct, omit_defaults=True):
532
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})"
533
549
 
534
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
+
535
710
  class SortTickersBy(str, Enum):
536
711
  VOLUME_DESC = "VOLUME_DESC"
537
712
  CHANGE_ASC = "CHANGE_ASC"
@@ -539,6 +714,38 @@ class SortTickersBy(str, Enum):
539
714
  ABS_CHANGE_DESC = "ABS_CHANGE_DESC"
540
715
 
541
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
+
542
749
  class GoodTilDate(Struct, omit_defaults=True):
543
750
  GTD: datetime
544
751
 
@@ -571,27 +778,33 @@ TimeInForce = Union[GoodTilDate, TimeInForceEnum]
571
778
  TraderIdOrEmail = str
572
779
 
573
780
 
574
- class TwapStatus(Struct, omit_defaults=True):
575
- quantity_filled: Decimal
576
- realized_twap: Optional[Decimal] = None
781
+ UserId = str
782
+
783
+
784
+ class Withdrawal(Struct, omit_defaults=True):
785
+ account: str
786
+ amount: Decimal
787
+ description: str
788
+ timestamp: datetime
577
789
 
578
790
  # Constructor that takes all field titles as arguments for convenience
579
791
  @classmethod
580
792
  def new(
581
793
  cls,
582
- quantity_filled: Decimal,
583
- realized_twap: Optional[Decimal] = None,
794
+ account: str,
795
+ amount: Decimal,
796
+ description: str,
797
+ timestamp: datetime,
584
798
  ):
585
799
  return cls(
586
- quantity_filled,
587
- realized_twap,
800
+ account,
801
+ amount,
802
+ description,
803
+ timestamp,
588
804
  )
589
805
 
590
806
  def __str__(self) -> str:
591
- return f"TwapStatus(quantity_filled={self.quantity_filled},realized_twap={self.realized_twap})"
592
-
593
-
594
- UserId = str
807
+ return f"Withdrawal(account={self.account},amount={self.amount},description={self.description},timestamp={self.timestamp})"
595
808
 
596
809
 
597
810
  class AccountPermissions(Struct, omit_defaults=True):
@@ -638,13 +851,10 @@ class DerivativeKind(str, Enum):
638
851
  Quanto = "Quanto"
639
852
 
640
853
 
641
- class FillKind(str, Enum):
642
- Normal = "Normal"
643
- Reversal = "Reversal"
644
- Correction = "Correction"
645
-
646
-
647
- HumanDuration = str
854
+ class FillKind(int, Enum):
855
+ Normal = 0
856
+ Reversal = 1
857
+ Correction = 2
648
858
 
649
859
 
650
860
  class Unit(str, Enum):
@@ -844,6 +1054,11 @@ class Unknown(Struct, omit_defaults=True):
844
1054
  return f"Unknown(product_type={self.product_type})"
845
1055
 
846
1056
 
1057
+ class PutOrCall(str, Enum):
1058
+ P = "P"
1059
+ C = "C"
1060
+
1061
+
847
1062
  class SnapshotOrUpdateForStringAndProductCatalogInfo1(Struct, omit_defaults=True):
848
1063
  snapshot: Dict[str, ProductCatalogInfo]
849
1064
 
@@ -994,606 +1209,6 @@ class Varying(Struct, omit_defaults=True):
994
1209
  TickSize = Union[SimpleDecimal, Varying]
995
1210
 
996
1211
 
997
- class TimeZone(str, Enum):
998
- Africa_Abidjan = "Africa/Abidjan"
999
- Africa_Accra = "Africa/Accra"
1000
- Africa_Addis_Ababa = "Africa/Addis_Ababa"
1001
- Africa_Algiers = "Africa/Algiers"
1002
- Africa_Asmara = "Africa/Asmara"
1003
- Africa_Asmera = "Africa/Asmera"
1004
- Africa_Bamako = "Africa/Bamako"
1005
- Africa_Bangui = "Africa/Bangui"
1006
- Africa_Banjul = "Africa/Banjul"
1007
- Africa_Bissau = "Africa/Bissau"
1008
- Africa_Blantyre = "Africa/Blantyre"
1009
- Africa_Brazzaville = "Africa/Brazzaville"
1010
- Africa_Bujumbura = "Africa/Bujumbura"
1011
- Africa_Cairo = "Africa/Cairo"
1012
- Africa_Casablanca = "Africa/Casablanca"
1013
- Africa_Ceuta = "Africa/Ceuta"
1014
- Africa_Conakry = "Africa/Conakry"
1015
- Africa_Dakar = "Africa/Dakar"
1016
- Africa_Dar_es_Salaam = "Africa/Dar_es_Salaam"
1017
- Africa_Djibouti = "Africa/Djibouti"
1018
- Africa_Douala = "Africa/Douala"
1019
- Africa_El_Aaiun = "Africa/El_Aaiun"
1020
- Africa_Freetown = "Africa/Freetown"
1021
- Africa_Gaborone = "Africa/Gaborone"
1022
- Africa_Harare = "Africa/Harare"
1023
- Africa_Johannesburg = "Africa/Johannesburg"
1024
- Africa_Juba = "Africa/Juba"
1025
- Africa_Kampala = "Africa/Kampala"
1026
- Africa_Khartoum = "Africa/Khartoum"
1027
- Africa_Kigali = "Africa/Kigali"
1028
- Africa_Kinshasa = "Africa/Kinshasa"
1029
- Africa_Lagos = "Africa/Lagos"
1030
- Africa_Libreville = "Africa/Libreville"
1031
- Africa_Lome = "Africa/Lome"
1032
- Africa_Luanda = "Africa/Luanda"
1033
- Africa_Lubumbashi = "Africa/Lubumbashi"
1034
- Africa_Lusaka = "Africa/Lusaka"
1035
- Africa_Malabo = "Africa/Malabo"
1036
- Africa_Maputo = "Africa/Maputo"
1037
- Africa_Maseru = "Africa/Maseru"
1038
- Africa_Mbabane = "Africa/Mbabane"
1039
- Africa_Mogadishu = "Africa/Mogadishu"
1040
- Africa_Monrovia = "Africa/Monrovia"
1041
- Africa_Nairobi = "Africa/Nairobi"
1042
- Africa_Ndjamena = "Africa/Ndjamena"
1043
- Africa_Niamey = "Africa/Niamey"
1044
- Africa_Nouakchott = "Africa/Nouakchott"
1045
- Africa_Ouagadougou = "Africa/Ouagadougou"
1046
- Africa_Porto_Novo = "Africa/Porto-Novo"
1047
- Africa_Sao_Tome = "Africa/Sao_Tome"
1048
- Africa_Timbuktu = "Africa/Timbuktu"
1049
- Africa_Tripoli = "Africa/Tripoli"
1050
- Africa_Tunis = "Africa/Tunis"
1051
- Africa_Windhoek = "Africa/Windhoek"
1052
- America_Adak = "America/Adak"
1053
- America_Anchorage = "America/Anchorage"
1054
- America_Anguilla = "America/Anguilla"
1055
- America_Antigua = "America/Antigua"
1056
- America_Araguaina = "America/Araguaina"
1057
- America_Argentina_Buenos_Aires = "America/Argentina/Buenos_Aires"
1058
- America_Argentina_Catamarca = "America/Argentina/Catamarca"
1059
- America_Argentina_ComodRivadavia = "America/Argentina/ComodRivadavia"
1060
- America_Argentina_Cordoba = "America/Argentina/Cordoba"
1061
- America_Argentina_Jujuy = "America/Argentina/Jujuy"
1062
- America_Argentina_La_Rioja = "America/Argentina/La_Rioja"
1063
- America_Argentina_Mendoza = "America/Argentina/Mendoza"
1064
- America_Argentina_Rio_Gallegos = "America/Argentina/Rio_Gallegos"
1065
- America_Argentina_Salta = "America/Argentina/Salta"
1066
- America_Argentina_San_Juan = "America/Argentina/San_Juan"
1067
- America_Argentina_San_Luis = "America/Argentina/San_Luis"
1068
- America_Argentina_Tucuman = "America/Argentina/Tucuman"
1069
- America_Argentina_Ushuaia = "America/Argentina/Ushuaia"
1070
- America_Aruba = "America/Aruba"
1071
- America_Asuncion = "America/Asuncion"
1072
- America_Atikokan = "America/Atikokan"
1073
- America_Atka = "America/Atka"
1074
- America_Bahia = "America/Bahia"
1075
- America_Bahia_Banderas = "America/Bahia_Banderas"
1076
- America_Barbados = "America/Barbados"
1077
- America_Belem = "America/Belem"
1078
- America_Belize = "America/Belize"
1079
- America_Blanc_Sablon = "America/Blanc-Sablon"
1080
- America_Boa_Vista = "America/Boa_Vista"
1081
- America_Bogota = "America/Bogota"
1082
- America_Boise = "America/Boise"
1083
- America_Buenos_Aires = "America/Buenos_Aires"
1084
- America_Cambridge_Bay = "America/Cambridge_Bay"
1085
- America_Campo_Grande = "America/Campo_Grande"
1086
- America_Cancun = "America/Cancun"
1087
- America_Caracas = "America/Caracas"
1088
- America_Catamarca = "America/Catamarca"
1089
- America_Cayenne = "America/Cayenne"
1090
- America_Cayman = "America/Cayman"
1091
- America_Chicago = "America/Chicago"
1092
- America_Chihuahua = "America/Chihuahua"
1093
- America_Ciudad_Juarez = "America/Ciudad_Juarez"
1094
- America_Coral_Harbour = "America/Coral_Harbour"
1095
- America_Cordoba = "America/Cordoba"
1096
- America_Costa_Rica = "America/Costa_Rica"
1097
- America_Coyhaique = "America/Coyhaique"
1098
- America_Creston = "America/Creston"
1099
- America_Cuiaba = "America/Cuiaba"
1100
- America_Curacao = "America/Curacao"
1101
- America_Danmarkshavn = "America/Danmarkshavn"
1102
- America_Dawson = "America/Dawson"
1103
- America_Dawson_Creek = "America/Dawson_Creek"
1104
- America_Denver = "America/Denver"
1105
- America_Detroit = "America/Detroit"
1106
- America_Dominica = "America/Dominica"
1107
- America_Edmonton = "America/Edmonton"
1108
- America_Eirunepe = "America/Eirunepe"
1109
- America_El_Salvador = "America/El_Salvador"
1110
- America_Ensenada = "America/Ensenada"
1111
- America_Fort_Nelson = "America/Fort_Nelson"
1112
- America_Fort_Wayne = "America/Fort_Wayne"
1113
- America_Fortaleza = "America/Fortaleza"
1114
- America_Glace_Bay = "America/Glace_Bay"
1115
- America_Godthab = "America/Godthab"
1116
- America_Goose_Bay = "America/Goose_Bay"
1117
- America_Grand_Turk = "America/Grand_Turk"
1118
- America_Grenada = "America/Grenada"
1119
- America_Guadeloupe = "America/Guadeloupe"
1120
- America_Guatemala = "America/Guatemala"
1121
- America_Guayaquil = "America/Guayaquil"
1122
- America_Guyana = "America/Guyana"
1123
- America_Halifax = "America/Halifax"
1124
- America_Havana = "America/Havana"
1125
- America_Hermosillo = "America/Hermosillo"
1126
- America_Indiana_Indianapolis = "America/Indiana/Indianapolis"
1127
- America_Indiana_Knox = "America/Indiana/Knox"
1128
- America_Indiana_Marengo = "America/Indiana/Marengo"
1129
- America_Indiana_Petersburg = "America/Indiana/Petersburg"
1130
- America_Indiana_Tell_City = "America/Indiana/Tell_City"
1131
- America_Indiana_Vevay = "America/Indiana/Vevay"
1132
- America_Indiana_Vincennes = "America/Indiana/Vincennes"
1133
- America_Indiana_Winamac = "America/Indiana/Winamac"
1134
- America_Indianapolis = "America/Indianapolis"
1135
- America_Inuvik = "America/Inuvik"
1136
- America_Iqaluit = "America/Iqaluit"
1137
- America_Jamaica = "America/Jamaica"
1138
- America_Jujuy = "America/Jujuy"
1139
- America_Juneau = "America/Juneau"
1140
- America_Kentucky_Louisville = "America/Kentucky/Louisville"
1141
- America_Kentucky_Monticello = "America/Kentucky/Monticello"
1142
- America_Knox_IN = "America/Knox_IN"
1143
- America_Kralendijk = "America/Kralendijk"
1144
- America_La_Paz = "America/La_Paz"
1145
- America_Lima = "America/Lima"
1146
- America_Los_Angeles = "America/Los_Angeles"
1147
- America_Louisville = "America/Louisville"
1148
- America_Lower_Princes = "America/Lower_Princes"
1149
- America_Maceio = "America/Maceio"
1150
- America_Managua = "America/Managua"
1151
- America_Manaus = "America/Manaus"
1152
- America_Marigot = "America/Marigot"
1153
- America_Martinique = "America/Martinique"
1154
- America_Matamoros = "America/Matamoros"
1155
- America_Mazatlan = "America/Mazatlan"
1156
- America_Mendoza = "America/Mendoza"
1157
- America_Menominee = "America/Menominee"
1158
- America_Merida = "America/Merida"
1159
- America_Metlakatla = "America/Metlakatla"
1160
- America_Mexico_City = "America/Mexico_City"
1161
- America_Miquelon = "America/Miquelon"
1162
- America_Moncton = "America/Moncton"
1163
- America_Monterrey = "America/Monterrey"
1164
- America_Montevideo = "America/Montevideo"
1165
- America_Montreal = "America/Montreal"
1166
- America_Montserrat = "America/Montserrat"
1167
- America_Nassau = "America/Nassau"
1168
- America_New_York = "America/New_York"
1169
- America_Nipigon = "America/Nipigon"
1170
- America_Nome = "America/Nome"
1171
- America_Noronha = "America/Noronha"
1172
- America_North_Dakota_Beulah = "America/North_Dakota/Beulah"
1173
- America_North_Dakota_Center = "America/North_Dakota/Center"
1174
- America_North_Dakota_New_Salem = "America/North_Dakota/New_Salem"
1175
- America_Nuuk = "America/Nuuk"
1176
- America_Ojinaga = "America/Ojinaga"
1177
- America_Panama = "America/Panama"
1178
- America_Pangnirtung = "America/Pangnirtung"
1179
- America_Paramaribo = "America/Paramaribo"
1180
- America_Phoenix = "America/Phoenix"
1181
- America_Port_au_Prince = "America/Port-au-Prince"
1182
- America_Port_of_Spain = "America/Port_of_Spain"
1183
- America_Porto_Acre = "America/Porto_Acre"
1184
- America_Porto_Velho = "America/Porto_Velho"
1185
- America_Puerto_Rico = "America/Puerto_Rico"
1186
- America_Punta_Arenas = "America/Punta_Arenas"
1187
- America_Rainy_River = "America/Rainy_River"
1188
- America_Rankin_Inlet = "America/Rankin_Inlet"
1189
- America_Recife = "America/Recife"
1190
- America_Regina = "America/Regina"
1191
- America_Resolute = "America/Resolute"
1192
- America_Rio_Branco = "America/Rio_Branco"
1193
- America_Rosario = "America/Rosario"
1194
- America_Santa_Isabel = "America/Santa_Isabel"
1195
- America_Santarem = "America/Santarem"
1196
- America_Santiago = "America/Santiago"
1197
- America_Santo_Domingo = "America/Santo_Domingo"
1198
- America_Sao_Paulo = "America/Sao_Paulo"
1199
- America_Scoresbysund = "America/Scoresbysund"
1200
- America_Shiprock = "America/Shiprock"
1201
- America_Sitka = "America/Sitka"
1202
- America_St_Barthelemy = "America/St_Barthelemy"
1203
- America_St_Johns = "America/St_Johns"
1204
- America_St_Kitts = "America/St_Kitts"
1205
- America_St_Lucia = "America/St_Lucia"
1206
- America_St_Thomas = "America/St_Thomas"
1207
- America_St_Vincent = "America/St_Vincent"
1208
- America_Swift_Current = "America/Swift_Current"
1209
- America_Tegucigalpa = "America/Tegucigalpa"
1210
- America_Thule = "America/Thule"
1211
- America_Thunder_Bay = "America/Thunder_Bay"
1212
- America_Tijuana = "America/Tijuana"
1213
- America_Toronto = "America/Toronto"
1214
- America_Tortola = "America/Tortola"
1215
- America_Vancouver = "America/Vancouver"
1216
- America_Virgin = "America/Virgin"
1217
- America_Whitehorse = "America/Whitehorse"
1218
- America_Winnipeg = "America/Winnipeg"
1219
- America_Yakutat = "America/Yakutat"
1220
- America_Yellowknife = "America/Yellowknife"
1221
- Antarctica_Casey = "Antarctica/Casey"
1222
- Antarctica_Davis = "Antarctica/Davis"
1223
- Antarctica_DumontDUrville = "Antarctica/DumontDUrville"
1224
- Antarctica_Macquarie = "Antarctica/Macquarie"
1225
- Antarctica_Mawson = "Antarctica/Mawson"
1226
- Antarctica_McMurdo = "Antarctica/McMurdo"
1227
- Antarctica_Palmer = "Antarctica/Palmer"
1228
- Antarctica_Rothera = "Antarctica/Rothera"
1229
- Antarctica_South_Pole = "Antarctica/South_Pole"
1230
- Antarctica_Syowa = "Antarctica/Syowa"
1231
- Antarctica_Troll = "Antarctica/Troll"
1232
- Antarctica_Vostok = "Antarctica/Vostok"
1233
- Arctic_Longyearbyen = "Arctic/Longyearbyen"
1234
- Asia_Aden = "Asia/Aden"
1235
- Asia_Almaty = "Asia/Almaty"
1236
- Asia_Amman = "Asia/Amman"
1237
- Asia_Anadyr = "Asia/Anadyr"
1238
- Asia_Aqtau = "Asia/Aqtau"
1239
- Asia_Aqtobe = "Asia/Aqtobe"
1240
- Asia_Ashgabat = "Asia/Ashgabat"
1241
- Asia_Ashkhabad = "Asia/Ashkhabad"
1242
- Asia_Atyrau = "Asia/Atyrau"
1243
- Asia_Baghdad = "Asia/Baghdad"
1244
- Asia_Bahrain = "Asia/Bahrain"
1245
- Asia_Baku = "Asia/Baku"
1246
- Asia_Bangkok = "Asia/Bangkok"
1247
- Asia_Barnaul = "Asia/Barnaul"
1248
- Asia_Beirut = "Asia/Beirut"
1249
- Asia_Bishkek = "Asia/Bishkek"
1250
- Asia_Brunei = "Asia/Brunei"
1251
- Asia_Calcutta = "Asia/Calcutta"
1252
- Asia_Chita = "Asia/Chita"
1253
- Asia_Choibalsan = "Asia/Choibalsan"
1254
- Asia_Chongqing = "Asia/Chongqing"
1255
- Asia_Chungking = "Asia/Chungking"
1256
- Asia_Colombo = "Asia/Colombo"
1257
- Asia_Dacca = "Asia/Dacca"
1258
- Asia_Damascus = "Asia/Damascus"
1259
- Asia_Dhaka = "Asia/Dhaka"
1260
- Asia_Dili = "Asia/Dili"
1261
- Asia_Dubai = "Asia/Dubai"
1262
- Asia_Dushanbe = "Asia/Dushanbe"
1263
- Asia_Famagusta = "Asia/Famagusta"
1264
- Asia_Gaza = "Asia/Gaza"
1265
- Asia_Harbin = "Asia/Harbin"
1266
- Asia_Hebron = "Asia/Hebron"
1267
- Asia_Ho_Chi_Minh = "Asia/Ho_Chi_Minh"
1268
- Asia_Hong_Kong = "Asia/Hong_Kong"
1269
- Asia_Hovd = "Asia/Hovd"
1270
- Asia_Irkutsk = "Asia/Irkutsk"
1271
- Asia_Istanbul = "Asia/Istanbul"
1272
- Asia_Jakarta = "Asia/Jakarta"
1273
- Asia_Jayapura = "Asia/Jayapura"
1274
- Asia_Jerusalem = "Asia/Jerusalem"
1275
- Asia_Kabul = "Asia/Kabul"
1276
- Asia_Kamchatka = "Asia/Kamchatka"
1277
- Asia_Karachi = "Asia/Karachi"
1278
- Asia_Kashgar = "Asia/Kashgar"
1279
- Asia_Kathmandu = "Asia/Kathmandu"
1280
- Asia_Katmandu = "Asia/Katmandu"
1281
- Asia_Khandyga = "Asia/Khandyga"
1282
- Asia_Kolkata = "Asia/Kolkata"
1283
- Asia_Krasnoyarsk = "Asia/Krasnoyarsk"
1284
- Asia_Kuala_Lumpur = "Asia/Kuala_Lumpur"
1285
- Asia_Kuching = "Asia/Kuching"
1286
- Asia_Kuwait = "Asia/Kuwait"
1287
- Asia_Macao = "Asia/Macao"
1288
- Asia_Macau = "Asia/Macau"
1289
- Asia_Magadan = "Asia/Magadan"
1290
- Asia_Makassar = "Asia/Makassar"
1291
- Asia_Manila = "Asia/Manila"
1292
- Asia_Muscat = "Asia/Muscat"
1293
- Asia_Nicosia = "Asia/Nicosia"
1294
- Asia_Novokuznetsk = "Asia/Novokuznetsk"
1295
- Asia_Novosibirsk = "Asia/Novosibirsk"
1296
- Asia_Omsk = "Asia/Omsk"
1297
- Asia_Oral = "Asia/Oral"
1298
- Asia_Phnom_Penh = "Asia/Phnom_Penh"
1299
- Asia_Pontianak = "Asia/Pontianak"
1300
- Asia_Pyongyang = "Asia/Pyongyang"
1301
- Asia_Qatar = "Asia/Qatar"
1302
- Asia_Qostanay = "Asia/Qostanay"
1303
- Asia_Qyzylorda = "Asia/Qyzylorda"
1304
- Asia_Rangoon = "Asia/Rangoon"
1305
- Asia_Riyadh = "Asia/Riyadh"
1306
- Asia_Saigon = "Asia/Saigon"
1307
- Asia_Sakhalin = "Asia/Sakhalin"
1308
- Asia_Samarkand = "Asia/Samarkand"
1309
- Asia_Seoul = "Asia/Seoul"
1310
- Asia_Shanghai = "Asia/Shanghai"
1311
- Asia_Singapore = "Asia/Singapore"
1312
- Asia_Srednekolymsk = "Asia/Srednekolymsk"
1313
- Asia_Taipei = "Asia/Taipei"
1314
- Asia_Tashkent = "Asia/Tashkent"
1315
- Asia_Tbilisi = "Asia/Tbilisi"
1316
- Asia_Tehran = "Asia/Tehran"
1317
- Asia_Tel_Aviv = "Asia/Tel_Aviv"
1318
- Asia_Thimbu = "Asia/Thimbu"
1319
- Asia_Thimphu = "Asia/Thimphu"
1320
- Asia_Tokyo = "Asia/Tokyo"
1321
- Asia_Tomsk = "Asia/Tomsk"
1322
- Asia_Ujung_Pandang = "Asia/Ujung_Pandang"
1323
- Asia_Ulaanbaatar = "Asia/Ulaanbaatar"
1324
- Asia_Ulan_Bator = "Asia/Ulan_Bator"
1325
- Asia_Urumqi = "Asia/Urumqi"
1326
- Asia_Ust_Nera = "Asia/Ust-Nera"
1327
- Asia_Vientiane = "Asia/Vientiane"
1328
- Asia_Vladivostok = "Asia/Vladivostok"
1329
- Asia_Yakutsk = "Asia/Yakutsk"
1330
- Asia_Yangon = "Asia/Yangon"
1331
- Asia_Yekaterinburg = "Asia/Yekaterinburg"
1332
- Asia_Yerevan = "Asia/Yerevan"
1333
- Atlantic_Azores = "Atlantic/Azores"
1334
- Atlantic_Bermuda = "Atlantic/Bermuda"
1335
- Atlantic_Canary = "Atlantic/Canary"
1336
- Atlantic_Cape_Verde = "Atlantic/Cape_Verde"
1337
- Atlantic_Faeroe = "Atlantic/Faeroe"
1338
- Atlantic_Faroe = "Atlantic/Faroe"
1339
- Atlantic_Jan_Mayen = "Atlantic/Jan_Mayen"
1340
- Atlantic_Madeira = "Atlantic/Madeira"
1341
- Atlantic_Reykjavik = "Atlantic/Reykjavik"
1342
- Atlantic_South_Georgia = "Atlantic/South_Georgia"
1343
- Atlantic_St_Helena = "Atlantic/St_Helena"
1344
- Atlantic_Stanley = "Atlantic/Stanley"
1345
- Australia_ACT = "Australia/ACT"
1346
- Australia_Adelaide = "Australia/Adelaide"
1347
- Australia_Brisbane = "Australia/Brisbane"
1348
- Australia_Broken_Hill = "Australia/Broken_Hill"
1349
- Australia_Canberra = "Australia/Canberra"
1350
- Australia_Currie = "Australia/Currie"
1351
- Australia_Darwin = "Australia/Darwin"
1352
- Australia_Eucla = "Australia/Eucla"
1353
- Australia_Hobart = "Australia/Hobart"
1354
- Australia_LHI = "Australia/LHI"
1355
- Australia_Lindeman = "Australia/Lindeman"
1356
- Australia_Lord_Howe = "Australia/Lord_Howe"
1357
- Australia_Melbourne = "Australia/Melbourne"
1358
- Australia_NSW = "Australia/NSW"
1359
- Australia_North = "Australia/North"
1360
- Australia_Perth = "Australia/Perth"
1361
- Australia_Queensland = "Australia/Queensland"
1362
- Australia_South = "Australia/South"
1363
- Australia_Sydney = "Australia/Sydney"
1364
- Australia_Tasmania = "Australia/Tasmania"
1365
- Australia_Victoria = "Australia/Victoria"
1366
- Australia_West = "Australia/West"
1367
- Australia_Yancowinna = "Australia/Yancowinna"
1368
- Brazil_Acre = "Brazil/Acre"
1369
- Brazil_DeNoronha = "Brazil/DeNoronha"
1370
- Brazil_East = "Brazil/East"
1371
- Brazil_West = "Brazil/West"
1372
- CET = "CET"
1373
- CST6CDT = "CST6CDT"
1374
- Canada_Atlantic = "Canada/Atlantic"
1375
- Canada_Central = "Canada/Central"
1376
- Canada_Eastern = "Canada/Eastern"
1377
- Canada_Mountain = "Canada/Mountain"
1378
- Canada_Newfoundland = "Canada/Newfoundland"
1379
- Canada_Pacific = "Canada/Pacific"
1380
- Canada_Saskatchewan = "Canada/Saskatchewan"
1381
- Canada_Yukon = "Canada/Yukon"
1382
- Chile_Continental = "Chile/Continental"
1383
- Chile_EasterIsland = "Chile/EasterIsland"
1384
- Cuba = "Cuba"
1385
- EET = "EET"
1386
- EST = "EST"
1387
- EST5EDT = "EST5EDT"
1388
- Egypt = "Egypt"
1389
- Eire = "Eire"
1390
- Etc_GMT = "Etc/GMT"
1391
- Etc_GMT_0 = "Etc/GMT+0"
1392
- Etc_GMT_1 = "Etc/GMT+1"
1393
- Etc_GMT_10 = "Etc/GMT+10"
1394
- Etc_GMT_11 = "Etc/GMT+11"
1395
- Etc_GMT_12 = "Etc/GMT+12"
1396
- Etc_GMT_2 = "Etc/GMT+2"
1397
- Etc_GMT_3 = "Etc/GMT+3"
1398
- Etc_GMT_4 = "Etc/GMT+4"
1399
- Etc_GMT_5 = "Etc/GMT+5"
1400
- Etc_GMT_6 = "Etc/GMT+6"
1401
- Etc_GMT_7 = "Etc/GMT+7"
1402
- Etc_GMT_8 = "Etc/GMT+8"
1403
- Etc_GMT_9 = "Etc/GMT+9"
1404
- Etc_GMT_0_1 = "Etc/GMT-0"
1405
- Etc_GMT_1_1 = "Etc/GMT-1"
1406
- Etc_GMT_10_1 = "Etc/GMT-10"
1407
- Etc_GMT_11_1 = "Etc/GMT-11"
1408
- Etc_GMT_12_1 = "Etc/GMT-12"
1409
- Etc_GMT_13 = "Etc/GMT-13"
1410
- Etc_GMT_14 = "Etc/GMT-14"
1411
- Etc_GMT_2_1 = "Etc/GMT-2"
1412
- Etc_GMT_3_1 = "Etc/GMT-3"
1413
- Etc_GMT_4_1 = "Etc/GMT-4"
1414
- Etc_GMT_5_1 = "Etc/GMT-5"
1415
- Etc_GMT_6_1 = "Etc/GMT-6"
1416
- Etc_GMT_7_1 = "Etc/GMT-7"
1417
- Etc_GMT_8_1 = "Etc/GMT-8"
1418
- Etc_GMT_9_1 = "Etc/GMT-9"
1419
- Etc_GMT0 = "Etc/GMT0"
1420
- Etc_Greenwich = "Etc/Greenwich"
1421
- Etc_UCT = "Etc/UCT"
1422
- Etc_UTC = "Etc/UTC"
1423
- Etc_Universal = "Etc/Universal"
1424
- Etc_Zulu = "Etc/Zulu"
1425
- Europe_Amsterdam = "Europe/Amsterdam"
1426
- Europe_Andorra = "Europe/Andorra"
1427
- Europe_Astrakhan = "Europe/Astrakhan"
1428
- Europe_Athens = "Europe/Athens"
1429
- Europe_Belfast = "Europe/Belfast"
1430
- Europe_Belgrade = "Europe/Belgrade"
1431
- Europe_Berlin = "Europe/Berlin"
1432
- Europe_Bratislava = "Europe/Bratislava"
1433
- Europe_Brussels = "Europe/Brussels"
1434
- Europe_Bucharest = "Europe/Bucharest"
1435
- Europe_Budapest = "Europe/Budapest"
1436
- Europe_Busingen = "Europe/Busingen"
1437
- Europe_Chisinau = "Europe/Chisinau"
1438
- Europe_Copenhagen = "Europe/Copenhagen"
1439
- Europe_Dublin = "Europe/Dublin"
1440
- Europe_Gibraltar = "Europe/Gibraltar"
1441
- Europe_Guernsey = "Europe/Guernsey"
1442
- Europe_Helsinki = "Europe/Helsinki"
1443
- Europe_Isle_of_Man = "Europe/Isle_of_Man"
1444
- Europe_Istanbul = "Europe/Istanbul"
1445
- Europe_Jersey = "Europe/Jersey"
1446
- Europe_Kaliningrad = "Europe/Kaliningrad"
1447
- Europe_Kiev = "Europe/Kiev"
1448
- Europe_Kirov = "Europe/Kirov"
1449
- Europe_Kyiv = "Europe/Kyiv"
1450
- Europe_Lisbon = "Europe/Lisbon"
1451
- Europe_Ljubljana = "Europe/Ljubljana"
1452
- Europe_London = "Europe/London"
1453
- Europe_Luxembourg = "Europe/Luxembourg"
1454
- Europe_Madrid = "Europe/Madrid"
1455
- Europe_Malta = "Europe/Malta"
1456
- Europe_Mariehamn = "Europe/Mariehamn"
1457
- Europe_Minsk = "Europe/Minsk"
1458
- Europe_Monaco = "Europe/Monaco"
1459
- Europe_Moscow = "Europe/Moscow"
1460
- Europe_Nicosia = "Europe/Nicosia"
1461
- Europe_Oslo = "Europe/Oslo"
1462
- Europe_Paris = "Europe/Paris"
1463
- Europe_Podgorica = "Europe/Podgorica"
1464
- Europe_Prague = "Europe/Prague"
1465
- Europe_Riga = "Europe/Riga"
1466
- Europe_Rome = "Europe/Rome"
1467
- Europe_Samara = "Europe/Samara"
1468
- Europe_San_Marino = "Europe/San_Marino"
1469
- Europe_Sarajevo = "Europe/Sarajevo"
1470
- Europe_Saratov = "Europe/Saratov"
1471
- Europe_Simferopol = "Europe/Simferopol"
1472
- Europe_Skopje = "Europe/Skopje"
1473
- Europe_Sofia = "Europe/Sofia"
1474
- Europe_Stockholm = "Europe/Stockholm"
1475
- Europe_Tallinn = "Europe/Tallinn"
1476
- Europe_Tirane = "Europe/Tirane"
1477
- Europe_Tiraspol = "Europe/Tiraspol"
1478
- Europe_Ulyanovsk = "Europe/Ulyanovsk"
1479
- Europe_Uzhgorod = "Europe/Uzhgorod"
1480
- Europe_Vaduz = "Europe/Vaduz"
1481
- Europe_Vatican = "Europe/Vatican"
1482
- Europe_Vienna = "Europe/Vienna"
1483
- Europe_Vilnius = "Europe/Vilnius"
1484
- Europe_Volgograd = "Europe/Volgograd"
1485
- Europe_Warsaw = "Europe/Warsaw"
1486
- Europe_Zagreb = "Europe/Zagreb"
1487
- Europe_Zaporozhye = "Europe/Zaporozhye"
1488
- Europe_Zurich = "Europe/Zurich"
1489
- GB = "GB"
1490
- GB_Eire = "GB-Eire"
1491
- GMT = "GMT"
1492
- GMT_0 = "GMT+0"
1493
- GMT_0_1 = "GMT-0"
1494
- GMT0 = "GMT0"
1495
- Greenwich = "Greenwich"
1496
- HST = "HST"
1497
- Hongkong = "Hongkong"
1498
- Iceland = "Iceland"
1499
- Indian_Antananarivo = "Indian/Antananarivo"
1500
- Indian_Chagos = "Indian/Chagos"
1501
- Indian_Christmas = "Indian/Christmas"
1502
- Indian_Cocos = "Indian/Cocos"
1503
- Indian_Comoro = "Indian/Comoro"
1504
- Indian_Kerguelen = "Indian/Kerguelen"
1505
- Indian_Mahe = "Indian/Mahe"
1506
- Indian_Maldives = "Indian/Maldives"
1507
- Indian_Mauritius = "Indian/Mauritius"
1508
- Indian_Mayotte = "Indian/Mayotte"
1509
- Indian_Reunion = "Indian/Reunion"
1510
- Iran = "Iran"
1511
- Israel = "Israel"
1512
- Jamaica = "Jamaica"
1513
- Japan = "Japan"
1514
- Kwajalein = "Kwajalein"
1515
- Libya = "Libya"
1516
- MET = "MET"
1517
- MST = "MST"
1518
- MST7MDT = "MST7MDT"
1519
- Mexico_BajaNorte = "Mexico/BajaNorte"
1520
- Mexico_BajaSur = "Mexico/BajaSur"
1521
- Mexico_General = "Mexico/General"
1522
- NZ = "NZ"
1523
- NZ_CHAT = "NZ-CHAT"
1524
- Navajo = "Navajo"
1525
- PRC = "PRC"
1526
- PST8PDT = "PST8PDT"
1527
- Pacific_Apia = "Pacific/Apia"
1528
- Pacific_Auckland = "Pacific/Auckland"
1529
- Pacific_Bougainville = "Pacific/Bougainville"
1530
- Pacific_Chatham = "Pacific/Chatham"
1531
- Pacific_Chuuk = "Pacific/Chuuk"
1532
- Pacific_Easter = "Pacific/Easter"
1533
- Pacific_Efate = "Pacific/Efate"
1534
- Pacific_Enderbury = "Pacific/Enderbury"
1535
- Pacific_Fakaofo = "Pacific/Fakaofo"
1536
- Pacific_Fiji = "Pacific/Fiji"
1537
- Pacific_Funafuti = "Pacific/Funafuti"
1538
- Pacific_Galapagos = "Pacific/Galapagos"
1539
- Pacific_Gambier = "Pacific/Gambier"
1540
- Pacific_Guadalcanal = "Pacific/Guadalcanal"
1541
- Pacific_Guam = "Pacific/Guam"
1542
- Pacific_Honolulu = "Pacific/Honolulu"
1543
- Pacific_Johnston = "Pacific/Johnston"
1544
- Pacific_Kanton = "Pacific/Kanton"
1545
- Pacific_Kiritimati = "Pacific/Kiritimati"
1546
- Pacific_Kosrae = "Pacific/Kosrae"
1547
- Pacific_Kwajalein = "Pacific/Kwajalein"
1548
- Pacific_Majuro = "Pacific/Majuro"
1549
- Pacific_Marquesas = "Pacific/Marquesas"
1550
- Pacific_Midway = "Pacific/Midway"
1551
- Pacific_Nauru = "Pacific/Nauru"
1552
- Pacific_Niue = "Pacific/Niue"
1553
- Pacific_Norfolk = "Pacific/Norfolk"
1554
- Pacific_Noumea = "Pacific/Noumea"
1555
- Pacific_Pago_Pago = "Pacific/Pago_Pago"
1556
- Pacific_Palau = "Pacific/Palau"
1557
- Pacific_Pitcairn = "Pacific/Pitcairn"
1558
- Pacific_Pohnpei = "Pacific/Pohnpei"
1559
- Pacific_Ponape = "Pacific/Ponape"
1560
- Pacific_Port_Moresby = "Pacific/Port_Moresby"
1561
- Pacific_Rarotonga = "Pacific/Rarotonga"
1562
- Pacific_Saipan = "Pacific/Saipan"
1563
- Pacific_Samoa = "Pacific/Samoa"
1564
- Pacific_Tahiti = "Pacific/Tahiti"
1565
- Pacific_Tarawa = "Pacific/Tarawa"
1566
- Pacific_Tongatapu = "Pacific/Tongatapu"
1567
- Pacific_Truk = "Pacific/Truk"
1568
- Pacific_Wake = "Pacific/Wake"
1569
- Pacific_Wallis = "Pacific/Wallis"
1570
- Pacific_Yap = "Pacific/Yap"
1571
- Poland = "Poland"
1572
- Portugal = "Portugal"
1573
- ROC = "ROC"
1574
- ROK = "ROK"
1575
- Singapore = "Singapore"
1576
- Turkey = "Turkey"
1577
- UCT = "UCT"
1578
- US_Alaska = "US/Alaska"
1579
- US_Aleutian = "US/Aleutian"
1580
- US_Arizona = "US/Arizona"
1581
- US_Central = "US/Central"
1582
- US_East_Indiana = "US/East-Indiana"
1583
- US_Eastern = "US/Eastern"
1584
- US_Hawaii = "US/Hawaii"
1585
- US_Indiana_Starke = "US/Indiana-Starke"
1586
- US_Michigan = "US/Michigan"
1587
- US_Mountain = "US/Mountain"
1588
- US_Pacific = "US/Pacific"
1589
- US_Samoa = "US/Samoa"
1590
- UTC = "UTC"
1591
- Universal = "Universal"
1592
- W_SU = "W-SU"
1593
- WET = "WET"
1594
- Zulu = "Zulu"
1595
-
1596
-
1597
1212
  AccountName = str
1598
1213
 
1599
1214
 
@@ -1634,6 +1249,33 @@ class EventContractSeriesInstance2(Struct, omit_defaults=True):
1634
1249
  return f"EventContractSeriesInstance2(OptionLike={self.OptionLike})"
1635
1250
 
1636
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
+
1637
1279
  class SpreadLeg(Struct, omit_defaults=True):
1638
1280
  product: str
1639
1281
  quantity: Annotated[
@@ -1679,11 +1321,6 @@ class Outcome(Struct, omit_defaults=True):
1679
1321
  return f"Outcome(name={self.name})"
1680
1322
 
1681
1323
 
1682
- class PutOrCall(str, Enum):
1683
- P = "P"
1684
- C = "C"
1685
-
1686
-
1687
1324
  class AberrantFill(Struct, omit_defaults=True):
1688
1325
  """
1689
1326
  Fills which we received but couldn't parse fully, return details best effort
@@ -1694,7 +1331,7 @@ class AberrantFill(Struct, omit_defaults=True):
1694
1331
  a: Optional[Annotated[Optional[str], Meta(title="account")]] = None
1695
1332
  atn: Optional[Annotated[Optional[int], Meta(title="recv_time_ns")]] = None
1696
1333
  ats: Optional[Annotated[Optional[int], Meta(title="recv_time")]] = None
1697
- d: Optional[Annotated[Optional[OrderDir], Meta(title="direction")]] = None
1334
+ d: Optional[Annotated[Optional[OrderDir], Meta(title="dir")]] = None
1698
1335
  f: Optional[Annotated[Optional[Decimal], Meta(title="fee")]] = None
1699
1336
  fu: Optional[Annotated[Optional[str], Meta(title="fee_currency")]] = None
1700
1337
  k: Optional[Annotated[Optional[FillKind], Meta(title="fill_kind")]] = None
@@ -1716,7 +1353,7 @@ class AberrantFill(Struct, omit_defaults=True):
1716
1353
  account: Optional[str] = None,
1717
1354
  recv_time_ns: Optional[int] = None,
1718
1355
  recv_time: Optional[int] = None,
1719
- direction: Optional[OrderDir] = None,
1356
+ dir: Optional[OrderDir] = None,
1720
1357
  fee: Optional[Decimal] = None,
1721
1358
  fee_currency: Optional[str] = None,
1722
1359
  fill_kind: Optional[FillKind] = None,
@@ -1735,7 +1372,7 @@ class AberrantFill(Struct, omit_defaults=True):
1735
1372
  account,
1736
1373
  recv_time_ns,
1737
1374
  recv_time,
1738
- direction,
1375
+ dir,
1739
1376
  fee,
1740
1377
  fee_currency,
1741
1378
  fill_kind,
@@ -1750,7 +1387,7 @@ class AberrantFill(Struct, omit_defaults=True):
1750
1387
  )
1751
1388
 
1752
1389
  def __str__(self) -> str:
1753
- 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})"
1754
1391
 
1755
1392
  @property
1756
1393
  def fill_id(self) -> str:
@@ -1793,11 +1430,11 @@ class AberrantFill(Struct, omit_defaults=True):
1793
1430
  self.ats = value
1794
1431
 
1795
1432
  @property
1796
- def direction(self) -> Optional[OrderDir]:
1433
+ def dir(self) -> Optional[OrderDir]:
1797
1434
  return self.d
1798
1435
 
1799
- @direction.setter
1800
- def direction(self, value: Optional[OrderDir]) -> None:
1436
+ @dir.setter
1437
+ def dir(self, value: Optional[OrderDir]) -> None:
1801
1438
  self.d = value
1802
1439
 
1803
1440
  @property
@@ -1988,7 +1625,7 @@ class ExecutionInfo(Struct, omit_defaults=True):
1988
1625
 
1989
1626
 
1990
1627
  class Fill(Struct, omit_defaults=True):
1991
- d: Annotated[OrderDir, Meta(title="direction")]
1628
+ d: Annotated[OrderDir, Meta(title="dir")]
1992
1629
  id: Annotated[str, Meta(title="fill_id")]
1993
1630
  k: Annotated[FillKind, Meta(title="fill_kind")]
1994
1631
  p: Annotated[Decimal, Meta(title="price")]
@@ -2039,7 +1676,7 @@ class Fill(Struct, omit_defaults=True):
2039
1676
  @classmethod
2040
1677
  def new(
2041
1678
  cls,
2042
- direction: OrderDir,
1679
+ dir: OrderDir,
2043
1680
  fill_id: str,
2044
1681
  fill_kind: FillKind,
2045
1682
  price: Decimal,
@@ -2059,7 +1696,7 @@ class Fill(Struct, omit_defaults=True):
2059
1696
  exchange_fill_id: Optional[str] = None,
2060
1697
  ):
2061
1698
  return cls(
2062
- direction,
1699
+ dir,
2063
1700
  fill_id,
2064
1701
  fill_kind,
2065
1702
  price,
@@ -2080,14 +1717,14 @@ class Fill(Struct, omit_defaults=True):
2080
1717
  )
2081
1718
 
2082
1719
  def __str__(self) -> str:
2083
- 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})"
2084
1721
 
2085
1722
  @property
2086
- def direction(self) -> OrderDir:
1723
+ def dir(self) -> OrderDir:
2087
1724
  return self.d
2088
1725
 
2089
- @direction.setter
2090
- def direction(self, value: OrderDir) -> None:
1726
+ @dir.setter
1727
+ def dir(self, value: OrderDir) -> None:
2091
1728
  self.d = value
2092
1729
 
2093
1730
  @property
@@ -2227,11 +1864,90 @@ class Fill(Struct, omit_defaults=True):
2227
1864
  self.xid = value
2228
1865
 
2229
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
+
2230
1946
  class OptionsSeriesInfo(Struct, omit_defaults=True):
2231
1947
  derivative_kind: DerivativeKind
2232
1948
  exercise_type: OptionsExerciseType
2233
1949
  expiration_time_of_day: time
2234
- expiration_time_zone: TimeZone
1950
+ expiration_time_zone: str
2235
1951
  is_cash_settled: bool
2236
1952
  multiplier: Decimal
2237
1953
  options_series: str
@@ -2247,7 +1963,7 @@ class OptionsSeriesInfo(Struct, omit_defaults=True):
2247
1963
  derivative_kind: DerivativeKind,
2248
1964
  exercise_type: OptionsExerciseType,
2249
1965
  expiration_time_of_day: time,
2250
- expiration_time_zone: TimeZone,
1966
+ expiration_time_zone: str,
2251
1967
  is_cash_settled: bool,
2252
1968
  multiplier: Decimal,
2253
1969
  options_series: str,
@@ -2352,25 +2068,41 @@ class OrderCanceling(Struct, omit_defaults=True):
2352
2068
 
2353
2069
  class OrderReject(Struct, omit_defaults=True):
2354
2070
  id: OrderId
2355
- r: OrderRejectReason
2356
- rm: Optional[str] = None
2071
+ r: Annotated[OrderRejectReason, Meta(title="reject_reason")]
2072
+ rm: Optional[Annotated[Optional[str], Meta(title="message")]] = None
2357
2073
 
2358
2074
  # Constructor that takes all field titles as arguments for convenience
2359
2075
  @classmethod
2360
2076
  def new(
2361
2077
  cls,
2362
2078
  id: OrderId,
2363
- r: OrderRejectReason,
2364
- rm: Optional[str] = None,
2079
+ reject_reason: OrderRejectReason,
2080
+ message: Optional[str] = None,
2365
2081
  ):
2366
2082
  return cls(
2367
2083
  id,
2368
- r,
2369
- rm,
2084
+ reject_reason,
2085
+ message,
2370
2086
  )
2371
2087
 
2372
2088
  def __str__(self) -> str:
2373
- 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
2374
2106
 
2375
2107
 
2376
2108
  class SnapshotOrUpdateForAliasKindAndSnapshotOrUpdateForStringAndString1(
@@ -2512,44 +2244,6 @@ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndProductCatalogInfo = Uni
2512
2244
  ]
2513
2245
 
2514
2246
 
2515
- class TwapParams(Struct, omit_defaults=True):
2516
- dir: OrderDir
2517
- end_time: datetime
2518
- execution_venue: str
2519
- interval: HumanDuration
2520
- quantity: Decimal
2521
- reject_lockout: HumanDuration
2522
- symbol: str
2523
- take_through_frac: Optional[Decimal] = None
2524
-
2525
- # Constructor that takes all field titles as arguments for convenience
2526
- @classmethod
2527
- def new(
2528
- cls,
2529
- dir: OrderDir,
2530
- end_time: datetime,
2531
- execution_venue: str,
2532
- interval: HumanDuration,
2533
- quantity: Decimal,
2534
- reject_lockout: HumanDuration,
2535
- symbol: str,
2536
- take_through_frac: Optional[Decimal] = None,
2537
- ):
2538
- return cls(
2539
- dir,
2540
- end_time,
2541
- execution_venue,
2542
- interval,
2543
- quantity,
2544
- reject_lockout,
2545
- symbol,
2546
- take_through_frac,
2547
- )
2548
-
2549
- def __str__(self) -> str:
2550
- 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})"
2551
-
2552
-
2553
2247
  class Account(Struct, omit_defaults=True):
2554
2248
  id: str
2555
2249
  name: AccountName
@@ -2590,6 +2284,29 @@ class FutureSpread(Struct, omit_defaults=True):
2590
2284
  return f"FutureSpread(legs={self.legs},product_type={self.product_type})"
2591
2285
 
2592
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
+
2593
2310
  class SnapshotOrUpdateForStringAndExecutionInfo1(Struct, omit_defaults=True):
2594
2311
  snapshot: Dict[str, ExecutionInfo]
2595
2312
 
@@ -2672,33 +2389,6 @@ EventContractSeriesInstance = Union[
2672
2389
  ]
2673
2390
 
2674
2391
 
2675
- class OptionsSeriesInstance(Struct, omit_defaults=True):
2676
- """
2677
- A specific option from a series.
2678
- """
2679
-
2680
- expiration: datetime
2681
- put_or_call: PutOrCall
2682
- strike: Decimal
2683
-
2684
- # Constructor that takes all field titles as arguments for convenience
2685
- @classmethod
2686
- def new(
2687
- cls,
2688
- expiration: datetime,
2689
- put_or_call: PutOrCall,
2690
- strike: Decimal,
2691
- ):
2692
- return cls(
2693
- expiration,
2694
- put_or_call,
2695
- strike,
2696
- )
2697
-
2698
- def __str__(self) -> str:
2699
- return f"OptionsSeriesInstance(expiration={self.expiration},put_or_call={self.put_or_call},strike={self.strike})"
2700
-
2701
-
2702
2392
  class AccountWithPermissions(Struct, omit_defaults=True):
2703
2393
  account: Account
2704
2394
  permissions: AccountPermissions
@@ -2769,29 +2459,6 @@ SnapshotOrUpdateForStringAndSnapshotOrUpdateForStringAndExecutionInfo = Union[
2769
2459
  ]
2770
2460
 
2771
2461
 
2772
- class Option(Struct, omit_defaults=True):
2773
- instance: OptionsSeriesInstance
2774
- product_type: Literal["Option"]
2775
- series: str
2776
-
2777
- # Constructor that takes all field titles as arguments for convenience
2778
- @classmethod
2779
- def new(
2780
- cls,
2781
- instance: OptionsSeriesInstance,
2782
- product_type: Literal["Option"],
2783
- series: str,
2784
- ):
2785
- return cls(
2786
- instance,
2787
- product_type,
2788
- series,
2789
- )
2790
-
2791
- def __str__(self) -> str:
2792
- return f"Option(instance={self.instance},product_type={self.product_type},series={self.series})"
2793
-
2794
-
2795
2462
  class EventContract(Struct, omit_defaults=True):
2796
2463
  instance: EventContractSeriesInstance
2797
2464
  product_type: Literal["EventContract"]