蒙地卡羅 VaR 真的比較準嗎?一場關於風險估計的反直覺實驗
讀者互動
已追蹤瀏覽 0 次,登入會員可按讚與收藏。
蒙地卡羅 VaR 真的比較準嗎?一場關於風險估計的反直覺實驗
一個常見的誤解
當投資人或風控人員第一次接觸「風險值」(Value-at-Risk, VaR)這個概念時,最常聽到的進階方法之一就是「蒙地卡羅模擬」。它聽起來既高科技又嚴謹:用電腦跑上萬次模擬,把所有可能的未來情境都跑過一遍,再從模擬出來的報酬分佈裡讀出風險值。
直覺上,這應該是最準的方法。畢竟「模擬越多次,誤差越小」是統計學的基本道理。但在我們最近的一場系統化實驗中,結果狠狠打臉了這個直覺:在預測「明天的下跌風險」這件事上,蒙地卡羅 VaR 不但沒比較準,反而是表現最差的一群。真正穩居冠軍的,是兩個概念上更老派、實作上也更簡單的方法。
這篇文章要分享的,就是這個反直覺結果背後的故事,以及它對實務風控的啟示。
實驗背景:為什麼要比較這四種 VaR 方法?
在我們先前的研究(K1036 與 K1043)中,已經確認兩件事:
- CF-Rolling (基於歷史殘差的偏態與峰態做修正的方法)在所有測試組合中都能達到嚴格的 6/6 通過。
- FHS (過濾歷史模擬,Filtered Historical Simulation)的表現與 CF-Rolling 完全打平,12/12 全數通過。
剩下還沒系統化測試的就是「蒙地卡羅模擬 VaR」。這個方法在教科書、業界訓練、甚至監理文件裡,地位不亞於前兩者。我們的任務是:把它放進同一個嚴格的測試框架,看它能不能撐住場面。
實驗設計很乾淨:
- 資產 :SPY(標普 500 ETF)與 QQQ(那斯達克 100 ETF)
- 資料區間 :2005 年 1 月至 2026 年 4 月(yfinance 取得)
- 樣本外測試 :2019 年 1 月起的 1827 個交易日
- 波動率模型 :兩種,傳統的 GJR-GARCH 與我們先前研究表現亮眼的 A4f-VIX 模型
- VaR 方法 :四種——MC-Normal、MC-t、CF-Rolling、FHS
- 顯著水準 :1% 與 2.5%
- 每日模擬次數 :10,000 次
- 隨機種子 :42(確保可復現)
每個組合都跑完整的「三位一體」(Trinity)測試:Kupiec 的次數覆蓋率測試、Christoffersen 的條件覆蓋率測試、巴塞爾顏色區(Basel traffic light),再加上 Acerbi-Szekely 的 Expected Shortfall 測試。要全部通過,才算這個 VaR 方法在那個場景下「夠格」。
蒙地卡羅 VaR 怎麼算?
為了避免讓非技術讀者卡關,先用最白話的方式解釋一下蒙地卡羅 VaR 的步驟:
- 用 GARCH 模型估出明天的波動率 σ_{t+1}(這一步是確定的,給定今天為止的資訊就能算出來)。
- 用電腦產生 10,000 個服從某個分佈的隨機數字 ε(常態分佈或 t 分佈)。
- 把每個 ε 乘上 σ_{t+1},得到 10,000 個「模擬的明日報酬」。
- 從這 10,000 個模擬報酬中找最差的 1%(或 2.5%)分位數,那就是 VaR。
CF-Rolling 與 FHS 則跳過模擬這一步:CF-Rolling 直接用歷史殘差的偏態與峰態解析地調整 VaR;FHS 把過去 252 天的標準化殘差「重抽樣」乘上今天的波動率。兩者都不用跑萬次模擬。
結果一:MC-Normal 全軍覆沒
先看 GJR-GARCH 搭配各種 VaR 方法(Trinity 通過率,每個組合 4 個測試格子):
| 方法 | Trinity 通過 | 觀察 |
|---|---|---|
| MC-Normal | 0/4(0%) | 全部 FAIL |
| MC-t | 0/4(0%) | 全部 FAIL |
| CF-Rolling | 4/4(100%) | 全綠 |
| FHS | 4/4(100%) | 全綠 |
這結果非常極端。MC-Normal 不是輸一點點,而是徹底崩盤。具體看 SPY 在 1% 顯著水準下:
- 目標違約率 :1.0%
- MC-Normal 實際違約率 :2.08%(超標一倍)
- MC-t 實際違約率 :1.64%
- CF-Rolling 實際違約率 :0.88%
- FHS 實際違約率 :1.31%
QQQ 的數字更誇張,MC-Normal 違約率衝到 2.41%,等於說告訴你「百年一遇」的事情,實際上每兩個月就發生一次。難怪巴塞爾顏色區直接判紅燈。
問題出在哪?常態分佈的尾部太薄,根本捕捉不到金融市場那種「黑天鵝其實常常飛」的真實樣貌。這個道理大家都知道,但這次實驗用結結實實的數字告訴我們:哪怕你跑了 10,000 次模擬,如果分佈假設錯了,跑再多次也救不回來。
結果二:MC-t 需要「外援」才能及格
把分佈換成 t 分佈(厚尾),是不是就解決問題了?答案是:要看你用什麼波動率模型。
- GJR + MC-t :仍然 0/4 全部 FAIL
- A4f + MC-t :4/4 全部 PASS
差別在哪?A4f 模型把 VIX 恐慌指數作為外生資訊納入波動率方程,σ 估得比 GJR 更準。一旦 σ 準了,厚尾分佈才能正確發揮,t 分佈的尾部才能真的對應到尾部風險。
這帶出一個重要訊息: 蒙地卡羅 VaR 的瓶頸不在「模擬次數不夠多」,而在「波動率估得不夠準」加上「分佈假設不夠真實」 。模擬只是把這兩個前提的誤差放大,不是解藥。
結果三:CF-Rolling 與 FHS 才是真正的勝者
把所有 16 個組合(2 資產 × 2 模型 × 4 顯著水準)攤開:
- CF-Rolling :8/8 全部通過
- FHS :8/8 全部通過
- MC-t :4/8 通過(只有 A4f 配合時才行)
- MC-Normal :2/8 通過(連 A4f 也只能救一半)
把 GJR 與 A4f 的整體表現再彙總一次:
- A4f (VIX 外生):14/16 通過(87.5%)
- GJR (純歷史):8/16 通過(50.0%)
A4f 的 VIX 外生資訊讓波動率估計更貼近現實,這個結果與我們先前 K1036、K1043 的發現一致,把市場恐慌指數正確納入模型,比換更花俏的 VaR 計算法效益更大。
反直覺的關鍵洞見
為什麼蒙地卡羅模擬 10,000 次,反而輸給「直接套公式」的 CF-Rolling?
關鍵在於這個實驗的特定情境: 1 天期 VaR 。
- 在 1 天的尺度上,σ_{t+1} 已經被 GARCH 模型「確定」下來了。蒙地卡羅模擬只是在這個固定的 σ 上面,從某個分佈裡抽 10,000 次樣, 多出來的這層抽樣動作只引入「取樣誤差」,沒有額外資訊 。
- CF-Rolling 用解析公式,直接根據歷史殘差的偏態、峰態調整分位數,它把高階動差訊息「無損」地用上。
- FHS 直接重抽歷史標準化殘差,等於用真實市場的尾部形狀當作分佈,連分佈假設都不用做。
換句話說,蒙地卡羅模擬的真正優勢—— 多步預測、多資產組合、跳躍/制度切換、選擇權定價 ——在 1 天期單一資產 VaR 這個場景,根本沒有舞台可以發揮。它變成了「用大砲打蚊子,還沒打中」。
附帶一提,計算成本也很有趣:
| 方法 | 平均每日耗時 |
|---|---|
| FHS | 0.1 秒 |
| MC-Normal | 0.3 秒 |
| MC-t | 0.6 秒 |
| CF-Rolling | 11.3 秒 |
CF-Rolling 雖然準,但因為要逐日計算偏態與峰態,反而最慢。FHS 是準度與速度兼顧的最佳實務選擇,這也是為什麼現在不少銀行內部 VaR 引擎走的是 FHS 路線。
給實務工作者的三點啟示
-
方法新穎不等於估得準 。蒙地卡羅模擬聽起來高階,但在 1 天 VaR 上反而是表現最差的一群。決策時要問的是「這個方法的優勢能不能在我的問題上發揮」,不是「這個方法名氣大不大」。
-
波動率模型的選擇比 VaR 計算法更關鍵 。把 VIX 外生資訊納入 A4f,比換成蒙地卡羅模擬有效得多。這也呼應一個老話: 估好均值與變異數,是大部分財務應用的基本功 。
-
如果你做的是 1 天期 VaR,FHS 是好用的預設選項 。又快又準,不用做分佈假設,是這次實驗最務實的結論。如果你需要做選擇權定價、多步預測、或情境壓力測試,那才是蒙地卡羅模擬真正該登場的舞台。
局限性與下一步
這次實驗只測了 1 天期、兩個美股 ETF(SPY、QQQ),結論不能無限外推:
- 多步預測(h > 1) 才是蒙地卡羅模擬該大放異彩的場景,這是後續研究計畫的重點。
- 個股、加密貨幣、期貨等不同資產類別的厚尾結構不同,需要重複驗證。
- 蒙地卡羅在這次實驗用固定 t 分佈自由度(df=8),沒做最佳化;自由度若隨時間調整可能改善 MC 表現,但不會翻盤。
研究的常態之一就是「打破直覺」。CF-Rolling 與 FHS 不是新方法,文獻可以追到 1938 年的 Cornish-Fisher 與 1999 年的 Barone-Adesi 與 Giannopoulos。但在嚴格的測試框架下,它們繼續打敗看起來更新潮的對手,這就是為什麼我們堅持用同一套標準把所有方法跑過一遍,而不是看誰名字響亮。
資料來源
- 報酬資料 :yfinance(SPY、QQQ 日線,2005-01-01 至 2026-04-10)
- VIX 資料 :Yahoo Finance(同步取自 yfinance)
- 樣本外期間 :2019-01-02 起,共 1827 個交易日
- 實驗腳本 :
experiments/k1046/k1046.py - 完整結果 :
experiments/k1046/k1046_results.json - 總計算時間 :約 498 秒(多數時間花在 CF-Rolling 的逐日高階動差計算)
- 隨機種子 :42(蒙地卡羅模擬可復現)
實驗編號與相關研究
本文基於 K1046 實驗。相關前序研究:
- K1036:A4f + CF-Rolling 達到 6/6 全綠的最早記錄。
- K1043:FHS 與 CF-Rolling 在 12/12 組合下打平的交叉驗證。
主要參考文獻
- Pritsker, M. (2006). The Hidden Dangers of Historical Simulation. Journal of Banking and Finance.
- Glasserman, P. (2003). Monte Carlo Methods in Financial Engineering. Springer.
- Barone-Adesi, G., Engle, R., & Mancini, L. (2008). A GARCH Option Pricing Model with Filtered Historical Simulation. Review of Financial Studies 21(3), 1223-1258.
- Barone-Adesi, G., & Giannopoulos, K. (1999). VaR without Correlations for Portfolios of Derivative Securities. Journal of Futures Markets 19(5), 583-602.
- Engle, R., Ghysels, E., & Sohn, B. (2013). Stock Market Volatility and Macroeconomic Fundamentals. Review of Economics and Statistics 95(3), 776-797.
- Kupiec, P. (1995). Techniques for Verifying the Accuracy of Risk Measurement Models. Journal of Derivatives 3, 73-84.
- Christoffersen, P. (1998). Evaluating Interval Forecasts. International Economic Review 39(4), 841-862.
- Acerbi, C., & Szekely, B. (2014). Back-testing Expected Shortfall. Risk.
相關文章
先讀正式關聯,若無則使用標籤與主題相似度補齊