樣本外檢驗:別被回測騙了 Walk-Forward Testing
在歷史資料上挑出最好的參數很容易,難的是它在沒見過的資料上還靈不靈。滾動前進檢驗模擬真實的「先選參數、再上場」。
還沒想好?先看看第一課(免註冊)「用規則積木搭策略」。
文字版講解 · 量化入門 第 5 課「樣本外檢驗:別被回測騙了」
在歷史資料上挑出最好的參數很容易,難的是它在沒見過的資料上還靈不靈。滾動前進檢驗模擬真實的「先選參數、再上場」。
先選參數,再上場
真實交易裡你只能用過去的資料選參數。滾動前進檢驗模擬這個過程:在樣本內裡挑最優參數,在緊接著的樣本外裡檢驗,然後整體往前滾。
回測裡的水分
用全部資料挑出的「最優參數」等於看著答案做題。樣本外表現和它的差距,就是回測裡的水分;在純雜訊裡也能挑出好看的參數,是過度擬合最直接的證據。
要平原,不要尖峰
可靠的參數附近,鄰近的參數也表現不錯。只有某一個參數特別好、旁邊都很差,多半是巧合,換一段行情就會失效。
本課要點
- 樣本內挑參數、樣本外檢驗,樣本外的表現才接近真實水準。
- 滾動前進:每次用過去一段資料選參數,在接下來一段資料上檢驗,再整體往前滾。
- 樣本內很好、樣本外很差,說明策略多半是在擬合雜訊。
- 好參數附近的參數也應該不錯;只有一個「尖峰」參數特別好,多半是巧合。
動手試試
下面這些練習可以在本課的互動模擬裡完成:
- 在「風格切換」行情裡:全樣本最優報酬是多少?樣本外合計呢?
- 切到「純雜訊」:每個區間的樣本內平均是多少?樣本外合計呢?
- 回到「風格切換」,把訓練區間從 120 根改成 200 根:參數更換次數變少了嗎?樣本外合計變好還是變差?
- 切到「長期趨勢」:樣本外合計還是正的嗎?和「全樣本最優」差多少?
小測驗與解析
- 1. 一個參數在樣本內年化 40%、樣本外年化 −5%,最可能說明?
- 答案:過度擬合了歷史雜訊。只在「見過的資料」上表現好,是過度擬合的典型特徵。
- 2. 滾動前進檢驗的做法是?
- 答案:用過去資料選參數、在下一段資料上檢驗,然後往前滾動。模擬真實交易中「只能用過去資訊做決定」的處境。
- 3. 測試了 200 組參數,挑出回測最好的一組,年化 35%。最合理的下一步是?
- 答案:在沒參與挑選的樣本外資料上檢驗。試的組合越多,挑出「碰巧好看」的參數的機會越大,必須用沒見過的資料檢驗。