终极振荡器如何负责任地进行回测
直接回答
对终极振荡器进行负责任的回测,首先要把指标中“在真实交易中相对稳定的部分”和“会在实际交易中发生变化的部分”分开。你需要定义指标计算与数据集,对每一次测量都写清假设,纳入必要的交易成本与执行时点,在规则设计阶段控制偏差,并在样本外验证结果。目标是验证:你应该能够把方法讲得足够清楚,让另一个人能按同样步骤复现,并对证据是否确实稳健得出相同结论。
机制或定义
终极振荡器是一种动量风格的指标,它基于多个回看周期内的价格走势构建。用回测术语来说,“负责任”意味着你从明确的定义开始:
- 指标输入:你使用哪种价格序列(例如,中间价 vs. bid/ask),以及数据频率(日线、小时线等)。
- 计算规则:所选实现方式中精确的滚动窗口长度,以及任何用于平滑的步骤。
- 映射到结果:由于振荡器的数值本身并不等同于一笔交易,你必须明确你要衡量什么。例如,你可以衡量:振荡器上某个预先设定的条件,是否会在固定持有/观察期之前出现并领先于未来收益。你的映射应在查看结果之前就固定下来。
- 假设:如果你的示例使用了持有期、预测窗口或阈值,你需要把它们作为明确参数写出,并保持前后一致。
这一步之所以重要,是因为不同的“终极振荡器”实现方式,以及不同的价格参考口径,都可能改变得到的时间序列——即使这个概念本身是相同的。
证据或示例
一个负责任的工作流程通常采用两阶段设计与干净的评估:
- 设计阶段(样本内):选择如何把振荡器信息转换为可衡量的结果(你的规则集)。同时选择如何计算绩效与风险指标。
- 评估阶段(样本外):冻结规则集,并在后续未用于设计规则的数据上重新运行。
为了让方法可验证,你需要用一种能够在整段历史中一致应用的方式来定义成本与时点:
- 成本(摩擦):把交易成本作为假设纳入(即使是简化的)。这包括类似点差的影响,以及你选择的任何滑点模型。
- 执行时点:明确决策使用的是K线收盘时可获得的数据,还是K线开盘时可获得的数据。否则,结果可能会变得不切实际地乐观。
- 采样对齐:确保用于做出决策的振荡器数值并不是通过相对于决策时点的未来价格计算出来的。
材料限制示例:假设你在一个较窄的历史窗口上进行测试。即使方法看起来很强,也可能是在捕捉某个阶段性的市场状态。当你切换到不同的时期,表现可能会显著下滑——因此,评估阶段以及结果在不同时间跨度下的稳定性至关重要。
局限与风险
在回测基于振荡器的想法时,常见的失效模式包括:
- 数据泄漏:如果你的规则意外地使用了未来信息(例如,通过把指标计算与决策时点对齐错误),你可能得到在真实交易中无法发生的结果。
- 过度拟合:如果你不断调整阈值、回看长度或规则逻辑,直到样本内结果看起来很好,你就可能构建出一种难以泛化的模式。
- 忽视成本:振荡器策略可能包含很多决策。如果你忽略摩擦假设,或以不一致的方式应用它们,那么在把成本纳入之后,“优势”可能会消失。
- 状态依赖:当波动率、趋势性或市场微观结构发生变化时,动量关系可能会改变。历史关系并不能保证未来结果。
最后,即使回测在技术上是正确的,也无法证明未来。它只能在你的假设下检验历史证据是否一致。
验证或下一个问题
为了独立验证,你应该能够从自己的笔记中回答这些问题:
- 用来计算终极振荡器数值的精确价格序列与频率是什么?
- 哪条固定规则把振荡器条件映射为可衡量的结果?它是在看到结果之前就被选择的吗?
- 使用了哪些交易成本与滑点假设?它们是如何相对于执行时点来应用的?
- 你如何防止泄漏,并确保决策时点的数据不包含未来信息?
- 样本外结果如何变化?它们在不同期间内是否仍保持在合理范围内?