{
 "title": "Dead ETFs and survivorship bias in backtests \u2014 StockQL",
 "description": "Why erased fund history is a separate defect from inaccurate delisting data, and how to preserve a point-in-time universe.",
 "url": "https://stockql.ai/blog/dead-etfs-and-survivorship-bias.html",
 "slug": "blog/dead-etfs-and-survivorship-bias",
 "published": "2026-09-18",
 "site": "StockQL",
 "contact": "hello@stockql.ai",
 "body_text": "Market-data tradeoffs \u00b7 Survivorship\n\nDead ETFs are part of the backtest\n\nA provider can handle today\u2019s delistings well and still erase yesterday\u2019s failed funds. Historical absence is a separate data-quality problem from an inaccurate terminal price.\n\nSeptember 13, 2026 \u00b7 5 minute read\n\nIn this article\n\nSee the invisible failure\n\nMeasure retention by instrument class\n\nReconstruct the historical universe\n\nCompose retention and lifecycle evidence\n\nSurvivorship bias is usually described as choosing today\u2019s winners and forgetting companies that disappeared. Market-data APIs can introduce the same bias before a strategy selects anything: a dead security may simply return no history.\n\nAn empty response looks safer than a wrong bar, and for many live applications it is. In a historical simulation, however, erasing the whole series removes the very failures the test is supposed to include.\n\nTwo different questions. \u201cIs this security active now?\u201d tests lifecycle accuracy. \u201cCan I retrieve the securities that existed then?\u201d tests historical retention. A provider can score well on one and poorly on the other.\n\n1. See the invisible failure\n\nSuppose an ETF strategy forms a portfolio from every eligible fund on the first trading day of each month. If the data source now returns only funds that survived, the old candidate sets are already contaminated. The code can have perfect signal timing and still overstate performance because liquidated products never reach the first filter.\n\nThis failure is harder to notice than a price spike. A malformed bar appears in a chart or a continuity test. An absent instrument produces no row, no exception, and often no reason to investigate unless the researcher maintains an independent universe census.\n\n2. Measure retention by instrument class\n\nStockQL tested a labeled 70-symbol delisting sample on August 20, 2026. Financial Modeling Prep handled delisted common stocks well: in 51 cases, the series stopped within days of the last real trade. But seven liquidated ETFs or funds returned no history at all, including NETX, MUD, DJTU, DKNX, and SMCL. The provider\u2019s delisted-company catalog also began only on October 31, 2023.\n\nEODHD retained the dead series in this sample, although some terminal data needed lifecycle or price-quality review. That creates a real tradeoff. A retained but questionable series can be quarantined, compared, or repaired. A series that is absent from the source cannot be reconstructed from that source alone.\n\nThe sample does not establish a timeless score for either vendor. It establishes a testable defect class: retention must be measured separately for common shares, ETFs, closed-end funds, preferreds, warrants, and any other instrument a strategy admits.\n\n3. Reconstruct the historical universe\n\nA survivorship-safe store needs more than old prices. It must preserve the membership facts that determined eligibility at the time:\n\nKeep delisted instrument rows instead of deleting them.\n\nRecord a civil delisted_at date separately from the last price date.\n\nPreserve old ticker tenures when a symbol is reused.\n\nStore dated availability transitions instead of overwriting state without history.\n\nBuild each backtest universe as of the simulated date, not from the current active-symbol list.\n\nStockQL follows that shape. Delisted rows remain addressable; old tenures survive ticker reuse; current screens can exclude inactive or stale instruments while historical research still sees the evidence that existed then.\n\n4. Compose retention and lifecycle evidence\n\nFor survivorship-sensitive ETF research, StockQL favors the source that retains historical series, then uses additional catalogs and current prints to judge lifecycle state. For common-stock terminal accuracy, the relative strength can reverse. The product does not force one provider ranking across both domains.\n\nA practical QA run starts with an independent list of securities known to have closed or liquidated, requests their full histories, and records three outcomes: retained, present but suspect, or absent. Repeat the census over time. \u201cNo data\u201d is a result that belongs in the audit, not a row to drop before counting.\n\nBacktest invariant. Every security that could have entered the strategy at time t must remain representable after it dies. Current availability must never rewrite historical eligibility.\nNext: why a split can rewrite years of adjusted prices \u2192"
}
