⚠ 交易存在重大亏损风险。本网站的所有内容仅供教育用途,不构成财务建议。
第 6 课,共 12 课 · 免费

过度拟合及其避免方法

理解为什么经过优化的回测会高估未来结果,并利用参数平台、测试次数和简洁性规则来减少过度拟合。

作者: Moustafa Hijazi内容审核日期: 2026-10-30阅读约 5 分钟自学课程

你将学到什么

  • 什么是过度拟合,以及为什么它是回测在实盘中失效的最常见原因。
  • 你进行的测试次数如何纯粹凭运气制造出“赢家”。
  • 如何解读参数网格,以及为什么应优先选择平台而不是尖峰。
  • 打造更简洁、更稳健系统的实用规则。

讲解

曲线拟合已在课程《深入技术分析》中简要介绍过。在这里,你将学习如何衡量它,以及如何设计能够抵御它的测试。

什么是过度拟合

每一段价格历史都包含两部分:可能可以重复出现的规律(信号)和随机波动(噪音)。过度拟合是指规则适应了噪音。这时回测看起来非常出色,因为过去的噪音被完美拟合了,但噪音不会重复出现,所以实盘结果会更差。你在查看结果的同时做出的选择越多,拟合的噪音就越多。

自由度

自由度是指一套规则能够迁就数据的所有方式:每一个参数、每一个过滤条件、每一个“只在周二”之类的例外,以及每一个因为效果不好而被你剔除的市场。一条常用的经验法则是,相对于参数数量,交易笔数要足够多,例如每个自由参数对应几十笔交易;请把这视为最低要求,而不是保证。

多重检验问题

假设你测试了 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 呈现出平台,是更可信的系统,尽管它仍然需要在未见过的数据上进行测试。

常见错误

只报告最好的变体只展示 50 个变体中最好的那一个,而不说明另外 49 个也测试过,会让结果看起来比实际强得多。务必报告你尝试过多少个变体,以及变体的平均表现如何。

练习活动

五种突破长度(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%。

局限性:相似的参数值之间高度相关,因此独立性假设会高估真正相互独立的测试次数;这些数字显示的是方向,而不是精确的概率。

要点总结

  • 过度拟合意味着拟合了过去的噪音;它会让回测看起来比未来结果更好。
  • 你测试的变体越多,出现偶然赢家的可能性就越大;请记录每一次测试。
  • 优先选择一片良好结果组成的平台,而不是一个孤立的陡峭尖峰。
  • 参数少、每条规则都有理由,并在相关市场上进行测试,都能提高稳健性。

下一步

在下一课中,你将使用样本外测试和滚动前推测试,在规则从未见过的数据上对其进行检验。

自测

回答问题后核对答案。你可以随意重试多次。

1. 你用 5% 的显著性阈值测试了一条没有真实优势的规则的 30 个变体。假设各次测试相互独立,至少有一个看起来显著的概率大约是多少?

2. 一个参数网格显示相邻数值的夏普比率分别为 0.40、0.43、0.45、0.42、0.39。这种模式说明了什么?

3. 哪种做法最直接地减少过度拟合?

供您自行复习的自动自测。您的答案在浏览器中核对,我们不会查看或评估。这不是考试,也不是资格证书。

您的进度

“已完成”仅表示您将本课标记为已学完,并不是对您理解程度的测试。 学习进度和笔记仅保存在此设备的此浏览器中,而非账户中。