参数优化不过拟合的土办法:我只用30%的数据做优化

先说结论:我优化EA参数的时候,只用30%的历史数据做拟合,剩下70%留着当”刑场”。这办法听着蠢,但帮我避开了至少三次”回测美如画、实盘烂成渣”的坑。今天把整套流程摊开讲。

为什么参数优化容易过拟合?因为MT4自带的优化器本质上是个暴力搜索——你把参数范围交给它,它挨个组合跑历史数据,最后给你一条最漂亮的资金曲线。问题是历史数据里的”最漂亮”有很大一部分是运气, optimizer 会把这点运气也当成规律学进去。就像下图这样,样本内月月赚,样本外月月亏:参数过拟合样本内外对比

我的土办法具体是这么操作的:拿三年的历史数据,第一年切出来做优化(30%),后两年锁死不给优化器碰。参数在第一年数据上跑出来最优解之后,原封不动扔到后两年上跑一遍。如果后两年还是正向的,而且收益率不低于第一年的60%,这个参数才算过关;如果后两年直接崩,说明第一年的最优解就是过拟合,回去把参数范围砍掉一半再优化。

听着简单,但有三个细节是精髓:

第一,切数据要按市场状态切,不能按日期随便切。比如你优化区间全碰上是趋势行情,样本外全是震荡,那策略不过关可能不是过拟合,是策略本身不适配震荡。我一般会看样本内有没有包含:一段趋势、一段震荡、一次数据行情(非农这种)。三种状态都有的样本,优化出来的参数才有说服力。

第二,最优参数附近要是一片高原,不是一个尖峰。把优化结果按收益率排序,看前20组参数长什么样。如果前20组参数都挤在一个很小的范围里(比如均线周期都在18-22之间),这是健康的,说明策略对这个参数不敏感;如果第一名是周期12,第二名是周期47,第三名是周期9,彼此离得老远,那就是纯运气,直接放弃这组”最优”。

第三,实盘还要再打一次折。我的经验值是:样本外实盘表现,一般是回测表现的50%-70%。如果回测年化80%,实盘能跑出40%我就谢天谢地了。按这个折扣去规划仓位,才不会因为”实盘不如回测”而心态爆炸提前停掉策略。

这套流程我用了两年,代价是优化周期变长——以前一天能测完的事,现在要一周。但省下来的是真金白银:去年躲过一劫,一个马丁参数在样本内年化120%,扔到样本外直接爆仓,要是直接上实盘,五万美金半个月没了。

你们优化参数的时候有什么防过拟合的手段?还是说根本不在乎,先跑起来再说?

请登录后发表评论

    没有回复内容