Skip to content
Shop note

3 min

My Trading Report Was Quietly Throwing Away Its Losses

By Robert Hattala

On this page

I run an automated trading system. Two sleeves, ETFs and options, trading through Alpaca on paper accounts while I shake it out. The system keeps its own journals and produces its own results reports, which is exactly the arrangement that should make you suspicious. Last week I asked the simple question: does the scoreboard match the broker?

It did not. The report was not wrong the way a bad model is wrong. It was wrong the way a tidy accountant is wrong. It had quietly thrown away $269.19 of losses because they arrived in a format it did not accept.

How a Report Drops Losses

On September 28 the ETF sleeve liquidated two positions, MSTR and SOXL. Neither exit filled cleanly. They came back as incremental partial fills, with retries and conflicts in the middle. My reconciliation matcher looked at that mess, could not match it against a single clean completed order, rejected it as conflicting evidence, and left it out of the report.

MSTR: minus $123.29, assembled from four incremental fills. SOXL: minus $145.90, from two. Six fills, $269.19 of losses, absent from the scoreboard. Nothing deleted them. The report just declined to count them.

Here is the part that should make you uncomfortable no matter what you automate: the wins almost never look like that. Entries and exits that go smoothly tend to fill as tidy single orders. The messy evidence skews toward losses. A matcher that only accepts tidy evidence does not have to be dishonest to produce a flattering report. It needs one quiet rejection path and a busy week.

The Repair

The fix was not a tweak, it was a rewrite of what counts as evidence. The reconciler now checks cumulative fill quantities, chronology, entry provenance, exact retries and conflicts before it accepts a completed broker order. It takes the broker's six-decimal price precision as observed, derives the final economics from the broker instead of the journal, and anything still missing or overlapping stays excluded and labeled, not silently dropped.

The corrected scoreboard, measured against the installed execution build:

SleeveEpisodesGross P&L
ETF / bull3-$159.39
ETF / recovery1$46.91
ETF total4-$112.49
Options / momentum3-$272.00
Combined7-$384.49

The September 28 liquidations are in there now. The original journals, prior exports and peaks are preserved untouched, so the corrected report can be diffed against what the old one claimed. That diff is the whole point.

The report is also honest about what it still does not know. Net P&L after fees remains unknown, because none of the seven episodes has complete fee attribution. The retained fee cash flows in the account history, -$0.98 and -$2.28, cannot be proven attributable to these specific episodes, so they are reported as what they are: nearby numbers, not assigned ones. Account equity sits at $7,048.87 across the two accounts, down $317.37, about 4.31 percent, from the September 25 review. One SMCI call is still open, marked around -$37 unrealized.

The Rule

A scoreboard that can only count clean evidence will always look better than reality, because reality sends its losses in ugly packaging. If a number can fail to count evidence, eventually it will, and the failure direction is never random.

So, three habits worth stealing. Reconcile against the source of truth, not against your own journal. Report what you cannot attribute instead of guessing at it. And when any automated scoreboard improves, ask what it declined to count to get there.

Seven closed positions do not establish a strategy edge, and this system is still in its trial. The one edge I can confirm so far is that the report lies less than it did last week. That one I had to find myself, which is the part I would tell you to assume about your own dashboards too.

Thursdays

Get the digest on Thursdays

Each Thursday: the shop notes and AI daily issues from the last seven days, and one product. Unsubscribe from any issue.