问答交流

回测曲线美如画,实盘上路秒变渣:我的过拟合踩坑全记录

由bq3wl3ca创建,最终由bqxlpgzg 被浏览 16 用户

跑出一个回测年化80%的策略后,我却更慌了。

\

今天想和大家聊聊我这段时间最大的一个跟头,也是我认为新手最需要警惕的一个坑:过拟合

说出来不怕大家笑话,最近我弄了一个“像样”的策略流程大概是这样:

  1. 选了一堆听起来有道理的基本面和技术面因子(PE、PB、ROE、动量、波动率啥的)。
  2. 用了平台提供的经典机器学习模型(比如随机森林)。
  3. 目标是预测股票下一周的涨幅排名。

一顿操作后,回测结果让我心跳加速:训练集里,模型预测的准度很高,策略年化收益冲到80%以上,夏普比率也很漂亮。 那一刻,我感觉自己快摸到“圣杯”的门把手了。

但很快,我就高兴不起来了。

第一个警报:换到没“见过”的股票上,策略失灵了。\n我一开始是在沪深300成分股里训练的。当我满怀信心地把这个策略用到中证500的股票池里时,结果一塌糊涂。模型好像突然“失明”了。

第二个警报(也是致命伤):在“未来”的数据里,它不会赚钱。\n严格按照时间序列,用过去的数据训练模型,去预测“未来”(对模型来说是未知的)一段时间。结果,那个漂亮的80%年化收益,瞬间缩水到惨不忍睹,甚至跑不赢指数。

我这才恍然大悟:我可能造了个“考试作弊”模型。\n它根本不是真正理解了市场规律,而是通过复杂的曲线,完美地“记忆”并拟合了过去那段特定历史数据中的噪音和偶然规律。一旦环境稍有变化(换股票、换时间),它就懵了。

这个过程,像极了我们做主观交易时的一种错觉:对着历史K线图,总能找到一套“完美”的解释理论(“你看,这里金叉所以涨了,那里顶背离所以跌了”),觉得市场规律尽在掌握。但拿到实盘,面对未知的下一根K线,这套理论经常失效。

“踩坑”之后,我的几点笨拙思考:

  1. “简单”可能比“复杂”更可靠:我现在会更警惕那些需要几十个因子、好几层复杂模型才能跑出好结果的策略。我开始欣赏那些逻辑直观、因子数量少但经济学意义明确的策略。先保证策略在“经济学常识”上说得通,再用数据去验证和微调,而不是反过来。
  2. “样本外”和“时间序列”是生命线:用工具把数据拆分(训练集、验证集、测试集)和严格的时间序列回测做得很方便。我现在明白了,一个策略在“测试集”或“未来函数”严格禁用的回测中的表现,才是它真实能力的试金石。只看训练集结果,无异于自欺欺人。
  3. 过拟合的本质是“过度解读”:就像我们看历史走势,总能强行总结出原因。模型用太多的参数,去解释了本应是随机波动的部分。防止过拟合,就是主动给模型的“想象力”加上枷锁,让它抓住主要矛盾,而不是记住所有细节。无论是用正则化,还是增加数据量,或是简化模型结构,目的都是这个。
  4. 从“预测精准”转向“概率思维”:我放弃了追求“预测明天哪只股票涨多少”的幻想。现在更关注模型给出的概率分布或相对排名。比如,不去猜涨幅,而是判断“在未来一段时间,A股票比B股票表现更好的概率是否显著高于50%?” 这更像我们主观交易时说的“赢面”。

现在,我依然继续折腾,但心态变了。看到惊艳的回测结果,第一反应不是兴奋,而是怀疑:“我是不是哪里又设置错了?”“是不是又过拟合了?”

这个过程很挫败,但也让我对“量化”二字多了份敬畏。它不只是把想法写成代码,更是用严谨的数据科学方法,去检验和约束我们天马行空的交易想法,逼着我们区分什么是“规律”,什么是“巧合”。

不知道平台上的老师们,在刚开始的时候,是怎么对付“过拟合”的?

(以上仅是个人的学习踩坑笔记,非常粗浅,肯定有很多理解不对的地方,请大家多指正。)

评论
  • 手动点赞
{link}