如何测试回调趋势?
直接答案
可以通过将“回调趋势”这一想法转化为一个具体、可证伪的假设来进行测试,该假设需包含明确的规则(例如:什么构成趋势、什么构成回调,以及“反应”窗口的定义)。然后使用历史数据,将结果与基准进行比较,同时真实计入交易成本和执行影响,并通过多种数据划分和压力测试来检验其稳健性。你还应至少记录一种有意义的失败模式,以便判断该方法在特定市场条件下是否失效。
由于本主题涉及市场行为,你应将任何测试结果视为条件性的:结果会因市场状况、成本、执行质量以及司法管辖区的不同而变化。历史关系并不能保证未来结果。
机制与定义
测试需要能够一致应用的定义。
1) “趋势”的含义(稳定与可变输入)
首先使用具体且可重复的规则定义“趋势”。例如,你可以使用更高时间框架的方向指标(如价格高于/低于移动平均线)或近期的波段结构(如连续更高的高点和更高的低点)来定义趋势。具体定义是可变的——不同的定义可能导致允许的交易不同——但关键是定义必须一致且可衡量。
稳定机制: 你正在测试的是,在一个已识别的趋势中出现回调后,价格是否倾向于在定义的时间范围内继续朝原方向运行。
可变条件: 波动率环境、流动性、交易时段、点差行为,以及你的趋势规则切换频率的变化都可能影响结果。
2) “回调”的含义
将“回调”定义为在趋势被识别后、但在延续窗口开始前发生的特定走势。一个可衡量的规则可能基于回撤幅度(例如,回撤前一段走势的一定比例)、回调持续时间限制,或类似止损的失效边界。
为了正确测试,你还必须定义什么情况会使回调假设失效(例如,当回调根据你的趋势定义演变为趋势反转时)。
3) “反应”窗口的含义
确定回调触发后的评估期。如果“反应”窗口太短,噪声将占主导;如果太长,结果可能混合了多个市场状态的变化。常见的做法是测试多个时间范围(并预先选定主要范围,以避免在看到结果后进行调参)。
4) 用一句话表述你的假设
将概念转化为一个可证伪的主张,例如:
- “当在已识别的上升趋势中出现特定规模的回调时,在扣除成本后,后续在时间范围H内的正收益出现频率高于基准规则。”
避免使用暗示盈利性或安全性的措辞。假设应允许失败的可能性。
证据与示例测试流程
以下是一个以概念为核心的实用测试流程,可在任何研究环境中实施。无需实时数据,可使用历史价格序列。
1) 选择基准和评估指标
基准回答的问题是:“该方法是否优于更简单的策略?” 基准示例(非交易信号,仅用于比较)包括:
- 无方向性基准(例如,无论是否存在回调,未来收益的平均值)。
- 无时机选择基准(例如,在与观察次数匹配的随机时间点评估结果)。
- 仅趋势基准(定义趋势但无回调限制)。
选择可验证的评估指标:
- 收益分布结果(例如,正收益试验的比例)。
- 风险调整后指标(需一致定义)。
- 回撤或尾部行为(最坏情况下的表现)。
2) 预先指定规则和假设
在运行测试前,写下以下内容:
- 趋势规则定义。
- 回调触发规则。
- 失效规则。
- 时间范围H。
- 如何处理缺失数据和合约展期。
- 如何建模执行时机(例如,假设在下一根K线开盘时成交,或在突破阈值时成交)。
假设清晰至关重要: 如果你假设的成交条件过于理想化,结果可能无法复现。
3) 划分数据以减少过拟合
使用数据划分方法以实现独立评估:
- 训练集(用于选择参数)
- 验证集(仅调参一次)
- 测试集(最终、未接触过的评估)
你也可以使用滚动/扩展窗口以尊重时间顺序。关键是避免因过去表现良好而选择参数。
4) 在回测中包含成本
“成本”往往是区分有潜力的模式与不可验证模式的关键。在概念性测试中,成本可包括:
- 交易成本(建模为每笔交易的固定金额或点差)。
- 滑点假设(执行价格可能偏离理想价格的程度)。
- 操作摩擦(信号出现的频率)。
明确说明假设。例如,你可以假设基准模型的每轮回测成本为常数,然后在更高和更低的成本水平下进行敏感性检查。
5) 稳健性检查(成本、参数、市场状态)
仅在单一参数设置下出现的结果是脆弱的。稳健性检查可包括:
- 参数扫描:确认在合理范围内参数变化时,表现不会崩溃。
- 市场状态压力测试:分别在高波动和低波动时期,或重大流动性变化前后进行测试。
- 执行压力测试:改变滑点和成交时机假设。
- 市场结构压力测试:在趋势更频繁翻转时比较结果。
6) 在计入成本后与基准比较
关键测试是:你的回调约束是否在基准之上提供了额外的解释力。如果基于回调的过滤器只是重新分配了亏损,而未改善收益分布或尾部行为,则该假设较弱。
7) 记录失败模式
至少记录一种实质性的局限性或失败模式。常见类别包括:
- 趋势定义不匹配:你的趋势规则切换过快,导致“回调”变为反转。
- 回调触发模糊:回调阈值常被噪声触发。
- 时间范围不匹配:延续发生在所选窗口之外。
- 成本敏感性:随着假设成本上升,表现消失。
如果你的测试在某一类别下持续失败,请将其视为重要信息。
局限性与风险
条件性结果
结果会因市场状况、成本、执行质量和司法管辖区而异。即使设计良好的历史测试,未来也可能产生不同结果。
历史关系并非保证
历史关系不能确立未来结果。测试只能表明在过往条件下是否合理,而非确定性。
过拟合与“确认偏误”
如果你反复根据测试结果调整规则,可能会陷入学习数据集而非理解概念的风险。这就是为何预先指定和数据划分至关重要。
存活偏差与数据问题
数据质量(缺失K线、相关公司行为、时区对齐)可能扭曲你的“回调”检测和执行假设。
实施风险
触发条件检测方式的微小变化——例如,回撤是基于K线内极值还是收盘价计算——都可能显著改变结果。