4. 幸存者偏差的数学原理
在上一节中,我们已经直观地看到:只统计“活下来”的样本,会系统性地高估策略表现。本节要把这种直觉形式化,用三个数学工具解释幸存者偏差为什么必然导致回测失真:选择偏差决定样本如何被筛掉,条件概率刻画“被观测到”这一事件对分布的影响,期望扭曲则给出偏差的最终量化结果。理解这三者,才能在后续的 Point-in-Time 回测中知道该修哪里、修到什么程度。
一、核心原理:从全样本到幸存样本的映射
设真实策略集合为 \( \Omega \),其中每个策略 \( i \) 有一个真实收益 \( R_i \)。回测者实际能观测到的,只是满足“存活条件”的子集 \( S \subseteq \Omega \)。幸存者偏差的本质,是我们用 \( E[R \mid S] \) 去估计 \( E[R] \),而两者一般不等。
选择偏差(Selection Bias)描述的是进入样本的机制不是随机的。若存活概率 \( P(S \mid R) \) 与收益 \( R \) 正相关——高收益策略更容易被保留、被展示、被继续跟踪——那么样本就是有偏的。条件概率把这一点写清楚:
P(R | S) = P(S | R) · P(R) / P(S)
其中:
P(R) :全样本中收益为 R 的先验概率
P(S | R) :给定收益 R 时被观测到的概率(存活/入选机制)
P(R | S) :在幸存样本中观测到收益 R 的概率
P(S) :整体被观测到的边际概率
当 \( P(S \mid R) \) 随 \( R \) 增大而增大时,\( P(R \mid S) \) 会把高收益区域的概率质量放大,把低收益和已退出样本的概率质量压缩。这就是“看到的分布”与“真实分布”分叉的起点。
二、期望扭曲的推导与量化
把偏差落到期望上,可以得到一个非常实用的分解。设真实期望为 \( \mu = E[R] \),幸存样本期望为 \( \mu_S = E[R \mid S] \),则:
μ_S - μ = E[R | S] - E[R]
= Cov(R, 1_S) / P(S)
其中 1_S 为存活指示变量。
若 Cov(R, 1_S) > 0,则 μ_S > μ,回测被高估。
这个式子说明:偏差大小等于收益与存活指示变量的协方差除以存活率。它带来三个直接推论:
- 存活率 \( P(S) \) 越低,同样的协方差造成的期望扭曲越大;
- 只要存活机制与收益相关,偏差就不会因为样本量增大而消失,反而更稳定地显现;
- 偏差方向由协方差符号决定,若“差策略更容易被保留”(如某些数据供应商只保留有历史记录的基金),偏差甚至可能反向。
三、方法流程:识别与校正幸存者偏差
在实战中,可以按以下流程把上述数学原理落地为可执行步骤:
- 定义全样本宇宙:明确在回测起点时点上,哪些标的、策略、基金是“当时真实存在”的,而不是今天还活着的。
- 记录退出事件:退市、清盘、停止披露、策略下线,都要作为样本的一部分保留,并记录退出时间与退出原因。
- 估计存活机制:分析 \( P(S \mid R) \) 是否与收益相关,可用分组统计或逻辑回归检验。
- 构造 Point-in-Time 面板:每个调仓日只使用当日可得的信息集,避免未来函数。
- 计算偏差上界:用 \( Cov(R, 1_S)/P(S) \) 估算期望扭曲量级,判断是否需要更严格的校正。
- 敏感性分析:分别用“仅幸存样本”和“含退出样本”回测,对比差异,形成偏差报告。
下面是一个最小化的 Point-in-Time 样本构造示例,重点在于“按日期切片”而不是“按当前名单回溯”:
# 伪代码:Point-in-Time 样本构造
for date in rebalance_dates:
universe = get_universe_as_of(date) # 当日真实存在的标的
prices = get_prices_as_of(date) # 当日可得价格
signals = compute_signals(universe, prices)
weights = optimize(signals)
record_portfolio(date, weights)
# 关键:universe 必须包含之后退出的标的
# 退出标的在退出日之后不再参与,但退出前必须保留
四、案例与场景:同一策略的两种回测
假设某量化团队开发了一个“小盘价值”策略,初始股票池为 2015 年全部 A 股。到 2024 年,部分股票已退市或被 ST 后长期停牌。团队分别用两种方式回测:
| 对比项 | 仅幸存样本回测 | Point-in-Time 回测 |
|---|---|---|
| 股票池 | 2024 年仍上市的股票 | 每个调仓日真实存在的股票 |
| 退市样本 | 被剔除 | 保留至退出日 |
| 年化收益 | 18.5% | 11.2% |
| 最大回撤 | -22% | -35% |
| 偏差来源 | 高收益幸存者被保留 | 包含退市与清盘损失 |
差异并非来自策略逻辑变化,而是来自样本选择。仅幸存样本回测中,那些因财务恶化而退市的股票被系统性删除,相当于人为剔除了左尾损失,于是收益被高估、回撤被低估。这正是 \( Cov(R, 1_S) > 0 \) 在真实数据中的体现。
五、常见误区与复盘
- 误区一:样本足够大就没有偏差。偏差来自选择机制,不来自样本量。大样本只会让有偏估计更稳定。
- 误区二:只要用了历史数据就是 Point-in-Time。Point-in-Time 的核心是“当时可得”,而不是“历史日期”。当前成分股回溯历史,仍然是幸存者样本。
- 误区三:退市样本影响很小,可以忽略。在小盘、高波动策略中,退市与清盘往往集中在左尾,忽略它们会显著改变期望与回撤。
- 误区四:校正一次就一劳永逸。存活机制会随市场制度、数据供应商政策变化,需要定期重新检验。
把本节内容压缩成一句话:幸存者偏差的数学本质,是用条件分布 \( P(R \mid S) \) 替代了真实分布 \( P(R) \),其期望扭曲量级由 \( Cov(R, 1_S)/P(S) \) 决定。只有显式建模“谁被观测到、谁被剔除”,Point-in-Time 回测才真正成立。