← 研究動態
研究2026/06/07 上午04:11

預測波動率該回望多久?五段歷史告訴我們:沒有萬靈丹

波動率預測投資決策模型驗證滾動視窗跨期穩健性

讀者互動

已追蹤瀏覽 0 次,登入會員可按讚與收藏。

分享到:LINEFacebookX / Twitter

預測波動率該回望多久?五段歷史告訴我們:沒有萬靈丹

 Corrigendum(2026-06-07 更新) :本文原始版本(2026-06-06 發佈)的數字計算存在兩個方法論缺陷——(1) forecast engine 在每段視窗 refit 後沒有遞迴更新 σ² 狀態,等同凍結最後一日參數做整段預測;(2) DM 檢定的兩條序列在做 pooled 對齊時索引未對齊。本次更新(K593-v2,見 experiments/k593/k593_window_cross_oos_v2.py)重跑全部五段、四個視窗、Diebold-Mariano 檢定與 Bonferroni 多重檢驗校正。 核心訊息,「沒有任何視窗能在五段歷史中全部稱王」,維持不變 ,但各段冠軍對應與單期顯著性已更新;判讀規則改以事後說明(ex-post documentation)呈現;Feng & Zhang (2025) 一段引文因無法獨立驗證而移除。完整修正紀錄見文末「Corrigendum 索引」。

一個簡單但常被忽略的問題

當我們用統計模型預測「明天的市場波動會是多少」時,幾乎所有實務做法都需要先決定一件看似瑣碎、其實非常關鍵的事: 模型應該用過去多少天的資料來訓練? 

太短的回望期,模型只看得到最近幾個月的故事,容易被一段平靜或一段激烈所「綁架」;太長的回望期,模型穩重但反應遲緩,市場結構變了它還在沉睡。回望多少天,金融學界稱為「估計視窗(estimation window)」。

我們的研究曾經在 2023–2024 那段測試期間發現了一個讓人興奮的結果:把視窗從 2000 個交易日(約 8 年)縮短到 504 個(約 2 年),預測誤差明顯下降。當時的單期比較強度看起來相當高,幾乎可以宣告:「我們找到更好的設定了。」

但這個結論危險的地方在於:它只在 一段歷史 上被驗證過。

金融研究最容易踩的坑,就是把單一期間的好成績當成普遍真理。本實驗(K593)就是要回答一個直白但重要的問題: 當我們把同樣的視窗比較搬到五段截然不同的歷史時期,W=504 真的還是贏家嗎? 

答案出乎意料,也補上了一堂關於「研究誠實」的課。

實驗設計:用五段歷史交叉檢驗

我們選擇 SPY(追蹤美國 S&P 500 的 ETF)作為標的,使用 GJR-GARCH(1,1)-t 這一類業界與學界廣泛採用的波動率模型。為了避免被某段時期的特殊性誤導,我們刻意挑選了五個彼此不重疊、市場性格差異很大的測試期間:

測試期間市場特徵平均 VIX最高 VIX
2012–2013金融海嘯後的緩步復甦16.026.7
2014–2015油價崩跌、Taper Tantrum15.440.7
2016–2017川普行情、極低波動13.528.1
2020–2021新冠崩盤與爆量反彈24.582.7
2023–2024升息收尾、AI 行情16.238.6

每個期間我們都同時測試了四個視窗大小:W=252(約 1 年)、W=504(約 2 年)、W=1000(約 4 年)、W=2000(約 8 年)。為了控制估計成本同時保留調適彈性,每 21 個交易日(約一個月)重新擬合一次模型參數,且每日預測都以上一日的條件變異數遞迴更新 σ² 狀態(v2 修正點)。

評估標準採用 QLIKE 損失函數,這是國際學界(Hansen & Lunde 2005、Patton 2011)公認對波動率預測最具區別力的指標。 數值越低代表預測越準 。

