回測過擬合機率 PBO:《The Probability of Backtest Overfitting》論文深度解析

掃 2,000 組參數,挑出樣本內 Sharpe 2.1 的冠軍。這組參數在樣本外落到全體候選中位數以下的機率是多少?答不出這個數字,回測報告的證據力就停在「曲線看起來很棒」的層次。這個數字有正式名稱:PBO(Probability of Backtest Overfitting,回測過擬合機率),出自 Ba…

掃 2,000 組參數,挑出樣本內 Sharpe 2.1 的冠軍。這組參數在樣本外落到全體候選中位數以下的機率是多少?答不出這個數字,回測報告的證據力就停在「曲線看起來很棒」的層次。這個數字有正式名稱:PBO(Probability of Backtest Overfitting,回測過擬合機率,出自 Bailey、Borwein、López de Prado 與 Zhu 的論文《The Probability of Backtest Overfitting》

定義一句話講完:用樣本內績效選出的最佳配置,樣本外表現低於全體候選中位數的機率。PBO 算出來 0.7,代表你的「最佳策略」有七成機率不如從候選池裡隨機抽一組。過擬合從一句罵人的形容詞,變成一個可計算、可重跑、可以寫進研究流程的門檻。

這篇把論文拆完整:它在回應什麼行業問題、PBO 的定義動作、CSCV 演算法逐步實算、附帶的三個診斷指標、為什麼單一樣本外切分擋不住過擬合,最後是失效條件與接進既有流程的做法。讀完你應該能自己算,或至少能對別人的回測報告問出正確的問題。

論文在回應什麼:沒有人揭露自己試了幾次

四位作者的組合本身就說明了這篇論文的性質:Bailey 與 Borwein 是計算數學與實驗數學背景的學者,López de Prado 當時管理量化基金、後來寫了《Advances in Financial Machine Learning》,Zhu 是最優化理論教授。論文 2013 年放上 SSRN,2017 年正式刊於《Journal of Computational Finance》。

他們指出的行業問題很直白:量化研究的標準動作是掃大量參數組合,然後只呈現最好那組。期刊論文、基金行銷材料、策略白皮書,幾乎沒有人揭露「我總共試了幾次」。而不揭露試驗次數的績效數字,統計上無法解讀。

殺傷力可以算出來。同一批作者在姊妹篇《Pseudo-Mathematics and Financial Charlatanism》給過一個具體結果:一批真實 Sharpe 為 0 的隨機策略,只要有 5 年數據、大約 45 組獨立嘗試,挑出來的冠軍樣本內年化 Sharpe 期望值就達到 1.0。最大值的期望隨試驗數的對數上升,掃得越多,假聖杯的樣本內成績越漂亮。

換句話說:試驗次數不明的年化 Sharpe 1,跟丟 45 次硬幣挑最好一次沒有差別。選擇偏誤怎麼從六個入口滲進回測,選擇偏誤與多重測試那篇拆過機制。這篇論文做的是下一步:把傷害量化成一個機率。

PBO 的定義:評估的對象是選擇流程,不是策略

論文的定義有一個容易被忽略的設計:PBO 評估的對象是你的選擇流程,不是某一個策略。它不問「這個策略好不好」,它問「你這套挑法,挑得出真東西嗎」。

操作型定義:在 N 個候選配置中,用樣本內(IS)績效選出最佳配置,這個配置的樣本外(OOS)績效低於全體候選 OOS 中位數的機率。

計算上用相對排名表達。冠軍在 OOS 贏過的候選比例記為 ω̄,取 logit 轉換 λ = ln(ω̄ / (1 − ω̄))。冠軍剛好落在中位數,λ = 0;贏過八成候選,λ ≈ 1.39;只贏過三成,λ ≈ −0.85。PBO 就是 λ ≤ 0 的機率。

用相對排名有兩個好處。第一,牛市裡人人賺錢的絕對績效假象不會干擾判斷,比的是同一批候選的相對位置。第二,指標本身跟你用什麼績效度量無關,Sharpe、Sortino、總報酬都能套,只要跟你實際做選擇時用的那個一致。

CSCV 五步驟:從績效矩陣算出回測過擬合機率

論文提出的演算法叫 CSCV(Combinatorially Symmetric Cross-Validation,組合對稱交叉驗證)。整個方法五步講完:

  1. 建績效矩陣 M(T × N):T 期報酬 × N 組候選配置。前提是你留著每一組試過的配置的完整報酬序列,不是只有摘要統計。
  2. 沿時間軸切成 S 個等長區塊:論文示範 S = 16,區塊內部保留時間順序。
  3. 枚舉所有「取 S/2 塊當 IS、其餘當 OOS」的組合:S = 16 時是 C(16,8) = 12,870 種切法。
  4. 每種切法跑一次選擇:在 IS 用你實際使用的指標選出冠軍,查這組配置在 OOS 的相對排名,算出 λ。
  5. 12,870 個 λ 構成分布:PBO = λ ≤ 0 的比例。

拿一組具體數字走一遍。你掃了 N = 200 組配置、四年日頻資料 T ≈ 1,000 根,切成 16 塊、每塊約 62 根。某一種切法下,IS 冠軍是第 137 號配置;它在 OOS 只贏過 27% 的候選,ω̄ = 0.27,λ = ln(0.27/0.73) ≈ −0.99,記一筆過擬合證據。全部 12,870 種切法跑完,λ ≤ 0 的佔 64%,PBO = 0.64:這套挑法挑出來的冠軍,六成四的機率不如中位數。

「組合對稱」四個字是方法的核心。每一筆數據被用作 IS 與 OOS 的次數完全相同,結果不會被某一次幸運切分綁架。切一次 70/30 給你一個點,CSCV 給你一個分布。而且它不需要重跑任何回測,所有計算都在既有的績效矩陣上做排名,成本是排序,不是模擬。

同一個矩陣附送的三個診斷

論文沒有把 PBO 當成唯一輸出。同一個 T × N 矩陣、同一批切分,還能算出三個互補指標:

指標 算法 回答的問題
績效衰退斜率 每種切法的(IS 績效, OOS 績效)做回歸 IS 排名越靠前,OOS 掉得越兇嗎
樣本外虧損機率 被選中配置 OOS 績效為負的切分比例 冠軍在樣本外直接虧錢的機率
隨機優越性檢驗 冠軍的 OOS 分布 vs 隨機抽一組的分布 這套挑法連亂抽都贏不了嗎

三個指標各卡一個死角。衰退斜率在純雜訊下通常明顯為負,是均值回歸的直接證據:IS 成績越極端,OOS 回落越深。虧損機率把「相對排名不差但絕對虧錢」的情況抓出來。隨機優越性是最低標:冠軍的 OOS 分布如果無法優於無條件隨機抽選(一階或二階隨機優越都不成立),選擇流程就是在挑雜訊,比不挑還糟。

判讀時四個數字一起看。單看 PBO 一個數字做決策,等於又回到「用單一指標選策略」的老問題。

為什麼 Hold-out 與 Walk-Forward 都不夠

多數人對過擬合的防線是留一段 hold-out 做樣本外測試,或者跑 Walk-Forward。論文的立場是:這兩道防線值得保留,但都擋不住 PBO 針對的那種失效。

方法 切分方式 保留什麼 結構性弱點
單一 hold-out 一刀切 70/30 簡單、保時序 只有一條路徑,且會被研究者反覆消耗
Walk-Forward 滾動窗格前進 時序、參數重估的演進 仍是單一路徑,每個時點只有一次切分
CSCV C(S, S/2) 種組合對稱切分 完整的選擇結果分布 打散長週期時序結構

Hold-out 的第一個問題是研究者本人就是洩漏管道。你在 hold-out 上看到壞結果,回頭改參數再測,hold-out 就開始被消耗;測十次之後它實質上是第二個樣本內。數據沒有動,資訊透過你的決策洩漏了。第二個問題更根本:單一切分只有一條路徑,OOS 剛好撞上對策略有利的 regime,你就放行了一個壞策略。一個點分不出運氣和實力,一萬兩千個點的分布分得出來。

Walk-Forward 比單一 hold-out 誠實,時序是真的往前走的。但它一樣是一條路徑,Walk-Forward Analysis 深度解析講過它的適用範圍與盲點。CSCV 跟它是互補品:WFA 保時序、犧牲分布,CSCV 保分布、犧牲時序。兩個都過,證據力才夠。

論文還有一個金融特有的觀察。在多數領域,過擬合的代價是樣本外表現歸零;在金融序列上,代價常常是負報酬。市場數據帶有記憶:均值回歸、季節殘留、波動聚集。過擬合的配置載滿了雜訊在樣本內剛好出現的形狀,這些形狀在樣本外傾向反轉。不是白忙一場,是反向送錢。

論文自帶的展示實驗:純隨機數據挑出聖杯

作者群為論文做了一個公開展示工具:生成純隨機的價格序列,掃一個簡單月度季節性策略的參數(進場日、出場日、停損、方向),幾千組掃完,總能找到樣本內年化 Sharpe 超過 1 的冠軍。數據是隨機數生成的,真實 alpha 精確等於零,但選出來的策略績效曲線平滑上升、回撤小,拿去募資完全不會被看穿。

對這批候選跑 CSCV,PBO 接近 1,衰退斜率明顯為負。工具一眼看穿了肉眼看不穿的東西。

這個實驗的重點在於它的日常性。掃均線長短、掃網格間距、掃進出場閾值,做量化的人每天都在做同樣的動作。隨機序列和真實序列在這件事上沒有差別:只要候選夠多、選擇只看樣本內成績,冠軍的樣本內績效就必然被高估。差別只在你有沒有記錄嘗試次數、有沒有把選擇流程本身拿去檢驗。

失效條件:PBO 管得住流程,管不住流程外的事

跟所有驗證工具一樣,PBO 有明確的邊界。五個最常見的破功方式:

候選集合被事後篩過。 私下掃了 5,000 組,只把順眼的 20 組交給 CSCV,PBO 會嚴重低估。它看到的宇宙是 20,實際是 5,000。宇宙必須是你碰過的全部,包括看一眼就丟掉的。這條紀律跟多重檢定校正的前提完全相同。

候選之間高度相關。 200 組只差一根 K 線參數的均線策略,實質上可能只有三、五個獨立想法。名目 N 很大、有效 N 很小,PBO 的解讀要跟著打折。指標本身不會提醒你這件事。

組合切分打散了 regime。 CSCV 的 OOS 不是「未來」,是「另一批時間區塊」。對 regime 依賴強的策略,例如只在高波動環境有效的做法,切分會把不同環境混進 IS 和 OOS,結果可能偏樂觀也可能偏悲觀。這正是它需要 Walk-Forward 互補的原因。

數據本身是髒的。 存活者偏差、未來函數、成本假設錯誤,回測過擬合的九種死法裡列過的死法,CSCV 一個都救不了。髒數據算出來的 PBO 也是髒的。

把 PBO 當成二元判決。 PBO 高說的是「這套挑法選出的冠軍不可信」,不等於候選裡沒有真東西;PBO 低是必要條件,不是充分條件。它是濾網,不是測謊機。

接進流程:從記錄嘗試開始

實際落地的順序:

  1. 記錄每一次嘗試。 從第一次跑回測開始,每組配置的完整報酬序列落地存檔。這是 PBO 與 Deflated Sharpe Ratio 共同的前提,兩個工具吃的都是「你到底試了幾次」這個輸入。
  2. 存矩陣,不是存摘要。 T × N 報酬矩陣是 CSCV 的直接輸入,只存 Sharpe 和回撤數字的研究日誌事後補不回來。矩陣放哪、怎麼版本化,量化交易數據層的建法有完整框架。
  3. 跑 CSCV。 R 有現成的 pbo 套件,Python 有多個開源實作,照論文自己寫也在百行以內。S = 16 是論文示範值,資料長可以再切細,S 加大組合數會爆炸,注意計算量。
  4. 四個數字一起看。 PBO、衰退斜率、OOS 虧損機率、隨機優越性,各卡一個死角。
  5. 跟時序驗證組合。 CSCV 過了再跑 Walk-Forward 檢查時序穩定性,顯著性層面用 DSR 把試驗次數折進 Sharpe。三個工具擋的是三種不同的死法。

我自己把 PBO 排在驗證鏈的第一道:它便宜、快、不需要重跑回測,矩陣在手上排序就能算。PBO 過不了的策略,後面的 Walk-Forward 和顯著性檢定都不用浪費算力。想拿自己的策略對照這套驗證流程、討論實作細節,付費實驗室裡有工具與流程的持續討論。

結論:把「挑法可不可信」變成一個數字

收攏成四句話:

  1. 量化回測的證據力取決於選擇流程,不是績效曲線。試了幾次、怎麼挑的,比成績多好重要。
  2. 回測過擬合機率(PBO)把這件事量化成「IS 冠軍在 OOS 落到中位數以下的機率」,CSCV 用組合對稱切分算出它的分布,成本只是排序。
  3. 衰退斜率、虧損機率、隨機優越性三個附帶診斷,跟 PBO 一起看才完整。
  4. 它的失效條件很明確:隱藏嘗試、高相關候選、regime 依賴、髒數據。工具不能取代紀律,濾網不是測謊機。

《The Probability of Backtest Overfitting》最大的貢獻不是演算法,是它把「你的最佳回測可信嗎」從一句互相攻擊的空話,變成有定義、可重算的數字。一套挑法在付清全部搜尋成本之後還站得住,才輪得到討論投產。

我每週會把這類驗證框架與實際市場數據的交叉檢驗寫進電子報,包括流動性、衍生品結構與鏈上籌碼的例行審視。想讓自己的研究流程多一層濾網的,可以訂閱追蹤。


Meta Elements

Meta Title: 回測過擬合機率 PBO:CSCV 演算法與論文深度解析
Meta Description: 掃幾千組參數挑出的冠軍,樣本外落到中位數以下的機率是多少?拆解回測過擬合機率 PBO 的原始論文:CSCV 五步驟實算、三個診斷指標與失效條件。
Primary Keyword: 回測過擬合機率
Secondary Keywords: PBO, CSCV, backtest overfitting, 組合對稱交叉驗證, 樣本外測試, 量化回測, 選擇偏誤
URL Slug: /blog/probability-of-backtest-overfitting
Internal Links: /blog/selection-bias-multiple-testing, /blog/walk-forward-analysis, /blog/backtest-overfitting, /blog/deflated-sharpe-ratio, /blog/quant-trading-data-layer, /blog/multiple-testing-correction, /#lab-benefits, adtrader.beehiiv.com
External Links: Bailey, Borwein, López de Prado & Zhu 2013/2017 (SSRN 2326253), Pseudo-Mathematics and Financial Charlatanism (AMS Notices 2014), CRAN pbo package
Word Count: 約 3,600 字(中文字元)
個人頭像照片
AD.Trader Lab

AD.Trader Lab 創辦人 | 量化交易員 專注於在充滿雜訊的市場中,尋找數學上的必然性。AD.Trader Lab 實驗室主理人,帶你用數據看透漲跌背後的真相。

每日更新 · 免費

每日選幣清單

我每天在 Telegram 發一份選幣名單——標的、為什麼選它、我自己有沒有進場。

  • 每日選幣名單,附上選它的理由
  • 新文章與研究上架,第一時間通知
  • 討論區:有問題可以直接問我
免費加入 Telegram

340+ 人已經在頻道裡

已經在交易了?用我的連結註冊 OKX,手續費終身退 20% 月成交 20 萬 U,一年約退你 NT$6,000 — 交易越多退越多