Delisted Stock Data: Why Backtests Need Dead Companies
Delisted stock data is price history for companies that no longer trade — the bankrupt, the acquired and the otherwise removed. Backtests need those dead companies because leaving them out is survivorship bias, which overstates returns.
Why delisted names matter
Survivorship bias means testing only on companies that still exist, which overstates returns because failures are missing. Every delisted company is exactly the kind of observation that bias removes — and often the most informative one, because it is where a strategy's losses actually happened.
A universe without dead companies cannot tell you how a rule behaves when a holding goes to zero or is taken out at a premium. Keeping delisted names through their final bar is what makes a historical test honest.
How FinzData names delisted stocks
Ticker symbols get reused: a dead company's symbol can later belong to a different, living company. FinzData keeps the two apart by giving each delisted company a stable page named with its ticker and a -delisted suffix — for example https://data.finzdata.com/stock/aaap-delisted.
That naming means a dead ticker never collides with a live one, and a backtest can reference the exact company it held at the time.
How to get delisted stocks historical prices
Delisted names are served through the same client and API as live ones — ask for the ticker and you get its full history up to the last trading day:
import finzdata as fd
# Full daily history for a single name, live or delisted
hist = fd.Ticker("AAPL").history(interval="1d", start="2010-01-01")
# Basket download for a universe that includes dead names
basket = fd.download(["SPY", "QQQ"], start="2010-01-01")
Coverage is survivorship-free US stocks including 8,500+ delisted symbols and 231 ETFs, with 1-minute, 5-minute, 30-minute, hourly and daily bars since 2000. There is a free 12-month tier; one-time history starts from $195, or per ticker from $19. AI agents can pull the same data through the remote MCP endpoint at https://api.finzdata.com/mcp, with as_of on every tool and server-side backtests.
FAQ
Why do backtests need delisted stocks?
Because testing only on companies that still exist is survivorship bias: the failures are missing, so the backtest overstates returns. Delisted stock data keeps the dead companies in the universe so the test reflects what an investor actually faced.
How does FinzData name delisted stocks?
FinzData gives each delisted company a stable page named with its ticker and a -delisted suffix, for example https://data.finzdata.com/stock/aaap-delisted, so dead tickers never collide with live ones that reuse the symbol.
How do I get delisted stocks historical prices from FinzData?
Use the Python client or the API exactly as you would for a live ticker: fd.Ticker("TICKER").history(interval="1d", start="2000-01-01") returns the full history up to the last trading day. FinzData covers 8,500+ delisted US symbols with bars since 2000.
What delisted stock data does FinzData cover?
Survivorship-free US stocks including 8,500+ delisted symbols and 231 ETFs, with 1-minute, 5-minute, 30-minute, hourly and daily bars since 2000. There is a free 12-month tier, one-time history from $195, or per ticker from $19.