[ Delisted stock data for survivorship-bias-free backtesting ]
Updated every trading day -- latest stock data: 2026-07-24.
[ Why delisted tickers matter ]
MarketParquet stock history includes delisted securities, so a backtest is not limited to companies that survived until today. Stock files cover 1-minute, 5-minute, 30-minute, 1-hour, and daily bars back to January 2000.
Stock and ETF prices are split and dividend adjusted. Historical prices are retroactively adjusted so series remain continuous and directly comparable.
[ Terminal-date workflow ]
Files are partitioned by trading date under by_date/stock_{timeframe}/YYYY/YYYY-MM-DD.parquet.
Each file contains all symbols for that trading day, including names that later
disappear from active listings.
import polars as pl
df = pl.scan_parquet("by_date/stock_daily/2024/*.parquet")
by_symbol = (
df.group_by("symbol")
.agg([
pl.col("date").min().alias("first_seen"),
pl.col("date").max().alias("last_seen"),
])
.collect()
)
[ Available stock files ]
[ Related ]
stock data hub · browse stock daily · pricing · intraday stock data · yfinance limitations