Walk-forward 模型驗證中的擴展視窗與滾動視窗
比較金融模型使用的擴展訓練視窗與固定長度滾動訓練視窗,將驗證期與最終測試期分開,並在不使用未來結果的前提下選擇視窗規則。
本指南內容Walk-forward 折中,訓練視窗和評估視窗彼此獨立
簡短摘要
擴展訓練視窗會保留最早的合格歷史資料,並在新資料可用時逐步加入。滾動視窗只保留固定數量的最新合格觀測,並移除較早的資料列。兩者都可用於依時間順序進行 walk-forward 評估,但都不能取代模型選擇期與最終測試期的隔離。
Walk-forward 折中,訓練視窗和評估視窗彼此獨立
在預測起點,研究者掌握部分歷史特徵與結果,用這些資訊擬合或更新模型,再於較晚的資料區塊評估。將起點向前移動,就會得到連續的樣本外時段。訓練視窗規則決定每次重新擬合時可以使用哪些合格的歷史資料列;驗證和測試規則則決定用哪些後續結果比較方案、估計表現。這些選擇彼此相關,但不是同一個視窗。
擴展規則從固定的歷史邊界開始,新結果可用後視窗隨之增長。滾動規則將視窗兩端向前移動,但在預熱期之後保持觀測數量不變。無論採用哪種規則,都不能使用預測起點時尚未結束的目標值。如果標籤涵蓋多個交易時段,資料列日期可能不足以說明結果何時已知;應記錄標籤結束時間並據此篩選。
還要把特徵的回看區間與模型訓練視窗分開。某個訊號可以用較短的近期區間計算每列波動率,而擬合模型使用數年的歷史資料列。改變特徵回看區間會改變輸入變數;改變訓練視窗會改變估計模型所用的觀測。
擴展視窗保留最初的歷史資料
設 \(s\) 為第一個合格觀測的索引,\(t\) 為重新擬合時標籤已完整的最新觀測索引。擴展訓練集為 \(\{s,s+1,\ldots,t\}\)。到下一個預測起點時,既有資料列繼續保留,並加入新近合格的資料列。除非另有規則篩選或刪除資料,訓練樣本會隨時間增長。
如果舊資料仍能描述研究對象,更多觀測可能降低參數估計的抽樣雜訊,也可能保留短期近期樣本中沒有出現的罕見市場狀態,並避免任意選擇歷史截斷點。但舊資料列不會只因為時間久遠就自動失去影響。若特徵與報酬之間的關係發生變化,早期資料可能把估計拉向與目前市場不同的狀態。更大的訓練集也可能使重新擬合變慢。保留歷史並不會自動讓歷史更具代表性。
滾動視窗會移除所選範圍之外的觀測
若固定視窗長度為 \(W\),則時點 \(t\) 的訓練集為 \(\{t-W+1,\ldots,t\}\),同時要考慮標籤延遲和邊界間隔。到下一個起點時,末端向前移動,最早的合格資料列會被移除。視窗長度可以按觀測數或日曆時間定義;對於不規則資料,這兩種單位不能互換。
滾動視窗明確規定了資料的新近程度。當研究問題涉及適應變化條件,或實務操作需要限制訓練樣本大小時,這種規則可能有用。但它不會自動讓模型適應變化。如果重新擬合不頻繁,或變化緩慢,模型仍可能反應遲緩。短視窗資訊較少,可能使估計不穩定、遺漏罕見壓力期,或無法為複雜模型提供足夠樣本。長視窗保留更多樣化的歷史,但可能稀釋近期模式。
衡量單位也會影響結果:由於缺少交易日或資料頻率不同,相同行數可能涵蓋不同的日曆時間。對於面板資料,應明確說明視窗是按列移除資料,還是按日期移除一組資產資料。如果在查看最終測試結果後才選擇 \(W\),測試期就參與了模型選擇,不再是獨立測試。
兩種規則會提供不同歷史給每次重新擬合
| 選擇 | 每次擬合時的訓練資料列 | 可能的優勢 | 需要檢查的成本 |
|---|---|---|---|
| 擴展 | 從固定起點到目前時點的所有合格資料列 | 觀測較多,並保留較早的市場階段 | 舊市場狀態持續產生影響,擬合可能變慢 |
| 滾動 | 最近固定範圍內的合格資料列 | 明確限制資料新近程度與樣本規模 | 資訊較少,結果對所選長度更敏感 |
要單獨比較視窗規則,應固定資訊截止時間、特徵、模型類別、訓練目標、重新擬合日期、預測期間、測試區塊和執行假設。如果滾動模型還採用更頻繁的重新擬合或不同特徵,就不能把分數差異只歸因於視窗。
這些規則也不是選擇預測起點的方法。兩種訓練視窗都可以用滾動起點評估:以合格歷史資料訓練,預測下一個資料區塊,向前移動後重複。Leonard Tashman 對樣本外預測測試的回顧00065-0)討論了滾動起點和滾動估計視窗。前者規定何時評估,後者規定保留哪些訓練資料列。
假設時間軸展示每次擬合會使用哪些資料
以下數字和日期均為假設。假設模型每月重新擬合一次,預測下個月報酬,首次擬合使用截至第120個月、結果已完成的60個合格觀測。只有目標結果結束後,相應標籤才可使用。如果滾動視窗長度為60,那麼在第一個預測起點,兩種規則使用相同的60列。
當一個新的月度結果已知後,擴展集有61個合格列;滾動集加入新列並移除最舊列,仍維持60列。更新12次後,擴展集從原起點累計有72列,而滾動集保留最近的60列。由於歷史不同,兩種模型的估計可能不同,即使各列在各自擬合時都已可用。
在此假設中,將最後24個月保留為外層測試期。視窗規則和長度、特徵以及其他設定,都應透過較早的時間順序驗證期來選擇,再依預先設定的重新擬合計畫評估固定後的選擇。看過外層測試結果後再改變長度,就是用測試資料來選擇模型,會誇大最終測試期所能提供的證據。
在依時間順序進行的驗證中選擇視窗規則
比較之前先寫清問題:模型是否應該在每次擬合時使用全部可用歷史?是否有研究理由將舊樣本移出訓練集?目標關係是否預期穩定,還是相關輸入可能改變?這些問題有助於決定候選方案,但無法預先證明某個規則在特定市場一定更好。
使用較早的開發資料比較少量預先設定的方案,例如擴展視窗和幾種合理長度的滾動視窗。所有方案使用相同的時間順序驗證區塊和重新擬合頻率。先確定評估目標再計分:預測損失、校準度、考量週轉率後的投資組合效用,以及最大回撤回答的是不同問題。保持成本與限制條件一致,並記錄擬合失敗和缺少的預測。如果目標區間或測試區塊有重疊,相鄰分數可能共享報酬;應說明這種相依性,不要把每一列都當成獨立實驗。
將之後的時間段留作最終檢查,期間不參與選擇。在巢狀設計中,內層驗證只能使用每個外層測試區塊之前的資料來選擇視窗及其他設定;外層結果則評估完整的選擇流程。[Purged 交叉驗證指南](/zh-TW/learn/purged-cross-validation-embargo-time-series-finance-explained)說明標籤重疊邊界;[金融模型過度擬合](/zh-TW/learn/bias-variance-tradeoff-financial-model-overfitting-explained)和[多重檢定](/zh-TW/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
固定長度的滾動訓練視窗在下一次擬合時會發生什麼變化?
選擇答案即可查看解釋