📌 30 秒摘要
這篇在講:從 N 組參數裡挑回測最好的那組,挑選這個動作本身就會過擬合。論文把它量化成一個機率 PBO:樣本內冠軍到了樣本外,排名掉到中位數以下的機率。估計方法叫 CSCV:把時間切成 S 段,窮舉所有「一半當樣本內、一半當樣本外」的組合。實驗中,純隨機漫步上回測出來的漂亮策略(年化 Sharpe 1.27),PBO 高達 55%。
🗺 心智圖(Canvas)
回測過擬合的機率(PBO)
Link to original
🎯 為什麼存這篇 / 未來想拿它做什麼
- 以後寫交易策略回測、開始掃參數時,用它判斷「挑出來的最佳參數能不能信」。
- 它講的不只是金融:只要是「試很多次、挑最好的那個」,例如調模型超參數、反覆看 A/B 測試、刷 benchmark,都會遇到同一個陷阱。
🧰 這篇給我的工具
- 工具-回測過擬合機率PBO —— 當我掃了很多組參數、想知道挑出來的最佳回測能不能信
- 工具-試越多次冠軍越不可信 —— 當我從很多次嘗試裡挑出最好的結果,想判斷是真本事還是運氣
✨ 關鍵重點
1. 問題定義:過擬合的是「挑選過程」
- 這裡的樣本內(IS)指用來挑最佳策略的那段資料,不是模型本身擬合參數的那段。所以 PBO 不需要知道策略內部用了什麼模型,是 model-free、無母數的。
- 定義 2.2:PBO = 樣本內最佳的策略,在樣本外排名低於中位數的機率。
- 論文認為一般的 hold-out(留一段資料驗證)在這裡不可靠,主要原因是它不管你試了幾次。證明在作者另一篇論文。
2. CSCV 演算法(論文 Algorithm 2.3)
- 把 N 個策略的每期損益排成 T×N 矩陣 M(每列同一時間點)。
- 依時間切成 S 段(S 為偶數),每段 T/S 列。
- 列出所有「從 S 段取 S/2 段」的組合,共 C(S, S/2) 種。
- 每種組合 c:
- 取出的段拼成樣本內 J,其餘拼成樣本外 J̄,兩邊各 T/2 列。
- 在 J 上找出績效最佳的策略 n*。
- 看 n* 在 J̄ 的排名,換成相對排名 ω = rank/(N+1)。
- 算 logit:λ = ln(ω/(1−ω))。
- PBO = λ ≤ 0 的組合比例,也就是樣本內冠軍在樣本外沒贏過中位數的比例。
為什麼這樣設計(論文第 4 節):
- 樣本內與樣本外一樣大,兩邊的 Sharpe 估計精度相當。
- 不靠隨機抽樣:同樣輸入跑兩次結果完全一樣,別人可以重現。
- 若回測毫無資訊量,ω 接近均勻分布,λ 就近似標準常態。這提供了「完全沒用」的基準線。
參數怎麼選:
- S=16 是論文建議的預設值。若 4 年日資料切 16 段,每段約一季,序列相關結構還保得住。
- S 太小,λ 分布的左尾估不準;S 太大,會把季節性切碎。
- N 要遠大於 10,否則 ω 只有少數幾個值可取,λ 分布太離散。
- T 要取「實際用來挑策略的資料長度」的兩倍,因為 CSCV 每次只用一半。
3. 四項檢查(論文第 3 節)
| 檢查 | 問的是 |
|---|---|
| PBO | 樣本內冠軍跌到樣本外中位數以下的機率 |
| 績效衰退 | 樣本內越好,樣本外是不是反而越差。拿 (樣本內, 樣本外) 績效做迴歸,斜率通常是負的 |
| 樣本外虧損機率 | 選出的策略在樣本外虧錢的比例。PBO 低時這項也可能很高,那代表策略爛,原因不是過擬合 |
| 隨機支配 | 依回測挑,有沒有比隨便亂挑一個好。看一階、二階隨機支配 |
判讀門檻:比照 Neyman-Pearson 的慣例,PBO > 0.05 就拒絕。PBO 也可以當貝氏分析的先驗,或拿 (1−PBO) 當多策略組合的權重。
4. 實驗(論文第 6 節)
- 設定:一個月度季節策略,有四個參數:進場日 1–22、持有天數 1–20、停損 0–10、多空 ±1,共 8,800 組。資料是 1,000 個交易日(約 4 年)。
- 例 1,純隨機漫步:最佳組合年化 Sharpe 1.27,PSR 統計量 2.83,看起來非常顯著。但 CSCV 給出:約 53% 的樣本外 Sharpe 是負的,PBO 約 55%,選出的策略也沒有隨機支配。正確判定為過擬合。
- 例 2,在每月前 5 天埋入 +0.25σ 的真實效應:最佳 Sharpe 1.54,只有 13% 的樣本外 Sharpe 為負,PBO 約 13%,而且有隨機支配。正確判定效應存在。
- 重點:兩個例子的樣本內 Sharpe 差不多,只看回測績效完全分不出哪個是真的。
5. 限制與誤用(論文第 5 節)
- 對稱切分不一定適合每種策略。若對績效分布有結構性的知識,針對模型設計的方法會更準。
- 要交出所有試過的組合。藏掉失敗的會低估過擬合,就像新藥試驗把無效的受試者剔掉,也就是「抽屜問題」。反過來,故意加一堆注定失敗的組合來襯托,也會讓結果失真。用最佳化演算法引導搜尋時,要放每次搜尋收斂後的結果,不要放中間步驟。
- 不檢查回測本身對不對:手續費設錯、用到當時拿不到的資料,它都抓不出來。
- 只涵蓋資料期間內的結構變化。資料期間外換了市場狀態,它無能為力。
- PBO 高不代表全部策略都爛:N 個策略都很好但彼此差不多時,PBO 也會高。
- 不能拿 PBO 當挑策略的目標函數。論文引 Goodhart 定律:「指標一旦變成目標,就不再是好指標。」它只能用來評估挑選流程。
6. 我自己驗算與重現(2026-10-25)
- 組合數:C(16,8) = 12,870,論文印成「12,780」,是錯字。C(24,12) = 2,704,156、C(12,6) = 924 都正確。p=1/2 時的標準差 √(1/(4·12870)) ≈ 0.0044,所以論文「小於 0.0045」的結論仍成立。
- 用 Node 重現例 1、例 2:簡化成不含停損,880 組參數,每種各跑 3 個隨機種子。程式碼見 工具-回測過擬合機率PBO。
- 純隨機漫步:PBO 0.56/0.60/0.84
- 埋入效應:PBO 0.00/0.16/0.05
- 方向與論文一致。
- 原文兩處前後不一:
- 第 3.2 節的實際策略例子(Figure 3),前文說只有 4% 低於中位數,後文寫「PBO of 0.04%」。
- 第 2 節的定義用中位數(median),結論段寫成平均(mean)。
- 以定義和演算法為準,兩處都採中位數。
💬 原文摘錄
- “We say that the backtest strategy selection process overfits if a strategy with optimal performance IS has an expected ranking below the median OOS.”(定義 2.1)
- “The model is so fit to past noise, that it is often rendered unfit for future signal.”(第 3.2 節)
- “We cannot hope escaping the risk of overfitting by exceeding some SR IS threshold. On the contrary, it appears that the higher the SR IS, the lower the SR OOS.”(第 3.2 節)
- “Any counter-overfitting technique used to select an optimal strategy will result in overfitting.”(第 5 節)
🔗 相關
- 基準污染與分數失真 —— 同一個機制在 LLM 評估上的版本:私有評估集調參久了,就是在對著它過擬合