一、过拟合的本质:从一次惨痛教训说起
我记得刚入行那会儿,做过一个CTA策略。回测曲线漂亮得不像话——年化收益40%,最大回撤不到5%。我当时兴奋得差点直接上实盘。
还好带我的老大哥拦住了我。他说:「你把这个策略放到样本外试试。」结果呢?样本外直接亏了30%。
嗯,这就是过拟合。说白了,你让模型记住了历史数据里的「噪音」,而不是真正的「信号」。
1.1 什么是过拟合
过拟合,就是模型在训练数据上表现极好,但在新数据上一塌糊涂。
我习惯用一个比喻来解释:你让一个学生死记硬背了所有考试题的答案,结果考试时题目稍微变个数字,他就懵了。
在量化策略里,过拟合意味着你的策略参数、规则、信号,都是针对某一段历史行情「量身定制」的。换一段行情,它就失效了。
核心定义:过拟合 = 模型复杂度 > 数据中真实信号的复杂度
你想想看,如果你的策略有50个参数,但有效数据只有100天,那每个参数平均只能分到2天的数据来「学习」。这怎么可能学到真东西?
1.2 过拟合在量化策略中的表现
我在项目中遇到过不少过拟合的案例。总结下来,有这几个典型症状:
- 回测完美,实盘拉胯——这是最明显的信号。回测曲线像一条45度向上的直线,实盘却像过山车。
- 参数极其敏感——稍微改一个参数值,比如移动平均线从20日改成21日,收益就从正变负。这其实是个危险信号。
- 策略规则过于复杂——什么「当MACD金叉且RSI大于70且布林带收窄且成交量放大且...」——规则越多,越容易过拟合。
- 样本内和样本外表现差距巨大——我习惯把数据分成三段:训练集、验证集、测试集。如果训练集收益30%,测试集只有5%,那基本可以断定过拟合了。
避坑指南:我曾经见过一个策略,在回测里连续5年每年收益超过50%。结果实盘3个月就亏了20%。后来复盘发现,策略里有一个「如果某天涨跌幅超过5%就开仓」的规则——而回测那5年恰好有几次大波动行情,实盘期间却风平浪静。这就是典型的「过拟合到特定行情模式」。
1.3 过拟合与欠拟合的对比
欠拟合是另一个极端——模型太简单,连训练数据里的规律都没学到。说白了,就是「该记住的没记住」。
我习惯用一张表格来对比:
| 维度 | 过拟合 | 欠拟合 |
|---|---|---|
| 训练集表现 | 极好(甚至完美) | 差 |
| 测试集表现 | 差 | 差 |
| 模型复杂度 | 过高 | 过低 |
| 偏差 | 低 | 高 |
| 方差 | 高 | 低 |
| 典型原因 | 参数太多、数据太少、过度优化 | 特征不足、模型太简单 |
| 解决方向 | 简化模型、增加数据、正则化 | 增加特征、提升模型复杂度 |
你想想看,过拟合和欠拟合其实是一个「度」的问题。模型太复杂,它就开始「背答案」;模型太简单,它连基本规律都抓不住。
我个人习惯用「偏差-方差权衡」来理解这件事:
- 高偏差(欠拟合):模型对数据的假设太强,比如硬要用一条直线去拟合一个正弦波。
- 高方差(过拟合):模型对数据的细微变化太敏感,比如稍微换几个数据点,拟合出来的曲线就完全不一样。
好的模型,就是在偏差和方差之间找到平衡点。嗯,这个平衡点没有标准答案,得靠经验去试。
1.4 知识体系框架
下面这张图,是我自己梳理的过拟合知识体系。你可以把它当作本章的「地图」:
我的经验:刚开始做量化时,我总觉得策略越复杂越厉害。后来被市场教育了几次,才明白「简单即有效」的道理。现在我设计策略,第一原则就是:能用3个参数解决的问题,绝不用5个。
过拟合不是洪水猛兽,它是每个量化交易者都会踩的坑。关键在于你能不能识别它、理解它、最后避免它。
嗯,这一章我们先把「过拟合是什么」搞清楚。下一章,我会带你看看过拟合在回测中具体怎么「伪装」成好策略的。