Verdict
No variant or filter helps
Selection on development alone picked the original 50/50 rule without a filter: net +5.0% in development, -3.3% in validation; reality-check p 0.89 across the 27 variants (the best raw t-statistic belongs to a variant with one trade).
- Regime filters hurt: average development CAGR across the nine parameter pairs is +2.9% with no filter, -0.1% with the 200-day trend filter and +0.2% with the VIX filter. The original rule's best years came in sharp V-shaped recoveries (2020), which the filters block.
- Lower RSI levels (30 or 40) trade rarely: 40 days and RSI 40 gives 206 trades in development (2.9% a year, drawdown 14%, invested only about 16% of the time, alpha t 0.4) and +3.2% in validation, the only variants with at least 150 trades that were positive in both periods; that is below the 4% a year survivorship allowance and statistically indistinguishable from zero. 30 and 30 gives 40 trades in nine years.
- The pass rule failed on 7 conditions: after the 4% allowance the 2x-cost CAGR is negative in both periods, alpha is not positive, positive years in development are below 60%, development CAGR is below the random-entry 90th percentile (8.2%), and the reality check does not pass.
- One run, pre-registered (research/rsi50/STRATEGY_RSI50_V2.md); validation numbers of the other 26 variants are shown but were never used to choose. The sealed period from 2025-10-01 stays unopened.
Promotion gates
No gates published for this strategy.
Explain the strategy
We tried 27 versions of the rule: different RSI levels, different waiting times, and switching it off in bad markets. None beat the original, and the original lost to random stock picks.
Report
All 27 variants, sorted by development Sharpe (validation shown for information only)
| Variant (days below · RSI level · regime filter) | Dev net CAGR | Dev max drawdown | Dev Sharpe | Dev trades | Dev alpha t | Share invested (dev) | Validation CAGR (information only) | Validation trades |
|---|---|---|---|---|---|---|---|---|
| days40/rsi50 · G0 none | +5.6% | 27% | 0.59 | 839 | 0.49 | 54% | -4.8% | 185 |
| days50/rsi40 · G0 none | +2.5% | 11% | 0.58 | 76 | 1.11 | 6% | +2.0% | 32 |
| days50/rsi50 · G0 none | +5.0% | 22% | 0.57 | 647 | 0.52 | 43% | -3.3% | 160 |
| days40/rsi40 · G0 none | +2.9% | 14% | 0.44 | 206 | 0.44 | 16% | +3.2% | 71 |
| days40/rsi30 · G0 none | +1.2% | 5% | 0.42 | 19 | 0.84 | 2% | -0.8% | 3 |
| days50/rsi30 · G0 none | +0.6% | 3% | 0.41 | 6 | 0.89 | 1% | -0.3% | 2 |
| days30/rsi50 · G0 none | +3.9% | 35% | 0.4 | 1012 | -0.26 | 62% | -4.8% | 231 |
| days30/rsi30 · G0 none | +1.6% | 8% | 0.4 | 40 | 0.64 | 3% | -0.5% | 8 |
| days30/rsi40 · G0 none | +2.8% | 20% | 0.39 | 373 | 0.08 | 27% | -7.6% | 116 |
| days50/rsi30 · G2 VIX at or below 20 | +0.1% | 1% | 0.39 | 1 | 1.14 | 0% | -0.3% | 2 |
| days50/rsi40 · G2 VIX at or below 20 | +0.6% | 11% | 0.25 | 49 | 0.32 | 3% | +2.0% | 32 |
| days50/rsi50 · G2 VIX at or below 20 | +1.3% | 23% | 0.2 | 565 | -0.56 | 39% | -2.9% | 155 |
| days50/rsi40 · G1 index above 200-day | +0.3% | 6% | 0.18 | 24 | 0.28 | 2% | -0.0% | 13 |
| days40/rsi40 · G2 VIX at or below 20 | +0.6% | 18% | 0.16 | 151 | -0.14 | 10% | +3.2% | 71 |
| days30/rsi50 · G1 index above 200-day | +0.9% | 45% | 0.14 | 814 | -0.83 | 49% | -7.4% | 190 |
| days30/rsi30 · G2 VIX at or below 20 | +0.2% | 4% | 0.13 | 19 | 0.12 | 2% | -0.5% | 8 |
| days40/rsi30 · G2 VIX at or below 20 | +0.1% | 2% | 0.09 | 7 | 0.17 | 1% | -0.8% | 3 |
| days40/rsi50 · G2 VIX at or below 20 | -0.1% | 26% | 0.04 | 722 | -1.23 | 45% | -4.9% | 179 |
| days40/rsi50 · G1 index above 200-day | -0.3% | 34% | 0.01 | 625 | -1.21 | 38% | -7.2% | 154 |
| days50/rsi30 · G1 index above 200-day | +0.0% | 0% | 0.0 | 0 | 0.0 | 0% | -0.3% | 2 |
| days30/rsi30 · G1 index above 200-day | -0.0% | 2% | -0.01 | 5 | -0.12 | 0% | -0.3% | 5 |
| days30/rsi40 · G2 VIX at or below 20 | -0.3% | 22% | -0.01 | 296 | -0.93 | 19% | -8.9% | 111 |
| days30/rsi50 · G2 VIX at or below 20 | -0.7% | 35% | -0.02 | 867 | -1.51 | 56% | -5.4% | 228 |
| days50/rsi50 · G1 index above 200-day | -0.4% | 26% | -0.04 | 440 | -1.08 | 26% | -4.3% | 116 |
| days40/rsi40 · G1 index above 200-day | -0.6% | 15% | -0.17 | 90 | -1.01 | 6% | -0.8% | 36 |
| days30/rsi40 · G1 index above 200-day | -1.1% | 22% | -0.22 | 208 | -1.38 | 15% | -5.7% | 65 |
| days40/rsi30 · G1 index above 200-day | -0.1% | 1% | -0.71 | 1 | -2.09 | 0% | -0.8% | 3 |
Rules and parameters
Rules
- Entry grid: days N in {30,40,50} and RSI level X in {30,40,50}: RSI(14) below X for more than N calendar days up to the day before, then crossing at or above X; buy at the next open.
- Regime filter at the signal-day close: none; Nifty 500 above its 200-day average; India VIX at or below 20.
- Everything else as Tidewater v1 (stop at the 50-session low, +1.5R target, RSI above 75 and SMA50 + 2 sd exits, 1% risk, caps, drawdown brake, MFS-15 delivery costs and tiered slippage).
- Selection: highest development Sharpe among variants with at least 150 development trades and development drawdown at most 25%. Control: sign-flip max-t reality check on daily beta-adjusted alpha across all 27; random-entry null.
- Pass: the v1 ten conditions in both periods plus reality-check p below 0.10.
Parameters
- variants
- 27 (9 entry pairs x 3 filters)
- selected
- days50/rsi50|G0 none
- periods
- development 2015-2023, validation 2024-01 to 2025-09, sealed unopened
- pre-registration
- research/rsi50/STRATEGY_RSI50_V2.md
- reality check p
- 0.89
Instrument
Nifty 500 stocks (point-in-time membership, ADV at least ₹5 crore), delivery, whole shares · capital ₹1,000,000
Known limitations
- Survivorship: delisted-name coverage of the price store is the same limitation as MFS-15; a 4% a year allowance is subtracted in the headline.
- Daily bars: stop-versus-target order inside one bar is assumed stop-first; opening and closing auctions are not modelled.
- Slippage tiers by traded value are assumptions carried over from MFS-15.
- Three runs and the disclosed amendments reduce the weight of the result; it is a failure either way.
Logs and raw data
Downloads appear once a data window is loaded.
Files are plain CSV so results can be re-computed independently. Trade dates are IST sessions; returns are net of modelled costs and slippage.