一、过拟合的本质:回测过拟合到底是什么?
做量化交易的朋友,尤其是搞做市策略的,一定听过这句话:「回测是天堂,实盘是地狱」。
为什么会这样?
说白了,就是过拟合在作祟。
我个人习惯把过拟合比作「考试作弊」。你拿着答案去考试,分数当然高。但换一套题,立马露馅。回测过拟合,就是你用历史数据「作弊」了,策略在历史数据上表现完美,一到未来数据就崩盘。
1.1 过拟合的数学定义
咱们先来点硬核的。数学上,过拟合可以这样定义:
给定一个模型 f(x; θ),训练集 D_train 和测试集 D_test
过拟合 ⇔ Loss(f, D_train) << Loss(f, D_test)
即:训练误差远小于测试误差
嗯,这里要注意:不是所有「训练误差小」都是过拟合。真正的过拟合,是模型把训练数据中的噪声也学进去了,而不是学到真正的规律。
我举个例子你就明白了:
正常拟合:你看到过去10天,每当买一卖一价差大于0.5个tick,价格就会反弹。于是你写了个策略:价差大时做反向。
过拟合:你发现过去10天,每当价差大于0.5个tick且发生在周三下午3点15分且成交量大于100手且MACD金叉,价格就会反弹。于是你写了个策略,参数多达20个。
你觉得哪个更靠谱?
1.2 做市策略为什么特别容易过拟合?
这个问题我问过很多同行。大家的第一反应都是:做市策略参数太多了。
没错,但这只是表面原因。
我在项目中遇到过最典型的场景:一个做市策略,参数包括报价深度、报价宽度、撤单时间、库存阈值、对冲频率……加起来十几个参数。每个参数调优5个值,组合起来就是 5^10 ≈ 976万种组合。
你想想看,用网格搜索跑一遍,总能找到一组「完美参数」。但这组参数,大概率是过拟合的。
做市策略容易过拟合的深层原因有三个:
- 高频噪声多:做市策略交易的是 tick 级别的数据,噪声占比极高。模型很容易把噪声当信号。
- 参数空间大:报价策略、库存管理、风险控制,每个模块都有参数。组合爆炸是常态。
- 市场微观结构变化快:去年有效的参数,今年可能就失效了。回测周期内的「规律」可能只是昙花一现。
避坑指南:我曾经接手过一个做市策略,回测夏普比率高达8.5。实盘跑了三天,亏了2%。后来一查,发现策略在回测中「学会」了某个特定时间点的流动性脉冲,而这个脉冲在实盘里根本不存在。
1.3 直观理解:用一张图说清楚
咱们用一张SVG图来展示过拟合的核心逻辑:
这张图很直观:训练误差一直下降,但测试误差先降后升。那个拐点,就是最优模型复杂度。过了这个点,就是过拟合。
1.4 做市策略过拟合的典型症状
我总结了几个「红灯信号」,你对照一下自己的策略:
| 症状 | 回测表现 | 实盘表现 |
|---|---|---|
| 夏普比率过高 | 夏普 > 5 | 夏普 < 1 甚至为负 |
| 最大回撤过低 | 回撤 < 0.5% | 回撤 > 5% |
| 胜率异常高 | 胜率 > 80% | 胜率 50%-60% |
| 参数敏感 | 微调参数,收益变化巨大 | 参数稍微一变,直接亏钱 |
| 样本外失效 | 样本内表现完美 | 样本外数据上一塌糊涂 |
个人经验:我见过最离谱的一个做市策略,回测夏普12.3,最大回撤0.1%。当时团队兴奋得不行。我多问了一句:「参数稍微偏移5%试试?」结果一测,夏普直接掉到0.8。这就是典型的过拟合。
1.5 过拟合的数学根源:偏差-方差权衡
咱们再深入一点。过拟合的数学本质,是偏差-方差权衡(Bias-Variance Tradeoff)。
一个模型的期望误差可以分解为:
E[误差] = 偏差² + 方差 + 噪声
偏差:模型对真实规律的偏离程度
方差:模型对训练数据变化的敏感程度
噪声:数据本身不可预测的部分
过拟合时,模型偏差很低(因为拟合了训练数据),但方差极高(换一组数据,模型大变样)。
做市策略为什么方差特别大?
- 信号弱:做市策略的盈利信号本身就很微弱,容易被噪声淹没
- 参数多:每个参数都增加了模型的「自由度」,自由度越高,方差越大
- 数据少:高频数据虽然样本多,但有效独立样本其实很少(因为序列相关性强)
我记得有一次,团队花了两周时间优化一个做市策略的参数。用遗传算法跑了100代,找到一组「最优参数」。结果换到另一年的数据上,收益直接腰斩。后来我们做了个实验:用随机参数跑100次,发现收益分布非常分散。这说明策略本身就不稳定,所谓的「最优参数」只是运气好。
1.6 怎么判断你的策略过拟合了?
这里给几个实用的判断方法:
- 参数扰动测试:把每个参数随机偏移5%-10%,看收益变化。如果剧烈波动,大概率过拟合。
- 样本外测试:留出20%的数据完全不参与调参。样本外表现如果远差于样本内,就是过拟合。
- 蒙特卡洛模拟:用随机参数跑1000次,看收益分布。如果最优参数在分布尾部,说明是运气。
- 跨品种/跨周期验证:在相似的品种或时间段上测试。如果只有特定品种有效,可能是过拟合。
特别提醒:不要只看夏普比率和总收益。我见过太多人,回测夏普6.0就兴奋得直接上实盘。结果呢?亏得连手续费都不够。记住:回测是用来发现问题的,不是用来证明策略有效的。
好了,这一章我们聊了过拟合的本质。说白了,就是模型记住了历史数据中的噪声,而不是真正的规律。做市策略因为高频噪声多、参数空间大、市场变化快,特别容易掉进这个坑里。
下一章,我会详细讲怎么用具体的技术手段来识别过拟合。到时候咱们聊聊交叉验证、滚动回测这些实战技巧。