brokerstocksoptionsfuturesforex

Interactive Brokers Trading Journal: Flex Query Setup + Multi-Asset Import

Last updated: August 27, 2026

Interactive Brokers is one of the most powerful trading platforms in the world — and one of the most journal-unfriendly out of the box. The Flex Query system can dump every fill across every asset class in a single CSV, but the configuration is genuinely confusing the first time you set it up. Pick the wrong fields and the data imports incorrectly. This guide walks through the IBKR Flex Query setup that produces clean journaling data, the multi-asset import workflow, and the things that trip up most generic journals.

Why IBKR is uniquely powerful (and uniquely confusing)

IBKR's Flex Queries can produce the cleanest trade data in the industry. Exact fills, exact fees, exact commissions, full Open/Close indicators, Order IDs that enable accurate multi-leg grouping, currency-tagged P&L for international equities. When configured right, an IBKR Flex Query is journaling gold.

The catch: Flex Query configuration is presented as a flat list of ~80 possible fields with no guidance on which combinations actually work. Pick wrong and:

  • No Order ID → multi-leg options can't be grouped, your iron condors show as 4 unrelated trades.
  • No Open/Close Indicator → scale-in / scale-out fills can't be reconstructed correctly.
  • No Asset Class field → futures and forex get misclassified as equity, R-multiple math breaks.
  • No Foreign Currency fields on international trades → P&L gets lost in currency conversion.
  • No Settlement Date or Trade Date → some journals can't even map the trades to a chronological timeline.
IBKR's power and journal-friendliness are inversely correlated by default

The same flexibility that makes IBKR great for sophisticated traders makes the export confusing for new users. The good news: once you have the right Flex Query saved, you re-run it forever in two clicks. The pain is one-time.

The IBKR Flex Query that actually works

Set up a Trades Flex Query with these fields. Save it once and re-run it weekly or monthly going forward.

Required fields (without these, the data is unusable)

  • Symbol — the trading symbol (or root for futures/options)
  • Trade Date / Time — when the fill executed
  • Asset Class — Equity, Option, Futures, Cash (forex), etc.
  • Quantity — number of contracts/shares/units
  • Trade Price — fill price
  • Open/Close Indicator — whether this fill opened or closed a position
  • Buy/Sell — direction
  • Currency — for non-USD denominated trades
  • IB Commission — per-fill commission/fee

Strongly recommended fields (multi-leg + scale-in/out support)

  • Order ID — needed for multi-leg options grouping
  • Trade ID — unique per fill, useful for deduplication on re-imports
  • Underlying Symbol — for options, the underlying ticker
  • Strike — for options
  • Expiry — for options and futures
  • Right (Put/Call) — for options
  • Multiplier — contract multiplier for options/futures (TradersForge has built-in lookups but explicit is safer)

Optional but useful

  • Foreign Currency / Currency Conversion fields — for international equities
  • Notes / Order Reference — if you tag orders in TWS, the tags come through
TradersForge ships a Flex Query template

On the Import & Connect page, TradersForge documents the exact field selections to copy into your IBKR Flex Query setup. Skip the trial-and-error — copy the template, save the query in IBKR, and you're done.

Try TradersForge — Flex Query template documentedFree tier · Pro from $10/mo for unlimited trades

Step-by-step: setting up the Flex Query

  1. Log into IBKR Account Management (the management portal, not TWS).
  2. Navigate to Reports → Flex Queries.
  3. Click Create New Flex Query → Trades Query.
  4. Name it something memorable: "TradersForge Journal Export" works.
  5. In the Sections list, expand Trades and select the fields listed above.
  6. In Format, choose CSV (more reliable than XML for downstream parsers).
  7. Set Time Period to "Last N Calendar Days" — start with 365 for backfill, then change to 7 or 14 for ongoing weekly exports.
  8. Save the query.
  9. Run the query: Reports → Flex Queries → Run for your saved query → download CSV.
  10. Drop the CSV into TradersForge's Import & Connect page.

