前视偏差与幸存者偏差¶
定义¶
前视是用决策当时还不知道的价格或财报。幸存者偏差是样本里只留下活到今天的证券或基金。
公式¶
\[
r^{\text{lookahead}}_{t}=w(p_t)\,r_t,\qquad
r^{\text{honest}}_{t}=w(p_{t-1})\,r_t
\]
同一条 SPY 10 个月均线:诚实延迟的夏普是 0.51,用当月收盘决定当月收益的夏普是 1.77。基金生存偏差大约每年 0.9 个百分点,这是基金样本的数量级,不是股票公式。
直觉¶
后视镜里每条规则都更聪明。把还没公布的收盘写进信号,等于允许自己在收盘之后改早晨的决定。
实务要点 / 常见误区¶
- 引擎已经把成交放到下一期时,策略里不要再
shift一次。 - 复权要向前累加。后来的分红不能改写更早的信号。
- 财务信号用可用时间戳,不用报表期间的最后一天。
相关概念¶
- SUE 与盈余公告后漂移 (
sue_and_pead) - 清除交叉验证与禁运 (
purged_kfold_embargo) - Fama–MacBeth 回归 (
fama_macbeth_regression)
代码¶
def honest_position(signal: list[float]) -> list[float]:
# 今天的仓位只能用昨天已经收盘的信号。
return [0.0] + signal[:-1]
教材:M03 数据与回测工程