如何负责任地回测痛苦指数?
在测试前先定义痛苦指数
痛苦指数是一种基于回撤的统计指标。从概念上讲,它总结了价格序列在近期高点下方运行的深度和持续时间。对于回测而言,关键不在于名称本身,而在于你所实现的精确定义:你参考的是哪个“高点”,数据采样频率如何,使用的窗口或周期是多少,以及回撤序列是如何转化为最终数值的。
负责任的方法始于写下你将要复现的计算过程。如果你无法准确描述完整的计算流程,你就无法可靠地进行测试。应将该指标视为一种从输入数据生成数值的测量工具,而不是独立的交易信号。
区分稳定的机制与可变的条件
回测准确性常常因人们将指标的机制与不断变化的市场和执行条件混为一谈而失败。
请将这些关注点明确区分开:
- 指标输入:用于计算回撤的价格序列、重采样频率以及痛苦指数的窗口。
- 回测环境:关于数值“已知”时间(时机)、订单如何成交以及适用摩擦的假设。
- 决策规则(如有):你如何将指标输出转化为评估指标。
即使你不是在构建交易规则,你也需要定义一个明确的目标。例如,你可以评估痛苦指数较高的时期是否与基础序列中更大的回撤相吻合。这是一种关系检验,而非预测。
明确数据和成本的假设
负责任的回测必须记录所有假设。常见的假设类别包括:
1) 数据范围与连续性
- 使用单一、一致的历史序列。
- 明确在数据缺失、公司行为或结构性变化时的处理方式(对于外汇而言,主要涉及数据连续性和序列构建方式)。
2) 采样与时机
- 明确你是基于K线收盘价、K线内数据还是其他惯例来计算痛苦指数。
- 确保你的“决策时间”不会使用该时间点之后的信息。
3) 成本与摩擦 如果你的评估包含任何基于指标的操作,则应在评估指标中包含现实的摩擦因素。典型的重要摩擦包括点差、佣金和滑点。即使你的目标是教育性的而非绩效导向的,包含成本也有助于防止因忽略成本而导致结果看起来过于理想。
通过明确的失败检查来控制偏差
偏差是指标回测中的主要失败模式。应包含专门用于破坏测试的检查项。
前视偏差 确保在时间 t 使用的痛苦指数值仅基于截至时间 t 的可用数据计算得出。一个常见错误是在决策仅能在K线收盘时做出的情况下,却使用了整根K线的价格路径进行计算。
过拟合(多重检验)偏差 如果你尝试了多种参数设置(窗口长度、阈值、规则),最终可能会选择一个恰好匹配噪声的配置。应限制搜索空间,或将参数选择与最终评估分开。
选择偏差 避免仅评估“表现良好”的时期。应使用预定义的评估期或前向滚动(walk-forward)程序。
一种实际的负责任做法是创建一个可能出错事项的清单(如时机错误、参数泄露、遗漏成本),并在解释任何结果之前逐一验证。
使用样本外检查来测试稳健性
历史关系不能保证未来结果。为了降低你的发现只是某一特定时期产物的可能性,请在未用于参数选择的数据上进行评估。
常见的稳健结构包括:
- 训练/验证/测试划分:使用训练集选择参数,在验证集上确认,最后在测试集上定稿。
- 前向滚动(滚动)评估:仅使用早期数据反复重新估计参数,并在后续时期进行评估。
为评估定义一个单一的绩效指标。例如,如果你仅研究回撤,你可以将实际回撤深度与痛苦指数水平进行比较。在不同实验中保持该指标的稳定性。
了解至少一个实质性局限
一个明显的局限是,痛苦指数将回撤信息压缩为一个数值。这可能掩盖分布细节。两个时期可能具有相似的痛苦指数值,但在反弹速度、峰值附近的波动性或极端波动的聚集性方面存在差异。
此外,指标行为可能随市场状态而变化。如果你的回测仅包含一种状态(例如,主要是平静条件),当条件变化时,这种关系可能不再成立。