On 1 July 2023, HDFC stopped being a tradeable ticker. On 14 June 2021, so did DHFL. Holders of the first received 42 HDFCBANK shares for every 25 they held. Holders of the second received nothing, because the approved resolution plan extinguished the equity through a capital reduction (Business Standard, June 2021).
A universe assembled from the stocks trading today deletes both, and deletes them identically.
That deletion is what people mean by survivorship bias, and the standard fix is well known: keep the delisted names in the historical universe so a backtest can buy them. The fix is right, and it is half the job. Once a name is in your universe on the day it stops trading, the backtest still has to decide what the position was worth on the way out. No single answer is correct for all four routes a stock can take off an Indian exchange, and the one you pick moves the drawdown figure more than most people expect.
What the bias actually deletes
Survivorship bias is the error of testing a rule on a list of companies that still exist, when the rule would have been choosing from a list that included companies about to stop existing. The sample loses its failures, so the average return of what remains sits above the average return of what was genuinely investable.
Two things make it worse than a simple accounting gap.
The removal is not random. Companies leave an exchange for reasons that correlate strongly with the characteristics some screens are hunting: falling prices, distressed balance sheets, governance findings, unpaid lenders. A momentum rule mostly avoids these names on its own. A deep value rule walks toward them, because a collapsing price and a shrinking book make a company screen cheap right up to the point it stops trading.
And the survivors define your risk numbers. Max drawdown, volatility and the tail of the return distribution are all computed from the paths that finished. If every path in the sample finished, the worst case in your sample is by construction a survivable one. That is a different quantity from the worst case a real portfolio faced, and it is the quantity most people read off the analytics screen.
This is a cousin of look-ahead bias. Both hand the strategy information nobody had at the time. Look-ahead gives it tomorrow’s number today. Survivorship gives it tomorrow’s constituent list today.
Four ways a stock leaves an Indian exchange
Grouping every exit under “delisted” is where most backtests go wrong, because the four routes pay shareholders very differently.
| Exit route | What happens to the holder | Correct backtest treatment |
|---|---|---|
| Merger or amalgamation | Receives shares in the acquirer at a fixed swap ratio, or cash | Not a loss. Roll the position into the acquirer at the ratio, or treat it as a sale at the last price |
| Voluntary delisting | Tenders into a reverse book build and is bought out at the discovered price | A sale, usually at a premium to the pre-announcement price |
| Compulsory delisting | Promoter must buy out public shareholders at an independently valued price, but the shares stop trading on the exchange first | A sale at a price you probably cannot observe in a price database |
| Suspension into insolvency | Depends entirely on the resolution plan, and equity is often extinguished | A loss, frequently the full position |
The HDFC case is the first row. The merger took effect on 1 July 2023 at a swap of 42 HDFCBANK shares for every 25 HDFC shares. A shareholder lost a ticker and kept the money. A backtest that marks the position to zero on the delisting date has invented a total loss that no holder took, which is an error in the opposite direction from the one everybody warns about.
The second row is the one retail investors meet most often, and it is governed by SEBI’s Delisting of Equity Shares Regulations, 2021. The acquirer announces an intent to delist, public shareholders tender into a reverse book building process, and the exit price is discovered from those bids rather than set by the acquirer. The offer only succeeds if the acquirer’s post-offer shareholding reaches the prescribed threshold of 90 percent. Vedanta’s 2020 attempt is the useful counter-example: the tendered quantity fell short and the delisting failed, so the stock simply carried on trading. Hexaware Technologies went the other way the same year and left the exchange. For a backtest, a successful voluntary delisting is a sale at a price that is typically above where the stock was before the announcement, because that is the point of the process.
The third row is the awkward one. Compulsory delisting is an exchange action against a company for prolonged non-compliance, and the public shareholders’ buyout at an independently determined value happens after the shares have already stopped trading. Your price file ends. The exit value, if any, arrives outside the market. Marking these at the last traded price is generous, and marking them at zero is harsh, and there is no honest way to split the difference from price data alone.
The fourth row is DHFL, and it is the case the exit assumption was invented for. JETAIRWAYS reached the same destination by a slower route, with the Supreme Court ordering liquidation on 7 November 2024 and trading suspended the following day (Business Standard, November 2024).
One name worth keeping out of this list is YESBANK. It was removed from the Nifty 50 on 19 March 2020 under the Reconstruction Scheme and has traded continuously since. Index removal is not delisting. Conflating the two produces a different bug, in the index membership series rather than in the exit price, which the post on point-in-time data covers in detail.
The exit price is the half most universes skip
Take a 50-stock equal-weighted portfolio, so each position is 2 percent of net asset value. One holding is suspended and never trades again. The arithmetic below is illustrative, not a backtest result.
Mark it at the last traded price and the portfolio carries a 2 percent line item at a stale value forever, or until the backtest quietly drops it. Mark it at zero on the suspension date and you take a 2 percent hit to NAV in one step. Spread across a fifteen-year CAGR, that single 2 percent position barely registers.
The difference in the drawdown series is not small. A single 2 percent step down landing inside an existing 30 percent drawdown deepens the trough and lengthens the recovery, and max drawdown is the number most people use to decide whether they could actually hold a strategy. The same position marked stale never contributes to the trough at all.
Now scale it. A backtest over 2010 to 2024 on a broad Indian universe will touch more than one of these. Each one is small on its own. Together they are the difference between a drawdown you would have sat through and one you would have abandoned, which is the only test of a strategy that ends up mattering.
The defensible approach is to state the assumption rather than inherit one. Full write-off on suspension is the conservative choice and the one worth defaulting to, because it cannot flatter the result. Recovery at the resolution value is more accurate when you have the resolution value, which is rarely. What is not defensible is not knowing which of the two your backtest did.
Where the deletion is largest
The exposure is uneven, and it maps closely onto which screens retail investors reach for first.
Value screens are the most exposed, for the reason above: cheapness and distress are frequently the same observation, and only one of them is a signal. If you run a low price-to-book rule on a survivor-only universe, you have removed the subset of cheap stocks whose cheapness turned out to be correct. The post on value screens that survive contact with Indian data works through the other filters that same family of strategy needs.
Small and micro caps are next, because the base rate of suspension, non-compliance and insolvency is highest there. The smaller the universe’s median market cap, the larger the share of the original list that has since gone quiet.
High dividend yield screens have a specific version of the problem. Yield is a ratio with price in the denominator, so a stock in free fall screens as high yield on the way down. Delete the ones that stopped trading and what remains is the set of high yields that were real.
Mutual fund performance tables have the same disease and almost nobody adjusts for it. Poorly performing schemes get merged into better ones and the merged history goes with them, so a category average computed from schemes that exist today is an average of the ones that were not shut. SEBI’s 2017 circular on categorisation and rationalisation of mutual fund schemes forced a large round of exactly this consolidation. The effect has been measured directly in US data by Elton, Gruber and Blake in “Survivor Bias and Mutual Fund Performance” (Review of Financial Studies, 1996), which found the bias large enough to change conclusions about whether funds beat their benchmarks. The Indian magnitude is [backtest TBD] and worth measuring rather than assuming.
Measuring it in your own backtest
Four checks, in the order that settles the question fastest.
Count the exits in your trade log. Run a fifteen-year backtest over a broad Indian universe and count the holdings that stopped trading during the test. If that count is zero, you are not looking at a clean result. You are looking at a list of survivors, and no amount of parameter tuning on top of it means anything.
Print the constituent list at three widely spaced historical rebalance dates. If a 2012 rebalance and a 2024 rebalance draw from an identical candidate set, the universe is not a time series and the investable universe your rules saw never existed.
Re-run with both exit assumptions. Mark suspended positions at the last traded price, then re-run marking them at zero, and compare CAGR, max drawdown and drawdown duration across the two. The gap is the size of your exposure to this specific decision. If the gap is large, the assumption is load-bearing and belongs in any write-up of the result.
Split the trade log by outcome. Group the exits into the four routes above. If everything is landing in one bucket, the universe is probably applying one blanket rule to all of them, which is the failure this post is about.
Risks and failure modes
Over-correction is real. Marking every exit at zero treats a merger as a wipeout, and on a universe where mergers outnumber insolvencies the result understates the strategy. The route matters, and applying the harshest assumption everywhere is a different flavour of wrong rather than a safe default.
A survivorship-free universe does not fix data that was never point-in-time. Keeping DHFL in the 2018 universe is progress. Ranking it on financials that were restated in 2021 puts the look-ahead back in through another door.
Corporate actions and exits interact. A merger is both an exit and a corporate action, and if the swap is not applied the acquirer position lands with the wrong share count. Splits and bonus issues need the same care in the ordinary course.
Being able to hold a name is not the same as being able to trade it. A stock heading toward suspension typically spends its final months under surveillance measures and trading restrictions, so a backtest can hold a position that a real account could not have exited at the price on the screen. That is a separate problem from survivorship and it compounds with it.
And the honest one: fixing this makes your results worse. Every properly constructed universe returns a lower CAGR and a deeper drawdown than the survivor-only version of itself. The number falling is the evidence that the fix worked, and the temptation to relax the constraint until the curve looks good again is well documented in the post on cognitive biases that destroy algo trading strategies.
How saral.money handles it
Historical universes retain delisted stocks, so a backtest over the last fifteen years of NSE data can hold a company that later stopped trading and take the loss the way a real portfolio would have. The constituent snapshot at any historical rebalance date is what lets you run the three-dates check above without exporting anything, and the trade log carries every entry and exit so the count of names that stopped trading is a filter rather than a research project. Corporate actions applied to prices are splits and bonus issues; dividends are not accrued into returns, so an equity curve is a price-return figure. The tradeability audit flags securities a backtest traded that would have been hard to trade in reality, including names under surveillance measures. The engine’s data contracts are summarised on the features page.
What to try next
Open the last backtest you were happy with and count the holdings that stopped trading. It takes a minute, and it tells you whether you measured a strategy or measured a universe. Then take a value-tilted strategy template, run it once over 2010 to 2024, and look at what the trade log says about the names that left. The gap between that result and the one you would have got from today’s constituent list is the part of your edge that was never there.
Further reading
- Point in time data: knowing what you knew that day covers the sibling problem in fundamentals and index membership.
- Out of sample testing: what a holdout can prove for what a clean universe still cannot tell you about a tuned strategy.
- Backtesting trading strategies: a step-by-step guide for where these checks sit in a full workflow.
- Glossary: survivorship bias, investable universe, look-ahead bias, max drawdown, corporate action.