# Nifty 500 — 10-Financial-Year Backtest (FY2016-17 → FY2025-26)

**Prepared:** 11 Sep 2026
**Universe:** 500 current Nifty 500 constituents
**Year convention:** Indian financial year, 1 Apr → 31 Mar (FY17 = FY2016-17 … FY26 = FY2025-26)
**Price data:** Zerodha Kite Connect v3 historical daily OHLCV (splits/bonuses as adjusted by Kite, plus manual repairs below)
**Macro data:** MCX gold/silver/crude continuous futures (Kite); FRED `INDIRLTLT01STM` (India 10Y, monthly), `DEXINUS` (USD/INR), `DCOILBRENTEU` (Brent); RBI repo-rate public history

> **Read this first — the single most important caveat.** The universe is the Nifty 500 **as constituted in 2026**. Every company that was in the index during these ten years but was dropped, demerged out, or delisted is *absent*. Index membership is partly a consequence of past outperformance, so this panel is **survivorship-biased upward**. The relative comparisons (sector rotation, momentum vs reversion, macro sensitivity) are much more robust than the absolute return levels, but even those are measured on a survivor set. Treat the absolute numbers as a *best case*, not an expectation.

---

## 1. Executive summary

Five findings survived the checks below; two popular narratives did not.

1. **The index return and the median stock diverge violently, and the gap is a regime signal.** In narrow years the index beats the median stock badly (FY19: index +8.4% vs median stock −4.6%; FY26: index −3.8% vs median −5.9%). In broad years the median crushes the index (FY21: +95.1% vs +76.0%; FY24: +64.0% vs +39.1%). *Confidence: high — 10/10 years directionally consistent with breadth.* A "Nifty is up" headline tells you very little about whether the average stock made money.

2. **Winners are overwhelmingly small, volatile and sector-clustered.** The top 30 each year averaged **63% small-cap / 25% mid / 12% large** against a 33/33/33 universe, with **47.7% annualised vol vs 36.9% for the rest**, and 5 of 10 years saw **Capital Goods** as the single biggest cluster of winners. *Confidence: high on the direction (9–10/10 years), but see the order-statistic caveat in §6 — this is largely a statement about dispersion, not a free edge.*

3. **Early relative strength is a real but modest predictor — and far weaker than it first appears.** A stock in the top quartile of excess return after 30 days had a **~17%** chance of finishing the year top-30 versus a ~8% random baseline, and ~34% recall against a truly non-overlapping forward target versus a 25% baseline. The naive version of this statistic (55% recall) is **inflated by a mechanical overlap** between signal and target window. *Confidence: medium-high on existence, high on the direction of the bias.*

4. **The "rates down ⇒ rate-sensitives win" rule barely holds.** Across the 10 years the correlation between the repo-rate change and Financial Services' return was **+0.17** — i.e. financials did *better* in hiking years. FY23 (+250bp of hikes) saw rate-sensitives beat defensives by +13.7pp. The rate channel is dominated by the credit cycle and asset-quality cycle, not the policy rate. *Confidence: medium — n=10 makes these correlations statistically weak; the FY23 and FY20 counter-examples are nonetheless clear.*

5. **Momentum beats mean reversion, but neither dominates, and the exception is predictable.** The prior-year best quartile stayed in the top quartile 30.1% of the time (baseline 25%); the prior-year worst quartile jumped to the top quartile only 24.7% of the time (baseline 25%). Momentum "won" in 6 of 9 transitions. The glaring exception is **FY20→FY21**, the post-COVID recovery, where prior-year losers returned **+213.5%** against **+98.0%** for prior-year winners. *Confidence: medium — the effect is small relative to year-to-year noise.*

**Not supported:** the tidy rate-rotation narrative (§4), and gold as a reliable steady hedge (it did nothing in FY17 and trailed equities for six straight years before dominating FY25–FY26).

---

## 2. Method, and what had to be fixed

### 2.1 Data pipeline

| Step | Detail |
|---|---|
| Fetch | Kite Connect v3 `/instruments/historical`, day candles, 2014-01-01 → 2026-09-11. Kite caps a `day` request at **2000 days**, so every token was fetched in ≤1999-day chunks and merged. Rate-limited to ~2.8 req/sec; resumable. |
| Coverage | 500/500 universe symbols resolved to instrument tokens; 25 macro series (Nifty 500, Nifty 50, 17 sector indices, GOLDBEES/SILVERBEES, INDIA VIX, MCX gold/silver/crude). 522 successful series. |
| Window | Data starts 2014-01-01, giving a >2-year buffer before FY17 for 52-week-high and prior-year calculations. |

### 2.2 Four data defects found and handled

These materially change results, so each is documented rather than silently patched.

**(a) Pre-listing stub rows.** Kite's historical API returns a handful of placeholder rows *before* a company's IPO — absurd prices with near-zero volume — separated from the real series by a multi-year date gap. `COHANCE` carried ₹0.30 closes in 2015 before its 2020 listing; `MAZDOCK` had literal **₹0.00** closes; `SBICARD`'s stub sat at ₹313 against a ₹681 IPO price. Left in, `COHANCE` would have shown a **+112,250%** day and `DELHIVERY` **+9,228%**, and would have ranked as the #1 stock of their years by a factor of ~1,000×. **9 symbols / 519 rows removed.** `SBICARD` proves a price-ratio test alone is insufficient (only a 2.2× step), so a >120-day hole in a daily series is treated as a listing gap.

**(b) Unadjusted bonus/split.** Kite back-adjusts most corporate actions but demonstrably missed some — `CGPOWER` shows a +190.7% single-day step on *consecutive* trading days (no date gap) from an unadjusted bonus. An unadjusted bonus inside an FY fabricates a large *spurious negative* return and would push a genuine winner into the bottom-20. Repair rule: a single-day drop whose ratio matches a canonical large ratio (1/2, 1/3, 1/4, 1/5, 1/10) within 1.5% and is ≥45% deep → back-adjust all prior prices. **Applied: 1 symbol** (`SPLPETRO`, 2022-06-07, ratio 0.5000 = a 1:1 bonus, independently confirmed).

> A looser version of this rule (accepting 4/5, 3/4, 2/3 within 2.5%) was tried first and **wrongly "repaired" ~200 ordinary crash days** — `VEDL`/`ZENSARTECH` 2020-03-23, `ZEEL` 2024-01-23, `YESBANK` 2019-10-01 are real market events, and back-adjusting them would have fabricated a ~+25% return for each. The rule was tightened in response. Eight ambiguous 30–45% drops remain **unmodified and are listed in `prep_report.txt`**.

**(c) Demergers.** A demerger removes value from the parent on the ex-date while the shareholder receives a *separate* security, so the price-only return is not measurable. Three stock-FY pairs are **excluded** from rankings rather than patched: `TATACHEM` FY20 (consumer demerger into Tata Consumer), `ABFRL` FY26 (Madura Fashion → ABLBL), `ABREL` FY20.

**(d) Series changes.** An NSE stock can move between series (EQ ↔ BE ↔ D1), and each series carries a **different instrument token** whose history covers only its own span. `HEG` and `HFCL` currently trade in the BE series; `CHOLAFIN` and `MOTHERSON` carry a D1 series. All tokens per symbol were fetched and stitched. (Two symbols — `BAJAJ-AUTO`, `NAM-INDIA` — also exposed a naive `split('-')` bug, since their *real names* contain a hyphen.)

### 2.3 Eligibility rules for a full-year return

A stock enters an FY ranking only if it (i) has ≥85% of the Nifty 500's trading days in that FY, (ii) has a valid base close within 5 trading days before the FY and an end close within 5 days of FY end, and (iii) is not a demerger exclusion. **This is why n grows from 316 (FY17) to 473 (FY26)** — many current constituents simply had not listed in 2016. Any cross-year comparison must account for a changing universe, and FY17–FY20 rankings are computed on ~2/3 of the names.

### 2.4 Dividends — the biggest remaining measurement gap

Returns are **price returns, split/bonus-adjusted, but NOT dividend-adjusted.** This understates total return, most severely for high-payout sectors (Power, FMCG, PSU banks/oil). Sector *relative* rankings are distorted by roughly the dividend-yield spread (typically 0–3pp/yr, more for PSUs), which is small relative to the annual return dispersion here but not negligible for the 10-year compounding figures. **No total-return index series was available**, so this is stated, not corrected.

---

## 3. Section 1 — Yearly stock performance

Full top-20 / bottom-20 tables for all ten years are in **Table 7** (Appendix A).

### 3.1 The headline numbers

