An honest, out-of-sample study of Technical, Gann, and Moon-cycle signals on 11 years of NIFTY50 — the three layers buildable today. Fundamental & OI await Zerodha data.
Every result below is scored as EDGE — precision above the base rate. A signal with no skill scores ~0, no matter the up/down imbalance. This is the principled fix for “measure vs 53%, not 50%.”
Small but out-of-sample-confirmed trend-following edge (~55–56%, +2–5pp).
Session mean-reverts — fade the open. Suggestive, not yet OOS-robust.
No reliable edge. Square-of-9 collapses to plain momentum; cycles are period-specific.
Waxing vs waning statistically indistinguishable (χ² p=0.33). Well-powered null.
Each indicator rendered as a next-day directional call (all shifted +1 day — no same-day lookahead). Ranked by out-of-sample edge (holdout, 2023-07 onward). Mean-reversion variants (*_mr) lose on close-to-close — the daily net move persists.
Best single signal on holdout: Bollinger %B position (+3.5pp, p=0.036). Price > EMA20 is the most consistent — positive in 10 of 12 years.
No combo’s train edge clears the chance bar, so train numbers alone prove nothing. But the holdout was never touched during the search — and the combos that do confirm out-of-sample (positive in ≥80% of years) share a consistent core. Ranking ingredients by how often they appear in those winners is the robust way to read it — and it answers your Step-2 shortlist:
The same indicators point opposite ways depending on what you predict — the single most useful finding here, and why the old open_bias model was fighting the base rate.
| signal | train | holdout | p |
|---|---|---|---|
| cycle-144 repeat | +2.35 | +5.55 | 0.002 |
| son_break | +2.64 | +3.02 | 0.060 |
| 1×1 angle (90d) | −2.42 | +4.88 | 0.087 |
Square-of-9 levels fire ~99% of days → “son_break” is just 3-day momentum in disguise. The 144-day cycle’s train edge (2.4) ≪ holdout (5.5) → period-specific, not stable.
All three straddle the base rate. χ²(day-type vs paksha) p = 0.33 → independent. Reversal rate & volatility identical. With ~1,350 days per half-cycle this is a clean, well-powered null — drop it with confidence.
The best combos sit only ~3pp above base (~56%) and aren’t multiple-testing-proof. This is a genuine signal worth carrying into the ensemble, not a standalone trading system. Its value multiplies once the Fundamental & OI layers exist.