在量化策略模型特別是預測式(Predictive-Based Trading Model)量化策略模型的開發過程中,關鍵的一步是對模型進行樣本外的檢驗。我們通常會把數據分為樣本內和樣本外,但在數據有限的情況下,怎么盡可能的充分利用現有的數據對模型進行全面的檢驗?業界常用的兩種方法就是:遞推式檢驗和交叉式檢驗。
1. 遞推式檢驗(WalkForward Testing)
WalkForward testing, 遞推式檢驗的基本原理:用一段較長的歷史數據去訓練模型,并用隨后相對較短的數據去檢驗該模型,然后向后移動取數據的窗口,重復訓練與檢驗的步驟。
- 訓練數據:1996年至2007年,測試數據:2008年;
- 訓練數據:1997年至2008年,測試數據:2009年;
- 訓練數據:1998年至2009年,測試數據:2010年。
最后對測試集(2008、2009及2010年)的測試結果進行統計,用以評價模型的表現。
用下圖可以直觀的解釋遞推式檢驗的原理:上圖,每次檢驗時,測試數據(Test period)比較短,測試次數較多;下圖,每次檢驗時,測試數據(Test period)比較長,測試次數較少。實際應用時,可以通過改變測試數據(Test period)的長度,進行多次測試,用來判斷模型在應對非平穩數據(Nonstationarity)的穩定性。
遞推式檢驗相對于其他檢驗方法(例如Cross Validation)最大的缺點就是不能最大效用的利用有限的數據,特別是當歷史數據不夠多的時候。
2. 交叉式檢驗(Cross Validation)
上面說到的遞推式檢驗,每次我們去一部分數據,用其中較早的數據去訓練模型,然后再用剩下的數據去檢驗模型。而在交叉式檢驗中,我們把全部數據等分為N個部分,每次用其中的N-1個部分做訓練,用剩下的部分做檢驗。比如我們把2005年至2008年按照每年劃分,分為4個部分。那交叉校驗的操作過程如下:
- 訓練數據:2006-2008,測試數據:2005;
- 訓練數據:2005-2007,測試數據:2008;
- 訓練數據:2005、2006、2008,測試數據:2007;
- 訓練數據:2005、2007、2008,測試數據:2006.
交叉式檢驗最大的優點就是充分的利用有限的數據,每個訓練集數據同樣也是測試集數據。但交叉檢驗應用到策略模型的檢驗時也存在明顯的缺點:
- 當價格數據非平穩時,模型的測試結果不可靠。例如,用2008年的數據做訓練,用2005年的數據做測試。很有可能2008年的市場環境與2005年相比發生了很大的變化,所以模型測試的結果不可信。
- 與缺點1類似,在交叉檢驗中,我們會用最新的數據訓練模型,而用較老的數據測試模型,這本身就不怎么符合邏輯。
3. 數據重疊(Overlap)引發的思考
在對量化策略模型進行檢驗時,無論是遞推式檢驗還是交叉式檢驗都遇到到數據重疊的問題,那什么是數據重疊呢?
在開發量化策略模型時,大部分的技術指標是基于一定長度的歷史數據。例如某個交易日某個趨勢性的指標是用過去50天的歷史數據計算得出,而下一個交易日該指標又是該交易日前50天的數據計算得出,那么計算這兩個指標的數據有49天是相同的,這會導致每相鄰兩天該指標的變化很不明顯。
數據重疊會導致以下影響:
- 模型預測的結果變化緩慢導致持倉變化緩慢,這就是我們常說的指標的滯后性。
- 對模型結果檢驗的一些統計值不可用,由于重復數據導致的序列相關,使得一些統計檢驗的結果不可靠。
4. 模型評價VS績效評價
對量化策略模型的評價有兩種維度:
- 模型本身的預測表現:比如預測準確率、R平方(線性回歸)等;
- 基于模型的預測結果進行交易的表現:比如盈利因子、夏普比率等。
那我們在開發量化策略的時候,到底該采用哪種評價標準呢?預測精準的模型,可能最終的交易表現還不如預測相對不精準的模型。模型的預測準確性與基于模型預測結果的交易表現之間并不是線性的關系,比如有些模型的準確率低,但每次都能抓住大行情;而有些模型準確率高,但每次出大行情就預測不準。所以,在開發量化策略模型的時候,評價標準還是要選擇最終的交易表現。 當然,如果能找到預測結果好、交易表現也很好的模型是最好的結果。