Skip to content

Commit bbb675b

Browse files
robcohenclaude
andcommitted
Add missing fields for current IBKR Flex Query format
- Add positionActionID to Trade, Lot, SymbolSummary, AssetSummary, Order - Add 32 missing fields to SymbolSummary (closePrice, cost, mtmPnl, etc.) - Add RUS to CURRENCY_CODES (used by IBKR for Russian-related data) - Remove hardcoded URL override that broke API calls 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 11f9d31 commit bbb675b

3 files changed

Lines changed: 38 additions & 2 deletions

File tree

ibflex/Types.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,6 +1145,7 @@ class Trade(FlexElement):
11451145
issuerCountryCode: Optional[str] = None
11461146
rtn: Optional[str] = None
11471147
initialInvestment: Optional[decimal.Decimal] = None
1148+
positionActionID: Optional[str] = None
11481149

11491150

11501151
@dataclass(frozen=True)
@@ -1297,6 +1298,7 @@ class Lot(FlexElement):
12971298
relatedTradeID: Optional[str] = None
12981299
rtn: Optional[str] = None
12991300
initialInvestment: Optional[decimal.Decimal] = None
1301+
positionActionID: Optional[str] = None
13001302

13011303

13021304
@dataclass(frozen=True)
@@ -1427,6 +1429,39 @@ class SymbolSummary(FlexElement):
14271429
relatedTradeID: Optional[str] = None
14281430
origTransactionID: Optional[str] = None
14291431
relatedTransactionID: Optional[str] = None
1432+
positionActionID: Optional[str] = None
1433+
changeInPrice: Optional[decimal.Decimal] = None
1434+
changeInQuantity: Optional[decimal.Decimal] = None
1435+
closePrice: Optional[decimal.Decimal] = None
1436+
commodityType: Optional[str] = None
1437+
cost: Optional[decimal.Decimal] = None
1438+
deliveryType: Optional[str] = None
1439+
exchOrderId: Optional[str] = None
1440+
extExecID: Optional[str] = None
1441+
fifoPnlRealized: Optional[decimal.Decimal] = None
1442+
fineness: Optional[decimal.Decimal] = None
1443+
holdingPeriodDateTime: Optional[datetime.datetime] = None
1444+
ibCommission: Optional[decimal.Decimal] = None
1445+
ibCommissionCurrency: Optional[str] = None
1446+
ibExecID: Optional[str] = None
1447+
ibOrderID: Optional[str] = None
1448+
initialInvestment: Optional[decimal.Decimal] = None
1449+
mtmPnl: Optional[decimal.Decimal] = None
1450+
netCash: Optional[decimal.Decimal] = None
1451+
notes: Optional[str] = None
1452+
openCloseIndicator: Optional[enums.OpenClose] = None
1453+
openDateTime: Optional[datetime.datetime] = None
1454+
origOrderID: Optional[str] = None
1455+
rtn: Optional[str] = None
1456+
serialNumber: Optional[str] = None
1457+
settleDateTarget: Optional[datetime.date] = None
1458+
taxes: Optional[decimal.Decimal] = None
1459+
tradeMoney: Optional[decimal.Decimal] = None
1460+
tradePrice: Optional[decimal.Decimal] = None
1461+
transactionID: Optional[str] = None
1462+
weight: Optional[str] = None
1463+
whenRealized: Optional[datetime.datetime] = None
1464+
whenReopened: Optional[datetime.datetime] = None
14301465

14311466

14321467
@dataclass(frozen=True)
@@ -1536,6 +1571,7 @@ class AssetSummary(FlexElement):
15361571
relatedTransactionID: Optional[str] = None
15371572
rtn: Optional[str] = None
15381573
initialInvestment: Optional[decimal.Decimal] = None
1574+
positionActionID: Optional[str] = None
15391575

15401576

15411577
@dataclass(frozen=True)
@@ -1644,6 +1680,7 @@ class Order(FlexElement):
16441680
commodityType: Optional[str] = None
16451681
fineness: Optional[decimal.Decimal] = None
16461682
weight: Optional[str] = None
1683+
positionActionID: Optional[str] = None
16471684

16481685

16491686
@dataclass(frozen=True)

ibflex/client.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ def request_statement(
136136
"""First part of the 2-step download process.
137137
"""
138138
url = url or REQUEST_URL
139-
### AKE FIX
140-
url = 'https://ndcdyn.interactivebrokers.com/portal.flexweb/api/v1/flexQuery'
141139
response = submit_request(url, token, query=query_id)
142140
stmt_access = parse_stmt_response(response)
143141
if isinstance(stmt_access, StatementError):

ibflex/parser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,7 @@ def convert_enum(Type, value):
463463
"CNH", # RMB traded in HK
464464
"BASE_SUMMARY", # Fake currency code used in IB NAV/Performance reports
465465
"", # Lot element allows blank currency ?!
466+
"RUS", # Russian-related currency code used by IBKR
466467
)
467468

468469

0 commit comments

Comments
 (0)