Data to 5 October 2026

Pre-registered research

Momentum barometer (blended flavours): pre-registered specification

Written 2026-10-02, before any result below was computed; the commit is the freeze. Changes after results are logged at the bottom with the date and reason. Brief: docs/briefs/barometers.md. The earlier sector-momentum test (trend_momentum_spec.md) did not beat equal weight; this is a stock-level, cross-sectional study.

Universe (point-in-time, survivorship-free)

At each month-end t: NSE main-board equities (EQ/BE/BZ; ETFs and SME excluded) that pass compute/breadth.py’s liquidity rule on that day (median traded value over the last 60 bars at least ₹1 crore in latest-CPI rupees, and at least 45 bars in the last 60 sessions), with at least 273 sessions of adjusted-price history. Prices are bhavcopy closes adjusted for corporate actions (equity_prices_adjusted). Stocks that later delist are in the universe while they traded. Used from the first month-end with 300 or more eligible stocks.

Flavours (all computed from data up to t)

CodeFlavourDefinitionSource
r12_112-1 price momentumReturn from month-end t−12 to t−1Jegadeesh and Titman (1993)
r6_16-1 price momentumReturn from t−6 to t−1Jegadeesh and Titman (1993)
voladjVolatility-adjustedr12_1 / annualised std of daily log returns over the last 252 sessionsBarroso and Santa-Clara (2015), stock-level form
residResidual momentumRegress the stock’s monthly returns on Nifty 500’s over months t−36…t−1 (at least 24); sum of residuals over t−12…t−2 divided by the residuals’ std over the windowBlitz, Huij and Martens (2011), market model only
hi52Distance from the 52-week highClose at t / highest adjusted high of the last 252 sessionsGeorge and Hwang (2004)
nseNSE’s normalised score50% z(12-month return / σ) + 50% z(6-month return / σ), returns to t−1 with no skip, σ as voladjNSE methodology for Nifty200 Momentum 30 (Sept 2026 document)

The blend

On each month-end: z-score each flavour across the universe; winsorise at ±3; re-standardise; average with equal weights over the flavours available (at least 4 of 6); rank to a 0–100 percentile. No fitted weights. Reported alongside: the time-averaged cross-sectional Spearman correlation between every pair of flavours.

Portfolios used to test it

Hypotheses and measurements (α = 0.05/3 = 0.0167 for the tested ones)

The barometer readings (published)

Original study: rebalance timing luck in Nifty200 Momentum 30

Not tested, stated in advance

No other flavour definitions, windows, weightings, quantile counts or universes. Anything tried later is exploratory.

Addendum 1: index momentum (pre-registered 2026-10-02, before any index result was computed)

Owner decision, 2026-10-02: the site stays indices-only, so the published list of 30 leading stocks is replaced by an index momentum table. The stock panel stays as the measuring instrument for MO-H1 to MO-H4, because those tests need a wide cross-section.

The index momentum table (description)

MO-H5, tested: blended momentum across de-duplicated sectors

Trend barometer display (no new test)

The trend grid is extended from sectors to every live thematic and strategy index, for description only. The trend environment reading is unchanged (it still uses the median sector). The trend page shows each index’s blended momentum rank beside its trend score.

Results log (addendum 1)

2026-10-02: first run (2005-02 to 2026-09, 260 months)

Ran as specified; nothing changed after results were seen.

Results log

Implementation notes, 2026-10-02 (written before the first run unless marked)

2026-10-02: first run (formation months 2004-11 to Aug 2026)

2026-10-03: correction to the month labels (no result changed)

The worst-months list named each month one too early (Apr 2009 instead of May 2009). A return formed on a month’s last session was dated with + MonthEnd(1), which rolls to the same month’s end when that session falls before the calendar month-end. The returns, flags and test statistics were correct; only the labels were wrong. They are now dated by the month the return is earned (+ MonthBegin(1)). The long-short growth curves on the site were shifted the same way and are corrected.

2026-10-03: audit corrections (register rows R1, R4, R5); no test verdict changes

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