LTIsland Insight龙太观市 · LTIsland Insight
← 回看盘基础

回测方法论的坑:过拟合、数据窥探与样本外检验

内容由龙太观市 LTIsland Insight原创整理并存证发布,转载/引用请署名并链接原文,详见授权条款

回测结果好,不一定是策略好,也可能是回测方法本身有问题。这篇讲的是方法论层面的几个典型坑——即使做回测的人完全诚实,也可能踩进去。

一条漂亮的回测曲线,可能完全不是造假造出来的——只是方法本身就会产生这样的曲线。

是什么

回测是用历史数据模拟某个策略在过去的表现。它是研究工作中的常规工具,但它有一个结构性的弱点:历史数据只有一份,而想法可以无限多。同一份历史数据被反复用来试验、调整、再试验,最终一定能找出某个在这份数据上表现极好的组合——这个组合好在哪,可能纯粹好在「它是被这份数据挑出来的」。

本文讲的是方法论层面的坑,跟回测截图为什么不能信那篇的角度不同:那篇讲的是识别造假与伪造证据,本文讲的是即使操作者完全诚实、没有任何造假意图,方法本身仍然会产生误导性结果的那些情形。

规则与细节

坑一:过拟合(overfitting)——把噪音当成规律学了进去

一个策略如果参数够多、调整够细,总能被调到在历史数据上表现极好。但历史数据里既包含真实的结构性规律,也包含大量一次性的随机波动。参数调得越细,策略就越可能把后者也一并「学」了进去——而随机波动按定义不会重复出现,所以这部分优势在新数据上必然消失。典型征兆:参数稍微变动一点,结果就大幅变差(真实的规律通常不会对参数如此敏感);策略包含很多个需要同时调优的参数;表现好的时段高度集中在少数几段行情里。

坑二:数据窥探(data snooping)——试的次数没有被计入

在同一份历史数据上试了上百个想法,最后报告其中表现最好的那个,这个「最好」里必然包含了大量的挑选运气。问题不在于试很多个想法(研究本来就是这么做的),而在于最终报告结论时,没有把「一共试了多少个」这个信息一并交代——缺了这个数字,读者无从判断这个结果里有多少是运气。这跟样本量与统计显著性里讲的多重比较问题是同一件事在回测语境下的体现。

坑三:前视偏差(look-ahead bias)——用了当时还不存在的信息

回测在模拟某个历史时点的决策时,不小心用到了那个时点其实还拿不到的信息。常见来源包括:使用了当天收盘后才公布的数据去决定当天盘中的动作;使用了后来经过修正的历史数据,而当时市场看到的是修正前的版本;使用了当前的成分股名单去回溯过去的时段。这类问题往往不是刻意的,但一旦发生,回测结果会显得异常精准。

坑四:幸存者偏差(survivorship bias)——样本里只剩下活下来的

如果回测样本只包含现在仍在正常交易的标的,那些历史上已经退市、被合并、或表现极差而被剔除的标的就不在样本里。整体表现因此会系统性偏乐观——因为最差的那部分被样本本身排除掉了。要避免这一点,需要使用包含已退市标的的完整历史样本,而这类数据的获取本身就有门槛。

坑五:交易成本与流动性被忽略

不计交易费用、不计买卖价差、不计冲击成本、假设总能在理想价位成交——这些简化会让回测结果显著好于真实可实现的结果。信号越频繁、标的流动性越差,这个差距就越大。一个在纸面上有微弱优势的策略,扣掉这些成本后完全可能变成负的。

部分应对:样本外检验

常见的做法是把历史数据分成两部分:一部分用来开发与调参,另一部分完全不碰,留到最后一次性用来检验。如果策略只在开发用的那部分数据上表现好、在留出的部分上表现平平,那就是过拟合的直接证据。更严格的做法还包括滚动检验(按时间顺序不断向前推进检验窗口)。

但样本外检验有一个重要局限:如果检验结果不理想就回去改策略、再拿同一份留出数据检验一次,那么这份数据从第二次开始就已经不是「样本外」了——它已经参与了开发过程。反复这样操作,样本外检验就退化成了另一种形式的数据窥探。

常见影响或现象

  • 回测的作用是排除,不是确认:一个策略在回测中表现很差,基本可以排除;表现很好,则只是「尚未被排除」,这是回测能提供的最强结论。
  • 评估任何回测结论,需要的信息远多于结果本身:样本区间、样本是否包含已退市标的、参数个数、一共试了多少个想法、成本假设——缺少这些信息时,一条回测曲线是无法评估的。
  • 这些坑的存在,与操作者是否诚实无关:它们是方法本身的结构性问题,需要靠方法论纪律来控制,而不是靠动机端正来避免。

常见误区

  • 「回测做得越精细,结果越可信」是反的:在同一份数据上反复精细调整,恰恰是过拟合的主要来源。参数越少、越粗糙但仍然有效的策略,通常比调得极精细的策略更经得起新数据的考验。
  • 样本外检验只能用一次:一旦用它的结果回头改了策略,这份数据就已经被污染,不再具备「样本外」的性质。这一点最容易被忽略。
  • 回测的前提是「未来与历史结构相似」,而这个前提本身无法被回测检验:交易制度改变、参与者结构变化、标的流动性变化,都会让历史规律失效,过去不代表未来。
  • 本文讲方法论层面的失真,不涉及识别刻意造假:后者(未来函数被刻意使用、后台篡改数据等)另见回测截图为什么不能信。两类问题的应对方式不同:方法论的坑靠纪律控制,刻意造假靠可验证的存证机制识别。
  • 本文只介绍研究方法论概念,不构成任何投资建议,也不推荐任何具体策略或工具。