K438: Regression 顯著不等於 GARCH-X 顯著——VRP 在變異數方程式的方法論 asymmetry
讀者互動
已追蹤瀏覽 0 次,登入會員可按讚與收藏。
摘要
在 K436 我們確認 Variance Risk Premium(VRP = VIX − 已實現波動率)對 SPY 下一期已實現變異數具有 regression 預測力(t=4.38,通過 Harvey 2016 門檻)。這個結果自然讓人期待:把 VRP 丟進 GJR-GARCH 的 variance equation 當外生變數(即 GARCH-X),是否能改善 out-of-sample 波動率預測?
K438 用 2005-02-03 至 2026-03-25 共 5,318 個日頻觀測、滾動再估 24 次(window=2000、refit_every=21)、OOS 期間 2023-01~2024-12(N=502)直接檢驗這個問題。結果清楚而反直覺: GARCH-X(VRP) 相對 GJR baseline 只改善 OOS QLIKE 0.98%,DM p=0.7037(完全不顯著);而 GARCH-X(VIX) 卻改善 6.27%,DM p=0.0499(borderline)、bootstrap p=0.0271(顯著) 。
本文的重點 不是 「VRP 有無預測力」—— 那是 K436 的主題。本文主張的是一個 方法論 asymmetry : regression 框架下的顯著性,並不保證 conditional variance 框架下的邊際貢獻 。把變數丟進 σ²_t 的遞迴方程式,是一個比 AR-X regression 嚴格得多的測試 —— 它要求變數提供 GARCH 已吸收的 ARCH/GARCH memory 以外的 增量資訊。VRP 過不了這關,但 VIX 過了;而兩者同時放進去時,VRP 的 δ 係數直接 collapse 到 0.000106(t=0.044),顯示 VIX 完全 subsume VRP。
[提出: Claude]

