如何负责任地对TSI进行回测?
在测试前先明确定义TSI
TSI(通常用作动量类指标)是一种通过结合一个或多个回看周期内的价格变动信息,将时间序列转换为输出的规则。回测则是将这些规则应用于历史数据,以衡量该指标行为本会如何表现的过程。
一个负责任的起点是区分两个层面:
- 稳定的机制:TSI如何从选定的输入序列和参数中计算得出。
- 可变的条件:市场状态、数据质量以及结果如何转化为实际执行。
只有在你对这两个层面都清晰之后,才能讨论其含义。
选择可解释的数据输入和假设
回测的意义取决于输入是否符合预期用途。对于TSI,需明确以下选择:
- 价格序列:使用哪个字段(例如中间价 vs 买/卖价)。如果你无法为某个选择提供合理依据,则应将其视为一项假设。
- 时间处理:K线周期、交易时段滚动和对齐方式(例如确保指标值仅使用当时可用的信息)。
- 参数设置:确切的回看周期长度以及任何平滑步骤。
- 数据清洗:缺失K线如何处理,异常值是否修正或剔除。
如果你的设置中任何部分存在模糊性,请记录下来并在所有测试运行中保持一致。这将使你的结果具备独立可验证性。
在回测模型中包含成本和执行影响
历史价格变动不等于可交易结果。即使你没有生成交易信号,你的评估仍应反映实施过程中存在摩擦。
常见的建模漏洞包括:
- 交易成本:点差、佣金和费用。
- 执行延迟:在K线收盘时操作却使用收盘价可能是不现实的。
- 滑点:预期价格与实际成交价格之间的差异。
因此,负责任的回测应对这些要素使用明确的假设。示例方法(必须声明假设):使用每笔往返交易的固定成本或简单的点差模型,并在回测逻辑改变状态时(例如每当指标条件变化时)一致地应用它。避免为了使表现“看起来合理”而调整成本。
控制偏差和过拟合
许多回测失败源于偏差而非指标设计问题。负责任的测试应包含防止你“学习未来”的控制措施:
- 预先注册参数搜索空间:在运行优化之前确定TSI设置的范围。
- 使用前向滚动(滚动)测试:在一个周期上选择参数,并在下一个未见周期上进行评估。
- 保留最终保留样本:即使你多次迭代,也应预留一段数据不用于模型选择。
你还应通过测量敏感性来测试稳健性:如果回看周期设置的微小变化导致结果发生巨大变化,则该回测可能很脆弱。
使用与预期结论相匹配的样本外检验
一个关键原则是:历史关系不能确立未来结果。因此你的评估应聚焦于设计所能支持的内容。
实用且负责任的检验包括:
- 跨多个时间段的样本外表现比较。
- 跨市场状态的稳定性:在趋势、震荡、高波动与低波动时期进行测试(由你自己的可衡量标准定义)。
- 误差范围和分布检验:关注结果的变异性,而非单一汇总数字。
如果你的目的是理解TSI行为而非声称其可投资性,你仍可将这些检验应用于你的指标(例如指标值的分布、持续性特征,或在你选择的评估规则下的类似回撤行为)。
一个实质性限制:回测只能验证流程,而非未来
一种常见失败模式是将“回测运行正确”与“策略会有效”混淆。即使有谨慎的数据处理和样本外测试,负责任的回测仍可能因以下原因被削弱:
- 非平稳性:市场动态随时间变化。
- 隐藏的实施差异:你假设的成本、执行时机和订单处理可能与现实不符。
- 选择效应:大量迭代可能产生拟合噪声的结果。
因此,最站得住脚的解释通常是关于在既定假设下测试行为的稳健性,而非关于保证未来结果。
下一步应验证的内容
如果你想负责任地回测TSI,请逐步验证你的设置:
- 确认TSI计算输入和参数定义与你的预期解释一致。
- 确认你的时间假设(信息何时可用 vs 何时采取行动)。