如何负责任地回测 ADX?
在回测前先明确定义 ADX 的含义
ADX(平均趋向指数)是一种衡量趋势强度的数值指标,由方向性移动分量计算得出。负责任的回测始于区分两个方面:(1)稳定的指标机制——ADX 如何从价格序列计算得出,以及你如何处理时间和K线;(2)可变的现实条件——点差、执行质量、市场状态和数据质量。历史结果无法证明未来表现,因此你的目标不是预测,而是准确验证:在明确假设下,基于 ADX 构建的交易规则是否如预期运行。
如果你的计划涉及将 ADX 作为更大决策规则的一部分,请用清晰的语言定义这些规则,并保持 ADX 的计算逻辑独立于规则本身。
机制:确保 ADX 计算和数据集构建可复现
负责任的 ADX 回测应为每个计算步骤明确假设:
- K线定义:使用的时间周期、K线如何从逐笔数据或更低级别数据构建,以及价格是否经过调整。
- 指标参数:ADX 的回看周期长度,以及实现中使用的任何平滑设置。
- 时间对齐:确保在决策时刻使用的 ADX 值仅包含该时刻之前可用的信息。
- 数据清洗:一致地处理缺失K线、异常值和重复数据。
这种可复现性至关重要,因为 ADX 对如何从连续价格变动中计算方向性移动非常敏感。实现中的微小差异——例如K线聚合方式、时区边界或对跳空的处理——都可能导致显著不同的 ADX 路径。
成本与摩擦:建模可能实际影响结果的因素
回测常因忽略成本而夸大结果。为使评估更贴近现实,应在假设收益计算中至少包含以下内容:
- 交易成本:执行时的买卖价差假设。
- 执行滑点:成交价可能比中间价差多少的规则。
- 延迟与交易时机:决策是在K线收盘、开盘还是盘中触发,以及这如何影响成交价格。
明确陈述这些假设(例如:“假设点差恒定”或“若有数据则使用实际点差观测值”),并在整个数据集中一致应用。如果你无法用现有数据合理证明成本模型,请将结果标记为不完整。
证据与示例:测试完整规则,而非仅 ADX 数值
一种常见失败模式是将 ADX 读数视为独立信号。ADX 是一个数值,其有效性取决于你如何将其与其他条件结合使用(例如趋势方向过滤器、进出时机或仓位管理规则)。负责任的做法是:
- 定义一条使用 ADX 及其他附加条件的规则。
- 在计入成本的情况下回测完整规则。
- 评估多个时期(不同市场状态),观察行为是否稳定。
构建示例时,使用简单透明的设置:选择一种决策逻辑,准确记录如何从计算出的序列中读取 ADX,然后比较计入和未计入成本时的表现。如果加入成本后结果大幅恶化,这正是关于现实性的关键证据。
局限性与风险:需警惕的失败模式
即使机制严谨,ADX 回测仍可能以可预见的方式失败:
- 历史数据过度拟合:过多参数调整可能拟合噪声而非结构。
- 市场状态依赖性:ADX 在震荡市与趋势市中的趋势强度表现可能不同。
- 数据问题:交易品种列表中的幸存者偏差、错误的代码映射或不一致的K线构建。
- 前视偏差:因时间戳错位或指标计算错误而使用了未来信息。
- 执行不匹配:假设了现实中无法实现的理想成交。
在通过更严格的检验前,应将任何看似成功的结果视为临时性的。
验证:样本外检验与偏差控制
为避免夸大结论,应使用结构化流程进行验证:
- 样本内与样本外:在一个时期开发和校准规则,然后在另一个独立且未接触过的时期进行测试。
- 前向滚动验证:使用滚动窗口反复重新拟合,并在下一段数据上测试。
- 参数敏感性:轻微调整 ADX 参数,观察结果是否稳健或脆弱。
- 偏差审计:确认时间对齐、K线构建,且无未来价格数据泄露到计算中。
一个实用的接受标准是稳定性:当你在已记录的合理范围内改变假设时,结果不仅应更好,还应保持大致相似。