前视偏差
危害最大定义
前视偏差是指策略使用了在做出交易决策时实际上无法获得的信息。最常见的形式,是用第 T 根 K 线的收盘价产生信号,然后同样以第 T 根 K 线的收盘价执行交易。现实中,收盘价要等 K 线收盘后才能知道,而此时市场已经收盘。
✗ 有偏差(多数散户工具的做法)
在第 T 根 K 线收盘时产生信号 → 同样按第 T 根 K 线收盘价成交。这在现实中不可能实现——你无法以刚刚才知道的价格进行交易。
✓ 我们的做法
在第 T 根 K 线收盘时产生信号 → 交易排队等待 → 按第 T+1 根 K 线开盘价成交。这是现实中最早可以执行的价格。
我们同时防范的其他前视偏差形式
- 使用第 T 根 K 线的最高价/最低价触发止损——这些数值要等 K 线收盘后才能知道
- 指标计算引用了“未来”的周期(例如居中移动平均线)
- 使用整个数据集的最小值/最大值进行标准化,而不是滚动最小值/最大值
- 策略参数在整个区间内优化,然后又在同一区间内测试
- 盈利超预期信号在公告日期之前就使用了实际每股收益(EPS)
幸存者偏差
高估风险幸存者偏差是指回测只纳入目前仍在交易所上市的股票。在测试期间破产、被收购或退市的公司被排除在外——尽管它们在当时都是有效的交易标的。结果是历史收益看起来比实际好得多,因为所有“输家”都已被悄悄地从数据集中剔除。
对恒生指数成分股范围的量化影响:
~15–20%
在 10 年回测中,恒指成分股的历史记录至少包含一只已退市股票
~3–8%
动量策略因幸存者偏差而高估的典型年度收益
100%
我们的回测在历史股票范围中全部包含已退市证券
✗ 有偏差的股票范围
只对目前标普 500 指数内的 500 只股票进行测试,过往所有破产、退市及被剔除的个案均被排除。收益偏差:每年 +3% 至 +8%。
✓ 我们的做法
每个历史日期的股票范围,均包含当日所有已上市的股票——包括之后退市或破产的股票。即时点(point-in-time)股票范围构建。
过拟合(曲线拟合)偏差
最为常见过拟合是指策略在历史数据上被过度优化,以至于实际上只是“记住”了过去,而没有学到可以推广的规律。一个有 12 个参数、全部用 3 年数据调优的策略,会呈现出亮眼的历史表现,却会在实盘交易中立刻失效。
我们如何检测并防止过拟合
我们倾向于采用自由参数少于 5 个的策略。每增加一个参数,曲线拟合的风险就会翻倍。
我们将每个参数上下调整 ±10–20%,并衡量对收益的影响。稳健的策略呈现平滑而平坦的曲面,而不是尖锐的峰值。
我们把历史区间划分为 5 个互不重叠的区段,并衡量所有区段之间结果的一致性。
交易少于 50 次的回测,统计证据不足。我们要求至少 100 次完整的往返交易。
我们将交易顺序随机打乱 10,000 次,以衡量收益分布,以及随机排序下的最坏情形。
选择偏差
常被忽视选择偏差是指选取哪些标的进行回测,在有意或无意之间受到这些标的过往表现的影响。如果只在过去十年涨幅最大的股票上测试动量策略,结果必然带有偏差。
标的选择
我们在查看结果之前先确定交易范围。范围标准基于客观筛选条件:市值、流动性、行业——而不是历史表现。
时间区间选择
我们使用每个标的可获得的完整历史,而不是刻意挑选的区间。如果测试 2010–2024 年,就会包含 2015 年中国股灾、2018 年调整以及 2020 年新冠股灾。
策略选择
我们记录所有测试过的策略,而不仅仅是有效的那些。发表偏差(只展示表现好的结果)也是选择偏差的一种。
基准选择
用于比较的基准在测试开始前就已确定。我们不会在看到结果后更换基准,以使相对表现看起来更好。
优化偏差
参数风险优化偏差是过拟合的一种特定形式。当你对数百种参数组合进行网格搜索并挑选表现最佳者时,你找到的并不是“真正”的最优参数,而是由于随机噪声恰好在该段历史区间表现最好的参数。
说明:为什么“最佳”参数具有误导性
我们的优化规则
- ● 策略参数在运行样本内回测之前就已设定
- ● 如果使用优化,只在训练集上进行——绝不在验证集上进行
- ● 我们会报告优化曲面(而不仅仅是峰值),让读者可以看到稳健程度
- ● 我们倾向选用位于平坦高原的参数值,而不是狭窄的峰值
- ● 滚动前推优化:定期重新优化参数,模拟真实的自适应管理
样本外验证
最后关卡样本外(OOS)测试是最重要的验证步骤。策略在训练集上开发并优化完成后,会在一段完全独立的保留区间内测试一次。OOS 结果不能用于进一步修改策略——否则该保留区间就不再是真正的样本外。
15 年回测的典型数据划分
策略开发
(20%)
(20%)
滚动前推测试
滚动前推测试是更精细的 OOS 测试形式,模拟真实交易者定期重新优化策略的过程。我们不采用单一固定的训练/测试划分,而是使用滚动窗口:用最初 N 根 K 线优化,在随后 M 根 K 线上测试,向前推进 M 根 K 线,然后重复。
滚动窗口
我们使用 12 个月的优化窗口,每次向前推进 3 个月,每个窗口相互独立。
一致性检查
我们衡量滚动前推表现与样本内表现的比率。比率高于 50% 表明策略稳健。
两者并列呈现
所有报告均并排展示样本内与滚动前推(样本外)结果,确保完全透明。
偏差控制摘要
| 偏差类型 | 典型影响 | 我们的控制 | 状态 |
|---|---|---|---|
| 前视偏差 | 影响极大——可使报告收益翻倍 | 下一根 K 线开盘价执行;事件驱动引擎 | 已控制 |
| 幸存者偏差 | 年度收益高估 +3–8% | 包含已退市股票的即时点股票范围 | 已控制 |
| 过拟合 | 策略在实盘交易中失效 | 参数敏感度;蒙特卡洛;≥100 次交易 | 已控制 |
| 选择偏差 | 只展示刻意挑选的优胜者 | 预先确定股票范围;完整历史;报告所有测试 | 已控制 |
| 优化偏差 | 虚假的“最优”参数 | 经济逻辑;滚动前推;偏好平坦高原 | 已控制 |
| 缺少 OOS 验证 | 样本内结果 ≠ 实盘结果 | 60/20/20 划分;滚动前推测试 | 已控制 |