样本外测试与滚动前推测试
把数据划分为训练期和测试期,进行滚动前推分析,并判断回测业绩中有多少能在未见过的数据上保留下来。
你将学到什么
- 样本内数据与样本外数据的区别,以及为什么测试期只能使用一次
- 滚动前推分析如何运作,包括滚动窗口和锚定窗口
- 如何计算滚动前推效率和拼接后的样本外结果
- 关于窗口长度、交易笔数和参数稳定性的实用规则
讲解
抵御过度拟合(上一课)的最佳方法,是在完全没有参与规则构建的数据上测试规则。
样本内与样本外
样本内(IS)数据是你用来制定规则和选择参数(例如移动平均线的长度)的期间。样本外(OOS)数据是一个较晚的期间,你把它封存起来,只用来检验已经定型的规则。一种常见的简单划分是大约 70% 样本内、30% 样本外,并把样本外期间放在最后,因为未来总是在过去之后到来。
样本外期间只有在未被看过时才有价值。如果你看了结果、修改了一条规则然后再次测试,它就变成了样本内数据。这被称为数据窥探:反复使用同一份数据,直到某个结果偶然看起来不错。
滚动前推分析
一个保留期只能给出一个结论,而且这个结论在很大程度上取决于该期间的市场状况。滚动前推分析会把这一过程重复多次:
- 在一个样本内窗口(例如四年)上优化参数。
- 把选定的参数原封不动地应用于下一个样本外窗口(例如一年)。
- 把两个窗口都向前移动一个样本外窗口的长度,然后重复。
- 把所有样本外结果合并成一条拼接的样本外资金曲线。
在滚动式前推中,样本内窗口保持固定长度,并舍弃旧数据。在锚定式前推中,窗口始终从第一个日期开始并不断增长。滚动窗口适应得更快;锚定窗口使用更多数据,通常能得出更稳定的参数。
窗口数量为:(总年数 − 样本内年数) ÷ 样本外年数。
滚动前推效率
滚动前推效率(WFE)把未见数据上的业绩与优化后的业绩进行比较:
WFE = 平均年化 OOS 收益 ÷ 平均年化 IS 收益
WFE 接近 100% 意味着系统在新数据上的表现几乎与在用于调参的数据上一样好。WFE 较低则意味着样本内结果有很大一部分来自对噪音的拟合。一些从业者把大约 50% 作为最低标准;这是一种惯例,而不是经过证明的阈值。还要检查有多少个窗口是盈利的。
实用经验法则
- 每个样本外窗口都应包含足够多的交易才有意义;目标是所有 OOS 窗口合计至少 20–30 笔交易,如有可能则更多。
- 每个样本内窗口都应涵盖上涨、下跌和横盘阶段。
- 优先选择来自稳定“平台”(相邻数值同样有效)的参数,而不是一个孤立的陡峭尖峰。
- 在开始之前写下窗口长度和选择规则,这样你就无法在看到结果后再更改它们。
示例演算
假设示例:一个针对股票指数的趋势跟踪系统,用 10 年的日度数据进行测试。假设条件:滚动式前推,4 年样本内窗口,1 年样本外窗口,步长 1 年。收益均为假设数据,不包括费用、点差、滑点和税费。
窗口数量:(10 − 4) ÷ 1 = 6 个窗口。
| 窗口 | IS 年份 | OOS 年份 | IS 收益(年化) | OOS 收益 |
|---|---|---|---|---|
| 1 | 1–4 | 5 | 14% | 6% |
| 2 | 2–5 | 6 | 12% | −2% |
| 3 | 3–6 | 7 | 15% | 8% |
| 4 | 4–7 | 8 | 11% | 4% |
| 5 | 5–8 | 9 | 13% | −5% |
| 6 | 6–9 | 10 | 12% | 7% |
第 1 步:平均 IS 收益 = (14 + 12 + 15 + 11 + 13 + 12) ÷ 6 = 77 ÷ 6 ≈ 12.8%。
第 2 步:平均 OOS 收益 = (6 − 2 + 8 + 4 − 5 + 7) ÷ 6 = 18 ÷ 6 = 3.0%。
第 3 步:WFE = 3.0 ÷ 12.8 ≈ 23%。
第 4 步:拼接后的 OOS 增长 = 1.06 × 0.98 × 1.08 × 1.04 × 0.95 × 1.07 ≈ 1.186。只计算未见过的年份,因此 €10,000 在 6 年内增长到约 €10,000 × 1.186 ≈ €11,860,按复利计算约为每年 2.9%。
解读:六个 OOS 年份中有四个为正,但优化后的业绩只有不到四分之一保留了下来。样本内数据严重高估了这些规则。下一步应简化规则,并在真正的新数据上再次测试。
常见错误
练习活动
请在纸上完成:你有 12 年的假设数据,使用滚动式前推,样本内窗口为 3 年,样本外窗口为 1 年。(a) 共有多少个窗口?(b) 前四个窗口的 IS 收益分别为 10%、9%、11% 和 10%,OOS 收益分别为 5%、6%、−1% 和 4%。计算这四个窗口的 WFE。(c) 计算 €10,000 在这四年中拼接后的 OOS 增长。
查看答案
(a) (12 − 3) ÷ 1 = 9 个窗口。
(b) 平均 IS = 40 ÷ 4 = 10.0%。平均 OOS = 14 ÷ 4 = 3.5%。WFE = 3.5 ÷ 10.0 = 35%。
(c) 1.05 × 1.06 × 0.99 × 1.04 ≈ 1.146,因此在扣除成本之前,€10,000 增长到约 €11,460。
局限性:四个窗口是非常小的样本,而且 WFE 无法反映回撤或成本。
要点总结
- 样本外数据只有在未被看过时才有效;重复使用会把它变成样本内数据。
- 滚动前推分析把“先优化、再测试”重复多次,并只把未见数据上的结果合并起来。
- 滚动前推效率显示了优化后的业绩有多少能保留下来;数值偏低说明存在过度拟合。
- 在查看任何结果之前,先确定窗口长度、选择规则和最低交易笔数。
下一步
在下一课中,你将在回测中加入贴近现实的成本和滑点,并看看毛结果还能剩下多少。
自测
回答问题后核对答案。你可以随意重试多次。
供您自行复习的自动自测。您的答案在浏览器中核对,我们不会查看或评估。这不是考试,也不是资格证书。
您的进度
“已完成”仅表示您将本课标记为已学完,并不是对您理解程度的测试。 学习进度和笔记仅保存在此设备的此浏览器中,而非账户中。