VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
交易研究社 / 回測與檢驗

投資組合回測:合併多個策略並檢查回撤

把每個策略每天的損益以金額計,依你實際會交易的口數,加總在同一個日曆上。再用最差回撤、恢復時間、月度績效,以及各策略是否同時虧損,來評斷合併後的曲線。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 如何合併多個策略的權益曲線?
  2. 為什麼相關性與回撤重疊很重要?
  3. 該如何決定每個策略的部位大小並分配資金?
  4. 該如何檢查投資組合的回撤與各期績效?
  5. 為什麼以樣本內挑選建成的投資組合,看起來會比實際交易表現更好?
  6. 常見問題
  7. 參考文獻

要回測一組策略的投資組合,就把每個策略每天的損益以金額計,依你實際會交易的口數,加總在同一個共用日曆上。接著用合併曲線的最差回撤、恢復所花的時間、月度績效,以及各策略是否同時虧損,來評斷這個組合。

如何合併多個策略的權益曲線?

合併策略的方法,是逐日把它們以金額計的損益相加,而不是把百分比報酬或各項摘要統計數字取平均。投資組合回測是讓多個策略跑過同一段歷史,並衡量持有它們全部的那一個帳戶。權益曲線是帳戶損益累計總額隨時間變化的線。回撤則是權益曲線從上一個高點下跌到下一個新高之前最低點的跌幅。

第一次做投資組合回測,用免費的試算表就夠了。每個策略一欄、每天一列,再加一欄放加總。建立順序如下:

  1. 取得每個策略的每日損益,以帳戶幣別計,且已含手續費與滑價。事後才加入的成本會改變排名。請見如何在回測中建立手續費與滑價模型。
  2. 每個策略使用你打算交易的口數。每個策略各一口的結果只是起點,不是最終的投資組合。
  3. 把所有策略放在同一個日曆上。沒有交易的日子填 0,不要留白。夜盤的交易要用同一套規則歸到交易日,且每個策略都一樣。
  4. 使用每日未平倉權益,而不是已平倉交易的權益。已平倉交易的權益曲線只在交易平倉時才變動,會隱藏仍持有部位的虧損。每日未平倉權益則以每天收盤價計算持有部位的價值,因此重疊的虧損會在發生當下顯現。
  5. 所有策略使用相同的日期區間。如果某個策略的歷史較晚才開始,投資組合就從那個日期開始。否則前幾年的策略數量會比後幾年少。
  6. 每列加總,並保留累計總額。累計總額就是投資組合的權益曲線。
疊加曲線可緩和回撤:策略 A 下滑時,策略 B 在同一日期上升,因此投資組合曲線(兩者逐日加總)只有淺淺的回撤 疊加曲線,緩和回撤 示意圖:同一天數,逐日加總 策略 A 策略 B 投資組合 A 虧損時 B 獲利。 所以:加總每日損益,而非統計數字。
投資組合曲線是各別曲線的逐日加總。當一個策略虧損、另一個策略獲利時,合併後的下跌會比較淺。

為什麼相關性與回撤重疊很重要?

相關性告訴你策略通常是否同向變動。回撤的重疊則告訴你它們是否會在同一時間讓你受傷,而第二項檢查更重要。想像同一片海灘上的兩個冰淇淋攤。它們是不同的生意,但一個下雨的星期就會讓兩家都沒客人。

相關性是介於 −1 到 +1 之間的數字,顯示兩個數列同步變動的程度。+1 表示兩者永遠朝同一個方向走。0 表示沒有線性關係。−1 表示兩者永遠朝相反方向走。要用每日或每週的損益來計算,不要用權益曲線來算。兩條向上的權益曲線看起來永遠相關,即使每日結果互不相干。

每日損益相關性粗略解讀該怎麼做
約 0.6 以上大致是同一個賭注決定部位大小時,把這一對當成一個策略
約 0.3 到 0.6部分是同一個賭注檢查最差的時期是否重疊
約 0大致獨立若兩者都有真正的優勢,是很好的分散來源
負值傾向互相抵銷確認不是其中一個以成本為代價在對沖另一個

這些區間只是粗略的解讀,不是定律。單一個相關性數字有個弱點:它是用所有日子算出來的,而大多數日子都很平靜。兩個策略可能在平靜的日子互不相干,卻在少數讓市場劇烈波動的日子一起虧損。舉例來說,ES 與 NQ 上的兩個趨勢策略往往會被同一次反轉打到,因為這兩種股價指數期貨經常朝同一個方向走。