| FY | Eligible | Nifty 500 | Median stock | Mean stock | % beating index | Top-20 cutoff | Bottom-20 cutoff |
|---|---|---|---|---|---|---|---|
| FY17 | 316 | +23.9% | +35.0% | +45.1% | 61.4% | +122.2% | −13.3% |
| FY18 | 328 | +11.5% | +10.1% | +25.2% | 45.7% | +143.1% | −13.0% |
| FY19 | 351 | +8.4% | −4.6% | −2.3% | 30.2% | +76.7% | −22.9% |
| FY20 | 362 | −27.6% | −36.9% | −31.9% | 39.2% | +36.7% | −55.4% |
| FY21 | 378 | +76.0% | +95.1% | +139.9% | 61.6% | +541.8% | −24.4% |
| FY22 | 391 | +21.0% | +23.1% | +42.8% | 52.4% | +236.4% | −25.2% |
| FY23 | 415 | −2.3% | +1.6% | +9.6% | 54.5% | +111.2% | −40.5% |
| FY24 | 429 | +39.1% | +64.0% | +87.1% | 66.7% | +332.7% | −13.3% |
| FY25 | 447 | +5.4% | +5.5% | +13.9% | 50.3% | +90.9% | −35.0% |
| FY26 | 473 | −3.8% | −5.9% | −0.4% | 47.4% | +61.8% | −43.8% |

Two structural facts sit in this table. First, **the mean is persistently far above the median** (FY21: mean +139.9% vs median +95.1%) — annual stock returns are strongly right-skewed, so "average performer" is a misleading concept and any strategy's result depends heavily on whether it caught the right tail. Second, the **top-20 cutoff swings from +36.7% (FY20) to +541.8% (FY21)** — the bar for being a top-20 stock is itself a function of the regime, which is why cross-year comparisons of "how good was the best stock" are largely meaningless.

### 3.2 Persistence of top-20 membership

Across the ten years there are 200 top-20 slots. Only **19 distinct companies** ever appeared in the top 20 in two consecutive years, forming 20 consecutive pairs:

- **3 consecutive years:** `JWL` (FY22→FY23→FY24)
- **2 consecutive years (17 more):** `OLECTRA`, `GPIL`, `HSCL`, `PCBL`, `COFORGE`, `IPCALAB`, `ADANIGREEN`, `DIXON`, `CGPOWER`, `KPITTECH`, `SAREGAMA`, `TTML`, `CHENNPETRO`, `RVNL`, `BSE`, `TARIL`, `WOCKPHARMA`, `ACUTAAS`

**Top-20 membership is essentially non-persistent.** Roughly 10% of slots are repeats; there is no meaningful "consistent winner" class. Every top-20 list in Table 7 is dominated by names that appear once.

### 3.3 Prior-year ranking → next-year outcome

Pooled across the ten years, the relationship between a stock's prior-year decile and its next-year return is **U-shaped**, not linear:

| Prior-year decile | n | Mean next-year return | Median next-year | % positive |
|---|---|---|---|---|
| 1 (worst) | 345 | +39.7% | +13.7% | 61.7% |
| 2 | 341 | +30.2% | +9.0% | 57.8% |
| 3 | 340 | +29.1% | +8.4% | 57.6% |
| 4 | 341 | +27.1% | +10.0% | 62.2% |
| 5 | 341 | +27.5% | +9.1% | 57.5% |
| 6 | 338 | +25.9% | +8.7% | 60.7% |
| 7 | 340 | +24.8% | +10.0% | 62.4% |
| 8 | 341 | +36.5% | +7.8% | 57.8% |
| 9 | 340 | +31.2% | +11.7% | 61.2% |
| 10 (best) | 344 | +44.2% | +16.2% | 63.7% |

Both extremes outperform the middle. The *statistical* reading is that the middle is filled with stable-but-unexciting large caps while both tails carry higher volatility (and therefore higher dispersion of outcomes). Note this table is **pooled across a wildly varying market** — the +27% to +44% means are dominated by FY21 and FY24, and are not an expectation for any single year.

---

## 4. Section 2 — Sector performance and rotation

Full sector medians are in **Table 2**; the rank matrix is **Table 3** (Appendix A).

### 4.1 Rotation: leaders rarely repeat

| FY | Leader (median) | Its next-year median | Laggard | Its next-year median |
|---|---|---|---|---|
| FY17 | Metals & Mining +87% | +10% | Information Technology −4% | +42% |
| FY18 | Information Technology +42% | +22% | Healthcare −10% | −0% |
| FY19 | Consumer Services +22% | −35% | Media −22% | +57% |
| FY20 | Chemicals −4% | +94% | Media −61% | +64% |
| FY21 | Metals & Mining +232% | +74% | FMCG +40% | +15% |
| FY22 | Metals & Mining +74% | −13% | Diversified −15% | −13% |
| FY23 | Capital Goods +41% | +105% | Textiles −30% | +44% |
| FY24 | Realty +148% | +4% | Media +12% | −8% |
| FY25 | Diversified +26% | +4% | Telecommunication −14% | −9% |
| FY26 | Metals & Mining +22% | — | Realty −26% | — |

Reading this carefully: the leader *continued* to outperform in FY18→FY19 (IT), FY20→FY21 (Chemicals), FY21→FY22 (Metals), FY23→FY24 (Capital Goods) — 4 cases. It *reversed hard* in FY19→FY20, FY22→FY23, FY24→FY25 — 3 cases. So **sector leadership persists about as often as it reverses**; there is no mechanical "last year's winner" trade. What is more striking is that **laggards also bounced**: IT (FY17 laggard → FY18 leader), Media (FY19 laggard → FY20+FY21 strong), FMCG (FY21 laggard, still positive).

### 4.2 Two genuine multi-year sector trends

Beneath the noise, two themes ran for years rather than one:

- **Metals & Mining** led FY17 (+87%), FY21 (+232%), FY22 (+74%) and FY26 (+22%) — a commodity supercycle pattern tied to crude and global reflation.
- **Capital Goods** was the most-represented *winner cluster* in FY22, FY23, FY24 and FY25 — the domestic capex / PSU / defence / railway theme, which is a genuine multi-year regime, not a one-year rotation.

### 4.3 Concentration

The Herfindahl index of the top 30 by sector ranged **0.096 (FY21) to 0.209 (FY23)** against a 0.05 benchmark for 20 equal sectors — i.e. winners were **2× to 4× more concentrated** than the market's sector structure. Winners clustered into ~10–11 of the 20 sectors, never all 20. Sector selection therefore mattered, but a single-sector bet would still have missed most of the top 30.

---

## 5. Section 3 — Macro correlation

Full macro context is in **Table 4** (Appendix A).

### 5.1 Risk-on vs risk-off: 6 vs 4

| FY | Nifty 500 | Gold (INR) | Silver (INR) | Equity − Gold | Regime |
|---|---|---|---|---|---|
| FY17 | +23.9% | −0.3% | +15.2% | +24.2 pp | **RISK-ON** |
| FY18 | +11.5% | +6.8% | −9.5% | +4.6 pp | RISK-ON |
| FY19 | +8.4% | +4.4% | −1.5% | +4.1 pp | RISK-ON |
| FY20 | −27.6% | +36.3% | +4.7% | −63.9 pp | **RISK-OFF** |
| FY21 | +76.0% | +3.2% | +61.5% | +72.8 pp | **RISK-ON** |
| FY22 | +21.0% | +15.6% | +5.8% | +5.4 pp | RISK-ON |
| FY23 | −2.3% | +15.2% | +7.0% | −17.4 pp | RISK-OFF |
| FY24 | +39.1% | +13.9% | +3.9% | +25.2 pp | **RISK-ON** |
| FY25 | +5.4% | +33.2% | +33.3% | −27.8 pp | RISK-OFF |
| FY26 | −3.8% | +63.0% | +140.7% | −66.8 pp | **RISK-OFF** |

Equities won 6 of 10 years, but note **the four risk-off years are the recent ones (FY23, FY25, FY26) plus COVID (FY20)** — gold's hedge value was concentrated in exactly the periods when it was needed, and FY26 was extreme (silver +140.7%). Conversely **FY17 gold did nothing** and FY18–FY24 gold trailed equities in six of seven years. Gold is a *regime-dependent* hedge, not a steady one.

### 5.2 The rate channel — weaker than the textbook says

Comparing rate-sensitive (Financial Services, Realty, Auto, Construction) against defensives (FMCG, Healthcare, Telecom, Power):