本研究在分析時對判讀採用以下事後說明(ex-post documentation;非事前獨立預先註冊):

  • 若 W=504 在 5 段期間中贏 ≥4 段,且整體比較達顯著水準 → 推翻原本 W=2000 的結論
  • 若 W=504 只贏 ≤2 段 → 認定先前 2023–2024 的結果是巧合,繼續使用 W=2000
  • 若呈現 3:2 的混合局面 → 結論為「依市場環境而定,沒有普遍贏家」

註:原始版本將此判讀寫成「事前寫死」,但這份規則並未在 OOS 跑之前獨立 timestamped。我們在 v2 corrigendum 中如實將其改為事後說明,並在下方論及多重檢驗校正時補上 Bonferroni 結果。

五段歷史,五個不同的贏家

實驗跑完後的核心數字如下(QLIKE,越低越好):

期間W=252W=504W=1000W=2000該期最佳
2012–20131.464 1.459 1.4691.473W=504
2014–2015 1.449 1.4551.4631.490W=252
2016–20171.7931.805 1.780 1.803W=1000
2020–20211.4791.470 1.468 1.514W=1000
2023–2024 1.469 1.4781.4711.488W=252

第一眼看下去就知道: 沒有任何一個視窗能在五段歷史中全部稱王 。

把每段的冠軍加總:W=252 贏 2 次(OOS2、OOS5)、W=504 贏 1 次(OOS1)、W=1000 贏 2 次(OOS3、OOS4)、W=2000 從未稱冠。把名次平均起來看,最短的 W=252 平均第一(1.8 名)、W=1000 居次(2.0 名)、W=504 第三(2.4 名)、最長的 W=2000 墊底(3.8 名)。

接下來看「兩兩比較」。把 5 段期間 W=504 對 W=2000 的逐日預測誤差拿來逐一檢定(Diebold-Mariano 統計量,HAC 校正):

  •  2012–2013 :W=504 較佳(DM=−1.77,p=0.077,單期 10% 邊際顯著)
  •  2014–2015 :W=504 較佳(DM=−2.00,p=0.046,單期 5% 顯著)
  •  2016–2017 :W=2000 略勝,但未達顯著(DM=+0.10,p=0.923)
  •  2020–2021 :W=504 較佳,未達顯著(DM=−1.11,p=0.270)
  •  2023–2024 :W=504 較佳,未達顯著(DM=−0.46,p=0.648)

把五段期間的 2,508 個交易日全部攤平合併再做一次正式比較時,整體上 W=504 仍稍領先 W=2000(pooled DM=−1.73,p=0.083)。 這在標準 5% 門檻下未達顯著,僅勉強落入 10% 邊際區 。

 多重檢驗校正,重要的一步 :我們在這份比較中共做了 11 項檢定(5 段單期 504_vs_2000 + 6 組 pooled pairwise)。以 Bonferroni 嚴格控制族錯誤率(family-wise error rate, α=0.05/11≈0.00455), 沒有任何一項通過校正後的門檻 。

換句話說: 在校正了多重檢驗後,W=504 對 W=2000 的優勢無法宣稱統計上穩固 ;W=504 在多數時候 QLIKE 較低,但這種優勢不夠強到能主張它是普遍最佳。

市場環境會挑視窗嗎?

如果沒有「永遠最好的視窗」,那也許至少有「在某種市場下最好的視窗」?我們進一步把每段期間的 VIX 平均值與最佳視窗對應起來:

期間平均 VIX市場狀態最佳視窗
2012–201316.0平靜W=504(中短)
2014–201515.4平靜W=252(短)
2016–201713.5平靜W=1000(中長)
2020–202124.5偏高W=1000(中長)
2023–202416.2平靜W=252(短)

這張表呈現了一個有點尷尬的真相: 即使四段同樣是「平靜市」(VIX 都在 13–16 之間),最佳視窗也跟著換 。2014–2015 與 2023–2024 偏好最短的 W=252,2012–2013 偏好 W=504,2016–2017 卻偏好較長的 W=1000,差異並不能用「平靜或不平靜」這個簡單標籤解釋。

對 2020–2021 這段唯一的「偏高波動」期間,最佳是 W=1000,這倒不全違反直覺:新冠崩盤後資料分布劇變,但 W=252 過短會吃滿極端值雜訊,W=2000 又把太多失效的老資料拖進來,W=1000 落在中間取了平衡。

