LLM 能识破造假回测吗?一个让四个模型露出马脚的基准测试

你是一个量化基金的风险审计员。一个研究员提交了一个策略,回测年化收益 25%,夏普比率 2.1,最大回撤 8%。看起来很美。

LLM 能识破造假回测吗?一个让四个模型露出马脚的基准测试

一个金融工程师的噩梦

你是一个量化基金的风险审计员。一个研究员提交了一个策略,回测年化收益 25%,夏普比率 2.1,最大回撤 8%。看起来很美。

但你怀疑这个回测有问题。也许研究员在训练集上做了测试(look-ahead bias),也许只选了没退市的股票(survivorship bias),也许调参调到刚好(overfitting)。

你决定用 LLM 来审计。你把策略代码喂给 GPT-4o,问"这个回测有什么问题?"

LLM 说:"检测到 look-ahead bias,训练集和测试集有重叠。"

你很满意。但你有没有想过:LLM 说有问题,就真的有问题吗?

Makar Ulesov 等人(MBZUAI + 匹兹堡大学)这篇论文的核心发现就是:大多数 LLM 审计器是偏执狂——它们能找到真问题,但也会把干净的策略打成有问题的。

实验设计的精妙之处

这篇论文的实验设计非常聪明。大多数 LLM-finance benchmark 测的是"LLM 能不能找到回测中的缺陷"。这篇论文测的是"LLM 能不能区分真的有缺陷和真的没问题"。

区别在哪?校准(calibration),不只是召回(recall)。

论文构建了 96 个测试项,组成 48 对。每一对里:

  • 一个有缺陷的版本:植入了一个已知的方法论错误(look-ahead、survivorship bias、data snooping 等 8 类)
  • 一个干净的对照版本:策略、日期、代码风格、标签、报告格式全部一样,只改了一个方法论细节
这意味着:如果 LLM 只是"看到 look-ahead 相关的代码就报警",它会在干净版本上也报警——假阳性。在真实场景里,每一个假阳性都意味着一个不存在的审计线索,浪费团队时间,甚至掩盖真正的问题。

数字让人冷汗直冒

论文测了四个模型:DeepSeek V4 Flash、gpt-4o-mini、gemini-2.5-flash-lite、gpt-4.1-mini。在"open code"(不给任何提示,直接问"这段代码有什么问题")条件下:

模型缺陷召回率干净策略误报率每百条干净提交产生的多余审计线索
DeepSeek72.9%93.8%93.8
gpt-4o-mini—38/4879.2
其他模型类似类似类似
DeepSeek 在 open code 条件下,对 48 个干净策略中的 45 个报了警。这意味着如果你用它审计 100 个干净策略,它会给你制造 93.8 条虚假审计线索。

你可能会想:那给 LLM 一些提示就好了。论文测了三种 prompt 条件:

  • Open:不给任何提示
  • Closed:给出 8 类缺陷的定义
  • Clean-aware:在 closed 基础上,告诉模型"干净策略很常见"
结果在 DeepSeek 上:

条件缺陷召回误报率
open code72.9%93.8%
closed code100.0%20.8%
clean-aware code100.0%0.0%
Clean-aware prompt 是唯一同时达到 100% 召回和 0% 误报的条件。 但这个结果只在 DeepSeek 上成立。其他模型即使加了 clean-aware 提示,误报率仍然很高。

"召回率容易,校准难"

论文最精辟的一句话是:"Perfect recall is not complete audit quality."

翻译过来就是:找到所有问题不等于审计质量高。 如果你的审计器把所有东西都标记为"有问题",召回率是 100%,但它毫无用处——因为你还是得人工检查每一个。

这和医学诊断里的"敏感度 vs 特异度"是同一个问题。一个把所有人都诊断为"有病"的测试,敏感度 100%,但特异度 0%,毫无临床价值。

论文还测了一个更细的维度:all-three specificity——同时满足"正确分类 + 正确定位证据 + 给出正确修复建议"。在 clean-aware code 条件下,DeepSeek 的 all-three specificity 只有 87.5%。也就是说,即使它正确识别了缺陷,在 6 个案例中给出了错误的修复建议。

模型能指出问题在哪一行,但给出的修复方案是错的。 这比单纯的误报更危险——因为你会以为问题已经解决了。

为什么这很重要

这篇论文不只是关于金融回测审计。它揭示了一个更普遍的问题:

LLM 作为审计/评审工具时,召回率和校准是两个独立的维度,只看召回率会误导。

这个结论适用于所有用 LLM 做"找问题"的场景:

  • 代码审查:LLM 能找到 bug,但也会把好代码标记为有 bug
  • 安全审计:LLM 能发现漏洞,但也会把正常代码标记为恶意
  • 论文评审:LLM 能找到方法论问题,但也会把合理的方法标记为有问题
  • 合规检查:LLM 能发现违规,但也会把合规操作标记为违规
在所有这些场景里,只看"找到了多少问题"是不够的,你还需要看"误报了多少"。而误报的成本不只是时间——它会稀释你对真正问题的注意力。

Clean-Aware Prompting 的启示

论文中最实用的发现是 clean-aware prompting 的效果。只是在 prompt 里加一句"干净策略很常见",就把 DeepSeek 的误报率从 20.8% 降到了 0.0%,同时召回率不变。

这个发现的意义不限于金融审计。它暗示了一个更深的原理:LLM 的判断受先验概率影响。 如果你只告诉它"找问题",它会假设所有输入都有问题。如果你告诉它"大部分输入是干净的",它会调整判断阈值。

这和人类审计员的行为一样。如果你告诉一个审计员"这个团队以前出过很多问题",他会变得偏执,把什么都标记为异常。如果你告诉他"这个团队一向很规范",他会更理性地分配注意力。

LLM 的"偏执"不是 bug,是 prompt 设计的先验偏差。

诚实的评价

论文有几个局限:

1. 只测了 8 类缺陷。 真实回测的问题远不止 8 类,还有数据泄漏、过拟合、选择性报告等更微妙的问题。

2. 只测了 4 个模型。 而且都是轻量级模型。更强大的模型(GPT-4、Claude Opus)可能表现不同。

3. 模拟环境。 实验用的是构造的回测代码,真实策略代码可能更复杂、更难判断。

4. Clean-aware 效果的泛化性。 这个效果在 DeepSeek 上很好,但在其他模型上不明显。为什么?论文没有深入分析。

但即使如此,这篇论文的贡献在于:它把"LLM 审计质量"从一个一维问题(召回率)变成了二维问题(召回率 + 校准),并给出了一个干净的实验范式来测量这两个维度。 以后任何用 LLM 做"找问题"的系统,都应该用类似的 paired benchmark 来评估。


论文链接: Can LLMs Catch a Rigged Backtest? A Clean-Control Calibration Benchmark

作者: Makar Ulesov, Vladislav Smirnov, Omar Ibrahim, Arsenii Bobovnikov(MBZUAI + 匹兹堡大学)

核心结论: LLM 审计器的召回率容易做到 100%,但校准很难。在 paired clean-control benchmark 上,open prompt 的误报率高达 93.8%。Clean-aware prompting 能同时达到 100% 召回和 0% 误报,但效果因模型而异。只报告召回率会严重高估审计质量。

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens