I Backtested 83 Trading Strategies. Two Survived. Neither Was Found By Searching.
Most people who publish a backtest publish the one that worked. I want to publish the denominator.
Over a series of testing rounds I ran 83 distinct strategies against real market data. Two survived. That's 2.4%. And the part I didn't expect: neither of the two survivors was discovered by the search. Both already existed before I started looking. Every strategy I invented — all 62 of the intraday ones — produced statistical noise, and I can show you exactly what noise looks like.
The setup
- Intraday: 1,254 MNQ sessions (1,041 with full context data available)
- Swing: 10.6 years of QQQ daily bars, 2016-01-04 to 2026-08-21, 2,674 bars — deliberately long enough to span both the 2020 crash and the 2022 bear market
- Split: parameters fit on the first 60%, scored on the last 40% (cut at 2024-12-05). A strategy has to work on both halves to count.
- Uniform risk model: 1 ATR stop, 1.5R target, applied identically to every strategy so nothing is individually tuned into looking good
- Costs: 0.01% round-trip on the swing tests
The scoring number below is a t-statistic. Loosely: how many standard errors the result sits from zero. t = 2 is the number most retail backtesters treat as "it works." Hold that thought.
Round 1 — eight strategies
| strategy | n | PF | t |
|---|---|---|---|
| morning ORB 09:30-09:45 | 265 | 1.72 | +4.06 |
| failed break → reversal PM | 606 | 1.05 | +0.62 |
| VWAP fade >1.5 ATR PM | 1005 | 1.02 | +0.26 |
| fade the break PM | 917 | 1.01 | +0.12 |
| failed break + 200d bias | 304 | 1.01 | +0.11 |
| power hour VWAP 15:00 | 561 | 0.95 | −0.56 |
| afternoon ORB 14:00-14:15 | 500 | 0.91 | −0.99 |
| fade the break + bias | 461 | 0.88 | −1.22 |
One thing worth staring at: the afternoon ORB is the exact same rules with the clock moved four and a half hours, and it loses money. Same pattern, different time of day, opposite result. Which tells you the edge isn't the pattern. It's the volume burst at the open. The pattern is just how you harvest it.
Round 2 — five more, all dead
Closing drive (−0.70 train / −1.10 test), VWAP reversion (−0.22 / +1.84), second wind (−1.32 / −0.41), pure VWAP side (−0.83 / −0.92), 15:00–15:30 range break (+0.23 / +0.64).
Look at VWAP reversion: it fails the training half and then scores +1.84 on the test half. If I'd run it the other way around — fit on the recent data, test on the old — I'd have "found" something. That asymmetry is the single most common way people fool themselves, and it shows up repeatedly below.
Running total: 13 tested, 1 survivor.
Round 3 — twenty-two more, all dead
Here the multiple-comparisons problem gets real. If you test 22 worthless strategies, there's a 68% chance at least one clears t = 2 by pure luck. So the honest bar isn't 2.0 anymore — with 22 comparisons it's about 3.04.
Nothing reached even the naive bar on both halves. Best near-misses: VWAP-filtered ORB (+1.39 / +1.04), naked POC (+0.92 / +0.98), VWAP band ride (+1.74 / +0.65). And "rotate inside value" scored −0.21 train / +2.54 test — the same half-a- result trap again.
Bug worth confessing: the first run reported 11 of the 22 as "too few trades." Cause: ATR was computed within the current session only, so it returned nothing before bar 14 and silently dropped every strategy that entered before 10:40 — which is to say, most of the interesting ones. A backtest returning no trades is almost always a bug, not a finding. If your results look strange, suspect your harness before you suspect the market.
Running total: 43 tested, 2 survivors.
Round 4 — forty more, all dead
Eight families: time-of-day, volatility, volume, candle patterns, cross-day references, intraday momentum, intraday mean reversion, price levels. With 40 tests the bar rises to about 3.23. Best result by its weaker half was +1.17.
The textbook retail setups came in mildly negative: 9/21 EMA cross −1.81, 20-bar band edge −1.88.
The result that actually matters
Pool all 62 intraday strategies I designed across rounds 3 and 4. Two scores each. That's 116 t-statistics from 116 deliberate, mechanism-backed attempts to find an edge.
Mean: +0.060. Standard deviation: 0.96.
Pure random noise would produce exactly 0.00 and 1.00.
I did not accidentally build a slightly-profitable portfolio of weak edges. I built a random number generator. Sixty-two strategies, each with a plausible story about why it should work, and collectively they are indistinguishable from chance to two decimal places.
Not one of the 116 exceeded +3.
This is what people miss when they show you a backtest with t = 2.4. That's not evidence. That's the middle of the distribution you get from trying things. The number only means something once you know how many attempts it came from — and almost nobody publishes that denominator.
The one that survived, and why I believe it
The 09:30 opening range breakout scored +4.06. That sits outside the entire measured distribution of my own failures — 116 attempts, none above +3.
But a single high score is still just a high score. So I ran the same rules and changed only one thing: the length of the opening range window.
| window | n | PF | t |
|---|---|---|---|
| 10 min | 319 | 1.50 | +3.38 |
| 15 min | 263 | 1.72 | +4.05 |
| 20 min | 226 | 1.63 | +3.31 |
| 25 min | 200 | 1.44 | +2.26 |
| 30 min | 178 | 1.40 | +1.99 |
| 45 min | 119 | 1.25 | +1.03 |
| 60 min | 91 | 1.28 | +1.01 |
This is the test that matters, and it's the one almost nobody runs.
An overfit parameter produces a spike — 15 minutes works, 10 and 20 don't, because 15 happened to fit the noise. What's actually here is a smooth decay: 10, 15 and 20 all clear t = 3, then it fades steadily out toward an hour.
That shape is the signature of a real effect. And it matches the mechanism — the opening volume burst decays over the first hour, so a window that captures more of it should work better, gradually. The data agrees with the story for reasons that have nothing to do with the data.
The second survivor was a swing strategy: buy after three consecutive down daily closes, sell on the first up close. +2.02 train / +2.05 test, 126 trades over 10.6 years, 75% win rate, in the market only 8% of the time, survives deleting its ten best trades. It is also a published, previously-known effect. I didn't find it. I confirmed it.
What I'd take from this
The denominator is the whole story. A backtest without the number of attempts behind it is uninterpretable. Not weak evidence — uninterpretable.
Run the sweep. Take your winning parameter and move it in both directions. If performance falls off a cliff on either side, you fit noise. You want a hill, not a needle. This takes ten minutes and it's the highest-value test in backtesting.
Searching harder doesn't work. Eighty-three attempts, and the two survivors both pre-existed the search. The strategies I invented produced textbook noise. The edge came from a mechanism I could explain — volume at the open — not from exploring parameter space.
Half a result is not a result. Three separate times a strategy failed one half and scored well on the other, and each time it was tempting. Both halves or nothing.
The limits of all this, stated plainly
The held-out half has now been queried 62 times. It is no longer a clean test set. Anything scoring well on it from here should be discounted by me as much as by you. Genuine validation now needs fresh data — a different instrument, or forward time.
The swing result is QQQ, not futures: percentage moves transfer, gaps and margin don't. It also holds overnight, has no stop loss, and its worst trade was −4.9%. And over the same period, simply buying and holding returned +552% against its +109% — it wins on risk, not on dollars.
I'm publishing the failures because the failures are the finding. Eighty-one dead strategies is not a story about being bad at this. It's a measurement of how rare edges actually are, and I haven't seen anyone else publish theirs.
Get the next one
I publish every strategy I test, including the ones that fail. No schedule, no signals, and nothing sent that isn’t new research.