← ClaudeAtlas

survivorship-biaslisted

Use when constructing a backtest universe, computing index/sector returns, ranking strategies, or comparing performance across time. Catches the silent inflation that comes from using today's universe (or today's ticker resolution, or today's index membership) for a historical backtest. Especially severe in small caps and FPI-heavy universes where delisting rates exceed 30% over five-year windows.
jefrnc/quant-llm-skills · ★ 0 · AI & Automation · score 73
Install: claude install-skill jefrnc/quant-llm-skills
# Survivorship bias The companion to `lookahead-safety`: that one stops you from using data that didn't exist yet. This one stops you from using a UNIVERSE that didn't exist yet. Together they're the two halves of "what was actually knowable, on what tickers, on a given date." ## Core principle **A backtest universe must be reconstructed at every rebalance / query date from the membership snapshot AT that date — never from today's resolution.** Today's S&P 500 contains companies that joined in 2024. Today's Russell 3000 excludes companies that delisted in 2022. Today's "all US small-caps" is filtered by who survived to today. Using any of those for a 2018 backtest is the single most common way to manufacture alpha that doesn't exist. ## Where survivorship bias enters silently ### 1. Universe construction **Bug:** "Pull all small caps with mkt cap < $300M today, then run the strategy on their 2018-2023 history." **Why wrong:** The bankrupt, merged, and reverse-split-delisted small caps from that period are gone. You're testing only on companies that survived. Returns inflated, drawdowns understated. **Fix:** point-in-time universe — at each rebalance date, query the universe AS OF that date including names that subsequently delisted. ### 2. Ticker resolution **Bug:** Vendor API returns "no data" for a delisted ticker, or silently returns the SUCCESSOR entity's data. **Why wrong:** Some yfinance / Polygon resolutions for delisted tickers map to merger-acquirer prices, f