Deflated Sharpe Ratio 是什麼:把「試過幾次」算進回測顯著性

兩年日線回測、試過 200 組參數設定,純雜訊能給你的期望最大年化 Sharpe 是 1.96。如果你的策略回測出 1.5,這個數字連雜訊的平均水準都不到。

兩年日線回測、試過 200 組參數設定,純雜訊能給你的期望最大年化 Sharpe 是 1.96。如果你的策略回測出 1.5,這個數字連雜訊的平均水準都不到。

多數人看到 Sharpe 1.5 的第一反應是「不錯,可以上了」。這正是 Deflated Sharpe Ratio(DSR)要處理的問題:一個 Sharpe 值單獨拿出來看毫無意義,它的可信度取決於你為了得到它試了幾次、資料有多長、報酬分布有多不正常。DSR 把這三件事全部折算進去,輸出一個機率:扣掉搜尋帶來的膨脹之後,這個策略的真實 Sharpe 大於零的機率有多高。

這篇文章拆四件事:為什麼漂亮的 Sharpe 常常只是雜訊的最大值、DSR 的計算機制與公式、用實際數字算給你看什麼情況過得了關、以及 DSR 抓不到哪些死法。看完你會有一個可以直接套用的判斷框架,也會知道這個框架的邊界在哪裡。

先回答核心問題:DSR 在校正什麼

傳統的夏普比率檢定回答的問題是:「假設我只做了這一次回測,這個 Sharpe 是運氣的機率有多低?」

問題在於,沒有人只做一次回測。你調過均線週期、換過停損寬度、比較過五個策略變體,每一次嘗試都是一次抽樣。從 N 個帶雜訊的結果裡挑出最大值,那個最大值天生就會高於任何一支策略的真實水準,即使 N 支全部是雜訊。統計上這叫多重檢定問題(multiple testing),在量化領域的具體形式就是選擇偏誤

Bailey 與 López de Prado 在 2014 年的論文 The Deflated Sharpe Ratio 給出的解法很直接:既然你試了 N 次,那你的對照組就不該是零,而是「N 次純雜訊嘗試的期望最大 Sharpe」。你的策略必須顯著贏過這個被墊高的門檻,才有資格宣稱自己不是雜訊。

一句白話翻譯:DSR 把顯著性檢定的及格線,從「贏過零」改成「贏過你自己的搜尋過程理應撈到的最好雜訊」。

這件事的嚴重程度有學術實證。Harvey、Liu 與 Zhu 在 …and the Cross-Section of Expected Returns 裡盤點了金融學界發表過的 316 個報酬預測因子,做完多重檢定校正後的結論是:其中大約一半可能是假的,而且這還是通過期刊審查的研究。學術圈用 t 值 2.0 當門檻用了幾十年,他們主張新因子的門檻至少要提到 3.0。學界尚且如此,散戶在自己電腦上跑的參數掃描只會更嚴重。

如果你對過擬合的全貌還不熟,建議先讀回測過擬合的九種死法那篇。本文聚焦在其中「選擇偏誤」這一種死法的量化解藥。

從 PSR 到 Deflated Sharpe Ratio:機制拆解

DSR 不是一個獨立發明,它是 Probabilistic Sharpe Ratio(PSR)加上一個更誠實的基準。分兩步看。

第一步:PSR,把 Sharpe 從點估計變成機率

同樣是 Sharpe 1.5,來自 6 個月資料和來自 5 年資料,可信度完全不同;來自常態分布報酬和來自負偏態、肥尾報酬,可信度也完全不同。PSR 把這些全部收進一條公式:

PSR(SR*) = Φ[ (SR − SR*) × √(T−1) / √(1 − γ₃·SR + (γ₄−1)/4 × SR²) ]

其中 SR 是觀測到的每期 Sharpe(非年化),SR 是你要打敗的基準,T 是樣本數,γ₃ 是報酬的偏度,γ₄ 是峰度,Φ 是標準常態的累積分布函數。輸出是一個機率:真實 Sharpe 大於 SR 的機率。

分母那串是關鍵。負偏態會讓分母變大、機率變小。這符合直覺:一個靠賣波動、做 carry 或做市累積平滑收益、然後偶爾巨虧的策略,它的歷史 Sharpe 高估了真實風險,PSR 會自動扣分。肥尾(高峰度)同理。

第二步:把基準換成「雜訊的期望最大值」

DSR 做的事,是把 PSR 裡的 SR* 換成 SR₀,也就是 N 次獨立雜訊嘗試裡期望撈到的最大 Sharpe:

SR₀ = √V[SR] × [ (1−γ)·Φ⁻¹(1 − 1/N) + γ·Φ⁻¹(1 − 1/(N·e)) ]

γ 是 Euler–Mascheroni 常數,約 0.5772。V[SR] 是那 N 次嘗試的 Sharpe 變異數;手上沒有完整試驗紀錄時,可以用 1/T 當保守下界,但要知道這會低估折扣力道。

