一、过拟合的本质:回测过拟合到底是什么?

做量化交易的朋友,尤其是搞做市策略的,一定听过这句话:「回测是天堂,实盘是地狱」

为什么会这样?

说白了,就是过拟合在作祟。

我个人习惯把过拟合比作「考试作弊」。你拿着答案去考试,分数当然高。但换一套题,立马露馅。回测过拟合,就是你用历史数据「作弊」了,策略在历史数据上表现完美,一到未来数据就崩盘。

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万种组合。

你想想看,用网格搜索跑一遍,总能找到一组「完美参数」。但这组参数,大概率是过拟合的。

做市策略容易过拟合的深层原因有三个:

  1. 高频噪声多:做市策略交易的是 tick 级别的数据,噪声占比极高。模型很容易把噪声当信号。
  2. 参数空间大:报价策略、库存管理、风险控制,每个模块都有参数。组合爆炸是常态。
  3. 市场微观结构变化快:去年有效的参数,今年可能就失效了。回测周期内的「规律」可能只是昙花一现。

避坑指南:我曾经接手过一个做市策略,回测夏普比率高达8.5。实盘跑了三天,亏了2%。后来一查,发现策略在回测中「学会」了某个特定时间点的流动性脉冲,而这个脉冲在实盘里根本不存在。

1.3 直观理解:用一张图说清楚

咱们用一张SVG图来展示过拟合的核心逻辑:

过拟合的本质:模型复杂度 vs 泛化能力 欠拟合 模型太简单 训练误差大 测试误差也大 例:只用移动平均线 正常拟合 模型复杂度适中 训练误差小 测试误差也小 例:价差+成交量+波动率 过拟合 模型太复杂 训练误差极小 测试误差极大 例:20个参数+特征工程 模型复杂度 → 测试误差 训练误差

这张图很直观:训练误差一直下降,但测试误差先降后升。那个拐点,就是最优模型复杂度。过了这个点,就是过拟合。

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 怎么判断你的策略过拟合了?

这里给几个实用的判断方法:

  1. 参数扰动测试:把每个参数随机偏移5%-10%,看收益变化。如果剧烈波动,大概率过拟合。
  2. 样本外测试:留出20%的数据完全不参与调参。样本外表现如果远差于样本内,就是过拟合。
  3. 蒙特卡洛模拟:用随机参数跑1000次,看收益分布。如果最优参数在分布尾部,说明是运气。
  4. 跨品种/跨周期验证:在相似的品种或时间段上测试。如果只有特定品种有效,可能是过拟合。

特别提醒:不要只看夏普比率和总收益。我见过太多人,回测夏普6.0就兴奋得直接上实盘。结果呢?亏得连手续费都不够。记住:回测是用来发现问题的,不是用来证明策略有效的

好了,这一章我们聊了过拟合的本质。说白了,就是模型记住了历史数据中的噪声,而不是真正的规律。做市策略因为高频噪声多、参数空间大、市场变化快,特别容易掉进这个坑里。

下一章,我会详细讲怎么用具体的技术手段来识别过拟合。到时候咱们聊聊交叉验证、滚动回测这些实战技巧。


专注资料整理