Survivorship Bias in the S&P 500: Why the Past Looks Better Than It Was
When you analyze historical S&P 500 data, you're only seeing the companies that survived. The ones that went bankrupt, got acquired, or were dropped from the index don't show up. That creates a systematic bias: the data looks better than reality actually was.
What it is, exactly
If the S&P 500 had 500 companies in 2000 and you analyze historical returns using only today's index members, you're only seeing the companies that made it — implicitly discarding the losses from the ones that didn't.
The result: historical average returns are inflated. A company that fell 80% and was dropped from the index doesn't show up in any backtest based on the S&P 500's current composition.
Why it matters when using OjoAlTicker
OjoAlTicker works with the current constituents of the S&P 500, Nasdaq 100, IBEX 35 and ETFs. This means:
- The 3 years of history only show companies that were already in the index and remain in it.
- Historical return metrics (Sharpe, CAGR, volatility) are likely somewhat better than they would be over the full universe from that period.
- The optimizer selects, by construction, the assets that performed best in that window — including luck alongside signal.
How to mitigate it (partially)
- Always compare against the full index and against an equal-weighted (1/N) portfolio: if the optimized portfolio doesn't beat them by a clear margin, the excess may just be data bias.
- Don't extrapolate historical returns into the future as if they were guarantees.
- Use the optimizer as a lab to fine-tune a portfolio you've already thought through, not to pick tickers from scratch.
The author's note in the optimizer explains these limitations in more detail.
