ibflex2 1.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.
ibflex/Types.py ADDED
@@ -0,0 +1,2823 @@
1
+ # coding: utf-8
2
+ """Python data types for IB Flex format XML data.
3
+
4
+ These class definitions are introspected by ibflex.parser to type-convert
5
+ IB data. They're dataclasses, made immutable by passing `Frozen=True` to the
6
+ class decorator. Class attributes are annotated with PEP 484 type hints.
7
+
8
+ Except for the top-level XML elements, i.e. <FlexQueryResponse>,
9
+ <FlexStatements>, and <FlexStatement>, the Flex format cleanly differentiates
10
+ between data-bearing elements and container elements. Data elements hold
11
+ their values in XML element attributes; container elements are sequences
12
+ of child elements (usually data elements, but sometimes other containers).
13
+
14
+ XML element attributes are represented by class attributes hinted with the
15
+ Python type to which their values should be converted. Almost all are marked
16
+ `Optional`, since Flex report configuration allows any of them to be included
17
+ or omitted individually. Default value is `None` for a single value, or an
18
+ empty tuple for a sequence.
19
+
20
+ Specifically defined enums are an exception; the parser handles missing values
21
+ for them, so you shouldn't specify a default value. The enums therefore need
22
+ to come first in the class definition to avoid offending dataclass.
23
+
24
+ Some data elements have XML attributes whose values are sequences delimited by
25
+ commas or semicolons. These are represented as by class attributes hinted as
26
+ a variable-length `Tuple` of their sequence item type (`str` or an Enum type).
27
+
28
+ XML container elements are represented as variable-length `Tuple` of contained
29
+ child type.
30
+
31
+
32
+ TODO - need types for:
33
+ FdicInsuredDepositsByBank
34
+ ComplexPositions
35
+ HKIPOSubscriptionActivity
36
+ PendingExcercises
37
+ FxTransactions
38
+ UnbookedTrades
39
+ RoutingCommissions
40
+ IBGNoteTransactions
41
+ Adjustments
42
+ SoftDollars
43
+ CFDCharges
44
+ SLBOpenContracts
45
+ HKIPOOpenSubscriptions
46
+ """
47
+ # PEP 563 compliance
48
+ # https://www.python.org/dev/peps/pep-0563/#resolving-type-hints-at-runtime
49
+ from __future__ import annotations
50
+
51
+ __all__ = [
52
+ "FlexElement",
53
+ "FlexQueryResponse",
54
+ "FlexStatement",
55
+ "AccountInformation",
56
+ "ChangeInNAV",
57
+ "MTMPerformanceSummaryUnderlying",
58
+ "EquitySummaryByReportDateInBase",
59
+ "MTDYTDPerformanceSummaryUnderlying",
60
+ "CashReportCurrency",
61
+ "FIFOPerformanceSummaryUnderlying",
62
+ "NetStockPosition",
63
+ "UnsettledTransfer",
64
+ "UnbundledCommissionDetail",
65
+ "StatementOfFundsLine",
66
+ "ChangeInPositionValue",
67
+ "OpenPosition",
68
+ "FxLot",
69
+ "Trade",
70
+ "TradeConfirm",
71
+ "OptionEAE",
72
+ "TradeTransfer",
73
+ "TierInterestDetail",
74
+ "HardToBorrowDetail",
75
+ "InterestAccrualsCurrency",
76
+ "SLBActivity",
77
+ "Transfer",
78
+ "CorporateAction",
79
+ "FxTransaction",
80
+ "CashTransaction",
81
+ "ChangeInDividendAccrual",
82
+ "OpenDividendAccrual",
83
+ "SecurityInfo",
84
+ "ConversionRate",
85
+ "PriorPeriodPosition",
86
+ "ClientFee",
87
+ "ClientFeesDetail",
88
+ "SalesTax",
89
+ "DebitCardActivity",
90
+ "SymbolSummary",
91
+ "AssetSummary",
92
+ "Order",
93
+ ]
94
+
95
+ import datetime
96
+ import decimal
97
+ from dataclasses import dataclass
98
+ from typing import Tuple, Optional
99
+
100
+ from ibflex import enums
101
+
102
+
103
+ @dataclass(frozen=True)
104
+ class FlexElement:
105
+ """Base class for data element types"""
106
+
107
+
108
+ @dataclass(frozen=True)
109
+ class FlexQueryResponse(FlexElement):
110
+ """Root element"""
111
+
112
+ queryName: str
113
+ type: str
114
+ FlexStatements: Tuple["FlexStatement", ...]
115
+ Message: Optional[str] = None
116
+
117
+ def __repr__(self):
118
+ repr = (
119
+ f"{type(self).__name__}("
120
+ f"queryName={self.queryName!r}, "
121
+ f"type={self.type!r}, "
122
+ f"len(FlexStatements)={len(self.FlexStatements)}"
123
+ f"Message={self.Message!r}"
124
+ ")"
125
+ )
126
+ return repr
127
+
128
+
129
+ @dataclass(frozen=True)
130
+ class FlexStatement(FlexElement):
131
+ """Wrapped in <FlexStatements>"""
132
+
133
+ accountId: str
134
+ fromDate: datetime.date
135
+ toDate: datetime.date
136
+ period: str
137
+ whenGenerated: datetime.datetime
138
+ AccountInformation: Optional["_AccountInformation"] = None
139
+ ChangeInNAV: Optional["_ChangeInNAV"] = None
140
+ CashReport: Tuple["CashReportCurrency", ...] = ()
141
+ MTDYTDPerformanceSummary: Tuple["MTDYTDPerformanceSummaryUnderlying", ...] = ()
142
+ MTMPerformanceSummaryInBase: Tuple["MTMPerformanceSummaryUnderlying", ...] = ()
143
+ EquitySummaryInBase: Tuple["EquitySummaryByReportDateInBase", ...] = ()
144
+ FIFOPerformanceSummaryInBase: Tuple["FIFOPerformanceSummaryUnderlying", ...] = ()
145
+ FdicInsuredDepositsByBank: Tuple = () # TODO
146
+ StmtFunds: Tuple["StatementOfFundsLine", ...] = ()
147
+ ChangeInPositionValues: Tuple["ChangeInPositionValue", ...] = ()
148
+ OpenPositions: Tuple["OpenPosition", ...] = ()
149
+ NetStockPositionSummary: Tuple["NetStockPosition", ...] = ()
150
+ ComplexPositions: Tuple = () # TODO
151
+ FxPositions: Tuple["FxLot", ...] = () # N.B. FXLot wrapped in FxLots
152
+ Trades: Tuple["Trade", ...] = ()
153
+ HKIPOSubscriptionActivity: Tuple = () # TODO
154
+ TradeConfirms: Tuple["TradeConfirm", ...] = ()
155
+ TransactionTaxes: Tuple = ()
156
+ OptionEAE: Tuple["_OptionEAE", ...] = ()
157
+ # Not a typo - they really spell it "Excercises"
158
+ PendingExcercises: Tuple = () # TODO
159
+ TradeTransfers: Tuple["TradeTransfer", ...] = ()
160
+ FxTransactions: Tuple["FxTransaction", ...] = ()
161
+ UnbookedTrades: Tuple = () # TODO
162
+ RoutingCommissions: Tuple = () # TODO
163
+ IBGNoteTransactions: Tuple = () # TODO
164
+ UnsettledTransfers: Tuple["UnsettledTransfer", ...] = ()
165
+ UnbundledCommissionDetails: Tuple["UnbundledCommissionDetail", ...] = ()
166
+ Adjustments: Tuple = () # TODO
167
+ PriorPeriodPositions: Tuple["PriorPeriodPosition", ...] = ()
168
+ CorporateActions: Tuple["CorporateAction", ...] = ()
169
+ ClientFees: Tuple["ClientFee", ...] = ()
170
+ ClientFeesDetail: Tuple["_ClientFeesDetail", ...] = ()
171
+ DebitCardActivities: Tuple["DebitCardActivity", ...] = ()
172
+ SoftDollars: Tuple = () # TODO
173
+ CashTransactions: Tuple["CashTransaction", ...] = ()
174
+ SalesTaxes: Tuple["SalesTax", ...] = ()
175
+ CFDCharges: Tuple = () # TODO
176
+ InterestAccruals: Tuple["InterestAccrualsCurrency", ...] = ()
177
+ TierInterestDetails: Tuple["TierInterestDetail", ...] = ()
178
+ HardToBorrowDetails: Tuple["HardToBorrowDetail", ...] = ()
179
+ HardToBorrowMarkupDetails: Tuple = ()
180
+ SLBOpenContracts: Tuple["SLBOpenContract", ...] = ()
181
+ SLBActivities: Tuple["SLBActivity", ...] = ()
182
+ SLBFees: Tuple["SLBFee", ...] = ()
183
+ Transfers: Tuple["Transfer", ...] = ()
184
+ ChangeInDividendAccruals: Tuple["_ChangeInDividendAccrual", ...] = ()
185
+ OpenDividendAccruals: Tuple["OpenDividendAccrual", ...] = ()
186
+ SecuritiesInfo: Tuple["SecurityInfo", ...] = ()
187
+ ConversionRates: Tuple["ConversionRate", ...] = ()
188
+ HKIPOOpenSubscriptions: Tuple = () # TODO
189
+ CommissionCredits: Tuple = () # TODO
190
+ StockGrantActivities: Tuple = () # TODO
191
+ SLBCollaterals: Tuple = () # TODO
192
+ IncentiveCouponAccrualDetails: Tuple = () # TODO
193
+ DepositsOnHold: Tuple = () # TODO
194
+
195
+ def __repr__(self):
196
+ repr = (
197
+ f"{type(self).__name__}("
198
+ f"accountId={self.accountId!r}, "
199
+ f"fromDate={self.fromDate!r}, "
200
+ f"toDate={self.toDate!r}, "
201
+ f"period={self.period!r}, "
202
+ f"whenGenerated={self.whenGenerated!r}"
203
+ )
204
+
205
+ sequences = (
206
+ (k, getattr(self, k))
207
+ for k, v in self.__annotations__.items()
208
+ if hasattr(v, "__origin__") and v.__origin__ is tuple
209
+ )
210
+ nonempty_sequences = ", ".join(
211
+ f"len({name})={len(value)}" for (name, value) in sequences if value
212
+ )
213
+ if nonempty_sequences:
214
+ repr += ", "
215
+ for seq in nonempty_sequences:
216
+ repr += seq
217
+ repr += ")"
218
+ return repr
219
+
220
+
221
+ @dataclass(frozen=True)
222
+ class AccountInformation(FlexElement):
223
+ """Child of <FlexStatement>"""
224
+
225
+ accountId: Optional[str] = None
226
+ acctAlias: Optional[str] = None
227
+ model: Optional[str] = None
228
+ currency: Optional[str] = None
229
+ name: Optional[str] = None
230
+ accountType: Optional[str] = None
231
+ customerType: Optional[str] = None
232
+ accountCapabilities: Tuple[str, ...] = ()
233
+ tradingPermissions: Tuple[str, ...] = ()
234
+ registeredRepName: Optional[str] = None
235
+ registeredRepPhone: Optional[str] = None
236
+ dateOpened: Optional[datetime.date] = None
237
+ dateFunded: Optional[datetime.date] = None
238
+ dateClosed: Optional[datetime.date] = None
239
+ street: Optional[str] = None
240
+ street2: Optional[str] = None
241
+ city: Optional[str] = None
242
+ state: Optional[str] = None
243
+ country: Optional[str] = None
244
+ postalCode: Optional[str] = None
245
+ streetResidentialAddress: Optional[str] = None
246
+ street2ResidentialAddress: Optional[str] = None
247
+ cityResidentialAddress: Optional[str] = None
248
+ stateResidentialAddress: Optional[str] = None
249
+ countryResidentialAddress: Optional[str] = None
250
+ postalCodeResidentialAddress: Optional[str] = None
251
+ masterName: Optional[str] = None
252
+ ibEntity: Optional[str] = None
253
+ primaryEmail: Optional[str] = None
254
+ accountRepName: Optional[str] = None
255
+ accountRepPhone: Optional[str] = None
256
+ lastTradedDate: Optional[datetime.date] = None
257
+
258
+
259
+ # Type alias to work around https://github.com/python/mypy/issues/1775
260
+ _AccountInformation = AccountInformation
261
+
262
+
263
+ @dataclass(frozen=True)
264
+ class ChangeInNAV(FlexElement):
265
+ """Child of <FlexStatement>"""
266
+
267
+ accountId: Optional[str] = None
268
+ acctAlias: Optional[str] = None
269
+ model: Optional[str] = None
270
+ fromDate: Optional[datetime.date] = None
271
+ toDate: Optional[datetime.date] = None
272
+ startingValue: Optional[decimal.Decimal] = None
273
+ mtm: Optional[decimal.Decimal] = None
274
+ realized: Optional[decimal.Decimal] = None
275
+ changeInUnrealized: Optional[decimal.Decimal] = None
276
+ costAdjustments: Optional[decimal.Decimal] = None
277
+ transferredPnlAdjustments: Optional[decimal.Decimal] = None
278
+ depositsWithdrawals: Optional[decimal.Decimal] = None
279
+ internalCashTransfers: Optional[decimal.Decimal] = None
280
+ assetTransfers: Optional[decimal.Decimal] = None
281
+ debitCardActivity: Optional[decimal.Decimal] = None
282
+ billPay: Optional[decimal.Decimal] = None
283
+ dividends: Optional[decimal.Decimal] = None
284
+ withholdingTax: Optional[decimal.Decimal] = None
285
+ withholding871m: Optional[decimal.Decimal] = None
286
+ withholdingTaxCollected: Optional[decimal.Decimal] = None
287
+ changeInDividendAccruals: Optional[decimal.Decimal] = None
288
+ interest: Optional[decimal.Decimal] = None
289
+ changeInInterestAccruals: Optional[decimal.Decimal] = None
290
+ advisorFees: Optional[decimal.Decimal] = None
291
+ brokerFees: Optional[decimal.Decimal] = None
292
+ changeInBrokerFeeAccruals: Optional[decimal.Decimal] = None
293
+ clientFees: Optional[decimal.Decimal] = None
294
+ otherFees: Optional[decimal.Decimal] = None
295
+ feesReceivables: Optional[decimal.Decimal] = None
296
+ commissions: Optional[decimal.Decimal] = None
297
+ commissionReceivables: Optional[decimal.Decimal] = None
298
+ forexCommissions: Optional[decimal.Decimal] = None
299
+ transactionTax: Optional[decimal.Decimal] = None
300
+ taxReceivables: Optional[decimal.Decimal] = None
301
+ salesTax: Optional[decimal.Decimal] = None
302
+ softDollars: Optional[decimal.Decimal] = None
303
+ netFxTrading: Optional[decimal.Decimal] = None
304
+ fxTranslation: Optional[decimal.Decimal] = None
305
+ linkingAdjustments: Optional[decimal.Decimal] = None
306
+ other: Optional[decimal.Decimal] = None
307
+ endingValue: Optional[decimal.Decimal] = None
308
+ twr: Optional[decimal.Decimal] = None
309
+ corporateActionProceeds: Optional[decimal.Decimal] = None
310
+ commissionCreditsRedemption: Optional[decimal.Decimal] = None
311
+ grantActivity: Optional[decimal.Decimal] = None
312
+ excessFundSweep: Optional[decimal.Decimal] = None
313
+ billableSalesTax: Optional[decimal.Decimal] = None
314
+ mtmAtPaxos: Optional[decimal.Decimal] = None
315
+ carbonCredits: Optional[decimal.Decimal] = None
316
+ donations: Optional[decimal.Decimal] = None
317
+ paxosTransfers: Optional[decimal.Decimal] = None
318
+ commissionsAtPaxos: Optional[decimal.Decimal] = None
319
+ referralFee: Optional[decimal.Decimal] = None
320
+ currency: Optional[str] = None
321
+ changeInIncentiveCouponAccruals: Optional[decimal.Decimal] = None
322
+ otherIncome: Optional[decimal.Decimal] = None
323
+
324
+ # Type alias to work around https://github.com/python/mypy/issues/1775
325
+ _ChangeInNAV = ChangeInNAV
326
+
327
+
328
+ @dataclass(frozen=True)
329
+ class MTMPerformanceSummaryUnderlying(FlexElement):
330
+ """Wrapped in <MTMPerformanceSummaryInBase>"""
331
+
332
+ assetCategory: Optional[enums.AssetClass] = None
333
+ accountId: Optional[str] = None
334
+ acctAlias: Optional[str] = None
335
+ model: Optional[str] = None
336
+ symbol: Optional[str] = None
337
+ description: Optional[str] = None
338
+ conid: Optional[str] = None
339
+ securityID: Optional[str] = None
340
+ securityIDType: Optional[str] = None
341
+ cusip: Optional[str] = None
342
+ isin: Optional[str] = None
343
+ sedol: Optional[str] = None
344
+ listingExchange: Optional[str] = None
345
+ underlyingConid: Optional[str] = None
346
+ underlyingSymbol: Optional[str] = None
347
+ underlyingSecurityID: Optional[str] = None
348
+ underlyingListingExchange: Optional[str] = None
349
+ issuer: Optional[str] = None
350
+ multiplier: Optional[decimal.Decimal] = None
351
+ strike: Optional[decimal.Decimal] = None
352
+ expiry: Optional[datetime.date] = None
353
+ putCall: Optional[enums.PutCall] = None
354
+ principalAdjustFactor: Optional[decimal.Decimal] = None
355
+ reportDate: Optional[datetime.date] = None
356
+ prevCloseQuantity: Optional[decimal.Decimal] = None
357
+ prevClosePrice: Optional[decimal.Decimal] = None
358
+ closeQuantity: Optional[decimal.Decimal] = None
359
+ closePrice: Optional[decimal.Decimal] = None
360
+ transactionMtm: Optional[decimal.Decimal] = None
361
+ priorOpenMtm: Optional[decimal.Decimal] = None
362
+ commissions: Optional[decimal.Decimal] = None
363
+ other: Optional[decimal.Decimal] = None
364
+ total: Optional[decimal.Decimal] = None
365
+ code: Tuple[enums.Code, ...] = ()
366
+ corpActionMtm: Optional[decimal.Decimal] = None
367
+ dividends: Optional[decimal.Decimal] = None
368
+ serialNumber: Optional[str] = None
369
+ deliveryType: Optional[str] = None
370
+ commodityType: Optional[str] = None
371
+ fineness: Optional[decimal.Decimal] = None
372
+ weight: Optional[str] = None
373
+ otherWithAccruals: Optional[decimal.Decimal] = None
374
+ totalWithAccruals: Optional[decimal.Decimal] = None
375
+ subCategory: Optional[str] = None
376
+ figi: Optional[str] = None
377
+ issuerCountryCode: Optional[str] = None
378
+
379
+ @dataclass(frozen=True)
380
+ class EquitySummaryByReportDateInBase(FlexElement):
381
+ """Wrapped in <EquitySummaryInBase>"""
382
+
383
+ accountId: Optional[str] = None
384
+ acctAlias: Optional[str] = None
385
+ model: Optional[str] = None
386
+ currency: Optional[str] = None
387
+ reportDate: Optional[datetime.date] = None
388
+ cash: Optional[decimal.Decimal] = None
389
+ cashLong: Optional[decimal.Decimal] = None
390
+ cashShort: Optional[decimal.Decimal] = None
391
+ slbCashCollateral: Optional[decimal.Decimal] = None
392
+ slbCashCollateralLong: Optional[decimal.Decimal] = None
393
+ slbCashCollateralShort: Optional[decimal.Decimal] = None
394
+ stock: Optional[decimal.Decimal] = None
395
+ stockLong: Optional[decimal.Decimal] = None
396
+ stockShort: Optional[decimal.Decimal] = None
397
+ slbDirectSecuritiesBorrowed: Optional[decimal.Decimal] = None
398
+ slbDirectSecuritiesBorrowedLong: Optional[decimal.Decimal] = None
399
+ slbDirectSecuritiesBorrowedShort: Optional[decimal.Decimal] = None
400
+ slbDirectSecuritiesLent: Optional[decimal.Decimal] = None
401
+ slbDirectSecuritiesLentLong: Optional[decimal.Decimal] = None
402
+ slbDirectSecuritiesLentShort: Optional[decimal.Decimal] = None
403
+ options: Optional[decimal.Decimal] = None
404
+ optionsLong: Optional[decimal.Decimal] = None
405
+ optionsShort: Optional[decimal.Decimal] = None
406
+ bonds: Optional[decimal.Decimal] = None
407
+ bondsLong: Optional[decimal.Decimal] = None
408
+ bondsShort: Optional[decimal.Decimal] = None
409
+ bondInterestAccrualsComponent: Optional[decimal.Decimal] = None
410
+ bondInterestAccrualsComponentLong: Optional[decimal.Decimal] = None
411
+ bondInterestAccrualsComponentShort: Optional[decimal.Decimal] = None
412
+ notes: Optional[decimal.Decimal] = None
413
+ notesLong: Optional[decimal.Decimal] = None
414
+ notesShort: Optional[decimal.Decimal] = None
415
+ incentiveCouponAccruals: Optional[decimal.Decimal] = None
416
+ interestAccruals: Optional[decimal.Decimal] = None
417
+ interestAccrualsLong: Optional[decimal.Decimal] = None
418
+ interestAccrualsShort: Optional[decimal.Decimal] = None
419
+ softDollars: Optional[decimal.Decimal] = None
420
+ softDollarsLong: Optional[decimal.Decimal] = None
421
+ softDollarsShort: Optional[decimal.Decimal] = None
422
+ dividendAccruals: Optional[decimal.Decimal] = None
423
+ dividendAccrualsLong: Optional[decimal.Decimal] = None
424
+ dividendAccrualsShort: Optional[decimal.Decimal] = None
425
+ total: Optional[decimal.Decimal] = None
426
+ totalLong: Optional[decimal.Decimal] = None
427
+ totalShort: Optional[decimal.Decimal] = None
428
+ commodities: Optional[decimal.Decimal] = None
429
+ commoditiesLong: Optional[decimal.Decimal] = None
430
+ commoditiesShort: Optional[decimal.Decimal] = None
431
+ funds: Optional[decimal.Decimal] = None
432
+ fundsLong: Optional[decimal.Decimal] = None
433
+ fundsShort: Optional[decimal.Decimal] = None
434
+ forexCfdUnrealizedPl: Optional[decimal.Decimal] = None
435
+ forexCfdUnrealizedPlLong: Optional[decimal.Decimal] = None
436
+ forexCfdUnrealizedPlShort: Optional[decimal.Decimal] = None
437
+ brokerInterestAccrualsComponent: Optional[decimal.Decimal] = None
438
+ brokerCashComponent: Optional[decimal.Decimal] = None
439
+ brokerFeesAccrualsComponent: Optional[decimal.Decimal] = None
440
+ brokerFeesAccrualsComponentLong: Optional[decimal.Decimal] = None
441
+ brokerFeesAccrualsComponentShort: Optional[decimal.Decimal] = None
442
+ eventContractInterestAccruals: Optional[decimal.Decimal] = None
443
+ marginFinancingChargeAccruals: Optional[decimal.Decimal] = None
444
+ cfdUnrealizedPl: Optional[decimal.Decimal] = None
445
+ insuredBankDepositRedemptionCashComponent: Optional[decimal.Decimal] = None
446
+ fdicInsuredBankSweepAccount: Optional[decimal.Decimal] = None
447
+ fdicInsuredBankSweepAccountLong: Optional[decimal.Decimal] = None
448
+ fdicInsuredBankSweepAccountShort: Optional[decimal.Decimal] = None
449
+ fdicInsuredBankSweepAccountCashComponent: Optional[decimal.Decimal] = None
450
+ fdicInsuredBankSweepAccountCashComponentLong: Optional[decimal.Decimal] = None
451
+ fdicInsuredBankSweepAccountCashComponentShort: Optional[decimal.Decimal] = None
452
+ fdicInsuredAccountInterestAccruals: Optional[decimal.Decimal] = None
453
+ fdicInsuredAccountInterestAccrualsLong: Optional[decimal.Decimal] = None
454
+ fdicInsuredAccountInterestAccrualsShort: Optional[decimal.Decimal] = None
455
+ fdicInsuredAccountInterestAccrualsComponent: Optional[decimal.Decimal] = None
456
+ fdicInsuredAccountInterestAccrualsComponentLong: Optional[decimal.Decimal] = None
457
+ fdicInsuredAccountInterestAccrualsComponentShort: Optional[decimal.Decimal] = None
458
+ brokerCashComponentLong: Optional[decimal.Decimal] = None
459
+ brokerCashComponentShort: Optional[decimal.Decimal] = None
460
+ brokerInterestAccrualsComponentLong: Optional[decimal.Decimal] = None
461
+ brokerInterestAccrualsComponentShort: Optional[decimal.Decimal] = None
462
+ cfdUnrealizedPlLong: Optional[decimal.Decimal] = None
463
+ cfdUnrealizedPlShort: Optional[decimal.Decimal] = None
464
+ ipoSubscription: Optional[decimal.Decimal] = None
465
+ ipoSubscriptionLong: Optional[decimal.Decimal] = None
466
+ ipoSubscriptionShort: Optional[decimal.Decimal] = None
467
+ crypto: Optional[decimal.Decimal] = None
468
+ physDel: Optional[decimal.Decimal] = None
469
+ physDelLong: Optional[decimal.Decimal] = None
470
+ physDelShort: Optional[decimal.Decimal] = None
471
+ currency: Optional[str] = None
472
+ insuredBankDepositRedemptionCashComponentLong: Optional[decimal.Decimal] = None
473
+ insuredBankDepositRedemptionCashComponentShort: Optional[decimal.Decimal] = None
474
+ incentiveCouponAccrualsLong: Optional[decimal.Decimal] = None
475
+ incentiveCouponAccrualsShort: Optional[decimal.Decimal] = None
476
+ eventContractInterestAccrualsLong: Optional[decimal.Decimal] = None
477
+ eventContractInterestAccrualsShort: Optional[decimal.Decimal] = None
478
+ marginFinancingChargeAccrualsLong: Optional[decimal.Decimal] = None
479
+ marginFinancingChargeAccrualsShort: Optional[decimal.Decimal] = None
480
+ cryptoLong: Optional[decimal.Decimal] = None
481
+ cryptoShort: Optional[decimal.Decimal] = None
482
+
483
+
484
+ @dataclass(frozen=True)
485
+ class MTDYTDPerformanceSummaryUnderlying(FlexElement):
486
+ """Wrapped in <MTDYTDPerformanceSummary>"""
487
+
488
+ assetCategory: Optional[enums.AssetClass] = None
489
+ accountId: Optional[str] = None
490
+ acctAlias: Optional[str] = None
491
+ model: Optional[str] = None
492
+ symbol: Optional[str] = None
493
+ description: Optional[str] = None
494
+ conid: Optional[str] = None
495
+ securityID: Optional[str] = None
496
+ cusip: Optional[str] = None
497
+ isin: Optional[str] = None
498
+ listingExchange: Optional[str] = None
499
+ underlyingConid: Optional[str] = None
500
+ underlyingSecurityID: Optional[str] = None
501
+ underlyingListingExchange: Optional[str] = None
502
+ mtmMTD: Optional[decimal.Decimal] = None
503
+ mtmYTD: Optional[decimal.Decimal] = None
504
+ realSTMTD: Optional[decimal.Decimal] = None
505
+ realSTYTD: Optional[decimal.Decimal] = None
506
+ realLTMTD: Optional[decimal.Decimal] = None
507
+ realLTYTD: Optional[decimal.Decimal] = None
508
+ securityIDType: Optional[str] = None
509
+ underlyingSymbol: Optional[str] = None
510
+ issuer: Optional[str] = None
511
+ multiplier: Optional[decimal.Decimal] = None
512
+ strike: Optional[decimal.Decimal] = None
513
+ expiry: Optional[datetime.date] = None
514
+ putCall: Optional[enums.PutCall] = None
515
+ principalAdjustFactor: Optional[decimal.Decimal] = None
516
+ realizedPnlMTD: Optional[decimal.Decimal] = None
517
+ realizedCapitalGainsPnlMTD: Optional[decimal.Decimal] = None
518
+ realizedFxPnlMTD: Optional[decimal.Decimal] = None
519
+ realizedPnlYTD: Optional[decimal.Decimal] = None
520
+ realizedCapitalGainsPnlYTD: Optional[decimal.Decimal] = None
521
+ realizedFxPnlYTD: Optional[decimal.Decimal] = None
522
+ brokerFees: Optional[decimal.Decimal] = None
523
+ brokerFeesSec: Optional[decimal.Decimal] = None
524
+ brokerFeesCom: Optional[decimal.Decimal] = None
525
+ brokerFeesMTD: Optional[decimal.Decimal] = None
526
+ brokerFeesYTD: Optional[decimal.Decimal] = None
527
+ serialNumber: Optional[str] = None
528
+ deliveryType: Optional[str] = None
529
+ commodityType: Optional[str] = None
530
+ fineness: Optional[decimal.Decimal] = None
531
+ weight: Optional[str] = None
532
+
533
+
534
+ @dataclass(frozen=True)
535
+ class CashReportCurrency(FlexElement):
536
+ """Wrapped in <CashReport>"""
537
+
538
+ accountId: Optional[str] = None
539
+ currency: Optional[str] = None
540
+ fromDate: Optional[datetime.date] = None
541
+ toDate: Optional[datetime.date] = None
542
+ startingCash: Optional[decimal.Decimal] = None
543
+ startingCashPaxos: Optional[decimal.Decimal] = None
544
+ startingCashSec: Optional[decimal.Decimal] = None
545
+ startingCashCom: Optional[decimal.Decimal] = None
546
+ clientFees: Optional[decimal.Decimal] = None
547
+ clientFeesSec: Optional[decimal.Decimal] = None
548
+ clientFeesCom: Optional[decimal.Decimal] = None
549
+ commissions: Optional[decimal.Decimal] = None
550
+ commissionsSec: Optional[decimal.Decimal] = None
551
+ commissionsCom: Optional[decimal.Decimal] = None
552
+ billableCommissions: Optional[decimal.Decimal] = None
553
+ billableCommissionsSec: Optional[decimal.Decimal] = None
554
+ billableCommissionsCom: Optional[decimal.Decimal] = None
555
+ billableSalesTaxIBUKL: Optional[decimal.Decimal] = None
556
+ depositWithdrawals: Optional[decimal.Decimal] = None
557
+ depositWithdrawalsSec: Optional[decimal.Decimal] = None
558
+ depositWithdrawalsCom: Optional[decimal.Decimal] = None
559
+ deposits: Optional[decimal.Decimal] = None
560
+ depositsSec: Optional[decimal.Decimal] = None
561
+ depositsCom: Optional[decimal.Decimal] = None
562
+ withdrawals: Optional[decimal.Decimal] = None
563
+ withdrawalsSec: Optional[decimal.Decimal] = None
564
+ withdrawalsCom: Optional[decimal.Decimal] = None
565
+ accountTransfers: Optional[decimal.Decimal] = None
566
+ accountTransfersSec: Optional[decimal.Decimal] = None
567
+ accountTransfersCom: Optional[decimal.Decimal] = None
568
+ internalTransfers: Optional[decimal.Decimal] = None
569
+ internalTransfersSec: Optional[decimal.Decimal] = None
570
+ internalTransfersCom: Optional[decimal.Decimal] = None
571
+ dividends: Optional[decimal.Decimal] = None
572
+ dividendsSec: Optional[decimal.Decimal] = None
573
+ dividendsCom: Optional[decimal.Decimal] = None
574
+ brokerFees: Optional[decimal.Decimal] = None
575
+ brokerFeesSec: Optional[decimal.Decimal] = None
576
+ brokerFeesCom: Optional[decimal.Decimal] = None
577
+ brokerFeesMTD: Optional[decimal.Decimal] = None
578
+ brokerFeesYTD: Optional[decimal.Decimal] = None
579
+ brokerFeesPaxos: Optional[decimal.Decimal] = None
580
+ brokerInterest: Optional[decimal.Decimal] = None
581
+ brokerInterestSec: Optional[decimal.Decimal] = None
582
+ brokerInterestCom: Optional[decimal.Decimal] = None
583
+ bondInterest: Optional[decimal.Decimal] = None
584
+ bondInterestSec: Optional[decimal.Decimal] = None
585
+ bondInterestCom: Optional[decimal.Decimal] = None
586
+ bondInterestPaxos: Optional[decimal.Decimal] = None
587
+ cashSettlingMtm: Optional[decimal.Decimal] = None
588
+ cashSettlingMtmSec: Optional[decimal.Decimal] = None
589
+ cashSettlingMtmCom: Optional[decimal.Decimal] = None
590
+ cfdCharges: Optional[decimal.Decimal] = None
591
+ cfdChargesSec: Optional[decimal.Decimal] = None
592
+ cfdChargesCom: Optional[decimal.Decimal] = None
593
+ netTradesSales: Optional[decimal.Decimal] = None
594
+ netTradesSalesSec: Optional[decimal.Decimal] = None
595
+ netTradesSalesCom: Optional[decimal.Decimal] = None
596
+ netTradesPurchases: Optional[decimal.Decimal] = None
597
+ netTradesPurchasesSec: Optional[decimal.Decimal] = None
598
+ netTradesPurchasesCom: Optional[decimal.Decimal] = None
599
+ feesReceivables: Optional[decimal.Decimal] = None
600
+ feesReceivablesSec: Optional[decimal.Decimal] = None
601
+ feesReceivablesCom: Optional[decimal.Decimal] = None
602
+ paymentInLieu: Optional[decimal.Decimal] = None
603
+ paymentInLieuSec: Optional[decimal.Decimal] = None
604
+ paymentInLieuCom: Optional[decimal.Decimal] = None
605
+ transactionTax: Optional[decimal.Decimal] = None
606
+ transactionTaxSec: Optional[decimal.Decimal] = None
607
+ transactionTaxCom: Optional[decimal.Decimal] = None
608
+ withholdingTax: Optional[decimal.Decimal] = None
609
+ withholdingTaxSec: Optional[decimal.Decimal] = None
610
+ withholdingTaxCom: Optional[decimal.Decimal] = None
611
+ fxTranslationGainLoss: Optional[decimal.Decimal] = None
612
+ fxTranslationGainLossSec: Optional[decimal.Decimal] = None
613
+ fxTranslationGainLossCom: Optional[decimal.Decimal] = None
614
+ fxTranslationGainLossPaxos: Optional[decimal.Decimal] = None
615
+ otherFees: Optional[decimal.Decimal] = None
616
+ otherFeesSec: Optional[decimal.Decimal] = None
617
+ otherFeesCom: Optional[decimal.Decimal] = None
618
+ endingCash: Optional[decimal.Decimal] = None
619
+ endingCashSec: Optional[decimal.Decimal] = None
620
+ endingCashCom: Optional[decimal.Decimal] = None
621
+ endingCashPaxos: Optional[decimal.Decimal] = None
622
+ endingSettledCash: Optional[decimal.Decimal] = None
623
+ endingSettledCashSec: Optional[decimal.Decimal] = None
624
+ endingSettledCashCom: Optional[decimal.Decimal] = None
625
+ endingSettledCashPaxos: Optional[decimal.Decimal] = None
626
+ endingCashIBUKL: Optional[decimal.Decimal] = None
627
+ clientFeesMTD: Optional[decimal.Decimal] = None
628
+ clientFeesYTD: Optional[decimal.Decimal] = None
629
+ clientFeesPaxos: Optional[decimal.Decimal] = None
630
+ commissionsMTD: Optional[decimal.Decimal] = None
631
+ commissionsYTD: Optional[decimal.Decimal] = None
632
+ commissionsPaxos: Optional[decimal.Decimal] = None
633
+ billableCommissionsMTD: Optional[decimal.Decimal] = None
634
+ billableCommissionsYTD: Optional[decimal.Decimal] = None
635
+ billableCommissionsPaxos: Optional[decimal.Decimal] = None
636
+ depositWithdrawalsMTD: Optional[decimal.Decimal] = None
637
+ depositWithdrawalsYTD: Optional[decimal.Decimal] = None
638
+ depositWithdrawalsPaxos: Optional[decimal.Decimal] = None
639
+ depositsMTD: Optional[decimal.Decimal] = None
640
+ depositsYTD: Optional[decimal.Decimal] = None
641
+ depositsPaxos: Optional[decimal.Decimal] = None
642
+ withdrawalsMTD: Optional[decimal.Decimal] = None
643
+ withdrawalsYTD: Optional[decimal.Decimal] = None
644
+ withdrawalsPaxos: Optional[decimal.Decimal] = None
645
+ accountTransfersMTD: Optional[decimal.Decimal] = None
646
+ accountTransfersYTD: Optional[decimal.Decimal] = None
647
+ accountTransfersPaxos: Optional[decimal.Decimal] = None
648
+ internalTransfersMTD: Optional[decimal.Decimal] = None
649
+ internalTransfersYTD: Optional[decimal.Decimal] = None
650
+ internalTransfersPaxos: Optional[decimal.Decimal] = None
651
+ paxosTransfersPaxos: Optional[decimal.Decimal] = None
652
+ excessFundSweep: Optional[decimal.Decimal] = None
653
+ excessFundSweepSec: Optional[decimal.Decimal] = None
654
+ excessFundSweepCom: Optional[decimal.Decimal] = None
655
+ excessFundSweepMTD: Optional[decimal.Decimal] = None
656
+ excessFundSweepYTD: Optional[decimal.Decimal] = None
657
+ excessFundSweepPaxos: Optional[decimal.Decimal] = None
658
+ dividendsMTD: Optional[decimal.Decimal] = None
659
+ dividendsYTD: Optional[decimal.Decimal] = None
660
+ dividendsPaxos: Optional[decimal.Decimal] = None
661
+ insuredDepositInterestMTD: Optional[decimal.Decimal] = None
662
+ insuredDepositInterestYTD: Optional[decimal.Decimal] = None
663
+ insuredDepositInteresPaxos: Optional[decimal.Decimal] = None
664
+ brokerInterestMTD: Optional[decimal.Decimal] = None
665
+ brokerInterestYTD: Optional[decimal.Decimal] = None
666
+ brokerInterestPaxos: Optional[decimal.Decimal] = None
667
+ bondInterestMTD: Optional[decimal.Decimal] = None
668
+ bondInterestYTD: Optional[decimal.Decimal] = None
669
+ cashSettlingMtmMTD: Optional[decimal.Decimal] = None
670
+ cashSettlingMtmYTD: Optional[decimal.Decimal] = None
671
+ cashSettlingMtmPaxos: Optional[decimal.Decimal] = None
672
+ realizedVmMTD: Optional[decimal.Decimal] = None
673
+ realizedVmYTD: Optional[decimal.Decimal] = None
674
+ realizedVmPaxos: Optional[decimal.Decimal] = None
675
+ cfdChargesMTD: Optional[decimal.Decimal] = None
676
+ cfdChargesYTD: Optional[decimal.Decimal] = None
677
+ cfdChargesPaxos: Optional[decimal.Decimal] = None
678
+ netTradesSalesMTD: Optional[decimal.Decimal] = None
679
+ netTradesSalesYTD: Optional[decimal.Decimal] = None
680
+ netTradesSalesPaxos: Optional[decimal.Decimal] = None
681
+ advisorFeesMTD: Optional[decimal.Decimal] = None
682
+ advisorFeesYTD: Optional[decimal.Decimal] = None
683
+ advisorFeePaxos: Optional[decimal.Decimal] = None
684
+ feesReceivablesMTD: Optional[decimal.Decimal] = None
685
+ feesReceivablesYTD: Optional[decimal.Decimal] = None
686
+ feesReceivablesPaxos: Optional[decimal.Decimal] = None
687
+ netTradesPurchasesMTD: Optional[decimal.Decimal] = None
688
+ netTradesPurchasesYTD: Optional[decimal.Decimal] = None
689
+ netTradesPurchasesPaxos: Optional[decimal.Decimal] = None
690
+ paymentInLieuMTD: Optional[decimal.Decimal] = None
691
+ paymentInLieuYTD: Optional[decimal.Decimal] = None
692
+ paymentInLieuPaxos: Optional[decimal.Decimal] = None
693
+ transactionTaxMTD: Optional[decimal.Decimal] = None
694
+ transactionTaxYTD: Optional[decimal.Decimal] = None
695
+ transactionTaxPaxos: Optional[decimal.Decimal] = None
696
+ taxReceivablesMTD: Optional[decimal.Decimal] = None
697
+ taxReceivablesYTD: Optional[decimal.Decimal] = None
698
+ taxReceivablesPaxos: Optional[decimal.Decimal] = None
699
+ withholdingTaxMTD: Optional[decimal.Decimal] = None
700
+ withholdingTaxYTD: Optional[decimal.Decimal] = None
701
+ withholdingTaxPaxos: Optional[decimal.Decimal] = None
702
+ withholding871mMTD: Optional[decimal.Decimal] = None
703
+ withholding871mYTD: Optional[decimal.Decimal] = None
704
+ withholding871mPaxos: Optional[decimal.Decimal] = None
705
+ withholdingCollectedTaxMTD: Optional[decimal.Decimal] = None
706
+ withholdingCollectedTaxYTD: Optional[decimal.Decimal] = None
707
+ withholdingCollectedTaxPaxos: Optional[decimal.Decimal] = None
708
+ salesTaxMTD: Optional[decimal.Decimal] = None
709
+ salesTaxYTD: Optional[decimal.Decimal] = None
710
+ salesTaxPaxos: Optional[decimal.Decimal] = None
711
+ otherIncome: Optional[decimal.Decimal] = None
712
+ otherIncomeSec: Optional[decimal.Decimal] = None
713
+ otherIncomeCom: Optional[decimal.Decimal] = None
714
+ otherFeesMTD: Optional[decimal.Decimal] = None
715
+ otherFeesYTD: Optional[decimal.Decimal] = None
716
+ otherFeesPaxos: Optional[decimal.Decimal] = None
717
+ acctAlias: Optional[str] = None
718
+ model: Optional[str] = None
719
+ avgCreditBalance: Optional[decimal.Decimal] = None
720
+ avgCreditBalanceSec: Optional[decimal.Decimal] = None
721
+ avgCreditBalanceCom: Optional[decimal.Decimal] = None
722
+ avgDebitBalance: Optional[decimal.Decimal] = None
723
+ avgDebitBalanceSec: Optional[decimal.Decimal] = None
724
+ avgDebitBalanceCom: Optional[decimal.Decimal] = None
725
+ linkingAdjustments: Optional[decimal.Decimal] = None
726
+ linkingAdjustmentsSec: Optional[decimal.Decimal] = None
727
+ linkingAdjustmentsCom: Optional[decimal.Decimal] = None
728
+ linkingAdjustmentsPaxos: Optional[decimal.Decimal] = None
729
+ insuredDepositInterest: Optional[decimal.Decimal] = None
730
+ insuredDepositInterestSec: Optional[decimal.Decimal] = None
731
+ insuredDepositInterestCom: Optional[decimal.Decimal] = None
732
+ insuredDepositInterestPaxos: Optional[decimal.Decimal] = None
733
+ realizedVm: Optional[decimal.Decimal] = None
734
+ realizedVmSec: Optional[decimal.Decimal] = None
735
+ realizedVmCom: Optional[decimal.Decimal] = None
736
+ advisorFees: Optional[decimal.Decimal] = None
737
+ advisorFeesSec: Optional[decimal.Decimal] = None
738
+ advisorFeesCom: Optional[decimal.Decimal] = None
739
+ advisorFeesPaxos: Optional[decimal.Decimal] = None
740
+ taxReceivables: Optional[decimal.Decimal] = None
741
+ taxReceivablesSec: Optional[decimal.Decimal] = None
742
+ taxReceivablesCom: Optional[decimal.Decimal] = None
743
+ withholding871m: Optional[decimal.Decimal] = None
744
+ withholding871mSec: Optional[decimal.Decimal] = None
745
+ withholding871mCom: Optional[decimal.Decimal] = None
746
+ withholdingCollectedTax: Optional[decimal.Decimal] = None
747
+ withholdingCollectedTaxSec: Optional[decimal.Decimal] = None
748
+ withholdingCollectedTaxCom: Optional[decimal.Decimal] = None
749
+ salesTax: Optional[decimal.Decimal] = None
750
+ salesTaxSec: Optional[decimal.Decimal] = None
751
+ salesTaxCom: Optional[decimal.Decimal] = None
752
+ other: Optional[decimal.Decimal] = None
753
+ otherSec: Optional[decimal.Decimal] = None
754
+ otherCom: Optional[decimal.Decimal] = None
755
+ otherPaxos: Optional[decimal.Decimal] = None
756
+ levelOfDetail: Optional[str] = None
757
+ debitCardActivity: Optional[decimal.Decimal] = None
758
+ debitCardActivitySec: Optional[decimal.Decimal] = None
759
+ debitCardActivityCom: Optional[decimal.Decimal] = None
760
+ debitCardActivityMTD: Optional[decimal.Decimal] = None
761
+ debitCardActivityYTD: Optional[decimal.Decimal] = None
762
+ debitCardActivityPaxos: Optional[decimal.Decimal] = None
763
+ billPay: Optional[decimal.Decimal] = None
764
+ billPaySec: Optional[decimal.Decimal] = None
765
+ billPayCom: Optional[decimal.Decimal] = None
766
+ billPayMTD: Optional[decimal.Decimal] = None
767
+ billPayYTD: Optional[decimal.Decimal] = None
768
+ billPayPaxos: Optional[decimal.Decimal] = None
769
+ realizedForexVm: Optional[decimal.Decimal] = None
770
+ realizedForexVmSec: Optional[decimal.Decimal] = None
771
+ realizedForexVmCom: Optional[decimal.Decimal] = None
772
+ realizedForexVmMTD: Optional[decimal.Decimal] = None
773
+ realizedForexVmYTD: Optional[decimal.Decimal] = None
774
+ realizedForexVmPaxos: Optional[decimal.Decimal] = None
775
+ ipoSubscription: Optional[decimal.Decimal] = None
776
+ ipoSubscriptionSec: Optional[decimal.Decimal] = None
777
+ ipoSubscriptionCom: Optional[decimal.Decimal] = None
778
+ ipoSubscriptionMTD: Optional[decimal.Decimal] = None
779
+ ipoSubscriptionYTD: Optional[decimal.Decimal] = None
780
+ ipoSubscriptionPaxos: Optional[decimal.Decimal] = None
781
+ billableSalesTax: Optional[decimal.Decimal] = None
782
+ billableSalesTaxSec: Optional[decimal.Decimal] = None
783
+ billableSalesTaxCom: Optional[decimal.Decimal] = None
784
+ billableSalesTaxMTD: Optional[decimal.Decimal] = None
785
+ billableSalesTaxYTD: Optional[decimal.Decimal] = None
786
+ billableSalesTaxPaxos: Optional[decimal.Decimal] = None
787
+ commissionCreditsRedemption: Optional[decimal.Decimal] = None
788
+ commissionCreditsRedemptionSec: Optional[decimal.Decimal] = None
789
+ commissionCreditsRedemptionCom: Optional[decimal.Decimal] = None
790
+ commissionCreditsRedemptionMTD: Optional[decimal.Decimal] = None
791
+ commissionCreditsRedemptionYTD: Optional[decimal.Decimal] = None
792
+ commissionCreditsRedemptionPaxos: Optional[decimal.Decimal] = None
793
+ referralFee: Optional[decimal.Decimal] = None
794
+ referralFeePaxos: Optional[decimal.Decimal] = None
795
+ referralFeeSec: Optional[decimal.Decimal] = None
796
+ referralFeeCom: Optional[decimal.Decimal] = None
797
+ referralFeeMTD: Optional[decimal.Decimal] = None
798
+ referralFeeYTD: Optional[decimal.Decimal] = None
799
+ carbonCredits: Optional[decimal.Decimal] = None
800
+ carbonCreditsSec: Optional[decimal.Decimal] = None
801
+ carbonCreditsCom: Optional[decimal.Decimal] = None
802
+ carbonCreditsMTD: Optional[decimal.Decimal] = None
803
+ carbonCreditsYTD: Optional[decimal.Decimal] = None
804
+ carbonCreditsPaxos: Optional[decimal.Decimal] = None
805
+ donations: Optional[decimal.Decimal] = None
806
+ donationsSec: Optional[decimal.Decimal] = None
807
+ donationsCom: Optional[decimal.Decimal] = None
808
+ donationsMTD: Optional[decimal.Decimal] = None
809
+ donationsYTD: Optional[decimal.Decimal] = None
810
+ donationsPaxos: Optional[decimal.Decimal] = None
811
+ paxosTransfers: Optional[decimal.Decimal] = None
812
+ paxosTransfersSec: Optional[decimal.Decimal] = None
813
+ paxosTransfersCom: Optional[decimal.Decimal] = None
814
+ paxosTransfersMTD: Optional[decimal.Decimal] = None
815
+ paxosTransfersYTD: Optional[decimal.Decimal] = None
816
+ slbStartingCashCollateral: Optional[decimal.Decimal] = None
817
+ slbStartingCashCollateralSec: Optional[decimal.Decimal] = None
818
+ slbStartingCashCollateralCom: Optional[decimal.Decimal] = None
819
+ slbStartingCashCollateralPaxos: Optional[decimal.Decimal] = None
820
+ slbNetSecuritiesLentActivity: Optional[decimal.Decimal] = None
821
+ slbNetSecuritiesLentActivityCom: Optional[decimal.Decimal] = None
822
+ slbNetSecuritiesLentActivitySec: Optional[decimal.Decimal] = None
823
+ slbNetSecuritiesLentActivityPaxos: Optional[decimal.Decimal] = None
824
+ slbEndingCashCollateral: Optional[decimal.Decimal] = None
825
+ slbEndingCashCollateralSec: Optional[decimal.Decimal] = None
826
+ slbEndingCashCollateralCom: Optional[decimal.Decimal] = None
827
+ slbEndingCashCollateralPaxos: Optional[decimal.Decimal] = None
828
+ slbNetCash: Optional[decimal.Decimal] = None
829
+ slbNetCashSec: Optional[decimal.Decimal] = None
830
+ slbNetCashCom: Optional[decimal.Decimal] = None
831
+ slbNetCashPaxos: Optional[decimal.Decimal] = None
832
+ slbNetSettledCash: Optional[decimal.Decimal] = None
833
+ slbNetSettledCashSec: Optional[decimal.Decimal] = None
834
+ slbNetSettledCashCom: Optional[decimal.Decimal] = None
835
+ slbNetSettledCashPaxos: Optional[decimal.Decimal] = None
836
+
837
+
838
+ @dataclass(frozen=True)
839
+ class CFDCharge(FlexElement):
840
+ """Wrapped in <CFDCharge>"""
841
+
842
+ assetCategory: Optional[enums.AssetClass] = None
843
+ accountId: Optional[str] = None
844
+ currency: Optional[str] = None
845
+ fxRateToBase: Optional[decimal.Decimal] = None
846
+ description: Optional[str] = None
847
+ conid: Optional[str] = None
848
+ securityID: Optional[str] = None
849
+ cusip: Optional[str] = None
850
+ isin: Optional[str] = None
851
+ listingExchange: Optional[str] = None
852
+ underlyingConid: Optional[str] = None
853
+ underlyingSecurityID: Optional[str] = None
854
+ underlyingListingExchange: Optional[str] = None
855
+ amount: Optional[decimal.Decimal] = None
856
+ dateTime: Optional[datetime.datetime] = None
857
+ sedol: Optional[str] = None
858
+ symbol: Optional[str] = None
859
+ securityIDType: Optional[str] = None
860
+ underlyingSymbol: Optional[str] = None
861
+ issuer: Optional[str] = None
862
+ multiplier: Optional[decimal.Decimal] = None
863
+ strike: Optional[decimal.Decimal] = None
864
+ expiry: Optional[datetime.date] = None
865
+ putCall: Optional[enums.PutCall] = None
866
+ principalAdjustFactor: Optional[decimal.Decimal] = None
867
+ tradeID: Optional[str] = None
868
+ code: Tuple[enums.Code, ...] = ()
869
+ transactionID: Optional[str] = None
870
+ reportDate: Optional[datetime.date] = None
871
+ date: Optional[datetime.date] = None
872
+ received: Optional[decimal.Decimal] = None
873
+ paid: Optional[decimal.Decimal] = None
874
+ total: Optional[decimal.Decimal] = None
875
+ transactionId: Optional[str] = None
876
+ activityDescription: Optional[str] = None
877
+ clientReference: Optional[str] = None
878
+ acctAlias: Optional[str] = None
879
+ model: Optional[str] = None
880
+ levelOfDetail: Optional[str] = None
881
+
882
+
883
+ @dataclass(frozen=True)
884
+ class StatementOfFundsLine(FlexElement):
885
+ """Wrapped in <StmtFunds>"""
886
+
887
+ assetCategory: Optional[enums.AssetClass] = None
888
+ accountId: Optional[str] = None
889
+ balance: Optional[decimal.Decimal] = None
890
+ debit: Optional[decimal.Decimal] = None
891
+ credit: Optional[decimal.Decimal] = None
892
+ currency: Optional[str] = None
893
+ tradeID: Optional[str] = None
894
+ # Despite the name, `date` actually contains date/time data.
895
+ date: Optional[datetime.datetime] = None
896
+ reportDate: Optional[datetime.date] = None
897
+ activityDescription: Optional[str] = None
898
+ amount: Optional[decimal.Decimal] = None
899
+ buySell: Optional[str] = None
900
+ acctAlias: Optional[str] = None
901
+ model: Optional[str] = None
902
+ symbol: Optional[str] = None
903
+ description: Optional[str] = None
904
+ conid: Optional[str] = None
905
+ securityID: Optional[str] = None
906
+ securityIDType: Optional[str] = None
907
+ cusip: Optional[str] = None
908
+ isin: Optional[str] = None
909
+ underlyingConid: Optional[str] = None
910
+ underlyingSymbol: Optional[str] = None
911
+ issuer: Optional[str] = None
912
+ multiplier: Optional[decimal.Decimal] = None
913
+ strike: Optional[decimal.Decimal] = None
914
+ expiry: Optional[datetime.date] = None
915
+ putCall: Optional[enums.PutCall] = None
916
+ principalAdjustFactor: Optional[decimal.Decimal] = None
917
+ fxRateToBase: Optional[decimal.Decimal] = None
918
+ listingExchange: Optional[str] = None
919
+ underlyingSecurityID: Optional[str] = None
920
+ underlyingListingExchange: Optional[str] = None
921
+ settleDate: Optional[datetime.date] = None
922
+ activityCode: Optional[str] = None # FIXME
923
+ orderID: Optional[str] = None
924
+ tradeQuantity: Optional[decimal.Decimal] = None
925
+ tradePrice: Optional[decimal.Decimal] = None
926
+ tradeGross: Optional[decimal.Decimal] = None
927
+ tradeCommission: Optional[decimal.Decimal] = None
928
+ tradeTax: Optional[decimal.Decimal] = None
929
+ tradeCode: Optional[str] = None
930
+ levelOfDetail: Optional[str] = None
931
+ transactionID: Optional[str] = None
932
+ serialNumber: Optional[str] = None
933
+ deliveryType: Optional[str] = None
934
+ commodityType: Optional[str] = None
935
+ fineness: Optional[decimal.Decimal] = None
936
+ weight: Optional[str] = None
937
+ actionID: Optional[str] = None
938
+ subCategory: Optional[str] = None
939
+ figi: Optional[str] = None
940
+ issuerCountryCode: Optional[str] = None
941
+ relatedTradeID: Optional[str] = None
942
+ origTransactionID: Optional[str] = None
943
+ relatedTransactionID: Optional[str] = None
944
+
945
+
946
+ @dataclass(frozen=True)
947
+ class ChangeInPositionValue(FlexElement):
948
+ """Wrapped in <ChangeInPositionValues>"""
949
+
950
+ assetCategory: Optional[enums.AssetClass] = None
951
+ currency: Optional[str] = None
952
+ priorPeriodValue: Optional[decimal.Decimal] = None
953
+ transactions: Optional[decimal.Decimal] = None
954
+ mtmPriorPeriodPositions: Optional[decimal.Decimal] = None
955
+ mtmTransactions: Optional[decimal.Decimal] = None
956
+ corporateActions: Optional[decimal.Decimal] = None
957
+ accountTransfers: Optional[decimal.Decimal] = None
958
+ fxTranslationPnl: Optional[decimal.Decimal] = None
959
+ futurePriceAdjustments: Optional[decimal.Decimal] = None
960
+ settledCash: Optional[decimal.Decimal] = None
961
+ endOfPeriodValue: Optional[decimal.Decimal] = None
962
+ accountId: Optional[str] = None
963
+ acctAlias: Optional[str] = None
964
+ model: Optional[str] = None
965
+ other: Optional[decimal.Decimal] = None
966
+ linkingAdjustments: Optional[decimal.Decimal] = None
967
+
968
+
969
+ @dataclass(frozen=True)
970
+ class OpenPosition(FlexElement):
971
+ """Wrapped in <OpenPositions>"""
972
+
973
+ side: Optional[enums.LongShort] = None
974
+ assetCategory: Optional[enums.AssetClass] = None
975
+ subCategory: Optional[str] = None
976
+ accountId: Optional[str] = None
977
+ currency: Optional[str] = None
978
+ fxRateToBase: Optional[decimal.Decimal] = None
979
+ reportDate: Optional[datetime.date] = None
980
+ symbol: Optional[str] = None
981
+ description: Optional[str] = None
982
+ conid: Optional[str] = None
983
+ securityID: Optional[str] = None
984
+ cusip: Optional[str] = None
985
+ isin: Optional[str] = None
986
+ figi: Optional[str] = None
987
+ multiplier: Optional[decimal.Decimal] = None
988
+ position: Optional[decimal.Decimal] = None
989
+ markPrice: Optional[decimal.Decimal] = None
990
+ positionValue: Optional[decimal.Decimal] = None
991
+ openPrice: Optional[decimal.Decimal] = None
992
+ costBasisPrice: Optional[decimal.Decimal] = None
993
+ costBasisMoney: Optional[decimal.Decimal] = None
994
+ fifoPnlUnrealized: Optional[decimal.Decimal] = None
995
+ levelOfDetail: Optional[str] = None
996
+ openDateTime: Optional[datetime.datetime] = None
997
+ holdingPeriodDateTime: Optional[datetime.datetime] = None
998
+ securityIDType: Optional[str] = None
999
+ issuer: Optional[str] = None
1000
+ issuerCountryCode: Optional[str] = None
1001
+ underlyingConid: Optional[str] = None
1002
+ underlyingSymbol: Optional[str] = None
1003
+ code: Tuple[enums.Code, ...] = ()
1004
+ originatingOrderID: Optional[str] = None
1005
+ originatingTransactionID: Optional[str] = None
1006
+ accruedInt: Optional[str] = None
1007
+ acctAlias: Optional[str] = None
1008
+ model: Optional[str] = None
1009
+ sedol: Optional[str] = None
1010
+ percentOfNAV: Optional[decimal.Decimal] = None
1011
+ strike: Optional[decimal.Decimal] = None
1012
+ expiry: Optional[datetime.date] = None
1013
+ putCall: Optional[enums.PutCall] = None
1014
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1015
+ listingExchange: Optional[str] = None
1016
+ underlyingSecurityID: Optional[str] = None
1017
+ underlyingListingExchange: Optional[str] = None
1018
+ positionValueInBase: Optional[decimal.Decimal] = None
1019
+ unrealizedCapitalGainsPnl: Optional[decimal.Decimal] = None
1020
+ unrealizedlFxPnl: Optional[decimal.Decimal] = None
1021
+ vestingDate: Optional[datetime.date] = None
1022
+ serialNumber: Optional[str] = None
1023
+ deliveryType: Optional[str] = None
1024
+ commodityType: Optional[str] = None
1025
+ fineness: Optional[decimal.Decimal] = None
1026
+ weight: Optional[str] = None
1027
+
1028
+
1029
+ @dataclass(frozen=True)
1030
+ class FxLot(FlexElement):
1031
+ """Wrapped in <FxLots>, which in turn is wrapped in <FxPositions>"""
1032
+
1033
+ assetCategory: Optional[enums.AssetClass] = None
1034
+ accountId: Optional[str] = None
1035
+ reportDate: Optional[datetime.date] = None
1036
+ functionalCurrency: Optional[str] = None
1037
+ fxCurrency: Optional[str] = None
1038
+ quantity: Optional[decimal.Decimal] = None
1039
+ costPrice: Optional[decimal.Decimal] = None
1040
+ costBasis: Optional[decimal.Decimal] = None
1041
+ closePrice: Optional[decimal.Decimal] = None
1042
+ value: Optional[decimal.Decimal] = None
1043
+ unrealizedPL: Optional[decimal.Decimal] = None
1044
+ code: Tuple[enums.Code, ...] = ()
1045
+ lotDescription: Optional[str] = None
1046
+ lotOpenDateTime: Optional[datetime.datetime] = None
1047
+ levelOfDetail: Optional[str] = None
1048
+ acctAlias: Optional[str] = None
1049
+ model: Optional[str] = None
1050
+
1051
+
1052
+ @dataclass(frozen=True)
1053
+ class Trade(FlexElement):
1054
+ """Wrapped in <Trades>"""
1055
+
1056
+ transactionType: Optional[enums.TradeType] = None
1057
+ openCloseIndicator: Optional[enums.OpenClose] = None
1058
+ buySell: Optional[enums.BuySell] = None
1059
+ orderType: Optional[enums.OrderType] = None
1060
+ assetCategory: Optional[enums.AssetClass] = None
1061
+ accountId: Optional[str] = None
1062
+ currency: Optional[str] = None
1063
+ fxRateToBase: Optional[decimal.Decimal] = None
1064
+ symbol: Optional[str] = None # symbol of instrument traded, e.g. AAPL, not unique in IBKR as it can exist on different exchanges: (symbol, Exchange, Currency, Asset Type) is unique
1065
+ conid: Optional[str] = None # IBKR identifier of instrument, unique key within IBKR
1066
+ cusip: Optional[str] = None # S&P instrument ID, not unique as it is used on different exchanges
1067
+ isin: Optional[str] = None # instrument ISIN (ISO standardized instrument ID)
1068
+ figi: Optional[str] = None # instrument FIGI (Bloomberg ID - comparable to ISIN)
1069
+ description: Optional[str] = None # instrument name, e.g. "Apple Inc."
1070
+ listingExchange: Optional[str] = None # exchange, e.g. "NASDAQ"
1071
+ multiplier: Optional[decimal.Decimal] = None # multiplier of contract traded
1072
+ strike: Optional[decimal.Decimal] = None
1073
+ expiry: Optional[datetime.date] = None
1074
+ putCall: Optional[enums.PutCall] = None
1075
+ tradeID: Optional[str] = None
1076
+ reportDate: Optional[datetime.date] = None # when the trade was included in IBKR's reporting system (e.g. corrections)
1077
+ tradeDate: Optional[datetime.date] = None # date of the trade
1078
+ tradeTime: Optional[datetime.time] = None # timestamp of the trade
1079
+ settleDateTarget: Optional[datetime.date] = None # expected date of ownership transfer
1080
+ exchange: Optional[str] = None
1081
+ quantity: Optional[decimal.Decimal] = None
1082
+ tradePrice: Optional[decimal.Decimal] = None
1083
+ tradeMoney: Optional[decimal.Decimal] = None # TradeMoney = Proceeds + Fees + Commissions
1084
+ proceeds: Optional[decimal.Decimal] = None # Proceeds = Quantity * TradePrice * Multiplier
1085
+ netCash: Optional[decimal.Decimal] = None # netCash = TradeMoney - Adjustments (e.g. fees in physical execution of options, or taxes)
1086
+ netCashInBase: Optional[decimal.Decimal] = None # = NetCash × FX Rate
1087
+ taxes: Optional[decimal.Decimal] = None
1088
+ ibCommission: Optional[decimal.Decimal] = None
1089
+ ibCommissionCurrency: Optional[str] = None
1090
+ closePrice: Optional[decimal.Decimal] = None # closing market price of the asset on the trade date
1091
+ notes: Tuple[enums.Code, ...] = () # separator = ";"
1092
+ cost: Optional[decimal.Decimal] = None
1093
+ mtmPnl: Optional[decimal.Decimal] = None # PnL at the time of reportins
1094
+ origTradePrice: Optional[decimal.Decimal] = None
1095
+ origTradeDate: Optional[datetime.date] = None
1096
+ origTradeID: Optional[str] = None
1097
+ origOrderID: Optional[str] = None
1098
+ openDateTime: Optional[datetime.datetime] = None
1099
+ fifoPnlRealized: Optional[decimal.Decimal] = None
1100
+ capitalGainsPnl: Optional[decimal.Decimal] = None
1101
+ levelOfDetail: Optional[str] = None
1102
+ ibOrderID: Optional[str] = None
1103
+ # Despite the name, `orderTime` actually contains date/time data.
1104
+ orderTime: Optional[datetime.datetime] = None
1105
+ changeInPrice: Optional[decimal.Decimal] = None
1106
+ changeInQuantity: Optional[decimal.Decimal] = None
1107
+ fxPnl: Optional[decimal.Decimal] = None
1108
+ clearingFirmID: Optional[str] = None
1109
+ # Effective 2013, every Trade has a `transactionID` attribute that can't
1110
+ # be deselected in the Flex query template.
1111
+ transactionID: Optional[str] = None
1112
+ holdingPeriodDateTime: Optional[datetime.datetime] = None
1113
+ ibExecID: Optional[str] = None
1114
+ brokerageOrderID: Optional[str] = None
1115
+ orderReference: Optional[str] = None
1116
+ volatilityOrderLink: Optional[str] = None
1117
+ exchOrderId: Optional[str] = None
1118
+ extExecID: Optional[str] = None
1119
+ traderID: Optional[str] = None
1120
+ isAPIOrder: Optional[bool] = None
1121
+ acctAlias: Optional[str] = None
1122
+ model: Optional[str] = None # some clients use model portfolios in account, i.e. virtual sub-accounts
1123
+ securityID: Optional[str] = None
1124
+ securityIDType: Optional[str] = None
1125
+ principalAdjustFactor: Optional[decimal.Decimal] = None # relevant e.g. in stock splits
1126
+ dateTime: Optional[datetime.datetime] = None
1127
+ underlyingConid: Optional[str] = None
1128
+ underlyingSecurityID: Optional[str] = None
1129
+ underlyingSymbol: Optional[str] = None
1130
+ underlyingListingExchange: Optional[str] = None
1131
+ issuer: Optional[str] = None
1132
+ sedol: Optional[str] = None
1133
+ whenRealized: Optional[datetime.datetime] = None
1134
+ whenReopened: Optional[datetime.datetime] = None
1135
+ accruedInt: Optional[decimal.Decimal] = None
1136
+ serialNumber: Optional[str] = None
1137
+ deliveryType: Optional[str] = None
1138
+ commodityType: Optional[str] = None
1139
+ fineness: Optional[decimal.Decimal] = None
1140
+ weight: Optional[str] = None
1141
+ relatedTradeID: Optional[str] = None
1142
+ relatedTransactionID: Optional[str] = None
1143
+ origTransactionID: Optional[str] = None
1144
+ subCategory: Optional[str] = None
1145
+ issuerCountryCode: Optional[str] = None
1146
+ rtn: Optional[str] = None
1147
+ initialInvestment: Optional[decimal.Decimal] = None
1148
+
1149
+
1150
+ @dataclass(frozen=True)
1151
+ class TransferLot(FlexElement):
1152
+ """Wrapped in <Transfers>"""
1153
+
1154
+ accountId: Optional[str] = None
1155
+ currency: Optional[str] = None
1156
+ fxRateToBase: Optional[decimal.Decimal] = None
1157
+ assetCategory: Optional[enums.AssetClass] = None
1158
+ symbol: Optional[str] = None
1159
+ description: Optional[str] = None
1160
+ conid: Optional[str] = None
1161
+ securityID: Optional[str] = None
1162
+ securityIDType: Optional[str] = None
1163
+ cusip: Optional[str] = None
1164
+ isin: Optional[str] = None
1165
+ listingExchange: Optional[str] = None
1166
+ multiplier: Optional[decimal.Decimal] = None
1167
+ reportDate: Optional[datetime.date] = None
1168
+ date: Optional[datetime.date] = None
1169
+ dateTime: Optional[datetime.datetime] = None
1170
+ type: Optional[enums.TransferType] = None
1171
+ direction: Optional[enums.InOut] = None
1172
+ company: Optional[str] = None
1173
+ account: Optional[str] = None
1174
+ deliveringBroker: Optional[str] = None
1175
+ quantity: Optional[decimal.Decimal] = None
1176
+ transferPrice: Optional[decimal.Decimal] = None
1177
+ pnlAmount: Optional[decimal.Decimal] = None
1178
+ pnlAmountInBase: Optional[decimal.Decimal] = None
1179
+ code: Tuple[enums.Code, ...] = ()
1180
+ acctAlias: Optional[str] = None
1181
+ model: Optional[str] = None
1182
+ underlyingConid: Optional[str] = None
1183
+ underlyingSymbol: Optional[str] = None
1184
+ underlyingSecurityID: Optional[str] = None
1185
+ underlyingListingExchange: Optional[str] = None
1186
+ issuer: Optional[str] = None
1187
+ strike: Optional[decimal.Decimal] = None
1188
+ expiry: Optional[datetime.date] = None
1189
+ putCall: Optional[enums.PutCall] = None
1190
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1191
+ accountName: Optional[str] = None
1192
+ positionAmount: Optional[decimal.Decimal] = None
1193
+ positionAmountInBase: Optional[decimal.Decimal] = None
1194
+ cashTransfer: Optional[decimal.Decimal] = None
1195
+ clientReference: Optional[str] = None
1196
+ transactionID: Optional[str] = None
1197
+ serialNumber: Optional[str] = None
1198
+ deliveryType: Optional[str] = None
1199
+ commodityType: Optional[str] = None
1200
+ fineness: Optional[decimal.Decimal] = None
1201
+ weight: Optional[str] = None
1202
+
1203
+
1204
+ @dataclass(frozen=True)
1205
+ class Lot(FlexElement):
1206
+ """Wrapped in <Trades>"""
1207
+
1208
+ transactionType: Optional[enums.TradeType] = None
1209
+ openCloseIndicator: Optional[enums.OpenClose] = None
1210
+ buySell: Optional[enums.BuySell] = None
1211
+ orderType: Optional[enums.OrderType] = None
1212
+ assetCategory: Optional[enums.AssetClass] = None
1213
+ accountId: Optional[str] = None
1214
+ currency: Optional[str] = None
1215
+ fxRateToBase: Optional[decimal.Decimal] = None
1216
+ symbol: Optional[str] = None
1217
+ description: Optional[str] = None
1218
+ conid: Optional[str] = None
1219
+ cusip: Optional[str] = None
1220
+ isin: Optional[str] = None
1221
+ listingExchange: Optional[str] = None
1222
+ multiplier: Optional[decimal.Decimal] = None
1223
+ strike: Optional[decimal.Decimal] = None
1224
+ expiry: Optional[datetime.date] = None
1225
+ putCall: Optional[enums.PutCall] = None
1226
+ tradeID: Optional[str] = None
1227
+ reportDate: Optional[datetime.date] = None
1228
+ tradeDate: Optional[datetime.date] = None
1229
+ tradeTime: Optional[datetime.time] = None
1230
+ settleDateTarget: Optional[datetime.date] = None
1231
+ exchange: Optional[str] = None
1232
+ quantity: Optional[decimal.Decimal] = None
1233
+ tradePrice: Optional[decimal.Decimal] = None
1234
+ tradeMoney: Optional[decimal.Decimal] = None
1235
+ taxes: Optional[decimal.Decimal] = None
1236
+ ibCommission: Optional[decimal.Decimal] = None
1237
+ ibCommissionCurrency: Optional[str] = None
1238
+ netCash: Optional[decimal.Decimal] = None
1239
+ netCashInBase: Optional[decimal.Decimal] = None
1240
+ closePrice: Optional[decimal.Decimal] = None
1241
+ notes: Tuple[enums.Code, ...] = () # separator = ";"
1242
+ cost: Optional[decimal.Decimal] = None
1243
+ mtmPnl: Optional[decimal.Decimal] = None
1244
+ origTradePrice: Optional[decimal.Decimal] = None
1245
+ origTradeDate: Optional[datetime.date] = None
1246
+ origTradeID: Optional[str] = None
1247
+ origOrderID: Optional[str] = None
1248
+ openDateTime: Optional[datetime.datetime] = None
1249
+ fifoPnlRealized: Optional[decimal.Decimal] = None
1250
+ capitalGainsPnl: Optional[decimal.Decimal] = None
1251
+ levelOfDetail: Optional[str] = None
1252
+ ibOrderID: Optional[str] = None
1253
+ # Despite the name, `orderTime` actually contains date/time data.
1254
+ orderTime: Optional[datetime.datetime] = None
1255
+ changeInPrice: Optional[decimal.Decimal] = None
1256
+ changeInQuantity: Optional[decimal.Decimal] = None
1257
+ proceeds: Optional[decimal.Decimal] = None
1258
+ fxPnl: Optional[decimal.Decimal] = None
1259
+ clearingFirmID: Optional[str] = None
1260
+ # Effective 2013, every Trade has a `transactionID` attribute that can't
1261
+ # be deselected in the Flex query template.
1262
+ transactionID: Optional[str] = None
1263
+ holdingPeriodDateTime: Optional[datetime.datetime] = None
1264
+ ibExecID: Optional[str] = None
1265
+ brokerageOrderID: Optional[str] = None
1266
+ orderReference: Optional[str] = None
1267
+ volatilityOrderLink: Optional[str] = None
1268
+ exchOrderId: Optional[str] = None
1269
+ extExecID: Optional[str] = None
1270
+ traderID: Optional[str] = None
1271
+ isAPIOrder: Optional[bool] = None
1272
+ acctAlias: Optional[str] = None
1273
+ model: Optional[str] = None
1274
+ securityID: Optional[str] = None
1275
+ securityIDType: Optional[str] = None
1276
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1277
+ dateTime: Optional[datetime.datetime] = None
1278
+ underlyingConid: Optional[str] = None
1279
+ underlyingSecurityID: Optional[str] = None
1280
+ underlyingSymbol: Optional[str] = None
1281
+ underlyingListingExchange: Optional[str] = None
1282
+ issuer: Optional[str] = None
1283
+ sedol: Optional[str] = None
1284
+ whenRealized: Optional[datetime.datetime] = None
1285
+ whenReopened: Optional[datetime.datetime] = None
1286
+ accruedInt: Optional[decimal.Decimal] = None
1287
+ serialNumber: Optional[str] = None
1288
+ deliveryType: Optional[str] = None
1289
+ commodityType: Optional[str] = None
1290
+ fineness: Optional[decimal.Decimal] = None
1291
+ weight: Optional[str] = None
1292
+ origTransactionID: Optional[str] = None
1293
+ relatedTransactionID: Optional[str] = None
1294
+ subCategory: Optional[str] = None
1295
+ figi: Optional[str] = None
1296
+ issuerCountryCode: Optional[str] = None
1297
+ relatedTradeID: Optional[str] = None
1298
+ rtn: Optional[str] = None
1299
+ initialInvestment: Optional[decimal.Decimal] = None
1300
+
1301
+
1302
+ @dataclass(frozen=True)
1303
+ class UnbundledCommissionDetail(FlexElement):
1304
+ """Wrapped in <UnbundledCommissionDetails>"""
1305
+
1306
+ buySell: Optional[enums.BuySell] = None
1307
+ assetCategory: Optional[enums.AssetClass] = None
1308
+ accountId: Optional[str] = None
1309
+ acctAlias: Optional[str] = None
1310
+ model: Optional[str] = None
1311
+ currency: Optional[str] = None
1312
+ fxRateToBase: Optional[decimal.Decimal] = None
1313
+ symbol: Optional[str] = None
1314
+ description: Optional[str] = None
1315
+ conid: Optional[str] = None
1316
+ securityID: Optional[str] = None
1317
+ securityIDType: Optional[str] = None
1318
+ cusip: Optional[str] = None
1319
+ isin: Optional[str] = None
1320
+ sedol: Optional[str] = None
1321
+ listingExchange: Optional[str] = None
1322
+ underlyingConid: Optional[str] = None
1323
+ underlyingSymbol: Optional[str] = None
1324
+ underlyingSecurityID: Optional[str] = None
1325
+ underlyingListingExchange: Optional[str] = None
1326
+ issuer: Optional[str] = None
1327
+ multiplier: Optional[decimal.Decimal] = None
1328
+ strike: Optional[decimal.Decimal] = None
1329
+ expiry: Optional[datetime.date] = None
1330
+ putCall: Optional[enums.PutCall] = None
1331
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1332
+ dateTime: Optional[datetime.datetime] = None
1333
+ exchange: Optional[str] = None
1334
+ quantity: Optional[decimal.Decimal] = None
1335
+ price: Optional[decimal.Decimal] = None
1336
+ tradeID: Optional[str] = None
1337
+ orderReference: Optional[str] = None
1338
+ totalCommission: Optional[decimal.Decimal] = None
1339
+ brokerExecutionCharge: Optional[decimal.Decimal] = None
1340
+ brokerClearingCharge: Optional[decimal.Decimal] = None
1341
+ thirdPartyExecutionCharge: Optional[decimal.Decimal] = None
1342
+ thirdPartyClearingCharge: Optional[decimal.Decimal] = None
1343
+ thirdPartyRegulatoryCharge: Optional[decimal.Decimal] = None
1344
+ regFINRATradingActivityFee: Optional[decimal.Decimal] = None
1345
+ regSection31TransactionFee: Optional[decimal.Decimal] = None
1346
+ regOther: Optional[decimal.Decimal] = None
1347
+ other: Optional[decimal.Decimal] = None
1348
+ subCategory: Optional[str] = None
1349
+ figi: Optional[str] = None
1350
+ issuerCountryCode: Optional[str] = None
1351
+ serialNumber: Optional[decimal.Decimal] = None
1352
+ deliveryType: Optional[decimal.Decimal] = None # 0: Cash settlement, 1: physical settlement
1353
+ commodityType: Optional[str] = None # z.B. "STK"=Aktie, "BND"=Anleihe, etc.
1354
+ fineness: Optional[decimal.Decimal] = None # Reinheitsgrad bei Edelmetallen, z.B. 925 für 925 Sterling Silber
1355
+ weight: Optional[decimal.Decimal] = None # Gewicht - Einheit ist Rohstoffabhängig
1356
+
1357
+ @dataclass(frozen=True)
1358
+ class SymbolSummary(FlexElement):
1359
+ """Wrapped in <TradeConfirms>"""
1360
+
1361
+ accountId: Optional[str] = None
1362
+ acctAlias: Optional[str] = None
1363
+ model: Optional[str] = None
1364
+ currency: Optional[str] = None
1365
+ assetCategory: Optional[enums.AssetClass] = None
1366
+ symbol: Optional[str] = None
1367
+ description: Optional[str] = None
1368
+ conid: Optional[str] = None
1369
+ securityID: Optional[str] = None
1370
+ securityIDType: Optional[str] = None
1371
+ cusip: Optional[str] = None
1372
+ isin: Optional[str] = None
1373
+ listingExchange: Optional[str] = None
1374
+ underlyingConid: Optional[str] = None
1375
+ underlyingSymbol: Optional[str] = None
1376
+ underlyingSecurityID: Optional[str] = None
1377
+ underlyingListingExchange: Optional[str] = None
1378
+ issuer: Optional[str] = None
1379
+ multiplier: Optional[decimal.Decimal] = None
1380
+ strike: Optional[decimal.Decimal] = None
1381
+ expiry: Optional[datetime.date] = None
1382
+ putCall: Optional[enums.PutCall] = None
1383
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1384
+ transactionType: Optional[enums.TradeType] = None
1385
+ tradeID: Optional[str] = None
1386
+ orderID: Optional[decimal.Decimal] = None
1387
+ execID: Optional[str] = None
1388
+ brokerageOrderID: Optional[str] = None
1389
+ orderReference: Optional[str] = None
1390
+ volatilityOrderLink: Optional[str] = None
1391
+ clearingFirmID: Optional[str] = None
1392
+ origTradePrice: Optional[decimal.Decimal] = None
1393
+ origTradeDate: Optional[datetime.date] = None
1394
+ origTradeID: Optional[str] = None
1395
+ # Despite the name, `orderTime` actually contains date/time data.
1396
+ orderTime: Optional[datetime.datetime] = None
1397
+ dateTime: Optional[datetime.datetime] = None
1398
+ reportDate: Optional[datetime.date] = None
1399
+ settleDate: Optional[datetime.date] = None
1400
+ tradeDate: Optional[datetime.date] = None
1401
+ exchange: Optional[str] = None
1402
+ buySell: Optional[enums.BuySell] = None
1403
+ quantity: Optional[decimal.Decimal] = None
1404
+ price: Optional[decimal.Decimal] = None
1405
+ amount: Optional[decimal.Decimal] = None
1406
+ proceeds: Optional[decimal.Decimal] = None
1407
+ commission: Optional[decimal.Decimal] = None
1408
+ brokerExecutionCommission: Optional[decimal.Decimal] = None
1409
+ brokerClearingCommission: Optional[decimal.Decimal] = None
1410
+ thirdPartyExecutionCommission: Optional[decimal.Decimal] = None
1411
+ thirdPartyClearingCommission: Optional[decimal.Decimal] = None
1412
+ thirdPartyRegulatoryCommission: Optional[decimal.Decimal] = None
1413
+ otherCommission: Optional[decimal.Decimal] = None
1414
+ commissionCurrency: Optional[str] = None
1415
+ tax: Optional[decimal.Decimal] = None
1416
+ code: Tuple[enums.Code, ...] = ()
1417
+ orderType: Optional[enums.OrderType] = None
1418
+ levelOfDetail: Optional[str] = None
1419
+ traderID: Optional[str] = None
1420
+ isAPIOrder: Optional[bool] = None
1421
+ allocatedTo: Optional[str] = None
1422
+ accruedInt: Optional[decimal.Decimal] = None
1423
+ fxRateToBase: Optional[decimal.Decimal] = None
1424
+ subCategory: Optional[str] = None
1425
+ figi: Optional[str] = None
1426
+ issuerCountryCode: Optional[str] = None
1427
+ relatedTradeID: Optional[str] = None
1428
+ origTransactionID: Optional[str] = None
1429
+ relatedTransactionID: Optional[str] = None
1430
+
1431
+
1432
+ @dataclass(frozen=True)
1433
+ class AssetSummary(FlexElement):
1434
+ """Wrapped in <TradeConfirms>"""
1435
+
1436
+ accountId: Optional[str] = None
1437
+ acctAlias: Optional[str] = None
1438
+ model: Optional[str] = None
1439
+ currency: Optional[str] = None
1440
+ assetCategory: Optional[enums.AssetClass] = None
1441
+ symbol: Optional[str] = None
1442
+ description: Optional[str] = None
1443
+ conid: Optional[str] = None
1444
+ securityID: Optional[str] = None
1445
+ securityIDType: Optional[str] = None
1446
+ cusip: Optional[str] = None
1447
+ isin: Optional[str] = None
1448
+ listingExchange: Optional[str] = None
1449
+ underlyingConid: Optional[str] = None
1450
+ underlyingSymbol: Optional[str] = None
1451
+ underlyingSecurityID: Optional[str] = None
1452
+ underlyingListingExchange: Optional[str] = None
1453
+ issuer: Optional[str] = None
1454
+ multiplier: Optional[decimal.Decimal] = None
1455
+ strike: Optional[decimal.Decimal] = None
1456
+ expiry: Optional[datetime.date] = None
1457
+ putCall: Optional[enums.PutCall] = None
1458
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1459
+ transactionType: Optional[enums.TradeType] = None
1460
+ tradeID: Optional[str] = None
1461
+ orderID: Optional[decimal.Decimal] = None
1462
+ execID: Optional[str] = None
1463
+ brokerageOrderID: Optional[str] = None
1464
+ orderReference: Optional[str] = None
1465
+ volatilityOrderLink: Optional[str] = None
1466
+ clearingFirmID: Optional[str] = None
1467
+ origTradePrice: Optional[decimal.Decimal] = None
1468
+ TradePrice: Optional[decimal.Decimal] = None
1469
+ tradeMoney: Optional[decimal.Decimal] = None
1470
+ taxes: Optional[decimal.Decimal] = None
1471
+ origTradeDate: Optional[datetime.date] = None
1472
+ origTradeID: Optional[str] = None
1473
+ tradePrice: Optional[decimal.Decimal] = None
1474
+ # Despite the name, `orderTime` actually contains date/time data.
1475
+ orderTime: Optional[datetime.datetime] = None
1476
+ exchOrderId: Optional[str] = None
1477
+ dateTime: Optional[datetime.datetime] = None
1478
+ fxRateToBase: Optional[decimal.Decimal] = None
1479
+ reportDate: Optional[datetime.date] = None
1480
+ ibExecID: Optional[str] = None
1481
+ settleDateTarget: Optional[datetime.date] = None
1482
+ cost: Optional[decimal.Decimal] = None
1483
+ extExecID: Optional[str] = None
1484
+ openDateTime: Optional[datetime.datetime] = None
1485
+ holdingPeriodDateTime: Optional[datetime.datetime] = None
1486
+ whenRealized: Optional[datetime.datetime] = None
1487
+ whenReopened: Optional[datetime.datetime] = None
1488
+ changeInPrice: Optional[decimal.Decimal] = None
1489
+ changeInQuantity: Optional[decimal.Decimal] = None
1490
+ ibOrderID: Optional[str] = None
1491
+ origOrderID: Optional[str] = None
1492
+ transactionID: Optional[str] = None
1493
+ tradeDate: Optional[datetime.date] = None
1494
+ openCloseIndicator: Optional[enums.OpenClose] = None
1495
+ notes: Optional[str] = None
1496
+ fxPnl: Optional[decimal.Decimal] = None
1497
+ mtmPnl: Optional[decimal.Decimal] = None
1498
+ fifoPnlRealized: Optional[decimal.Decimal] = None
1499
+ closePrice: Optional[decimal.Decimal] = None
1500
+ exchange: Optional[str] = None
1501
+ ibCommission: Optional[decimal.Decimal] = None
1502
+ ibCommissionCurrency: Optional[str] = None
1503
+ netCash: Optional[decimal.Decimal] = None
1504
+ netCashInBase: Optional[decimal.Decimal] = None
1505
+ buySell: Optional[enums.BuySell] = None
1506
+ quantity: Optional[decimal.Decimal] = None
1507
+ price: Optional[decimal.Decimal] = None
1508
+ amount: Optional[decimal.Decimal] = None
1509
+ proceeds: Optional[decimal.Decimal] = None
1510
+ commission: Optional[decimal.Decimal] = None
1511
+ brokerExecutionCommission: Optional[decimal.Decimal] = None
1512
+ brokerClearingCommission: Optional[decimal.Decimal] = None
1513
+ thirdPartyExecutionCommission: Optional[decimal.Decimal] = None
1514
+ thirdPartyClearingCommission: Optional[decimal.Decimal] = None
1515
+ thirdPartyRegulatoryCommission: Optional[decimal.Decimal] = None
1516
+ otherCommission: Optional[decimal.Decimal] = None
1517
+ commissionCurrency: Optional[str] = None
1518
+ tax: Optional[decimal.Decimal] = None
1519
+ code: Tuple[enums.Code, ...] = ()
1520
+ orderType: Optional[enums.OrderType] = None
1521
+ levelOfDetail: Optional[str] = None
1522
+ traderID: Optional[str] = None
1523
+ isAPIOrder: Optional[bool] = None
1524
+ allocatedTo: Optional[str] = None
1525
+ accruedInt: Optional[decimal.Decimal] = None
1526
+ deliveryType: Optional[str] = None
1527
+ serialNumber: Optional[str] = None
1528
+ commodityType: Optional[str] = None
1529
+ fineness: Optional[decimal.Decimal] = None
1530
+ weight: Optional[str] = None
1531
+ subCategory: Optional[str] = None
1532
+ figi: Optional[str] = None
1533
+ issuerCountryCode: Optional[str] = None
1534
+ relatedTradeID: Optional[str] = None
1535
+ origTransactionID: Optional[str] = None
1536
+ relatedTransactionID: Optional[str] = None
1537
+ rtn: Optional[str] = None
1538
+ initialInvestment: Optional[decimal.Decimal] = None
1539
+
1540
+
1541
+ @dataclass(frozen=True)
1542
+ class Order(FlexElement):
1543
+ """Wrapped in <TradeConfirms> or <Trades>"""
1544
+
1545
+ accountId: Optional[str] = None
1546
+ acctAlias: Optional[str] = None
1547
+ model: Optional[str] = None
1548
+ currency: Optional[str] = None
1549
+ assetCategory: Optional[enums.AssetClass] = None
1550
+ symbol: Optional[str] = None
1551
+ description: Optional[str] = None
1552
+ conid: Optional[str] = None
1553
+ securityID: Optional[str] = None
1554
+ securityIDType: Optional[str] = None
1555
+ cusip: Optional[str] = None
1556
+ isin: Optional[str] = None
1557
+ listingExchange: Optional[str] = None
1558
+ underlyingConid: Optional[str] = None
1559
+ underlyingSymbol: Optional[str] = None
1560
+ underlyingSecurityID: Optional[str] = None
1561
+ underlyingListingExchange: Optional[str] = None
1562
+ issuer: Optional[str] = None
1563
+ multiplier: Optional[decimal.Decimal] = None
1564
+ strike: Optional[decimal.Decimal] = None
1565
+ expiry: Optional[datetime.date] = None
1566
+ putCall: Optional[enums.PutCall] = None
1567
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1568
+ transactionType: Optional[enums.TradeType] = None
1569
+ tradeID: Optional[str] = None
1570
+ orderID: Optional[decimal.Decimal] = None
1571
+ execID: Optional[str] = None
1572
+ brokerageOrderID: Optional[str] = None
1573
+ orderReference: Optional[str] = None
1574
+ volatilityOrderLink: Optional[str] = None
1575
+ clearingFirmID: Optional[str] = None
1576
+ origTradePrice: Optional[decimal.Decimal] = None
1577
+ origTradeDate: Optional[datetime.date] = None
1578
+ origTradeID: Optional[str] = None
1579
+ # Despite the name, `orderTime` actually contains date/time data.
1580
+ orderTime: Optional[datetime.datetime] = None
1581
+ dateTime: Optional[datetime.datetime] = None
1582
+ reportDate: Optional[datetime.date] = None
1583
+ settleDate: Optional[datetime.date] = None
1584
+ tradeDate: Optional[datetime.date] = None
1585
+ exchange: Optional[str] = None
1586
+ buySell: Optional[enums.BuySell] = None
1587
+ quantity: Optional[decimal.Decimal] = None
1588
+ price: Optional[decimal.Decimal] = None
1589
+ amount: Optional[decimal.Decimal] = None
1590
+ proceeds: Optional[decimal.Decimal] = None
1591
+ commission: Optional[decimal.Decimal] = None
1592
+ brokerExecutionCommission: Optional[decimal.Decimal] = None
1593
+ brokerClearingCommission: Optional[decimal.Decimal] = None
1594
+ thirdPartyExecutionCommission: Optional[decimal.Decimal] = None
1595
+ thirdPartyClearingCommission: Optional[decimal.Decimal] = None
1596
+ thirdPartyRegulatoryCommission: Optional[decimal.Decimal] = None
1597
+ otherCommission: Optional[decimal.Decimal] = None
1598
+ commissionCurrency: Optional[str] = None
1599
+ tax: Optional[decimal.Decimal] = None
1600
+ code: Tuple[enums.Code, ...] = ()
1601
+ orderType: Optional[enums.OrderType] = None
1602
+ levelOfDetail: Optional[str] = None
1603
+ traderID: Optional[str] = None
1604
+ isAPIOrder: Optional[bool] = None
1605
+ allocatedTo: Optional[str] = None
1606
+ accruedInt: Optional[decimal.Decimal] = None
1607
+ netCash: Optional[decimal.Decimal] = None
1608
+ tradePrice: Optional[decimal.Decimal] = None
1609
+ ibCommission: Optional[decimal.Decimal] = None
1610
+ ibOrderID: Optional[str] = None
1611
+ fxRateToBase: Optional[decimal.Decimal] = None
1612
+ settleDateTarget: Optional[datetime.date] = None
1613
+ tradeMoney: Optional[decimal.Decimal] = None
1614
+ taxes: Optional[decimal.Decimal] = None
1615
+ ibCommissionCurrency: Optional[str] = None
1616
+ closePrice: Optional[decimal.Decimal] = None
1617
+ openCloseIndicator: Optional[enums.OpenClose] = None
1618
+ notes: Optional[str] = None
1619
+ cost: Optional[decimal.Decimal] = None
1620
+ fifoPnlRealized: Optional[decimal.Decimal] = None
1621
+ fxPnl: Optional[decimal.Decimal] = None
1622
+ mtmPnl: Optional[decimal.Decimal] = None
1623
+ origOrderID: Optional[str] = None
1624
+ transactionID: Optional[str] = None
1625
+ ibExecID: Optional[str] = None
1626
+ exchOrderId: Optional[str] = None
1627
+ extExecID: Optional[str] = None
1628
+ openDateTime: Optional[datetime.datetime] = None
1629
+ holdingPeriodDateTime: Optional[datetime.datetime] = None
1630
+ whenRealized: Optional[datetime.datetime] = None
1631
+ whenReopened: Optional[datetime.datetime] = None
1632
+ changeInPrice: Optional[decimal.Decimal] = None
1633
+ changeInQuantity: Optional[decimal.Decimal] = None
1634
+ subCategory: Optional[str] = None
1635
+ figi: Optional[str] = None
1636
+ issuerCountryCode: Optional[str] = None
1637
+ relatedTradeID: Optional[str] = None
1638
+ origTransactionID: Optional[str] = None
1639
+ relatedTransactionID: Optional[str] = None
1640
+ rtn: Optional[str] = None
1641
+ initialInvestment: Optional[decimal.Decimal] = None
1642
+ serialNumber: Optional[str] = None
1643
+ deliveryType: Optional[str] = None
1644
+ commodityType: Optional[str] = None
1645
+ fineness: Optional[decimal.Decimal] = None
1646
+ weight: Optional[str] = None
1647
+
1648
+
1649
+ @dataclass(frozen=True)
1650
+ class TradeConfirm(FlexElement):
1651
+ """Wrapped in <TradeConfirms>"""
1652
+
1653
+ transactionType: Optional[enums.TradeType] = None
1654
+ openCloseIndicator: Optional[enums.OpenClose] = None
1655
+ buySell: Optional[enums.BuySell] = None
1656
+ orderType: Optional[enums.OrderType] = None
1657
+ assetCategory: Optional[enums.AssetClass] = None
1658
+ accountId: Optional[str] = None
1659
+ currency: Optional[str] = None
1660
+ fxRateToBase: Optional[decimal.Decimal] = None
1661
+ symbol: Optional[str] = None
1662
+ description: Optional[str] = None
1663
+ conid: Optional[str] = None
1664
+ securityID: Optional[str] = None
1665
+ rfqID: Optional[str] = None
1666
+ securityIDType: Optional[str] = None
1667
+ cusip: Optional[str] = None
1668
+ isin: Optional[str] = None
1669
+ underlyingConid: Optional[str] = None
1670
+ underlyingSymbol: Optional[str] = None
1671
+ issuer: Optional[str] = None
1672
+ multiplier: Optional[decimal.Decimal] = None
1673
+ strike: Optional[decimal.Decimal] = None
1674
+ expiry: Optional[datetime.date] = None
1675
+ putCall: Optional[enums.PutCall] = None
1676
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1677
+ tradeID: Optional[str] = None
1678
+ reportDate: Optional[datetime.date] = None
1679
+ tradeDate: Optional[datetime.date] = None
1680
+ tradeTime: Optional[datetime.time] = None
1681
+ settleDateTarget: Optional[datetime.date] = None
1682
+ exchange: Optional[str] = None
1683
+ quantity: Optional[decimal.Decimal] = None
1684
+ tradePrice: Optional[decimal.Decimal] = None
1685
+ tradeMoney: Optional[decimal.Decimal] = None
1686
+ proceeds: Optional[decimal.Decimal] = None
1687
+ taxes: Optional[decimal.Decimal] = None
1688
+ ibCommission: Optional[decimal.Decimal] = None
1689
+ ibCommissionCurrency: Optional[str] = None
1690
+ netCash: Optional[decimal.Decimal] = None
1691
+ closePrice: Optional[decimal.Decimal] = None
1692
+ notes: Tuple[enums.Code, ...] = () # separator = ";"
1693
+ cost: Optional[decimal.Decimal] = None
1694
+ fifoPnlRealized: Optional[decimal.Decimal] = None
1695
+ fxPnl: Optional[decimal.Decimal] = None
1696
+ mtmPnl: Optional[decimal.Decimal] = None
1697
+ origTradePrice: Optional[decimal.Decimal] = None
1698
+ origTradeDate: Optional[datetime.date] = None
1699
+ origTradeID: Optional[str] = None
1700
+ origOrderID: Optional[str] = None
1701
+ clearingFirmID: Optional[str] = None
1702
+ transactionID: Optional[str] = None
1703
+ openDateTime: Optional[datetime.datetime] = None
1704
+ holdingPeriodDateTime: Optional[datetime.datetime] = None
1705
+ whenRealized: Optional[datetime.datetime] = None
1706
+ whenReopened: Optional[datetime.datetime] = None
1707
+ levelOfDetail: Optional[str] = None
1708
+ commissionCurrency: Optional[str] = None
1709
+ price: Optional[decimal.Decimal] = None
1710
+ thirdPartyClearingCommission: Optional[decimal.Decimal] = None
1711
+ orderID: Optional[decimal.Decimal] = None
1712
+ allocatedTo: Optional[str] = None
1713
+ thirdPartyRegulatoryCommission: Optional[decimal.Decimal] = None
1714
+ dateTime: Optional[datetime.datetime] = None
1715
+ brokerExecutionCommission: Optional[decimal.Decimal] = None
1716
+ thirdPartyExecutionCommission: Optional[decimal.Decimal] = None
1717
+ amount: Optional[decimal.Decimal] = None
1718
+ otherCommission: Optional[decimal.Decimal] = None
1719
+ commission: Optional[decimal.Decimal] = None
1720
+ brokerClearingCommission: Optional[decimal.Decimal] = None
1721
+ ibOrderID: Optional[str] = None
1722
+ ibExecID: Optional[str] = None
1723
+ execID: Optional[str] = None
1724
+ brokerageOrderID: Optional[str] = None
1725
+ orderReference: Optional[str] = None
1726
+ volatilityOrderLink: Optional[str] = None
1727
+ exchOrderId: Optional[str] = None
1728
+ extExecID: Optional[str] = None
1729
+ # Despite the name, `orderTime` actually contains date/time data.
1730
+ orderTime: Optional[datetime.datetime] = None
1731
+ changeInPrice: Optional[decimal.Decimal] = None
1732
+ changeInQuantity: Optional[decimal.Decimal] = None
1733
+ traderID: Optional[str] = None
1734
+ isAPIOrder: Optional[bool] = None
1735
+ code: Tuple[enums.Code, ...] = ()
1736
+ tax: Optional[decimal.Decimal] = None
1737
+ listingExchange: Optional[str] = None
1738
+ underlyingListingExchange: Optional[str] = None
1739
+ settleDate: Optional[datetime.date] = None
1740
+ underlyingSecurityID: Optional[str] = None
1741
+ acctAlias: Optional[str] = None
1742
+ model: Optional[str] = None
1743
+ accruedInt: Optional[decimal.Decimal] = None
1744
+ relatedTradeID: Optional[str] = None
1745
+ relatedTransactionID: Optional[str] = None
1746
+ blockID: Optional[str] = None
1747
+
1748
+
1749
+ @dataclass(frozen=True)
1750
+ class OptionEAE(FlexElement):
1751
+ """Option Exercise Assignment or Expiration
1752
+
1753
+ Wrapped in (identically-named) <OptionEAE>
1754
+ """
1755
+
1756
+ transactionType: Optional[enums.OptionAction] = None
1757
+ assetCategory: Optional[enums.AssetClass] = None
1758
+ accountId: Optional[str] = None
1759
+ currency: Optional[str] = None
1760
+ fxRateToBase: Optional[decimal.Decimal] = None
1761
+ symbol: Optional[str] = None
1762
+ description: Optional[str] = None
1763
+ conid: Optional[str] = None
1764
+ securityID: Optional[str] = None
1765
+ securityIDType: Optional[str] = None
1766
+ cusip: Optional[str] = None
1767
+ isin: Optional[str] = None
1768
+ listingExchange: Optional[str] = None
1769
+ underlyingSecurityID: Optional[str] = None
1770
+ underlyingListingExchange: Optional[str] = None
1771
+ underlyingConid: Optional[str] = None
1772
+ underlyingSymbol: Optional[str] = None
1773
+ issuer: Optional[str] = None
1774
+ multiplier: Optional[decimal.Decimal] = None
1775
+ strike: Optional[decimal.Decimal] = None
1776
+ expiry: Optional[datetime.date] = None
1777
+ putCall: Optional[enums.PutCall] = None
1778
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1779
+ date: Optional[datetime.date] = None
1780
+ quantity: Optional[decimal.Decimal] = None
1781
+ tradePrice: Optional[decimal.Decimal] = None
1782
+ markPrice: Optional[decimal.Decimal] = None
1783
+ proceeds: Optional[decimal.Decimal] = None
1784
+ commisionsAndTax: Optional[decimal.Decimal] = None
1785
+ costBasis: Optional[decimal.Decimal] = None
1786
+ realizedPnl: Optional[decimal.Decimal] = None
1787
+ fxPnl: Optional[decimal.Decimal] = None
1788
+ mtmPnl: Optional[decimal.Decimal] = None
1789
+ tradeID: Optional[str] = None
1790
+ acctAlias: Optional[str] = None
1791
+ model: Optional[str] = None
1792
+ relatedTradeID: Optional[str] = None
1793
+ subCategory: Optional[str] = None
1794
+ figi: Optional[str] = None
1795
+ issuerCountryCode: Optional[str] = None
1796
+ origTransactionID: Optional[str] = None
1797
+ relatedTransactionID: Optional[str] = None
1798
+ rtn: Optional[str] = None
1799
+ initialInvestment: Optional[decimal.Decimal] = None
1800
+ serialNumber: Optional[str] = None
1801
+ deliveryType: Optional[str] = None
1802
+ commodityType: Optional[str] = None
1803
+ fineness: Optional[decimal.Decimal] = None
1804
+ weight: Optional[str] = None
1805
+
1806
+
1807
+ # Type alias to work around https://github.com/python/mypy/issues/1775
1808
+ _OptionEAE = OptionEAE
1809
+
1810
+
1811
+ @dataclass(frozen=True)
1812
+ class TradeTransfer(FlexElement):
1813
+ """Wrapped in <TradeTransfers>"""
1814
+
1815
+ transactionType: Optional[enums.TradeType] = None
1816
+ openCloseIndicator: Optional[enums.OpenClose] = None
1817
+ direction: Optional[enums.ToFrom] = None
1818
+ deliveredReceived: Optional[enums.DeliveredReceived] = None
1819
+ assetCategory: Optional[enums.AssetClass] = None
1820
+ accountId: Optional[str] = None
1821
+ currency: Optional[str] = None
1822
+ fxRateToBase: Optional[decimal.Decimal] = None
1823
+ symbol: Optional[str] = None
1824
+ description: Optional[str] = None
1825
+ conid: Optional[str] = None
1826
+ cusip: Optional[str] = None
1827
+ isin: Optional[str] = None
1828
+ underlyingConid: Optional[str] = None
1829
+ tradeID: Optional[str] = None
1830
+ reportDate: Optional[datetime.date] = None
1831
+ tradeDate: Optional[datetime.date] = None
1832
+ tradeTime: Optional[datetime.time] = None
1833
+ settleDateTarget: Optional[datetime.date] = None
1834
+ exchange: Optional[str] = None
1835
+ quantity: Optional[decimal.Decimal] = None
1836
+ tradePrice: Optional[decimal.Decimal] = None
1837
+ tradeMoney: Optional[decimal.Decimal] = None
1838
+ taxes: Optional[decimal.Decimal] = None
1839
+ ibCommission: Optional[decimal.Decimal] = None
1840
+ ibCommissionCurrency: Optional[str] = None
1841
+ closePrice: Optional[decimal.Decimal] = None
1842
+ notes: Tuple[enums.Code, ...] = () # separator = ";"
1843
+ cost: Optional[decimal.Decimal] = None
1844
+ fifoPnlRealized: Optional[decimal.Decimal] = None
1845
+ mtmPnl: Optional[decimal.Decimal] = None
1846
+ brokerName: Optional[str] = None
1847
+ brokerAccount: Optional[str] = None
1848
+ awayBrokerCommission: Optional[decimal.Decimal] = None
1849
+ regulatoryFee: Optional[decimal.Decimal] = None
1850
+ netTradeMoney: Optional[decimal.Decimal] = None
1851
+ netTradeMoneyInBase: Optional[decimal.Decimal] = None
1852
+ netTradePrice: Optional[decimal.Decimal] = None
1853
+ multiplier: Optional[decimal.Decimal] = None
1854
+ acctAlias: Optional[str] = None
1855
+ model: Optional[str] = None
1856
+ sedol: Optional[str] = None
1857
+ securityID: Optional[str] = None
1858
+ underlyingSymbol: Optional[str] = None
1859
+ issuer: Optional[str] = None
1860
+ strike: Optional[decimal.Decimal] = None
1861
+ expiry: Optional[datetime.date] = None
1862
+ putCall: Optional[enums.PutCall] = None
1863
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1864
+ proceeds: Optional[decimal.Decimal] = None
1865
+ fxPnl: Optional[decimal.Decimal] = None
1866
+ netCash: Optional[decimal.Decimal] = None
1867
+ origTradePrice: Optional[decimal.Decimal] = None
1868
+ # Oddly, `origTradeDate` appears to have hard-coded YYYYMMDD format
1869
+ # instead of the date format from the report configuration.
1870
+ origTradeDate: Optional[datetime.date] = None
1871
+ origTradeID: Optional[str] = None
1872
+ origOrderID: Optional[str] = None
1873
+ clearingFirmID: Optional[str] = None
1874
+ transactionID: Optional[str] = None
1875
+ openDateTime: Optional[datetime.datetime] = None
1876
+ holdingPeriodDateTime: Optional[datetime.datetime] = None
1877
+ whenRealized: Optional[datetime.datetime] = None
1878
+ whenReopened: Optional[datetime.datetime] = None
1879
+ levelOfDetail: Optional[str] = None
1880
+ securityIDType: Optional[str] = None
1881
+
1882
+
1883
+ @dataclass(frozen=True)
1884
+ class InterestAccrualsCurrency(FlexElement):
1885
+ """Wrapped in <InterestAccruals>"""
1886
+
1887
+ accountId: Optional[str] = None
1888
+ currency: Optional[str] = None
1889
+ fromDate: Optional[datetime.date] = None
1890
+ toDate: Optional[datetime.date] = None
1891
+ startingAccrualBalance: Optional[decimal.Decimal] = None
1892
+ interestAccrued: Optional[decimal.Decimal] = None
1893
+ accrualReversal: Optional[decimal.Decimal] = None
1894
+ endingAccrualBalance: Optional[decimal.Decimal] = None
1895
+ acctAlias: Optional[str] = None
1896
+ model: Optional[str] = None
1897
+ fxTranslation: Optional[decimal.Decimal] = None
1898
+
1899
+
1900
+ @dataclass(frozen=True)
1901
+ class TierInterestDetail(FlexElement):
1902
+ accountId: Optional[str] = None
1903
+ acctAlias: Optional[str] = None
1904
+ model: Optional[str] = None
1905
+ currency: Optional[str] = None
1906
+ fxRateToBase: Optional[decimal.Decimal] = None
1907
+ interestType: Optional[str] = None
1908
+ valueDate: Optional[datetime.date] = None
1909
+ tierBreak: Optional[str] = None
1910
+ balanceThreshold: Optional[decimal.Decimal] = None
1911
+ securitiesPrincipal: Optional[decimal.Decimal] = None
1912
+ commoditiesPrincipal: Optional[decimal.Decimal] = None
1913
+ ibuklPrincipal: Optional[decimal.Decimal] = None
1914
+ totalPrincipal: Optional[decimal.Decimal] = None
1915
+ rate: Optional[decimal.Decimal] = None
1916
+ securitiesInterest: Optional[decimal.Decimal] = None
1917
+ commoditiesInterest: Optional[decimal.Decimal] = None
1918
+ ibuklInterest: Optional[decimal.Decimal] = None
1919
+ totalInterest: Optional[decimal.Decimal] = None
1920
+ code: Tuple[enums.Code, ...] = ()
1921
+ fromAcct: Optional[str] = None
1922
+ toAcct: Optional[str] = None
1923
+ reportDate: Optional[datetime.date] = None
1924
+ marginBalance: Optional[decimal.Decimal] = None
1925
+
1926
+ @dataclass(frozen=True)
1927
+ class HardToBorrowDetail(FlexElement):
1928
+ """Wrapped in <HardToBorrowDetails>"""
1929
+
1930
+ assetCategory: Optional[enums.AssetClass] = None
1931
+ accountId: Optional[str] = None
1932
+ acctAlias: Optional[str] = None
1933
+ model: Optional[str] = None
1934
+ currency: Optional[str] = None
1935
+ fxRateToBase: Optional[decimal.Decimal] = None
1936
+ symbol: Optional[str] = None
1937
+ description: Optional[str] = None
1938
+ conid: Optional[str] = None
1939
+ securityID: Optional[str] = None
1940
+ securityIDType: Optional[str] = None
1941
+ cusip: Optional[str] = None
1942
+ isin: Optional[str] = None
1943
+ listingExchange: Optional[str] = None
1944
+ underlyingConid: Optional[str] = None
1945
+ underlyingSymbol: Optional[str] = None
1946
+ underlyingSecurityID: Optional[str] = None
1947
+ underlyingListingExchange: Optional[str] = None
1948
+ issuer: Optional[str] = None
1949
+ multiplier: Optional[decimal.Decimal] = None
1950
+ strike: Optional[decimal.Decimal] = None
1951
+ expiry: Optional[datetime.date] = None
1952
+ putCall: Optional[enums.PutCall] = None
1953
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1954
+ valueDate: Optional[datetime.date] = None
1955
+ quantity: Optional[decimal.Decimal] = None
1956
+ price: Optional[decimal.Decimal] = None
1957
+ value: Optional[decimal.Decimal] = None
1958
+ borrowFeeRate: Optional[decimal.Decimal] = None
1959
+ borrowFee: Optional[decimal.Decimal] = None
1960
+ code: Tuple[enums.Code, ...] = ()
1961
+ fromAcct: Optional[str] = None
1962
+ toAcct: Optional[str] = None
1963
+
1964
+
1965
+ @dataclass(frozen=True)
1966
+ class SLBActivity(FlexElement):
1967
+ """Wrapped in <SLBActivities>"""
1968
+
1969
+ assetCategory: Optional[enums.AssetClass] = None
1970
+ accountId: Optional[str] = None
1971
+ acctAlias: Optional[str] = None
1972
+ model: Optional[str] = None
1973
+ currency: Optional[str] = None
1974
+ fxRateToBase: Optional[decimal.Decimal] = None
1975
+ symbol: Optional[str] = None
1976
+ description: Optional[str] = None
1977
+ conid: Optional[str] = None
1978
+ securityID: Optional[str] = None
1979
+ securityIDType: Optional[str] = None
1980
+ cusip: Optional[str] = None
1981
+ isin: Optional[str] = None
1982
+ underlyingConid: Optional[str] = None
1983
+ underlyingSymbol: Optional[str] = None
1984
+ issuer: Optional[str] = None
1985
+ multiplier: Optional[decimal.Decimal] = None
1986
+ strike: Optional[decimal.Decimal] = None
1987
+ expiry: Optional[datetime.date] = None
1988
+ putCall: Optional[enums.PutCall] = None
1989
+ principalAdjustFactor: Optional[decimal.Decimal] = None
1990
+ date: Optional[datetime.date] = None
1991
+ slbTransactionId: Optional[str] = None
1992
+ activityDescription: Optional[str] = None
1993
+ type: Optional[str] = None
1994
+ exchange: Optional[str] = None
1995
+ quantity: Optional[decimal.Decimal] = None
1996
+ feeRate: Optional[decimal.Decimal] = None
1997
+ collateralAmount: Optional[decimal.Decimal] = None
1998
+ markQuantity: Optional[decimal.Decimal] = None
1999
+ markPriorPrice: Optional[decimal.Decimal] = None
2000
+ markCurrentPrice: Optional[decimal.Decimal] = None
2001
+ subCategory: Optional[str] = None
2002
+ figi: Optional[str] = None
2003
+ listingExchange: Optional[str] = None
2004
+ underlyingSecurityID: Optional[str] = None
2005
+ underlyingListingExchange: Optional[str] = None
2006
+ issuerCountryCode: Optional[str] = None
2007
+ serialNumber: Optional[decimal.Decimal] = None
2008
+ deliveryType: Optional[decimal.Decimal] = None
2009
+ commodityType: Optional[str] = None
2010
+ fineness: Optional[decimal.Decimal] = None
2011
+ weight: Optional[decimal.Decimal] = None
2012
+
2013
+ @dataclass(frozen=True)
2014
+ class SLBFee:
2015
+ """Wrapped in <SLBFees>"""
2016
+
2017
+ accountId: Optional[str] = None
2018
+ acctAlias: Optional[str] = None
2019
+ model: Optional[str] = None
2020
+ currency: Optional[str] = None
2021
+ fxRateToBase: Optional[str] = None
2022
+ assetCategory: Optional[str] = None
2023
+ symbol: Optional[str] = None
2024
+ description: Optional[str] = None
2025
+ conid: Optional[str] = None
2026
+ securityID: Optional[str] = None
2027
+ securityIDType: Optional[str] = None
2028
+ cusip: Optional[str] = None
2029
+ isin: Optional[str] = None
2030
+ listingExchange: Optional[str] = None
2031
+ underlyingConid: Optional[str] = None
2032
+ underlyingSymbol: Optional[str] = None
2033
+ underlyingSecurityID: Optional[str] = None
2034
+ underlyingListingExchange: Optional[str] = None
2035
+ issuer: Optional[str] = None
2036
+ multiplier: Optional[decimal.Decimal] = None
2037
+ strike: Optional[decimal.Decimal] = None
2038
+ expiry: Optional[datetime.date] = None
2039
+ putCall: Optional[enums.PutCall] = None
2040
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2041
+ valueDate: Optional[datetime.date] = None
2042
+ startDate: Optional[datetime.date] = None
2043
+ type: Optional[str] = None # FIXME
2044
+ exchange: Optional[str] = None
2045
+ quantity: Optional[decimal.Decimal] = None
2046
+ collateralAmount: Optional[decimal.Decimal] = None
2047
+ feeRate: Optional[decimal.Decimal] = None
2048
+ fee: Optional[decimal.Decimal] = None
2049
+ carryCharge: Optional[decimal.Decimal] = None
2050
+ ticketCharge: Optional[decimal.Decimal] = None
2051
+ totalCharges: Optional[decimal.Decimal] = None
2052
+ marketFeeRate: Optional[decimal.Decimal] = None
2053
+ grossLendFee: Optional[decimal.Decimal] = None
2054
+ netLendFeeRate: Optional[decimal.Decimal] = None
2055
+ netLendFee: Optional[decimal.Decimal] = None
2056
+ code: Tuple[enums.Code, ...] = ()
2057
+ fromAcct: Optional[str] = None
2058
+ toAcct: Optional[str] = None
2059
+ subCategory: Optional[str] = None
2060
+ figi: Optional[str] = None
2061
+ issuerCountryCode: Optional[str] = None
2062
+ uniqueID: Optional[str] = None
2063
+ serialNumber: Optional[decimal.Decimal] = None
2064
+ deliveryType: Optional[decimal.Decimal] = None
2065
+ commodityType: Optional[str] = None
2066
+ fineness: Optional[decimal.Decimal] = None
2067
+ weight: Optional[decimal.Decimal] = None
2068
+
2069
+ @dataclass(frozen=True)
2070
+ class Transfer(FlexElement):
2071
+ """Wrapped in <Transfers>"""
2072
+
2073
+ type: Optional[enums.TransferType] = None
2074
+ direction: Optional[enums.InOut] = None
2075
+ assetCategory: Optional[enums.AssetClass] = None
2076
+ subCategory: Optional[str] = None
2077
+ accountId: Optional[str] = None
2078
+ currency: Optional[str] = None
2079
+ fxRateToBase: Optional[decimal.Decimal] = None
2080
+ symbol: Optional[str] = None
2081
+ description: Optional[str] = None
2082
+ conid: Optional[str] = None
2083
+ securityID: Optional[str] = None
2084
+ cusip: Optional[str] = None
2085
+ isin: Optional[str] = None
2086
+ listingExchange: Optional[str] = None
2087
+ underlyingSecurityID: Optional[str] = None
2088
+ underlyingListingExchange: Optional[str] = None
2089
+ reportDate: Optional[datetime.date] = None
2090
+ underlyingConid: Optional[str] = None
2091
+ date: Optional[datetime.date] = None
2092
+ dateTime: Optional[datetime.datetime] = None
2093
+ account: Optional[str] = None
2094
+ deliveringBroker: Optional[str] = None
2095
+ quantity: Optional[decimal.Decimal] = None
2096
+ transferPrice: Optional[decimal.Decimal] = None
2097
+ positionAmount: Optional[decimal.Decimal] = None
2098
+ positionAmountInBase: Optional[decimal.Decimal] = None
2099
+ capitalGainsPnl: Optional[decimal.Decimal] = None
2100
+ cashTransfer: Optional[decimal.Decimal] = None
2101
+ code: Tuple[enums.Code, ...] = ()
2102
+ clientReference: Optional[str] = None
2103
+ acctAlias: Optional[str] = None
2104
+ model: Optional[str] = None
2105
+ sedol: Optional[str] = None
2106
+ securityIDType: Optional[str] = None
2107
+ underlyingSymbol: Optional[str] = None
2108
+ issuer: Optional[str] = None
2109
+ multiplier: Optional[decimal.Decimal] = None
2110
+ strike: Optional[decimal.Decimal] = None
2111
+ expiry: Optional[datetime.date] = None
2112
+ putCall: Optional[enums.PutCall] = None
2113
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2114
+ company: Optional[str] = None
2115
+ accountName: Optional[str] = None
2116
+ pnlAmount: Optional[decimal.Decimal] = None
2117
+ pnlAmountInBase: Optional[decimal.Decimal] = None
2118
+ fxPnl: Optional[decimal.Decimal] = None
2119
+ transactionID: Optional[str] = None
2120
+ serialNumber: Optional[str] = None
2121
+ deliveryType: Optional[str] = None
2122
+ commodityType: Optional[str] = None
2123
+ fineness: Optional[decimal.Decimal] = None
2124
+ weight: Optional[str] = None
2125
+
2126
+
2127
+ @dataclass(frozen=True)
2128
+ class UnsettledTransfer(FlexElement):
2129
+ """Wrapped in <UnsettledTransfers>"""
2130
+
2131
+ direction: Optional[enums.ToFrom] = None
2132
+ assetCategory: Optional[enums.AssetClass] = None
2133
+ accountId: Optional[str] = None
2134
+ currency: Optional[str] = None
2135
+ fxRateToBase: Optional[decimal.Decimal] = None
2136
+ symbol: Optional[str] = None
2137
+ description: Optional[str] = None
2138
+ conid: Optional[str] = None
2139
+ securityID: Optional[str] = None
2140
+ cusip: Optional[str] = None
2141
+ isin: Optional[str] = None
2142
+ sedol: Optional[str] = None
2143
+ underlyingConid: Optional[str] = None
2144
+ stage: Optional[str] = None
2145
+ tradeDate: Optional[datetime.date] = None
2146
+ targetSettlement: Optional[datetime.date] = None
2147
+ contra: Optional[str] = None
2148
+ quantity: Optional[decimal.Decimal] = None
2149
+ tradePrice: Optional[decimal.Decimal] = None
2150
+ tradeAmount: Optional[decimal.Decimal] = None
2151
+ tradeAmountInBase: Optional[decimal.Decimal] = None
2152
+ transactionID: Optional[str] = None
2153
+
2154
+
2155
+ @dataclass(frozen=True)
2156
+ class PriorPeriodPosition(FlexElement):
2157
+ """Wrapped in <PriorPeriodPositions>"""
2158
+
2159
+ assetCategory: Optional[enums.AssetClass] = None
2160
+ accountId: Optional[str] = None
2161
+ currency: Optional[str] = None
2162
+ fxRateToBase: Optional[decimal.Decimal] = None
2163
+ symbol: Optional[str] = None
2164
+ description: Optional[str] = None
2165
+ conid: Optional[str] = None
2166
+ securityID: Optional[str] = None
2167
+ cusip: Optional[str] = None
2168
+ isin: Optional[str] = None
2169
+ listingExchange: Optional[str] = None
2170
+ underlyingConid: Optional[str] = None
2171
+ underlyingSecurityID: Optional[str] = None
2172
+ underlyingListingExchange: Optional[str] = None
2173
+ priorMtmPnl: Optional[decimal.Decimal] = None
2174
+ date: Optional[datetime.date] = None
2175
+ price: Optional[decimal.Decimal] = None
2176
+ acctAlias: Optional[str] = None
2177
+ model: Optional[str] = None
2178
+ sedol: Optional[str] = None
2179
+ securityIDType: Optional[str] = None
2180
+ underlyingSymbol: Optional[str] = None
2181
+ issuer: Optional[str] = None
2182
+ multiplier: Optional[decimal.Decimal] = None
2183
+ strike: Optional[decimal.Decimal] = None
2184
+ expiry: Optional[datetime.date] = None
2185
+ putCall: Optional[enums.PutCall] = None
2186
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2187
+ subCategory: Optional[str] = None
2188
+ figi: Optional[str] = None
2189
+ issuerCountryCode: Optional[str] = None
2190
+ serialNumber: Optional[decimal.Decimal] = None
2191
+ deliveryType: Optional[decimal.Decimal] = None
2192
+ commodityType: Optional[str] = None
2193
+ fineness: Optional[decimal.Decimal] = None
2194
+ weight: Optional[decimal.Decimal] = None
2195
+
2196
+ @dataclass(frozen=True)
2197
+ class CorporateAction(FlexElement):
2198
+ """Wrapped in <CorporateActions>"""
2199
+
2200
+ assetCategory: Optional[enums.AssetClass] = None
2201
+ subCategory: Optional[str] = None
2202
+ accountId: Optional[str] = None
2203
+ currency: Optional[str] = None
2204
+ fxRateToBase: Optional[decimal.Decimal] = None
2205
+ symbol: Optional[str] = None
2206
+ description: Optional[str] = None
2207
+ conid: Optional[str] = None
2208
+ securityID: Optional[str] = None
2209
+ cusip: Optional[str] = None
2210
+ isin: Optional[str] = None
2211
+ listingExchange: Optional[str] = None
2212
+ underlyingConid: Optional[str] = None
2213
+ underlyingSecurityID: Optional[str] = None
2214
+ underlyingListingExchange: Optional[str] = None
2215
+ actionID: Optional[str] = None
2216
+ actionDescription: Optional[str] = None
2217
+ dateTime: Optional[datetime.datetime] = None
2218
+ amount: Optional[decimal.Decimal] = None
2219
+ quantity: Optional[decimal.Decimal] = None
2220
+ fifoPnlRealized: Optional[decimal.Decimal] = None
2221
+ capitalGainsPnl: Optional[decimal.Decimal] = None
2222
+ fxPnl: Optional[decimal.Decimal] = None
2223
+ mtmPnl: Optional[decimal.Decimal] = None
2224
+ # Effective 2010, CorporateAction has a `type` attribute
2225
+ type: Optional[enums.Reorg] = None
2226
+ code: Tuple[enums.Code, ...] = ()
2227
+ sedol: Optional[str] = None
2228
+ acctAlias: Optional[str] = None
2229
+ model: Optional[str] = None
2230
+ securityIDType: Optional[str] = None
2231
+ underlyingSymbol: Optional[str] = None
2232
+ issuer: Optional[str] = None
2233
+ multiplier: Optional[decimal.Decimal] = None
2234
+ strike: Optional[decimal.Decimal] = None
2235
+ expiry: Optional[datetime.date] = None
2236
+ putCall: Optional[enums.PutCall] = None
2237
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2238
+ reportDate: Optional[datetime.date] = None
2239
+ proceeds: Optional[decimal.Decimal] = None
2240
+ value: Optional[decimal.Decimal] = None
2241
+ transactionID: Optional[str] = None
2242
+ levelOfDetail: Optional[str] = None
2243
+ serialNumber: Optional[str] = None
2244
+ deliveryType: Optional[str] = None
2245
+ commodityType: Optional[str] = None
2246
+ fineness: Optional[decimal.Decimal] = None
2247
+ weight: Optional[str] = None
2248
+
2249
+
2250
+ @dataclass(frozen=True)
2251
+ class FxTransaction(FlexElement):
2252
+ """Wrapped in <FxTransactions>"""
2253
+
2254
+ assetCategory: Optional[enums.AssetClass] = None
2255
+ accountId: Optional[str] = None
2256
+ functionalCurrency: Optional[str] = None
2257
+ fxCurrency: Optional[str] = None
2258
+ quantity: Optional[decimal.Decimal] = None
2259
+ proceeds: Optional[decimal.Decimal] = None
2260
+ cost: Optional[decimal.Decimal] = None
2261
+ realizedPL: Optional[decimal.Decimal] = None
2262
+ activityDescription: Optional[str] = None
2263
+ dateTime: Optional[datetime.datetime] = None
2264
+ code: Tuple[enums.Code, ...] = ()
2265
+ reportDate: Optional[datetime.date] = None
2266
+ acctAlias: Optional[str] = None
2267
+ model: Optional[str] = None
2268
+ levelOfDetail: Optional[str] = None
2269
+
2270
+
2271
+ @dataclass(frozen=True)
2272
+ class CashTransaction(FlexElement):
2273
+ """Wrapped in <CashTransactions>"""
2274
+
2275
+ type: Optional[enums.CashAction] = None
2276
+ assetCategory: Optional[enums.AssetClass] = None
2277
+ subCategory: Optional[str] = None
2278
+ accountId: Optional[str] = None
2279
+ currency: Optional[str] = None
2280
+ fxRateToBase: Optional[decimal.Decimal] = None
2281
+ description: Optional[str] = None
2282
+ conid: Optional[str] = None
2283
+ securityID: Optional[str] = None
2284
+ cusip: Optional[str] = None
2285
+ isin: Optional[str] = None
2286
+ listingExchange: Optional[str] = None
2287
+ underlyingConid: Optional[str] = None
2288
+ underlyingSecurityID: Optional[str] = None
2289
+ underlyingListingExchange: Optional[str] = None
2290
+ amount: Optional[decimal.Decimal] = None
2291
+ dateTime: Optional[datetime.datetime] = None
2292
+ sedol: Optional[str] = None
2293
+ symbol: Optional[str] = None
2294
+ securityIDType: Optional[str] = None
2295
+ underlyingSymbol: Optional[str] = None
2296
+ issuer: Optional[str] = None
2297
+ multiplier: Optional[decimal.Decimal] = None
2298
+ strike: Optional[decimal.Decimal] = None
2299
+ expiry: Optional[datetime.date] = None
2300
+ putCall: Optional[enums.PutCall] = None
2301
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2302
+ tradeID: Optional[str] = None
2303
+ code: Tuple[enums.Code, ...] = ()
2304
+ transactionID: Optional[str] = None
2305
+ reportDate: Optional[datetime.date] = None
2306
+ clientReference: Optional[str] = None
2307
+ settleDate: Optional[datetime.date] = None
2308
+ acctAlias: Optional[str] = None
2309
+ actionID: Optional[str] = None
2310
+ model: Optional[str] = None
2311
+ levelOfDetail: Optional[str] = None
2312
+ serialNumber: Optional[str] = None
2313
+ deliveryType: Optional[str] = None
2314
+ commodityType: Optional[str] = None
2315
+ fineness: Optional[decimal.Decimal] = None
2316
+ weight: Optional[str] = None
2317
+ figi: Optional[str] = None
2318
+ issuerCountryCode: Optional[str] = None
2319
+ availableForTradingDate: Optional[datetime.datetime] = None
2320
+ exDate: Optional[datetime.datetime] = None
2321
+
2322
+ @dataclass(frozen=True)
2323
+ class DebitCardActivity(FlexElement):
2324
+ """Wrapped in <DebitCardActivities>"""
2325
+
2326
+ accountId: Optional[str] = None
2327
+ acctAlias: Optional[str] = None
2328
+ currency: Optional[str] = None
2329
+ fxRateToBase: Optional[decimal.Decimal] = None
2330
+ assetCategory: Optional[enums.AssetClass] = None
2331
+ status: Optional[str] = None
2332
+ reportDate: Optional[datetime.date] = None
2333
+ postingDate: Optional[datetime.date] = None
2334
+ transactionDateTime: Optional[datetime.datetime] = None
2335
+ category: Optional[str] = None
2336
+ merchantNameLocation: Optional[str] = None
2337
+ amount: Optional[decimal.Decimal] = None
2338
+ model: Optional[str] = None
2339
+
2340
+
2341
+ @dataclass(frozen=True)
2342
+ class ChangeInDividendAccrual(FlexElement):
2343
+ """Wrapped in <ChangeInDividendAccruals>"""
2344
+
2345
+ date: Optional[datetime.date] = None
2346
+ assetCategory: Optional[enums.AssetClass] = None
2347
+ currency: Optional[str] = None
2348
+ fxRateToBase: Optional[decimal.Decimal] = None
2349
+ accountId: Optional[str] = None
2350
+ symbol: Optional[str] = None
2351
+ description: Optional[str] = None
2352
+ conid: Optional[str] = None
2353
+ securityID: Optional[str] = None
2354
+ cusip: Optional[str] = None
2355
+ isin: Optional[str] = None
2356
+ sedol: Optional[str] = None
2357
+ listingExchange: Optional[str] = None
2358
+ underlyingSecurityID: Optional[str] = None
2359
+ underlyingListingExchange: Optional[str] = None
2360
+ reportDate: Optional[datetime.date] = None
2361
+ underlyingConid: Optional[str] = None
2362
+ exDate: Optional[datetime.date] = None
2363
+ payDate: Optional[datetime.date] = None
2364
+ quantity: Optional[decimal.Decimal] = None
2365
+ tax: Optional[decimal.Decimal] = None
2366
+ fee: Optional[decimal.Decimal] = None
2367
+ grossRate: Optional[decimal.Decimal] = None
2368
+ grossAmount: Optional[decimal.Decimal] = None
2369
+ netAmount: Optional[decimal.Decimal] = None
2370
+ code: Tuple[enums.Code, ...] = ()
2371
+ securityIDType: Optional[str] = None
2372
+ underlyingSymbol: Optional[str] = None
2373
+ issuer: Optional[str] = None
2374
+ multiplier: Optional[decimal.Decimal] = None
2375
+ strike: Optional[decimal.Decimal] = None
2376
+ expiry: Optional[datetime.date] = None
2377
+ putCall: Optional[enums.PutCall] = None
2378
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2379
+ fromAcct: Optional[str] = None
2380
+ toAcct: Optional[str] = None
2381
+ acctAlias: Optional[str] = None
2382
+ model: Optional[str] = None
2383
+ subCategory: Optional[str] = None
2384
+ figi: Optional[str] = None
2385
+ issuerCountryCode: Optional[str] = None
2386
+ actionID: Optional[decimal.Decimal] = None #unique numerical ID
2387
+ levelOfDetail: Optional[str] = None
2388
+ serialNumber: Optional[decimal.Decimal] = None
2389
+ deliveryType: Optional[decimal.Decimal] = None
2390
+ commodityType: Optional[str] = None
2391
+ fineness: Optional[decimal.Decimal] = None
2392
+ weight: Optional[decimal.Decimal] = None
2393
+
2394
+ # Type alias to work around https://github.com/python/mypy/issues/1775
2395
+ _ChangeInDividendAccrual = ChangeInDividendAccrual
2396
+
2397
+
2398
+ @dataclass(frozen=True)
2399
+ class OpenDividendAccrual(FlexElement):
2400
+ """Wrapped in <OpenDividendAccruals>"""
2401
+
2402
+ assetCategory: Optional[enums.AssetClass] = None
2403
+ currency: Optional[str] = None
2404
+ fxRateToBase: Optional[decimal.Decimal] = None
2405
+ accountId: Optional[str] = None
2406
+ symbol: Optional[str] = None
2407
+ description: Optional[str] = None
2408
+ conid: Optional[str] = None
2409
+ securityID: Optional[str] = None
2410
+ cusip: Optional[str] = None
2411
+ isin: Optional[str] = None
2412
+ listingExchange: Optional[str] = None
2413
+ underlyingConid: Optional[str] = None
2414
+ underlyingSecurityID: Optional[str] = None
2415
+ underlyingListingExchange: Optional[str] = None
2416
+ exDate: Optional[datetime.date] = None
2417
+ payDate: Optional[datetime.date] = None
2418
+ quantity: Optional[decimal.Decimal] = None
2419
+ tax: Optional[decimal.Decimal] = None
2420
+ fee: Optional[decimal.Decimal] = None
2421
+ grossRate: Optional[decimal.Decimal] = None
2422
+ grossAmount: Optional[decimal.Decimal] = None
2423
+ netAmount: Optional[decimal.Decimal] = None
2424
+ code: Tuple[enums.Code, ...] = ()
2425
+ sedol: Optional[str] = None
2426
+ securityIDType: Optional[str] = None
2427
+ underlyingSymbol: Optional[str] = None
2428
+ issuer: Optional[str] = None
2429
+ multiplier: Optional[decimal.Decimal] = None
2430
+ strike: Optional[decimal.Decimal] = None
2431
+ expiry: Optional[datetime.date] = None
2432
+ putCall: Optional[enums.PutCall] = None
2433
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2434
+ fromAcct: Optional[str] = None
2435
+ toAcct: Optional[str] = None
2436
+ acctAlias: Optional[str] = None
2437
+ model: Optional[str] = None
2438
+ serialNumber: Optional[str] = None
2439
+ deliveryType: Optional[str] = None
2440
+ commodityType: Optional[str] = None
2441
+ fineness: Optional[decimal.Decimal] = None
2442
+ weight: Optional[str] = None
2443
+
2444
+
2445
+ @dataclass(frozen=True)
2446
+ class SecurityInfo(FlexElement):
2447
+ """Wrapped in <SecuritiesInfo>"""
2448
+
2449
+ assetCategory: Optional[enums.AssetClass] = None
2450
+ symbol: Optional[str] = None
2451
+ description: Optional[str] = None
2452
+ conid: Optional[str] = None
2453
+ securityID: Optional[str] = None
2454
+ cusip: Optional[str] = None
2455
+ isin: Optional[str] = None
2456
+ listingExchange: Optional[str] = None
2457
+ underlyingSecurityID: Optional[str] = None
2458
+ underlyingListingExchange: Optional[str] = None
2459
+ underlyingConid: Optional[str] = None
2460
+ underlyingCategory: Optional[str] = None
2461
+ subCategory: Optional[str] = None
2462
+ multiplier: Optional[decimal.Decimal] = None
2463
+ strike: Optional[decimal.Decimal] = None
2464
+ expiry: Optional[datetime.date] = None
2465
+ maturity: Optional[str] = None
2466
+ issueDate: Optional[datetime.date] = None
2467
+ type: Optional[str] = None
2468
+ sedol: Optional[str] = None
2469
+ securityIDType: Optional[str] = None
2470
+ underlyingSymbol: Optional[str] = None
2471
+ issuer: Optional[str] = None
2472
+ putCall: Optional[enums.PutCall] = None
2473
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2474
+ code: Tuple[enums.Code, ...] = ()
2475
+ currency: Optional[str] = None
2476
+ settlementPolicyMethod: Optional[str] = None
2477
+ figi: Optional[str] = None
2478
+ issuerCountryCode: Optional[str] = None
2479
+ relatedTradeID: Optional[str] = None
2480
+ origTransactionID: Optional[str] = None
2481
+ relatedTransactionID: Optional[str] = None
2482
+ rtn: Optional[str] = None
2483
+ initialInvestment: Optional[decimal.Decimal] = None
2484
+ serialNumber: Optional[str] = None
2485
+ deliveryType: Optional[str] = None
2486
+ commodityType: Optional[str] = None
2487
+ fineness: Optional[decimal.Decimal] = None
2488
+ weight: Optional[str] = None
2489
+
2490
+
2491
+ @dataclass(frozen=True)
2492
+ class ConversionRate(FlexElement):
2493
+ """Wrapped in <ConversionRates>"""
2494
+
2495
+ reportDate: Optional[datetime.date] = None
2496
+ fromCurrency: Optional[str] = None
2497
+ toCurrency: Optional[str] = None
2498
+ rate: Optional[decimal.Decimal] = None
2499
+
2500
+
2501
+ @dataclass(frozen=True)
2502
+ class FIFOPerformanceSummaryUnderlying(FlexElement):
2503
+ accountId: Optional[str] = None
2504
+ acctAlias: Optional[str] = None
2505
+ model: Optional[str] = None
2506
+ listingExchange: Optional[str] = None
2507
+ assetCategory: Optional[enums.AssetClass] = None
2508
+ symbol: Optional[str] = None
2509
+ description: Optional[str] = None
2510
+ conid: Optional[str] = None
2511
+ securityID: Optional[str] = None
2512
+ cusip: Optional[str] = None
2513
+ isin: Optional[str] = None
2514
+ underlyingConid: Optional[str] = None
2515
+ underlyingSecurityID: Optional[str] = None
2516
+ underlyingListingExchange: Optional[str] = None
2517
+ realizedSTProfit: Optional[decimal.Decimal] = None
2518
+ realizedSTLoss: Optional[decimal.Decimal] = None
2519
+ realizedLTProfit: Optional[decimal.Decimal] = None
2520
+ realizedLTLoss: Optional[decimal.Decimal] = None
2521
+ totalRealizedPnl: Optional[decimal.Decimal] = None
2522
+ unrealizedProfit: Optional[decimal.Decimal] = None
2523
+ unrealizedLoss: Optional[decimal.Decimal] = None
2524
+ totalUnrealizedPnl: Optional[decimal.Decimal] = None
2525
+ totalFifoPnl: Optional[decimal.Decimal] = None
2526
+ totalRealizedCapitalGainsPnl: Optional[decimal.Decimal] = None
2527
+ totalRealizedFxPnl: Optional[decimal.Decimal] = None
2528
+ totalUnrealizedCapitalGainsPnl: Optional[decimal.Decimal] = None
2529
+ totalUnrealizedFxPnl: Optional[decimal.Decimal] = None
2530
+ totalCapitalGainsPnl: Optional[decimal.Decimal] = None
2531
+ totalFxPnl: Optional[decimal.Decimal] = None
2532
+ transferredPnl: Optional[decimal.Decimal] = None
2533
+ transferredCapitalGainsPnl: Optional[decimal.Decimal] = None
2534
+ transferredFxPnl: Optional[decimal.Decimal] = None
2535
+ sedol: Optional[str] = None
2536
+ securityIDType: Optional[str] = None
2537
+ underlyingSymbol: Optional[str] = None
2538
+ issuer: Optional[str] = None
2539
+ multiplier: Optional[decimal.Decimal] = None
2540
+ strike: Optional[decimal.Decimal] = None
2541
+ expiry: Optional[datetime.date] = None
2542
+ putCall: Optional[enums.PutCall] = None
2543
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2544
+ reportDate: Optional[datetime.date] = None
2545
+ unrealizedSTProfit: Optional[decimal.Decimal] = None
2546
+ unrealizedSTLoss: Optional[decimal.Decimal] = None
2547
+ unrealizedLTProfit: Optional[decimal.Decimal] = None
2548
+ unrealizedLTLoss: Optional[decimal.Decimal] = None
2549
+ costAdj: Optional[decimal.Decimal] = None
2550
+ code: Tuple[enums.Code, ...] = ()
2551
+ serialNumber: Optional[str] = None
2552
+ deliveryType: Optional[str] = None
2553
+ commodityType: Optional[str] = None
2554
+ fineness: Optional[decimal.Decimal] = None
2555
+ weight: Optional[str] = None
2556
+ subCategory: Optional[str] = None
2557
+ figi: Optional[str] = None
2558
+ issuerCountryCode: Optional[str] = None
2559
+
2560
+ @dataclass(frozen=True)
2561
+ class NetStockPosition(FlexElement):
2562
+ assetCategory: Optional[enums.AssetClass] = None
2563
+ accountId: Optional[str] = None
2564
+ acctAlias: Optional[str] = None
2565
+ model: Optional[str] = None
2566
+ currency: Optional[str] = None
2567
+ symbol: Optional[str] = None
2568
+ description: Optional[str] = None
2569
+ conid: Optional[str] = None
2570
+ securityID: Optional[str] = None
2571
+ securityIDType: Optional[str] = None
2572
+ cusip: Optional[str] = None
2573
+ isin: Optional[str] = None
2574
+ sedol: Optional[str] = None
2575
+ listingExchange: Optional[str] = None
2576
+ underlyingConid: Optional[str] = None
2577
+ underlyingSymbol: Optional[str] = None
2578
+ underlyingSecurityID: Optional[str] = None
2579
+ underlyingListingExchange: Optional[str] = None
2580
+ issuer: Optional[str] = None
2581
+ multiplier: Optional[decimal.Decimal] = None
2582
+ strike: Optional[decimal.Decimal] = None
2583
+ expiry: Optional[datetime.date] = None
2584
+ putCall: Optional[enums.PutCall] = None
2585
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2586
+ reportDate: Optional[datetime.date] = None
2587
+ sharesAtIb: Optional[decimal.Decimal] = None
2588
+ sharesBorrowed: Optional[decimal.Decimal] = None
2589
+ sharesLent: Optional[decimal.Decimal] = None
2590
+ netShares: Optional[decimal.Decimal] = None
2591
+ serialNumber: Optional[str] = None
2592
+ deliveryType: Optional[str] = None
2593
+ commodityType: Optional[str] = None
2594
+ fineness: Optional[decimal.Decimal] = None
2595
+ weight: Optional[str] = None
2596
+ subCategory: Optional[str] = None
2597
+ figi: Optional[str] = None
2598
+ issuerCountryCode: Optional[str] = None
2599
+
2600
+ @dataclass(frozen=True)
2601
+ class ClientFee(FlexElement):
2602
+ accountId: Optional[str] = None
2603
+ acctAlias: Optional[str] = None
2604
+ model: Optional[str] = None
2605
+ currency: Optional[str] = None
2606
+ fxRateToBase: Optional[decimal.Decimal] = None
2607
+ feeType: Optional[str] = None
2608
+ date: Optional[datetime.datetime] = None
2609
+ description: Optional[str] = None
2610
+ expenseIndicator: Optional[str] = None
2611
+ revenue: Optional[decimal.Decimal] = None
2612
+ expense: Optional[decimal.Decimal] = None
2613
+ net: Optional[decimal.Decimal] = None
2614
+ revenueInBase: Optional[decimal.Decimal] = None
2615
+ expenseInBase: Optional[decimal.Decimal] = None
2616
+ netInBase: Optional[decimal.Decimal] = None
2617
+ tradeID: Optional[str] = None
2618
+ execID: Optional[str] = None
2619
+ levelOfDetail: Optional[str] = None
2620
+ assetCategory: Optional[str] = None
2621
+ settleDate: Optional[str] = None
2622
+ buySell: Optional[str] = None
2623
+ quantity: Optional[str] = None
2624
+ tradePrice: Optional[str] = None
2625
+ proceeds: Optional[str] = None
2626
+ symbol: Optional[str] = None
2627
+ underlyingSymbol: Optional[str] = None
2628
+ multiplier: Optional[str] = None
2629
+ underlyingSecurityID: Optional[str] = None
2630
+
2631
+
2632
+ @dataclass(frozen=True)
2633
+ class ClientFeesDetail(FlexElement):
2634
+ accountId: Optional[str] = None
2635
+ acctAlias: Optional[str] = None
2636
+ model: Optional[str] = None
2637
+ currency: Optional[str] = None
2638
+ fxRateToBase: Optional[decimal.Decimal] = None
2639
+ date: Optional[datetime.datetime] = None
2640
+ tradeID: Optional[str] = None
2641
+ execID: Optional[str] = None
2642
+ totalRevenue: Optional[decimal.Decimal] = None
2643
+ totalCommission: Optional[decimal.Decimal] = None
2644
+ brokerExecutionCharge: Optional[decimal.Decimal] = None
2645
+ clearingCharge: Optional[decimal.Decimal] = None
2646
+ thirdPartyExecutionCharge: Optional[decimal.Decimal] = None
2647
+ thirdPartyRegulatoryCharge: Optional[decimal.Decimal] = None
2648
+ regFINRATradingActivityFee: Optional[decimal.Decimal] = None
2649
+ regSection31TransactionFee: Optional[decimal.Decimal] = None
2650
+ regOther: Optional[decimal.Decimal] = None
2651
+ totalNet: Optional[decimal.Decimal] = None
2652
+ totalNetInBase: Optional[decimal.Decimal] = None
2653
+ levelOfDetail: Optional[str] = None
2654
+ other: Optional[decimal.Decimal] = None
2655
+
2656
+
2657
+ @dataclass(frozen=True)
2658
+ class TransactionTax(FlexElement):
2659
+ accountId: Optional[str] = None
2660
+ acctAlias: Optional[str] = None
2661
+ model: Optional[str] = None
2662
+ currency: Optional[str] = None
2663
+ fxRateToBase: Optional[decimal.Decimal] = None
2664
+ assetCategory: Optional[enums.AssetClass] = None
2665
+ symbol: Optional[str] = None
2666
+ description: Optional[str] = None
2667
+ conid: Optional[str] = None
2668
+ securityID: Optional[str] = None
2669
+ securityIDType: Optional[str] = None
2670
+ cusip: Optional[str] = None
2671
+ isin: Optional[str] = None
2672
+ listingExchange: Optional[str] = None
2673
+ underlyingConid: Optional[str] = None
2674
+ underlyingSecurityID: Optional[str] = None
2675
+ underlyingSymbol: Optional[str] = None
2676
+ underlyingListingExchange: Optional[str] = None
2677
+ issuer: Optional[str] = None
2678
+ multiplier: Optional[decimal.Decimal] = None
2679
+ strike: Optional[decimal.Decimal] = None
2680
+ expiry: Optional[datetime.date] = None
2681
+ putCall: Optional[enums.PutCall] = None
2682
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2683
+ date: Optional[datetime.datetime] = None
2684
+ taxDescription: Optional[str] = None
2685
+ quantity: Optional[decimal.Decimal] = None
2686
+ reportDate: Optional[datetime.date] = None
2687
+ taxAmount: Optional[decimal.Decimal] = None
2688
+ tradeId: Optional[str] = None
2689
+ tradePrice: Optional[decimal.Decimal] = None
2690
+ source: Optional[str] = None
2691
+ code: Tuple[enums.Code, ...] = ()
2692
+ levelOfDetail: Optional[str] = None
2693
+
2694
+
2695
+ @dataclass(frozen=True)
2696
+ class TransactionTaxDetail(FlexElement):
2697
+ accountId: Optional[str] = None
2698
+ acctAlias: Optional[str] = None
2699
+ model: Optional[str] = None
2700
+ currency: Optional[str] = None
2701
+ fxRateToBase: Optional[decimal.Decimal] = None
2702
+ assetCategory: Optional[enums.AssetClass] = None
2703
+ symbol: Optional[str] = None
2704
+ description: Optional[str] = None
2705
+ conid: Optional[str] = None
2706
+ securityID: Optional[str] = None
2707
+ securityIDType: Optional[str] = None
2708
+ cusip: Optional[str] = None
2709
+ isin: Optional[str] = None
2710
+ listingExchange: Optional[str] = None
2711
+ underlyingConid: Optional[str] = None
2712
+ underlyingSecurityID: Optional[str] = None
2713
+ underlyingSymbol: Optional[str] = None
2714
+ underlyingListingExchange: Optional[str] = None
2715
+ issuer: Optional[str] = None
2716
+ multiplier: Optional[decimal.Decimal] = None
2717
+ strike: Optional[decimal.Decimal] = None
2718
+ expiry: Optional[datetime.date] = None
2719
+ putCall: Optional[enums.PutCall] = None
2720
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2721
+ date: Optional[datetime.datetime] = None
2722
+ taxDescription: Optional[str] = None
2723
+ quantity: Optional[decimal.Decimal] = None
2724
+ reportDate: Optional[datetime.date] = None
2725
+ taxAmount: Optional[decimal.Decimal] = None
2726
+ tradeId: Optional[str] = None
2727
+ tradePrice: Optional[decimal.Decimal] = None
2728
+ source: Optional[str] = None
2729
+ code: Tuple[enums.Code, ...] = ()
2730
+ levelOfDetail: Optional[str] = None
2731
+
2732
+
2733
+ @dataclass(frozen=True)
2734
+ class SalesTax(FlexElement):
2735
+ accountId: Optional[str] = None
2736
+ acctAlias: Optional[str] = None
2737
+ model: Optional[str] = None
2738
+ currency: Optional[str] = None
2739
+ fxRateToBase: Optional[decimal.Decimal] = None
2740
+ assetCategory: Optional[enums.AssetClass] = None
2741
+ subCategory: Optional[str] = None
2742
+ symbol: Optional[str] = None
2743
+ description: Optional[str] = None
2744
+ conid: Optional[str] = None
2745
+ securityID: Optional[str] = None
2746
+ securityIDType: Optional[str] = None
2747
+ cusip: Optional[str] = None
2748
+ isin: Optional[str] = None
2749
+ listingExchange: Optional[str] = None
2750
+ underlyingConid: Optional[str] = None
2751
+ underlyingSecurityID: Optional[str] = None
2752
+ underlyingSymbol: Optional[str] = None
2753
+ underlyingListingExchange: Optional[str] = None
2754
+ issuer: Optional[str] = None
2755
+ multiplier: Optional[decimal.Decimal] = None
2756
+ strike: Optional[decimal.Decimal] = None
2757
+ expiry: Optional[datetime.date] = None
2758
+ putCall: Optional[enums.PutCall] = None
2759
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2760
+ date: Optional[datetime.date] = None
2761
+ country: Optional[str] = None
2762
+ taxType: Optional[str] = None
2763
+ payer: Optional[str] = None
2764
+ taxableDescription: Optional[str] = None
2765
+ taxableAmount: Optional[decimal.Decimal] = None
2766
+ taxRate: Optional[decimal.Decimal] = None
2767
+ salesTax: Optional[decimal.Decimal] = None
2768
+ taxableTransactionID: Optional[str] = None
2769
+ transactionID: Optional[str] = None
2770
+ serialNumber: Optional[str] = None
2771
+ deliveryType: Optional[str] = None
2772
+ commodityType: Optional[str] = None
2773
+ fineness: Optional[decimal.Decimal] = None
2774
+ weight: Optional[str] = None
2775
+ code: Tuple[enums.Code, ...] = ()
2776
+
2777
+
2778
+ @dataclass(frozen=True)
2779
+ class SLBOpenContract(FlexElement):
2780
+ accountId: Optional[str] = None
2781
+ acctAlias: Optional[str] = None
2782
+ model: Optional[str] = None
2783
+ currency: Optional[str] = None
2784
+ fxRateToBase: Optional[decimal.Decimal] = None
2785
+ description: Optional[str] = None
2786
+ conid: Optional[str] = None
2787
+ securityID: Optional[str] = None
2788
+ cusip: Optional[str] = None
2789
+ isin: Optional[str] = None
2790
+ assetCategory: Optional[str] = None
2791
+ subCategory: Optional[str] = None
2792
+ symbol: Optional[str] = None
2793
+ securityIDType: Optional[str] = None
2794
+ figi: Optional[str] = None
2795
+ listingExchange: Optional[str] = None
2796
+ underlyingConid: Optional[str] = None
2797
+ underlyingSymbol: Optional[str] = None
2798
+ underlyingSecurityID: Optional[str] = None
2799
+ underlyingListingExchange: Optional[str] = None
2800
+ issuer: Optional[str] = None
2801
+ issuerCountryCode: Optional[str] = None
2802
+ multiplier: Optional[decimal.Decimal] = None
2803
+ strike: Optional[decimal.Decimal] = None
2804
+ expiry: Optional[datetime.date] = None
2805
+ putCall: Optional[enums.PutCall] = None
2806
+ principalAdjustFactor: Optional[decimal.Decimal] = None
2807
+ date: Optional[datetime.date] = None
2808
+ type: Optional[str] = None
2809
+ slbTransactionId: Optional[str] = None
2810
+ exchange: Optional[str] = None
2811
+ quantity: Optional[decimal.Decimal] = None
2812
+ excessQuantity: Optional[decimal.Decimal] = None
2813
+ feeRate: Optional[decimal.Decimal] = None
2814
+ collateralAmount: Optional[decimal.Decimal] = None
2815
+ levelOfDetail: Optional[str] = None
2816
+ serialNumber: Optional[decimal.Decimal] = None
2817
+ deliveryType: Optional[decimal.Decimal] = None
2818
+ commodityType: Optional[str] = None
2819
+ fineness: Optional[decimal.Decimal] = None
2820
+ weight: Optional[decimal.Decimal] = None
2821
+
2822
+ # Type alias to work around https://github.com/python/mypy/issues/1775
2823
+ _ClientFeesDetail = ClientFeesDetail