The trade

The morning scan found four candidates and messaged them to my phone — a feature added three days ago precisely so I'd never meet a position for the first time in an alert. One qualified. The machine shorted it.

By late morning it was up a bit over a hundred and fifty dollars. I looked at it, felt the particular satisfaction of a system doing exactly what it was built to do, and went back to work.

By the afternoon it had reversed. It closed at the end-of-day exit down three hundred and twenty-seven dollars.

There's a specific flavor of disappointment reserved for the trade that works and then unworks. A loss that never had a good moment is easy to file away. One that shows you the win first, lets you feel it, and then takes it back and more — that one sits differently, even when the arithmetic says it shouldn't. The strategy's own record wins 56% of the time, which is a polite way of saying it loses 44% of the time, which is a polite way of saying this. It was the second real trade of the account's life.

The investigation

Both live fills so far had come in far worse than the price the signal said it wanted — a couple of hundred basis points of what looked like brutal slippage against a tolerance of twenty-five. So we went looking.

The first hypothesis was execution: market orders into a collapsing stock get run over, everybody knows this, and the fix is fancier order types. I ran the numbers, found the strategy's break-even entry cost, compared it to what we were paying, and concluded — with real conviction and a table to prove it — that the edge was gone at realistic fills.

That conclusion was wrong. I'll come back to it.

Because when we pulled the actual tape for the trade, the signal price wasn't anywhere on it. The price the machine thought it was selling at had last existed fifteen minutes before the order was placed.

The market data was stale, and had always been stale

Our data subscription delivers the consolidated feed on a fifteen-minute delay. Not a bug, not an outage — the documented behavior of the tier we were on, which nobody had ever measured because everything appeared to work.

So the strategy's logic, which says "enter when the current bar closes below the volume-weighted average price," was running on a bar that was a quarter of an hour old. It was reading a photograph of the market and placing orders into the live one. Every entry was a decision made about a moment that had already passed.

This had been true since the strategy started paper trading in July. Two months of forward testing, sixty-six trades, the entire record that earned this thing its promotion to real money — all of it computed against a market fifteen minutes in the past.

What it actually cost

Here's where it gets interesting rather than just embarrassing.

I could measure it. The paper record stores both the price the signal wanted and the price it actually got, for all sixty-six trades. Replaying them with entries at the signal price — what real-time data would have delivered — the same strategy, same trades, same exits, produces about forty percent more profit. Two months of quiet taxation by a delay nobody had thought to check.

And the repaired profit factor lands within a whisker of what the original backtest predicted. The gap between "what the research promised" and "what forward testing delivered" — the gap every honest builder agonizes over and usually attributes to the market being cleverer than their model — was, in this case, fifteen minutes of missing data.

The fix costs ninety-nine dollars a month.

And the day's losing trade paid its own share of that tax. The entry came in fifty-eight cents per share below where the signal said it wanted to sell — because the signal was describing a moment fifteen minutes gone. The trade would have lost money regardless. The stale data made it lose roughly seventy-five percent more.

Where I was wrong, which matters more

Earlier I said I'd concluded the edge was dead. I want to be precise about how that happened, because it's the more useful failure.

I had two live fills. Two. I averaged them, applied that average to a backtest, watched the profit factor collapse below one, and wrote up a confident finding that the strategy couldn't survive real fills. Then I went and looked at the distribution of the sixty-six paper trades and found that the two live fills sat at the 75th and 90th percentile of a distribution the strategy had been living inside for two months — and profiting inside. Perfectly ordinary draws. Unremarkable.

I had also claimed the paper record was fictional, that it had filled at imaginary prices. It hadn't. Those were real fills at real prices. The record was honest the whole time, and had already paid the delay's cost. The strategy earned its 1.6 profit factor while handicapped.

Two days earlier I had written — about a different sleeve, with great composure — that six perfect trades prove nothing and that small samples flatter. Then I turned around and drew a strategy-killing conclusion from two. The discipline you apply to good news is worthless if you don't apply it to bad news. Panic is just optimism with the sign flipped: both are the same failure to wait for data.

The ledger for the day

One losing trade, three hundred and twenty-seven dollars, comfortably inside the risk the position was sized for and nowhere near any kill line. Two signals the broker refused to short — both, it turns out, instruments that were never shortable and could have been filtered out in advance for free. One root cause found, of a defect that had been invisibly taxing every trade since July. One fix identified, cheap, and buyable tonight.

I would rather have had the money. But if you offered me the trade — lose three hundred and twenty-seven, find the thing that had been skimming forty percent off everything and would have kept skimming it — I'd take it every single time, and it would still feel bad on the day.

That's the honest shape of this work. The bad days are not the ones where you learn nothing. They're usually the only ones where you learn anything at all.