K908:MF-GJR 的預測優勢只在 SPY 顯著,配上 HistSim 則三資產 6/6 通過 Trinity
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
你的預測模型很厲害,但你的風控可能在裸奔
想像一個情境:你花了三年研發出一個波動率預測模型,統計檢定 PASS、論文都投出去了。然後風控部門打開 1% VaR 回測報告,結果 FAIL。
這不是寓言。以 MF-GJR(VIX) 為例,它的 QLIKE 只在 SPY 顯著贏過標準 GJR(t=-3.243);QQQ 是 t=-2.652,未過 Harvey 門檻;0050.TW 是 t=+0.193,而且 0050.TW 的 MF-GJR QLIKE 比 GJR 還差 0.294%。三個資產裡只有一個顯著勝出。
所以下面談的「預測準、風控卻出事」,預測準的那一半只在 SPY 站得住。
問題出在哪?又該怎麼修?這是 K908 實驗要回答的核心問題。
為什麼「預測準」不等於「風控好」
波動率預測模型輸出的是「條件變異數」,也就是明天大概的震盪幅度。風控指標 VaR(風險值)卻問另一個問題:「最壞 1% 那天會虧多少?」
這兩件事差很大。預測模型只要平均誤差小就算贏;VaR 卻要你準確抓到尾部那 1% 的極端報酬。多數預測模型預設報酬服從常態分配(Normal),但實際上股市的尾部比常態厚得多,「20 年一遇」事件實際上每兩三年就會出現。預測再準,配上錯誤的尾部假設,VaR 就會嚴重低估風險。
具體來看 MF-GJR(VIX) 配 Normal 的 1% VaR 違反率:SPY 1.87%、QQQ 1.92%、0050.TW 1.31%(理論值 1%)。SPY 與 QQQ 落在 Basel YELLOW 且 Trinity FAIL,0050.TW 是 GREEN、Trinity PASS(Kupiec p=0.2111)。對 SPY 與 QQQ 來說,「100 天最多虧一次以上」的承諾實際上每 50 多天就破一次,這是合規大事故,不是模型微調;0050.TW 在常態假設下反而沒有出現這個缺口。
兩個解法:Student-t vs HistSim
K908 比較了兩個修風控的策略:
方法一:Student-t 分配(參數化方案)
換一個有「自由度(df)」參數的分配。df 越小尾部越厚;df 越大越接近常態。我們每 63 交易日重估一次 df,並用 sqrt((df-2)/df) 修正尺度,確保條件變異數對得上。
方法二:HistSim(歷史模擬,非參數方案) 完全放棄分配假設,直接拿過去 2000 天標準化殘差的歷史分佈當尾部。市場過去出現過什麼極端值,就照著那個經驗 quantile 估 VaR。
跨三資產實測:HistSim 全勝
我們在 SPY、QQQ、0050.TW 三個市場跑了 OOS 2019-01 到 2026-03(每資產約 1754-1821 天)的完整回測,用 Trinity 三道關卡同時檢驗:Kupiec(總違反次數合理)+ Christoffersen(違反沒有群聚)+ Basel 三色燈號。三關全綠才算 PASS。
結果如下圖:

關鍵讀法:
- MF-GJR + HistSim:3 資產 × 1% 與 5% 共 6 種情境全部 PASS ——這是 K908 最重要的發現,HistSim 是真正的 universal solution
- MF-GJR + Student-t:SPY 和 0050.TW 全 PASS,但 QQQ 在 1% 與 5% 都 FAIL ——QQQ 的尾部結構不適合用單一 df 描述
- 違反率(每格第二行百分比)也說明問題:HistSim 的 1% 實際違反率為 SPY 0.99%、QQQ 0.93%、0050.TW 1.14%,三個都緊貼 1% 理論值
為什麼 HistSim 完勝?
關鍵在「對稱性」。Student-t 是參數化分配,本質上左右尾對稱;但 QQQ 在 OOS 期間經歷 2022 科技股崩盤、2020 疫情急跌、2024 AI 多頭等多重結構斷點,左尾比右尾厚很多,單一 df 抓不到這種偏斜。具體數字:QQQ 在 MF-GJR + Student-t 下 1% VaR 違反率仍達 1.65%。三道關卡裡,Kupiec p=0.0111(未過)、Christoffersen p=1.0(通過)、Basel YELLOW,擋下它的是 Kupiec 與 Basel。換成 HistSim 立刻降到 0.93%,三道關卡全綠。
HistSim 完全不假設形狀,市場真實出現什麼,VaR 就反映什麼。skewness、kurtosis、regime shift 全部「順勢吃下」。代價是計算量稍大(要存 2000 個歷史殘差,每天重新排序),但對現代硬體完全不是問題;Python 一行 numpy.quantile 就解決。學界的偏好早就從「找對 parametric 分配」轉向「直接用實證分位數」,K908 在 MF-GJR(VIX) 這個預測引擎上把這個方向確認了下來。
台股是全市場最厚尾的
順帶看一個本地角度。我們把 MF-GJR 的 Student-t df 在三個資產畫成時序:

數字說話:
- SPY :MF-GJR df 介於 7.53 到 9.09(平均約 7.95),尾部相對最薄
- QQQ :6.36 到 10.89(平均約 7.83),波動較大但平均接近 SPY
- 0050.TW :5.04 到 6.56(平均約 5.84),全期最厚尾,最低點 5.04 已經逼近「df=5 厚尾警戒線」
換成白話:台股的「20 年一遇」事件比 SPY 頻繁很多。這也解釋為什麼台灣讀者常感覺「明明做了停損,為什麼還是被一根長黑打穿」,尾部就是比美股厚,標準常態 VaR 在這裡尤其危險。對台股做風控,要嘛換 HistSim,要嘛把 Student-t df 設定上限調更低。
從 OOS 期間動態看,0050.TW 的 df 在 2020 第一季疫情、2022 半導體大跌、與 2024 第三季的修正都明顯壓縮,最厚尾出現在 2024 年第三季的 5.04。同期 SPY 的 df 從未跌破 7.5,QQQ 雖然在 2020 跌到 6.36,但很快回升到 9 以上。這個跨市場差異對於資產配置與避險比例的決定有直接影響,台股部位需要的安全邊際,比同名目曝險的美股部位高出 30% 以上才合理。
把預測和風控當成兩件事
K908 真正的方法論教訓是: 預測模型和分配假設要分開優化 。
過去研究習慣把波動率預測和分配假設綁在一起估計,例如「GARCH + Normal MLE」一次估完。這在預測層次也許 OK,但風控層次完全不夠。最佳組合是兩段式:
- 預測層 :用 MF-GJR(VIX) 給出條件變異數(QLIKE 顯著優於 GJR 的只有 SPY)
- 風控層 :把 MF-GJR 的條件變異數丟給 HistSim 算 VaR/ES,完全不假設尾部形狀
這個雙層架構在三資產 6/6 Trinity PASS,是目前我們找到的「universal VaR/ES 解」。對基金、券商風控、量化策略部位管理都有實用價值,不論主流市場(SPY/QQQ)還是新興市場(0050.TW)都通用。
結論
預測準 ≠ 風控好。MF-GJR(VIX) + HistSim 是 K908 驗證過的兩段式方案:條件變異數預測(在 SPY 上顯著優於 GJR)+ 最不挑形狀的尾部估計,三資產 1% 和 5% VaR Trinity 全 PASS。
下次有人跟你說「我的模型 QLIKE 比 baseline 好 30%」,記得追問一句:「那你的 1% VaR 通過 Basel 了嗎?」
本文基於實驗 K908(腳本:experiments/k908/k908_mfgjr_student_t_var_es.py,結果:experiments/k908/k908_mfgjr_student_t_var_es_results.json)。資料來源:yfinance(SPY / QQQ / 0050.TW / ^VIX),期間 2005-01 至 2026-04,OOS 2019-01-02 至 2026-03-31(SPY/QQQ n=1821;0050.TW n=1754)。延伸閱讀:K889(MF-GJR 預測實驗)、K802 / K825(HistSim 早期跨資產驗證)。[提出: Claude]
相關文章
先讀正式關聯,若無則使用標籤與主題相似度補齊