Re-running for ongoing journaling

After the first backfill, change the Time Period on your saved Flex Query to a shorter window (e.g., last 14 days). Run it weekly or monthly. TradersForge dedupes by Trade ID — only new trades since your last import get added. You can also configure IBKR to email the Flex Query results on a schedule, but the manual run is fine for most users.

Multi-asset journaling: one query, all asset classes

IBKR's real strength is multi-asset support. One Flex Query can include stocks, options, futures, forex (Idealpro), and international equities — all in one CSV.

Stocks

Asset Class = "Equity." R-multiple uses dollar-share math. Per-symbol expectancy works the same as for any other broker.

Options

Asset Class = "Option." Multi-leg grouping uses Order ID. Strike, Expiry, and Right come through. R-multiple uses ×100 multiplier per contract.

Futures

Asset Class = "Futures." TradersForge's built-in contract multiplier lookup applies (ES, NQ, MES, MNQ, RTY, CL, GC, etc.). For exotic futures not in the lookup, you can override the multiplier per trade.

Forex (Idealpro)

Asset Class = "Cash." Pair information comes through Symbol + Currency fields. R-multiple uses pip-based math (~$10/pip per standard lot for major USD-quoted pairs).

International equities

LSE, TSE, ASX, etc. — all flow through. Currency Conversion fields let TradersForge convert P&L to USD if you include them; otherwise P&L is shown in trade currency.

IBKR journaling gotchas

TWS doesn't do this — only Account Management

A common confusion: Trader Workstation (the desktop trading platform) is for execution and analysis. The export workflow lives in IBKR Account Management (the web portal). Reports → Flex Queries is in the portal, not TWS.

IBKR uses Trade Date AND Settlement Date

For most journaling, Trade Date is what you want — the date the fill executed. Settlement Date is the post-fill clearing date (usually T+1 or T+2). Make sure your Flex Query includes Trade Date specifically; importing settlement-only data shifts everything by 1-2 days.

Commission can show as separate line items

IBKR sometimes splits exchange fees + clearing fees + commission across multiple line items. The "IB Commission" field typically captures the total; the fragment fields capture pieces. TradersForge sums them to net commission per fill, but if you only include partial fields, you'll show under-stated fees.

International trades and currency conversion

A LSE trade might be denominated in GBP. Your TradersForge journal can show this in GBP (no conversion) or in USD (using the FX rate at trade time, if you include the Currency Conversion fields in the Flex Query). Pick one approach and stay consistent.

Flex Query has a daily run limit

IBKR limits Flex Query runs (typically a few per hour, dozens per day). Running the same query repeatedly for testing can rate-limit you. Save the query once, run it on a real schedule, and don't re-run for casual checking.

Wash sales: which Flex Query section actually has them

This trips up almost everyone who goes looking for it. You open the Flex Query editor, expand the Trades section, scan the field list for something called "Wash Sale" or "Loss Disallowed" — and there is nothing there. The usual conclusion is that you picked the wrong query type. You did not. The Trades section is a record of executions, and a wash sale is not a property of an execution; it is an adjustment applied afterwards, when a closing lot is matched against a repurchase inside the 61-day window.

Where the data actually lives

Wash-sale adjustments surface in the lot-level realized sections, not the raw trade list. In an Activity Statement or an Activity Flex Query, look at the realized/closed-lot detail rather than Trades:

  • Code — a per-lot code column. Lots adjusted for a disallowed loss carry the code LD. This is the field people are hunting for when they search the Trades section and come up empty.
  • Realized P/L — for a wash sale this is already the NET realized amount, with the disallowed loss included. It is not the raw economic loss, which is exactly why a journal that reads this column and a journal that recomputes from fills can disagree.
  • Closed Lots — replaces the Open designation once a lot is closed, and is the row granularity the adjustment is applied at.
