The P&L gap goes both ways
Our first study was about a bot that lied in its own favor: it reported +$484 while the broker statement showed −$346. This week, on a live prop account, the bot lied in our favor — it under-reported a winning trade by $3.52. Opposite direction, identical lesson: a bot's P&L is a guess until the broker confirms it, and you cannot know which way the guess is wrong.
The trade, to the cent
Friday, June 12. A live 50K prop evaluation account. The session bot went long 2 micro E-mini S&P (MES) at the open and held to the session close. Here is what the bot's journal recorded versus what the broker actually cleared:
| Field | Bot (synthetic) | Broker (truth) |
|---|---|---|
| Entry price | 7414.50 | 7414.00 |
| Exit price | 7430.25 | 7430.25 |
| Gross P&L | +$157.50 | +$162.50 |
| Fees | (modeled high) | −$1.48 |
| Net P&L | +$157.50 | +$161.02 |
The bot booked its entry at 7414.50 — the price it intended to buy at. The actual fill came in half a point better, at 7414.00. Across two contracts that is +$5.00 of favorable slippage the bot never recorded. Net of a conservative fee model, the broker truth landed $3.52 above what the bot thought it made.
Why this is the same problem as a loss
It is tempting to shrug at a gap that goes your way. Don't. The point of our first autopsy was that synthetic P&L and broker P&L are different numbers, and the difference is not a constant. Sometimes the market gives you a better fill than your model assumed. Sometimes momentum runs your fill adverse and fees eat the rest. The same accounting blind spot produces both — and on a prop evaluation, where a daily-loss-limit breach is measured against the broker's number, not yours, guessing in either direction is how accounts die on a technicality.
If your accounting only knows the price you meant to trade at, it is fiction. A bot that books the signal price instead of the fill is wrong by a few dollars on a good day and by hundreds on a bad one. You cannot tell the good days from the bad ones without reconciling every trade against the broker statement.
What we did about it
We stopped trusting the bot's own number. Every trade our fleet takes is now reconciled, to the cent, against the broker fill and the broker's fee schedule — a field we call broker_net, sourced from the broker, never modeled. The synthetic number still gets logged, but only so we can measure the gap. When the two disagree, the broker wins, always.
Then we put the whole thing in public. Our new per-trade analytics page dissects every closed trade: signal quality, entry slippage, how it behaved while open, where money leaks to fees, and the synthetic-versus-broker gap on each one. This trade is in there. So are the losers.
The uncomfortable takeaway
Most trading products show you an equity curve. Almost none show you the gap between what their software claims and what the broker paid. We have now caught that gap running both ways on live money — −$830 against us in the spring, +$3.52 for us on Friday. The size is not the story. The story is that you have no idea which one you are getting until you reconcile. So we reconcile everything, and we publish it.