我們測試了 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 值或單一的 deflated Sharpe 估計,無法挽救一段真實研究歷程已經遺失的搜尋。
先從你能掌控的部分著手。在評估真正未曾觸碰的期間之前,先凍結最終規格。讓完整的候選集合都清楚可見。測試許多彼此相關的變體時,依照產生它們的決策分組,不要假裝每個變體都是獨立發現。除了勝出者,也要一併報告搜尋過程:試驗次數、選擇規則,以及最終評估是否促成後續修改。
一個實用的檢驗方法:如果留出集的結果令人失望,你會修改策略,然後又把同一段期間稱作留出集嗎?如果會,那段期間現在已成為研究的一部分。下一次評估需要新的證據。
AI 研究代理程式應該記錄什麼?
代理程式產生候選策略的速度,可能快到人類無法在工作記憶中一一記住。這使試驗計數成為研究系統的一部分,而非報告時才處理的雜務。每個候選策略執行前都先儲存,包括它源自哪個實驗,以及存在的理由。保留失敗和淘汰的執行紀錄。記錄人或代理程式何時檢視績效,以及之後做了什麼決策。
接著,讓選擇流程可以重現:給定相同的候選集合和規則,應該選出相同的勝出者。如果代理程式看到結果後不斷修改提示詞、目標或限制條件,這些變更也屬於搜尋的一部分。
Sharpe 2.1 可能值得進一步調查。它的意義取決於產生它的過程。當研究紀錄顯示有 240 個候選策略角逐頭條結果時,你就能提出下一個關鍵問題:還有哪些證據尚未被這些選擇消耗?
← 所有文章


