A Nifty 500 momentum strategy that reads market mood daily and sizes positions accordingly — built through four controlled experiments over nine years of live data.
The CAGR range reflects two measurement conventions: 29.82% includes mark-to-market of open positions at the backtest end-date; 26.47% counts only fully closed trades. Both are stated; comparisons use 26.47% as the conservative basis.
Each column represents one stage of the model's development, with exactly one variable changed from the previous stage. Read left to right to see what each modification contributed, year by year.
| Year | Stage 1 TQ + Fixed exits Monthly |
Stage 2 + Trailing exits Monthly |
Stage 3 + Daily cadence Trailing |
Stage 4 + Adaptive regime Super Signal |
Context |
|---|---|---|---|---|---|
| 2018 | -3.61% | -7.76% | -16.60% | -11.72% | IL&FS / NBFC crisis |
| 2019 | +3.57% | +0.13% | +15.18% | +1.03% | Slow recovery |
| 2020 | +4.10% | +26.16% | +58.56% | +50.50% | COVID crash + V-recovery |
| 2021 | +47.56% | +169.72% | +147.36% | +152.34% | Trailing exits transform this year (+122pp vs Stage 1) |
| 2022 | +2.87% | +10.74% | -1.96% | -0.02% | Rate hike uncertainty |
| 2023 | +92.13% | +104.72% | +121.20% | +99.94% | Broad recovery |
| 2024 | +26.38% | -7.99% | -1.77% | +41.53% | Super Signal defining year: +31pp over daily baseline |
| 2025 | +2.41% | +7.39% | +5.20% | +4.97% | Mixed conditions |
| 2026 | -6.59% | -1.42% | +0.44% | +4.08% | Partial year |
| CAGR | 22.04% | 21.38% | 23.83% | 26.47% | 9-year compounded annual growth |
| 2022-26 avg | +23.24% | +22.69% | +24.62% | +30.10% | Holdout window — no parameters tuned here |
Two years tell the whole story. In 2021, Stage 2 returned +169.72% versus Stage 1's +47.56% — the entire +122pp difference coming from not cutting winners at a fixed ceiling during the bull run. In 2024, Stage 4 returned +41.53% when Stages 2 and 3 were negative — the regime correctly identified a strong environment and deployed maximum capital while fixed-sizing models sat at the same position size regardless of conditions. The 2022-2026 holdout average improves at every stage, confirming each modification added genuine out-of-sample value.
Adjust the sliders to see how a specific investment would have grown across all four stages, starting from any year in the backtest window.
The regime score was computed every trading day. The model was deployed at full capacity for more than half the period.
The 1.96× ratio of average win to average loss at the monthly level, combined with a 55% win rate, produces a monthly expectancy of approximately +1.93% — the arithmetic foundation of the model's compounding behaviour.
Each stage changed exactly one thing. The result of each experiment informed the next decision. Nothing was combined until it had been validated in isolation.
The base model selects stocks using a composite signal — the product of a stock's annualised 90-day price slope and the R² of that slope. This rewards stocks rising smoothly, not just stocks rising. Combined with eligibility filters (price above 50 and 200-day moving averages, positive 12-month momentum, daily turnover above ₹5cr, volatility below 4%), it creates a clean eligible universe ranked by trend quality daily. Each position was initially given a calibrated fixed target and stop based on the stock's own volatility, with a 9-month time stop. Capital was redeployed monthly. This baseline produced a 22.33% CAGR with a −24.11% max drawdown over the 9-year window.
The first experiment kept everything identical — same signal, same eligibility, same monthly cadence — and changed only the exit mechanism. Fixed targets were replaced with a trailing stop: an initial stop set at 1.5×ATR below entry, ratcheted upward daily as the price rose, never moving down. No profit target of any kind. The position exits only when the daily close drops to the trailing stop level.
The result was immediate and clear: CAGR rose from 22.33% to 24.02% — a +1.69pp improvement from a single mechanical change. Win rate fell from 54.3% to 36.6%, as expected (a trailing stop catches many small reversals before the position becomes profitable), but winners grew proportionally larger, producing a better overall expectancy. The key insight: fixed profit targets cut off positions that could have run for months. A stock in a genuine multi-month trend was being sold at an arbitrary percentage ceiling, leaving most of its move on the table.
The second experiment kept the trailing exit from Stage 2 and changed only the entry cadence — from monthly rebalancing (scan on the last trading day of each month) to daily scanning (scan every trading day, enter up to 3 new positions per day when slots are available).
Monthly rebalancing creates a structural inefficiency: when a stop-loss exits a position on the 5th of the month, that capital sits idle for up to three weeks waiting for the next rebalance date. Over a 9-year compounding system, that dead time is a consistent drag. Daily entry redeploys freed capital into the current top-ranked opportunity within one day. The result was a further +0.67pp of CAGR, with minimal increase in drawdown. The model also became more responsive — catching strong setups that appeared mid-month rather than having to wait for the calendar.
The third and largest experiment introduced the adaptive regime layer. The previous stages used a binary gate — either entries were allowed or they weren't, based on whether the Nifty 50 was above a single moving average. This is a blunt instrument: it treats a Nifty 50 that just crossed its 200-DMA the same as one that has been in a confirmed bull trend for six months.
The question was: why should position size, slot count, and stop width all be fixed when the market is telling you something different every day? In a confirmed, broad-participation bull market, you should deploy maximum capital with wide stops that let winners breathe. In a choppy, uncertain market, you should be smaller and tighter. In a bear, you should stop opening new risk entirely.
A four-signal regime score (0–4) was constructed from signals already computable from available data: the index's 50-DMA trend, 200-DMA trend, its own Trend Quality reading, and market breadth (what percentage of Nifty 500 stocks are above their own 50-DMA). The breadth threshold was calibrated at 40% after diagnostic analysis showed that 50% incorrectly classified genuine bull years (2019–2021) as "Choppy." The raw score is smoothed over a 3-day rolling average to prevent single-day whipsaw in parameters.
This single addition produced the largest improvement of the three experiments: the model's best year in the holdout window (2024) delivered +41.53% versus +10.16% for the fixed-gate daily baseline — a +31pp difference in one year, attributable entirely to the regime correctly identifying a strong environment and deploying maximum capital with wide trails, while the fixed gate deployed the same fixed position size regardless of conditions.
Run across all Nifty 500 stocks every trading day. A stock must pass all five conditions to be considered:
| Condition | Threshold | Purpose |
|---|---|---|
| Price vs moving averages | close > 50-DMA and close > 200-DMA | Confirmed uptrend only |
| 12-1 momentum | positive (skipping latest month) | Excludes short-term reversals |
| Liquidity | median daily turnover > ₹5cr | Tradeable in real size |
| Volatility | 20-day daily vol ≤ 4% | Excludes erratic movers |
| History | ≥ 252 trading days of data | Enough for indicator calculation |
Eligible stocks are ranked by Trend Quality — how smoothly and steeply they have trended over the past 90 trading days:
Computed daily before any entry decision. Each of four signals contributes one point to a raw score of 0–4, smoothed over a 3-day rolling average:
The smoothed regime score determines everything about how aggressively the model deploys capital that day:
In Bear regime, no new positions are opened. Existing positions are not force-closed — they continue to run under their trailing stops, which automatically tighten as the regime tightens.
Each trading day, up to 3 new positions are opened from the top of the Trend Quality ranking, subject to: available slots below the regime's maximum, the stock not already being held, and a 10-day per-stock cooldown after a stop-loss on that name. Each new position is sized at the regime's position percentage of current total equity — so as the account grows, position sizes grow with it.
There is no profit target. Each position carries a trailing stop:
| Exit type | Trigger | Action |
|---|---|---|
| Trailing stop | Daily close ≤ current stop level | Exit 100% of position. Stop starts at entry − 1.5×ATR; ratchets up daily as close − regime_trail×ATR exceeds current stop; never moves down. |
| Dead-trade stop | 40 days held AND close never exceeded entry + 1×ATR | Exit 100%. Frees the slot from a position that never showed any life. |
The trailing stop width is set at entry from the current regime's trail multiplier (e.g. 4×ATR in Strong Bull). If the regime weakens while the position is open, the stop tightens on existing positions — meaning a deteriorating market automatically reduces the distance before existing holdings are exited, providing dynamic protection without requiring a manual exit decision.
Every claim in this paper rests on a one-variable experiment. Each stage of the model's evolution changed exactly one thing: the exit mechanism in Stage 2, the entry cadence in Stage 3, the sizing and gate logic in Stage 4. All other parameters were held constant. This makes the marginal contribution of each modification attributable rather than entangled.
| Stage | Variable changed | CAGR before | CAGR after | Marginal gain |
|---|---|---|---|---|
| Benchmark | Industry benchmark (published) | — | 22.76% | baseline |
| 1 → 2 | Exit: fixed targets → trailing stop | 22.33% | 24.02% | +1.69pp |
| 2 → 3 | Cadence: monthly → daily | 24.02% | 24.69% | +0.67pp |
| 3 → 4 | Sizing: fixed gate → adaptive regime | 24.69% | 26.47% | +1.78pp |
| Total improvement over Stage 1 baseline | 26.47% | +4.14pp | ||
The 2022–2026 period was not used to tune any parameter in Super Signal. All calibration decisions — the 40% breadth threshold, the 3-day score smoothing, the regime boundary levels — were based on analysis of 2017–2021 data and then applied without adjustment to the post-2021 period.
In 2022–2026, the Super Signal produced an average annual return of +30.10% versus +20.98% for the daily fixed-gate baseline — a +9.12pp holdout advantage. This is the strongest evidence in this paper. It represents genuine out-of-sample behaviour across five years that include both a difficult rate-hike environment (2022) and a strong trending market (2023–2024).
The clearest illustration of what Super Signal adds is 2024, where the Super Signal returned +41.53% versus +10.16% for the fixed-gate baseline — a +31.37pp difference. The mechanism: in April, June, and July 2024 the regime score was consistently at or near 4.0 (Strong Bull), triggering 10 slots at 10% of equity each with 4×ATR trailing stops. The fixed-gate baseline deployed identical fixed position sizes with a 3×ATR trail regardless of regime conditions. In October 2024, when conditions deteriorated, the Super Signal lost only −1.89% versus the baseline's −10.87% — the regime had already shifted to cautious mode and reduced exposure before the correction deepened.
Real prices, virtual capital. Every position follows Super Signal rules exactly — entries at 9:16 AM open via Dhan API, trailing stops updated daily at close.
| Symbol | Entry | Entry ₹ | Shares | Invested | Stop | LTP | Unr P&L | % | Days |
|---|---|---|---|---|---|---|---|---|---|
| CAPLIPOINT | 07-27 | ₹2,493.50 | 158 | ₹393,973 | ₹2,421.55 | — | — | — | 29d |
| KIRLOSENG | 07-27 | ₹2,186.90 | 180 | ₹393,642 | ₹2,023.93 | — | — | — | 29d |
| LAURUSLABS | 07-31 | ₹1,790.10 | 217 | ₹388,452 | ₹1,797.59 | — | — | — | 25d |
| SYRMA | 08-03 | ₹1,365.10 | 357 | ₹487,341 | ₹1,280.74 | — | — | — | 25d |
| HFCL | 08-07 | ₹205.35 | 2342 | ₹480,930 | ₹209.03 | — | — | — | 20d |
| ATHERENERG | 08-07 | ₹1,476.60 | 325 | ₹479,895 | ₹1,467.76 | — | — | — | 20d |
| CARTRADE | 08-19 | ₹2,781.10 | 172 | ₹478,349 | ₹2,732.94 | — | — | — | 12d |
Fetching live prices...
| Symbol | Entry | Exit | Entry ₹ | Exit ₹ | P&L | Days | Reason |
|---|---|---|---|---|---|---|---|
| ADANIENT | 2026-07-27 | 2026-08-31 | ₹3,050.90 | ₹2,859.10 | ₹-24,742 | 28d | STOP HIT |
| WELCORP | 2026-07-24 | 2026-08-29 | ₹1,611.10 | ₹2,373.80 | +₹189,150 | 27d | STOP HIT |
| RRKABEL | 2026-07-24 | 2026-08-29 | ₹2,354.70 | ₹2,905.20 | +₹93,034 | 27d | STOP HIT |
| CPPLUS | 2026-07-23 | 2026-08-17 | ₹3,482.60 | ₹3,343.10 | ₹-15,903 | 18d | STOP HIT |
| NUVAMA | 2026-07-29 | 2026-08-06 | ₹1,778.20 | ₹1,658.30 | ₹-26,378 | 6d | STOP HIT |
| CEMPRO | 2026-08-03 | 2026-08-06 | ₹1,363.80 | ₹1,245.80 | ₹-42,126 | 4d | STOP HIT |
| CARTRADE | 2026-07-29 | 2026-07-30 | ₹2,980.00 | ₹2,737.80 | ₹-31,728 | 2d | STOP |
| SYRMA | 2026-07-24 | 2026-07-27 | ₹1,361.00 | ₹1,264.10 | ₹-28,392 | 4d | STOP |
| HFCL | 2026-07-23 | 2026-07-24 | ₹216.19 | ₹200.98 | ₹-28,138 | 2d | STOP HIT |
| CEMPRO | 2026-07-23 | 2026-07-24 | ₹1,575.00 | ₹1,441.00 | ₹-33,902 | 2d | STOP HIT |
Updated 01 Sep 2026 · Live prices via Dhan API · Virtual capital only — not real money. Entries at 9:16 AM open price, exits when trailing stop is hit at daily close.
Ranked by Trend Quality — smooth, persistent uptrend over 90 days. Enter at tomorrow's open. Initial stop = Close − 1.5×ATR. Trail the stop up daily, never down. No profit target.
Generated 01 Sep 2026 after market close. Enter at tomorrow's open — skip any stock that gaps below its stop at open. 135 stocks passed all filters today. Not investment advice.
Across 442 closed trades over the nine-year window, the model's payoff profile was consistent with a trend-following system: many small losses cut quickly, funded by a handful of large, uncapped winners that ran for months.
| # | Stock | Entry | Exit | P&L | Hold |
|---|---|---|---|---|---|
| 1 | TARIL | Dec 2023 | May 2024 | +₹14,26,361 | 154d |
| 2 | WOCKPHARMA | Feb 2024 | Nov 2024 | +₹12,28,626 | 291d |
| 3 | GVT&D | Apr 2024 | Jan 2025 | +₹7,47,210 | 265d |
| 4 | TITAGARH | May 2023 | Mar 2024 | +₹5,69,007 | 291d |
| 5 | GABRIEL | May 2025 | Nov 2025 | +₹5,68,661 | 178d |
| 6 | HINDCOPPER | Dec 2025 | Feb 2026 | +₹4,85,214 | 41d |
| 7 | NATIONALUM | Nov 2025 | Jan 2026 | +₹4,73,117 | 74d |
| 8 | HBLENGINE | Sep 2023 | Mar 2024 | +₹4,45,627 | 177d |
| 9 | FORCEMOT | Apr 2025 | Aug 2025 | +₹4,27,640 | 107d |
| 10 | IRFC | Nov 2023 | Feb 2024 | +₹3,72,951 | 101d |
| # | Stock | Entry | Exit | P&L | Hold |
|---|---|---|---|---|---|
| 1 | SWANCORP | Feb 2024 | Mar 2024 | -₹1,59,644 | 29d |
| 2 | HUDCO | Mar 2024 | Mar 2024 | -₹1,45,038 | 8d |
| 3 | PCBL | Sep 2024 | Oct 2024 | -₹1,22,999 | 7d |
| 4 | PGEL | Sep 2024 | Oct 2024 | -₹1,19,293 | 18d |
| 5 | MAZDOCK | Aug 2024 | Sep 2024 | -₹1,11,026 | 44d |
| 6 | GRSE | Aug 2024 | Aug 2024 | -₹1,08,831 | 8d |
| 7 | GMDCLTD | Oct 2025 | Nov 2025 | -₹1,00,847 | 36d |
| 8 | INTELLECT | Jul 2025 | Jul 2025 | -₹98,307 | 14d |
| 9 | ACE | May 2024 | Jun 2024 | -₹96,576 | 29d |
| 10 | GRSE | Jun 2025 | Jul 2025 | -₹92,679 | 19d |
Win/loss ratio: 3.88× ·
Average winner: +₹95,069 ·
Average loser: -₹24,495 ·
Win rate: 38.0%
The model wins on only 38% of trades — yet every rupee risked returns ₹3.88 when it wins.
Winners held an average of 154 days; losers were cut in an average of 19 days.