定义:在回测中使用了策略构建时尚未知晓的未来数据,导致绩效虚高。
# 前视偏差示例 (错误) df['signal'] = (df['close'].shift(-1) > df['close']) # 使用了未来收盘价
只关注“幸存”标的,忽略退市/破产样本。 回测收益被系统性高估。
| 组合 | 年化收益 | 最大回撤 |
|---|---|---|
| 幸存者 | +14.2% | -18% |
| 全样本(含退市) | +9.7% | -34% |
数据选择/时间段/参数选择导致的有偏结论。 常见于“最佳”参数或特定牛市区间。
样本内: 用于训练/拟合策略参数的数据。
样本外: 未参与拟合、模拟未来未知的数据。
# 时间序列分割 (伪代码) split_idx = int(len(df) * 0.7) train = df.iloc[:split_idx] # 样本内 test = df.iloc[split_idx:] # 样本外
| 偏差类型 | 本质 | 典型后果 | 防范措施 |
|---|---|---|---|
| 前视偏差 | 未来信息泄漏 | 回测虚高,实盘崩溃 | 严格时间戳、点进点出 |
| 幸存者偏差 | 忽略退市样本 | 收益高估2~5% | 使用全样本 + 退市数据 |
| 选择偏差 | 数据/参数选择偏误 | 统计显著性虚假 | 多重假设检验校正 |
| IS/OOS 失衡 | 样本内过拟合 | OOS 绩效骤降 | 滚动验证、正则化 |
🔁 迭代中避免数据窥探,保持样本外独立性