[ 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 ]

TimeframeFilesDate Range
1-Min6,7662000-01-03 .. 2026-07-24
5-Min6,7662000-01-03 .. 2026-07-24
30-Min6,7662000-01-03 .. 2026-07-24
1-Hour6,7662000-01-03 .. 2026-07-24
Daily6,7942000-01-03 .. 2026-07-24

[ Related ]

stock data hub · browse stock daily · pricing · intraday stock data · yfinance limitations