| FY | Repo change | Rate-sensitive − Defensive spread | Consistent with "rates down ⇒ rate-sensitives win"? |
|---|---|---|---|
| FY17 | −50 bp | +22.2 pp | Yes |
| FY18 | −25 bp | +13.7 pp | Yes |
| FY19 | +25 bp | −7.6 pp | Yes |
| FY20 | −185 bp | **−20.6 pp** | **No** |
| FY21 | −40 bp | +32.2 pp | Yes |
| FY22 | 0 bp | −11.2 pp | n/a |
| FY23 | +250 bp | **+13.7 pp** | **No** |
| FY24 | 0 bp | +11.2 pp | n/a |
| FY25 | −25 bp | −7.6 pp | No |
| FY26 | −100 bp | +2.6 pp | Yes |

The rule holds in ~4 clean cases and fails in two spectacular ones. Cross-year correlation between the repo change and Financial Services' return was **+0.17** (positive = financials did better in hiking years). The two failures are instructive and not noise:
- **FY20** — the repo was cut 185bp and rate-sensitives still lost by 20.6pp, because the binding constraint was **asset quality and a credit freeze**, not the cost of funds.
- **FY23** — the repo was hiked 250bp and rate-sensitives *won* by 13.7pp, because banks were in a **credit-growth and NIM-expansion upcycle**.

**Caveat that must be stated plainly: with n=10 years, a correlation must exceed ~0.63 to be significant at 5%. Every rate correlation here (|r| ≤ 0.36) is statistically insignificant.** The two counter-examples are clear individual events; the general "rate channel" is not established by this data. A daily-frequency study is required to test it properly.

### 5.3 Crude and USD/INR — confounded, and only partly usable

Naively correlating sector returns with crude gives a spurious near-universal positive relationship (e.g. Metals & Mining +0.89) purely because FY21 had crude +161% **and** equities +76%. Using **excess return over the Nifty 500** to strip the market factor is more honest:

| Sector | corr with crude (excess) | corr with USD/INR (excess) |
|---|---|---|
| Metals & Mining | **+0.90** | −0.69 |
| Textiles | +0.87 | −0.64 |
| Information Technology | +0.75 | −0.54 |
| **Fast Moving Consumer Goods** | **−0.83** | +0.46 |
| Healthcare | −0.39 | +0.29 |
| Oil Gas & Consumable Fuels | −0.28 | −0.05 |

The **FMCG ↔ crude negative relationship (−0.83, above the significance bar)** is the one result here I would treat as economically real: crude is an input and logistics cost for packaged consumer goods, and FMCG's *relative* performance suffered in the crude-spike years (FY21, FY22, FY26).

The USD/INR results should **not** be over-read. Export-heavy IT and Metals show *negative* excess correlation with a weak rupee, the opposite of the textbook. The cause is confounding: the rupee weakened most in FY20 (+9.0%) and FY26 (+9.8%), both weak-equity years, so "rupee weak" is entangled with "bad equity regime". **At annual frequency with n=10 these exposures cannot be identified.** They are reported for completeness and should be disregarded until tested on daily data.

---

## 6. Section 4 — Early indicator / momentum pattern

This section produced the most important methodological result in the study.

### 6.1 The headline statistic, and why it is misleading

Of the stocks that **finished** the year in the top 30, the share that were already in the top quartile of excess return (vs Nifty 500) in the first N trading days:

| Signal window | Mean recall | Median recall | Mean precision |
|---|---|---|---|
| First 10 days | 47.0% | 48.4% | 14.6% |
| First 20 days | 51.3% | 50.0% | 15.8% |
| First 30 days | 55.3% | 55.0% | 17.1% |
| First 60 days | 60.7% | 63.4% | 18.7% |

Random baselines are **25% recall** and ~8% precision. So "**55% of eventual top performers were already in the top quartile after 30 days**" is the literal answer to the question asked — **but it is partly a tautology.** The target (full-year return) *contains* the signal window. A stock that led for 30 days has mechanically already banked part of the year's excess return.

### 6.2 The clean test: non-overlapping signal and target

Defining the target as the top 30 by **forward** excess return *from day 60 to FY end* (so the target window begins where the signal window ends):

| Signal window | Mean recall | Median recall | Mean precision | Median precision |
|---|---|---|---|---|
| First 10 days | 33.0% | 36.6% | 10.3% | 11.7% |
| First 20 days | 33.7% | 33.3% | 10.5% | 10.6% |
| First 30 days | 34.3% | 31.6% | 10.7% | 10.5% |
| First 60 days | 32.0% | 28.4% | 10.0% | 9.4% |

Against a 25% recall / ~8% precision baseline, early relative strength gives a **real but modest edge of roughly 1.3–1.4×** — not the 2.2× implied by §6.1. Correlation of early excess with *forward* excess:

| Window | corr with full-year return (overlapping) | corr with forward excess (clean) |
|---|---|---|
| day 10 | +0.221 | +0.044 |
| day 20 | +0.301 | +0.069 |
| day 30 | +0.334 | +0.054 |
| day 60 | +0.490 | +0.088 |

The clean correlation is **+0.05 to +0.09 — an R² below 1%.** So the forward-predictive power is small in magnitude, *but it was positive in 6/10 years at day 10, 8/10 at day 20, 6/10 at day 30 and 9/10 at day 60.* **Consistent in sign, weak in size.** Notably the edge is **not** monotonically increasing in window length: 60 days gives the highest correlation but the *lowest* precision, because a longer signal window consumes more of the year.

### 6.3 Technical characteristics of early movers

Measured over the first 30 trading days, eventual top-30 performers vs everyone else:

| Trait (first 30 days) | Winners | Rest | Difference |
|---|---|---|---|
| Volume surge (30d mean vs prior 250d mean) | 1.405× | 1.112× | **+0.29×** |
| Gap-ups (>2% open-to-prior-close) | 2.42 | 1.47 | **+0.95** |
| Down days | 13.94 | 14.89 | −0.95 (≈1 fewer) |
| Worst drawdown in 30d | −11.0% | −11.3% | +0.3pp (no difference) |
| Broke a 52-week high | **34.0%** | **26.2%** | **+7.8pp** |
| Excess return vs index | +14.3% | +1.6% | (by construction) |

Winners showed **higher relative volume, roughly two-thirds more gap-ups, about one fewer down day, and a 52-week-high breakout 7.8pp more often**. The absence of any drawdown difference is informative — early movers were *not* simply names that fell less; they were names being accumulated and gapping up. The 52-week-high and volume-surge findings are directionally consistent with classical breakout/momentum criteria, though at this sample size they are indicative rather than proven.

---

## 7. Section 5 — Common characteristics of winners

### 7.1 Size: winners skew small — with an important caveat

Tercliles of estimated FY-start market cap (estimated as `mcap_2026 × price_at_FY_start / price_2026`, using the same split-adjusted series; assumes no net share issuance).

| FY | Small | Mid | Large |
|---|---|---|---|
| FY17 | 66.7% | 20.0% | 13.3% |
| FY18 | 66.7% | 26.7% | 6.7% |
| FY19 | 33.3% | 33.3% | 33.3% |
| FY20 | 33.3% | 40.0% | 26.7% |
| FY21 | 66.7% | 20.0% | 13.3% |
| FY22 | 80.0% | 13.3% | 6.7% |
| FY23 | 80.0% | 13.3% | 6.7% |
| FY24 | 76.7% | 16.7% | 6.7% |
| FY25 | 70.0% | 30.0% | 0.0% |
| FY26 | 56.7% | 33.3% | 10.0% |
| **Average** | **63.0%** | **24.7%** | **12.3%** |

Small caps were ~1.9× over-represented among winners in 9 of 10 years (FY19 the exception). Large caps never exceeded 26.7% and hit **0.0% in FY25**.

> **Essential caveat — this is largely an order-statistic artefact, not a free edge.** Small caps have higher return volatility, so in *any* ranking of extreme outcomes they are over-represented by construction. The companion result is decisive: winners' mean annualised volatility was **47.7% vs 36.9%** for the rest. The correct reading is "**winners are the high-dispersion names, and small caps are where high dispersion lives**" — the same property that makes small-cap winners common makes small-cap disasters common. The bottom-20 lists carry the same small-cap skew. **This is a statement about volatility, not an exploitable size premium**, especially after the liquidity and impact costs of trading small caps. (The single exception, FY20, is instructive: in the COVID crash year winners were *less* volatile than the rest — 41.6% vs 46.7% — i.e. defensives won.)

### 7.2 Momentum vs mean reversion — the explicit test

