iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
AI & Data

從零到英雄:用GCP建立AI交易體系系列 第 21

Day 21 詳細的交叉驗證回測討論_CPCV組合式清洗交叉驗證法(上)

  • 分享至 

  • xImage
  •  

(本篇有很多數學式,這裡要抱怨一下這邊都沒辦法顯示數學式,我直接請GPT代勞)

過去我們說過回測如果沒有經過交叉驗證的話只會在一個歷史資料用一個路徑去做驗證,這樣的方式其實是相當容易過擬合的,可以常常看到網路上有非常多的人會說提到回測最佳化參數遇到的問題。

單純的交叉驗證可以解決這樣的問題嗎?這就是接下來要討論的主要議題。

回測用於評估投資策略的表現,使用過去的觀察數據進行外樣本評估。這些過去的觀察可以以兩種方式使用:

  1. 狹義上,模擬投資策略的歷史表現,就像它過去已經運行過一樣
  2. 廣義上,模擬過去未曾發生的情景。

我們今天更重要的是要討論第二種模擬過去未發生的情景。首先先來說明傳統回測-歷史向前法的一些優缺點。

歷史向前法(Walk-Forward Method)

歷史向前法(WF)是傳統中最常見的回測方法。WF是一種對過去策略性能的歷史模擬。每一個策略決策都基於該決策之前的觀察。

WF 有兩個主要優點:

  1. WF 有清晰的解釋性。
  2. 歷史是一種過濾機制,只要已經妥善地執行了清除(下方註解解釋)就絕對不會產生訊息洩漏的問題。

常見的錯誤是在WF中找到訊息洩漏,尤其是清除會遇到的那些狀況。

這裡講解一下清除的機制:
舉例來說:KD指標在計算時會用到前面幾天的數據,例如傳統KD9就起碼用到9天(不包含迭代的部分的話,迭代的部分是全歷史域的),因此如果直接來做訓練跟驗證集的切割會出現驗證集的資訊包含到訓練集,這就是訊息洩漏,在基於時間的數據上要謹慎處理。

歷史向前法的缺陷

WF 有兩個主要缺點:首先,僅測試一個場景(歷史路徑),這很容易過度擬合。另外WF不一定能代表未來的性能,因為結果可能會受到數據點特定排序的偏見。

假設有一個股票交易策略,從2007年1月1日開始在 S&P 500 上進行 WF 回測。在2009年3月15日之前,因為市場有上升和下跌,這個策略會被訓練成一個市場中性(不偏向買入或賣出)的策略。但是在那之後,市場主要是上升,所以策略會被訓練成主要進行買入。

問題在於,如果你把時間反過來,從2017年1月1日到2007年1月1日進行回測,你會得到一個完全不同的策略。這顯示 WF 方法容易受到數據順序的影響,而這樣的策略在實際應用中可能會失敗。

交叉驗證法(Cross-Validation Method)

投資人經常做一些假設,例如將策略暴露於2008年金融危機、或是網絡泡沫、或是逐步緊縮風波、或是2015–2016年的中國恐慌等無法預見的壓力情境下,會有什麼表現。一種測試的方法是將觀察資料分成兩組,一組是我們希望測試的時期(測試集),另一組是其餘的資料(訓練集)。例如,一個分類器會在2009年1月1日至2017年1月1日期間進行訓練(目的是跳過2008年),然後在2008年1月1日至2008年12月31日期間進行測試。我們對2008年所獲得的表現並不是歷史上準確的,因為模型是在2008年之後才有的資料上進行訓練的。但歷史準確性並非測試的目標。測試的目的是要將一個對2008年一無所知的策略暴露於類似2008年的壓力情境下

交叉驗證(CV)進行回測的目的不是為了獲得歷史準確的表現,而是為了從多個樣本外情境中推斷未來表現。在回測的每一個時期,我們模擬一個除了那一個時期之外都了解所有情況的模型的表現。

優點

  1. 測試不是基於特定(歷史)情境的結果。事實上,CV測試了K個替代情境,其中只有一個與歷史序列相符。
  2. 每一個決策都是基於相同大小的集合來作出的。這使得在不同時期的結果在用於作出這些決策的信息量方面是可比較的。
  3. 每一個觀察都只是一個測試集的一部分。沒有暖身子集,從而達到了最長可能的樣本外模擬。

缺點

  1. 跟WF一樣,只模擬了一個回測路徑(雖然不是歷史路徑)。每次觀察只產生一個和唯一一個預測。
  2. CV沒有明確的歷史解釋。輸出並不模擬策略在過去會有怎樣的表現,而是模擬它在未來在各種壓力情境下可能會有怎樣的表現(這本身是一個有用的結果)。
  3. 因為訓練集不是在測試集之後,因此有可能出現信息洩漏。必須極其小心,以避免將測試信息洩漏到訓練集中

組合式清洗交叉驗證法(Combinatorial Purged Cross-Validation Method)

這篇要介紹一種新方法,該方法解決了WF和CV方法的主要缺點,即這些方案只測試單一的路徑。「組合式清洗交叉驗證」(CPCV)方法。給定研究者目標的回測路徑數量𝜑,CPCV會生成所需的精確數量的訓練/測試集的組合,以生成這些路徑,同時清洗包含洩漏信息的訓練觀察值。

這種方法的目的是解決單一路徑測試的局限性,並通過清洗來消除信息洩漏的可能性,提供更可靠和全面的回測結果。


上一篇
Day20 回測的風險與誤區
下一篇
Day 22 詳細的交叉驗證回測討論_CPCV組合式清洗交叉驗證法(下)
系列文
從零到英雄:用GCP建立AI交易體系34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言