Data to 5 October 2026

Pre-registered research

Index trend and momentum: pre-registered specification

Written 2026-10-01, before any Indian results were computed. Parameters come from the published literature and are not tuned on Indian data. If a rule is changed after results are seen, the change must be logged here with the date and the reason, and the original result kept.

Assets and data

Trend rules (time series, long or cash, per asset)

CodeRuleSourceChecked
sma10mLong if the month-end level is above the average of the last 10 month-end levelsFaber (2007)Monthly
sma200dLong if the close is above its 200-session averageCommon practitioner rule; Brock, Lakonishok and LeBaron (1992)Daily
tsmom12Long if the trailing 12-month return beats cash over the same 12 monthsMoskowitz, Ooi and Pedersen (2012)Monthly
blendExposure = share of the 1-, 3-, 6- and 12-month excess returns over cash that are positive (0, 0.25 … 1)Hurst, Ooi and Pedersen (2017), long-only versionMonthly
breakoutGo long on a close at a 252-session high; go to cash on a close at a 126-session lowDonchian / turtle-style breakoutDaily

Benchmarks: buy-and-hold of the same asset, and cash.

Sector momentum (cross-sectional)

Costs (applied to every strategy and benchmark the same way)

What is reported

Known biases, stated up front

Results log

2026-10-01: first run (data to 2026-09-25)

These ran exactly as specified, with no parameter changes. Trend: 35 trials (7 assets × 5 rules). Momentum: 2 trials.

Trend:

Sector momentum:

2026-10-01: after-tax run (same rules; tax model added as planned)

2026-10-03: audit corrections (register docs/research/AUDIT.md, rows T1–T3, T5, T6); rules unchanged

Defects in the implementation, not in the rules:

Data: to 1 Oct 2026 (the first run used data to 25 Sep).

Old → new (full sample, pre-tax unless marked):

OldNew
Nifty 50 rules’ CAGR8.7–11.8%9.3–10.9%
Nifty 50 buy-and-hold CAGR12.2–12.5% (by rule window)12.2–12.3%
Nifty 50 rules’ worst fall−27% to −39%−26% to −44% (buy-and-hold −59.5%)
Nifty 50 rules’ Sharpe0.21–0.410.26–0.38 (buy-and-hold 0.35–0.36)
Nifty 50 dsr_vs_buy_hold≤ 0.03≤ 0.01
Midcap 150 sma200d18.0% vs 15.3%; worst fall −32% vs −73%; DSR 0.1616.2% vs 15.0%; worst fall −37%; DSR 0.10
Smallcap 250 sma200d18.1% vs 13.6%; DSR 0.2915.5% vs 13.4%; DSR 0.14
Nifty 500 sma200d14.2% vs 13.6%12.2% vs 13.3% (now behind)

After tax (new engine):

OldNew
Large caps: trend rules behind buy-and-hold by1.9–6.1 points a year1.1–5.2 points a year (still behind on every large-cap index for every rule)
Nifty 50 buy-and-hold11.98%12.01% (sma200d window)
Nifty 50 sma10m9.58%10.86%
Nifty 50 sma200d8.28%9.98%
Midcap 150 sma200d edge after tax−0.04+0.13 (14.64% vs 14.51%)
Smallcap 250 sma200d edge after tax+0.98+1.40 (14.37% vs 12.97%)
Gold and G-sectrend rules lose 0.9–6.4 pointstrend rules lose 2.3–5.3 points on gold and 0.2–2.2 on G-sec

Sector momentum (2005-02 to 2026-09, 260 months):

OldNew
mom12_1 vs equal weight14.5% vs 15.5%, DSR 0.4114.5% vs 15.5%, DSR 0.33
mom6_1 vs equal weight16.9% vs 15.5%, DSR 0.7316.9% vs 15.5%, DSR 0.66

Conclusions: none changes. No rule beats buy-and-hold after deflation; every large-cap rule trails after tax; the mid- and small-cap 200-day edge is smaller than first reported. The new deflated values are 0.10 and 0.14.

Independent check: pipeline/tests/audit/test_trend_recalc.py recomputes all 35 runs with plain loops. Largest CAGR gap 0.0001 pp; the deflated Sharpe ratios match to 3e-6.

This is docs/research/trend_momentum_spec.md. The specification was committed before any result was computed; changes after that are logged in it with dates and reasons.