Rules were tuned on old data (in-sample, 2004–2013), then frozen and run on data they never saw (out-of-sample, 2014–2020 — including the 2015–16 slowdown, the 2018 bear and the March 2020 crash). Out-of-sample is the only column that counts. Why does it stop at 2020? That's the span of the validated hourly dataset I own — everything since is an unplanned, live out-of-sample continuation, and the scanner you're looking at is that continuation running every hour.
| System (hourly, WL_60M 866 stocks) | OOS trades | Win rate | Avg / trade | Profit factor |
|---|---|---|---|---|
| System 2 — Q≥3 (the recommended gate) | 312 | 79.5% | +1.77% | 7.93 |
| System 2 — Q≥3, buys only (failed down-5th) | 111 | 82.0% | +2.40% | 13.46 |
| System 2 — all signals, no gate | 826 | 74.6% | +1.44% | 7.41 |
| System 3 — fifth-wave failure (all) | 103 | 81.6% | +0.95% | 3.05 |
| System 3 — ★ double-bottom buys | 51 | 78.4% | +0.83% | 3.49 |
| Wave-5 continuation (DMA 5,2 · 1.5×ATR target) | 18,312 | 91.8% | +1.26% | 10.77 |
| System 2 Q≥3 yearly (2016 / 2017 / 2018) | — | 79 / 79 / 82% | +1.85–2.36% | 8.2–11.0 |
Profit factor = gross wins ÷ gross losses. 7.9 means the winners out-number the losers by nearly 8×. In-sample numbers track the out-of-sample ones — no overfitting mirage.