← Research Feed
一般讀者2026/05/17 上午07:58

短天期恐慌指數已經夠了:把 VIX9D 和 VIX3M 一起放進模型,反而沒有加分

期限結構波動率預測恐慌指數風險模型資料診斷

讀者互動

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

分享到:LINEFacebookX / Twitter

短天期恐慌指數已經夠了:把 VIX9D 和 VIX3M 一起放進模型,反而沒有加分

一句話結論

我們在 SPY(追蹤 S&P 500 的 ETF)上做了一個直覺的延伸實驗:既然 9 天版本的恐慌指數(VIX9D)已經被先前研究證明比傳統 30 天 VIX 更會預測短期波動,那如果把 3 個月版本的 VIX3M 也一起放進模型,是不是會更厲害?答案出乎意料地乾脆: 沒有更厲害,VIX3M 完全派不上用場 。

為什麼要做這個實驗

恐慌指數家族其實有好幾個成員,差別在於「看多遠」:

  •  VIX9D :用未來 9 天的 S&P 500 選擇權算出來的隱含波動率
  •  VIX :傳統的 30 天版本(你在新聞看到的那個)
  •  VIX3M :90 天(3 個月)版本

直覺上會這樣想:短天期(VIX9D)抓得到當下的緊張情緒;中天期(VIX3M)反映市場對未來幾個月的看法。如果把兩個放在一起,模型理論上能同時看到「現在多怕」和「之後預期多怕」,應該比只看一個更全面。

更進一步,我們可以把兩者相除做出 期限結構斜率 (VIX9D / VIX3M − 1)。當這個斜率為負(VIX9D < VIX3M),代表市場預期未來會更不安;為正則代表現在比未來更恐慌(通常出現在突發崩盤時)。這個訊息在交易圈很受重視,那它對波動率預測有沒有幫助?

這就是 K1015 想要嚴格回答的問題。

我們怎麼做

我們用 SPY 從 2011 年初到 2026 年 4 月、總共 3,839 個交易日的資料,把資料切成兩段:

  •  訓練樣本 :2011-01 到 2018-12(用來估計模型參數)
  •  真正用來評分的樣本 :2018-12 到 2026-04,共  1,839 個交易日 (樣本外測試)

樣本外測試的意思是:模型完全沒看過這些日子,要靠它每天「先預測明天的波動」,再把預測值跟實際發生的波動比對。我們每 63 個交易日(約 3 個月)重新估計一次參數,避免模型參數過時。

我們比較了 6 個版本的模型:

模型設定簡述
M1:A4f-VIX9D只用 VIX9D 當外生因子對照組(先前研究的優勝者)
M2:A4f-VIX3M只用 VIX3M看 VIX3M 單獨多強
M3:A4f-雙因子VIX9D + VIX3M 一起放 本次主角 
M4:A4f-斜率VIX9D + 期限結構斜率 本次主角 #2 
M5:A4f-VIX只用傳統 30 天 VIX經典參照
M6:GJR-GARCH不用任何 VIX,純粹靠歷史報酬純技術派基準

所有模型的殘差分佈都用 Student-t(厚尾),這是 SPY 報酬非常公認的做法(峰度高達 13.83)。

主要結果一:VIX3M 加進去等於沒加

下面是 6 個模型在樣本外的 QLIKE 損失(負數越小代表預測越準;這是 Patton 2011 推薦的、對代理變數穩健的衡量指標):

排名模型QLIKE跟 M1 比較的統計強度
1M1:A4f-VIX9D −8.382674 
2M3:A4f-雙因子−8.381938t = −0.298( 未達顯著水準 )
3M4:A4f-斜率−8.379730t = −1.333( 未達顯著水準 )
4M5:A4f-VIX−8.350955t = −4.808(達顯著,但更差)
5M2:A4f-VIX3M−8.329025t = −5.953(達顯著,但更差)
6M6:GJR-GARCH−8.265577t = −6.127(達顯著,但更差)

兩個一起用的雙因子模型(M3)和斜率模型(M4),預測準度跟單獨用 VIX9D(M1)的差距小到無法區分。我們套用 嚴格統計(2016)的嚴格統計檢驗門檻(統計強度 > 3.0),M3 的差異統計強度只有 0.298、M4 是 1.333, 遠遠不到判定有差異的標準 。

主要結果二:模型自己直接把 VIX3M 的權重歸零

最有趣的證據在參數本身。當我們強迫模型同時擬合 VIX9D 和 VIX3M 的權重(M3),最後估計出來的結果是:

  • VIX9D 的係數:0.0018
  • VIX3M 的係數: 0.0000 