| Transition | Prior BEST quartile next-year return | Prior WORST quartile next-year return | Prior best stays in top quartile | Prior worst jumps to top quartile |
|---|---|---|---|---|
| FY17→FY18 | +34.3% | +15.1% | 35.4% | 25.3% |
| FY18→FY19 | −1.0% | −2.7% | 26.8% | 23.2% |
| FY19→FY20 | −17.3% | −47.7% | 44.8% | 13.6% |
| **FY20→FY21** | **+98.0%** | **+213.5%** | **14.3%** | **45.1%** |
| FY21→FY22 | +78.0% | +17.2% | 42.1% | 12.6% |
| FY22→FY23 | +5.6% | +14.2% | 25.5% | 25.5% |
| FY23→FY24 | +125.0% | +72.4% | 38.5% | 22.1% |
| FY24→FY25 | +12.2% | +18.7% | 24.3% | 24.1% |
| FY25→FY26 | −5.1% | +4.1% | 18.8% | 30.4% |

**Verdict: momentum, narrowly.**
- Momentum rate (prior best stays top quartile) averaged **30.1%** vs a 25% baseline.
- Reversion rate (prior worst jumps to top quartile) averaged **24.7%** — *at* the baseline, i.e. no reversion edge on average.
- Momentum exceeded reversion in **6 of 9** transitions; reversion exceeded momentum in 2 (one tie).
- Mean next-year return: prior-year best **36.6%** vs prior-year worst **33.9%** — a small edge.

**But the two hypotheses are regime-dependent, not competing constants:**
- **FY19→FY20** is the strongest *momentum* signal (44.8% of prior winners persisted) and the prior-year worst quartile collapsed −47.7% — momentum was really about *avoiding losers* going into the crash.
- **FY20→FY21** is the strongest *reversion* signal in the data (45.1% of prior losers jumped to the top quartile; losers +213.5% vs winners +98.0%). This is the classic post-crash recovery: the names most oversold in March 2020 rebounded hardest.
- FY22→FY23 and FY24→FY25 were near coin-flips.

The practical synthesis: **momentum is the better default, but after a market-wide crash, expect violent mean reversion.** Both regimes appeared inside this single 10-year window.

---

## 8. Section 6 — Required summary tables

See **Appendix A** for Table 1 (year-by-year summary with top sector / top 5 stocks / index / gold / silver / 10Y change), Table 2 (sector medians), Table 3 (sector rank rotation), Table 4 (macro regime), Table 5 (early-mover statistics), Table 6 (winner characteristics) and Table 7 (full top-20 / bottom-20 by year).

---

## 9. Synthesis — general rules, with honest confidence

| # | Pattern | Evidence | Confidence |
|---|---|---|---|
| 1 | **Breadth diverges from the index, and the gap defines the regime.** Narrow years: index beats median stock badly (FY19 +8.4% vs −4.6%, only 30.2% of stocks beat the index; FY26 −3.8% vs −5.9%). Broad years: median crushes index (FY21 +95.1% vs +76.0%; FY24 +64.0% vs +39.1%, 66.7% beat). | 10/10 years directionally consistent | **High** |
| 2 | **Winners are high-dispersion names concentrated in small caps and clustered in few sectors.** 63% small-cap vs a 33% universe; 47.7% vol vs 36.9%; HHI 2–4× the market's sector concentration; Capital Goods the top cluster in 5/10 years. | 9–10/10 years on size; consistent on concentration | **High (direction)** — but see §7.1: mostly an artefact of volatility, not a tradable edge once costs are included |
| 3 | **Early relative strength predicts the rest of the year, weakly but consistently.** Clean forward correlation +0.05…+0.09 (R²&lt;1%), positive in 6–9 of 10 years; forward recall ~33% vs a 25% baseline; early movers show volume surges, more gap-ups and 52-week-high breakouts. | Sign consistent in 6–9/10 years; magnitude small | **Medium-high on existence; high that the naive 55% figure is inflated** |
| 4 | **Top performers do not persist year to year, and momentum beats mean reversion only narrowly.** Only 19 names ever made the top 20 in consecutive years; momentum rate 30.1% vs a 25% baseline, reversion 24.7%. | 20 consecutive pairs across 200 slots; 6/9 transitions favour momentum | **Medium** |
| 5 | **The policy-rate channel is dominated by the credit cycle, not the repo rate.** Corr(repo change, Financial Services return) = **+0.17**; FY20 (cuts but rate-sensitives −20.6pp) and FY23 (hikes but rate-sensitives +13.7pp) both contradict the textbook. | 4 consistent vs 2 clear counter-examples; n=10 correlations all insignificant | **Medium** — treat the narrative as unreliable, the counter-examples as solid |
| 6 | **Gold is a regime-dependent hedge, not a steady one.** Nothing in FY17 (−0.3%), trailed equities for six of seven years FY18–FY24, then dominated in FY20, FY25 and FY26 (silver +140.7% in FY26). | 10 years, clearly regime-clustered | **Medium-high** |

### Explicit caveats

1. **Survivorship bias — the largest single distortion.** The universe is the 2026 Nifty 500. Dropped, demerged and delisted companies are absent, so every absolute return here is biased upward. FY17–FY20 rankings use only ~316–362 of 500 names because later entrants had not listed. Relative comparisons are more robust than absolute ones, but all are measured on survivors.
2. **Ten observations per year-over-year statistic.** Any statistic that uses one value per FY (all the macro correlations) has n=10. Correlations need |r| > ~0.63 for significance; **every rate correlation in this study is below that and is statistically indistinguishable from zero.** These should be read as hypotheses, not findings.
3. **Price returns only, no dividends** (§2.4). Understates total return, most for high-payout Power/FMCG/PSU sectors.
4. **Overlapping windows inflate naive early-mover statistics.** §6.1 vs §6.2 is the concrete demonstration; always separate signal from target.
5. **Regime changes are inside the sample, not outside it.** COVID (FY20–FY21), the 2022–23 rate-hike cycle, the 2019 NBFC crisis, the Adani episode (Feb 2023), and the 2024 election-result PSU drawdown are all in-sample. Ten years contains at most ~2 full cycles, and **FY21 alone contributes a disproportionate share of every pooled average** (mean stock +139.9%). Pooled statistics here are heavily influenced by one or two years.
6. **Single-country, single-asset-class, largely one market regime.** No cross-market validation; Indian equities were in a structural uptrend for most of the window, which flatters every long-side statistic.
7. **Corporate-action residuals.** Nine stub removals, one bonus repair and three demerger exclusions are documented and auditable, but eight ambiguous 30–45% drops were deliberately left unmodified. Untested corporate actions of small magnitude may remain.
8. **Distinguishing skill from luck is impossible here.** With ~20 top names per year and 10 years, a rule that "works" in 6 years can easily be noise. Nothing in this report should be treated as a validated trading strategy; the momentum and early-mover edges in particular are small enough to be consumed by transaction costs.

---

## 10. Appendix A — Generated tables

## Table 1 - Year-by-year summary (all FYs are Indian financial years, Apr-Mar)

| FY | Nifty 500 | Median stock | Top sector (median, n) | Top 5 stocks (% return) | Gold INR | Silver INR | 10Y yld chg | Repo chg |
|---|---|---|---|---|---|---|---|---|
| **FY17** | +23.9% | +35.0% | Metals & Mining (+87%, n=15) | OLECTRA 352%, JSL 325%, ESCORTS 287%, VEDL 273%, PCBL 246% | -0.3% | +15.2% | -32 bp | -50 bp |
| **FY18** | +11.5% | +10.1% | Information Technology (+42%, n=17) | HEG 1330%, GRAPHITE 548%, GPIL 265%, HSCL 234%, PCBL 229% | +6.8% | -9.5% | +44 bp | -25 bp |
| **FY19** | +8.4% | -4.6% | Consumer Services (+22%, n=8) | USHAMART 121%, ADANIPOWER 103%, CGCL 98%, BATAINDIA 92%, BALRAMCHIN 81% | +4.4% | -1.5% | -13 bp | +25 bp |
| **FY20** | -27.6% | -36.9% | Chemicals (-4%, n=18) | ADANIGREEN 312%, ABBOTINDIA 112%, NAVINFLUOR 73%, BERGEPAINT 54%, DIXON 52% | +36.3% | +4.7% | -72 bp | -185 bp |
| **FY21** | +76.0% | +95.1% | Metals & Mining (+232%, n=15) | PGEL 1407%, INTELLECT 1260%, CGPOWER 1225%, ATGL 1013%, SAREGAMA 717% | +3.2% | +61.5% | -41 bp | -40 bp |
| **FY22** | +21.0% | +23.1% | Metals & Mining (+74%, n=15) | TTML 1082%, ANGELONE 428%, BSE 395%, FLUOROCHEM 377%, USHAMART 307% | +15.6% | +5.8% | +54 bp | +0 bp |
| **FY23** | -2.3% | +1.6% | Capital Goods (+41%, n=52) | APARINDS 286%, KIRLOSENG 200%, BLS 182%, MAZDOCK 177%, ELECON 166% | +15.2% | +7.0% | +25 bp | +250 bp |
| **FY24** | +39.1% | +64.0% | Realty (+148%, n=10) | GVT&D 611%, TARIL 595%, BSE 484%, INOXWIND 458%, IRFC 435% | +13.9% | +3.9% | -11 bp | +0 bp |
| **FY25** | +5.4% | +5.5% | Healthcare (+24%, n=43) | PGEL 452%, MAZDOCK 184%, TARIL 171%, CARTRADE 158%, SARDAEN 153% | +33.2% | +33.3% | -47 bp | -25 bp |
| **FY26** | -3.8% | -5.9% | Metals & Mining (+22%, n=17) | PFOCUS 263%, GVT&D 134%, MCX 125%, NATIONALUM 120%, FORCEMOT 114% | +63.0% | +140.7% | +38 bp | -100 bp |