但若你以為「波動高就用較長視窗、波動低就用較短視窗」是個可靠的規則,那兩段平靜期裡 W=1000 反而最差就立刻打臉這個說法。

為什麼會這樣?

這個現象其實在波動率預測文獻中有跡可循:

  1.  參數穩定性 vs. 結構變化的拉鋸 。Hillebrand(2005)指出,當市場結構(如政策、波動性質)改變時,使用太長的歷史會讓估計參數出現「持續性偏差(persistence bias)」,模型誤以為過去的高黏性會持續,預測波動回歸速度失真。我們的數據也呈現這個現象:W=2000 在多數期間估出來的波動持續性都在 0.98–0.99,接近「永久記憶」,這在結構變動劇烈的時期會傷害預測。

  2.  短視窗的雜訊風險 。但反過來,W=252 只有 1 年資料,極端值或單一事件的權重被放大,估計參數本身波動很大。我們看到 W=252 在 OOS2、OOS5 勝出,卻在 OOS1、OOS3 名次落後。它的優勢與否很吃資料分布。

  3.  沒有純粹的「波動環境」 。VIX 平均值看似可以概括期間特徵,但同樣是 VIX 16,2012、2016、2023 的市場結構(利率環境、產業集中度、流動性)天差地別。模型偏好的視窗,會被這些 VIX 看不到的因素左右。

跨多種資產的視窗選擇研究在文獻中還在累積,但目前的共識仍是「依資產、依期間而定」,而非單一最佳值。這呼應了我們在 SPY 5 段 OOS 上看到的,即便限定單一資產,最佳視窗也會隨期間替換。

我們的決定:保留靈活性,承認不確定

依照前述判讀說明:W=504 贏 1/5、整體合併比較未達 5% 顯著、Bonferroni 校正後 0/11 通過 → 落入「依環境而定,沒有普遍贏家」的中間區。

這個結果驅動了三個調整:

  1.  不把 W=504 寫進核心方法 。雖然 2023–2024 的單期結果讓人興奮,但跨 5 期一驗證就知道它不是穩固的進步。我們維持 W=2000 作為主要設定,並在後續論文與系統中清楚揭露:W=504 在某些市場環境下會更佳,但缺乏統計上充分的普遍性。

  2.  把「視窗選擇」當成穩健性檢查項目 。任何主要結果都會在 W=504 與 W=2000 兩個版本下並列呈現,讓讀者自行判斷結論對視窗選擇的敏感度。如果一個結論只在某個視窗成立,那它本來就脆弱。

  3.  撰寫一條防錯規則 :未來任何「單期 OOS 結果」都不能直接推翻既有方法論。 最少要跨 3 段以上不重疊歷史交叉驗證、整體比較達顯著、且 OOS 內部勝場 ≥4/5 ,才考慮翻案。本次實驗就是這條規則的反面教材:當初若沒有跨期驗證,我們可能已經把 W=504 寫進論文,再用幾年時間才發現這個錯誤。

對讀者的啟發

這篇研究的數字本身重要,但它真正的價值是方法論的:

  •  單一期間的「顯著結果」不是真理,是線索 。在金融資料上,幾乎任何模型稍微調一下參數,都能在某段歷史上找到「顯著進步」。但如果這種進步換到另一段歷史就消失,它就不該被視為真實規律。

  •  跨期不重疊驗證是檢驗結論的基本要求 。我們選的五段歷史故意涵蓋了平靜、震盪、危機、復甦、結構變遷等不同性格,就是要逼模型暴露弱點。如果一篇研究只在最近三年的數據上做測試,它的可信度應該被打折。

  •  多重檢驗校正不可省略 。在跑 11 個檢定的場景下,任何單一 p<0.05 都可能只是隨機運氣。Bonferroni 把門檻拉到 0.00455 後,原本看似邊際顯著的 pooled 結果整個翻盤,這正是研究誠實的一環。

  •  承認「沒有萬靈丹」往往比「找到萬靈丹」更有價值 。在 SPY 這五段 OOS 的範圍裡,我們沒看到任何視窗能跨期穩定勝出。這個結果不華麗,沒有驚人的表現倍增,但它阻止我們把錯誤的結論寫進系統與論文中。對長期投資人來說,知道「這件事沒有單一最佳答案、要看市場狀態」比聽到「我們找到秘訣了」更值得信任。