這條公式來自極值理論:N 個標準常態變數的最大值,期望值大約隨 √(2·ln N) 成長。翻成人話:試的次數越多,雜訊能給你的「最好成績」就越高,而且是可以精確算出來的。DSR = PSR(SR₀),門檻墊高之後還能維持機率大於 0.95,才算站得住。

實際算一次:Sharpe 1.5 什麼時候能信

公式講完,直接上數字。假設你回測出年化 Sharpe 1.5,日線資料,報酬接近常態,V[SR] 用 1/T 近似。四種情境:

資料長度 試驗次數 N 雜訊期望最大 Sharpe(年化) DSR 裁決
2 年(T=504) 10 1.11 0.71 證據不足
2 年(T=504) 200 1.96 0.26 死亡
5 年(T=1260) 10 0.70 0.96 勉強存活
5 年(T=1260) 200 1.24 0.72 證據不足

幾個讀法。

第一,2 年資料配 200 次試驗,雜訊的期望最大 Sharpe 是 1.96,你的 1.5 根本在雜訊分布的左半邊。DSR 只有 0.26,這不是「證據還不夠強」,是「這個結果比亂猜還不如」。而 200 次試驗是什麼概念?一個 20×10 的雙參數網格掃描就到了。多數人隨手一個 optimizer 跑出來的試驗數遠超過這個量。

第二,同樣只試 10 次,資料從 2 年拉長到 5 年,DSR 從 0.71 升到 0.96。樣本長度直接進公式裡的 √(T−1),這是回測期長度第一次有了明確的定價:它不是「越長越安心」的模糊感覺,是統計顯著性的直接輸入。

第三,也是最刺的一點:5 年日線、年化 Sharpe 1.5,誠實試驗預算只有大約 10 次。試到 15 次,DSR 掉到 0.943,已經跌破 0.95;試到 30 次,只剩 0.90。你上一支策略從開始研究到定稿,實際碰過幾組設定?

偏態的影響也可以量化。同樣是 5 年、10 次試驗的情境,如果報酬偏度是 −1.5、峰度 6(典型的賣尾部風險型策略),DSR 從 0.962 降到 0.951,貼著及格線。負偏態越重、Sharpe 越高,這個懲罰越大。加密市場的資金費率套利、網格、做市型策略大多長這個樣子,用 DSR 檢視時要特別當心分布修正這一項。

這些計算不需要自己造輪子。López de Prado 在 Advances in Financial Machine Learning 附了參考實作,Python 生態也有現成套件;我們在 Lab 社群裡維護一套含 DSR、SPA 檢定與 PBO 的驗證腳本,搭配實際策略案例逐關演練。

Trial 數怎麼數才誠實

DSR 公式本身沒有模糊空間,真正的操作難點在 N 要填多少。這裡是整個方法最容易自欺的地方,因為 N 填 1 和填 240,結論可以天差地遠。

規則只有一條:每一次「看了結果再決定下一步」的嘗試,都算一次 trial。包括:

  • 每一組參數組合(掃描網格的每一格,不是每一次掃描)
  • 每一個策略變體(換進場邏輯、換出場機制、換標的池)
  • 每一個你看了績效之後丟掉的版本
  • 別人試過、你看過結果的設定(研究團隊共用資料時,別人的搜尋也在消耗你的顯著性)

一個真實案例。某研究者開發了 S1 到 S5 五個策略變體,每個變體各自帶參數網格,最後挑表現最好的 S3 準備寫白皮書,回測報告上的檢定只針對 S3 一支。把搜尋過程實際碰過的 240 個設定全部攤開重算,S3 在全體裡排名第 103,SPA 檢定 p 值 1.0。S3 的亮眼績效不是訊號,是「五選一再各自調參」這個動作本身製造出來的。他報告裡的 N 是 1,真實的 N 是 240。

從數據來看,這也解釋了為什麼「事後補驗證」注定失敗。試驗次數是在搜尋當下累積的,搜尋結束後你已經不可能誠實重建這個數字,人會系統性地少記自己丟掉的東西。可行的做法只有一種:研究開始前就開一個試驗計數器,每碰一組設定就加一,論文叫這個做法 pre-registration。搭配把最後一段資料鎖進保險庫、驗收前不碰,兩件事合起來才構成有效的防線。這部分的完整流程,量化交易系統的建構框架那篇的驗證層有展開。

DSR 抓不到的東西:它只是其中一道牆

把 DSR 講成「回測過擬合的終極解藥」是誤導。它校正的是選擇偏誤加上非常態分布,這在過擬合的九種死法裡算兩種。剩下的它一種都管不到。

