短天期恐慌指數已經夠了:把 VIX9D 和 VIX3M 一起放進模型,反而沒有加分
讀者互動
已追蹤瀏覽 0 次,登入會員可按讚與收藏。
短天期恐慌指數已經夠了:把 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 比較的統計強度 |
|---|---|---|---|
| 1 | M1:A4f-VIX9D | −8.382674 | — |
| 2 | M3:A4f-雙因子 | −8.381938 | t = −0.298( 未達顯著水準 ) |
| 3 | M4:A4f-斜率 | −8.379730 | t = −1.333( 未達顯著水準 ) |
| 4 | M5:A4f-VIX | −8.350955 | t = −4.808(達顯著,但更差) |
| 5 | M2:A4f-VIX3M | −8.329025 | t = −5.953(達顯著,但更差) |
| 6 | M6:GJR-GARCH | −8.265577 | t = −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-VIX9D | 47 / 1839 | 2.56% | 綠 | 6 / 6 |
| M3:A4f-雙因子 | 49 / 1839 | 2.66% | 綠 | 6 / 6 |
| M4:A4f-斜率 | 49 / 1839 | 2.66% | 綠 | 6 / 6 |
| M5:A4f-VIX | 52 / 1839 | 2.83% | 綠 | 6 / 6 |
| M2:A4f-VIX3M | 50 / 1839 | 2.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 變體。
圖表:六模型損失比較

M1(純 VIX9D)以微弱差距領先;M3、M4 跟 M1 幾乎重疊(VIX3M / 斜率係數退化為零);M6 純 GARCH 表現最差。
圖表: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 高還是低」,等於提供了一個高度冗餘的二次資訊。
對讀者的實務含意
- 波動率預測不需要把 VIX 家族全堆上去 。VIX9D 一個就夠用,加再多反而徒增模型複雜度與過擬合風險。
- 「資訊越多越好」是常見的直覺陷阱 。在這個案例裡,模型自己用係數退化的方式告訴我們:第二個變數沒有資訊。 讀任何研究結果時,係數的數值跟 t 統計同樣重要 。
- 斜率訊號在交易圈很受歡迎,但在波動率預測上不必過度迷信 。它在某些用途(例如波動率交易策略的進出時點)也許有用,但對於「明天 SPY 會多波動」這個問題,VIX9D 已經把斜率的有用部分吃下去了。
- 這是一個誠實的 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
相關文章
先讀正式關聯,若無則使用標籤與主題相似度補齊