Not supported · Entries · 2026-10-11
Does the random control understate the harmonic edge because it overlaps the pattern itself?
What this means
The contamination is real but narrow: only randoms in the ~10 days after D (before the signal) are 'buying the same pattern'. The rest of the pattern span is the decline into D, the worst time for a random entry, so cutting out whole spans makes the control harder, not easier. Done narrowly, the correction lifts the daily edge from +0.05 to +0.07R (still all in 2016-20) and leaves 1h (+0.05) and 4h (+0.03) unchanged. Only 1h stays positive across every reasonable control (+0.02 to +0.10). Daily and 4h have no edge outside the immediate pattern neighbourhood.
Explanation checked against the data.
- Hypothesis
- Pre-registered: the +-60-day control (d) contains random entries inside the harmonic pattern (X->D) and around D, which are effectively the same trade, so excluding pattern spans raises the harmonic edge above (d)'s +0.05 (1d) / +0.05 (1h) / +0.01 (4h).
- Method
- Pattern span from trade_log features: X bar = fill - 1 - bd - (l1+l2+l3+l4), median 56 bars on all TFs; span = [X, harmonic exit]. Samples as before (1d n=2,006 2016-26; 1h 3,414 / 4h 735, 2023-11 to 2026-09); logged stop -> 2R, open entry, entry bar counts, full exit, build.py sim_many, 20 randoms per trade. Controls: (e) +-60 days minus own span and all other harmonic spans on the ticker; (f) after the exit, 120 trading days, minus spans; (g) +-250 days on no-active-pattern days. Ticker-clustered bootstrap CIs, halves, and a 10,000-trader Monte Carlo (one random per trade; share whose total >= harmonic total). Post-hoc: (d*) = (d) minus only [D, fill]; variants without the other-span exclusion; R of random entries by position relative to the pattern.
- Result
- Edge (95% CI) / MC share. (d) reproduced: 1d +0.047 (-0.002,+0.090) 3.2%; 1h +0.050 (+0.006,+0.096) 1.5%; 4h +0.012 (-0.072,+0.093) 39.3%. (e): 1d -0.20 (-0.28,-0.12) >99.9% [334 trades without candidates]; 1h +0.03 (-0.03,+0.08) 12%; 4h -0.03 72%. (f): 1d -0.04 (-0.12,+0.04) 95%; 1h +0.09 (+0.04,+0.15) <0.1%; 4h -0.00 54%. (g): 1d -0.06 (-0.13,+0.01) 98%; 1h +0.02 (-0.03,+0.08) 19%; 4h -0.09 (-0.20,+0.02) 97%. Post-hoc (d*): 1d +0.070 (+0.021,+0.116) 0.2% [halves +0.14 / +0.02]; 1h +0.046 (+0.002,+0.093) 2.2%; 4h +0.032 (-0.051,+0.116) 23%. Daily random R by position: last 10 days before fill +0.59; X to 10 days before fill +0.05; inside other patterns +0.17-0.19; free days +0.26-0.31.
- How much to trust it
- Medium: Pre-registered, exact reproduction of (d) and its Monte Carlo; but every span-based control uses hindsight (a span exists because a decline into D followed), so (e)-(g) are biased against harmonics, and the (d*) fix that avoids that bias is post-hoc
- Did it change the live rule?
- none; (d*) (+-60 minus [D, fill]) recommended as the default random control for future studies
- Notes
- Supersedes the headline numbers of entry-vs-random-control-fix. The 1h figures are positive under all of (d), (d*), (f), (f0); the 4h Monte Carlo share is 23-97% under every control.
Scripts and data for this study will be linked here when the research code is published on GitHub.
Education and research only. Not financial advice. Backtests use today's index members (survivorship bias).