波動率預測不是把指標愈疊愈多就會愈準
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
做投資研究的人很容易有一個衝動:再加一個指標、再多一層結構、再換一個比較新的做法,預測應該就會更準。
這篇用 K1379 的四種方法檢查這個直覺:在 SPY 的隔日波動預測上,多一層結構或多一個指標,是否真的換到更低的預測誤差。
比較使用 2019-01-02 到 2026-05-18 的共同有效樣本,共 1,852 個交易日 。四種方法都只能使用前一日以前可見的資訊,並在同一批日期上接受比較。
穩定的三個模型怎麼排
QLIKE 可以想成「預測波動與實際波動不合時要付的罰分」,數字越低越好。公式如下:
實際波動 / 預測波動 − log(實際波動 / 預測波動) − 1
平均罰分如下:
| 模型 | 平均 QLIKE | 白話解讀 |
|---|---|---|
| A4f | 1.400 | 三個穩定規格中最低 |
| GJR | 1.480 | A4f 低約 5.4% |
| daily-r² HAR-style | 1.524 | A4f 低約 8.2% |
表面排名不是全部,因此我們也比較每天的誤差差距是否只是短期巧合。比較使用 HAC-DM,也就是會把相鄰交易日的誤差關聯納入的模型比較方法。負數代表表格中先寫的 A4f 誤差較低。
- A4f 對 GJR:比較強度 -4.370 ,跨過事先設定的嚴格門檻。
- A4f 對 daily-r² HAR-style:比較強度 -7.699 ,同樣跨過嚴格門檻。
在這個固定期間與這個每日平方報酬代理下,A4f 對兩個穩定比較對手的優勢,不只是平均分數好看。
為什麼「再加 VIX」仍不能當成可靠結論
第四個模型在 daily-r² HAR-style 架構上再加入 VIX。它出現一個比排名更根本的問題:在 2019-01-14、2019-01-16、2019-01-18 三天,模型給出非正的波動預測。
波動不應該是負數。程式為了讓損失函數能運算,只能把這三筆壓到極小的正數下限,結果讓完整樣本的平均 QLIKE 被少數極端罰分淹沒。那個龐大平均值不是可以拿來宣稱經濟幅度的數字。
如果只做診斷、把三個非正預測日排除,這個 VIX 版本的平均 QLIKE 是 1.537 ;A4f 對它的比較強度為 -2.256 ,仍沒有跨過我們採用的嚴格門檻。這項診斷不能證明兩者相當,只能說:這個 VIX 比較對手本身不夠穩定,無法提供乾淨的勝負判決。
所以「多加 VIX 沒有帶來可靠優勢」是合理提醒,理由是 VIX 版本出現了不合理預測,且在排除那些日期的診斷中仍未通過嚴格門檻。
這不是經典 HAR-RV 的對決
先把名稱說清楚。這裡的 HAR-style 模型使用的是 每日報酬平方 ,再取前一日、前五日與前二十二日的資訊做回歸。它沒有使用盤中高頻資料建出的 realized variance,因此不是經典 Corsi HAR-RV。
這個差別不是文字遊戲。日報酬平方是很吵的波動代理;真正的盤中 realized variance 含有更多一天內的價格變化資訊。因此,K1379 只能回答「A4f 與 daily-r² HAR-style 基準相比如何」,不能回答「A4f 是否勝過或不劣於 canonical HAR-RV」。後一個問題本實驗沒有回答。
投資人真正可以帶走什麼
第一,模型名字新不新、指標多不多,仍然不能代替往前驗證。文中的 VIX 版本多放了一項資訊,卻連三個日期的正波動預測都守不住。
第二,「沒有證明差異」與「證明兩者相當」完全不同。比較未過門檻,不能延伸成模型之間大致相當;這種 non-inferiority 解讀需要專門的等效性設計。
一句話總結: 「指標愈多不一定愈準」值得記住;K1379 的精確結論是,A4f 在這套 daily-r² 代理協議下勝過兩個穩定基準,而 VIX 版本不穩定,不能拿來宣稱四個模型彼此無差或相互不劣。
懶人包圖組

圖一:左側是平均 QLIKE;右側是採 HAC 的主要模型比較。VIX 版本因三筆非正預測而使用數值下限,完整樣本平均值不可作經濟幅度解讀。

圖二:A4f 對 GJR 與 daily-r² HAR-style 的結論在圖示的落後期範圍內都跨過嚴格門檻;daily-r² HAR-style 對 GJR 的判決較接近門檻,應視為敏感結果。
本文整理實驗 K1379 的結果。資料來源:2026-07-11 固定的 yfinance SPY/VIX 日期唯一快照;分析資料期間 2000-01-04 至 2026-05-18,樣本外共同有效期間 2019-01-02 至 2026-05-18,共 1,852 筆。重現腳本:experiments/k1379/k1379.py;完整結果:experiments/k1379/k1379_results.json。