所以要直接檢查重疊的情形:

  1. 列出每個策略最差的三次回撤,附上起訖日期。
  2. 標出其中哪些落在相同的幾週。
  3. 只用投資組合最差的幾個月,重新計算相關性。如果大幅上升,代表你最需要分散的時候,分散效果就消失了。
壞週重疊,跌更深:兩個策略各有 1 萬回撤;回撤落在同樣的週時,投資組合回撤約 2 萬;落在不同週時,約 1 萬 壞週重疊,跌更深 紅柱:各回撤 −1 萬 同一週 不同週 A B A B 組合 −2 萬 組合 −1 萬 時間點決定深度。 所以:檢查壞週是否重疊。
各別回撤相同,時間點不同。當不好的時期重合時(左),投資組合回撤很深;當它們落在不同時間時(右),回撤較淺。

該如何決定每個策略的部位大小並分配資金?

要讓每個策略不好的時期,在金額上大致相當。給每個策略相同的口數,通常會讓其中一個策略主導整個投資組合。部位大小是決定每個策略交易多少口。資金配置則是每個策略可以使用的帳戶風險比例。

方法運作方式效果
相同口數每個策略一口波動最大的市場會主導整體結果
相同資金每個策略分到相同的帳戶比例簡單,但忽略了每個策略的波動幅度
相同風險調整口數,使每個策略不好的時期造成大致相同的損失每個策略貢獻相近的風險比例

一個簡單的相同風險規則,是使用每口的最差回撤:

口數 = 風險預算 ÷ 每口最差回撤

風險預算是你願意在該策略不好的時期承受的虧損金額。每口最差回撤是該策略在回測中交易一口時,從高點到低點最大的虧損。結果要無條件捨去為整數。

假設性範例

一個 100,000 的帳戶,替每個策略設定 5,000 的風險預算。策略 A 交易一口標準合約,每口最差回撤為 5,000,所以分到 1 口。策略 B 交易微型合約,每口最差回撤為 500,所以分到 10 口。兩個策略現在承擔的金額風險大致相同。

有三個實務重點可以參考:

  • 預期會有比回測更深的回撤。常見的做法是用歷史最差回撤的 1.5 到 2 倍作為規劃數字,因為未來最差的時期還沒有發生。
  • 當所有策略同時持有部位時,要檢查保證金。把你的期貨商今天對同一天所有未平倉部位收取的保證金加總起來。
  • 測試期間保持部位大小固定。複利會把部位大小規則混進結果,讓策略更難比較。先測試固定大小,再把部位大小規則當成獨立的一步加入。

該如何檢查投資組合的回撤與各期績效?

把投資組合的最差回撤,拿來對照你能撐得住的程度。接著看月度與年度表,判斷結果是分散在各期,還是只靠少數幾個時期撐起來。回撤持續時間是從回撤前的高點,到曲線創下新高所經過的時間。

檢查項目觀察重點較強的結果較弱的結果
最差回撤金額與佔帳戶的比例大小是你會繼續交易下去的程度大小會讓你停手
恢復時間最長沒有創新高的時間數個月數年
分散效果投資組合最差回撤 vs. 各別最差回撤的加總明顯小於加總接近加總
月度表虧損月份的比例、最差的月份虧損分散且幅度不大少數幾個虧損非常大的月份
貢獻度每個策略佔總獲利的比例多個策略都有貢獻一個策略扛下全部

分散效果的檢查,是最有用的單一數字。在部位大小固定的情況下,投資組合的最差回撤永遠不會超過各別最差回撤的加總。只有在所有最差的時期完全對齊時,才會達到這個加總。

假設性範例

策略 A 與策略 B 的最差回撤各為 10,000。如果兩個回撤發生在同樣的幾個月,投資組合回撤約為 20,000,第二個策略沒有帶來任何保護。如果 A 的回撤出現在某一年、B 的出現在另一年,而另一個策略在那段期間在獲利,投資組合回撤可能遠低於 20,000,常常接近或低於 10,000。

在合併任何東西之前,先逐一檢視每個組成策略。在 AlphaPrime(Valynox)中,績效報表會顯示策略的權益、回撤、交易與各期績效,包括多空分析。這樣你在把各策略的不好月份和其他策略對齊之前,就能先看到每個策略自己的不好月份。

為什麼以樣本內挑選建成的投資組合,看起來會比實際交易表現更好?