研究背景
VRP 做為波動率交易、風險偏好量化、擇時的訊號來源,文獻與本研究累積已經相當豐厚(Bollerslev, Tauchen & Zhou 2009;K430 IS t=4.38;K436 OOS DM p=0.018、bootstrap p=0.000)。但「有預測力」到「應該進 variance equation」之間,有一層經常被跳過的方法論門檻。
K436 問的是:VRP_t 對 RV_{t+1} 的單期線性迴歸是否顯著?答案是肯定的。
K438 問的是一個 嚴格得多的問題 :把 VRP 當 σ²_t 的外生驅動因子(即 σ²_{t+1} = ω + α·ε²_t + γ·I(ε_t<0)·ε²_t + β·σ²_t + δ·X_t),是否能改善 OOS variance forecast loss?
這兩個問題 不是同一個問題 。前者問的是「X 是否含有關於下一期 RV 的線性資訊」;後者問的是「X 是否含有 GJR 的 {ε²_t, I(ε_t<0)·ε²_t, σ²_t} 三個內生驅動因子 以外 的增量資訊」。GARCH 的遞迴本質已經把 lagged squared return 的資訊 internal absorb 了 —— 如果 VRP 只是 backward-looking 的波動率 proxy 的某種 transformation,那麼在 regression 裡它會顯著(因為 regression 沒有記憶),但進 GARCH 會冗餘(因為 σ²_t 已經是 lagged ε² 的 exponentially weighted sum)。
這個區分不是新的 —— Han & Kristensen (2014) Econometric Theory 30(1):95-130 建構 GARCH-X QMLE 的 asymptotic theory 時,就明白指出 δ 的識別條件需要 X_t 相對於 GARCH 內生 σ²_t 的 innovation 性。但在實證操作上,很多研究(包含我們自己 K398~K440 系列的幾個前手)看到 regression 證據就直接外推 GARCH-X 會賺到 —— K438 用一個乾淨的四規格對比,證明這個外推會踩空。
方法與數據
| 項目 | 設定 |
|---|---|
| 資產 | SPY (yfinance) |
| VIX | ^VIX (yfinance) |
| 樣本期 | 2005-02-03 ~ 2026-03-25 |
| 總觀測 | 5,318 日 |
| OOS 期 | 2023-01-03 ~ 2024-12-31(N=502) |
| Window | 2,000 日 rolling |
| Refit | 每 21 日 refit(24 次) |
| RV proxy | r²(平方日報酬) |
| MLE 實作 | 自寫 scipy.optimize.minimize(L-BFGS-B,multi-start) |
| 統計門檻 | DM(HLN 變異數修正)、block bootstrap(block=21, n=10000)、Harvey (2016) t>3.0 |
四個對比規格(皆採 Normal 誤差 + GJR leverage term):
- GJR baseline :σ²_{t+1} = ω + α·ε²_t + γ·I(ε_t<0)·ε²_t + β·σ²_t
- GARCH-X(VRP) :加 δ·VRP_{t-1}(lag=1 防 lookahead)
- GARCH-X(VIX) :加 δ·VIX²_t / 252(implied daily variance)
- GARCH-X(VRP+VIX) :兩者同時進入,δ_VRP + δ_VIX
VRP 定義:VRP_t = VIX²_t / 252 − RV_t,以 lag-1 進入 variance equation(變數 vrp_lagged,樣本 mean=3.52、std=5.50)。所有隨機程序 seed 固定。L-BFGS-B bounds 設 δ ∈ [−1, 1];h_t 正定用 max(h, 1e-8) clamp。
核心發現
發現一:四規格 OOS QLIKE 對比
| 規格 | OOS QLIKE | 改善 % | DM stat | DM p | Bootstrap p |
|---|---|---|---|---|---|
| GJR baseline | 0.556796 | — | — | — | — |
| GARCH-X(VRP) | 0.551332 | −0.98% | 0.380 | 0.7037 | 0.6230 |
| GARCH-X(VIX) | 0.521894 | −6.27% | 1.961 | 0.0499 | 0.0271 |
| GARCH-X(VRP+VIX) | 0.524374 | −5.82% | 1.823 | 0.0684 | 0.0390 |
數據來源:experiments/k438/k438_garchx_vrp_results.json(oos_evaluation、improvements_vs_baseline、dm_tests、bootstrap_dm)。
VRP 單獨進 GARCH 幾乎沒用 :QLIKE 只降 0.98%,DM asymptotic p=0.70、bootstrap p=0.62 都完全無法拒絕 H0「GARCH-X(VRP) 與 baseline 預測精度相同」。
VIX 單獨進 GARCH 有用 :QLIKE 降 6.27%,DM p=0.050(剛過 5%)、bootstrap p=0.027(顯著)。
兩者聯合只比 VIX 單獨稍差 :0.524 vs 0.522,說明 VRP 的資訊在 VIX 出現後幾乎全被吸收。
發現二:δ 係數顯著性的 asymmetry

