A trader emails support convinced something is broken: their broker's account summary says 58% win rate for the month. Their journal, importing the exact same account, says 51%. Same trades, same fills, same underlying dollars — and two different numbers. Nothing is broken. Both numbers are correct. They're just answering a slightly different question than the trader thinks they're asking.
Two different shapes of the same data
Broker and platform trade-history exports come in two shapes. A round-trip export gives you one row per closed trade — the broker's own software has already decided where one trade ends and the next begins, and hands you the summary. A fills export (sometimes called an executions export) gives you one row per individual fill: every partial fill, every scale-in, every scale-out, as its own line, with no grouping applied at all.
For a trader who enters and exits a position in a single fill each way, these two shapes agree — there's only one reasonable way to group one entry and one exit. The disagreement shows up the moment a position is built or closed across more than one fill, which is common in futures and options, and not rare in equities either.
A worked example
Say a trader buys 2 contracts at 4500, adds 2 more at 4498 (a scale-in), then exits 2 at 4506 and the remaining 2 at 4502 (a scale-out). That's four fills total: two entries, two exits.
The broker's round-trip summary sees one position opened and one position closed, and reports it as one trade — net P&L across all four fills, positive overall. A fills-based, first-in-first-out (FIFO) reconstruction matches each exit against the oldest still-open entry: the first 2 contracts bought at 4500 are matched against the first 2 sold at 4506 (a winner), and the 2 bought at 4498 are matched against the last 2 sold at 4502 (also a winner, but a smaller one on a per-contract basis). That's two trades, each with its own entry price, exit price, and individual win/loss.
Change the exit prices slightly — say the second exit comes in below the second entry price — and FIFO now reports one win and one loss where the round-trip summary still reports a single net-positive trade. Total dollars for the period are identical either way. Win rate, average win, average loss, and trade count are not — because "how many trades did I make" isn't a fact sitting in the market data, it's a grouping convention applied on top of it.
Why this hits scale-in/scale-out traders hardest
A trader who only ever does one entry and one exit per position will rarely see this discrepancy — there's nothing to disagree about. But scaling in and out is a normal, often deliberate part of position management, especially in futures and options where traders frequently add to a working position or take partial profits at multiple targets. The more fills involved in building and closing a position, the more a round-trip summary's internal grouping logic and a strict FIFO match can diverge — and the wider the gap between "what the broker says" and "what a fills-based journal says" gets. It's also, not coincidentally, exactly the population of trades where win rate on a small sample is already fragile — see How Many Trades Before You Can Trust Your Win Rate? for why that matters on its own.
Why FIFO is the more defensible number
A round-trip summary's grouping logic is internal to each broker's software, isn't documented consistently across platforms, and can change between account types or even software versions. That makes it a moving target — the same underlying fills can group differently depending entirely on which broker generated the report. FIFO matching, by contrast, is a fixed, transparent rule: the oldest open entry is always matched against the next exit, full stop. It produces the same trade count and the same per-trade P&L no matter which broker the fills came from, which is what makes win rate, average win/loss, and expectancy comparable across accounts, platforms, and time.
FIFO reconstruction has a second, quieter benefit: it's what makes exact per-fill commission attribution possible, rather than an estimate spread evenly across a round-trip summary that may have merged fills with different commission schedules. Once trades are split at the fill level, commission can be assigned to the specific fill it was actually charged on.
Neither number is wrong — know which one you're looking at
The point isn't that your broker's dashboard is broken or that your journal is broken. It's that "win rate" silently depends on a grouping decision most traders never think to ask about. A one- or two-point difference between two win-rate numbers for the same account, over the same period, is very often nothing more than this mechanical artifact — not evidence that one tool made an error. The number worth trusting is whichever one is computed the same consistent way every time, not whichever one happens to come from the account statement.
This is exactly why ExpectancyIQ reconstructs every trade directly from fills using FIFO matching rather than trusting a broker's pre-grouped round-trip summary — so your win rate, average win/loss, and per-trade commission mean the same thing every time you look at them, regardless of which platform the fills came from.