3、过拟合的诊断方法:样本内与样本外表现差异、回测与实盘差距、夏普比率陷阱

过拟合这东西,说白了就是你的策略在历史数据上跑得漂亮,一到实战就露馅。我见过太多人拿着回测曲线兴奋得睡不着,结果实盘一个月就亏得怀疑人生。怎么提前发现?今天咱们就聊聊三个最实用的诊断方法。

3.1 样本内 vs 样本外:最直接的照妖镜

我个人习惯,拿到数据第一件事就是切分。把历史数据分成两段:一段用来训练和优化策略(样本内),另一段留着不动,专门用来验证(样本外)。

为什么要这么做?你想想看,如果你在样本内反复调参,策略自然会越来越贴合那段数据。但贴合不等于有效,可能只是记住了噪音。样本外数据是它没见过的,表现如何才是真本事。

核心判断标准:

  • 样本内表现好,样本外也稳定 → 策略靠谱
  • 样本内惊艳,样本外崩盘 → 典型过拟合
  • 样本内样本外都差 → 策略本身不行

我在项目中遇到过一位同事,他的策略在样本内夏普比率做到3.5,兴奋得不行。我建议他拿后20%的数据跑一下,结果夏普直接掉到0.6。嗯,这就是典型的过拟合。后来我们重新简化了模型,样本外才勉强回到1.2。

实际操作中,我建议按时间顺序切分,比如前70%做样本内,后30%做样本外。千万别随机抽样,因为时间序列有前后依赖关系,随机抽样会泄露未来信息。

3.2 回测与实盘差距:理想很丰满,现实很骨感

回测跑得再好,也只是模拟。实盘才是真正的考场。我见过最惨的一次,回测年化收益40%,实盘第一个月就亏了15%。为什么会这样?

原因通常有这几个:

  • 交易成本被低估:回测时滑点和手续费算得太乐观,实盘一跑,成本吃掉一大块利润
  • 流动性问题:回测假设想买就能买,想卖就能卖。实盘小资金还好,大资金一进去,价格直接被打飞
  • 幸存者偏差:回测用的数据里只有活到现在的股票,退市的那些早就被剔除了。这会导致回测收益虚高
  • 未来函数:不小心用了未来数据,比如用当天的收盘价做开盘决策。这种错误我刚开始也犯过

避坑指南:我曾经犯过一个低级错误——回测时没考虑涨跌停限制。策略在回测里每天都能按理想价格成交,实盘遇到涨停板根本买不进去。后来我学乖了,回测时一定加上涨跌停、停牌这些真实约束。

怎么缩小回测和实盘的差距?我的经验是:回测时把交易成本翻倍算,滑点按最坏情况估计。如果这样还能赚钱,实盘才有戏。

3.3 夏普比率陷阱:别被数字骗了

夏普比率是衡量风险调整后收益的常用指标。但说实话,它被滥用了。很多人只看夏普高不高,却忽略了背后的猫腻。

夏普比率的计算公式是:

夏普比率 = (策略收益率 - 无风险利率) / 收益率标准差

看起来没问题对吧?但陷阱藏在细节里:

陷阱类型 说明 真实案例
频率陷阱 用日频数据算夏普,年化后数值会虚高 日频夏普0.5,年化后变成8.0,看起来很牛,其实只是统计把戏
非线性收益 夏普假设收益是正态分布,但策略收益往往有厚尾 平时小赚,偶尔大亏,夏普可能还不错,但实际风险极高
样本内过拟合 调参调出来的高夏普,样本外立马现原形 我见过有人把夏普调到6.0,样本外直接变负

我的建议:别只看夏普。我通常会同时看最大回撤、卡玛比率(收益/最大回撤)、胜率和盈亏比。如果一个策略夏普很高,但最大回撤超过20%,我会非常警惕。

举个例子,我去年测试过一个趋势跟踪策略。日频夏普算出来1.8,年化后接近30,看着很诱人。但仔细一看,最大回撤达到35%,而且收益集中在几次大行情里。说白了,平时在亏钱,偶尔吃一口大的。这种策略实盘很难拿住,因为回撤期太折磨人了。

知识体系总览

下面这张图总结了过拟合诊断的核心逻辑,我习惯把它贴在工位上,每次跑策略前都过一遍:

过拟合诊断方法框架 过拟合诊断 样本内 vs 样本外 回测 vs 实盘差距 夏普比率陷阱 时间顺序切分 避免未来信息泄露 交易成本低估 流动性 & 幸存者偏差 频率陷阱 非线性收益 & 厚尾风险 核心原则:多维度交叉验证,别迷信单一指标

这三个诊断方法,说白了就是让你从不同角度审视策略。样本内样本外看的是历史拟合度,回测实盘差距看的是实战可行性,夏普比率陷阱看的是风险度量是否靠谱。三者结合,才能把过拟合的伪装一层层剥开。

嗯,最后提醒一句:没有完美的策略,只有不断验证和改进的过程。别指望找到一个万能公式,那本身就是最大的过拟合。


专注资料整理