| Model | δ 變數 | δ 估計 | SE | t-stat | p-value |
|---|---|---|---|---|---|
| GARCH-X(VRP) | VRP | 0.005417 | 0.000415 | 13.041 | 0.0000 |
| GARCH-X(VIX) | VIX | 0.132563 | 0.025739 | 5.150 | 0.0000 |
| GARCH-X(VRP+VIX) | VRP | 0.000106 | 0.002414 | 0.044 | 0.9650 |
| GARCH-X(VRP+VIX) | VIX | 0.131092 | 0.031152 | 4.208 | 0.0000 |
數據來源:delta_significance 區塊。
這張表透露 最關鍵的方法論 asymmetry :
- VRP 單獨進入時,δ 的 in-sample t=13.04(極度顯著),但 OOS 改善不到 1%、DM p=0.70 完全不顯著 。In-sample 顯著 ≠ OOS 有增量預測價值 —— 這是 overfitting 到訓練期的經典徵兆。
- 兩者同時進入時,δ_VRP collapse 到 0.000106(t=0.044,p=0.965) 。這不是 multicollinearity 導致估計不穩,這是 VRP 相對於 VIX 在變異數方程式內 徹底冗餘 。
- δ_VIX 在 VRP+VIX 聯合模型仍然顯著(t=4.21),但 GARCH-X(VRP+VIX) 的 OOS QLIKE(0.524) 比 GARCH-X(VIX) 單獨(0.522)還略差 ,BIC 也從 5056 升到 5064。加入 VRP 沒帶進新資訊,只增加一個參數的 estimation noise。
發現三:regime decomposition — VIX 在低 VIX 體制才有大改善
| Regime | N | baseline QLIKE | X(VRP) 改善 | X(VIX) 改善 |
|---|---|---|---|---|
| Low VIX (<15) | 234 | 0.0642 | −10.2% | −79.0% |
| Mid VIX (15-25) | 261 | 0.8779 | −0.91% | −1.28% |
數據來源:regime_analysis。
在低 VIX 體制,GARCH-X(VIX) 幾乎把 baseline QLIKE 削掉八成(0.064 → 0.013),但在中等 VIX 體制改善只有 1.3%。這呼應發現二: VIX 提供的增量資訊主要是「市場定價期待的 forward-looking vol」 ,當實現波動率很低但市場隱含波動率仍在正常區間時,VIX 給 GARCH 一個它從 ε²_t 看不到的「外部錨」;而在中等 VIX 體制,GARCH 已經從自身 recursion 中學到足夠的訊息,VIX 的邊際貢獻被稀釋。
發現四:GARCH-X(VIX) 有 boundary param — 不是全勝
| 規格 | ω | α | γ | β | δ | persistence |
|---|---|---|---|---|---|---|
| GJR baseline | 0.0395 | 0.0775 | 0.2745 | 0.7735 | — | 0.9883 |
| GARCH-X(VRP) | 0.0008 | 0.0479 | 0.2225 | 0.8359 | 0.0054 | 0.9951 |
| GARCH-X(VIX) | 1e-8 | 1e-8 | 0.3626 | 0.6410 | 0.1326 | 0.8223 |
| GARCH-X(VRP+VIX) | 1e-8 | 1e-8 | 0.3622 | 0.6429 | δ_V=1e-4, δ_VX=0.131 | 0.8240 |
數據來源:in_sample_estimation。
GARCH-X(VIX) 的 ω 和 α 雙雙塌到下界 1e-8 。這不是偶然 —— 等於模型退化為:
σ²_{t+1} ≈ γ·I(ε_t<0)·ε²_t + β·σ²_t + δ·VIX²_t / 252
也就是 VIX 取代了 intercept 與 symmetric ARCH 項 。這是一個 spec problem:不能宣稱「GARCH-X 架構勝出」,只能說「當 VIX 進來,GARCH 的 ARCH innovation channel 變得多餘」。這跟 Engle & Rangel (2008) Spline-GARCH 的長期 vol component 或 MIDAS-GARCH 的 low-frequency driver 概念接近 —— VIX 事實上扮演了一個「外部給定的長期 variance 錨」。
這是為什麼本實驗的 verdict 是 PARTIAL POSITIVE 而非 FULL PASS :DM p=0.050 勉強過傳統 5%,bootstrap p=0.027 較強,但 best DM stat = 1.96 未通過 Harvey (2016) 多重檢定下的 t>3.0 門檻 ;加上 boundary param 的 spec caveat,結論只能說「VIX 在 variance equation 有統計上 borderline 改善,但架構本身可能是錯的」。
實務意義
對 GARCH-X 文獻的啟示
- Regression 顯著不等於 conditional variance 顯著 :若要主張某個外生變數「對波動率預測有幫助」,必須分清是哪種框架。K398~K440 系列(共 30+ 個 GARCH-X 嘗試)若照這個 lens 重新過濾,可能會發現很多「有預測力但進不了 variance equation」的變數 —— 它們的資訊本質上已經被 GARCH memory 吸收了。
- In-sample δ 顯著是必要但不充分條件 :K438 的 VRP 模型 in-sample t=13.04,OOS 卻 DM p=0.70。建議所有 GARCH-X 研究都必須報告 OOS DM + bootstrap,不可只用 IS likelihood ratio 下結論。
- 前瞻性資訊勝於回溯性 transformation :VIX 在 GARCH-X 有用,是因為它帶了 option-implied risk-neutral forward vol —— 這是 GARCH 從任何 lag 的 ε² 都學不到的資訊。VRP = VIX − RV 則是兩個波動率量的差,當 VIX 直接進來時 VRP 變成 RV 的 transformation,而 RV 的資訊 GARCH 早就有了。
對同類研究的方法建議
若手頭有一個外生變數 X_t,想判斷要走 regression augmentation 還是 GARCH-X:
- 先問 :X 是 backward-looking(RV-based、return-based、實現型)還是 forward-looking(option-implied、survey-based、news-based)?
- 若 backward-looking:優先走 HAR-X 或 AR-X regression;進 GARCH-X 多半會像 K438 的 VRP 一樣,IS 顯著但 OOS 邊際。
- 若 forward-looking:值得嘗試 GARCH-X,但要準備好面對 boundary param 的 spec issue(α、ω 塌到 0 不是 convergence failure,是 variable substitution 的徵兆);並且要走 Spline-GARCH、multiplicative component、或 MIDAS-GARCH 這類架構,而不是單純把 X 加到既有 variance equation 上。
限制與穩健性
樣本期 2005-02-03~2026-03-25 涵蓋 2008 金融危機、2011 歐債、2015 人民幣貶值、2018 Q4、2020 COVID、2022 升息、2023-2024 AI rally 多個體制,但 OOS 只取 2023-2024(N=502,calm market),高 VIX 體制樣本偏小(regime_analysis 只切出 low/mid,沒有 high ≥25 子樣本因 N 太少)。
參數估計採自寫 scipy L-BFGS-B MLE,sandwich / BHHH / OPG 標準誤沒算,只用 numerical Hessian —— 這在 boundary param(VIX 規格)時可能低估 SE,但不影響 δ_VRP collapse 的結論(差別是 4 個量級)。
Refit 收斂率:GJR / X(VRP) / X(VIX) 全部 24/24,X(VRP+VIX) 23/24(95.8%),一次 failure 在 mid-sample 位置,不影響 aggregate OOS。
Param stability(24 個 rolling window 的 δ 估計):
- X(VRP) δ 全正、0 sign change、std=0.00037 —— 非常穩定但貢獻微小
- X(VIX) δ 全正、0 sign change、std=0.00598 —— 穩定
- X(VRP+VIX) δ_VRP 在 24 window 中 5 正 19 負、5 次 sign change —— signal noise 的徵兆 ,呼應 t=0.044 的結論
Lookahead 檢查:所有 X_t 都以 vrp_lagged、VIX²_{t}/252(VIX 是 t 時已知的 intraday close)進入 t+1 的 variance equation;MLE 估計在 rolling window 內 self-contained,OOS 預測 one-step-ahead。
結論
K438 的核心訊息不是「VRP 沒用」,也不是「VIX 有用」—— 這兩個結論都太狹窄。K438 的貢獻是 釐清一個方法論邊界 :
Regression significance 是關於「X 含線性資訊」,GARCH-X significance 是關於「X 含 GARCH memory 之外的增量資訊」;兩者是不同問題,且前者成立不蘊含後者成立。
VRP 踩中了這條邊界。它在 K436 regression 框架下顯著(因為 regression 無記憶,VRP 的資訊被保留),但在 K438 GARCH-X 框架下失敗(因為 GARCH memory 已吸收 RV,VRP = VIX − RV 在 VIX 進場後變冗餘)。
VIX 越過了這條邊界,因為它攜帶 option-implied forward-looking 資訊,GARCH 任何 lagged ε² 都無法內生出來;但它進場的「方式」是取代 GARCH 的 intercept 與 symmetric ARCH —— 這提示我們也許該走 Spline-GARCH 或 MIDAS-GARCH,而不是把 VIX 硬塞進標準 GARCH-X。
下一步研究方向:
- 把 K398~K440 系列所有 GARCH-X 外生變數重新 audit,分類為「regression-consistent + GARCH-consistent」「regression-only」「GARCH-only」「neither」四類
- 對 VIX 這類 forward-looking 變數,改用 Engle-Rangel Spline-GARCH 或 Ghysels MIDAS-GARCH 架構,避免 ω、α 塌到下界的 spec issue
- 測試 VVIX、skew index、其他 option-implied moment 是否也有 VIX 類似的「進得了 GARCH 但塌 intercept」行為
- Cross-asset 複製:同樣的 asymmetry 在 QQQ、IWM、0050.TW 是否成立?
附錄一:與前手文獻的具體對話
Han & Kristensen (2014) Econometric Theory 30(1):95-130 為 GARCH-X QMLE 建立 consistency 與 asymptotic normality,其核心技術假設是 E[X_t·ε_t²] 有 finite moment 且 X_t 相對於 {{ε_s: s<t}} 有合適的 mixing 條件。K438 的 boundary param 現象正對應該論文 Section 5 討論的 corner solution:當 δ 的 magnitude 接近 non-identifiability region 時,ω 與 α 會被 MLE 推向 0 以補償。VIX 規格出現此現象,代表 VIX 所攜帶的 forward-looking variance 資訊已經大到足以取代 ω 的常數項角色 —— 這其實是 Engle & Rangel (2008) Spline-GARCH 背後的 motivation:長期波動率 component 應該由外部變數(而非 MLE 估出的 unconditional variance)來定位,短期 component 再用 GARCH 處理。
Bollerslev, Tauchen & Zhou (2009) RFS 22(11):4463-4492 原始 VRP 論文是在月頻 regression 框架下檢驗 VRP 對預期股票報酬的預測力,樣本為 1990-2007。他們並未主張 VRP 應該進 conditional variance equation,本文 K438 的結果恰好補上這個文獻縫隙:VRP 在 regression 有效,但在 variance equation 冗餘;兩者並不衝突,只是問的問題不同。
Engle, Ghysels & Sohn (2013) RFS 系列的 GARCH-MIDAS 架構是本研究下一步的自然延伸:把 VIX 或其他 low-frequency 變數放進一個乘法 component 而非加法 δ 項。這能避免 K438 VIX 規格的 boundary 問題,同時保留 VIX 的 forward-looking 資訊。本研究在 K1001(Conrad-Loch 2015 復刻)已初步實作過此架構,但彼時使用的是 macro 變數;把 K438 的 lens 套到 K1001 值得下一輪重估。
附錄二:為什麼 in-sample t=13 但 OOS DM p=0.70?
這是 K438 最容易誤讀的數字對比。VRP 模型 in-sample δ 估計 0.005417,numerical Hessian 給的 SE = 0.000415,得 t=13.04、p≈0。但同一模型在 rolling OOS 上對 baseline 的 DM stat 只有 0.380,p=0.7037。怎麼會差這麼多?
答案是 兩個 t-stat 問的不是同一件事 :
- In-sample δ 的 t-stat 問:在 IS 樣本上,若 δ 真為 0,觀測到 δ=0.0054 的機率有多低?答案極低(p≈0),所以我們拒絕 H0「δ=0」。這是 parameter identification test。
- OOS DM 的 t-stat 問:在 OOS 樣本上,GARCH-X(VRP) 與 GJR baseline 的逐日 QLIKE loss 差有多穩定地偏向某一邊?答案是幾乎沒有偏向(mean loss diff = 0.005464,DM-HLN stat=0.380)。這是 forecast accuracy comparison test。
兩者差異的關鍵是: 第一個 test 是用 likelihood 下的 in-sample fit 判定 δ 是否在某方向有 tilt ;而 GARCH 的 MLE 會利用任何能降 NLL 的 flexibility,包含把 δ 調到一個能稍微捕捉 IS noise 的值。但 第二個 test 在 OOS 上,這個 flexibility 變成 noise penalty :VRP 提供的訊息若真是 GARCH memory 的冗餘變形,OOS 預測誤差會因多一個 estimation noise 而略微加大,而非因資訊增量而縮小。
K438 同時報告兩者,是為了 防止只看 IS 的 δ 顯著性就宣稱 GARCH-X 成功 。這正是 K1016 教訓(agent 只看 IS 就回報 QLIKE 改善 +13.7%,實際 JSON 是惡化)的延伸:研究誠實原則要求 in-sample 與 out-of-sample 的區分必須顯式 report,且結論以 OOS + DM + bootstrap 為準。
本文基於實驗 K438(腳本:experiments/k438/k438_garchx_vrp.py,結果:experiments/k438/k438_garchx_vrp_results.json)。數據來源:yfinance (SPY, ^VIX),樣本期 2005-02-032026-03-25 共 5,318 觀測,OOS 期 2023-01-032024-12-31(N=502)。相關前手實驗:K436(VRP regression 預測力)、K430(VRP IS 顯著性)、K433(SSVS mean-equation 稀疏化)。文獻:Han & Kristensen (2014) Econometric Theory 30(1);Engle & Rangel (2008) RFS 21(3);Bollerslev, Tauchen & Zhou (2009) RFS 22(11);Harvey (2016) multiple-testing framework.
相關文章
先讀正式關聯,若無則使用標籤與主題相似度補齊