量化概念 14:过拟合与样本外(回测越漂亮,越要警惕)

6 阅读 1089 字 · 约 4 分钟

回测年化 40%,实盘一年后只剩 5%——这种情况在量化里太常见了。问题往往不是策略不好,而是回测本身骗了你:策略在历史数据上过拟合了。

什么是过拟合

过拟合(overfitting),是模型把历史数据里的噪声当成了规律背下来。历史数据里除了真实的规律,还有大量偶然——某只股票恰好连涨、某个时段恰好风格占优。参数越多、尝试越多,模型就越能把每个偶然都"解释"得严丝合缝,代价是失去对未来数据的泛化能力。

过拟合:背答案的曲线完美穿过每个点却剧烈抖动,学方法的曲线平滑可泛化

类比学生考试:背答案的学生,题目一模一样时满分,换道题就垮;学方法的学生,单次可能不是最高分,但换什么题都能做。回测过拟合,就是背答案。

回测为什么容易过拟合

参数搜索。在历史数据上试几千组参数,挑表现最好的那组。几千次尝试里,总会有几组"碰巧"很漂亮——那不是规律,是运气。试的次数越多,找到的"最优参数"越像噪声。

因子挖掘。批量测试几百个因子,总有几个在历史上有不错的 IC。这里面大部分是多重比较带来的假发现——数据里总有东西"看起来"有效。

样本太少。规律需要足够样本才能显现。数据点少、参数多时,任何复杂模型都能把历史拟合得完美,但拟合的是噪声。

样本外:真正的检验

防过拟合的核心工具是样本外验证(out-of-sample):把数据按时间切开,前一段(样本内,约 70%)用来开发策略、调参数;后一段(样本外,约 30%)留着,开发过程中完全不看,最后才跑一次。

样本内与样本外:开发时不碰样本外,验证只做一次

样本外的意义在于:它没有被你的开发过程污染。样本内做得多漂亮都可以是背答案,样本外才是"换道题"的考试。

关键在于一次。样本外跑完发现不好,回头调参数再跑——第二次跑的时候,样本外已经变成样本内了,你看到的又是"背过的答案"。

怎么防过拟合

  • 样本外验证:开发时不碰,最后一次性验证
  • 参数要少:参数越少,能"背"的东西越少,过拟合空间越小
  • 可解释:说得清为什么有效——有故事支撑的因子,比纯搜索出来的可信
  • 看稳健性:最优参数附近是"平原"(参数微调结果基本不变)还是"尖峰"(只有那一个点好)——尖峰几乎一定是过拟合
  • 警惕漂亮曲线:样本内年化 40% 配样本外 5%,落差本身就是过拟合的信号

常见误区

  • 反复用样本外调参:看过一次的样本外就不再是样本外,等于没验证
  • 参数越多越好:复杂度和样本量必须匹配,A 股的历史样本撑不起太多参数
  • 只看样本内:样本内人人漂亮,分水岭在样本外
  • 样本外差一点就"再调调":连续多次试探之后,任何结论都不可信了

小结

过拟合是把历史噪声当规律背下来,参数搜索和因子挖掘是它的两个主要温床。防它的核心是样本外验证:开发时不碰、最后一次性跑。样本内年化和样本外落差太大,先怀疑策略过拟合,别急着给参数找借口——回测越漂亮,越要警惕。