Strategy due diligence

Does the opening-candle edge survive execution?

A ten-year test of the QQQ first-five-minute strategy. It is not overfitted — that much is now settled. Whether it can actually be traded is a different question, and the answer turns on a single number.

Instrument QQQ Sample 2016-08 → 2026-08 Sessions 2,510 Method CPCV · 455 splits · 91 OOS paths Analytics skfolio 0.20.2

The two findings

Passes · not overfitted
+0.03

Selection bias, in Sharpe points. Re-choosing the configuration on every training split and scoring it only out-of-sample costs almost nothing — and 96% of 455 splits independently picked the same one.

Fails · not executable
29% vs 28–41%

Break-even stop slippage against the range actually measured on this strategy. The edge lives entirely inside an optimistic fill assumption, and real fills sit at or past the point where it disappears.

What slippage does to the equity curve

Growth of $1, 2016–2026, by stop-fill assumption

The backtest fills stops at the stop price. A stop is a market order once touched, so real fills land worse. Each curve applies a fixed haircut — a fraction of the stop distance — to the 40.8% of sessions that stop out. Log scale.

0.5x1x2x5x10x201620182020202220242026slip 0% · 13.5xslip 20% · 2.3xslip 28% · 1.1xslip 35% · 0.6x

Where the edge breaks

Annualised Sharpe against stop slippage

Break-even sits at 29%. Independent measurement of this strategy’s own stop fills put real slippage at 28–41% — the shaded band. The strategy is priced exactly at the edge of its own viability.

measured 28–41%-0.5+0.0+0.5+1.0+1.50%10%20%30%40%stop fills this fraction of the stop distance worsebreak-even 29%slip 0% → Sharpe +1.53slip 5% → Sharpe +1.27slip 10% → Sharpe +1.01slip 15% → Sharpe +0.77slip 20% → Sharpe +0.52slip 25% → Sharpe +0.29slip 28% → Sharpe +0.15slip 35% → Sharpe -0.16slip 41% → Sharpe -0.42

Why it is this sensitive: the stop is hit on 40.8% of sessions (1,024 of 2,510). This is not a rare correction applied to a handful of trades — four sessions in ten pay it.

Risk metrics by scenario

Stop slipSharpeSortinoReturn p.a. Vol p.a.Max DDCVaR 95
0%+1.53+2.63+29.9%18.2%15.2%1.01%
20%+0.52+0.87+8.6%19.2%25.9%1.21%
28%+0.15+0.25+1.1%19.6%45.5%1.29%
35%-0.16-0.27-5.1%20.0%62.8%1.36%

Computed with skfolio’s Portfolio analytics on compounded returns. Highlighted rows fall inside the measured slippage band.

The overfitting test it passes

The concern was ordinary and serious: the stop multiplier was chosen as the best of five by full-sample Sharpe, and QQQ as the best of eight instruments the same way. Reporting the winner of twenty-five noisy draws as an estimate of future performance is biased upward even when nothing has any edge.

Combinatorial Purged Cross-Validation re-runs that choice honestly: split the decade into 15 folds, hold out every combination of 3, and reassemble the held-out blocks into 91 complete out-of-sample paths, purged and embargoed so nothing leaks across a boundary.

+1.57
In-sample best
+1.53
OOS path mean
+0.03
Selection bias
96%
Split agreement
0%
Paths losing money

Sampling uncertainty

Moving-block bootstrap, 21-day blocks, 5,000 resamples. No resample is negative.

Sharpe 0.63–0.69: 1 of 5,000Sharpe 0.69–0.75: 2 of 5,000Sharpe 0.75–0.81: 10 of 5,000Sharpe 0.81–0.87: 13 of 5,000Sharpe 0.87–0.93: 24 of 5,000Sharpe 0.93–0.99: 45 of 5,000Sharpe 0.99–1.04: 62 of 5,000Sharpe 1.04–1.10: 84 of 5,000Sharpe 1.10–1.16: 130 of 5,000Sharpe 1.16–1.22: 229 of 5,000Sharpe 1.22–1.28: 244 of 5,000Sharpe 1.28–1.34: 297 of 5,000Sharpe 1.34–1.40: 361 of 5,000Sharpe 1.40–1.46: 408 of 5,000Sharpe 1.46–1.52: 443 of 5,000Sharpe 1.52–1.58: 432 of 5,000Sharpe 1.58–1.64: 411 of 5,000Sharpe 1.64–1.70: 414 of 5,000Sharpe 1.70–1.75: 354 of 5,000Sharpe 1.75–1.81: 295 of 5,000Sharpe 1.81–1.87: 214 of 5,000Sharpe 1.87–1.93: 175 of 5,000Sharpe 1.93–1.99: 145 of 5,000Sharpe 1.99–2.05: 77 of 5,000Sharpe 2.05–2.11: 59 of 5,000Sharpe 2.11–2.17: 35 of 5,000Sharpe 2.17–2.23: 21 of 5,000Sharpe 2.23–2.29: 8 of 5,000Sharpe 2.29–2.35: 4 of 5,000Sharpe 2.35–2.40: 3 of 5,0005th 1.1195th 1.971.01.52.0Sharpe · 5,000 block-bootstrap resamples

Tail concentration

Sharpe after removing the best sessions. About 4% of sessions carry the whole edge.

-0.5+0.0+0.5+1.0+1.5drop best 0 → Sharpe +1.53+1.53nonedrop best 10 → Sharpe +1.30+1.30−10drop best 25 → Sharpe +0.99+0.99−25drop best 50 → Sharpe +0.52+0.52−50drop best 100 → Sharpe -0.38-0.38−100best sessions removed (of 2,510)

The tail result is an operational warning, not a statistical one. Missing sessions at random is survivable; missing the wrong ones is not. Downtime is therefore a risk exposure, not an inconvenience — and this system has lost whole sessions to a sleeping laptop and a rejected order inside the last week.

What is not tested

What would settle it

  1. Log every stop fill against its stop price.
  2. After roughly 30 stop-outs, recompute the realised slippage fraction.
  3. Re-run this study against that number.

Below about 20%, the strategy is viable and worth capital. At 28% or above it is not — and no amount of parameter work fixes it, because the lever is execution: wider stops, limit exits, or a time-based exit with no stop at all.

Position: paper trading only. The strategy has cleared the statistical bar that every other strategy in this book has failed. It has not cleared the execution bar, and until real fills say otherwise the headline figure of roughly +30% a year should be read as unproven.