如何负责任地回测SMA?

了解如何在控制偏差和限制的情况下回测SMA。

如何负责任地回测SMA?

定义SMA以及具体测试的内容

简单移动平均线(SMA)回测用于检验一种规则:该规则将价格数据转换为计算出的平均值,然后评估当该平均值可用时,某个选定决策规则的表现。即使你没有将SMA转化为“交易信号”,你也仍需明确你要评估的机制:SMA公式、时间框架以及采样频率(例如日收盘价对比日内K线)。

负责任的定义始于明确写出的假设。你必须明确说明的假设示例包括:你使用的价格序列(收盘价、典型价格或其他定义)、数据集中“K线”的含义,以及SMA窗口长度在该时间单位中的具体表示。如果你之后更改了这些选择中的任何一项,你就不再是在测试同一个想法。

使用与实际决策方式匹配的数据规则

当数据集包含在决策时点未知的信息时,回测结果将变得不可靠。一种常见的失败模式是前视偏差(look-ahead bias):使用隐含包含未来数据的价格或计算值。对于SMA,你通常希望在时间t的SMA值仅基于截至t(或截至t-1,如果你假设决策发生在K线开盘时)可用的数据计算得出。

同时要控制数据一致性。如果你重新采样、插值、调整公司行为(如适用)或拼接多个数据源,回测结果可能会发生变化。负责任的做法是定义一个固定的预处理流程,并在所有实验中保持不变。

包含成本、滑点和执行假设

即使是在教育性回测中,你也应建模成本和执行假设,因为它们通常主导结果。可变因素包括点差/费用、佣金结构、滑点,以及观察到的K线价格与你实际能成交价格之间的差异。

应明确说明以下假设:你如何将基于SMA的时机转化为执行时间(K线结束时 vs 下一根K线)、你是否假设交易在买一/卖一价或中间价成交,以及你如何处理部分成交。如果你不包含成本,变体之间的排名可能会产生误导,因为在无摩擦世界中看似盈利的小幅时序调整在现实中可能并不成立。

通过偏差检查和样本外测试控制过拟合

负责任的回测不仅仅是“运行一次并查看收益”。你需要偏差控制机制,将探索与评估分开。

从分块或时间顺序拆分开始:使用初始阶段选择参数(例如SMA窗口长度或你可能与SMA结合使用的其他规则阈值),然后完全保留后续阶段用于评估。如果你测试多个参数值并基于后续评估数据选择最优值,回测结果可能会高估实际表现。

然后添加反映真实不确定性的样本外检查。例如:

  • 使用多个不重叠的测试窗口重复该过程(滚动前移)。
  • 进行稳健性测试,轻微扰动数据集(例如小幅改变采样频率),观察结论是否崩溃。
  • 概念上使用行情感知评估(例如,比较趋势行情与震荡行情下的表现),但始终保留相同的数据规则和评估窗口逻辑。

测试局限性和失败模式,而不仅仅是主要结果

历史关系不能确立未来结果。基于SMA的回测中,常见的重大局限性和失败模式包括:

  1. 行情转变:当市场趋势运行与均值回归时,SMA的表现可能截然不同。
  2. 对参数的敏感性:结论可能依赖于恰好适合所选样本的某个窗口长度。
  3. 数据质量:缺失K线、不同品种的历史数据或不一致的价格定义都可能改变计算出的SMA。
  4. 执行不匹配:假设理想成交的回测可能高估实际交易中时序规则所能实现的效果。

为使这些局限性具体化,应在评估指标中明确定义“失败”的表现。不要依赖单一数值,而应观察当成本上升、滑点假设恶化、或从一个测试窗口切换到另一个时,结果如何变化。

验证与下一个问题:你应该独立验证什么?

为负责任地验证你的回测,请将其视为一个可复现的实验。

首先,独立重新计算SMA序列,并确认SMA值与你的实现一致,使用一个小样本进行手动检查移动窗口的计算。

外汇和差价合约交易具有重大风险。FoxiForex的信息仅用于教育,不构成个人财务建议。赞助内容会被清楚标注。