如何负责任地对DPO进行回测?
定义DPO及可回测的计算方式
DPO通常指一种基于移动平均线的指标,用于将当前价格与向后偏移一定周期的历史价格进行比较。要负责任地回测DPO,首先应明确写出其具体计算方法:使用哪种类型的移动平均线(例如简单移动平均或指数移动平均)、回看周期长度、偏移量(offset),以及如何将指标值转化为交易决策。
两个常见的误解会导致错误的测试结果:(1)不同工具对“DPO”的定义不一致;(2)混淆了指标线本身与你可能应用的决策规则。在回测中,应将DPO视为一个从历史OHLC数据(或你所使用的任何价格字段)计算得出的输入序列。然后将决策规则与其分离,以便在不改变指标定义的前提下一致地测试策略。
当你从历史K线计算DPO时,需明确以下假设:是否仅使用收盘价、如何处理缺失K线、指标是在K线收盘时还是开盘时计算。这些假设决定了在当时可获得的信息范围。
区分稳定机制与可变条件
负责任的回测应区分稳定的指标机制与可能从纸面结果变为实盘运行时发生变化的可变条件。
稳定机制包括:指标公式、偏移量/偏移周期的解释方式,以及任何确定性转换(例如将指标归一化或转换为特征)。可变条件则包括:市场状态、波动率、流动性,以及点差和滑点随时间的变化行为。
由于回测缺乏实时数据,你应以保守且透明的方式建模交易成本。成本可包括点差/佣金估算和滑点假设。即使你没有精确的逐笔交易数据,也必须明确一条规则:例如,假设交易成本在入场和出场时均被计入,并说明是按每笔固定成本建模,还是按价格变动比例建模。
执行假设与指标本身同等重要。你需要决定如何将指标信号转化为时间上的交易结果:如果你的决策基于K线收盘时的DPO值,那么入场不应假设已知K线内的价格细节。应使信号时机与价格时机保持一致,以避免无意的前瞻偏差。
添加偏差控制,防止结果仅为过度拟合
当所有参数选择都针对同一段历史数据进行优化并用于“评估”时,回测结果将变得不可靠。为降低此类风险,应使用偏差控制措施。
关键检查包括:
- 防止前瞻偏差:确保在时间 t 使用的每个指标值仅基于 t 时刻之前的数据计算得出。偏移特征可能诱使你错误地移动时间序列。
- 参数纪律性:如果你对指标长度或偏移量进行搜索,必须使用独立的评估期。否则,你衡量的只是拟合噪声的能力。
- 前向滚动或滚动测试:仅使用历史数据重新估计允许更新的部分(例如参数选择),并在下一个数据段上进行评估。
还应测试策略的鲁棒性:如果指标参数的微小变化导致结果大幅波动,则该关系可能不稳定。负责任的工作流程应记录参数搜索空间、步长和选择标准,并检查当参数超出最初优化范围时,性能如何变化。
提供证据或示例方法,避免夸大结果
一个清晰的示例工作流程如下:
- 选择一个明确且单一的DPO定义(公式、MA类型、长度、偏移量)。
- 设计一个简单且时间对齐的规则,将DPO转化为假设操作。在验证数据管道时保持该规则不变。
- 在完整数据集上计算DPO,并通过检查用于K线 t 的指标值是否仅依赖于此前的K线,来验证其时序正确性。
- 使用明确的交易成本模型和执行时序规则,进行考虑成本的评估。
- 使用样本外测试(一个或多个未见过的数据段)来估计结果是否可持续。
该结构可提供关于建模关系可重复性的证据,而非对未来表现的承诺。
必须考虑的局限性与失效模式
历史表现可能因多种原因产生误导:
- 市场状态依赖性:指标通常在特定市场条件下有效,而在其他条件下失效。混合多种市场状态的回测可能掩盖指标失效的时机。
- 成本敏感性:如果策略依赖频繁交易,点差或滑点假设的微小变化就可能完全抵消指标的优势。
- 过度拟合:参数搜索、重复运行和灵活的规则调整可能导致对噪声的拟合。