具體來說,DSR 不會告訴你:

  • 前視偏誤:你的特徵用了公布日之後才知道的資料,DSR 照樣給你高分,因為它只看報酬序列,不看報酬怎麼來的。
  • Regime 依賴:全部績效由 2023 到 2024 某一段行情撐起,DSR 不分時段,一樣放行。
  • 因子偽裝:你的「alpha」其實是動能因子換了衣服,DSR 不做歸因回歸。
  • 成本失真:滑價與手續費被低估,Sharpe 本身就是錯的,DSR 只是精確地檢定了一個錯的數字。

工具和威脅要一一對應。選擇偏誤用 DSR 加上 White’s Reality Check 或 Hansen 的 SPA 檢定;參數脆弱性用擾動測試;regime 依賴用外生環境切段重驗;前視偏誤只能靠 point-in-time 的資料層紀律。用對工具是驗證,用錯工具是買心安。

更值得注意的是,DSR 的姊妹指標 PBO(Probability of Backtest Overfitting)回答的是另一個互補的問題:樣本內選出的最佳策略,在樣本外掉到後段班的機率。Bailey 等人在 Pseudo-Mathematics and Financial Charlatanism 這篇標題毫不客氣的論文裡同時給出了這兩套工具,並且直接點名:不揭露試驗次數的回測報告,在數學上等同於詐術。實務上 DSR 與 PBO 一起跑,一個管顯著性、一個管排名穩定性。

把 DSR 放進工作流:具體怎麼用

講到這裡可以收斂成一套可執行的順序。

研究開始前:寫下經濟假設(這個 edge 為什麼該存在)、鎖出保險庫資料、開試驗計數器。這三件事都在碰資料之前完成。

研究過程中:誠實累加每一次嘗試。網格掃 200 格就記 200,不因為「只是掃一下」就記 1。

驗收時:用真實的 N 算 DSR,同時跑 PBO。門檻建議:DSR > 0.95、PBO < 0.5,兩者同時成立才進下一關。DSR 介於 0.5 到 0.95 之間的正確解讀是「證據不足」,對應的行動是收集更長資料或降低試驗數重驗,不是「先上小資金試試」。

宣稱時:對外只說檢定支持的話。DSR 沒過 0.95,就不能寫「經統計驗證」;只在單一 regime 存活,就要明示「績效集中於特定環境」。回測報告的可信度不在數字多漂亮,在假設揭露得多完整。

還有一個容易忽略的細節:V[SR] 用 1/T 近似是下界,會低估折扣。如果你有完整的試驗紀錄,直接用全部 trial 的 Sharpe 變異數,結果更準也通常更嚴格。這又回到同一件事,試驗紀錄從第一天就要留。

結論:Sharpe 值沒有意義,Sharpe 值加上 N 和 T 才有

整理三個帶得走的點。

第一,任何 Sharpe 值在缺少「試驗次數 N」與「樣本長度 T」的情況下都無法解讀。年化 1.5 可以是強訊號,也可以連雜訊都不如,差別完全在這兩個數字。

第二,DSR 給了選擇偏誤一個精確的價格:試 200 次,兩年資料的及格線就是年化 1.96。這個價格在你按下 optimizer 的那一刻就開始累積,事後無法退款。

第三,Deflated Sharpe Ratio 只擋九種死法裡的兩種。它是驗證流程的必要一關,不是全部。把它當終極解藥的人,只是換了一種更精緻的方式自欺。

量化回測的目的從來不是證明策略會賺,是在投入真錢之前盡力殺掉它。DSR 是這套紀律裡數學最紮實的一把刀。

我們會持續拆解量化驗證、市場微結構與鏈上籌碼的分析框架,訂閱電子報可以定期收到這類研究;想拿到可直接執行的驗證腳本、跟其他量化交易者逐關演練自己的策略,歡迎加入付費實驗室


Meta Elements

Meta Title: Deflated Sharpe Ratio 是什麼:校正回測過擬合的顯著性檢定
Meta Description: 兩年回測、200 組參數,純雜訊的期望最大年化 Sharpe 就有 1.96。拆解 Deflated Sharpe Ratio 如何把試驗次數與樣本長度折算進顯著性,附四組實算與驗收門檻。
Primary Keyword: Deflated Sharpe Ratio
Secondary Keywords: 夏普比率, 回測過擬合, 量化回測, 選擇偏誤, 多重檢定, Probabilistic Sharpe Ratio, 統計顯著性
URL Slug: /blog/deflated-sharpe-ratio
Internal Links: /blog/backtest-overfitting, /blog/quant-trading-system, /blog/quant-trading-data-layer, /#lab-benefits, adtrader.beehiiv.com
External Links: SSRN (Bailey & López de Prado, The Deflated Sharpe Ratio), SSRN (Harvey, Liu & Zhu, ...and the Cross-Section of Expected Returns), AMS Notices (Pseudo-Mathematics and Financial Charlatanism)
Word Count: 約 3,100 字(中文字元)
個人頭像照片
AD.Trader Lab

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