Skip to content
✎ FeedbackNew here?

What a scan's backtest hides

Bottom lineOn a public scan anyone can open, the number a scanner would report is 63% higher than what was left after trading costs — and costs, not vanished companies, are about 71% of that gap.

A dated study, not a live number. Measured once against our full archive with the tape through 2026-08-05. It does not update on its own — the command that regenerates it is at the bottom of this page.

One scan, run three ways. Not a scan we invented — Chartink's public Golden cross scan, the 50-day average crossing above the 200-day. Each row is the average return over the next 20 trading sessions, across every time the scan fired.

Today's list, applied backwardsThe names that pass the scan TODAY, tested against their own past. This is how a scanner's backtest is normally built.1.166%8,277 signals
The market as it actually wasThe names that existed on each signal date — including companies that have since been delisted, merged or gone.1.037%10,077 signals
After what trading costsThe same honest set, minus a flat 0.32% round trip — brokerage, taxes, and the spread you cross going in and out.0.717%10,077 signals

Read this before the numbers, not after

The gap between the top row and the bottom is 0.449 percentage points — the reported figure is 63% higher than what was left after costs. But the two halves of that gap are not equal, and the smaller one is the famous one.

Vanished companies+0.129 pp
Trading costs-0.320 pp

Cost is the bigger term — about 71% of the gap. Survivorship bias is real and it is not the main event here. It bites hardest on long-horizon, buy-and-hold studies; over one month it is the junior partner. Quoting this as "vanished companies inflate returns 63%" would misread the evidence on the page.

And the honest one is the noisier one. With a spread of 17.27 across 10,077 signals, a single average carries about ±0.172 pp of sampling noise — larger than the 0.129 pp survivorship term itself. The two runs share most of their signals, so the difference between them is measured more tightly than either average alone, but it does not deserve the confidence the cost figure does. The cost line is not an estimate at all: it is a stated fee, subtracted.

Separately from the averages: 1,800 of the honest signals (17.9%) come from companies that no longer exist. A scanner built on today's listings cannot see them at all — not because it filters them out, but because there is nothing left to list. Roughly one signal in six.

How this was measured

The returns are gross, on overlapping windows, with no adjustment for how the market as a whole moved. That is on purpose: this measures the difference between two ways of counting, and both ways carry the same limitation, so it cancels. It is not a claim that the scan makes or loses money.

Reproduce it. The script is in the repository and reads the same archive this site does:Roughly 150 seconds — it walks every equity bar in the archive twice.