样本外一跑就掉七成,滚动检验救命

做趋势的都经历过这个阶段:回测曲线漂亮得像假图,年化四十,回撤十出头,参数一优化还能再抬一截。然后上实盘,三个月之后开始怀疑人生。我以前把锅甩给”行情变了”,后来才明白,大部分时候不是行情变了,是我把参数喂给了那一段历史。

现在我的验收流程里多了一步:滚动检验(walk forward)。先看图,八个窗口的样本内和样本外收益:八个滚动窗口的样本内与样本外收益对比

蓝色是样本内,平均 40.7%;绿红是样本外,平均 13.8%。衰减了差不多三分之二。第一眼看着挺打击人,但这才是这套策略真实能给的东西——承认 13.8%,比抱着 40% 的幻觉上实盘强一百倍。

具体怎么滚,我说下我这套笨办法:

1. 拿三个月数据优化参数,只在这三个月里挑最优。别用全历史挑,那是作弊。

2. 把挑出来的参数原封不动拿到后面一个月的实盘数据上跑。这一个月叫样本外,参数一个字不许改。

3. 窗口整体往前挪一个月,重复。我一般滚八到十二个窗口,覆盖两年以上,跨过至少一轮趋势市和一轮震荡市。

4. 看两个东西:样本外平均收益,以及最差的窗口。八个窗里我有两窗是负的(第 4、第 7 窗),这个必须接受——不接受就等于还没做完心理建设。我给自己定的合格线是衰减不超过 50%,且负窗不超过三分之一,这套刚好压线过。

为什么这招管用?因为它把”优化”和”验证”彻底拆开了。普通回测里这两个动作是在同一段数据上做的,等于既当考生又当阅卷老师;滚动检验里,参数永远是拿过去的数据选的、拿到没见过的未来数据上考,这才接近实盘的真实处境。

三个坑提醒一下:

一是窗口别切太碎。我试过一周一滚,样本太少,结果全是噪声,参数跳得比行情还快。一个月是我试下来比较稳的粒度。

二是优化期别太长。三个月就够了,拉到一年又会退化成全历史拟合。

三是别只挑参数,也要看结构稳不稳。如果八个窗口的最优参数彼此差得很远,说明这套策略根本没有稳定的”性格”,那比收益衰减更危险,我一般会直接放弃。

还有个附带好处:滚动检验跑完,你对这套策略的预期会被校准到一个很朴素的水平,实盘遇到连亏就不容易慌。知道它本来就只能赚 13%,比以为它能赚 40% 好活得多。

你们做参数优化会留样本外吗?还是全段一起跑?评论区交流下,我这套窗口长度还在调,有经验的带带我。

请登录后发表评论

    没有回复内容