| name | ib-trades-history |
| description | Fetch trade executions from Interactive Brokers filtered by account, date range, or symbol. Supports live API (~7 days history) and FlexReport (full history). Use when user asks about their trades, executions, or transaction history. Requires TWS or IB Gateway running locally. |
| dependencies | ["trading-skills"] |
IB Trades History
Fetch trade executions from Interactive Brokers.
Prerequisites
User must have TWS or IB Gateway running locally with API enabled:
- Paper trading: port 7497
- Live trading: port 7496
For full trade history beyond ~7 days, the user needs a Flex Web Service token and a pre-configured Trade query in IBKR Account Management.
Instructions
Note: If uv is not installed or pyproject.toml is not found, replace uv run python with python in all commands below.
uv run python .claude/skills/ib-trades-history/scripts/trades.py --all-accounts
uv run python .claude/skills/ib-trades-history/scripts/trades.py --all-accounts --symbol AAPL
uv run python .claude/skills/ib-trades-history/scripts/trades.py --all-accounts --flex-token YOUR_TOKEN --flex-query-id YOUR_QUERY_ID
uv run python .claude/skills/ib-trades-history/scripts/trades.py --all-accounts --flex-token TOKEN --flex-query-id QID --start-date 2025-01-01 --end-date 2025-12-31
uv run python .claude/skills/ib-trades-history/scripts/trades.py --all-accounts --flex-token TOKEN --flex-query-id QID_2025 --flex-query-id QID_2026 --start-date 2025-01-01 --end-date 2026-12-31
uv run python .claude/skills/ib-trades-history/scripts/trades.py --file trades_2024.xml --file trades_2025.xml --symbol TSLA
uv run python .claude/skills/ib-trades-history/scripts/trades.py --file exports/2025.xml --start-date 2025-06-01 --end-date 2025-12-31
Arguments
--port - IB port (default: 7496 for live trading)
--account - Specific account ID to filter
--all-accounts - Fetch trades for all managed accounts
--symbol - Filter trades by symbol (e.g., AAPL)
--start-date - Start date in YYYY-MM-DD format (default: Jan 1 of current year)
--end-date - End date in YYYY-MM-DD format (default: today)
--flex-token - FlexReport token (enables extended history)
--flex-query-id - FlexReport query ID (repeatable — pass multiple to merge queries spanning different periods)
--file - Local FlexReport XML file path (repeatable — pass multiple to merge files). No TWS/Gateway needed
Default behavior (no flags): fetches trades for the first managed account from the live API (~7 days).
Always use --all-accounts unless the user asks for a specific account.
Data Sources
| Scenario | Source | Date Range |
|---|
| No flex args | reqExecutionsAsync | ~last 7 days |
--flex-token + --flex-query-id | FlexReport (web) | As configured in query |
--file | file (local XML) | Full file contents |
When using the live API, a data_limitation warning is included in the output.
Output
Returns JSON with:
connected - Whether connection succeeded
source - Data source used (reqExecutionsAsync or FlexReport)
filters - Applied filters (dates, symbol, account)
data_limitation - Warning about API date limits (only when using live API)
execution_count - Total number of executions returned
executions - List of individual trade executions
summary - Aggregated stats per symbol (bought, sold, commission, realized P&L)
If not connected, explain that TWS/Gateway needs to be running.
Dependencies