2026年十月16日 · 研究

你的 AI 研究代理已看過測試集:分數遭污染的 3 種方式

你的 AI 研究代理已看過測試集:分數遭污染的 3 種方式

策略代理不必把任何測試資料列放進訓練作業,就能污染測試集。只要代理看到測試分數、調整參數再重新執行,該分數就已經影響策略。程式或許把這段期間稱為「樣本外」,但研究流程已經把它納入搜尋範圍。

我看過這種情況因為圖方便而發生:代理執行一批實驗、讀取摘要表,接著提出一項小幅改進。沒有人要求它對留出集進行擬合,但回饋迴圈還是完成了擬合。

失誤 1:每次執行後都讓代理偷看

常見的後果是測試 Sharpe 一步步整齊上升。代理先嘗試 30 個變體,選出表現最好的一個,再以它為中心嘗試 30 個變體。每次單獨的調整看起來都合情合理,但加在一起,就把測試期間變成了最佳化目標。

來看一個簡化範例。假設策略沒有真正的優勢,你在留出集上測試 100 個彼此獨立的變體。選出 Sharpe 最高的那個,很可能只是碰巧得到一個好看的結果。多數策略搜尋中的變體不會真的彼此獨立,但這也無法挽救整個流程:反覆的回饋仍會獎勵那些碰巧符合留出集特性的設定。

將留出集隔離在結果邊界之後。代理可以使用訓練期和驗證期進行開發,但不能讀取留出集的指標或圖表。把最終評估放在獨立作業中,等研究選擇定案後只執行一次,並一併記錄策略版本和資料快照。

失誤 2:把每個較晚的期間都稱為「全新」

日期範圍不會只因為位於訓練期間之後,就自動變得全新。如果代理看過該範圍的分數,或研究人員根據那段期間的回撤改選特徵,該範圍就已經進入回饋迴圈。

期間允許用途何時改變狀態
訓練擬合規則和參數不會;本來就要用來搜尋
驗證比較候選策略並做出研究決策反覆使用會更容易造成過度擬合
最終留出集對已凍結的候選策略評估一次讀取結果後再修改候選策略
未來模擬交易期間前瞻觀察實際執行表現用結果調整策略會開啟新一輪研究

滾動式 walk-forward 評估有助於估計固定研究流程在不同時期的表現,但不代表可以無限制地查看每個區段的結果。如果代理看到各區段的結果後調整搜尋方式,那些區段也成了回饋。請保留一段完全未觸碰的最終期間,用來做出你真正想做的決策。

失誤 3:凍結程式碼,卻更換問題

有時策略程式碼原封不動,研究人員卻在看到結果後更換評估方式:換掉基準、排除表現不佳的月份、改用不同的標的範圍,或只報告看起來最強的指標。即使參數沒有改變,測試集仍左右了你要呈現的故事。

常見的後果是一份包裝精美的報告,只有一個漂亮的重點數字,卻沒有記錄其他試過的觀點。相較於廣泛市場指數,股票策略可能表現不佳,但對比現金卻很亮眼;加密貨幣策略則可能是在看過多個交易場所後,才顯得在其中一個平台表現突出。這些比較有參考價值,但看過留出集後再從中挑選,又是一次選擇。

維護研究紀錄。每次執行都記下假設、程式碼版本、資料快照、參數搜尋、評估期間、要求的指標,以及代理或研究人員是否看過結果。簡潔的紀錄,比聽起來完美的「樣本外」標籤更有用。

接著在評估前明確定義最終問題:要評估哪個候選策略、哪個市場範圍、哪個基準、哪些成本和哪些指標?如果結果出來後答案改變,就把下一次執行視為研究,並保留新資料供下一次最終檢查使用。

受到污染的留出集還能讓我學到什麼?

它並非毫無用處。它可以呈現策略在那段期間的表現,也能協助診斷失敗。只是別再把它的分數當成獨立驗證。把它視為開發證據,凍結下一個候選策略,再用真正未來的模擬交易期間評估,並維持相同的會計與執行假設。

在代理驅動的工作流程裡,實驗次數很容易失去掌握:一個提示就能在任何人察覺前產生數十次執行。保護方式在於流程管理:限制代理能檢視的內容、記錄每次實驗,並保留一次評估,確保其結果無法左右正在接受評估的候選策略。

AI 代理、過度擬合、策略研究、回測
← 所有文章