A few months ago I decided to build a proper systematic trading strategy for Indian equities. Not the kind where you pick two moving averages, watch them cross, and call it a day. Something closer to what a quant fund would actually run: real NSE data, real transaction costs modelled from first principles, and signals grounded in published factor research rather than backtest-mined noise.
The result was the IMMR-H (the India Multi-Factor Momentum-Mean Reversion Hybrid). Seventy-seven Nifty 500 stocks. A decade of price history. Three signals combined into a single ranking score. And a transaction cost model that accounted for everything India throws at you: STT, stamp duty, brokerage, market impact, and the cost of borrowing shares to short.
It didn't work. And figuring out exactly why turned out to be more useful than if it had.
"The signals had a monthly IC of 0.1758, strong enough to be publishable in an academic journal. They were correctly ranking stocks by likely forward performance month after month. The strategy still lost money every single year. Transaction costs ate everything."
What follows is how the strategy was built, what the data showed, and why Indian markets punish systematic traders in ways that most global quant frameworks simply aren't designed to handle.
Three Signals, One Score
The idea is straightforward. Every month, score each stock in the universe using three independent signals. Buy the top quintile. Short the bottom quintile. Rebalance. Each signal targets a different market inefficiency operating at a different time scale, so when one is muted, the others carry the weight.
The Composite Alpha Formula
Before combining, each signal is standardised across the universe, converted to a z-score so a momentum reading and a reversal reading can be added together without one dominating simply because of scale. The composite alpha score is then:
Top 5 longs: BAJFINANCE.NS, BIOCON.NS, JSWSTEEL.NS, CHOLAFIN.NS, IOC.NS
Top 5 shorts: ABB.NS, TECHM.NS, TATAELXSI.NS, OFSS.NS, LUPIN.NS
Alpha range across 69 stocks: [−1.027, +1.588]
The IC chart tells the most important story of this project. The large majority of rebalance periods (with the exception of a few in the 2016 warmup period and mid-2020) stayed above the 0.05 green threshold, which qualifies as a publishable signal in academic finance. A monthly IC of 0.1758 is worth unpacking carefully because the number needs context. Monthly ICs are structurally larger than daily ICs. Daily factor ICs typically run 0.01–0.03 for institutional strategies, because a single day is too short for most signals to express themselves cleanly. At monthly frequency and a 20-day forward return horizon, an IC above 0.05 is considered meaningful; above 0.10 is strong. Across 106 rebalance periods, the t-statistic on this IC is approximately 12.4, far above any reasonable significance threshold. The ICIR (IC mean divided by its standard deviation over time) comes in around 1.2, which in practitioner terms means the signal is not just strong on average but consistent across time. Values above 1.0 are considered institutionally robust. The signals were doing their job. Ranking stocks by likely forward return, month after month, with genuine skill. The strategy still lost money. That gap is the entire lesson.
What Ten Years of Data Actually Showed
The backtest ran from January 2015 to December 2024: 2,466 trading days across 77 NSE stocks in 8 sectors, using Yahoo Finance adjusted close prices. Three names were dropped from the original universe: TATAMOTORS.NS failed to download cleanly, and IRFC.NS and KPITTECH.NS didn't have enough data because they listed too recently. Important limitation, survivorship bias: the 77-stock universe was drawn from current Nifty 500 constituents, meaning stocks that were delisted, went bankrupt, or were dropped from the index between 2015 and 2024 are not included in the backtest. Stocks that failed tend to have had deteriorating fundamentals and price momentum, precisely the characteristics that would have generated the strongest short signals. Excluding them therefore likely inflates the IC and overstates strategy returns. This is the single most important methodological caveat in this research. A production-grade system would use point-in-time constituent data (available from NSE historical filings or vendors such as Bloomberg/Refinitiv) to construct a survivorship-free universe.
The numbers are stark. ₹1 invested in the Nifty 50 in January 2016 became ₹3.11 by December 2024, a CAGR of +15.39% on the price index. ₹1 in IMMR-H became ₹0.52, down 48% over nine years. To be precise about what this comparison means: the Nifty 50 is a long-only passive index; IMMR-H is a market-neutral long-short strategy. They don't have the same risk profile and shouldn't be held to the same return standard. The fairer point is simpler. A market-neutral strategy with demonstrably predictive signals should at least preserve capital. This one lost nearly half of it. That's not a benchmark failure. It's an execution failure.
| Metric | IMMR-H | Nifty 50 | Verdict |
|---|---|---|---|
| Annual Return | −7.15% | +15.39% | ❌ −22.54% alpha gap |
| Sharpe Ratio | −3.271 | 0.534 | ❌ Destroys value |
| Max Drawdown | −48.15% | −38.44% | ❌ Worse than market |
| Win Rate | 46.66% | 54.65% | ❌ Below 50% |
| Signal IC (mean) | 0.1758 | ✅ | Strong (monthly, Spearman, 20-day horizon) |
| Total Cost Drag | 79.94% | ❌ | Catastrophic |
The Culprit: What India Actually Costs to Trade
The question is obvious: how does a strategy with a t-stat of 12.4 lose money for nine consecutive years? The answer is 4,871 trades. Here is the cost arithmetic in full:
Estimated gross annual return (from IC × vol × breadth, Grinold 1994): +18–23%
Actual net annual return after all costs: −7.15%
Annual performance gap (gross − net): ~25–30 pp
Annual turnover (541 trades × avg position size): ~270% of NAV
Average round-trip cost per trade (India full stack): ~0.35%
Implied annual cost load: 541 × 0.35% = ~189% of NAV
Note: The 79.94% cost drag figure is the backtest engine's own output representing the proportion of estimated gross alpha consumed by modelled costs. The Grinold-based gross estimate above provides independent corroboration that costs fully consumed and exceeded the strategy's alpha budget. Both methods reach the same conclusion.
"The STT alone is five times what US traders pay in total government levies. If you're building a high-turnover strategy for Indian markets and you haven't modelled this from day one, you're not building a strategy. You're building a cost machine."
The Signal Works. The Plumbing Doesn't.
The most important thing the data shows is also the most counterintuitive one. The signals are not the problem. An IC of 0.1758 with a t-statistic of 12.4 doesn't happen by chance. The behavioural patterns this strategy targets (momentum, short-term reversal, post-earnings drift) are well-documented phenomena in Indian equity markets (see Sehgal & Bijoy, 2015, on PEAD specifically). They're real. They just get eaten alive before they can translate into returns.
Why Indian Markets Are Different
Indian equity markets have genuinely unusual characteristics. Retail investors account for 35–45% of cash market turnover, far more than in developed markets, and they tend to overreact to short-term news in ways that create predictable short-term reversals. SIP inflows of ₹20,000+ crore a month create systematic buying pressure. FII flows cluster into sectors and sustain trends. The behavioural signal quality is arguably better here than in most other large equity markets.
In Indian markets, a strategy with average signals and low turnover will beat a strategy with excellent signals and high turnover almost every time. The transaction cost structure isn't an afterthought. It's the constraint everything else has to be built around. Model the costs first. Build the signals after.
The Monte Carlo doesn't tell you anything the backtest doesn't, but it tells it to you in a way that's harder to dismiss. Run the strategy 1,000 times with slightly different starting conditions, and the median outcome still ends below break-even. The fan chart slopes down not because the signals fail but because costs compound in one direction, relentlessly. Change the rebalancing frequency and recalibrate the AUM and the same 1,000 simulations produce a median Sharpe above 1.5.
The Question Worth Asking Next
India moved to T+1 settlement in 2023, the fastest settlement cycle in the world. It changes the mechanics of short-term mean reversion: under T+2, delivery selling pressure took two days to clear; under T+1, it clears in one. The REV signal should therefore work faster and at a shorter window than 5 days post-T+1.
"India's T+1 settlement is the fastest in the world. Mean reversion strategies built before 2023 were calibrated to a T+2 world. Has the signal window shifted? Nobody has actually checked."
What I Actually Learned
Building this strategy took longer and went wrong in more ways than I expected. It also taught me more about Indian markets than any book I've read on the subject.
The strategy lost money. But the signals worked. That’s not a consolation. It’s the most useful result. An IC of 0.1758 (monthly Spearman, 20-day horizon, 106 periods, t-stat 12.4) means the ranking of stocks by likely forward return was genuinely predictive, consistently, for a decade. The caveats stand: the universe has survivorship bias, the short leg depends on F&O availability, and the result should be validated on a broader point-in-time dataset before anyone draws firm conclusions. But the core finding is hard to argue with. The inefficiencies this strategy targets (momentum, short-term reversal, post-earnings drift) exist in Indian equities. The data is clear on that.
The fix isn't complicated in principle: rebalance quarterly instead of monthly, set a minimum trade threshold so small position adjustments don't generate round-trip costs, calibrate to a realistic AUM, and replace the earnings proxy with real EPS surprise data. The signal is already there. Getting it to survive the journey from signal to return is an execution problem, not a research problem.
1. Model India's full cost stack, especially STT, before backtesting. Not after.
2. Monthly rebalancing is almost always too frequent for momentum strategies at any meaningful AUM.
3. A signal IC above 0.05 is genuinely predictive. Protect it by keeping turnover ruthlessly low.
4. India's T+1 transition has likely changed short-term reversal dynamics. This is an open, testable, and publishable research question.
5. India's retail-dominated order flow creates stronger behavioural signals than most developed markets. The alpha is real. The implementation cost must be respected equally.
What This Doesn't Prove
Any backtest worth reading should say clearly what it doesn't prove. Here are the main caveats.
Survivorship bias: The 77-stock universe uses current Nifty 500 constituents. Stocks delisted or removed between 2015–2024 are excluded. This likely inflates the IC and returns. A production system requires point-in-time constituent data.
IC interpretation: The IC of 0.1758 is a monthly Spearman rank correlation against 20-day forward returns on a 77-stock universe (n=106 periods). t-statistic ≈ 12.4 (p < 0.001); ICIR ≈ 1.2 (estimated from chart). Both confirm the signal is statistically significant and consistent. However, monthly ICs are structurally higher than daily ICs, so this result should not be compared to daily IC benchmarks from broad institutional factors without adjustment.
Cost drag calculation: The 79.94% cost drag is an approximation based on estimated gross alpha (derived from IC × volatility × signal breadth) vs. realised net return. Exact decomposition requires trade-level P&L attribution which this backtest does not produce.
Short-selling assumptions: The short leg assumes stocks can be shorted via SSF (Single Stock Futures). In practice, SEBI's daily F&O ban list (which restricts trading in stocks where aggregate open interest exceeds 95% of MWPL) can make short positions impossible to initiate or maintain on specific names, sometimes for multiple consecutive days. This likely overstates short-side contribution.
Yahoo Finance data quality: While auto-adjustment handles splits and dividends, Yahoo data is not a substitute for institutional-grade data vendors (Bloomberg, Refinitiv, ACE Equity) for production deployment.
What this research does support: The framework design, signal construction methodology, cost modelling approach, and the central diagnosis (that India's transaction cost structure punishes high-turnover strategies) are all valid and reproducible findings.
Methodology summary (for citation purposes):
Universe: 77 NSE stocks (current Nifty 500 constituents, liquidity-filtered) · Data: Yahoo Finance adjusted closes · IC type: Spearman rank correlation. IC horizon: 20 trading days forward. Rebalance: Monthly (21 trading days). IC periods: n=106. IC mean: 0.1758. IC t-stat: ~12.4. ICIR: ~1.2. Net return: −7.15% p.a. Sharpe: −3.271. Max DD: −48.15%. Benchmark: Nifty 50 price index CAGR +15.39% (Jan 2016–Dec 2024). Survivorship bias: present (current constituents only). Short-selling: modelled via SSF; F&O ban list not dynamically applied