Repo rate at FY end: FY17 6.25%, FY18 6.00%, FY19 6.25%, FY20 4.40%, FY21 4.00%, FY22 4.00%, FY23 6.50%, FY24 6.50%, FY25 6.25%, FY26 5.25%

## Table 2 - Sector median return by FY (broad industry, n>=3)

| Sector | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 | FY25 | FY26 |
|---|---|---|---|---|---|---|---|---|---|---|
| Automobile and Auto Components | +33% | +24% | -20% | -40% | +99% | +8% | +18% | +57% | +7% | +11% |
| Capital Goods | +48% | +10% | -18% | -54% | +95% | +45% | +41% | +105% | +2% | +3% |
| Chemicals | +58% | +26% | +2% | -4% | +94% | +45% | -1% | +27% | +11% | -10% |
| Construction | +47% | +18% | -20% | -49% | +106% | -9% | +36% | +131% | -8% | -8% |
| Construction Materials | +37% | -0% | +1% | -30% | +98% | -3% | +4% | +21% | +12% | -4% |
| Consumer Durables | +40% | +9% | +1% | -10% | +96% | +10% | -10% | +25% | +9% | -20% |
| Consumer Services | +10% | +31% | +22% | -35% | +62% | +68% | -16% | +62% | +11% | -23% |
| Diversified | +42% | +44% | -2% | -47% | +93% | -15% | -13% | +36% | +26% | +4% |
| Fast Moving Consumer Goods | +21% | +26% | +14% | -20% | +40% | +15% | +3% | +29% | +14% | -9% |
| Financial Services | +44% | +3% | -4% | -45% | +87% | +3% | +6% | +58% | +6% | -0% |
| Healthcare | +8% | -10% | -0% | -11% | +67% | +13% | -11% | +64% | +24% | -0% |
| Information Technology | -4% | +42% | +22% | -31% | +182% | +48% | -23% | +59% | -8% | -24% |
| Media Entertainment & Publication | +63% | +7% | -22% | -61% | +64% | +57% | -20% | +12% | -8% | -13% |
| Metals & Mining | +87% | +10% | -18% | -53% | +232% | +74% | -13% | +79% | +7% | +22% |
| Oil Gas & Consumable Fuels | +53% | -1% | -10% | -39% | +46% | +16% | +8% | +82% | -5% | +0% |
| Power | +31% | -2% | -9% | -38% | +103% | +73% | +4% | +123% | +2% | +1% |
| Realty | +30% | +35% | +2% | -33% | +109% | +62% | -14% | +148% | +4% | -26% |
| Services | +20% | +4% | -5% | -34% | +178% | +12% | -10% | +85% | -7% | -9% |
| Telecommunication | -0% | +3% | -16% | -54% | +188% | +16% | -6% | +64% | -14% | -9% |
| Textiles | +59% | -7% | +3% | -41% | +215% | +68% | -30% | +44% | -2% | -8% |

## Table 3 - Sector rank by median return (1 = best)

| Sector | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 | FY25 | FY26 |
|---|---|---|---|---|---|---|---|---|---|---|
| Automobile and Auto Components | 12 | 7 | 18 | 12 | 9 | 16 | 3 | 13 | 9 | 2 |
| Capital Goods | 6 | 10 | 16 | 19 | 12 | 9 | 1 | 4 | 12 | 4 |
| Chemicals | 4 | 5 | 6 | 1 | 13 | 8 | 9 | 17 | 5 | 15 |
| Construction | 7 | 8 | 19 | 16 | 7 | 19 | 2 | 2 | 19 | 10 |
| Construction Materials | 11 | 16 | 7 | 5 | 10 | 18 | 6 | 19 | 4 | 9 |
| Consumer Durables | 10 | 11 | 8 | 2 | 11 | 15 | 12 | 18 | 7 | 17 |
| Consumer Services | 17 | 4 | 1 | 9 | 18 | 3 | 17 | 10 | 6 | 18 |
| Diversified | 9 | 1 | 10 | 15 | 14 | 20 | 14 | 15 | 1 | 3 |
| Fast Moving Consumer Goods | 15 | 6 | 3 | 4 | 20 | 12 | 8 | 16 | 3 | 13 |
| Financial Services | 8 | 15 | 11 | 14 | 15 | 17 | 5 | 12 | 10 | 8 |
| Healthcare | 18 | 20 | 9 | 3 | 16 | 13 | 13 | 9 | 2 | 7 |
| Information Technology | 20 | 2 | 2 | 6 | 4 | 7 | 19 | 11 | 17 | 19 |
| Media Entertainment & Publication | 2 | 12 | 20 | 20 | 17 | 6 | 18 | 20 | 18 | 16 |
| Metals & Mining | 1 | 9 | 17 | 17 | 1 | 1 | 15 | 7 | 8 | 1 |
| Oil Gas & Consumable Fuels | 5 | 17 | 14 | 11 | 19 | 10 | 4 | 6 | 15 | 6 |
| Power | 13 | 18 | 13 | 10 | 8 | 2 | 7 | 3 | 13 | 5 |
| Realty | 14 | 3 | 5 | 7 | 6 | 5 | 16 | 1 | 11 | 20 |
| Services | 16 | 13 | 12 | 8 | 5 | 14 | 11 | 5 | 16 | 12 |
| Telecommunication | 19 | 14 | 15 | 18 | 3 | 11 | 10 | 8 | 20 | 14 |
| Textiles | 3 | 19 | 4 | 13 | 2 | 4 | 20 | 14 | 14 | 11 |

## Table 4 - Macro regime and risk-on / risk-off

| FY | Nifty 500 | Gold | Silver | Equity-Gold | Regime | Repo path | 10Y chg |
|---|---|---|---|---|---|---|---|
| FY17 | +23.9% | -0.3% | +15.2% | +24.2 pp | RISK-ON | -50 bp | -32 bp |
| FY18 | +11.5% | +6.8% | -9.5% | +4.6 pp | RISK-ON | -25 bp | +44 bp |
| FY19 | +8.4% | +4.4% | -1.5% | +4.1 pp | RISK-ON | +25 bp | -13 bp |
| FY20 | -27.6% | +36.3% | +4.7% | -63.9 pp | RISK-OFF | -185 bp | -72 bp |
| FY21 | +76.0% | +3.2% | +61.5% | +72.8 pp | RISK-ON | -40 bp | -41 bp |
| FY22 | +21.0% | +15.6% | +5.8% | +5.4 pp | RISK-ON | +0 bp | +54 bp |
| FY23 | -2.3% | +15.2% | +7.0% | -17.4 pp | RISK-OFF | +250 bp | +25 bp |
| FY24 | +39.1% | +13.9% | +3.9% | +25.2 pp | RISK-ON | +0 bp | -11 bp |
| FY25 | +5.4% | +33.2% | +33.3% | -27.8 pp | RISK-OFF | -25 bp | -47 bp |
| FY26 | -3.8% | +63.0% | +140.7% | -66.8 pp | RISK-OFF | -100 bp | +38 bp |

## Table 5 - Early-mover signal accuracy

### 5a. Against the FULL-year outcome (partly mechanical - the year contains the signal window)

