样本外检验:别被回测骗了 Walk-Forward Testing
在历史数据上挑出最好的参数很容易,难的是它在没见过的数据上还灵不灵。滚动前进检验模拟真实的“先选参数、再上场”。
还没想好?先看看第一课(无需注册)「用规则积木搭策略」。
文字版讲解 · 量化入门 第 5 课「样本外检验:别被回测骗了」
在历史数据上挑出最好的参数很容易,难的是它在没见过的数据上还灵不灵。滚动前进检验模拟真实的“先选参数、再上场”。
先选参数,再上场
真实交易里你只能用过去的数据选参数。滚动前进检验模拟这个过程:在样本内里挑最优参数,在紧接着的样本外里检验,然后整体往前滚。
回测里的水分
用全部数据挑出的“最优参数”等于看着答案做题。样本外表现和它的差距,就是回测里的水分;在纯噪声里也能挑出好看的参数,是过拟合最直接的证据。
要平原,不要尖峰
可靠的参数附近,邻近的参数也表现不错。只有某一个参数特别好、旁边都很差,多半是巧合,换一段行情就会失效。
本课要点
- 样本内挑参数、样本外检验,样本外的表现才接近真实水平。
- 滚动前进:每次用过去一段数据选参数,在接下来一段数据上检验,再整体往前滚。
- 样本内很好、样本外很差,说明策略多半是在拟合噪声。
- 好参数附近的参数也应该不错;只有一个“尖峰”参数特别好,多半是巧合。
动手试试
下面这些练习可以在本课的互动模拟里完成:
- 在“风格切换”行情里:全样本最优收益是多少?样本外合计呢?
- 切到“纯噪声”:每个窗口的样本内平均是多少?样本外合计呢?
- 回到“风格切换”,把训练窗口从 120 根改成 200 根:参数更换次数变少了吗?样本外合计变好还是变差?
- 切到“长期趋势”:样本外合计还是正的吗?和“全样本最优”差多少?
小测与解析
- 1. 一个参数在样本内年化 40%、样本外年化 −5%,最可能说明?
- 答案:过度拟合了历史噪声。只在“见过的数据”上表现好,是过拟合的典型特征。
- 2. 滚动前进检验的做法是?
- 答案:用过去数据选参数、在下一段数据上检验,然后往前滚动。模拟真实交易中“只能用过去信息做决定”的处境。
- 3. 测试了 200 组参数,挑出回测最好的一组,年化 35%。最合理的下一步是?
- 答案:在没参与挑选的样本外数据上检验。试的组合越多,挑出“碰巧好看”的参数的机会越大,必须用没见过的数据检验。