1,000种策略变体。胜出者测得的夏普比率为2.0。假阳性率为5%。这些数字听起来成绩不错,但如果你问一句“为找到它尝试了多少次?”,情况就不同了。尝试次数足够多时,单凭噪声也能得到一个令人信服的回测结果。
令人意外的数字不是夏普比率,而是试验次数。每一种指标窗口、入场阈值、标的范围选择,以及每个被放弃的想法,都是挑中幸运结果的又一次机会。如果研究流程忘了这些尝试,你的置信度计算也会把它们漏掉。
为什么尝试的策略越多,胜出者看起来就越好?
想象一下,你测试了1,000种并无真实优势的策略。按传统检验方法,每种策略都有5%的概率显得具有统计显著性。实际研究中的这些试验并非完全独立,但基本逻辑不变:你考察的候选策略越多,就越有可能碰巧有一个看起来格外出色。
即使每个候选策略彼此独立,至少有一个达到5%阈值的概率也约为99.4%。现实中,相邻的参数设置往往表现相似,因此1,000种变体并不等于1,000次独立抛硬币。但有效尝试次数也很少只有1次。
我在研究笔记本里见过一个常见陷阱:研究者测试从5到100的回看窗口,画出夏普比率曲面,然后报告那个看起来漂亮的峰值。曲面有助于理解敏感度,但这个峰值也是搜索的产物,理应不如实验前就选定的阈值那样值得信赖。
哪些情况算作一次研究试验?
凡是受已观察结果影响的决策,都要计入。一次试验可以是代码回测,也可以是看过权益曲线后手动做出的改动。如果旧设置错过了一轮上涨,于是你调宽止损,这次调整就利用了测试期的信息。
| 研究操作 | 通常算作试验吗? | 原因 |
|---|---|---|
| 测试另一个信号阈值 | 是 | 结果有助于筛选候选策略 |
| 看到回撤后更改日期范围 | 是 | 样本是根据表现选出来的 |
| 修复有记录的数据错误 | 通常不算 | 这项改动恢复了实验原本的设定 |
| 在新的留出期上运行同一个冻结策略 | 暂时不算新的筛选试验 | 如果根据结果调参,就算一次 |
边界的划分需要判断。修正错别字,和发现某个特征失效后再修改它,是两回事。简要记录每次试验的假设、改动、数据区间和结果。记录不必精美;哪怕只是一份注明日期的CSV,也比3个月后凭记忆还原搜索过程要好。
可以校正多重检验带来的夏普偏差吗?
去膨胀夏普比率(Deflated Sharpe Ratio)等方法,会估算从多个候选策略中筛选时有多少表面收益可能只是偶然,同时考虑收益分布和试验间的依赖性等因素。它们是有用的诊断工具,却不是能把混乱的研究流程变成确定结论的机器。计算结果取决于所采用的假设,也取决于你统计的试验次数是否可信。
举个大致的例子:研究者测试了400种变体,得到夏普比率1.8,并估计收益存在明显偏度和厚尾。相比来自一次预先登记检验的1.8夏普比率,这个结果应当面对更高的门槛。校正可能大幅削弱证据,但无法证明优势确实存在。
趁早记录搜索过程,以备日后说明:候选数量、参数范围、查看过的数据区间,以及所有手动修改。如果这些细节无从查证,就应将回测描述为探索性研究。
模拟交易前应该做什么?
冻结一个候选策略,并在运行前定义下一步评估方案。一个实用流程是:用训练数据选出策略,在验证数据上检查,再留出最终时段或模拟交易窗口,确保它们不会反过来影响策略设计。每个阶段回答的问题都不同;如果在最终阶段反复调整策略,最终阶段就会变成更多训练数据。
还要检查相邻设置是否得出相同结论。一片范围较广、结果略为正向的区域,通常比针尖般的单一峰值更可信,不过稳健性无法弥补有缺陷的执行模型。费用、资金费率、市场冲击和标的可用性,仍需符合策略实际可能面临的情况。
模拟交易能补充实盘操作一致性的证据:时机、订单处理,以及实盘研究流程是否如预期运行。但它无法抹去此前已经发生的筛选。第一笔模拟订单发出时,一千次幸运回测仍然是尝试了一千次。
因此,回测报告显示夏普比率为2时,不妨把研究历程和权益曲线放在一起看。尝试了多少个想法?哪些结果改变了下一次实验?答案可能是报告里最重要的统计数据。
← 全部文章


