Does industry relative strength predict anything?
Tested 29 September 2026 · backtest_industry_rs · 879 symbols,
146 industries, 269 sessions from 26 August 2025 to 28 September 2026
The question
Money rotates by group; the strongest groups lead; so rank industries by relative strength and buy inside the top ones. It is the standard argument and it is worth taking seriously, because if it holds it is a filter we do not currently apply.
One thing to settle first, because it is not obvious. Ranking industries is benchmark‑free. Subtracting a common index return from every industry shifts them all by the same amount and cannot reorder them, so "RS against the Nifty" and "RS against smallcap" produce the same ranking. They differ only in where zero sits. So there are really two hypotheses, and they were tested separately: the rank reading ("is this among the strongest groups") and the benchmark reading ("is this group beating the index I could buy instead").
What would have made it true
Four conditions, because four gate proposals died here in a single week from clearing exactly one of them:
- Forward return rising across rank buckets, not just a good top bucket.
- A top‑versus‑rest spread that survives disjoint sampling — consecutive days share almost all of a forward window, so a day‑by‑day t‑statistic is inflated by roughly the square root of the horizon.
- The same sign in both halves of the window.
- A spread larger than shuffling the bucket labels within each day produces.
The rank reading: it fails
| bucket (1 = strongest) | n | mean % | median % | win % | disjoint mean % |
|---|---|---|---|---|---|
| 1 | 22,849 | 2.88 | 1.32 | 56.1 | 2.49 |
| 2 | 24,107 | 3.18 | 1.76 | 57.1 | 2.44 |
| 3 | 20,029 | 2.76 | 1.48 | 55.9 | 2.36 |
| 4 | 18,673 | 2.31 | 1.01 | 54.2 | 1.99 |
| 5 | 10,921 | 2.00 | 0.70 | 53.9 | 1.99 |
Forward 20‑session return. The strongest bucket is not the best one — bucket 2 beats it on every column of the full sample.
Top bucket against the rest, on disjoint windows: +0.26pp, t = 0.61. Permutation p = 0.189. Halves: +0.77pp then +0.10pp. Nothing.
The 60-session horizon is the trap worth seeing
Stretch the forward window to sixty sessions and the spread becomes +1.69pp with a permutation p = 0.015. On that evidence alone it looks like a finding. Then split it:
| half | top | rest | spread | t |
|---|---|---|---|---|
| to 19 Feb 2026 | 126 @ 2.65% | 385 @ −4.56% | +7.21pp | 4.37 |
| from 19 Feb 2026 | 231 @ 11.68% | 791 @ 12.33% | −0.65pp | −0.40 |
The sign flips. A permutation test answers "could chance produce this pattern"; it cannot answer "is this one regime". The split is what catches it, which is the whole reason it is run.
The benchmark reading: one survivor, and it is mostly size
Cutting on whether the industry beat an index over the same lookback, disjoint windows, both halves:
| cut | horizon | first half | second half | verdict |
|---|---|---|---|---|
| beats NIFTYBEES | 20 | +4.14pp (t 7.57) | +0.70pp (t 0.45) | degenerate — only 80 names below the line in the second half |
| beats SMALLCAP | 20 | +0.45pp (t 0.89) | −0.20pp (t −0.41) | sign flip |
| beats NIFTYBEES | 60 | +7.21pp (t 4.37) | +5.00pp (t 3.92) | survives both halves |
| beats SMALLCAP | 60 | +3.38pp (t 2.56) | +1.33pp (t 1.02) | same sign, second half not significant |
Only one row survives everything: beating the Nifty, at a sixty‑session horizon. And the row beneath it is the reason to distrust it. Swap the largecap index for the like‑for‑like smallcap peer and the effect falls from +7.21/+5.00 to +3.38/+1.33, losing significance in the second half. What "beats the Nifty" mostly encodes, in a universe that is broad and smallcap‑heavy over a window when smallcaps crushed large caps, is not being a large cap.
The same confounder had already bitten once that day: the first build of the report's sector‑leadership section called 56 of 69 sectors "leaders" because it measured them against the Nifty. Against the smallcap peer it was 38.
On the population that matters
Restricted to the top third by price relative strength — the stand‑in for the RS rating every scanner here demands, and so the set a gate would actually rule on — the rank spread is +0.60pp, t = 0.90, permutation p = 0.085, with halves of +0.44pp and +1.19pp. Same sign in both halves, which is more than the full population managed, and still not significant in either.
The answer
No — do not gate on top‑ranked industries. It would refuse candidates for a spread that is statistically indistinguishable from zero at our horizon, and the one version that survives a split is largely a size factor we can get more cheaply and more honestly by simply not pretending the Nifty is our benchmark.
This is the second industry‑rotation axis to fail the same way. backtest_rotation
found the RRG quadrant gate — G5, one of seven gates a candidate must clear — worth
+0.16pp at t = 0.45 on disjoint samples, flipping sign between halves,
with WEAKENING groups posting the highest forward return of the four quadrants. Two
different measures of the same idea, two nulls.
What the sector work is still worth is as a map, not a filter: knowing that both insurance groups have zero names above water and that oil services and capex machinery lead tells you where the damage and the leadership sit. That is context for reading a candidate, and the evidence does not support turning it into a rule that refuses one.
Caveats, stated rather than buried
- Thirteen months. One correction and one recovery. A sector‑rotation effect could plausibly need several cycles to show, and this window cannot see them.
- 593 of 879 symbols were quoted on every session and survive the alignment; names that listed inside the window are absent, which tilts the panel toward older listings.
- At the 60‑session horizon, first half, the top rank bucket and the beats‑Nifty cut produced identical counts (126 and 385). That is possible — the Nifty's return can land exactly on a bucket boundary — but it is the kind of coincidence worth re‑deriving before anyone leans on that row.
- This measures the axis, not a strategy. It says nothing about whether a portfolio concentrated in leading groups, sized and sequenced against the ₹60L pool, would have done better — and the ₹60L work already showed that sequencing can invert a ranking.
Reproduce with
python manage.py backtest_industry_rs --days 400 --horizon 20 and
--horizon 60, --strong-only. The permutation is seeded, so the
p‑values above are checkable.