Data to 5 October 2026

Pre-registered research

Trend barometer (an ensemble): 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. Builds on trend_momentum_spec.md, where five single trend rules on seven assets failed to beat buy-and-hold after deflation.

Why an ensemble

Assets

Nifty 500, Nifty 50, Nifty Midcap 150, Nifty Smallcap 250 (total-return indices); every NSE sectoral index with at least 252 sessions of history; gold in rupees; the NSE 5-year G-sec index; the rupee (US dollars per rupee from ECB reference rates, from 2000, so up means a stronger rupee). Total-return assets are converted to excess-return series (asset total return over the 91-day T-bill cash index) before any signal is computed, so that a G-sec index rising on carry alone does not read as a trend. The rupee is used as a spot rate (no carry).

The grid (24 signals per asset)

Horizons h = 21, 42, 63, 126, 189, 252 sessions (about 1, 2, 3, 6, 9, 12 months). On session t, with P the excess-return series:

CodeSignal type“Up” when
tsmomTime-series momentumP(t) > P(t−h)
smaPrice against its averageP(t) > mean of P over the last h sessions
xoMoving-average crossovermean of P over the last max(5, h/4) sessions > mean over the last h
chanBreakout channel (position in range)P(t) > midpoint of the highest and lowest P over the last h sessions

Score = share of the 24 signals voting up, × 100. Equal weight per horizon band (each band has four signals, so this is the plain mean). No fitted weights. The page shows the 4 × 6 grid as a heat table, so fragility is visible: a score of 50 made of a solid split by horizon reads very differently from a scatter.

Cross-asset trend environment: for each asset, strength = |2 × score − 100| (0 = signals split evenly, 100 = all agree). The environment reading is the mean strength across the broad-index, gold, G-sec and rupee series plus the median sector; direction is shown separately.

Strategies used to test it (long or cash, per asset)

Hypotheses and measurements

Tested on Nifty 500 (main), with the other assets reported as the same table, not as separate hypotheses.

“What happened next”

Score bands 0–20, 20–40, 40–60, 60–80, 80–100 for Nifty 500: sessions, independent periods, forward 21/63/252-session returns (median, inter-quartile range, hit rate) and median worst fall, as in the mood spec. Descriptive.

Not tested, stated in advance

No other horizons, signal types, weightings or assets as hypotheses. A volatility-scaled ensemble is not run in v1. Anything tried later is exploratory.

Results log

Implementation notes, 2026-10-02, written before the first run

2026-10-02: first run (data to 1 Oct 2026), Nifty 500 from 1996-01-18

2026-10-03: rerun after the audit (register rows BT1, T3); rules unchanged

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