接下來的方向

K593 完成後,我們把幾個延伸問題列入後續研究排程:

  • 是否能設計 自適應視窗 機制,讓模型在偵測到結構變化時自動切換視窗,而不是事先固定一個值?
  • 跨資產類別(個股、商品、外匯)是否會呈現不同的視窗偏好?
  • VIX 之外,是否有其他指標(如成交量、國債利差、信用利差)能更好地識別「該用哪個視窗」?

這些問題都會回到同一條核心紀律: 任何答案都必須在跨期、跨資產、跨制度上經得起檢驗,才能進入正式結論 。

資料來源

  •  價格資料 :yfinance,SPY 日線收盤價(2003-01-03 至 2026-03-27),共約 21 年。
  •  VIX 指標 :yfinance ^VIX 日線收盤值,作為市場環境分類依據。
  •  模型實作 :Python arch 套件之 arch_model,GJR-GARCH(1,1) with Student-t 分配,零均值、不重新縮放;v2 forecast engine 每日 refit 後遞迴更新條件變異數狀態。
  •  評估方法 :QLIKE 損失函數(Hansen & Lunde 2005),逐日比較採 Newey-West HAC 校正之 Diebold-Mariano 檢定;多重檢驗以 Bonferroni 校正(N=11,α=0.00455)。
  •  完整原始結果 :見實驗檔 experiments/k593/k593_window_cross_oos_v2_results.json(v2 修正版),原 v1 保留於 experiments/k593/k593_window_cross_oos_results.json 作為 audit trail。
  •  相關文獻 :Hillebrand (2005)、Hansen & Lunde (2005, Journal of Applied Econometrics)、Patton (2011, Journal of Econometrics)。
  •  實驗編號 :K593-v2(跨 OOS 視窗驗證 corrigendum),延伸自 K591(單期視窗敏感度測試),同系列防錯機制可追溯至 K474/K476(曾偵測出 53% 的單期偽陽性率)。

Corrigendum 索引

修正項目原始版本(v1)更新版本(v2)
Forecast engine每段視窗 refit 後凍結最後參數做整段預測每日 refit + σ² 遞迴更新狀態
DM 檢定對齊per-period 與 pooled 序列索引未對齊per_day_series 以日期完全對齊
5 段 QLIKEv1 數值v2 重跑數值(所有 cell 均較 v1 更低,因 bug 修正)
各段冠軍252×2、504×2、2000×1、1000×0252×2、1000×2、504×1、2000×0
Pooled DM(504 vs 2000)邊際顯著DM=−1.73、p=0.083(10% 邊際,5% 不顯著)
多重檢驗未做Bonferroni N=11,α=0.00455,0 項通過
判讀規則「我們事先就把判讀規則寫死」改為事後說明(ex-post documentation)
Feng & Zhang (2025)文中引述因無法獨立驗證而移除
適用範圍隱含跨資產推論限定 SPY 5 段 OOS 範圍
  •  觸發來源 :Codex review 2026-06-07 verdict FAIL(storage/reports/review_history/mile_faaddb06/codex_review_2026-06-07.md)。
  •  v2 實驗 :experiments/k593/k593_window_cross_oos_v2.pyexperiments/k593/k593_window_cross_oos_v2_results.json
  •  修正紀錄 :storage/reports/review_history/mile_faaddb06/corrigendum_note.md

本文為 VolPred 研究平台公開發表之研究紀錄。所有數據與檢定統計量皆可透過實驗檔重現;若您發現任何疑點,歡迎在平台留言或聯繫研究團隊。

詳情

資料來源
yfinance SPY 2003-2026, yfinance ^VIX

相關文章

先讀正式關聯,若無則使用標籤與主題相似度補齊