2026年八月30日 · 統計

回測需要多少筆交易,Sharpe 才有意義?

回測需要多少筆交易,Sharpe 才有意義?

這是我最常被問到的問題,通常是剛完成第一個策略的人提出的:要做多少筆交易,結果才算是真的? 通常問題裡還會附上一個數字:「我有 1,200 筆交易,這樣夠了吧?」而誠實的答案總讓大家不太高興,因為關鍵根本不在交易筆數。

先用一行公式說明全部,接著我會花整篇文章解釋它為什麼這麼刺耳。

1/√T年化 Sharpe 的標準誤,T 以年為單位
±0.88任何 5 年 Sharpe 周圍的 95% 區間
1.4在同樣 5 年期間,100 個雜訊策略中運氣最好的那個所呈現的 Sharpe

Sharpe 比率的標準誤是什麼?

如果 Sharpe 是根據 n 個週期報酬計算,並假設報酬彼此獨立且大致呈常態分布,抽樣誤差為:

SE(s) ≈ √((1 + s²/2) / n)

其中 s 是以相同頻率衡量的 Sharpe。將等式兩邊年化後,就會得到一個簡潔的結果。若每年有 k 筆觀測值,資料長度為 T 年,年化 Sharpe S 的標準誤為:

SE(S) ≈ √((1 + S²/(2k)) / T)

看看分母裡的 2k。以日報酬來說,k = 252,所以即使 Sharpe 是 2,分子也只增加 4/504 ≈ 0.008。整個項會化簡為 1。年化 Sharpe 的標準誤約為 1/√T,其中 T 是日曆資料年數。它幾乎不受 Sharpe 本身影響,也不受取樣頻率影響,更完全不取決於你做了多少筆交易。

所以:

資料年數SE(Sharpe)若測得 1.5,則 95% CI 為
11.00−0.46 至 3.46
20.710.11 至 2.89
30.580.37 至 2.63
50.450.62 至 2.38
100.320.88 至 2.12

如果回測以 2 年歷史資料算出 Sharpe 1.5,在 95% 信心水準下,統計上無法證明它優於擲硬幣。這就是大多數加密貨幣研究的基本處境,因為多數人手上乾淨、修正存活者偏誤且費用準確的資料,大約從 2022 年才開始;而在 2023 年以前,半數有趣的交易標的都還不存在。

但我有 40,000 筆交易,這樣還不夠嗎?

不夠,而這正是我最想澄清的誤解。

交易筆數和樣本長度是不同的量,公式裡只用到其中一個。如果你的策略在 6 個月內觸發 40,000 次,那麼 T = 0.5,SE ≈ 1.41。若測得的 Sharpe 是 2.0,95% 區間會落在 −0.8 到 4.8 之間。做了 40,000 筆交易,誠實的結論仍然是「可能不錯,也可能是負報酬」。

原因在於,這 40,000 筆交易並不是對 40,000 種不同市場狀態下所下的 40,000 個獨立賭注。它們只是從大約 180 天的市場行為中抽出的 40,000 個樣本,而每天彼此相關,各市場體制內也互相關聯。一個每天都賺錢、持續 4 個月的高頻均值回歸投資組合,實際上只押了一件事——這種流動性環境下,短期反轉會持續有效——而這個賭注可能只經歷了少數幾次彼此獨立的驗證。

我用來提醒自己的想法是:計算市場體制,不要計算成交筆數。這個策略經歷過多少種真正不同的市場狀況?一個資金費率套利策略若只經歷過一段長期正基差時期,那它看到的 n = 1,無論記錄了多少次每小時再平衡都一樣。

快速檢查:將每日 P&L 以 20 天為區塊做區塊自助抽樣,觀察重抽樣 Sharpe 的分布。如果第 5 百分位數低於 0,交易筆數就無關緊要。用 numpy 大約 9 行程式碼就能完成;比起任何其他單一檢查,這方法勸退我的策略更多。

這個公式適用於真實策略嗎?

