2. 滚动窗口回测的核心概念与术语体系

滚动窗口回测的本质,是把一段历史行情切成若干“训练—测试”配对,让策略在每个配对中先看历史、再做交易,从而模拟“参数只能依据过去信息确定”的真实约束。要读懂这类回测,先要建立一套统一的术语坐标:窗口长度、滚动步长、训练段与测试段、样本外区间、参数重估频率。它们不是彼此独立的参数,而是共同决定“策略多久适应一次市场、每次用多少历史、验证多少未来”的一组耦合量。

一、五个核心术语的准确定义

设总回测区间为 [T0, T1],按时间轴从左到右推进。一个滚动窗口由两段拼接而成:训练段(in-sample,样本内)用于估计参数,测试段(out-of-sample,样本外)用于执行并记录策略表现。训练段长度记为 L_train,测试段长度记为 L_test,两者之和构成一个窗口的总长度 L = L_train + L_test。相邻两个窗口起点之间的距离称为滚动步长 S。若 S = L_test,则窗口首尾相接、样本外区间不重叠,这是最常见也最易解释的设定;若 S < L_test,样本外区间会重叠,相当于用更多窗口“平滑”评估结果;若 S > L_test,则窗口之间出现空档,部分行情不参与任何测试。

样本外区间指所有测试段在时间轴上的并集,它是唯一可用于评价策略的区间。样本内表现只用于选参,不能作为业绩证据。参数重估频率则描述“多久重新估计一次参数”,在步进式滚动中通常等于每个窗口重估一次,其节奏由 S 决定;若采用扩展窗口(训练段起点固定、终点右移),重估频率仍由步长控制,但训练样本量会逐窗增长。

滚动窗口的时间轴结构(步长 = 测试段长度,样本外不重叠) T0 T1(时间 →) 训练段 W1 测试段 训练段 W2 测试段 训练段 W3 滚动步长 S 窗口总长 L = L_train + L_test 训练段(样本内,用于选参) 测试段(样本外,用于评价) 步长决定重估节奏

二、各要素如何影响回测结果与稳定性

窗口长度决定参数估计的“记忆深度”。训练段过短,参数对噪声敏感,容易在样本内过拟合、样本外剧烈漂移;训练段过长,参数反应迟钝,市场结构切换后仍沿用旧参数,导致样本外持续失效。测试段长度则决定单次评估的统计可靠性:太短则单窗收益被偶然性主导,太长则窗口数量减少、参数更新滞后。实践中常取训练段为测试段的 3~5 倍,例如训练 250 个交易日、测试 60 个交易日,使每个窗口既有足够估计样本,又能较快跟上市场变化。

滚动步长直接决定参数重估频率与样本外区间的重叠程度。步长越小,重估越频繁,策略适应性强,但交易成本与参数抖动上升,且重叠的样本外区间会让评估结果显得“更平滑”,掩盖单次失效;步长越大,重估稀疏,评估更接近独立,但可能错过结构转折。需要强调的是,重叠样本外区间不能简单当作独立观测来统计显著性,否则会高估策略的稳健程度。

参数重估频率还隐含一个常被忽视的约束:重估时只能使用截至该窗口训练段末端的数据,任何未来信息(包括测试段内的行情、财务数据的实际披露时点)都不得进入训练。若在重估时用了未来才公布的数据,样本外表现会被系统性高估,这是滚动回测最常见的隐性偏差之一。

三、一个可复现的示例设定

以下参数仅作为教学示例,用于说明各术语如何落到具体数值上,并非实测结果:

总区间:        2018-01-01 ~ 2024-12-31
训练段 L_train: 500 个交易日
测试段 L_test:  125 个交易日(约半年)
滚动步长 S:     125 个交易日(与测试段等长,样本外不重叠)
参数重估:       每个窗口起点重估一次
样本外区间:     各测试段并集,约 6 年

按此设定,窗口数量约为 (总交易日 − L_train) / S,每个窗口独立选参、独立测试,最后把各测试段的收益按时间顺序拼接,得到一条“样本外净值曲线”。判断稳定性时,不应只看拼接后的总收益,而应观察各窗口样本外收益的分布:若多数窗口为正、少数窗口大幅亏损,说明参数在某些市场状态下失效;若样本内最优参数在相邻窗口间频繁跳变,则提示参数曲面平坦度不足、过拟合风险较高。

术语之间要保持一致的口径:训练段与测试段必须严格按时间先后排列,测试段永远位于训练段之后;样本外区间只统计测试段,不把训练段混入业绩评价。任何“用全样本选参再分段评价”的做法,都不属于滚动窗口回测。

把这些术语放在同一张时间轴上理解,就能看清滚动回测的取舍逻辑:窗口长度换取估计精度,步长换取适应速度,测试段长度换取评估可靠性,重估频率换取参数更新节奏。四者共同决定了策略在“稳定”与“灵敏”之间的位置,也决定了回测结论究竟有多少可信度。