| Signal window | Mean recall | Median recall | Mean precision | Median precision |
|---|---|---|---|---|
| first 10 trading days | 47.0% | 48.4% | 14.6% | 14.8% |
| first 20 trading days | 51.3% | 50.0% | 15.8% | 16.2% |
| first 30 trading days | 55.3% | 55.0% | 17.1% | 17.2% |
| first 60 trading days | 60.7% | 63.4% | 18.7% | 19.8% |

Random baselines: recall 25%, precision ~7-8% (30 / universe size).

### 5b. Against a NON-OVERLAPPING forward target (signal: first N days; target: top 30 by return from day 60 to FY end)

| Signal window | Mean recall | Median recall | Mean precision | Median precision |
|---|---|---|---|---|
| first 10 trading days | 33.0% | 36.6% | 10.3% | 11.7% |
| first 20 trading days | 33.7% | 33.3% | 10.5% | 10.6% |
| first 30 trading days | 34.3% | 31.6% | 10.7% | 10.5% |
| first 60 trading days | 32.0% | 28.4% | 10.0% | 9.4% |

### 5c. Correlation of early excess return with subsequent performance

| Window | corr vs full-year return (overlapping) | corr vs forward excess (clean) |
|---|---|---|
| day 10 | +0.221 | +0.044 |
| day 20 | +0.301 | +0.069 |
| day 30 | +0.334 | +0.054 |
| day 60 | +0.490 | +0.088 |

### 5d. Technical traits in the first 30 days, eventual top-30 vs rest

| Trait | Winners | Rest | Difference |
|---|---|---|---|
| Volume surge (30d mean / prior 250d mean) | +1.405 | +1.112 | +0.293 |
| Gap-ups (>2% open-to-prior-close) | +2.420 | +1.470 | +0.950 |
| Down days in first 30d | 13.94 | 14.89 | -0.95 |
| Worst drawdown in first 30d | -0.110 | -0.113 | +0.003 |
| Broke a 52-week high | 34.0% | 26.2% | 7.8% |
| Excess return vs index (by construction) | +0.143 | +0.016 | +0.127 |

## Table 6 - Winner characteristics

### 6a. Sector concentration of the top 30

| FY | Most-represented sector | Names | Share | HHI | Sectors represented |
|---|---|---|---|---|---|
| FY17 | Financial Services | 7 | 23.3% | 0.129 | 11 |
| FY18 | Capital Goods | 6 | 20.0% | 0.102 | 15 |
| FY19 | Financial Services | 7 | 23.3% | 0.131 | 11 |
| FY20 | Healthcare | 8 | 26.7% | 0.144 | 11 |
| FY21 | Information Technology | 4 | 13.3% | 0.096 | 13 |
| FY22 | Capital Goods | 6 | 20.0% | 0.113 | 11 |
| FY23 | Capital Goods | 12 | 40.0% | 0.204 | 11 |
| FY24 | Capital Goods | 11 | 36.7% | 0.209 | 11 |
| FY25 | Capital Goods | 7 | 23.3% | 0.133 | 10 |
| FY26 | Financial Services | 9 | 30.0% | 0.187 | 11 |

### 6b. Market-cap band of the top 30 vs the universe (terciles of estimated FY-start mcap)

| FY | Small | Mid | Large |  Universe |
|---|---|---|---|---|
| FY17 | 66.7% | 20.0% | 13.3% | 33/33/33 |
| FY18 | 66.7% | 26.7% | 6.7% | 33/33/33 |
| FY19 | 33.3% | 33.3% | 33.3% | 33/33/33 |
| FY20 | 33.3% | 40.0% | 26.7% | 33/33/33 |
| FY21 | 66.7% | 20.0% | 13.3% | 33/33/33 |
| FY22 | 80.0% | 13.3% | 6.7% | 33/33/33 |
| FY23 | 80.0% | 13.3% | 6.7% | 33/33/33 |
| FY24 | 76.7% | 16.7% | 6.7% | 33/33/33 |
| FY25 | 70.0% | 30.0% | 0.0% | 33/33/33 |
| FY26 | 56.7% | 33.3% | 10.0% | 33/33/33 |
| **Average** | **63.0%** | **24.7%** | **12.3%** | 33/33/33 |

### 6c. Momentum vs mean reversion, head to head

| Transition | Prior BEST quartile avg next-year return | Prior WORST quartile avg next-year return | Prior best stays in top quartile | Prior worst jumps to top quartile |
|---|---|---|---|---|
| FY17>FY18 | +34.3% | +15.1% | 35.4% | 25.3% |
| FY18>FY19 | -1.0% | -2.7% | 26.8% | 23.2% |
| FY19>FY20 | -17.3% | -47.7% | 44.8% | 13.6% |
| FY20>FY21 | +98.0% | +213.5% | 14.3% | 45.1% |
| FY21>FY22 | +78.0% | +17.2% | 42.1% | 12.6% |
| FY22>FY23 | +5.6% | +14.2% | 25.5% | 25.5% |
| FY23>FY24 | +125.0% | +72.4% | 38.5% | 22.1% |
| FY24>FY25 | +12.2% | +18.7% | 24.3% | 24.1% |
| FY25>FY26 | -5.1% | +4.1% | 18.8% | 30.4% |

Random baseline for both 'stays' and 'jumps' columns: 25%.

## Table 7 - Top 20 and Bottom 20 by FY

### FY17  (n=316 eligible, median +35.0%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | OLECTRA | +352.3% | INTELLECT | -49.1% |
| 2 | JSL | +325.1% | DIVISLAB | -36.8% |
| 3 | ESCORTS | +286.9% | INOXWIND | -34.3% |
| 4 | VEDL | +273.0% | GLAXO | -28.1% |
| 5 | PCBL | +245.5% | WOCKPHARMA | -26.1% |
| 6 | ITI | +195.6% | GVT&D | -25.1% |
| 7 | LTFOODS | +191.2% | ASHOKLEY | -23.2% |
| 8 | MANAPPURAM | +180.4% | TATAELXSI | -22.2% |
| 9 | HSCL | +177.8% | JWL | -22.2% |
| 10 | INDIANB | +167.8% | IDEA | -22.1% |
| 11 | MOTILALOFS | +165.9% | PERSISTENT | -21.8% |
| 12 | SARDAEN | +158.5% | HFCL | -21.3% |
| 13 | BAJAJFINSV | +139.5% | WELCORP | -16.3% |
| 14 | SWANCORP | +134.6% | INFY | -16.1% |
| 15 | BIOCON | +134.3% | SUNPHARMA | -16.1% |
| 16 | JMFINANCIL | +132.9% | INDUSTOWER | -14.7% |
| 17 | BBTC | +132.6% | BLUEDART | -14.0% |
| 18 | IOC | +125.3% | SAREGAMA | -13.4% |
| 19 | GPIL | +122.6% | DRREDDY | -13.3% |
| 20 | HINDPETRO | +122.2% | JUBLFOOD | -13.3% |

### FY18  (n=328 eligible, median +10.1%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | HEG | +1329.9% | MAHABANK | -59.6% |
| 2 | GRAPHITE | +547.7% | NEULANDLAB | -52.5% |
| 3 | GPIL | +265.3% | LUPIN | -49.1% |
| 4 | HSCL | +234.1% | BALRAMCHIN | -48.0% |
| 5 | PCBL | +228.9% | MCX | -44.8% |
| 6 | GRAVITA | +205.9% | SUZLON | -44.2% |
| 7 | ADANIENSOL | +201.9% | PFC | -41.3% |
| 8 | SAREGAMA | +180.6% | UNIONBANK | -40.6% |
| 9 | ACE | +180.6% | ADANIPOWER | -40.6% |
| 10 | OLECTRA | +142.2% | UCOBANK | -40.2% |
| 11 | RADICO | +141.1% | GLENMARK | -38.2% |
| 12 | UNOMINDA | +140.0% | PNB | -36.4% |
| 13 | KEI | +110.7% | INOXWIND | -36.4% |
| 14 | JUBLFOOD | +110.0% | IOB | -34.5% |
| 15 | DMART | +107.7% | IFCI | -34.1% |
| 16 | TITAN | +103.6% | TARIL | -34.0% |
| 17 | HFCL | +102.7% | WELSPUNLIV | -33.8% |
| 18 | COFORGE | +98.9% | BLS | -32.2% |
| 19 | CHAMBLFERT | +89.8% | TRIDENT | -31.8% |
| 20 | MINDACORP | +89.0% | FORTIS | -31.7% |

