如何测试策略回顾?
直接答案
策略回顾可以通过将其转化为明确且可验证的评估流程来进行测试。与其将回顾视为直觉判断,不如定义一个关于策略回顾应带来何种改变或确认的假设,选择一个用于比较的基准,明确如何将数据划分为分析期和评估期,建模成本和执行假设,然后运行稳健性检查,以验证结论在输入变量合理变化下是否依然成立。
机制与定义
策略回顾是评估交易方法表现及其原因的过程——通常通过检查假设、输入、结果和执行背景来实现。测试它的含义是验证该回顾方法是否真正产生了关于绩效驱动因素的可靠结论。
为了使策略回顾可测试,需将稳定的机制与可变条件区分开:
- 稳定机制:你期望其系统化且不依赖于特定时间点的要素(例如,评估指标每次计算方式是否一致)。
- 可变因素:变化的市场状态、波动性变化、流动性、点差/费用变化,以及执行质量的差异。
一个实用的测试结构从假设和指标开始:
-
假设(你期望策略回顾发现的内容)
- 示例形式:“如果回顾有效,那么在应用回顾的调整或结论后,与使用相同指标计算的基准相比,应在样本外数据中出现绩效提升。”
- 保持可验证性:假设必须指向可衡量的结果(例如,扣除成本后的净收益),而非模糊判断。
-
基准(你进行比较的对象)
- 使用代表“回顾前”状态或替代参考的基准,并使用相同的测量规则计算。
- 基准必须提前定义,避免在看到结果后才选择。
-
输入与假设(必须明确说明的内容)
- 说明计算和示例中的假设,包括如何处理成本(点差、费用)和执行(滑点、成交假设)。
- 如果无法估算某项成本,应定义保守的代理值,并明确标注为假设。
-
数据划分(如何防止数据泄露)
- 明确划分为分析期(进行回顾决策)和评估期(测试假设)。
- 避免在同一数据上同时用于决策和判断。
-
成本与执行建模
- 未计入成本的绩效不等于实际绩效。
- 使用你声明的假设建模成本,并在基准和评估结果中保持成本模型一致。
-
决策规则(什么算作“支持”)
- 预先定义规则,例如:“评估指标必须以特定方式改善,并在多个子集中保持在指定容差范围内。”
- 这并不保证正确性,但使测试具有客观性。
证据或示例
以下是一个无需依赖实时价格即可应用的可测试框架。
-
定义回顾假设
- “策略回顾识别出真实的绩效驱动因素,而非由随机波动产生的模式。”
- 将其转化为可衡量的比较:选择一个评估指标(例如,扣除成本后的净绩效指标)和方向(改善 vs. 未改善),并要求在样本外进行测试。
-
选择基准
- 基准 A:使用相同成本和执行假设,根据策略原始规范计算的绩效。
- 基准 B(可选):简化或替代版本的绩效,除回顾声称重要的要素外,其余机制保持不变。
-
划分数据
- 使用训练/测试方法:“训练”期用于确定回顾推理和任何调整;“测试”期用于评估。
- 若有多个市场状态期,也可使用滚动划分:用早期窗口进行回顾,用后期窗口进行测试。
-
将成本建模纳入评估
- 对每个评估期,计算扣除所假设成本后的结果。
- 在基准和测试版本中使用一致的成本方法。
-
运行稳健性检查
- 在合理范围内改变关键假设。常见示例包括:
- 不同的合理滑点水平或费用代理值。
- 不同的数据分组方式(按时间段、波动性区间或流动性代理)。
- 不同的评估指标(使结论不依赖于单一衡量标准)。
- 在合理范围内改变关键假设。常见示例包括:
-
评估失败或不一致
- 策略回顾测试应明确寻找失败模式:
- 结果仅在训练期改善,但在评估期未改善。
- 成本假设稍有变化,结论即反转。
- 某一子集中出现改善,但在其他子集中消失。
- 策略回顾测试应明确寻找失败模式:
如果你的测试在这些检查中持续获得样本外支持,则有更强证据表明回顾流程捕捉到了超出随机噪声的内容。
局限性与风险
测试策略回顾无法消除所有不确定性。主要局限包括:
- 非平稳性:市场行为随时间变化,因此历史关系在未来条件下可能不再成立。
- 对成本和执行的敏感性:点差、费用和执行假设的微小变化可能显著影响结果。
- 数据泄露风险:若决策受后续用于评估的数据影响,测试将产生偏差。
- 过度拟合叙事:回顾可能看似有说服力,实则仅匹配噪声模式。稳健性检查有帮助,但并非证明。
- 司法管辖区和运营差异:报告规则、执行现实及其他运营限制可能不同,影响“相同”回顾的衡量方式。
需警惕的一个重大失败模式是将可变条件混入稳定机制中。例如,若回顾将成功归因于“策略”要素,但实际成功恰逢特定市场状态或执行环境,则当条件变化时,回顾很可能失败。
验证或下一个问题
要独立验证策略回顾,请问自己:他人是否能完全重复你的测试?
- 他们是否有清晰的假设、预定义的基准和一致的指标定义?
- 他们是否了解用于成本和执行的假设,并能复现相同计算?
- 是否有明确的数据划分以防止泄露?
- 当你改变假设并检查不同子集时,结论是否经得起稳健性检查?
一个有用的后续问题是:你在设置中使用的哪些假设最不确定?你的结果在多大程度上依赖于这些假设?如果答案模糊,则该测试尚不够可验证。