如何閱讀回測績效報表:Sharpe、Sortino、CAGR、最大回撤
先看扣除成本後的淨損益、獲利因子、每筆期望值、搭配 CAGR 的最大回撤,以及一個風險調整後比率。這幾個數字合在一起,能說明策略在扣除成本後有沒有賺錢、過程有多難熬,以及優勢在條件稍微變差時是否還撐得住。勝率、交易筆數與在市場中的時間則是用來輔助這五項。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
回測績效報表中,哪五個數字最重要?
先看扣除成本後的淨損益、獲利因子、每筆期望值、搭配 CAGR 的最大回撤,以及一個風險調整後比率(Sharpe 或 Sortino),其他都往後放。這五個數字回答三個關鍵問題:策略在扣除手續費與滑價後有沒有賺錢、最糟的一段有多深,以及結果在條件稍微變差時是否還撐得住。
回測績效報表是對同一條模擬權益曲線所做的一組量測。報表上多數項目只是從不同角度描述同一條曲線,所以你不需要全部都看。你需要的是不會因為改變交易口數或測試長度而被做假的那些數字,而且要成對來讀。其中兩項你可以用免費的 Sharpe 比率計算機和回撤計算機自己驗算。
淨損益、獲利因子與期望值各說明了什麼?
淨損益說明策略總共賺了多少,獲利因子說明獲利的單子勝過虧損的單子多少,期望值則說明每一筆交易在扣掉成本之後是否還有空間。淨損益是所有已平倉交易扣除手續費與滑價後的總和。獲利因子是總獲利除以總虧損,所以 1.0 代表獲利的單子剛好補平虧損的單子。期望值是扣除成本後的平均每筆損益;勝率與期望值計算機可以用勝率以及平均獲利與平均虧損算出來。
假設範例
某期貨策略在 400 筆交易中,總獲利 60,000、總虧損 40,000。淨損益是 20,000。獲利因子是 60,000 ÷ 40,000 = 1.5。期望值是 20,000 ÷ 400 = 每筆 50。如果一買一賣(來回)的成本(進場與出場的手續費加滑價)是每筆 30,且已經計入,那麼每筆在扣掉成本後還留有 50。如果這 30 還沒計入,期望值就掉到 20,滑價稍微增加一點就會吃掉大部分。
合理的數值長什麼樣子,取決於策略的交易頻率。扣除成本後,獲利因子接近 1.0 代表優勢很薄,滑價稍有變動就可能讓正負號翻轉。對於多年來每週交易數次的策略,約 1.3 到 2.0 之間的數值很常見。在短期測試或交易筆數很少的情況下,獲利因子高於 3,通常代表測試期間太短,或規則是配合資料硬套出來的。期望值應該是一買一賣(來回)成本的數倍;關於原因,請見回測中的交易成本一文。淨損益很大、但獲利因子接近 1.0、期望值又貼近每筆成本,這是該進一步細看的訊號,而不是一個好結果。
Sharpe 與 Sortino 有何差別?為什麼逐筆交易的 Sharpe 容易誤導?
Sharpe 比率把報酬的每一次波動都視為風險,而 Sortino 比率只計入虧損的期間,所以 Sortino 不會懲罰大幅獲利的月份。兩者都是風險調整後比率:它們都是用某個期間(通常是一個月)的平均報酬,除以這些期間報酬的離散程度。
Sharpe 比率是每期平均報酬除以每期報酬的標準差。標準差是衡量離散程度的指標:當每個月都和平均月份差不多時,它很小;當各月差異很大時,它就很大。寫成公式如下:
Sharpe 比率 = 月平均報酬 ÷ 月報酬的標準差,其中「月平均報酬」是十二個(或更多)月份結果的平均值,「標準差」則是典型的一個月與該平均值的距離。許多報表會先從平均值中扣掉現金利率(例如國庫券殖利率);對於使用保證金的期貨策略,這個差距通常很小。
Sortino 比率的概念相同,但分母只使用虧損的月份(下行標準差)。如果一個策略有幾個非常大的獲利月份、虧損則小而平均,它的 Sortino 會高於 Sharpe,因為 Sharpe 把那些大額獲利也當成波動。
兩個比率都取決於所用的期間。以月報酬計算、再換算成年化(乘以 12 的平方根)的 Sharpe,是常見的報告慣例,也是多數交易人說「年化 Sharpe」時所指的數字。用日報酬算同一條權益曲線會得到不同的數字,而且當某一期的報酬會延續到下一期時,差距會更大;Lo(2002)說明了年化誤差可以有多大。只有在計算方式相同時,才拿不同的 Sharpe 比率相比。
以個別交易計算的 Sharpe 比率,很難在不同策略之間比較。交易並不是均勻分布的:某個策略可能一週內進行十筆交易,接著一整個月都沒有交易。逐筆標準差也取決於交易筆數,所以一個做 200 筆小額交易的策略,與一個做 20 筆較大額交易的策略,即使年底結果相同,逐筆 Sharpe 也可能差很多。它們的月 Sharpe 則會很接近,因為月份間隔均等,而且兩個策略都是以同一份日曆來衡量。
以經驗法則來說,對於測試多年且已計入成本的單一期貨策略,由月報酬算出、接近 1 的年化 Sharpe 是相當不錯的研究結果;回測中出現高於 2 或 3 的數值,比較常是測試期間太短,或是從眾多變體中挑出最好的那一個,而不是策略更強的訊號。Deflated Sharpe 比率會依據你嘗試過的變體數量來調整所報告的數值;這項調整的出處是 Bailey 與 López de Prado(2014)。
為什麼 CAGR 與最大回撤必須一起看,不能單看?
單看 CAGR 只能知道帳戶成長得多快,卻完全看不出一路上得忍受多深的坑,所以要搭配最大回撤一起看。CAGR(年複合成長率)是指在測試期間內,假設成長是平順的,把起始餘額變成期末餘額所需的單一年化比率。最大回撤(常寫成 max DD)是權益從高點下跌到下一個低點、再創新高之前的最大跌幅,以金額或佔高點的百分比衡量。
假設範例
兩個策略都在五年內把 100,000 成長到約 161,000,所以兩者的 CAGR 都約為 10%(1.10 連乘五次約為 1.61)。策略 A 從高點算起的最深跌幅是 12%;策略 B 是 35%,並且花了 14 個月才恢復。CAGR 除以最大回撤,A 約為 0.8,B 約為 0.3。以 100,000 的帳戶來說,策略 B 在某個時點會落到約 65,000,而且每一個持倉仍然必須滿足保證金要求。
要拿金額計的回撤,去對照你打算實際交易的帳戶規模,而不是測試時的起始餘額。在 100,000 的測試帳戶上,9% 的回撤是九千元的坑;在三萬元的實際帳戶上,它就是 30%,而且在谷底時每一口的保證金仍然得顧得上。也要檢查恢復時間(曲線停留在舊高點之下多久)。花了兩年才恢復的回撤,與花了兩個月就恢復的回撤,即使深度相同,感受也完全不同。請記住,未來最糟的回撤通常會比過去最糟的回撤更深,因為過去只是一個樣本;把交易順序重新洗牌的蒙地卡羅測試,會給你一個回撤範圍,而不是單一數字。免費的蒙地卡羅模擬器會把你自己的交易順序重新洗牌,給出那個回撤範圍,再拿去對照你打算交易的帳戶規模。
交易筆數、在市場中的時間與最長連虧又增添了什麼資訊?
這三項都不是績效數字,這正是它們有用的原因:就算你把部位大小多加一個零,它們也不會改變。交易筆數是證據的多寡;在市場中的時間顯示風險落在哪裡;最長連虧則是你必須在不碰規則的情況下撐過去的那一段。
- 交易筆數。30 筆交易得出的獲利因子 2.0,在被證明之前只是幾筆運氣好的交易;同樣的數值若來自 400 筆、橫跨不同市場條件的交易,才算證據。交易筆數較少,也代表如果用稍微不同的歷史重跑同一套規則,結果的範圍會更寬。
- 在市場中的時間。在市場中的時間,是策略持有部位的 K 棒(或小時)所佔的比例。一個有 35% 時間在市場中的策略,在測試期間約三分之一的時間要承擔隔夜與消息面風險;一個有 95% 時間在市場中的策略,則比較像是在買進持有的部位上再加一些規則。兩個 CAGR 相同、但在市場中的時間不同的策略,運用資金的方式差異很大。
- 最長連虧。最長連虧是連續虧損交易的最大筆數。它包含在最大回撤之內,但不是同一個數字:回撤可以由小賺與較大虧損交替累積而成,完全沒有長連虧。這是交易前就該知道的數字,因為連虧九筆正是多數交易人開始手動改規則的時候。
要如何逐項閱讀回測績效報表?
閱讀報表的順序是:先看淨損益與交易筆數,接著是獲利因子與期望值對照成本,再來是最大回撤對照 CAGR,然後是風險調整後比率,最後是連虧與在市場中的時間。每一步都會確認前一步,或是讓你回頭再檢查。
假設範例
某期貨策略測試約兩年八個月,起始餘額 100,000,報表如下:扣除成本後淨損益 20,000;400 筆交易;獲利因子 1.5;期望值每筆 50;一買一賣(來回)成本每筆 30;勝率 50%;平均獲利 300;平均虧損 200;最大回撤 9,500(9.5%);CAGR 約 7%;Sharpe 0.9、Sortino 1.3(由月報酬年化);最長連虧 9;在市場中的時間 35%。
- 淨損益與交易筆數。400 筆交易賺到兩萬,證據足以讓你繼續看下去;同樣的金額若只來自 25 筆交易,就不夠了。
- 獲利因子與期望值對照成本。獲利單勝過虧損單 1.5 比 1,而且每筆在扣掉 30 的成本後還剩 50。如果這 30 全部是滑價,而滑價增加一倍,期望值會掉到每筆約 20。這還撐得住但很薄,所以滑價是第一個該做壓力測試的項目。
- 最大回撤對照 CAGR。約 7% 的年成長對應 9.5% 的回撤,比值接近 0.7。在五萬元的實際帳戶上,同樣的回撤是 19%,這才是該拿來對照你自己承受度的數字。
- Sharpe 與 Sortino。Sortino 通常高於 Sharpe,因為它忽略獲利月份的離散;差距這麼大(1.3 對 0.9),代表獲利月份的離散程度遠大於虧損月份,這與有少數大額獲利的策略相符。光憑這兩個數值,都還不到會讓人懷疑嚴重套用資料的程度。
- 連虧與在市場中的時間。連虧九筆、平均虧損 200,約為一千八百元,遠小於最大回撤,所以這個回撤是由較長的混合期間累積而成。在市場中的時間為 35%,代表測試期間大部分時間是空手,因此那 9.5% 的回撤來自大約三分之一的日曆時間。
接下來要檢查的是:用兩倍滑價重跑同樣的規則,查看各月結果,確認淨損益是否只來自兩、三個月,並進行推進分析,看看這些設定在沒有拿來調整的資料上是否依然成立。
哪些報表數字最常造成誤導?
沒有搭配平均獲利與平均虧損的勝率、扣除成本前的淨損益、來自短期測試的 Sharpe、接近一買一賣(來回)成本的平均每筆損益,以及只用已平倉交易衡量的回撤,這些是最常讓弱策略看起來很強的項目。每一項在同一份報表中都有可以交叉檢查的對象。
| 會誤導的數字 | 為何會誤導 | 應該改看什麼 |
|---|---|---|
| 單看勝率 | 70% 的勝率若是小賺大賠,仍然會虧錢;勝率掩蓋了平均虧損的大小。 | 平均獲利對照平均虧損,或看期望值那一行。勝率與風險報酬比之間的取捨,決定了高勝率是否有價值。 |
| 扣除成本前的淨損益 | 成本隨交易筆數增加,所以毛利最高的策略,往往是交易最多、每筆優勢最小的那些。 | 扣除手續費與滑價後的淨損益,以及期望值對照一買一賣(來回)成本。 |
| 來自短期測試的 Sharpe | 月份太少時,標準差並不穩定,一個好的季度就能產生高於 3 的 Sharpe。 | 這個比率背後的月數與交易筆數,以及它是用月、日還是逐筆報酬計算的。 |
| 平均每筆損益接近成本 | 滑價小小的變動,就會讓每一筆交易甚至整份報表的正負號翻轉。 | 期望值除以一買一賣(來回)成本;用兩倍滑價重跑。 |
| 已平倉交易的回撤 | 有些報表只在交易出場時衡量回撤,所以曾經深度套牢、之後才恢復的未平倉部位完全不會出現。 | 包含未平倉部位、逐根 K 棒衡量的回撤。 |
如果你使用 AlphaPrime(Valynox),這代表:績效報表會為你保留的每個策略顯示權益、回撤、交易明細、各期間績效,以及多空分析。每次評估都已計入手續費、滑價與下一根 K 棒成交,所以這些數字本來就是淨值;請依本文說明的順序來閱讀。
常見問題
期貨交易策略的 Sharpe 比率多少算好?
對於測試多年且已計入成本的單一策略,由月報酬算出、接近 1 的年化 Sharpe 是相當不錯的研究結果。回測中高於 2 或 3 的數值,比較常來自短期測試,或是從眾多變體中挑出最好的一個,而不是來自更強的優勢。在比較兩個策略之前,務必先確認這個比率是用哪個期間計算的。
Sharpe 比率與 Sortino 比率有什麼差別?
兩者都是用每期平均報酬除以某種離散程度的衡量。Sharpe 使用所有期間的標準差,所以大幅獲利的月份也算作風險。Sortino 只使用虧損的期間,所以有少數非常大的獲利、虧損又平均的策略,在 Sortino 上的得分會高於 Sharpe。
獲利因子多少算好?
獲利因子是總獲利除以總虧損。扣除成本後,接近 1.0 的數值代表優勢很薄;在長期測試中交易頻繁的策略,約 1.3 到 2.0 之間很常見;而在短期測試或交易筆數很少的情況下高於 3,通常指向過度最佳化。請搭配交易筆數,以及期望值對照一買一賣(來回)成本一起閱讀。
回測中的最大回撤是什麼意思?
最大回撤是權益從高點下跌到接下來的低點、再創新高之前的最大跌幅,以金額或佔高點的百分比表示。它描述的是交易人在測試期間可能經歷過的最糟一段。請拿它與你打算交易的帳戶規模以及 CAGR 比較,並留意曲線花了多久才恢復。
CAGR 和平均年報酬一樣嗎?
不一樣。CAGR 是在整個測試期間內,把起始餘額變成期末餘額的單一年化比率,因此已考慮複利。當各年報酬有高有低時,各年報酬的簡單平均通常會高於 CAGR,因為大幅虧損會縮小後續獲利所依附的基數。
參考文獻
- Lo, A. W. (2002). The Statistics of Sharpe Ratios. Financial Analysts Journal, 58(4), 36–52.
- Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-Normality. The Journal of Portfolio Management, 40(5), 94–107.

