Delisting Returns Data: Why Final Returns Matter
A delisting return is the final price movement of a stock when it is removed from an exchange, often involving a sharp drop to zero or a residual value. Ignoring this final return in historical data creates survivorship bias, artificially inflating backtest performance by excluding the losses of failed companies.
What Is a Delisting Return?
A delisting return captures the last price movement of a security before it stops trading on an exchange. When a company is delisted—whether due to bankruptcy, merger, or regulatory failure—its stock often experiences a final, severe decline. This return represents the gap between the last traded price and the stock's ultimate value, which may be zero or a small residual amount in liquidation.
For researchers, this data point is critical. It represents the realized loss (or rarely, gain) that an investor would actually experience holding the stock through delisting. Without it, historical datasets imply that the stock simply vanished at its last traded price, hiding the true cost of holding failing companies.
Why Ignoring Final Returns Inflates Backtests
Backtests that exclude delisting returns systematically overestimate performance. When a dataset only includes currently listed stocks or stops tracking delisted stocks at their last traded price, it omits the catastrophic losses that precede removal from the exchange. A strategy that appears profitable may actually be selecting stocks that later fail, but the backtest never records the final loss.
This creates a distorted view of risk. For example, a momentum strategy might show strong returns by riding stocks upward, but if it fails to account for the delisting returns of stocks that crash and disappear, the backtest ignores the left-tail risk. The result is an overly optimistic Sharpe ratio and an underestimation of maximum drawdown.
Treating the Last Traded Price and the Gap to Zero
The last traded price before delisting is rarely the final value. Stocks often gap down significantly when delisting is announced, or they may trade at near-zero prices before formal removal. Researchers must decide how to treat this gap: using the last traded price assumes you could exit at that level, which is often unrealistic due to illiquidity.
A conservative approach applies a delisting return that marks the stock to zero or its liquidation value. This ensures the backtest reflects the true economic outcome. FinzData includes delisted names on the look-back plan, providing the complete price history including the final bars before removal, so you can model this gap explicitly rather than assuming a clean exit.
Understanding Survivorship Bias in Equity Data
Survivorship bias occurs when datasets only include companies that survived to the present day. This excludes bankrupt firms, failed startups, and delisted entities, creating an upward bias in historical returns. The bias is particularly severe in small-cap and distressed strategies, where failure rates are higher.
To avoid this, researchers need access to historical data that includes delisted stocks. FinzData provides coverage of US-listed equities including delisted names, with history back to January 2000 on the look-back plan. This allows you to build datasets that reflect the full investable universe, not just the winners.
Practical Data Requirements for Researchers
Academic and quantitative research requires unadjusted OHLCV bars with flexible adjustment options. FinzData stores end-of-day OHLCV bars unadjusted, applying adjustments on read with options for none, splits, or all. This lets you choose the appropriate methodology for your study—whether you need raw prices for event studies or adjusted prices for return calculations.
The data includes standard fields: date, open, high, low, close, and volume. For ETF research, FinzData covers 231 US-listed ETFs with daily bars, split-adjusted as traded, though dividends are not applied to ETF prices. Intraday data is available hourly on every bundle, with 1-minute and 5-minute bars from 25 years.
Accessing Delisting Data with Python
Researchers can access this data through a Python client designed for backtesting and analysis. The API follows familiar patterns, making it straightforward to integrate into existing research workflows.
import finzdata as yf df = yf.Ticker("MSFT").history(start="2000-01-01", auto_adjust=True) print(df.tail())
This simple interface returns unadjusted or adjusted data depending on your parameters, with delisted stocks included when you query historical universes. The look-back plan provides access to the full history needed for rigorous academic backtesting.
Frequently asked questions
What is a delisting return?
A delisting return is the final price change of a stock when it is removed from an exchange, typically involving a decline to zero or residual value. It represents the actual loss investors realize when holding a stock through failure.
How does ignoring delisting returns affect backtests?
Ignoring delisting returns inflates backtest performance by excluding the catastrophic losses of failed companies. This creates survivorship bias, making strategies appear more profitable and less risky than they actually were.
Should I use the last traded price for delisted stocks?
Using the last traded price is often unrealistic because liquidity disappears before delisting. A more conservative approach marks the stock to zero or liquidation value to reflect the true economic loss.
What is survivorship bias?
Survivorship bias occurs when historical data only includes companies that still exist today, excluding bankrupt and delisted firms. This skews returns upward and understates risk, particularly in strategies involving small or distressed companies.
Where can I get historical data that includes delisted stocks?
FinzData provides US-listed equity data including delisted names, with history back to January 2000 on the look-back plan. The data includes unadjusted OHLCV bars with flexible adjustment options applied on read.