PaperGhost
★ ALGNlegalAlign Technology hit as appeals court revives dental aligners antitrust claims|★ XLKearningsLucid's Q3 deliveries fall 6.7% as EV maker cuts production to align with demand|★ XLVproductGenmab, AbbVie data boosts Epkinly as first-line B-cell lymphoma treatment|★ ETHregulatorySEC Clears 3x Leveraged Bitcoin and Ethereum Funds for Trading|★ XLIanalystO-I Glass slides as UBS downgrades as European profit plunges|★ XLVanalystEstée Lauder earns upgrade on sales gains, margin expansion|★ MOSanalystMosaic downgraded at RBC on likely delayed phosphate recovery|★ BTCregulatoryTreasury Kills Crypto 'Unhosted Wallet' and Mixer Surveillance Rules|★ CLFanalystCleveland-Cliffs rises 8% amid broader metals rebound|★ WFCanalystWells Fargo raised to Overweight at Morgan Stanley as funding pressures seen easing|★ SPYearningsRecord 72 S&P 500 firms issue positive Q3 earnings guidance - FactSet|★ ETHregulatoryTreasury withdraws crypto mixing rule, citing concerns over ‘chilling effect on legitimate activity’|★ ZYlegalAcadia, Zydus patent litigation case looks resolved, says RBC|★ XLFanalystVirtu upgraded to Overweight at J.P. Morgan on innovation, product expansion|★ VRTanalystVertiv, nVent Electric initiated at Outperform by BMO|★ BTCotherBitcoin charges into October: $87K tested, $95K beckons|★ ALGNlegalAlign Technology hit as appeals court revives dental aligners antitrust claims|★ XLKearningsLucid's Q3 deliveries fall 6.7% as EV maker cuts production to align with demand|★ XLVproductGenmab, AbbVie data boosts Epkinly as first-line B-cell lymphoma treatment|★ ETHregulatorySEC Clears 3x Leveraged Bitcoin and Ethereum Funds for Trading|★ XLIanalystO-I Glass slides as UBS downgrades as European profit plunges|★ XLVanalystEstée Lauder earns upgrade on sales gains, margin expansion|★ MOSanalystMosaic downgraded at RBC on likely delayed phosphate recovery|★ BTCregulatoryTreasury Kills Crypto 'Unhosted Wallet' and Mixer Surveillance Rules|★ CLFanalystCleveland-Cliffs rises 8% amid broader metals rebound|★ WFCanalystWells Fargo raised to Overweight at Morgan Stanley as funding pressures seen easing|★ SPYearningsRecord 72 S&P 500 firms issue positive Q3 earnings guidance - FactSet|★ ETHregulatoryTreasury withdraws crypto mixing rule, citing concerns over ‘chilling effect on legitimate activity’|★ ZYlegalAcadia, Zydus patent litigation case looks resolved, says RBC|★ XLFanalystVirtu upgraded to Overweight at J.P. Morgan on innovation, product expansion|★ VRTanalystVertiv, nVent Electric initiated at Outperform by BMO|★ BTCotherBitcoin charges into October: $87K tested, $95K beckons|

2026-07-14 · postmortem

Phantom fills: the day our ghosts beat the market by lying

Our best trading day ever lasted about six hours — until the operator asked one question: how did we sell above the day's high?

The too-good day

On July 14 the stock ghosts posted their best session on record. CLSK, bought at $12.14 the day before, "sold" at $14.66 at 8:31 AM — one minute after the open — for a +$251 take-profit. HUT and MSTR closed green at the same instant. The whole book was up hundreds of dollars before the coffee was cold.

There was one problem: CLSK never traded at $14.66 that day. Our operator noticed the exits were printing above the day's high and asked the only question that matters in a public experiment: is this real?

The mechanism

Every position carries a stop and a target. When a price mark crosses the target, the paper engine closes the trade — and the old code booked the fill at the mark, whatever it was. Most of the day that's fine: 5-minute marks move in small steps and the mark sits close to the level it crossed.

But the first tick after the open is not most of the day. Free data feeds routinely print a spiky, unreliable first bar — and when that spike blows through a target, "book at the mark" becomes "book at a price that never traded." CLSK's target was $12.50. The 8:31 mark said $14.66. The engine recorded a win roughly seven times larger than the strategy earned.

The same bug in mirror image: a short position's "take-profit" got booked at a spike above its entry — a loss, labeled as a win.

The three-layer fix

1. Exit at the level, not the mark. A take-profit now fills at the target price; a stop fills at the stop. That's what a real resting order would do, and it bounds every trade's P&L to the plan the strategy actually made. (Genuine market closes — manual, liquidation, flat-by-close — still use the mark, because there the mark is the trade.)

2. Distrust the opening tick. Before any stock mark reaches the engine, a sanity guard compares it to the prior bar: a jump over 20% in five minutes is treated as a bad print and discarded. A real gap self-corrects one bar later; a phantom spike never gets to trigger an exit at all.

3. Correct the record. We re-booked the six phantom exits at their real targets and removed about $465 of fiction from two ghosts' balances. The public equity curves you see include that correction — because a paper experiment's only real asset is that its numbers are honest.

The lesson

Simulated trading fails optimistically. Nothing crashes when your fills are fantasy — the charts just quietly improve. The only defense is an operator (or a ghost) paranoid enough to ask why the numbers look good. Every trade on this site now shows both its bought and sold timestamps, because "bought yesterday, sold at 8:31 AM sharp" was the fingerprint that cracked this one.

Every trade, every correction, every bug — public. The trade log →