3. 样本外验证的数据边界与切分原则
板块轮动策略的回测结果之所以经常“看起来很美”,很大程度上源于数据边界处理不当。样本外验证的核心任务,是在时间轴上划出一条策略在开发阶段“看不见”的分界线,让最终评估所用数据与参数选择、因子筛选、阈值调优所用数据严格隔离。本节围绕三个问题展开:边界划在哪里、切分方式怎么选、滚动与扩展窗口分别适用于什么场景。
一、先定逻辑,再定边界
样本内/外的切分点不是随手取一个日期,而应由策略逻辑决定。板块轮动策略通常依赖两类信息:一是宏观或流动性状态变量(如利率、信用利差、M2增速),二是板块相对强弱与动量信号。若策略使用12个月动量、月度调仓,则样本内窗口至少要覆盖若干个完整的“动量形成—持有—换仓”周期,否则参数估计会被单一行情段主导。
一个可操作的判断标准是:样本内区间应包含至少一轮完整的牛熊或风格切换,且样本外区间长度不低于策略最长持有周期的3~5倍。例如某轮动策略以20个交易日为持有期、月度调仓,样本内取2013年初至2019年末(约7年,覆盖2015年牛熊切换与2016—2018年风格反复),样本外取2020年初至2023年末(约4年,含2020年成长占优、2021年周期回归、2022年价值防御三段不同环境)。这样的切分使样本外具备独立的环境代表性,而不是样本内行情的简单延续。
二、前视偏差与数据窥探的两个高发环节
前视偏差指在时点t使用了t之后才可得的信息。板块轮动中常见的情形包括:用当月收盘价计算当月动量并据此在月初调仓;用已修订后的宏观数据(如GDP、PMI终值)做当期判断;用当前成分股列表回溯历史板块收益,导致幸存者偏差。规避方法是统一采用“信号可得时点”对齐:动量用截至上月最后一个交易日的数据,宏观变量用首次公布值而非修订值,成分股用历史时点快照。
数据窥探则发生在反复调整参数直到样本内表现最优的过程中。即使切分了样本外,若研究者多次“偷看”样本外结果并回改参数,样本外即被污染。工程上的做法是:样本外只评估一次,或采用嵌套结构——外层留出最终测试集,内层用滚动交叉验证做参数选择。参数搜索空间也应事先固定并记录,避免事后追加。
三、滚动窗口与扩展窗口的适用场景
滚动窗口保持训练集长度固定,每次向前平移,适合参数随市场结构变化而漂移的策略。例如板块动量回看期在2015年前后可能从6个月变为12个月更有效,滚动窗口能及时“遗忘”过时样本。其代价是训练样本较少,参数估计方差偏大,且窗口长度本身成为一个需要事先设定的超参数。
扩展窗口起点固定、训练集不断累积,适合参数相对稳定、样本量宝贵的策略,如基于低频宏观状态的板块配置。它保留了全部历史信息,估计更稳健,但对早期过时数据的权重不加区分,遇到制度性变化时反应偏慢。实践中可折中:用扩展窗口但给近期样本更高权重,或对宏观变量做状态分层后再累积。
无论哪种方式,测试段都必须紧接训练段之后、且不重叠。以月度调仓为例,若训练集截至2019年12月,测试集应从2020年1月开始,信号计算所用数据不得晚于2019年12月最后一个交易日。滚动步长通常取与调仓频率一致或为其整数倍,避免测试段之间出现信息重叠。
四、一份可执行的切分检查清单
在正式跑样本外之前,建议逐项核对以下要点,形成可留档的记录:
| 检查项 | 判断依据 | 示例记录 |
|---|---|---|
| 切分点是否由策略逻辑决定 | 样本内覆盖完整风格周期 | 2013-01至2019-12,含牛熊切换 |
| 信号可得时点是否对齐 | 动量用上月收盘,宏观用初值 | 调仓日T,信号截至T-1月末 |
| 成分股是否用历史快照 | 避免幸存者偏差 | 按调仓日板块成分回溯 |
| 样本外是否只评估一次 | 参数搜索空间事先固定 | 回看期{3,6,12}月,记录后不再改 |
| 窗口类型与步长 | 与调仓频率匹配 | 滚动窗口36个月,步长1个月 |
需要强调的是,样本外验证不是一次性动作,而是一套纪律。切分点、窗口类型、参数搜索空间都应在看到样本外结果之前写定;一旦样本外被用于调参,它就退化为样本内,必须重新划出新的留出区间。对于板块轮动这类受宏观环境影响较大的策略,建议保留最近1~2年作为“最终盲测集”,在策略上线前才启用,以最大程度保留其检验价值。