K1378:VIX 長期成分讓 SPY 波動預測勝過 GJR-GARCH,這個優勢在疫情窗外更穩定
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
做風險控管或選擇權定價的人,常要在兩種日頻波動模型之間取捨:只用報酬本身的 GJR-GARCH,或在 GARCH 之外加一個由 VIX 驅動的長期成分。後者多了一個外部變數要維護,值不值得,要看它的預測優勢從哪裡來。 如果優勢只來自 2020 年那種市場崩跌的少數日子,平常用它就只是多背一個依賴;如果優勢出現在一般日子,它才是日常可用的改進。
K1378 用 SPY 的樣本外一步預測回答這個問題:A4f 相對 GJR-GARCH 的 QLIKE 優勢,是否只是由 2020-03-01 至 2021-06-30 的廣義疫情窗驅動?
設計
- 模型 :A4f 把條件變異數拆成長期成分與短期 GARCH 成分的乘積,長期成分為 τ_t = θ0 + θ1·VIX²_{t−1}。基準為 GJR-GARCH(1,1)。兩者對當日的預測都只用前一日的報酬與 VIX。
- 資料 :SPY 與 ^VIX 日資料,2000-01-04 至 2026-05-18,共 6632 筆,輸入檔以 SHA-256 釘住。
- 樣本外 :2019-01-02 起逐日一步預測,共 1854 筆;滾動估計窗 2000 日,每 63 日重估,共 30 次。兩模型共同有效評分樣本 1852 筆,排除的兩天是日報酬平方近乎為零、QLIKE 無法定義的日子。
- 損失 :以日報酬平方為代理的 Patton QLIKE,actual/predicted − log(actual/predicted) − 1。
- 推論 :Diebold-Mariano 檢定,Bartlett-HAC 標準誤,每個評分期各自選 lag:取樣本數立方根向上取整,上限為樣本數的四分之一,下限為一。差額定義為 A4f 損失減 GJR 損失,t 為負代表 A4f 較好。報告門檻為 |t| > 3。
- 疫情窗的處理 :排除只作用於評分,疫情後的滾動估計窗仍含疫情期間的觀察值。這個設計回答的是「評分時拿掉疫情日,優勢還在不在」,不是「模型從沒看過疫情」的反事實。
結果一:排除疫情窗後,A4f 的優勢反而更明確
| 評分期 | 起訖 | n | A4f QLIKE | GJR QLIKE | A4f 損失低 | DM t | p | HAC lag |
|---|---|---|---|---|---|---|---|---|
| 全 OOS | 2019-01-02 至 2026-05-18 | 1852 | 1.3998 | 1.4795 | 5.4% | -4.37 | 1.3e-05 | 13 |
| 疫情前 | 2019-01-02 至 2020-02-28 | 292 | 1.5079 | 1.5767 | 4.4% | -2.64 | 0.0087 | 7 |
| 廣義疫情窗 | 2020-03-02 至 2021-06-30 | 337 | 1.3617 | 1.4737 | 7.6% | -1.34 | 0.18 | 7 |
| 疫情後 | 2021-07-01 至 2026-05-18 | 1223 | 1.3845 | 1.4579 | 5.0% | -4.92 | 9.7e-07 | 11 |
| 排除疫情窗 | 2019-01-02 至 2026-05-18 | 1515 | 1.4083 | 1.4808 | 4.9% | -5.60 | 2.5e-08 | 12 |

全樣本外 A4f 的平均 QLIKE 比 GJR 低 5.39%,DM t = -4.37。拿掉廣義疫情窗之後,剩下 1515 天的平均 QLIKE 為 1.4083 對 1.4808,DM t = -5.60,比全期更負。疫情窗本身的損失差百分比最大,為 7.6%,但 DM t 只有 -1.34,p = 0.18,未過門檻。
分期看,越過門檻的是疫情後(t = -4.92)。疫情前只有 292 天,t = -2.64,p = 0.0087;以傳統 5% 水準顯著,未達本實驗的 |t| > 3。所以證據支持「A4f 的優勢在疫情窗外可觀察到」,不支持「優勢特別來自疫情」。
結果二:疫情窗內的優勢集中在少數極端日
平均數相近,組成卻很不一樣。表二把每一期的損失差拆成最負的十天與其餘日子。
| 評分期 | 平均 | 中位數 | A4f 逐日勝率 | 總和 | 最負十日合計 | 其餘日合計 | 最小值 |
|---|---|---|---|---|---|---|---|
| 全 OOS | -0.0797 | -0.0070 | 53.0% | -147.6 | -83.7 | -63.9 | -18.12 |
| 疫情前 | -0.0687 | -0.0295 | 60.3% | -20.1 | -14.9 | -5.1 | -4.96 |
| 廣義疫情窗 | -0.1120 | 0.0868 | 37.4% | -37.7 | -66.1 | 28.4 | -18.12 |
| 疫情後 | -0.0734 | -0.0167 | 55.5% | -89.8 | -46.9 | -42.9 | -12.01 |
| 排除疫情窗 | -0.0725 | -0.0183 | 56.4% | -109.9 | -51.1 | -58.7 | -12.01 |

