过度拟合及其避免方法
理解为什么经过优化的回测会高估未来结果,并利用参数平台、测试次数和简洁性规则来减少过度拟合。
你将学到什么
- 什么是过度拟合,以及为什么它是回测在实盘中失效的最常见原因。
- 你进行的测试次数如何纯粹凭运气制造出“赢家”。
- 如何解读参数网格,以及为什么应优先选择平台而不是尖峰。
- 打造更简洁、更稳健系统的实用规则。
讲解
曲线拟合已在课程《深入技术分析》中简要介绍过。在这里,你将学习如何衡量它,以及如何设计能够抵御它的测试。
什么是过度拟合
每一段价格历史都包含两部分:可能可以重复出现的规律(信号)和随机波动(噪音)。过度拟合是指规则适应了噪音。这时回测看起来非常出色,因为过去的噪音被完美拟合了,但噪音不会重复出现,所以实盘结果会更差。你在查看结果的同时做出的选择越多,拟合的噪音就越多。
自由度
自由度是指一套规则能够迁就数据的所有方式:每一个参数、每一个过滤条件、每一个“只在周二”之类的例外,以及每一个因为效果不好而被你剔除的市场。一条常用的经验法则是,相对于参数数量,交易笔数要足够多,例如每个自由参数对应几十笔交易;请把这视为最低要求,而不是保证。
多重检验问题
假设你测试了 20 个实际上没有任何优势的规则变体,并且只要某个结果纯属偶然出现的概率仅为 5%,你就称其为“显著”。如果这些测试相互独立,那么至少有一个看起来显著的概率为:
1 − 0.95^20 ≈ 0.64,即大约 64%。
如果有 100 个变体,这一概率约为 99%。因此,即使没有任何方法奏效,众多测试中最好的那个也预计会看起来不错。一种简单的修正方法是邦费罗尼校正,即把阈值除以测试次数:5% ÷ 20 = 0.25%。对相似变体进行的真实测试并不相互独立,因此真实数值会有所不同,但方向始终相同:测试越多,需要的证据就越强。请保留一份研究日志,记录你尝试过的每一个变体,而不只是最终的那一个。
平台与尖峰
参数网格展示了许多参数值对应的结果。稳健的规则会呈现出平台:相邻的数值给出相似的结果。过度拟合的规则会呈现出一个陡峭的尖峰:某一个数值有效,而与它相邻的数值无效。如果优势是真实的,那么 9 个月或 11 个月的均线,其表现不应与 10 个月的均线完全不同。
提高稳健性的规则
- 在测试前根据假设确定参数;尽可能少地进行优化。
- 规则宁少勿多。每个过滤条件都必须有自己的理由,而不仅仅是让回测更好看。
- 从平台的中间选择参数,而不是选它的最高点。
- 不作任何修改,在相关市场上测试同一条规则;真实的效应通常会在多个市场中出现。
- 预计实盘结果会比经过优化的回测更差,并为此做好计划。
- 留出未经使用的数据,用于最终检查(第 7 课)。
示例演算
假设示例:两个系统各自用七个参数值进行了测试。表中显示的是每次回测的年化夏普比率(第 5 课);成本按固定估计值计入,税费不计在内。
| 参数 | 4 | 6 | 8 | 10 | 12 | 14 | 16 |
|---|---|---|---|---|---|---|---|
| 系统 X(SMA 长度,月) | 0.21 | 0.38 | 0.44 | 0.47 | 0.45 | 0.41 | 0.36 |
| 系统 Y(止损距离,ATR) | 0.05 | 0.12 | 0.95 | 0.10 | 0.02 | −0.08 | 0.04 |
第 1 步,最佳单一数值:Y 在 8 时(0.95)胜过 X 在 10 时(0.47)。天真的测试者会选择 Y。
第 2 步,邻域平均值(该数值及其两侧相邻的两个数值):
- X 在 10 时:(0.44 + 0.47 + 0.45) ÷ 3 ≈ 0.45。
- Y 在 8 时:(0.12 + 0.95 + 0.10) ÷ 3 = 0.39。
第 3 步,夏普比率高于 0.30 的数值所占比例:X 为 7 个中的 6 个;Y 为 7 个中的 1 个。
第 4 步,多重检验:共尝试了 14 个变体。对于 14 个相互独立、没有优势的测试,至少出现一个虚假“赢家”的概率为 1 − 0.95^14 ≈ 51%。Y 孤立的 0.95 看起来就像这样一个赢家。X 呈现出平台,是更可信的系统,尽管它仍然需要在未见过的数据上进行测试。
常见错误
练习活动
五种突破长度(20、40、60、80、100 天)的年化夏普比率假设网格。规则 A:0.30、0.34、0.36、0.33、0.31。规则 B:0.10、0.62、0.08、0.05、0.12。请在纸上完成:(a) 计算每条规则最佳数值周围的邻域平均值;(b) 判断哪条规则更稳健;(c) 计算在 10 个相互独立、没有优势的测试中至少出现一个虚假赢家的概率;(d) 计算 10 次测试在 5% 水平下的邦费罗尼阈值。
查看答案
(a) A 的最佳数值是 60 天:(0.34 + 0.36 + 0.33) ÷ 3 ≈ 0.34。B 的最佳数值是 40 天:(0.10 + 0.62 + 0.08) ÷ 3 ≈ 0.27。
(b) 规则 A:全部五个数值都在 0.30 到 0.36 之间,呈现平台。规则 B 有一个孤立的尖峰。
(c) 1 − 0.95^10 ≈ 1 − 0.599 ≈ 40%。
(d) 5% ÷ 10 = 0.5%。
局限性:相似的参数值之间高度相关,因此独立性假设会高估真正相互独立的测试次数;这些数字显示的是方向,而不是精确的概率。
要点总结
- 过度拟合意味着拟合了过去的噪音;它会让回测看起来比未来结果更好。
- 你测试的变体越多,出现偶然赢家的可能性就越大;请记录每一次测试。
- 优先选择一片良好结果组成的平台,而不是一个孤立的陡峭尖峰。
- 参数少、每条规则都有理由,并在相关市场上进行测试,都能提高稳健性。
下一步
在下一课中,你将使用样本外测试和滚动前推测试,在规则从未见过的数据上对其进行检验。
自测
回答问题后核对答案。你可以随意重试多次。
供您自行复习的自动自测。您的答案在浏览器中核对,我们不会查看或评估。这不是考试,也不是资格证书。
您的进度
“已完成”仅表示您将本课标记为已学完,并不是对您理解程度的测试。 学习进度和笔记仅保存在此设备的此浏览器中,而非账户中。