### FY19  (n=351 eligible, median -4.6%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | USHAMART | +121.3% | PGEL | -74.2% |
| 2 | ADANIPOWER | +103.2% | RPOWER | -68.6% |
| 3 | CGCL | +97.8% | JPPOWER | -61.1% |
| 4 | BATAINDIA | +92.5% | IDEA | -60.2% |
| 5 | BALRAMCHIN | +81.2% | DEEPAKFERT | -54.4% |
| 6 | TIINDIA | +72.3% | LTFOODS | -53.9% |
| 7 | BAJFINANCE | +70.9% | TEJASNET | -53.5% |
| 8 | HAVELLS | +58.3% | TARIL | -50.7% |
| 9 | NAUKRI | +56.8% | CENTRALBK | -50.7% |
| 10 | DIVISLAB | +56.2% | JSL | -48.3% |
| 11 | TORNTPHARM | +56.0% | GRAVITA | -47.9% |
| 12 | RELIANCE | +54.4% | NIACL | -46.8% |
| 13 | COFORGE | +53.2% | TMPV | -46.7% |
| 14 | AXISBANK | +52.3% | GPIL | -46.4% |
| 15 | PFIZER | +52.2% | KIRLOSENG | -46.0% |
| 16 | MUTHOOTFIN | +51.1% | TTML | -45.0% |
| 17 | RHIM | +49.8% | CGPOWER | -45.0% |
| 18 | IPCALAB | +49.8% | JKTYRE | -43.6% |
| 19 | UBL | +47.2% | SUZLON | -42.3% |
| 20 | ABFRL | +46.1% | HBLENGINE | -42.0% |

### FY20  (n=362 eligible, median -36.9%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | ADANIGREEN | +312.5% | YESBANK | -91.8% |
| 2 | ABBOTINDIA | +111.5% | RPOWER | -89.0% |
| 3 | NAVINFLUOR | +72.6% | SAMMAANCAP | -88.7% |
| 4 | BERGEPAINT | +53.8% | CGPOWER | -88.2% |
| 5 | DIXON | +52.3% | POONAWALLA | -85.6% |
| 6 | AMBER | +50.7% | INDIANB | -84.6% |
| 7 | NESTLEIND | +48.7% | NCC | -83.4% |
| 8 | DMART | +48.7% | IDEA | -83.0% |
| 9 | TATACONSUM | +44.6% | PNBHOUSING | -81.2% |
| 10 | IPCALAB | +41.8% | TEJASNET | -81.2% |
| 11 | DEEPAKNTR | +40.5% | INDUSINDBK | -80.3% |
| 12 | MCX | +39.8% | RBLBANK | -80.1% |
| 13 | GRSE | +38.5% | OLECTRA | -79.9% |
| 14 | HDFCAMC | +37.7% | CHENNPETRO | -77.9% |
| 15 | HINDUNILVR | +34.7% | CEMPRO | -77.4% |
| 16 | LALPATHLAB | +34.2% | HEG | -76.9% |
| 17 | TRENT | +33.8% | J&KBANK | -76.8% |
| 18 | ALKEM | +32.8% | IIFL | -75.9% |
| 19 | BHARTIARTL | +32.4% | NBCC | -75.4% |
| 20 | AJANTPHARM | +32.0% | BLS | -74.7% |

### FY21  (n=378 eligible, median +95.1%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | PGEL | +1407.4% | YESBANK | -30.5% |
| 2 | INTELLECT | +1260.3% | CHALET | -28.7% |
| 3 | CGPOWER | +1224.8% | COALINDIA | -6.9% |
| 4 | ATGL | +1013.2% | ABBOTINDIA | -3.0% |
| 5 | SAREGAMA | +716.9% | GODFRYPHLP | -2.9% |
| 6 | TTML | +683.3% | RITES | -2.2% |
| 7 | ADANIENT | +649.4% | JSWDULUX | +3.8% |
| 8 | NEULANDLAB | +638.4% | NESTLEIND | +5.3% |
| 9 | ADANIGREEN | +620.9% | PVRINOX | +5.5% |
| 10 | GPIL | +584.8% | HINDUNILVR | +5.8% |
| 11 | POONAWALLA | +547.6% | ZFCVINDIA | +7.2% |
| 12 | APLAPOLLO | +461.9% | GILLETTE | +7.9% |
| 13 | HINDCOPPER | +461.5% | PFIZER | +12.5% |
| 14 | LAURUSLABS | +457.4% | PETRONET | +12.5% |
| 15 | AFFLE | +442.8% | PNB | +13.3% |
| 16 | JPPOWER | +441.7% | BATAINDIA | +14.2% |
| 17 | DIXON | +412.9% | GLAXO | +14.6% |
| 18 | KPITTECH | +403.7% | UNITDSPR | +14.8% |
| 19 | TEJASNET | +398.3% | NLCINDIA | +14.8% |
| 20 | COHANCE | +394.3% | IRCON | +15.9% |

### FY22  (n=391 eligible, median +23.1%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | TTML | +1082.3% | NEULANDLAB | -50.7% |
| 2 | ANGELONE | +428.2% | INDIAMART | -44.1% |
| 3 | BSE | +395.3% | JUBLPHARMA | -43.0% |
| 4 | FLUOROCHEM | +376.8% | GICRE | -42.9% |
| 5 | USHAMART | +307.0% | CEATLTD | -40.1% |
| 6 | TRIDENT | +279.9% | RBLBANK | -37.3% |
| 7 | GRAVITA | +251.1% | ARE&M | -37.2% |
| 8 | JSWENERGY | +244.0% | 3MINDIA | -35.3% |
| 9 | GMDCLTD | +243.4% | RAILTEL | -33.7% |
| 10 | KPITTECH | +238.5% | MGL | -33.4% |
| 11 | TATAELXSI | +228.3% | BANKINDIA | -32.4% |
| 12 | HFCL | +212.9% | AEGISLOG | -31.2% |
| 13 | RPOWER | +210.3% | WOCKPHARMA | -30.9% |
| 14 | OLECTRA | +208.1% | WHIRLPOOL | -29.4% |
| 15 | SAREGAMA | +202.7% | IDFCFIRSTB | -28.7% |
| 16 | JSL | +199.6% | NIACL | -27.7% |
| 17 | KPRMILL | +191.9% | IGL | -27.2% |
| 18 | JWL | +185.3% | LUPIN | -26.8% |
| 19 | CGPOWER | +183.2% | HDFCAMC | -26.5% |
| 20 | RHIM | +171.7% | NCC | -25.9% |

### FY23  (n=415 eligible, median +1.6%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | APARINDS | +285.8% | TTML | -66.7% |
| 2 | KIRLOSENG | +200.2% | GLAND | -61.2% |
| 3 | BLS | +181.8% | ATGL | -59.6% |
| 4 | MAZDOCK | +176.6% | ADANIENSOL | -58.1% |
| 5 | ELECON | +165.8% | INTELLECT | -56.6% |
| 6 | TITAGARH | +158.9% | NYKAA | -55.9% |
| 7 | KARURVYSYA | +125.4% | BSE | -54.4% |
| 8 | VBL | +121.0% | ADANIGREEN | -54.0% |
| 9 | FINCABLES | +115.2% | LAURUSLABS | -50.4% |
| 10 | JWL | +111.2% | AMBER | -48.2% |
| 11 | RVNL | +109.8% | GRAPHITE | -47.8% |
| 12 | UCOBANK | +105.1% | TRIDENT | -47.6% |
| 13 | CIEINDIA | +104.1% | MPHASIS | -47.6% |
| 14 | GRSE | +100.9% | AARTIIND | -45.8% |
| 15 | DATAPATTNS | +95.7% | IEX | -43.1% |
| 16 | INDIANB | +87.5% | BSOFT | -42.6% |
| 17 | GESHIP | +86.6% | ABSLAMC | -41.7% |
| 18 | CHENNPETRO | +86.1% | WOCKPHARMA | -41.6% |
| 19 | ANANTRAJ | +85.4% | IDEA | -39.9% |
| 20 | AEGISLOG | +84.4% | NAM-INDIA | -39.6% |