廣義疫情窗內,A4f 只在 37.4% 的日子損失較低,損失差中位數為 0.0868,符號對 A4f 不利。整期合計 -37.7 有利 A4f,完全來自最負的十天(合計 -66.1);其餘日子合計 28.4,方向反過來有利 GJR。單日最小值為 -18.12,也在這個窗口裡。在這段期間,A4f 靠少數日子大幅領先,其餘日子反而略輸。這十天各自對應什麼市場狀態,本實驗沒有逐日標記,不在此推論成因。
排除疫情窗後,A4f 的逐日勝率為 56.4%,中位數 -0.0183。最負十天合計 -51.1,其餘日子合計 -58.7,兩者同號且一般日子的貢獻更大。這是一個分布廣泛的優勢,不靠少數幾天撐起來。
這個對比也解釋了為什麼疫情窗的平均差最大、t 值卻最小:損失差被少數極端值主導,變異數大,平均數的標準誤跟著變大。
結果三:推論對 HAC lag 不敏感
| 評分期 | 落後零期 | 落後五期 | 落後十期 | 落後二十期 | HLN 修正 | 損失差一階自相關 |
|---|---|---|---|---|---|---|
| 全 OOS | -4.23 | -4.29 | -4.32 | -4.50 | -4.37 | -0.0228 |
| 疫情前 | -2.66 | -2.61 | -2.72 | -2.83 | -2.64 | -0.0049 |
| 廣義疫情窗 | -1.38 | -1.35 | -1.36 | -1.45 | -1.34 | -0.0025 |
| 疫情後 | -4.40 | -4.85 | -4.92 | -5.11 | -4.92 | -0.0616 |
| 排除疫情窗 | -5.05 | -5.48 | -5.58 | -5.78 | -5.60 | -0.0546 |
排除疫情窗的 t 從落後零期的 -5.05 到落後二十期的 -5.78,每個評分期的門檻判讀都不隨 lag 改變。損失差的一階自相關接近零(排除疫情窗為 -0.0546),HAC 修正對這組資料的數值影響不大;一步預測的損失差仍應以 HAC 標準誤推論,零自共變異數的設定在其他資料上不一定無害。HLN 小樣本修正列為診斷,同樣不改變判讀。
對模型選擇的意義
在 SPY 日頻一步預測上,加一個 VIX 驅動的長期成分,得到的是一般日子裡約百分之五的 QLIKE 改善,而且在疫情窗外更穩定。它不是只在崩跌時才發揮作用的危機保險。對需要每天產出波動預測的流程來說,多維護一個 VIX 輸入的成本,換到的是廣泛分布的改進。
反過來,若評估期恰好落在一段極端事件密集的窗口,平均損失差會被少數日子主導,DM 檢定也會因變異數膨脹而失去檢定力。看到一段期間「平均差很大但 t 不顯著」時,先拆成極端日與一般日,再決定這段期間的結果要怎麼讀。
限制
- 日報酬平方是噪音很大的變異數代理。Patton 的穩健性是條件不偏假設下的期望損失性質,不保證每個有限樣本。
- 單一資產、單一資料版本、單一模型對與一個事先指定的廣義疫情窗。五個評分期共用資料,不是五個獨立的確認性檢定,分期結果應讀成診斷。
- 排除只作用於評分,不能回答模型從未看過疫情資料時會怎樣。
- 「最負十天」的切法是描述性分解,不是事前登記的檢定。
資料與復現
- 實驗:K1378,非作者審查 PASS。
- 程式、輸入雜湊與結果檔都在
experiments/k1378/;表一與表三取自k1378_results.json,表二取自k1378_period_stats_results.json,數字皆由具名鍵讀出。 - 本文的表格與圖由
storage/drafts/k1378_research_charts.py從同樣兩份結果檔直接產生。