Walk-forward 模型驗證中的擴展視窗與滾動視窗
比較金融模型採用的擴展訓練視窗與固定長度滾動訓練視窗,將驗證期與最終測試期分開,並在不使用未來結果下選擇視窗規則。
本指南內容Walk-forward fold 內的訓練視窗與評估視窗各自獨立
簡短摘要
擴展訓練視窗會保留最早的合資格歷史資料,並在新資料可以使用時逐步加入。滾動視窗只保留固定數量的最新合資格觀測,並移除較早的資料列。兩種方法都可以用於按時間順序進行 walk-forward 評估,但都不能取代模型選擇期與最終測試期的隔離。
Walk-forward fold 內的訓練視窗與評估視窗各自獨立
在預測起點,研究者掌握部分歷史特徵及結果,利用這些資訊擬合或更新模型,再於較後的資料區塊評估。將起點向前移動,便會得到連續的樣本外時段。訓練視窗規則會決定每次重新擬合時,可以使用哪些合資格的歷史資料列;驗證及測試規則則會決定用哪些後續結果比較方案和估算表現。兩者相關,但並非同一個視窗。
擴展規則由固定的歷史邊界開始,新結果可以使用後,視窗便會增大。滾動規則會將兩端一併向前移動,但在初始階段後維持觀測數量不變。無論採用哪種規則,都不可使用在預測起點尚未完結的目標值。如果標籤涵蓋多個交易時段,資料列日期未必能說明結果何時已知;請記錄標籤結束時間,並按這個時間處理資料。
亦要將特徵的回望期與模型訓練視窗分開。訊號可以用較短的近期時段計算每列的波幅,但擬合後的模型可能會使用數年資料。更改特徵回望期會改變輸入變數;更改訓練視窗則會改變用來估算模型的觀測資料。
擴展視窗會保留最初的歷史資料
設 \(s\) 為首個合資格觀測的索引,\(t\) 為重新擬合時標籤已完整的最新觀測索引。擴展訓練集是 \(\{s,s+1,\ldots,t\}\)。到下一個預測起點時,原有資料列會保留,並加入新近合資格的資料列。因此,除非另有規則篩選或移除資料,樣本數會隨時間增加。
如果舊資料仍能描述研究對象,更多觀測可能降低參數估算的抽樣雜訊,亦可能保留短期近期樣本未必出現的罕見市場狀況,並避免任意選擇歷史截斷點。不過,舊資料列不會單因時間久遠而自動失去影響。如果特徵與回報之間的關係改變,早期資料可能令估算偏向與目前市場不同的狀況。較大的訓練集亦可能令重新擬合變慢。保留歷史不代表歷史會自動更具代表性。
滾動視窗會移除所選範圍以外的觀測
若固定視窗長度為 \(W\),時點 \(t\) 的訓練集是 \(\{t-W+1,\ldots,t\}\),並要計及標籤延遲及邊界間隔。到下一個起點,末端會向前移動,而最早的合資格資料列會被移除。長度可以按觀測數或日曆時間定義;對於不規則資料,兩種單位不可互換。
滾動視窗會訂明資料要有多近期。當研究問題涉及適應變化中的環境,或實際運作需要限制訓練資料量時,這種規則可能有用。但它不會自動令模型適應變化。如果重新擬合不頻繁,或變化緩慢,模型仍可能反應遲緩。短視窗提供較少資訊,可能令估算不穩定、漏掉罕見壓力時期,或未能為複雜模型提供足夠樣本。長視窗保留更多不同時期的資料,但亦可能淡化近期模式。
量度單位亦會影響結果:缺少交易日或資料頻率不同,都可能令相同列數涵蓋不同的日曆時段。對於 panel data,請說明視窗會移除資料列,還是按日期移除整組資產資料。如果在查看最終測試結果後才選擇 \(W\),該時段便已用於模型選擇,不再是獨立測試。
兩種規則會向每次重新擬合提供不同歷史資料
| 選擇 | 每次擬合時使用的訓練資料列 | 可能的好處 | 需要留意的成本 |
|---|---|---|---|
| 擴展 | 由固定起點至目前時點的所有合資格資料列 | 觀測較多,亦保留較早的市場時期 | 舊市場狀態仍會影響模型;擬合可能變慢 |
| 滾動 | 最近固定範圍內的合資格資料列 | 清楚限制資料新近程度和樣本大小 | 資料較少,結果對所選長度更敏感 |
要單獨比較視窗規則,應將資訊截止時間、特徵、模型類別、訓練目標、重新擬合日期、預測期、測試區塊及執行假設保持一致。如果滾動模型亦採用較頻密的重新擬合,或使用不同特徵,就不能將分數差異單純歸因於視窗。
這些規則亦不會決定預測起點。兩種訓練視窗都可以配合滾動起點評估:以合資格的過去資料訓練,預測下一個區塊,向前移動,再重複。Leonard Tashman 對樣本外預測測試的回顧00065-0)討論滾動起點和滾動估算視窗。前者決定何時評估,後者決定哪些訓練資料列會保留。
假設時間線展示每次擬合會使用哪些資料
以下日期和數字均屬假設。假設模型每月重新擬合,目標是預測下個月回報,而首次擬合使用截至第120個月、結果已完成的60個合資格觀測。目標結果完成後,標籤才可以使用。如果滾動視窗長度是60,兩種規則在第一個預測起點會使用相同的60列。
當一個新的月度結果已知,擴展視窗會有61個合資格資料列;滾動視窗則加入新列並移除最舊一列,仍維持60列。更新12次後,擴展視窗會由原來起點累計保留72列,滾動視窗則保留最新的60列。即使各資料列在相關擬合時都已可用,兩邊使用不同歷史,估算仍可能不同。
在這個例子中,將最後24個月保留作外層測試。視窗規則和長度、特徵以及其他設定,都應在更早的按時間順序驗證期內選擇。之後按事先訂明的重新擬合安排,評估已固定的選擇。在查看外層測試結果後再更改長度,就是用測試資料作選擇,並誇大最終測試期可以提供的證據。
在按時間順序的驗證中選擇視窗規則
比較前先列明問題:模型每次擬合時是否應使用所有可用歷史?有沒有研究理由將舊例子排除於訓練之外?目標關係是否預期穩定,還是相關輸入可能改變?這些問題有助界定候選方案,但不能預先證明哪種規則在某個市場一定較好。
使用較早的開發資料,按預先訂好的小型方案清單進行比較,例如擴展視窗和幾個合理長度的滾動視窗。所有方案須採用相同的按時間順序驗證區塊,以及相同的重新擬合頻率。計分前先決定目標:預測損失、校準度、計及周轉率的投資組合效用和最大回撤,回答的問題各有不同。成本和限制條件要保持一致,並記錄擬合失敗和缺少的預測。如果目標期或測試區塊重疊,相鄰分數可能使用相同回報;要說明這種相依性,不要把每一列都當作獨立實驗。
將較後的時間段保留作最終檢查,期間不要用於選擇。在巢狀設計中,內層驗證只能用每個外層測試區塊之前的資料選擇視窗和其他設定;外層結果則會評估整個選擇程序。[Purged CV 指南](/zh-HK/learn/purged-cross-validation-embargo-time-series-finance-explained)解釋標籤重疊的邊界;[金融模型過度擬合](/zh-HK/learn/bias-variance-tradeoff-financial-model-overfitting-explained)和[多重檢定](/zh-HK/learn/multiple-testing-false-discovery-rate-finance-explained)說明相關的選擇風險。
按當時可用的資訊處理標籤、前處理和重新擬合時間
每個預測起點只使用當時已知的特徵和標籤。即使決策日期較早,跨越多個交易時段的遠期回報在驗證邊界附近仍可能未完成。需要時按實際標籤區間留出間隔或清除資料列;只有在觀測頻率和目標期能支持時,固定列數才是合理做法。任何視窗規則都無法修正含有未來資訊的特徵。
缺失值填補、縮放、特徵選擇和其他經學習的前處理,只能在每個 fold 的訓練部分擬合。如需選擇門檻或超參數,應在訓練期內使用按時間順序的驗證,並在評估較後區塊時固定選擇。scikit-learn 官方TimeSeriesSplit 文件說明,訓練集預設會逐步擴展,亦可用 max_train_size 限制大小。gap 以樣本數計算;要比較 fold 的時間長度,觀測間隔須相同。亦要另外檢查帶時間戳的金融標籤,以及研究所用函式庫版本的實際行為。
按預測起點報告表現並說明評估限制
報告視窗規則和確實長度、最早保留日期、每次擬合的合資格資料列數、標籤可用時間規則、驗證及最終測試日期、預測期和重新擬合安排。除了整體結果,亦要展示各測試區塊的結果。平均值可能掩蓋某個市場時期對比較的主導作用;相鄰預測可能共用結果,因此並非互相獨立的證據。
預測準確度不等於策略淨回報。持倉建立、槓桿、周轉率、流動性、費用、差價、市場衝擊、借券、資金費率和執行時間都會影響實際結果。比較時保持這些假設一致,並說明哪些項目沒有納入。Cerqueira、Torgo 和 Mozetič 關於時間序列效能估算的研究指出,平穩與非平穩情況下的估算可能不同。該研究並無直接比較金融視窗政策,也沒有證明哪一種規則必定較好。
將每次回測視為關於特定歷史和程序的證據。擴展視窗可能保留已過時的市場狀態;滾動視窗可能丟棄有用資訊,令估算更嘈雜。選定的規則可能在其他市場狀態、資產範圍或成本環境中失效。驗證可降低對已測試程序的不確定性,但不能承諾未來回報,也不能證明任何視窗最理想。
常見問題
Q1擴展視窗使用更多資料,所以總是較好嗎?
不是。如果舊觀測仍然相關,更多資料列可能令估算更穩定;但過時的市場狀態亦可能繼續影響模型。結果取決於資料、目標、特徵、估算器和評估期。
Q2滾動視窗會自動適應市場狀態轉變嗎?
不會。舊資料列超出所選範圍後會被移除,但視窗不會偵測狀態轉變,也不保證新樣本可以代表下一個狀態。重新擬合頻率、視窗長度和模型設計仍然重要。
Q3可以用同一時段調整視窗並報告最終表現嗎?
這樣一來,該時段便參與了模型選擇。請用按時間順序的驗證選擇規則,再用較後且未觸碰的測試期評估已固定的程序。該結果亦只描述已測試的歷史和假設。
資料來源與延伸閱讀
回報問題
我們會準備一封包含本文連結的電郵。寄出後,Mark 才會收到你的回報
快速檢查
讀完指南後,用 3 道題檢查一下
問題 01
固定長度的滾動訓練視窗在下一次擬合時會有甚麼改變?
選擇答案即可查看解釋