把斜率版本(M4)拿來看也一樣:

  • VIX9D 的係數:0.0017
  • 斜率的係數: 0.0000 

這叫「參數退化」。最佳化演算法在搜尋最能配適資料的參數組合時, 自己決定 VIX3M 和斜率不要也罷 ,把它們的權重自動降到零。換句話說,我們 用最寬鬆的方式給 VIX3M 表現機會 ,它仍然交了白卷。

主要結果三:但 VIX9D 自己很猛

雖然這次的兩個主角(雙因子、斜率)失敗了,但實驗順便驗證了一件事: VIX9D 確實比其他成員更會預測 。

  • VIX9D(M1)vs 傳統 30 天 VIX(M5):統計強度 t = −4.808, 達顯著水準 
  • VIX9D(M1)vs VIX3M(M2):統計強度 t = −5.953, 達顯著水準 
  • VIX9D(M1)vs 純 GARCH(M6):統計強度 t = −6.127, 達顯著水準 

這三個都遠超過 嚴格統計 嚴格門檻。VIX9D 對短期波動的訊息含量,比 VIX 和 VIX3M 都更高。這跟 K1004 之前的發現一致。

主要結果四:風險量化也對得起來

光看點預測還不夠。對投資人和風險經理而言,更重要的問題是:「 極端虧損會不會比預期更頻繁發生? 」我們算了 2.5% 的 Value-at-Risk(VaR,在險價值)和 ES(預期短缺),看模型給的風險邊界是不是被市場反覆突破:

模型違反次數違反率巴塞爾燈號綜合分數
M1:A4f-VIX9D47 / 18392.56% 6 / 6 
M3:A4f-雙因子49 / 18392.66%6 / 6
M4:A4f-斜率49 / 18392.66%6 / 6
M5:A4f-VIX52 / 18392.83%6 / 6
M2:A4f-VIX3M50 / 18392.72%6 / 6
M6:GJR-GARCH 62 / 1839  3.37%  4 / 6 

預期違反率是 2.5%。所有 A4f 系列(含外生 VIX 因子)都很接近這個目標,6 項風險檢驗全部通過。 只有純 GARCH 模型 M6 違反次數明顯偏多 (3.37% 高於 2.5%),有兩項檢驗未通過——這也再次顯示,把 VIX 家族訊息加進來確實會幫到極端風險的校準,無論你選哪個 VIX 變體。

圖表:六模型損失比較

六個模型在樣本外的 QLIKE 損失比較

M1(純 VIX9D)以微弱差距領先;M3、M4 跟 M1 幾乎重疊(VIX3M / 斜率係數退化為零);M6 純 GARCH 表現最差。

圖表:VaR 突破時間軸

A4f-VIX9D 模型的 2.5% VaR 違反時點

紅點為 VaR 突破日。觀察期橫跨 2018-12 到 2026-04,包含 COVID 崩盤(2020-03)、2022 升息週期、2024-2025 多次回檔。違反密度與 2.5% 預期均勻一致。

為什麼 VIX3M 沒幫上忙?

這個結果並非完全意外。它跟我們先前在另一個實驗(K879)的發現吻合: VIX 與 VIX3M 之間的回歸速度(reversion)並沒有顯著的訊息含量 。短期恐慌之所以能預測波動,是因為它直接量化了「現在這一刻」市場參與者願意付多少錢買保險。3 個月的 VIX3M 平滑了太多,當 VIX9D 已經把訊號吃掉後,VIX3M 不再帶來額外的東西。

期限結構斜率失敗也是同樣邏輯:當你已經知道 VIX9D,再告訴模型「VIX9D 比 VIX3M 高還是低」,等於提供了一個高度冗餘的二次資訊。

對讀者的實務含意

  1.  波動率預測不需要把 VIX 家族全堆上去 。VIX9D 一個就夠用,加再多反而徒增模型複雜度與過擬合風險。
  2.  「資訊越多越好」是常見的直覺陷阱 。在這個案例裡,模型自己用係數退化的方式告訴我們:第二個變數沒有資訊。 讀任何研究結果時,係數的數值跟 t 統計同樣重要 。
  3.  斜率訊號在交易圈很受歡迎,但在波動率預測上不必過度迷信 。它在某些用途(例如波動率交易策略的進出時點)也許有用,但對於「明天 SPY 會多波動」這個問題,VIX9D 已經把斜率的有用部分吃下去了。
  4.  這是一個誠實的 null result(無顯著效果) 。我們沒有強行宣稱雙因子有用,因為資料沒有支持那個說法。在量化研究中, 忠實報告 null 結果跟報告正面發現同等重要 ——它幫助後續研究者不要再走同一條死路。

