如何负责任地对趋势强度指数进行回测?
定义指标机制和数据假设
趋势强度指数(Trend Intensity Index)是一种将价格行为转化为量化趋势活动值的技术指标。要负责任地对其进行回测,首先必须明确定义所使用的具体公式,包括:
- 输入的价格字段(例如仅收盘价,还是其他字段),
- 回顾期或窗口长度,
- 数值的缩放或归一化方式,
- 如何处理缺失K线、夏令时缺口以及交易时段边界。
然后定义回测所用的数据规则。应使用与实盘交易相同条件下的K线构建方式(如K线时间周期、时间戳对齐方式,以及指标是基于K线收盘计算,还是使用可用的盘中数据)。为每一个计算示例记录假设,以便他人能根据你的原始数据复现该序列。
区分稳定的机制与可变的市场或平台条件
在指标回测中常见的失败模式是,将历史输出视为来自与实际交易环境相同的执行条件。必须将以下两个概念区分开:
- 稳定机制:从历史价格到指标值的转换逻辑。
- 可变条件:市场状态变化、流动性差异、买卖价差行为,以及订单实际成交情况。
即使你不模拟交易,你也需要有一致的规则来定义你在何时采取行动所依据的指标值(例如,“使用前一根K线之前的信息进行计算”)。如果你不固定这一时序规则,结果可能隐含了未来函数偏差(look-ahead bias)。
建模成本、执行限制和头寸管理
如果你的回测包含任何依赖交易表现的绩效指标,就必须包含成本和执行限制,因为它们常常会抵消指标看似乐观的结果。在负责任的设计中,成本不是“事后补充”,而是实验设计的一部分。
至少应明确以下假设:
- 交易成本(佣金、点差,或一个保守的总成本比率),
- 成交价格是按买/卖价还是中间价,以及滑点如何处理,
- 重新平衡或进出仓的频率(规则频率至关重要),
- 如何处理部分成交或订单延迟(即使简单的上限设定也比忽略执行要好)。
还需明确“信号使用”的含义。如果你使用该指标定义某种状态(例如“趋势中” vs “非趋势”),而非作为独立的交易信号,应明确描述该状态判定规则,并将其作为分类问题进行时间序列测试。
通过严格的评估设计控制偏差
指标回测容易受到多种偏差影响。你的实验设计应旨在识别这些偏差,而非掩盖它们:
-
参数过拟合:如果你尝试多种窗口长度或阈值,直到表现看起来良好,可能只是拟合了噪声。应使用有限的搜索空间,并记录所有尝试过的参数。
-
未来函数偏差(Look-ahead bias):确保在时间 t 使用的指标值仅包含决策时刻或之前可用的信息。
-
数据窥探偏差(Data snooping):如果你测试多个假设,只保留最佳结果,报告的表现会被高估。
一种实用的偏差控制方法是前向滚动验证(也称滚动或样本外评估)。例如,选择一个训练期来选定参数,然后在下一个连续时间段进行测试且不再重新调参。重复多个阶段,并总结结果的稳定性,而非仅关注单一最优结果。
至少包含一个实质性限制和一种失效模式
至少应公开测试一项限制条件。趋势强度类指标的常见失效模式是:在一种市场状态下表现良好(如平滑趋势),而在其他状态下表现不佳(如震荡或突然均值回归)。另一种失效模式是对时间周期的敏感性:该指标在1分钟K线和日线K线上的行为可能完全不同。
为具体验证这一点,可通过将回测划分为不同市场状态(例如基于已实现波动率或趋势强度代理指标)来进行压力测试。比较该指标与你选定的评估目标之间的关系是否在各种市场状态下都成立,而不仅仅是在某一时期成立。
通过样本外检验和可复现性进行验证
一个负责任的回测应支持独立验证。这意味着:
- 从所描述的输入可复现代码或计算步骤,
- 训练和测试阶段使用相同的指标机制,
- 样本外结果在划分后不进行再优化,
- 报告结果时具备不确定性意识(例如,比较各阶段结果的分布,而非依赖单一最佳运行结果)。