如何负责任地回测 Supertrend 指标?
从明确你要回测的内容开始
Supertrend 是一种趋势跟踪指标,它利用价格和平均波动率来构建一条线,然后根据价格相对于该线的位置判断市场方向。回测时应将指标计算和决策逻辑视为两个独立部分:
- 指标计算:如何从 OHLC 数据和波动率估计值构建通道/线。
- 决策逻辑:当价格位于该线上方或下方时你采取什么操作(例如,在条件满足时入场,在信号反转时离场)。
如果混淆这两者,你实际上可能是在“回测”一个不断变动的目标,而非 Supertrend 本身。
明确假设
列出为重现计算所需的基本假设,例如:
- 使用的价格输入(开盘/最高/最低/收盘)。
- K线时间周期。
- 是否使用完整形成的K线(K线结束时)或近似值(如使用更早的信息)。
- 测试的 Supertrend 参数具体数值。
许多不负责任的回测正是在这里失败:它们未定义数据时机和决策时机,导致结果无法验证。
区分稳定机制与可变因素
负责任的回测应将以下两类因素分开处理。
稳定机制(由你控制)
这些是你可以在测试前锁定的选项:
- 指标设置和计算规则。
- 信号到交易的映射(入场/离场规则)。
- 回测引擎规则(仓位规模模型、是否只能持有一笔头寸、如何处理反转)。
可变因素(可能影响结果)
即使指标相同,这些因素也会影响表现:
- 市场状态:趋势市与震荡市会影响方向反转频率。
- 成本与执行:点差、滑点,以及信号与成交之间的延迟。
- 数据质量:缺失K线、时间戳错误,或调整后与未调整价格序列。
回测应将这些作为假设或敏感性测试的一部分,而非事后解释。
加入成本与执行时机,避免结果虚高
许多回测隐含假设交易能以理想价格成交。相反,应明确一个一致且可测试的执行模型。
需要记录的常见成本假设
- 点差模型:使用固定点差假设,或如果你有数据,使用随时间变化的点差。
- 滑点模型:为每笔成交应用一个滑点金额(或分布)。
- 佣金/费用:若建模,需说明费率及收取时机。
K线时机至关重要
对于基于 OHLC K线计算的指标,需定义交易是否可在:
- 信号出现后的下一根K线开盘执行,或
- 同一根K线收盘执行(后者在实盘中通常不够现实)。
若回测使用K线结束信息进行交易,相当于“预知”收盘价,则结果可能被高估。
通过严格的数据划分和有限调参控制偏差
“负责任”的回测在很大程度上是防止信息泄露。
使用样本外评估
典型做法:
- 训练/选择阶段:尝试不同参数组合并确定最终配置。
- 评估阶段:保持数据完全未接触,直到最后才一次性测量结果。
避免在完整数据集上进行调参,以免过拟合噪声。
应用前向滚动(walk-forward)检查
前向滚动评估可降低意外拟合某一历史时段的风险。例如,重复以下步骤:
- 在一个窗口内拟合/选择参数,
- 在下一个窗口评估,
- 向前滚动并重复。
然后检查性能是否在多个划分中保持一致。
不依赖单一汇总数字,使用更多证据
即使你正确执行了回测流程,单一绩效指标仍可能误导。
跟踪多个结果维度
考虑衡量:
- 回撤和最差时期的亏损,
- 信号翻转频率(衡量交易频率对成本的敏感性),
- 在不同市场条件下的收益分布。
通过受控敏感性测试验证稳健性
不要无休止地搜索,而应进行有计划的敏感性检查,例如:
- 在预设的小范围内调整 Supertrend 参数,
- 改变K线周期,
- 调整执行假设(如更高的滑点)。
如果结果在微小合理变动下即崩溃,这本身就是重要局限。
至少识别一种显著的失效模式
负责任的分析应明确指出 Supertrend 可能失效的场景。
应包含的典型失效模式
- 震荡/盘整市况:方向频繁反转会增加交易频率,使成本成为主导因素。
- 参数敏感性:微小的参数变化可能显著改变通道行为和交易频率。
- 时机错配:使用不现实的成交时机可能使脆弱策略看似稳定。