← Research Feed
研究2026/06/06 下午03:07

同一個公式,兩種用法,差距天壤之別:VaR 的「記憶長度」決定你的風險計算準不準

GARCHGLDQQQSPYVaR波動率風險管理Cornish-Fisher

讀者互動

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

分享到:LINEFacebookX / Twitter

同一個公式,兩種用法,差距天壤之別:VaR 的「記憶長度」決定你的風險計算準不準

 [提出: 用戶, 執行: Claude] 

2020 年 3 月,SPY 在短短 23 個交易日裡跌了 34%。之後大多數模型做了什麼?繼續用 2015 到 2019 年的平靜市場資料,估算出一個「還算正常」的風險數字。結果接下來的違約次數超過預期兩倍以上,銀行監理的交通燈轉成紅色。

這不是模型的計算錯了,是模型的「記憶」太長。


風險模型有記憶問題

用 VaR(Value at Risk)量化投資組合的下行風險,核心問題只有一個: 你拿哪段歷史來估計明天可能的最大損失? 

最常見的兩種做法:

 Expanding window(滾動式擴充) :從資料第一天累積到今天,所有歷史都拿來用。用的資料越來越多,估計越來越穩定,但也越來越遲鈍。2020 年的暴跌,被 2010 年代那段超長多頭市場的平靜給「稀釋」掉了。

 Rolling window(固定長度滾動) :只看最近 252 個交易日(大約一年)。資料始終新鮮,市場換了 regime,模型跟著換。2020 年暴跌之後,一年內這段異常波動就變成計算的核心素材。

直覺上,「用更多資料」聽起來更穩。實際跑出來,是「用更新的資料」贏了。


跨三資產實測:6/6 全通過 vs 4/6

我們用 Cornish-Fisher 展開式(CF)計算 VaR,對 SPY(美股大盤)、QQQ(科技股 ETF)、GLD(黃金 ETF)各做 OOS(樣本外)測試,期間從 2019 年到 2026 年,共約 1,827 個交易日。

Cornish-Fisher 展開式的做法:不假設報酬呈常態分配,而是根據最近的偏度(左偏程度)和峰度(尾端厚度),動態調整分位數。公式本身不變,差別在於輸入這個公式的統計量,是用過去一年(rolling)還是全期(expanding)計算。

評分標準採 Trinity Test,必須同時通過三關:

  1.  Kupiec 檢定 :違約次數是否統計上符合設定比例(2.5% 或 1%)
  2.  Christoffersen 檢定 :違約是否散開,不能一堆連在一起(連串違約代表模型根本沒捕捉到尾端行為)
  3.  Basel 交通燈 :銀行監理基準,紅燈代表超標

結果如下:

方法Trinity 全通過SPY 2.5% 違約率QQQ 2.5% 違約率GLD 2.5% 違約率
常態分配(Normal) 0/6 3.72%4.11%3.45%
Student-t(df=8) 1/6 3.56%3.78%3.23%
 CF-Rolling(252天)  6/6  2.24%  2.63%  2.41% 
CF-Expanding(全期) 4/6 1.70% ❌2.08% ✓1.92% ✓

(預期違約率 = 2.5%;偏低一樣算失敗,代表 VaR 過度保守,偏高則低估風險)

數據來源:yfinance,OOS 期間 2019-01-01 至 2026-04-10,共約 1,827 個觀測值。實驗 K1034,GJR-GARCH(1,1) 條件變異數。


K1034 三資產 Trinity Test 熱力圖

圖一:六組測試(三資產 × 兩 alpha 水準)的通過情況。CF-Rolling 全綠,CF-Expanding 在 SPY 2.5% 失敗(過度保守),常態分配全紅。


CF-Expanding 輸在哪裡

CF-Rolling 6/6 全過,CF-Expanding 4/6,差距聽起來不大。但 CF-Expanding 輸掉的方式很有意思: 不是低估風險,是高估太多。 