重要限制

  • 本實驗只在 SPY 上做,沒有跨資產驗證。在個股、其他指數 ETF、或台股上是否會有不同結果是個開放問題。
  • 樣本外期間(2018-12 到 2026-04)涵蓋 COVID、2022 升息、2024 AI 行情,但沒有 2008 金融海嘯。極端市場結構轉換下 VIX3M 是否會「醒過來」值得在更長樣本驗證。
  • 期限結構斜率我們是用 (VIX9D / VIX3M − 1)² 進入模型,平方掉了正負號的差別。改用「正斜率/負斜率」二分變數的版本還沒測試,這是後續實驗的方向。

資料來源

  •  價格資料 :S&P 500 ETF(代號 SPY),來源 yfinance,2011-01-03 至 2026-04-09,共 3,839 個交易日
  •  波動率指數 :CBOE 發佈的 VIX9D、VIX、VIX3M(同樣透過 yfinance 取得)
  •  完整實驗檔案 :experiments/k1015/
  •  模型程式碼 :k1015.py(含種子 42、樣本外滾動視窗 2000、refit 頻率 63 日)
  •  結果檔 :k1015_results.json(QLIKE、兩模型比較顯著 比較、VaR/ES 回測完整輸出)

方法論依據

  • Engle & Rangel(2008)— Spline-GARCH 雙成份波動率模型
  • Patton(2011)— QLIKE 對代理變數穩健的損失函數
  • Kupiec(1995)/ Christoffersen(1998)— VaR 覆蓋率檢驗
  • Engle & Manganelli(2004)— DQ 動態分位數檢驗
  • Acerbi & Szekely(2014)— ES 回測 Z-statistics
  • 嚴格統計(2016)— 多重檢驗下的嚴格統計強度門檻 統計強度 > 3.0

結語

把更多看似有資訊的變數塞進模型,是研究中常見的誘惑。這次實驗給的答案非常乾淨: 短天期恐慌指數 VIX9D 已經把市場短期不安的訊息榨乾了 ,同家族的 VIX3M 和期限結構斜率不再有額外故事可講。對於關心 SPY 風險預測的讀者,這既是一個簡化模型的好理由,也是一個提醒——統計檢驗的角色,正是要替我們守住「真有效」與「看起來像有效」之間的那條線。

詳情

experiment_refs
K1015

相關文章

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

📄
把六個總體變數一次丟進貝氏選模型,結果它什麼都沒選:聯合估計再次確認 GARCH 自己就夠了
# 把六個總體變數一次丟進貝氏選模型,結果它什麼都沒選:聯合估計再次確認 GARCH 自己就夠了 ## 一句話結論 我們把六個常被引用的「外部解釋變數」——VIX、VIX9D、VIX3M、期限利差、聖路易聯儲金融壓力指數、20 日實現方差——同時放進一個貝氏 GARCH-X 變異數方程,讓貝氏選模型機制(SSVS)自己決定要留下哪幾個。結果是:**它一個也沒留**。在 10,000 次 MCM...
📄
預測波動率該回望多久?五段歷史告訴我們:沒有萬靈丹
# 預測波動率該回望多久?五段歷史告訴我們:沒有萬靈丹 ## 一個簡單但常被忽略的問題 當我們用統計模型預測「明天的市場波動會是多少」時,幾乎所有實務做法都需要先決定一件看似瑣碎、其實非常關鍵的事:**模型應該用過去多少天的資料來訓練?** 太短的回望期,模型只看得到最近幾個月的故事,容易被一段平靜或一段激烈所「綁架」;太長的回望期,模型穩重但反應遲緩,市場結構變了它還在沉睡。回望多少天,金...
📄
VIX 期限結構斜率能預測波動,卻換不到交易 alpha:一個誠實的失敗紀錄
# VIX 期限結構斜率能預測波動,卻換不到交易 alpha:一個誠實的失敗紀錄 ## 為什麼要寫這一篇 研究路徑上最常見的陷阱之一,是看到一個訊號在「預測波動率」上有統計上的微小優勢,就直接假設它能轉化成「可交易的超額報酬」。這篇文章想分享一個我們親自踩到坑、然後完整驗證、最後得到 **NULL RESULT** 的案例:用 VIX 與 VIX3M 的比值(VIX 期限結構斜率)做擇時。 ...