Check the "Enable Wash Sales" account setting first

IBKR only computes wash-sale adjustments into your reports when the account-level wash sales setting is on. If it is off, the realized figures are unadjusted and no LD codes appear anywhere — which reads identically to "I picked the wrong Flex Query fields." Confirm the setting before spending another hour in the field picker.

Why this matters for a journal, not just for taxes

A trader who imports realized P/L straight from a wash-sale-adjusted report gets a distorted picture of their own edge. The disallowed loss is a tax timing effect — it is deferred into the basis of the replacement lot, not erased — so the strategy that produced the loss looks better than it was, and the later trade that inherits the basis looks worse. For judging setups you want the raw economics; for filing you want the adjusted figures. They are different numbers and both are correct for their own purpose.

TradersForge keeps them separate. Trades import from the Trades Flex Query at raw economics, and wash sales are detected independently from fills and timestamps under Section 1091 rules, so your per-setup expectancy is never quietly adjusted by a tax rule. Deferred losses show year-to-date by ticker on the analytics page.

Futures and forex are not wash sales

Section 1091 applies to stocks and securities. Regulated futures contracts fall under Section 1256 (60/40, marked to market) and spot forex under Section 988 — neither is subject to wash-sale treatment, so no LD codes will appear on them and none should. If a journal flags a wash sale on your ES or your EURUSD, it is wrong.

See deferred losses by tickerFree calculator · no account needed

Going further: API + Flex Web Service

For high-volume IBKR users who don't want manual Flex Query runs, the Flex Web Service exposes the same data via a REST API. This is on the TradersForge roadmap for native integration. For now, the manual workflow is supported and works well — most users find weekly Flex Query runs are enough for active journaling.

TWS API is a separate, more complex integration option (live order/position events) but it's overkill for journaling and adds operational complexity (a TWS instance has to stay running). Flex Query CSV is the recommended path.

TradersForge Journal

Put this guide into practice — free.

TradersForge is a futures-first trading journal with automatic broker sync, native prop-firm drawdown tracking, and AI trade reviews. Signup starts a 14-day free Elite trial — no card required.

Live broker sync13 firms built-inIntraday warnings
Track it free for 14 daysNo card required · Pro from $10/mo after
50K EVALLive
Distance to line
$412
EquityTrailing max-loss line

Frequently asked questions

Does Interactive Brokers have a built-in trading journal?

IBKR has powerful reports — Activity Statements, Realized P&L reports, etc. — but they're tax/accounting documents, not trading journals. No setup tagging, no per-strategy expectancy, no R-multiple, no AI review, no journal entries. Active IBKR traders typically pair the platform with a separate journal.

How do I export trades from Interactive Brokers for journaling?

In IBKR Account Management (the web portal, not TWS), navigate to Reports → Flex Queries. Create a Trades Flex Query with the right field selections (Symbol, Trade Date, Asset Class, Quantity, Trade Price, Open/Close Indicator, Order ID, IB Commission, etc.). Save the query, run it for your date range, export CSV. TradersForge's Import page documents the exact fields to use.

Why does the Flex Query need Open/Close Indicator and Order ID?

Open/Close enables correct scale-in/scale-out reconstruction (so a position that scaled in twice and out twice imports as one trade, not four). Order ID enables multi-leg options grouping (so iron condors stay grouped). Without these, the data imports but loses the position-lifecycle info that makes analytics work.

Can I import multi-asset trades in one go?

Yes — one Flex Query covers all asset classes simultaneously. Stocks, options, futures, forex (Idealpro), and international equities all flow through. Per-asset-class analytics (R-multiple per asset, per-symbol expectancy, etc.) work independently after import.

Does TradersForge support IBKR international equities?

Yes. International trades (LSE, TSE, ASX, etc.) flow through the same Flex Query. Include the Currency Conversion fields in your query for USD-converted P&L; otherwise P&L stays in the trade currency.

