3、过拟合的根源:数据窥探偏差、参数过度优化、样本内选择偏差

聊完了过拟合的几种表现,咱们得挖一挖根儿了。说实话,我见过太多策略,回测曲线漂亮得像教科书,一上实盘就崩。为什么?因为根儿上就歪了。

过拟合不是凭空冒出来的。它有三个主要源头:数据窥探偏差参数过度优化样本内选择偏差。这三个家伙,就像量化策略里的「三座大山」,压得很多策略研究员喘不过气来。

我个人习惯,每次开发新策略前,都会把这三条贴在显示器边上。时刻提醒自己:别踩坑。

3.1 数据窥探偏差:你看到的「规律」可能只是噪音

什么叫数据窥探偏差?说白了,就是你用同一份数据又看又测,最后找到的「规律」其实是数据本身的噪音。

举个例子。你拿过去5年的股票数据,反复测试了100个不同的因子。终于发现「周三下午两点买入,周四上午十点卖出」这个策略收益最高。你兴奋得不行。

等等,你想想看——你测试了100次,总有一个「看起来不错」的结果。这就像扔硬币,扔100次,总会有连续10次正面。你能说这是规律吗?

核心问题:当你用同一份数据反复探索、测试、筛选,你实际上是在「拟合」数据中的随机噪音,而不是真正的市场规律。

我在项目中遇到过一件事。有个同事花了三个月,在某个商品期货数据上找到了一个「稳赚不赔」的套利策略。回测夏普比3.5,最大回撤不到2%。我当时就问他:「你测试了多少个参数组合?」他说:「大概5000多个吧。」

嗯,问题就在这里。5000多次尝试,总有一个看起来完美的。但那是数据窥探的结果,不是策略本身的能力。

避坑指南:我曾经犯过同样的错误。后来我养成了一个习惯:在探索数据之前,先留出一段「盲测数据」。这段数据我坚决不看,直到策略完全定型后才拿出来验证。这样能有效避免数据窥探。

3.2 参数过度优化:追求完美回测的代价

参数过度优化,是量化新人最容易掉进去的坑。你想想看,一个简单的均线策略,参数无非就是长短周期。但有些人非要加上止损、止盈、仓位管理、过滤条件……最后搞出十几个参数。

然后呢?用优化算法一顿搜索,找到一组「完美参数」。回测曲线漂亮得不得了,年化收益50%,最大回撤5%。

但问题来了——这组参数是专门为历史数据「量身定制」的。稍微换一段数据,立马失效。

参数数量 过拟合风险 典型表现
1-2个 参数变化时策略表现稳定
3-5个 中等 部分参数敏感,整体尚可
6个以上 参数微调导致收益剧烈波动

我见过最夸张的一个案例:有人做了一个策略,包含17个可优化参数。回测结果堪称完美。但实盘跑了不到一个月,亏了30%。为什么?因为那17个参数组合,恰好拟合了过去3年的所有噪音。

警告:参数越多,过拟合的空间越大。每增加一个参数,你需要的样本量就要指数级增长。否则,你就是在「记忆」历史,而不是「学习」规律。

我个人习惯,参数尽量控制在3个以内。如果非要超过5个,我会用交叉验证来检验稳定性。说白了,就是换几段不同的数据跑一跑,看看参数是不是「万金油」。

3.3 样本内选择偏差:你选的「好股票」可能只是幸存者

样本内选择偏差,这个坑更隐蔽。什么意思呢?就是你在构建策略时,有意无意地只选择了「表现好」的样本,忽略了那些「表现差」的。

举个例子。你想做一个A股选股策略。你发现过去5年,消费板块涨得最好。于是你专门针对消费板块设计因子。回测结果当然漂亮——因为你在「好学生」里挑尖子生。

但问题是,未来消费板块还能继续领涨吗?万一风格切换了呢?

我在项目中遇到过类似情况。有个策略在沪深300成分股上回测效果极好,但一换到中证500上就完全失效。为什么?因为策略的因子设计时,无意中「学习」了沪深300的某些特性,而这些特性在其他股票上并不存在。

关键点:样本内选择偏差的本质是「幸存者偏差」。你只看到了活下来的股票,忽略了那些退市、暴跌的。这样的策略,天然就带着偏见。

怎么避免?我建议做两件事:

  • 扩大样本范围:不要只选某个板块或某个指数成分股。把全市场股票都纳入考虑,看看策略在不同类型股票上的表现。
  • 引入「坏样本」:主动加入一些表现差的股票,看看策略能不能识别出它们。如果策略只在好股票上有效,那说明它可能只是「跟风」。
避坑指南:我曾经做过一个因子,在回测中表现极好。后来我特意加入了ST股和退市股,结果因子完全失效。这才发现,原来因子只是在「好学生」里挑尖子生,根本识别不了「坏学生」。从那以后,我每次测试都会主动加入「坏样本」。

知识体系总览

下面这张图,是我自己总结的过拟合根源分析框架。每次做策略,我都会对照着检查一遍。

过拟合的三大根源 过拟合根源 数据窥探偏差 反复测试同一数据 参数过度优化 参数过多,拟合噪音 样本内选择偏差 只选「好样本」 多次假设检验 数据挖掘偏差 前视偏差 网格搜索过拟合 参数敏感度低 过度拟合噪音 幸存者偏差 板块选择偏差 时间窗口偏差 核心对策 留出盲测数据 | 控制参数数量 | 扩大样本范围

这三个根源,其实相互关联。数据窥探偏差让你看到「假规律」,参数过度优化让你「记住噪音」,样本内选择偏差让你「只看好的一面」。三者叠加,策略的过拟合程度会指数级上升。

嗯,说到这里,我想起一个经典案例。有个量化团队开发了一个「高频因子」,回测效果惊人。后来发现,他们无意中用了未来数据——用当天的收盘价去预测当天的涨跌。这就是数据窥探偏差的极端表现。

所以,每次做策略,我都会问自己三个问题:

  1. 我有没有用同一份数据反复测试?
  2. 我的参数是不是太多了?
  3. 我选的样本是不是有偏?

这三个问题,能帮你避开大部分过拟合的坑。下一节,咱们聊聊怎么具体诊断过拟合——毕竟,发现问题只是第一步,解决问题才是关键。