MoneyMap · Research Engine

Stock Market Research System — Layers 1 of 3

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.

InstrumentNIFTY50 · 5-min → daily
History2015-01-09 → 2026-03-13
Trading days2,716
Train / Holdout2,056 / 660
Generated2026-07-10

The bar to beat

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%.”

53.32%
Next-day close-to-close — % up days
Always predict UP → 53.3% right. Majority class = UP.
53.17%
Next-day open-to-close — best constant call
Only 46.8% of sessions close above open → “always RED” wins.

Verdict at a glance

Technical · c2c
Keep — core

Small but out-of-sample-confirmed trend-following edge (~55–56%, +2–5pp).

Technical · intraday
Revisit

Session mean-reverts — fade the open. Suggestive, not yet OOS-robust.

Gann
Drop

No reliable edge. Square-of-9 collapses to plain momentum; cycles are period-specific.

Moon cycle
Null

Waxing vs waning statistically indistinguishable (χ² p=0.33). Well-powered null.

Layer 2 — Technical · single indicators

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.

bb_pctb_mid
+3.49
ema20_price
+2.68
cpr_dir
+2.39
supertrend_nonchop
+2.23
macd_rsi
+2.04
rsi14_50
+1.36
ema_20_50
+0.62
supertrend (raw)
−2.49
rsi14_70_30 *
−4.43
−7pp0+7pp

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.

Layer 2 — Combination search · strategies of 1–7 indicators

41,225
combos tested (majority-vote rule)
+6.9pp
best edge reachable by chance at this trial count
+5.5pp
best actual train edge — below the chance bar
13
combos confirming out-of-sample (~56%, +4.6–5.8pp)

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:

Keep — recur in OOS winners

share of the 13 confirming combos
CPR direction 100% Bollinger %B 69% · +0.58 lift EMA-stack 54% RSI > 50 54% Price > EMA20 38%

Drop — dilute performance

appear less in winners than in the pool
Bollinger breakout −0.26 MACD+RSI combo −0.20 EMA 20/50 cross −0.15 SuperTrend (raw) −0.14 DMI / Aroon −0.13

The structural insight

The edge flips with your holding horizon

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.

Close-to-close (net daily move)
Trend-following works. The overnight-gap-inclusive move persists — follow price > EMA, CPR direction, %B.
Open-to-close (intraday session)
Mean-reversion works. The market fades its own opening move — best signal was bb_fade (+5.8pp holdout, needs hardening).

Layer 4 & 5 — Gann and Moon

Gann · NO RELIABLE EDGE

square-of-9 · 1×1 angles · time cycles
signaltrainholdoutp
cycle-144 repeat+2.35+5.550.002
son_break+2.64+3.020.060
1×1 angle (90d)−2.42+4.880.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.

Moon cycle · STATISTICAL NULL

waxing (New→Full) vs waning (Full→New)
Waxing up%
52.8
Waning up%
53.8
Base rate
53.4

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.

Bottom line & what’s next

A real — but weak — trend-following tilt

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.