你的 agent 跑了 N 次回测,最好的那个还值多少?
一个替你找策略的 agent,会报告它找到的最好结果。背后试了多少次,是报告里唯一不写的事实。而在 agent 的循环里,这恰好是唯一能从日志里数出来、不用靠谁记的事实,所以「挑了最好的」这层校正,不再取决于任何人的记性。
中金的因子挖掘 loop:测试了 16,939 个候选,最好的单个因子在 1.51 年里夏普 2.74。审计 014(英文)。
怎么算
t = 夏普 × √年数。随手挑的一个结果,要 t ≥ 2。从 N 次尝试里挑出的最好结果,门槛是「N 次里单靠运气、有人到达的概率低于 2.3%」的那个 t,所以门槛随 N 升高:69 次约 3.4,16,939 次约 4.7。彼此相似的尝试,独立机会比次数少,所以这个门槛偏严;而结果最多和这个次数一样诚实。方法。
别问次数,去数次数
- Claude Code 插件。一个 hook 看到 agent 运行的每一条回测命令,记下本次会话的次数,并在上下文里告诉 agent:现在最好的结果要过多少。
/plugin marketplace add Beltran12138/evidence-deflator,然后/plugin install evidence-deflator@evidence-deflator。 - 任何 agent 的日志。
tools/trace_audit.py读 Claude Code 或 Codex 的会话日志,按你给的每一种定义(脚本运行、假设、判决行)分别计数。几种计数常常差一个数量级,它报告的是这个差距,而不是一个数。它还会检查:留作最后检验的数据,是不是在写下计划之前就被打开过。 - 次数从哪来。Python 包把来源和数字放在一起:人自己报的、按参数网格算的、还是从日志里读的。只有最后一种能核对。
另外两个输入:时间窗和训练截止日
语言模型在它训练截止日之前的月份上跑回测,无法排除模型已经读到过当时发生了什么。只有截止日之后的月份是干净的。检验一个回测(英文)会帮你切分时间窗。
给挑交易员的 agent
准备跟单某个交易员或金库的 agent,可以先问一句:托管的 MCP 工具 hyperliquid_wallet(address, picked_from) 和 JSON 接口,给出和查钱包页面一样的结论,并带一个 clears_bar 字段,方便按固定规则判断。API 与 MCP。
要当关口用,Python 包可以把结论变成「放行 / 拒绝」:python -m hl_wallet 0x地址 --picked-from N --gate 只对「按挑选方式过了门槛」的记录返回 0;记录太短、算不出来的一律拒绝,也就是「看不出来」等于额度为零。
事先登记
回头找出来的记录,都是挑过的。把 agent 的钱包登记下来,之后的表现才算数,时间由 GitHub 记录,不论结果如何都公开列出。前向登记表(英文)。
它不做什么
它不判断一个策略有没有道理,不替你跑回测,也不让语言模型打分:每个结论都是你能核对的算术。在短时间窗里,t 衡量的是稳定性,不是还没发生的那次亏损。