你的 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 衡量的是穩定性,不是還沒發生的那次虧損。