不完全適用,而且誤差方向對你不利。1/√T 的結果假設報酬為 IID 常態分布。真實策略的報酬具有自我相關性和偏態,而類似套利、放空波動率或均值回歸的策略通常都有負偏態。Mertens 修正式會把這些動差納入:

SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)

其中 γ₃ 是偏態,γ₄ 是峰度。負偏態會讓 −γ₃·s 項變成正值,進而擴大區間。超額峰度則會進一步擴大區間。以偏態約 −1.2、峰度約 9 的典型加密貨幣套利 P&L 來說,我看過修正後的標準誤比簡化估計高出 30–40%。Lo 在 2002 年的論文處理了自我相關的部分,影響方向也一樣:報酬的正序列相關會讓簡化計算高估 Sharpe、低估表面上的誤差,兩者同時出現相當棘手。

所以,把 1/√T 當成不確定性的下限。這是最理想的情況。

如果我測試了 500 個變體,Sharpe 得多高才夠?

接下來要談的是對任何執行自動化研究流程的人都很重要的部分;這也是我們在 Stratmill 每天面對的情況:生成代理不只產生一個候選策略,而是會產生數百個。

從標準常態分布抽取 M 次,其最大值的期望大約是 √(2 ln M)。乘上標準誤,就能得到 M 個真正毫無價值的策略中,運氣最好的那個會呈現的 Sharpe。

測試策略數√(2 ln M)5 年期間最佳雜訊 Sharpe(SE 0.45)2 年期間最佳雜訊 Sharpe(SE 0.71)
102.150.961.52
1003.031.362.16
5003.531.582.50
5,0004.131.852.93

看倒數第二列。如果你用 2 年資料生成了 500 個候選策略,結果勝出的策略 Sharpe 是 2.4,那你其實什麼也沒找到。這低於雜訊底線。Bailey 和 López de Prado 提出的 deflated Sharpe,會用試驗 Sharpe 的變異數取代粗略的 √(2 ln M) 來正式處理這個問題;值得妥善實作,但光是粗略版本就足以讓你今天改變做法。

有兩件事會讓情況比表格顯示的更糟。第一,M 不是你存下來的策略數,而是你評估過的數量,包括每次參數微調、每次「我再試試 30 期回看窗口」、每次修好錯誤後重新執行。沒有人會老實計數。第二,候選策略並非彼此獨立的抽樣,因此 √(2 ln M) 會高估有效廣度;不過,相關試驗也表示,單一幸運市場體制會讓整個策略群一起受惠。

量化研究中最危險的數字,是從來沒人記錄的那個:你看過結果幾次。

那我實際上該怎麼做?

有 5 件事,依照我會採取的順序排列。

  1. 記錄每次評估。每次執行回測就增加計數、持續保存,永不歸零。如果你說不出 M 是多少,就無法說出門檻是多少。這是整份清單中工程投入價值最高的一小時。
  2. 永遠連同區間一起回報 Sharpe。不要只印出一個數字。我們的回測報告會輸出 1.72 ± 0.51 (2.9y, skew-adjusted),± 的部分不能省略。這會改變整個團隊討論結果的方式。
  3. 在查看結果前,依據 M 和 T 設定門檻。從上表找出數字並先寫下來。事後才訂門檻,就是大家說服自己接受曲線擬合的方式。
  4. 樣本不足時,優先增加廣度,而非頻率。你無法憑空增加日曆時間,但可以讓同一訊號套用在 40 個不相關的交易標的上。這確實能提高有效 n,增加交易頻率則辦不到。不過要留意相關性——在避險情緒升高的時段,40 個加密貨幣永續合約其實就像同一個工具。
  5. 接著用模擬交易驗證。樣本外時間每天只會累積一天,沒有捷徑;也正因如此,這是唯一沒有人能過度擬合的樣本。

這些做法都不能讓短樣本變得可用,只能讓你誠實面對短樣本能支持什麼結論;這比大多數回測報告暗示的主張弱得多。2 年 Sharpe 1.5 是值得用模擬交易驗證的假設,不是研究發現。

Sharpe 比率過度擬合回測統計顯著性量化研究
← 所有文章