SPY 在 2.5% 水準,CF-Expanding 的實際違約率只有 1.70%,理論值是 2.5%,它給的保護比需要的多 47%。Kupiec 檢定直接 FAIL:「你的 VaR 太高了,跟實際市場行為嚴重不符。」

原因就是記憶太長。2020 年 COVID 崩盤被記下來,加到全期的統計裡,往後幾年還在影響估計。即使市場 2021-2023 年已經恢復,擴充視窗模型仍然「記得害怕」,繼續給出偏保守的 VaR。這不算好事:過度保守的 VaR 讓風控部門誤以為風險比實際大,資本配置失真。

Rolling 視窗的邏輯是:市場有 regime,每個 regime 都有自己的偏度和峰度分布。用 252 天的偏度和峰度調整分位數,讓 VaR 跟著當下市場的尾端特性走,而不是被過去的大事件拖著。


K1034 各方法違約率比較

圖二:各方法、各資產、各 alpha 水準的實際違約率。橫線為目標值。CF-Rolling 最接近目標,常態分配和 Student-t 的實際違約率幾乎是目標的 1.5 倍。


常態分配壞在哪

資產偏度和峰度是這樣的:SPY 偏度 -0.80,超額峰度 3.25;QQQ 偏度 -0.73,超額峰度 2.82;GLD 偏度 -0.40,超額峰度 3.17。

換成大白話:三個資產的報酬分配都比常態分配的尾巴厚,而且左邊的尾巴比右邊長(左偏),大跌比大漲更常發生,跌幅也更深。

常態分配假設偏度為零、峰度為 3(超額峰度為 0),直接忽略這兩個特徵。結果在 2.5% 水準,SPY 的實際違約率是 3.72%,比設計值高 49%。Student-t 用 df=8 的固定厚尾調整,比常態好一點,但 df=8 寫死了,不管市場今年是平靜還是動盪,用的都是同一組假設,SPY 還是 3.56%,仍然超標。

CF-Rolling 的做法是每 63 天重新估計 GJR-GARCH,拿最新 252 天的標準化殘差算偏度和峰度,代入:

z_cf = z_α + (z_α²-1)/6 × S + (z_α³-3z_α)/24 × K_excess − (2z_α³-5z_α)/36 × S²

這個調整後的分位數隨市場變,正常年分偏度小、峰度低,VaR 不會算太高;高波動期偏度變大、峰度飆高,VaR 自動往外推。


CF 分位數 vs 常態/Student-t 比較

圖三:在不同偏度水準下,CF 分位數相比常態和 Student-t 的差異。偏度越大(越左偏),CF 給出越大的 VaR 調整量。


不用猜分配,但也不是萬能

CF 最大的優點是「半參數」,用的是 GJR-GARCH 算出的條件變異數,加上從殘差資料直接估計的偏度和峰度,不強迫套常態分配的假設。比純粹的常態 VaR 靈活,比需要假設 Pareto 尾端的 EVT(極值理論)簡單。

但 CF 的限制也真實存在。它是四階近似,當超額峰度超過 10 的時候,這個展開式可能失去單調性,計算出來的分位數會出現不合理的數字。極端市場崩潰的尾端,比四階展開式能捕捉的還要厚。

這次測試也只用 GJR-GARCH 做基底,期間包含 COVID 衝擊,但只是 2019-2026 的一個區間。Rolling 視窗固定 252 天,沒有做敏感度分析看窗口長度怎麼影響結果。


實務上怎麼用

對大多數散戶來說,直接操作 CF-VaR 不容易,但背後的邏輯轉化成投資決策是有意義的:

 靜態風險數字要懷疑。  很多線上工具給你一個固定的「最大損失」估計,背後用的是歷史全期常態假設。這次測試顯示,這類工具在 2.5% 水準的實際誤差接近 50%。

 波動率本身會跟著市場狀態變。  2023 年算出來的 VaR 不等於 2021 年的 VaR,更不等於 2020 年 3 月的 VaR。市場換 regime,風險估計要跟著更新。

 「用越多歷史資料越安全」這個直覺是錯的。  對 VaR 來說,資料新鮮度比資料量更重要。過長的記憶讓模型跟不上 regime 轉換,給出失真的保護。