用回測最好的策略建成的投資組合,會繼承每個策略的過度最佳化。它還多了一層新的問題:組合本身的選擇。過度最佳化是把規則配適到過去資料中的隨機雜訊上,使回測看起來比方法的真實水準更好。樣本內資料是用來挑選或調整策略的歷史;樣本外資料則是這個選擇從未見過的歷史。從許多回測中挑出最好的,會拉高樣本內的結果,而樣本外的結果往往落後(Bailey et al., 2014)。同樣的邏輯也適用於:你因為過去的相關性最低,就從 50 個策略中選出 5 個。你搜尋了數量非常龐大的可能組合,並留下運氣最好的那一個。在同一份資料上量到的低相關性,也是那份運氣的一部分。關於背後的研究,請見為什麼最好的回測通常被高估。文獻中的一種做法,是嘗試的變體越多,就越大幅折減回測結果(Harvey & Liu, 2015)。另一種做法,是估計所選組合過度配適的可能性(Bailey et al., 2017)。

比較誠實的投資組合測試,依照固定的順序進行:

  1. 切分歷史,分成挑選期間和之後的保留期間。
  2. 只用挑選期間來選策略、部位大小和組合規則。在往下看之前先把規則寫下來。
  3. 在保留期間執行固定的投資組合,不做任何更動。
  4. 盡可能用樣本外區段作為輸入。每個策略從推進分析接起來的樣本外曲線,比它完整的樣本內曲線更公平。
  5. 把保留期間的回撤與相關性,與挑選期間做比較。保留期間回撤更深、相關性更高都是正常的。若是崩潰,代表這個投資組合是配適出來的,不是建構出來的。

請記錄你試了多少個候選策略,因為這個數量會告訴你該預期多少選擇偏誤。具備批次管理與重新檢驗的策略資料庫會把每一批和它的候選策略放在一起,因此這個數量不會遺失。每個策略在被納入投資組合考慮之前,也可以先通過策略檢驗,包括推進分析。

先選定,再鎖定:時間軸上,約前 70% 的歷史資料為選擇期,在此選定策略、部位大小與規則;邊界處鎖定;最後 30% 為保留期,固定的投資組合在此不做任何更動地運行 先選定,再鎖定 之後再檢驗固定的投資組合 選擇期 保留期 選策略、部位大小、規則 不做更動 保留期檢驗的是你已固定的內容。 所以:先把規則寫下來。
所有決定都在挑選期間完成並鎖定,再用固定的投資組合去測試之後的保留期間。

如果你使用 AlphaPrime,這代表:在任何策略進入投資組合之前,先檢驗它,並檢視它的回撤與月度績效。然後把完整的一批留在資料庫中,這樣你就知道最終入選的策略,是從多少個候選策略中挑出來的。

常見問題

可以免費回測策略的投資組合嗎?

可以。用試算表就夠了。把每個策略的每日損益放在各自的一欄,每列加總,並保留累計總額。要算回撤的話,加一欄放目前為止的最高權益,用目前權益減去它,再取最負的那個值。

投資組合的回撤是各策略回撤的加總嗎?

只有當每個策略最差的時期剛好在同一時間發生時才是。在部位大小固定的情況下,投資組合的最差回撤永遠不會比那個加總大,而且通常比較小。兩者之間的差距,就是分散所帶給你的保護。

策略之間的相關性要多低才夠低?

粗略來說,每日損益相關性低於約 0.3,常被視為低。但光看這個數字還不夠,因為在壓力市場中,相關性可能大幅上升。也要檢查各策略最差的回撤是否落在相同的幾週。

期貨投資組合該有多少個策略?

沒有固定的數字。有幫助的做法,是加入那些和你已持有的策略在不同時間虧損的策略。一個交易同一個市場、邏輯又相似的新策略,只會增加口數和保證金,卻幾乎沒有增加保護。

投資組合回測該用已平倉交易的權益,還是每日權益?

使用每日未平倉權益,它以每天收盤價計算持有部位的價值。已平倉交易的權益只在交易平倉時才會變動,所以會隱藏持有部位的虧損,也可能讓重疊的回撤看起來比實際小。

參考文獻

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2017). The Probability of Backtest Overfitting. Journal of Computational Finance, 20(4), 39–69.
  • Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.

AlphaPrime 在這裡能幫上什麼

策略資料庫讓候選策略可供搜尋、排序,並依批次分組,還能重新檢驗。績效報表會在你合併策略之前,顯示每個策略的權益、回撤、交易與各期績效。

看方案與價格