量化回测如何减少过拟合:用 FiClaw 组织样本外与滚动验证
区分参数优化、样本外检验和 Walk-forward 滚动验证,按时间划分研究区间,用 FiClaw 整理策略规格、参数比较和复核材料。
发布人 FiClaw 产品团队 · 发布于 · 更新于
Read in English先看结论
减少回测过拟合,先按时间分开参数选择和结果检验:在较早区间确定规则与参数,再用未参与选择的较晚区间检验。滚动验证重复这一过程,逐段保留结果。FiClaw 可辅助整理 spec、生成代码、回测和参数比较;验证窗口、选择标准与最终判断仍需研究员明确。
适合已经跑完首轮回测、正在比较参数或需要向团队解释验证过程的量化研究者。
验证计划示例:先约定规则,再读取验证结果
请把当前策略整理成验证计划:列出固定规则、待比较参数和选择标准;按时间划分训练与验证区间,每次只用较早数据选参数,再在随后区间评估。记录窗口、数据版本、参数、费用、交易数与回撤。先检查信号和持有期是否跨越边界;不要根据验证区间表现倒改本轮参数。
为什么最高收益的参数不一定值得保留
同一段历史上尝试的参数、因子和规则越多,越容易挑出恰好贴合那段数据的组合。把试过但放弃的设置也记下来,避免报告只展示最好的一次,而看不到选择过程。
先约定比较标准,例如成本后的表现、回撤、交易数量与参数邻域稳定性。标准应服务于研究假设;不要看到验证结果后再更换标准,并继续把同一段数据称为独立样本外。
样本外检验与 Walk-forward 怎样安排
样本外检验使用未参与参数选择的数据。Walk-forward 则把研究分成多轮:每轮在较早窗口选参数,在随后的窗口检验,再把窗口向前移动。训练窗口可以扩展或固定长度,报告中要写清采用哪一种。
时间顺序不能随机打乱。信号、标签或持有期跨越分界时,需要检查信息重叠,必要时预留间隔或剔除重叠样本;间隔长度取决于具体定义,没有一个适合所有策略的固定天数。
在 FiClaw 研究流程里留下哪些证据
把窗口划分、参数候选和选择规则写进策略 spec,再按计划生成或检查代码、运行历史回测、比较结果。这里描述的是实验组织方法,不代表 FiClaw 已提供一键完成所有滚动窗口的功能;具体执行方式以当前工作站与接口能力为准。
逐窗口查看成本后指标、交易数、回撤与参数变化,再汇总互不重叠的验证段。窗口结果差异大时,应解释样本、市场状态和实现假设。通过一轮验证不能直接等同于可以上线,也不能保证未来收益。
三类结果应分开记录
| 材料 | 记录什么 | 复核问题 |
|---|---|---|
| 参数选择记录 | 候选范围、尝试次数、目标与约束 | 是否只保留了最高收益的一次 |
| 单轮验证结果 | 训练/验证起止、最终参数、成本与指标 | 参数是否在验证开始前确定 |
| 跨窗口汇总 | 各验证段、交易数、回撤与参数漂移 | 是否重复计算重叠区间,表现是否集中于少数窗口 |
| 复核结论 | 失效条件、待核实数据与下一步计划 | 是否把验证失败也保留下来 |
常见问题
样本外表现不好,能继续调整吗?
可以继续研究,但一旦根据该区间结果改规则,它就参与了选择。应记录这次调整,并寻找新的未参与选择的数据或后续观察,不能继续把原区间称为独立检验。
FiClaw 会自动完成全部 Walk-forward 分析吗?
本指南介绍验证设计,不承诺一键滚动验证。FiClaw 可辅助策略规格、代码、回测和参数比较;窗口调度、数据可用性和具体运行方式需按当前版本与接口确认。
滚动验证通过就能实盘吗?
不能据此直接做出上线决定。还需复核数据时点、费用、成交假设、容量与权限,进行独立评估,并由授权人员决定后续动作。
方法参考
- scikit-learn:TimeSeriesSplit 时间顺序划分与 gap 参数
说明时间序列切分的顺序与间隔设置;不是 FiClaw 内部实现说明。