我们做了一个实验:用今天的 SP500 成分股列表回测 2016-2026,和用每个时间点真实的成分股列表回测,结果差距触目惊心——动量策略收益被高估 102%,等权再平衡策略高估 42%

问题:什么是幸存者偏差?

回测 SP500 策略时,你需要知道每个历史日期指数里有哪些股票。但大多数免费数据源只给你当前的列表——今天还在指数里的 500 多只股票。

问题在于:今天还在 SP500 里的公司,是活下来的幸存者。雷曼兄弟、安然、世通、硅谷银行——它们已经消失了。在大跌、破产后被踢出指数。但如果你用今天的列表回测,这些输家在你的历史数据里根本不存在。

你只统计了赢家。这会系统性地虚增你的收益。

实验:4 个策略 × 2 组对比

我们在 10 年周期(2016-2026)上对比了两组:

两组使用完全相同的策略逻辑、相同的再平衡频率(月度)、相同的价格数据。唯一的变量是成分股列表的来源。

实验结果

策略 A — 有偏差 B — 时点真实 偏差/年 高估
动量 Top 20% +21.5%/年 +10.6%/年 +10.85% 102%
等权月度再平衡 +17.4%/年 +12.2%/年 +5.14% 42%
等权买入持有 +19.8%/年 +15.0%/年 +4.79% 32%
低波动 +8.1%/年 +7.0%/年 +1.14% 16%

一个看起来年化 21.5% 的策略,实际上只有 10.6%——接近腰斩。这足以改变"这个策略值不值得用"的结论。

为什么动量偏差最大:双重叠加

动量偏差最大(102%)是因为两个效应叠加

  1. 幸存者偏差:当前 SP500 列表只包含赢家。动量从已经筛选过的赢家池里再选最强股——等于叠加了两次筛选。
  2. 穿越时空偏差:用今天的列表让 A 组能"投资"未来才加入 SP500 的股票。比如 ARM 在 2026 年才加入指数,但 A 组在 2018 年就能选中它——在它还不是成分股的时候。你在用当时还不存在的信息交易。

偏差排序有清晰的规律:偏差 = 受幸存者影响程度 × 选股放大效应。动量(双重偏差)> 再平衡(月度放大)> 持有 > 低波动(较少触及退市股)。

这对你意味着什么

如果你用免费的 SP500 列表回测:

没有任何策略能完全免疫。唯一的解决办法是使用时点成分股数据——每个历史日期指数里真实包含的股票,包括后来被剔除的那些。

别让幸存者偏差欺骗你

获取 point-in-time 标普 500 成分股数据。899 条核准记录,覆盖 1957 年至今,退市股覆盖率 100%。

体验幸存者偏差实验室 →

怎么解决

Stockmere 提供基于 Wikipedia 完整历史变更表的 point-in-time 标普 500 成分股数据:

查看 API 文档 →    订阅 Point-in-Time 数据 →

本文不构成投资建议。历史表现不代表未来收益。数据来自 Wikipedia “List of S&P 500 companies”,CC BY-SA 4.0 授权。非 S&P Dow Jones Indices 官方数据。

← 返回文章列表