1. 过拟合的本质:量化交易中过拟合的定义、为什么回测漂亮实盘却亏损、过拟合的数学本质(VC维与自由度)

做量化交易的朋友,十有八九都经历过这种场景:回测曲线漂亮得像教科书上的范例,夏普比率高得让人心跳加速,最大回撤控制得堪称完美。你信心满满地上了实盘,结果呢?账户曲线一路向南,跟回测完全是两个世界。

为什么会这样?说白了,就是过拟合在作祟。

1.1 过拟合的定义:你是在学习规律,还是在背答案?

先给个直观的理解。过拟合,就是你的策略模型把历史数据里的「噪音」当成了「信号」来学习。

我打个比方。你让一个学生做历年高考真题,他如果只背答案,不学解题思路。换一套新题,立马抓瞎。量化策略的过拟合,本质上就是这种「背答案」的行为。

在量化领域,过拟合的正式定义是:策略在训练数据(历史回测)上表现优异,但在未见过的数据(未来实盘)上表现糟糕。

我个人习惯把过拟合分成两类:

  • 参数过拟合:策略参数太多,模型太灵活,把随机波动都拟合进去了。
  • 结构过拟合:策略逻辑本身过于复杂,加入了太多条件判断、嵌套规则。

核心判断标准:回测收益 vs 实盘收益的差距,就是过拟合的程度。差距越大,过拟合越严重。

1.2 为什么回测漂亮,实盘却亏损?

这个问题我当年刚入行时也百思不得其解。后来踩了无数坑才明白,原因其实就三点。

第一,幸存者偏差。 回测数据里只有活到现在的股票。那些退市的、暴跌的,早就被剔除了。你用「幸存者」的数据做回测,天然就高估了策略表现。

第二,未来函数。 这是新手最容易犯的错。比如你用当天的收盘价作为买入信号,但收盘价在收盘那一刻才能确定。回测时你「提前」知道了价格,当然百发百中。

第三,数据窥探偏差。 你反复在同一个数据集上调试参数,直到找到「最优解」。但这个最优解只是对历史数据的最优,对未来毫无意义。

我记得有一次,一个策略在沪深300上回测年化收益40%。我兴奋得不行,结果实盘跑了三个月,亏了15%。后来复盘发现,那个策略的买入条件里有一个「过去20天涨幅超过10%」的规则。在震荡市里,这个条件根本触发不了几次。但在回测的那段牛市里,这个条件几乎天天触发。

避坑指南:我曾经以为多加入几个过滤条件就能提高策略稳定性。结果条件越多,过拟合越严重。后来我学乖了——能用3个参数解决的问题,绝不用5个。

1.3 过拟合的数学本质:VC维与自由度

聊完了现象,咱们来点硬核的。过拟合的数学本质,可以用两个概念来解释:VC维和自由度。

1.3.1 VC维:模型的「表达能力」上限

VC维(Vapnik-Chervonenkis dimension)是统计学习理论里的一个概念。简单说,它衡量的是一个模型能够「打碎」多少个数据点。

什么叫「打碎」?就是模型能够完美区分任意给定的标签组合。比如一个线性分类器,在二维平面上最多能完美区分3个点(任意正负标签组合)。再多一个点,它就搞不定了。所以线性分类器在二维空间的VC维是3。

VC维越高,模型的表达能力越强。但问题来了:表达能力越强,过拟合的风险也越大。

你想想看,一个VC维很高的模型,就像一个有1000个参数的神经网络。它可以把训练数据里的每一个点都记住,包括那些随机噪声。但到了测试集上,它完全不知道自己在干什么。

我给大家一个经验公式:训练样本数量至少要是VC维的10倍以上,模型才比较可靠。如果样本量不够,那就得降低模型复杂度。

1.3.2 自由度:参数的「有效数量」

自由度这个概念更直观。它指的是模型中真正「自由」的参数数量。

举个例子。一个简单的移动平均线策略,只有两个参数:均线周期和阈值。自由度就是2。但如果你加入了很多条件:成交量过滤、波动率过滤、时间过滤、行业过滤...每个条件都带参数,自由度就蹭蹭往上涨。

自由度越高,模型越容易过拟合。为什么?因为每个自由度都给了模型一个「调整」的机会。模型可以利用这些自由度去拟合数据中的每一个小波动。

模型复杂度 自由度 回测表现 实盘表现 过拟合风险
简单(2个参数) 一般 稳定
中等(5-10个参数) 良好 尚可
复杂(20+个参数) 优秀 糟糕

我个人的习惯是:策略的自由度不要超过样本量的5%。比如你有1000个交易日的回测数据,那策略的自由度最好控制在50以内。超过这个数,你就要警惕了。

1.3.3 VC维与自由度的关系

这两个概念其实是一体两面。VC维是理论上的上限,自由度是实际中的体现。一个模型的VC维越高,它的自由度通常也越高。

但有一点要注意:自由度并不总是等于参数数量。有些参数虽然存在,但实际影响很小,可以忽略。比如一个策略有10个参数,但其中3个参数无论怎么调,结果都差不多。那这3个参数就是「无效自由度」,可以去掉。

下面这张图展示了过拟合的核心逻辑,我画了个SVG方便大家理解:

过拟合的本质:VC维与自由度 模型复杂度 (参数数量 / 结构层次) VC维 ↑ (表达能力增强) 过拟合风险 ↑ (泛化能力 ↓) 自由度 (有效参数数量) 样本量 (训练数据数量) 平衡点 自由度 / 样本量 ≤ 5%

实用技巧:判断一个策略是否过拟合,有个简单方法——把回测数据分成两段。前70%用来训练,后30%用来验证。如果训练集表现很好,验证集表现很差,那基本就是过拟合了。这招我用了好多年,屡试不爽。

1.4 小结:过拟合的根源

总结一下,过拟合的本质就三句话:

  • 模型太复杂:VC维太高,自由度太大,把噪音当信号。
  • 数据太少:样本量不足以支撑模型的复杂度。
  • 过度优化:反复在同一个数据集上调试,直到「完美」拟合历史。

嗯,这里要注意一点。很多人以为过拟合只是参数太多的问题。其实不然。有时候一个策略只有两三个参数,但逻辑结构极其复杂——比如嵌套了多层条件判断——照样会过拟合。结构过拟合比参数过拟合更难发现,也更危险。

我在项目中遇到过最典型的案例:一个同事写了个择时策略,用了20多个技术指标的组合。每个指标单独看都没问题,但组合在一起后,策略只在特定年份有效。换到其他年份,直接崩盘。这就是典型的结构过拟合——每个指标都在「配合」历史数据,但配合得太完美了,反而失去了泛化能力。

所以,做量化交易,一定要时刻提醒自己:回测漂亮不等于实盘赚钱。过拟合是量化交易的第一大敌,也是我们这门课要解决的核心问题。后面的章节,我会详细讲怎么识别过拟合、怎么避免过拟合、以及怎么用统计学方法评估策略的稳健性。


专注资料整理