WeCore
算法交易

交易策略的过度拟合:如何识别与避免

交易策略中的过度拟合与曲线拟合:参数过多、数据窥探、样本内与样本外、滚动前向测试和稳健性检验,以及需要警惕的危险信号。

WeCore·发布于 ·阅读约 3 分钟

要做出一个在图表上光彩夺目、到了实盘却令人失望的策略,最可靠的途径之一就是过度拟合。测试工具越简单、越快速,就越容易掉进这个坑。本文解释什么是过度拟合、它为何发生,以及哪些检验能帮你区分真正的优势和噪音。

什么是过度拟合

过度拟合(在交易中常称为曲线拟合)是指策略学到的是历史数据中的噪音,而不是会反复出现的规律。结果就是:在构建它的数据上表现优异,在新数据上表现疲软。

价格数据里只有少量“信号”,却有大量随机噪音。每一段历史都包含一次性事件:央行意外表态的那一天、波动异常的一周、一段格外漫长的趋势。专门针对这些事件调出来的策略,事后看完美无缺,但这些事件不会以同样的方式重演。

参数过多

策略中的每个参数都是一个可以拧的“旋钮”:均线长度、止损距离、开始时间、指标阈值。只有两个参数时,很难把自己拟合到过去;有十个参数时,几乎任何数据序列你都能“解释”。

一个假设的例子:某策略使用 37 根 K 线的均线、23 个 tick 的止损,只在 09:47 到 11:12 之间入场,而且只在 RSI 低于 41 时入场。每个数字之所以被选中,都是因为它给出了最好的历史结果。关键问题是:为什么是 37,而不是 35 或 40?如果除了“因为它效果最好”之外你给不出合理的答案,这就是一个危险信号。

经验法则:参数越少、测试中的交易次数越多,结果就越可靠。

数据窥探

即使每个策略单独看参数都不多,当你在同一份数据上测试大量想法时,问题又会回来。测一百个变体,总有几个会纯粹因为运气而显得很好。这叫数据挖掘(data dredging)或数据窥探(data snooping)。

它还会不知不觉地混进来:你测了一个想法,不行,改一点小地方,再测,如此反复。五十轮之后,数据已经“渗入”了策略,即使你从未运行过自动优化。把你测试过多少个变体记下来——这个数字几乎和结果本身一样重要。

样本内与样本外

对抗过度拟合的基本工具是把数据分开:

  • 样本内(in-sample):你用来开发和调整策略的数据。
  • 样本外(out-of-sample):你预留出来、开发过程中完全没碰过的数据。

只有当策略“冻结”之后,才在样本外数据上运行它。如果表现崩塌,很可能就是过度拟合。重要的是:如果你随后回头修改策略,再在同一份数据上测试,那它就不再是真正的样本外了。

滚动前向测试

滚动前向测试(walk-forward)是这一思路的延伸。你把历史划分成连续的窗口,每一步在一个窗口上调参,在下一个窗口上测试,然后把两个窗口一起向前移动,重复进行。

  1. 在第 1 年上调参,在随后的一个季度上测试。
  2. 向前移动:在新的区间上调参,在再下一个季度上测试。
  3. 把所有测试区间拼接成一条曲线。

拼接出来的曲线模拟了一种现实情形:你不时重新调参,然后去交易一个未知的未来。如果它看起来比全样本优化差得多,这就是重要的信息。

稳健性检验

除了拆分数据,还有几项任何交易者都能做的简单检验:

  • 参数邻域:把每个参数上下微调一点。稳健的策略在较宽的范围内结果相近。如果只有一个取值有效,而它的“邻居”都亏钱,你找到的就是一个侥幸的峰值。
  • 相关市场:如果策略在 NQ 上有效,在 ES 上表现如何?不必完全一样,但彻底崩溃就值得怀疑了。
  • 不同周期:周期的小幅变化不应让一个盈利策略变成亏损策略。
  • 不同时段:逐年单独检查。利润是否来自某一小段时间?
  • 更苛刻的成本:加大滑点、提高手续费。真正的优势应该扛得住。详见回测与实盘交易。
  • 剔除最好的交易:去掉盈利最多的五笔交易。如果利润全都消失了,这个策略靠的是运气。

策略过度拟合的迹象

  • 一条几乎完美平滑、没有任何艰难时期的资金曲线。
  • 参数很多,而且取值精确得出奇。
  • 相对于参数数量,交易次数很少。
  • 只在非常窄的参数范围内表现良好。
  • 每多加一点历史数据,结果就大幅变化。
  • 为了“修补”过去某些特定亏损而加入的特殊规则。
  • 样本内与样本外之间差距很大。

要点总结

  • 过度拟合意味着学到的是噪音而不是规律,它只在事后看起来很美。
  • 更少的参数和更多的交易是基本防线。
  • 保留样本外数据,在策略冻结之前不要碰它。
  • 滚动前向测试和参数邻域检验能揭穿侥幸的峰值。
  • 即便一个策略通过了所有检验,仍然需要前向测试和谨慎的仓位管理。

没有任何测试能保证未来的成功,因此离开实验室之后的阶段同样重要。WeCore 让你在模拟模式下运行策略或警报,并配有自动化风控规则,这样你可以在拿实盘账户冒险之前,先看看它在新数据上的表现。入门介绍请参阅什么是算法交易。

资料来源与延伸阅读