我们做了一个实验:用今天的 SP500 成分股列表回测 2016-2026,和用每个时间点真实的成分股列表回测,结果差距触目惊心——动量策略收益被高估 102%,等权再平衡策略高估 42%。
问题:什么是幸存者偏差?
回测 SP500 策略时,你需要知道每个历史日期指数里有哪些股票。但大多数免费数据源只给你当前的列表——今天还在指数里的 500 多只股票。
问题在于:今天还在 SP500 里的公司,是活下来的幸存者。雷曼兄弟、安然、世通、硅谷银行——它们已经消失了。在大跌、破产后被踢出指数。但如果你用今天的列表回测,这些输家在你的历史数据里根本不存在。
你只统计了赢家。这会系统性地虚增你的收益。
实验:4 个策略 × 2 组对比
我们在 10 年周期(2016-2026)上对比了两组:
- A 组(有偏差):用 2026 年 7 月最新的 SP500 成分股列表——今天指数里的 503 只股票。这是大多数免费回测工具的做法。
- B 组(时点真实):每个再平衡日查询当日真实的成分股,来自 Wikipedia 审核过的变更记录(899 条核准记录,覆盖 1957 年至今)。
两组使用完全相同的策略逻辑、相同的再平衡频率(月度)、相同的价格数据。唯一的变量是成分股列表的来源。
实验结果
| 策略 | 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%)是因为两个效应叠加:
- 幸存者偏差:当前 SP500 列表只包含赢家。动量从已经筛选过的赢家池里再选最强股——等于叠加了两次筛选。
- 穿越时空偏差:用今天的列表让 A 组能"投资"未来才加入 SP500 的股票。比如 ARM 在 2026 年才加入指数,但 A 组在 2018 年就能选中它——在它还不是成分股的时候。你在用当时还不存在的信息交易。
偏差排序有清晰的规律:偏差 = 受幸存者影响程度 × 选股放大效应。动量(双重偏差)> 再平衡(月度放大)> 持有 > 低波动(较少触及退市股)。
这对你意味着什么
如果你用免费的 SP500 列表回测:
- 你的动量策略 21% 年化收益实际只有 10%——勉强高于无风险利率。
- 你的等权策略被高估了 32-42%,足以把结论从"值得跑"变成"不值得冒这个险"。
- 即使是筛选稳定性的低波动策略,也被高估了 16%。
没有任何策略能完全免疫。唯一的解决办法是使用时点成分股数据——每个历史日期指数里真实包含的股票,包括后来被剔除的那些。
别让幸存者偏差欺骗你
获取 point-in-time 标普 500 成分股数据。899 条核准记录,覆盖 1957 年至今,退市股覆盖率 100%。
怎么解决
Stockmere 提供基于 Wikipedia 完整历史变更表的 point-in-time 标普 500 成分股数据:
- 899 条核准记录,覆盖 1957-2026,每条都有
effective_from/effective_to生效日期 - 873 个独立代码(当前列表只有 503 个)——包含所有退市/改名/合并的公司
- 100% 退市股覆盖,含改名/合并股票的 ticker 映射
- 支持 REST API 和 MCP(AI Agent 可用)
查看 API 文档 → 订阅 Point-in-Time 数据 →
本文不构成投资建议。历史表现不代表未来收益。数据来自 Wikipedia “List of S&P 500 companies”,CC BY-SA 4.0 授权。非 S&P Dow Jones Indices 官方数据。
← 返回文章列表