量化回测 青柠量化

回测周期怎么选才合理?别只挑一段漂亮行情

Z ZPYZTECH
2026-08-07

回测周期看起来是技术细节,经常是结论的隐形导演。同一套规则,只跑 2019–2020,和跑 2016–2024,故事可以完全相反。很多人不是故意造假,而是下意识把窗口停在曲线好看的地方——研究结束时心情很好,实盘第一个反向年份就开始怀疑人生。

合理周期要覆盖「多种天气」

好的回测窗口,尽量让策略经历过不同类型的市场,而不是只经历它擅长的那种:

  • – 有趋势的上涨段
  • – 有阴跌或急跌段
  • – 有宽幅震荡段
  • – 若相关,再包含流动性变化、监管或风格切换的年份

A 股语境里,拉太短(两三年)很容易只碰到一种风格红利;拉太长也要小心:早期微观结构、涨跌停制度、交易成本与现在不同,规则若假设今日机制,过远历史要降权或分段解释。

没有放之四海的「必须 10 年」。更管用的标准是:你声称策略适应的环境,样本里有没有出现过? 声称全天候,却只测牛市,那是广告不是研究。

样本内 / 样本外:周期要切开,不是只加长

把 2015–2024 整段调参到最优,再宣称「十年有效」,那是把十年都当样本内。更诚实的切法:

  • 样本内:只用于理解规则、少量试参数
  • 样本外:参数冻结后再跑,看是否塌
  • – 有余力再做滚动:如每两年训练、下一年测试(走前进析)

加长全样本却不切开,只是让过拟合有更多数据可舔,不是更科学。

「挑漂亮行情」的自查清单

问自己这几个问题,命中越多越危险:

  1. 1. 我是否因为某段亏损难看,就把起始年往后挪?
  2. 2. 是否排除了某个「特殊」年份,却说不清排除标准是否事前写好?
  3. 3. 是否只展示策略擅长的品种年份,弱项年份略过?
  4. 4. 参数是否在看过全段曲线后才「最终确定」?

正当做法:起始结束日期事先写进研究计划;若事后发现数据质量问题要截断,记录原因,并同时报告截断前后差异。

可执行的选周期流程

  1. 1. 先写策略假设:它吃趋势、吃均值回归、还是吃事件?
  2. 2. 列出必须覆盖的反例年份(对趋势策略,至少要有长时间震荡或失效段)。
  3. 3. 划定总窗口,再切 70/30 或按年份留出最近 1–2 年做样本外。
  4. 4. 分年度报告:不报「平均年化一个数」了事;哪年亏、亏在什么环境,写清楚。
  5. 5. 敏感性:窗口整体平移半年,结论是否大变?大变说明周期脆弱。

反例:某个动量规则在 2020 年极强,研究者把回测从 2019 中开始、到 2021 初结束,夏普耀眼。把窗口扩到 2017–2024 并留样本外,优势可能只剩「某一两年的故事」。周期选择比指标选择更能制造幻觉。

也别走向另一极端:为了「够难」,故意只留策略必死的窗口,然后宣布无效——那是用虐杀代替检验。目标是代表性,不是找一段能证明自己对的行情,也不是找一段能证明别人错的行情。

若策略依赖特定制度(如注册制后的涨跌停差异),窗口还应标明制度分段,避免把不可比阶段揉成一个年化。

交易次数也约束周期:若规则一年只触发十几次,你用两年窗口得出的胜率会抖得像噪声。此时要么加长窗口,要么降低对胜率精度的声称,改看期望的方向是否稳定。费用假设随年代变化时,分段用不同佣金/印花税率,比整段用今日费率更少自我感动。选周期的本质,是让「你声称的有效环境」和「你实际喂给回测的环境」对齐。

把不同周期的回测结果版本化保存,你才能诚实地对比「缩短窗口后好看了多少」。青柠量化 强调策略与结果本地保存,方便按区间重跑,而不是只留一张最终截图。

下载与说明见产品页:
https://www.zpyztech.com/product/qingquant/


免责声明: 本文仅作量化研究方法科普,不构成任何投资建议。历史回测不代表未来表现,请独立判断并自行承担投资风险。

读到这里,不如自己验证一次

文章里的逻辑,你可以在青柠量化里用真实数据重新跑一遍。免费,零代码。

免费下载客户端

写下你的看法

邮箱仅用于回复通知,不会公开。