我们测试了 240 组参数。表现最好的一组 Sharpe 比率为 2.1;中位数为 0.1;只有 17 组超过 1.0。这些数字听起来像是有所发现,直到你意识到,即使每个策略都没有真正的优势,如此大范围的搜索也可能碰巧找到一个看起来很亮眼的胜者。
令人意外的数字是 240。回测报告通常把选中的策略当作它是单独出现的。研究并非如此。每次调整参数、替换特征、改变标的范围,或在结果难看后重新运行,都会再给噪声一次伪装成信号的机会。
为什么尝试更多策略会抬高最高 Sharpe?
想象有 240 个彼此独立、没有真实优势的策略,它们估算出的 Sharpe 都带有噪声。大多数估算值会落在零附近,但最高值往往为正。检查的候选策略越多,最高值就越可能偏离真实水平。
粗略举例,假设每个候选策略估算出的 Sharpe 标准误为 0.5。抽取 240 个彼此独立的样本,最高估算值可能仅因选择效应就比均值高出约 1.4 个标准误,也就是 Sharpe 大约高出 0.7。真实的策略候选彼此相关,因此这个计算不能直接作为修正值填进报告。它说明了为什么经过大范围搜索后,“胜者高于零”并不是有力证据。
而搜索范围往往不止参数网格。你可能尝试了 3 类信号,看过曲线后舍弃其中 2 类,改了交易标的范围,接着又用不同的再平衡计划重新运行剩下的那类。如果这些选择受表现影响,就应记录在研究历史中。
什么算一次回测试验?
如果某项决策的结果可能影响你选择哪种策略,就把这项决策算作一次试验。这包括你没有发表的运行结果,也包括因为净值曲线难看而提前停止的变体。编译失败不算性能试验;产生了令人失望的 Sharpe 的运行通常算。
| 研究操作 | 通常计入吗? | 原因 |
|---|---|---|
| 查看结果后将回看期从 20 改为 30 | 是 | 第一个结果影响了下一个候选方案 |
| 在预先声明的新日期范围内运行同一个固定策略 | 通常不算新的选择试验 | 在看到这份证据前,规则已经固定 |
| 看到哪些资产胜出后再更改标的范围 | 是 | 选择标的范围可能改善表面结果 |
| 修复语法错误后重新运行未改动的代码 | 否 | 没有任何研究选择取决于表现 |
分界线在于你是否利用结果作出了选择。仅凭记忆很难还原这一点,因此实验日志应记录每次运行的假设、代码或配置版本、数据区间、成本假设和结果。
我能校正多重检验的影响吗?
有些方法可以估算选择偏差,或针对多次试验调整显著性。它们可能有用,但需要假设候选策略之间的关系以及收益的行为。名义 p 值或单个调整后 Sharpe 估算,都无法挽救一段真实历史已经遗失的搜索过程。
先从你能掌控的部分着手。在评估一段真正未触碰过的时期前,冻结最终规格。让完整的候选集保持可见。测试许多相近变体时,按产生这些变体的决策对它们分组,不要假装每一个都是独立发现。报告胜者时也要说明搜索过程:试验次数、选择规则,以及最终评估是否影响了后续修改。
一个实用的检验:如果留出集结果令人失望,你会修改策略,然后再次把同一时期称为留出集吗?如果会,那段时期现在已经成了研究的一部分。下一次评估需要新的证据。
AI 研究代理应该记录什么?
代理生成候选方案的速度,可能快到人类无法在工作记忆中逐一记住。因此,试验统计应成为研究系统的一部分,而不是报告环节的琐事。每个候选方案在运行前都要存档,包括其父级实验和提出它的理由。保留失败和舍弃的运行记录。记录人或代理何时查看了表现,以及随后作出了什么决定。
然后,让选择过程可复现:给定相同的候选集和规则,它应当选出同一个胜者。如果代理在看到结果后不断修改提示词、目标或约束,这些修改也属于搜索过程。
Sharpe 为 2.1 的策略或许值得进一步研究。它的意义取决于产生这一结果的过程。当研究日志显示有 240 个候选方案争夺头条时,你就能提出下一个正确的问题:还有哪些证据没有被这些选择消耗掉?
← 全部文章


