Formula robustness
If a result only survives with one exact formula, it is a coincidence, not an effect. This grid runs the identical backtest — same Nifty 500 universe, same top 20 equal weight, same monthly rebalance, same costs — under four spec variants that were declared before any results were computed. Every variant is always shown; none is ever tuned, added or dropped because of how its numbers look.
Window: 28 Feb 2020 – 30 Jun 2026 · 77 months · Nifty 500 only (the deepest universe and the Gate A audit universe)
| Specification | CAGR | Max drawdown | Sharpe |
|---|---|---|---|
| Vol-scaled 12-1 (the published spec)published spec | 42.5% | -32.1% | 1.22 |
| Plain 12-1 (no volatility scaling) | 45.1% | -32.4% | 1.21 |
| Vol-scaled 12-1 + 200-DMA regime rule | 42.3% | -15.2% | 1.59 |
| Plain 12-1 + 200-DMA regime rule | 43.0% | -19.3% | 1.51 |
| Nifty 50 (price index) over the same window | 11.4% | -23.2% | 0.34 |
All figures net of 0.4%/side transaction costs; no taxes modelled. The same survivorship-bias and price-index caveats as the main backtest apply to every row equally.
What this grid can and cannot say
What it can say: if all four variants land in the same neighbourhood — comfortably ahead of the index on a risk-adjusted basis — then the historical result is a property of disciplined momentum ranking, not of one lucky formula. If the published spec were the only row that looked good, that would be a red flag, and this page would show it.
What it cannot say: that any of this repeats in the future. Every row inherits the same backtest weaknesses — survivorship bias, a price-index benchmark, no taxes, and a window dominated by a momentum-friendly regime.
About the regime variants: At each month-end rebalance, if the Nifty 50 closed below its 200-day simple moving average, the simulated portfolio holds no stocks that month and earns the risk-free rate instead; exit and re-entry pay the same turnover costs. Evaluated only at rebalance dates - a historical simulation of a published rule, not a suggestion to time markets.
Assumptions (published spec shown; variants differ only as labelled)
| Taxes | Not modelled - after-tax results would be materially lower for every variant |
|---|---|
| Signal | 12-1 momentum: return from t-252 to t-21 trading days, divided by annualized daily-return volatility (trailing 252 days) |
| Universe | Nifty 500 current constituents (474/500 usable) - survivorship bias: results are biased upward, plausibly by several % p.a. |
| Benchmark | Nifty 50 (^NSEI) price index - excludes dividends, which flatters every variant equally |
| Portfolio | Top 20 by the variant's ranking, equal weight, monthly rebalance |
| Price data | Yahoo Finance daily, adjusted for splits and dividends (yfinance auto_adjust) |
| Risk-free rate | 6.5% p.a. for Sharpe and for cash months in the regime variants |
| Backtest window | 2020-02-28 - 2026-06-30 (77 months), a broadly momentum-friendly regime; no 2008-style crash included |
| Transaction costs | 0.4% per side on actual turnover (avg 30 bps/month at 74% monthly turnover) |
The method itself, including momentum's failure modes, is on the methodology page.