Which Flex Query section has the wash sale fields?

Not the Trades section — that is why you cannot find them. Trades records executions, and a wash sale is a lot-level adjustment applied after matching, so it appears in the realized / closed-lot detail instead. There you get a Code column (lots adjusted for a disallowed loss are coded LD) and a Realized P/L that is already net of the disallowed amount. Also confirm the account-level "Enable Wash Sales" setting is on: with it off, IBKR computes no adjustments at all and no LD codes appear anywhere, which looks exactly like having chosen the wrong fields.

Why does my IBKR realized P/L not match my journal?

The most common cause is wash sales. IBKR's realized figures are net of disallowed losses, so they are tax numbers, not economic ones. A journal that reconstructs P&L from fills reports the raw economics. Both are right for their own purpose — you want raw economics to judge a setup and adjusted figures to file. Other causes are partial commission fields (include IB Commission, not just fragments) and international trades reported in the trade currency rather than USD.

Does the wash sale rule apply to my IBKR futures or forex trades?

No. Section 1091 covers stocks and securities. Regulated futures contracts are Section 1256 (60/40 treatment, marked to market at year end) and spot forex is Section 988 — neither is subject to wash-sale treatment. You should see no LD codes on them, and any tool that flags a wash sale on a futures or forex close is producing a false positive.

Is there a live API integration for IBKR?

Native Flex Web Service integration is on the TradersForge roadmap. For now, manual Flex Query CSV export is the supported path. Most active IBKR users run a weekly Flex Query — fast and reliable. TWS API integration is also on the roadmap but is more operationally complex.

How often should I run the Flex Query?

For backfill, run once with a 1-year+ date range. Going forward, weekly is typical for active traders; monthly works for swing/position traders. TradersForge dedupes by Trade ID so re-importing overlapping date ranges is harmless.

Read next

Options Trade Tracking: Journaling for Premium Sellers and Buyers

Options journaling is harder than stock or futures journaling, and most generic trading journals do a poor job of it. A multi-leg iron condor isn't one row — it's four legs that need to be tracked as a single position lifecycle. The trade's outcome depends not just on price movement but on IV crush, time decay, assignment risk, and early exit math. This guide covers what makes options tracking different, what to log per trade (single-leg and multi-leg), how to import from the major options brokers, and the analytics that actually tell you whether your options strategy has edge.

R-Multiple Tracking Explained: Measuring Trades by Risk, Not Dollars

Most traders evaluate themselves by P&L: "I made $400 today." But P&L tells you almost nothing about whether you traded well. A $400 win on a $2,000 risk is a poor trade. A $400 win on a $100 risk is excellent. R-multiple is the unit that fixes this — it normalizes every trade by the risk you took, so a 2R day is a 2R day whether you risked $50 or $5,000. This guide covers what R-multiple is, how to compute it correctly, why it's the unit that separates serious traders from gamblers, and how to track it across futures, stocks, options, and forex.

Forex Trading Journal: Pip-Based R-Multiple, MT4/MT5 Import, and Session Analytics

Forex journaling has a few dimensions stocks and futures don't — pip-based risk math, the session structure of the 24-hour market (Asian / London / New York), spread cost as a real-time variable, and the broker-vs-broker variance in fills and commissions. This guide covers the journaling fields that actually surface forex edge, how to import history from MetaTrader 4/5 and Interactive Brokers, the per-session analytics that matter, and the pitfalls that quietly destroy expectancy in currency trading.

Futures Trading Journal Template: What to Track and How

A futures trading journal isn't just a spreadsheet of trades — it's the feedback loop that turns a discretionary trader into a consistent one. This guide covers every field a futures journal needs, why each matters, and how to set it up either as a spreadsheet you maintain manually or as an automated journal that pulls trades from your broker. Heavy emphasis on what futures-specific journaling requires that stock or options journals don't.