對機構風控和量化投資人,CF-Rolling + GJR-GARCH 的組合在這次三資產測試裡達到 6/6 完美通過,是目前系統內在不引入外部信號(如 VIX、市場情緒指標)條件下最乾淨的 VaR 解法。若要進一步改良,可以測試 CF 與 A4f 模型的組合(A4f 透過乘法項引入 VIX 等外部因子,K995 已達 12/12 Trinity)。


本文基於實驗 K1034(腳本:experiments/K1034/k1034.py,結果:experiments/K1034/k1034_results.json)。資料來源:yfinance,期間 2005-01-01 至 2026-04-10,OOS 期間 2019-01-01 起共 1,827 個交易日。相關實驗:K995(A4f-t Trinity 12/12)、K1026(Conformal VaR)、K159(EVT-GPD)。

詳情

image_urls
https://qxhfgdfzazwpkdgesavm.supabase.co/storage/v1/object/public/article-images/k1034_violation_rates.png, https://qxhfgdfzazwpkdgesavm.supabase.co/storage/v1/object/public/article-images/k1034_trinity_heatmap.png, https://qxhfgdfzazwpkdgesavm.supabase.co/storage/v1/object/public/article-images/k1034_cf_quantile_comparison.png
topic_cluster
spy
cluster_waiver
K1034_article_general explicitly assigned task — CF-Rolling vs CF-Expanding regime comparison angle not covered by existing SPY articles
experiment_refs
K1034
topic_cluster_30d
{"cap":10,"count":44,"ratio":0.1571,"exempt":false}

相關文章

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

📄
銀行規定要算 10 天的風險值,但業界偷懶用的公式,其實跟嚴格算法一樣準
# 銀行規定要算 10 天的風險值,但業界偷懶用的公式,其實跟嚴格算法一樣準 Basel III 把銀行的最低資本緩衝綁在 10 天風險值(VaR)上。監管邏輯是:給你 10 個交易日平倉,最壞能虧多少。 業界的普遍做法是拿 1 天 VaR 直接乘以 √10(約 3.16),稱為 sqrt(h) scaling。這個方法假設每天報酬獨立且同分配,算到這裡就收工了。 它夠準嗎? 我們用 SP...
📄
K951:Copula-GARCH 在高相關 ETF 配對避險上全面落敗 Rolling OLS — 尾部結構缺失是根本原因
# K951:複雜模型在 ETF 避險上全敗——Copula-GARCH 輸給 Rolling OLS 的三個故事 **摘要**:K951 對三對高度相關 ETF(SPY-QQQ、GLD-SLV、SPY-EWG)進行樣本外(2019–2025)避險效率檢定,Copula-GARCH 在全三對上均劣於 Rolling OLS(HE 差距 −0.051 至 −0.118),Diebold-Maria...
📄
台股日盤裝沒事,夜盤直接崩 3000 點——週一要面對的是補跌
# 台股日盤裝沒事,夜盤直接崩 3000 點,週一要面對的是補跌 *[提出: 用戶, 執行: Claude] — 事件驅動報告,基於 2026-06-05 美股收盤與台指期夜盤數據* --- 2026 年 6 月 5 日,台股日盤收 45,071 點,只跌 1.33%。 如果你那天下午四點就關掉看盤軟體,會覺得台股很穩,美股在亂、我們沒事。 這是錯覺。真正的崩盤發生在晚上,美股一開盤殺下...
同一個公式,兩種用法,差距天壤之別:VaR 的「記憶長度」決定你的風險計算準不準 | VolPred