### FY24  (n=429 eligible, median +64.0%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | GVT&D | +611.3% | PAYTM | -36.8% |
| 2 | TARIL | +595.3% | UPL | -36.5% |
| 3 | BSE | +484.3% | ZEEL | -34.7% |
| 4 | INOXWIND | +458.4% | IIFL | -30.3% |
| 5 | IRFC | +435.2% | NAVINFLUOR | -27.1% |
| 6 | SUZLON | +411.4% | AWL | -20.8% |
| 7 | HBLENGINE | +376.6% | SUMICHEM | -18.4% |
| 8 | SCHNEIDER | +375.9% | AAVAS | -18.3% |
| 9 | ANANDRATHI | +357.5% | ATUL | -17.5% |
| 10 | HUDCO | +332.9% | PVRINOX | -13.5% |
| 11 | MRPL | +315.9% | RHIM | -12.3% |
| 12 | KALYANKJIL | +306.1% | HINDUNILVR | -11.6% |
| 13 | JWL | +305.8% | NUVOCO | -11.2% |
| 14 | IFCI | +304.6% | HDFCBANK | -10.0% |
| 15 | IRCON | +292.2% | PAGEIND | -9.1% |
| 16 | RECLTD | +290.6% | CROMPTON | -8.7% |
| 17 | CHENNPETRO | +281.8% | BALRAMCHIN | -8.5% |
| 18 | WOCKPHARMA | +280.6% | DEEPAKFERT | -8.1% |
| 19 | RVNL | +268.7% | BANDHANBNK | -8.0% |
| 20 | COCHINSHIP | +266.5% | SBICARD | -7.8% |

### FY25  (n=447 eligible, median +5.5%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | PGEL | +451.5% | INDUSINDBK | -58.2% |
| 2 | MAZDOCK | +183.7% | SONATSOFTW | -52.1% |
| 3 | TARIL | +171.1% | IDEA | -48.7% |
| 4 | CARTRADE | +157.8% | ADANIGREEN | -48.3% |
| 5 | SARDAEN | +153.3% | BSOFT | -47.7% |
| 6 | WOCKPHARMA | +143.2% | DELHIVERY | -42.7% |
| 7 | BLUEJET | +131.1% | HONASA | -42.4% |
| 8 | ACUTAAS | +123.2% | AARTIIND | -41.3% |
| 9 | DEEPAKFERT | +121.4% | NSLNISP | -39.0% |
| 10 | GRSE | +120.4% | MRPL | -38.5% |
| 11 | GODFRYPHLP | +119.0% | RRKABEL | -38.4% |
| 12 | BSE | +117.8% | OLECTRA | -38.2% |
| 13 | LLOYDSME | +113.8% | INTELLECT | -36.8% |
| 14 | NAVA | +113.7% | CYIENT | -36.6% |
| 15 | PTCIL | +103.8% | SAMMAANCAP | -36.4% |
| 16 | LTFOODS | +103.0% | SWANCORP | -35.8% |
| 17 | GALLANTT | +98.6% | JKTYRE | -35.8% |
| 18 | AMBER | +97.1% | JIOFIN | -35.7% |
| 19 | PAYTM | +94.6% | ASTRAL | -35.0% |
| 20 | NEULANDLAB | +90.9% | IOB | -35.0% |

### FY26  (n=473 eligible, median -5.9%)

| # | Top 20 | Return | Bottom 20 | Return |
|---|---|---|---|---|
| 1 | PFOCUS | +262.8% | COHANCE | -73.8% |
| 2 | GVT&D | +133.5% | BLUEJET | -63.0% |
| 3 | MCX | +125.0% | NEWGEN | -59.6% |
| 4 | NATIONALUM | +120.0% | OLAELEC | -57.0% |
| 5 | FORCEMOT | +114.5% | INOXWIND | -53.0% |
| 6 | GMDCLTD | +113.5% | RPOWER | -52.6% |
| 7 | ACUTAAS | +109.7% | MAPMYINDIA | -52.6% |
| 8 | HINDCOPPER | +105.4% | TARIL | -52.6% |
| 9 | NETWEB | +104.6% | KPITTECH | -51.5% |
| 10 | POWERINDIA | +91.5% | FIVESTAR | -51.2% |
| 11 | CCL | +87.6% | BATAINDIA | -50.2% |
| 12 | KIRLOSENG | +84.6% | TEJASNET | -49.2% |
| 13 | DATAPATTNS | +79.6% | SAPPHIRE | -48.9% |
| 14 | APARINDS | +78.4% | PGEL | -48.7% |
| 15 | SYRMA | +68.1% | AAVAS | -48.3% |
| 16 | RBLBANK | +67.0% | POLYMED | -47.0% |
| 17 | KARURVYSYA | +66.0% | SYNGENE | -46.3% |
| 18 | DELHIVERY | +63.3% | TTML | -44.3% |
| 19 | ANURAS | +62.1% | AFCONS | -44.2% |
| 20 | LAURUSLABS | +61.8% | CLEAN | -43.8% |



---

## 11. Appendix B — RBI repo-rate history used

| Effective date | Repo after change | Action |
|---|---|---|
| 2016-04-05 | 6.50% | −25bp |
| 2016-10-04 | 6.25% | −25bp |
| 2017-08-02 | 6.00% | −25bp |
| 2018-06-06 | 6.25% | +25bp |
| 2018-08-01 | 6.50% | +25bp |
| 2019-02-07 | 6.25% | −25bp |
| 2019-04-04 | 6.00% | −25bp |
| 2019-06-06 | 5.75% | −25bp |
| 2019-08-07 | 5.40% | −35bp |
| 2019-10-04 | 5.15% | −25bp |
| 2020-03-27 | 4.40% | −75bp (off-cycle, COVID) |
| 2020-05-22 | 4.00% | −40bp (off-cycle) |
| 2022-05-04 | 4.40% | +40bp (off-cycle) |
| 2022-06-08 | 4.90% | +50bp |
| 2022-08-05 | 5.40% | +50bp |
| 2022-09-30 | 5.90% | +50bp |
| 2022-12-07 | 6.25% | +35bp |
| 2023-02-08 | 6.50% | +25bp |
| 2025-02-07 | 6.25% | −25bp |
| 2025-04-09 | 6.00% | −25bp |
| 2025-06-06 | 5.50% | −50bp |
| 2025-12-05 | 5.25% | −25bp |

Rate in force at 2016-04-01: **6.75%**. No changes in CY2021, CY2024, or (per reporting) Feb/Apr 2026.

*Provenance note: values through 2023-02-08 were cross-checked against independently known RBI policy history and match. The 2025 entries (FY25–FY26) come from press reporting of MPC decisions and could not be verified against a primary RBI source in this environment — **verify before relying on the FY25/FY26 policy path.***

---

## 12. Appendix C — Files and reproduction

All artefacts are in `/Users/ayush/Downloads/AyushStonks/nifty500_fy_backtest/`.

| File | Purpose |
|---|---|
| `build_universe.py` | Resolve universe + macro symbols to Kite instrument tokens (handles series changes and hyphenated symbols) |
| `fetch_prices.py` | Chunked, resumable Kite OHLCV fetch (run on a host with a live Kite token) |
| `fetch_fred.py` | FRED macro series |
| `audit.py` | Data-quality audit → `audit_report.txt` |
| `clean.py`, `prep_panel.py` | Cleaning, corporate-action repair, FY returns → `fy_returns.csv`, `prep_report.txt` |
| `analysis1_yearly.py` … `analysis5_traits.py` | The five analyses → `results/*.json` |
| `make_tables.py` | Generates every table in this report → `results/tables.md` |
| `assemble_report.py` | Splices narrative + tables into `REPORT.md` and verifies it |
| `diagnostics/` | Investigation scripts that found the data defects (`scan_idio.py`, `scan_ca.py`, `diag_extremes.py`, `diag_ca.py`, …) |
| `raw/`, `raw_clean/` | Raw and cleaned price panels |

Reproduce in order: `audit.py` → `prep_panel.py` → `analysis1..5` → `make_tables.py` → `assemble_report.py` (with `.venv/bin/python`; requires pandas, numpy, scipy). The fetch steps (`build_universe.py`, `fetch_prices.py`, `fetch_fred.py`) only need re-running to refresh data.

**VPS note:** the fetch ran on the FRIDAY production VPS under `/opt/friday/quant_backtest/` (read-only Kite API calls; no interference with the trading crons). Scripts and the 55MB raw panel remain there so the pull can be repeated; nothing was left running.

**Data provenance:** Kite Connect v3 historical daily candles, fetched 2026-09-11 from the live session; FRED series `INDIRLTLT01STM`, `DEXINUS`, `DCOILBRENTEU`; MCX continuous futures via Kite for gold (₹/10g), silver (₹/kg) and crude (₹/bbl). India 10Y is **monthly** (FRED's only free India 10Y series), so FY "change" is the last monthly observation at each FY boundary, not a true year-end daily value.

---

*This document is a quantitative research exercise, not investment advice. It contains no recommendation to buy or sell any security. Past performance over ten survivorship-biased years in a single market is not a reliable guide to future returns.*
