1. 课程导入与滚动窗口回测定位
在策略研发的完整链条中,回测并不是一个孤立环节,而是从想法到实盘之间反复迭代的验证过程。很多初学者习惯把全部历史数据一次性喂给策略,得到一条漂亮的净值曲线就认为策略可用;但真实交易中,策略参数是在过去某段数据上确定的,未来数据对它而言是"未知"的。单次全样本回测恰恰掩盖了这种时间上的信息错位,容易产生过度乐观的结论。滚动窗口回测(Walk-Forward Analysis,常简称 WFA)正是为了解决这一错位而设计的验证框架,它把"参数确定"与"绩效检验"在时间轴上严格分开,用一系列前后衔接的窗口模拟策略在真实推进中的表现。
要理解滚动窗口回测的定位,先看它在研发流程中的位置。一个典型的量化策略研发流程大致是:假设提出 → 数据与特征准备 → 策略逻辑实现 → 参数寻优 → 样本外验证 → 稳健性评估 → 模拟盘/实盘。滚动窗口回测主要承担"样本外验证 + 稳健性评估"这两段职责,它不负责寻找最优参数本身,而是回答一个更关键的问题:当参数只能依据历史数据确定时,这套策略在未来一段时间的表现是否依然可接受、是否稳定。换句话说,它检验的不是"某个参数点有多好",而是"参数选择过程有多可靠"。
为了把滚动窗口回测与几个容易混淆的概念区分清楚,可以用一张对比表来梳理它们的核心差异。下表为教学归纳,参数与结论均为示例性说明,不代表任何实测结果。
| 方法 | 数据使用方式 | 核心问题 | 主要风险 |
|---|---|---|---|
| 单次全样本回测 | 全部历史数据同时用于寻优与评估 | 这套参数在历史上表现如何 | 未来函数、过拟合,绩效虚高 |
| 前向分析(Forward Analysis) | 固定一段样本内寻优,之后样本外滚动检验 | 参数确定后向前推进是否有效 | 窗口划分不当会浪费数据或检验不足 |
| 交叉验证(Cross-Validation) | 随机或分折划分训练/验证集 | 模型泛化能力如何 | 打乱时间顺序,忽略时序依赖 |
| 滚动窗口回测 | 按时间顺序滑动"样本内+样本外"窗口,逐段推进 | 参数选择过程在时间推进中是否稳定 | 窗口长度、步长选择影响结论 |
可以看到,交叉验证虽然常用于机器学习,但它默认样本可交换,随机打乱会破坏金融时间序列的自相关与 regime 结构,因此不适合直接套用到策略回测。前向分析与滚动窗口回测关系密切,前者更强调"一次寻优、持续前推",后者更强调"逐窗口重新寻优、连续检验",实践中常把两者结合使用。理解这些差异,才能避免把不同工具的结论混为一谈。
滚动窗口回测的基本机制可以用"样本内窗口(In-Sample, IS)+ 样本外窗口(Out-of-Sample, OOS)"来描述。设样本内窗口长度为 L_is,样本外窗口长度为 L_oos,步长为 S。第一个窗口用第 1 至 L_is 根 K 线寻优,得到参数组 P1,然后在紧随其后的 L_oos 根 K 线上用 P1 做样本外检验;接着整个窗口向前滑动 S 根,重复上述过程。把所有样本外片段拼接起来,就得到一条"拼接样本外净值曲线",它才是评估策略真实可用性的核心依据。常见的设置是 L_is = 500、L_oos = 125、S = 125(以日线为例,约两年寻优、半年检验、半年步进),但具体取值应结合策略换手频率与数据长度调整。
下图展示了滚动窗口回测在研发流程中的位置,以及窗口滑动与样本内外划分的核心结构。图中同时标出了参数稳定性这一学习目标所处的位置。
从图中可以读出三个关键点。第一,滚动窗口回测处在"参数寻优"之后、"模拟实盘"之前,是策略从研究走向实战的必经关卡。第二,样本内与样本外在时间上严格前后衔接,绝不重叠,这是它区别于普通回测的根本。第三,真正用于评估的不是任何单个窗口的样本内绩效,而是拼接后的样本外曲线、参数在各窗口间的漂移程度,以及样本内与样本外绩效的衰减幅度。这三者共同构成"参数稳定性"这一核心目标。
为什么要把参数稳定性作为核心目标?因为参数寻优本身很容易在噪声上找到"局部最优"。如果每次窗口重新寻优得到的参数组在数值上剧烈跳动,例如均线周期在 10、60、25、80 之间来回切换,那么即使拼接样本外曲线暂时好看,也说明策略对数据区间高度敏感,未来换一段数据很可能失效。反之,如果各窗口选出的参数集中在一个较窄的邻域内,且样本外绩效相对样本内只有温和衰减,策略的可靠性就高得多。因此,滚动窗口回测的产出不应只是一条曲线,还应包括参数随窗口变化的轨迹、样本内外指标对比,以及稳定性评分。
在实际操作中,建议按以下思路落地:先确定数据频率与可用历史长度,据此设定 L_is、L_oos、S,并保证样本外总长度足够覆盖多种市场状态;再固定寻优目标函数(如夏普比率、Calmar 比率或带交易成本约束的净收益),避免不同窗口使用不同目标导致参数不可比;然后逐窗口记录最优参数、样本内指标、样本外指标;最后汇总参数漂移度与绩效衰减度,形成判断。需要强调的是,交易成本、滑点与涨跌停等约束必须在每个窗口内一致地计入,否则样本外结果会系统性偏乐观。
概括来说,滚动窗口回测不是单次回测的简单重复,而是一种以时间顺序为骨架、以样本外检验为手段、以参数稳定性为目标的验证方法论。它把"过去能赚钱"转化为"参数选择过程在未来是否依然可信"这一更接近实战的问题。建立这一整体认知,是后续所有窗口设计、指标计算与结果判读工作的起点。