Extreme Value Theory (EVT) and Tail-Related Risk Measures
1. 尾部風險測度與核心目標
1.1 Value-at-Risk (VaR) 與 Expected Shortfall (ES) 定義
VaR (Value-at-Risk):
在給定置信水平 \(\alpha\)(例如 \(\alpha=99.5\%\))下,VaR 是預計在特定時間內損失不會超過的水平。數學上,設 $L$ 為損失(通常取正值表示損失大小),則 VaR 定義滿足:\[ P(L \leq VaR_\alpha) = \alpha \]
換句話說,如果一個投資組合的 \(99.5\%\) VaR 為 5%,則表示有 \(99.5\%\) 的概率,該損失不會超過 5%。
ES (Expected Shortfall) / CVaR (Conditional VaR):
ES 定義為在損失超過 VaR 的情況下的平均損失,即:\[ ES_\alpha = E[L \mid L > VaR_\alpha] \]
ES 描述了當損失超出 VaR 時,所預期的平均損失程度,能夠更全面地捕捉尾部風險,尤其在極端環境下更具意義。
1.2 核心目標
量化在極端情況下可能出現的損失,有助制定更保守的準備和風險控制策略。然而,傳統方法(如基於標準差的計算)常假設收益近似正態分佈,可能低估極端風險。為此,我們引入極值理論(EVT)來建模尾部行為,外推出極端損失的概率與幅度。
2. 極值理論(EVT)基本框架與主要方法
EVT 旨在描述隨機變量尾部的行為,不依賴整體分佈的假設。主要有兩種方法:
2.1 Block Maxima Method(區塊極值法)
基本思路:
將數據 \(X_1, X_2, \dots, X_N\) 劃分為若干不重疊的區塊(例如每年或每月),並從每個區塊中提取極值 \(M_i\)(最大值或最小值)。理論基礎:
根據 Fisher–Tippett–Gnedenko 定理,存在常數 \(a_n>0\) 和 \(b_n\)(分別為尺度與位置調整因子),使得當區塊長度 $n$ 趨於無窮大時,\[ \frac{M_n - b_n}{a_n} \xrightarrow{d} G(z) \]
其中 \(z = \frac{M_n - b_n}{a_n}\) 為標準化後的極值,而 $G(z)$ 的形式為廣義極值分佈(GEV)的累積分佈函數 (CDF):
\[ G(z)=\exp\left\{-\left[1+\xi\left(\frac{z-\mu}{\sigma}\right)\right]^{-1/\xi}\right\},\quad 1+\xi\left(\frac{z-\mu}{\sigma}\right)>0 \]
符號說明:
- \(M_n\):某區塊內的極值(例如最大損失)。
- \(a_n\):尺度調整因子(正標量),用於標準化極值的波動幅度。
- \(b_n\):位置調整因子,類似於均值調整。
- \(\mu\)、\(\sigma\)、\(\xi\):GEV 分佈的參數,其中 \(\mu\) 為位置參數、\(\sigma>0\) 為尺度參數、\(\xi\) 為形狀參數,描述尾部厚度。
應用注意事項:
區塊極值法雖然理論上非常堅實,但每個區塊僅取一個極值,當樣本數有限時會浪費大量信息;而且區塊劃分(例如選擇每年、每月)的決策對結果有顯著影響。
2.2 Peaks Over Threshold (POT) Method(超過閾值法)
基本思路:
選定一個較高閾值 $u$(例如數據的 95% 或 99% 分位數),並將所有超過該閾值的數據視為極端事件。定義超額數據:\[ Y = X - u,\quad \text{當 } X > u \]
理論基礎:
根據 Pickands–Balkema–de Haan 定理,當 $u$ 足夠高時,超額數據的條件累積分佈\[ F_u(y)=\frac{F(u+y)-F(u)}{1-F(u)} \]
可近似為廣義帕累托分佈(GPD)的形式:
\[ F_u(y) \approx 1-\left(1+\frac{\xi\,y}{\beta}\right)^{-1/\xi},\quad y\ge 0,\quad 1+\frac{\xi\,y}{\beta}>0 \]
當 \(\xi=0\) 時退化為:
\[ F_u(y) \approx 1-\exp\left(-\frac{y}{\beta}\right) \]
符號說明:
- $u$:選定的高閾值。
- $X$:原始數據(如損失)。
- \(Y = X - u\):超過閾值的部分,稱為超額數據。
- \(F(x)=P(X\le x)\):$X$ 的累積分佈函數。
- \(\xi\):GPD 的形狀參數,描述尾部厚度(較大的 \(\xi\) 表示尾部較厚)。
- \(\beta\):GPD 的尺度參數,反映超額數據的變動規模。
- \(F_u(y)\):超額數據的條件累積分佈函數。
推導詳解:
條件分佈定義:
\[ F_u(y)=\frac{F(u+y)-F(u)}{1-F(u)} \]
正則變化假設:
假設 $X$ 的尾部滿足正則變化(Regular Variation;許多厚尾分佈都有的尾部特性,如:Pareto 或 Student's t),即:\[ 1-F(x)=x^{-1/\xi}L(x) \]
其中 $L(x)$ 是緩變函數,滿足對任何 $c>0$:
\[ \lim_{x\to\infty}\frac{L(cx)}{L(x)}=1 \]
這意味著當 $x$ 趨於無窮大時,尾概率主要以冪律 \(x^{-1/\xi}\) 衰減。
推導條件分佈:
當 \(x=u+y\) 時,\[ 1-F(u+y) \approx (u+y)^{-1/\xi}L(u) \]
而
\[ 1-F(u) \approx u^{-1/\xi}L(u) \]
所以,
\[ \frac{1-F(u+y)}{1-F(u)} \approx \left(\frac{u+y}{u}\right)^{-1/\xi} = \left(1+\frac{y}{u}\right)^{-1/\xi} \]
故:
\[ F_u(y) \approx 1-\left(1+\frac{y}{u}\right)^{-1/\xi} \]
為了讓模型更靈活,引入尺度參數 \(\beta\)(通過擬合得到),最終得到:
\[ F_u(y) \approx 1-\left(1+\frac{\xi y}{\beta}\right)^{-1/\xi} \]
當 \(\xi=0\) 時,則有:
\[ F_u(y) \approx 1-\exp\left(-\frac{y}{\beta}\right) \]
外推 VaR 與 ES:
假設總樣本數為 $n$,超過閾值 $u$ 的數據點數為 \(n_u\),置信水平設為 \(\alpha\)(例如 99.5%),我們要求 \(x_\alpha\) 滿足:\[ P(X>x_\alpha) = 1-\alpha \]
設 \(x_\alpha = u+y_\alpha\),則:
\[ P(X > u+y_\alpha) \approx \frac{n_u}{n}\left(1+\frac{\xi y_\alpha}{\beta}\right)^{-1/\xi} \]
令上式等於 \(1-\alpha\):
\[ \frac{n_u}{n}\left(1+\frac{\xi y_\alpha}{\beta}\right)^{-1/\xi} = 1-\alpha \]
解得:
\[ 1+\frac{\xi y_\alpha}{\beta} = \left(\frac{n}{n_u}(1-\alpha)\right)^{-\xi} \]
進而,
\[ y_\alpha = \frac{\beta}{\xi}\left[\left(\frac{n}{n_u}(1-\alpha)\right)^{-\xi}-1\right] \]
所以,
\[ VaR_\alpha = x_\alpha = u+y_\alpha = u + \frac{\beta}{\xi}\left[\left(\frac{n}{n_u}(1-\alpha)\right)^{-\xi}-1\right] \]
ES 定義為在損失超過 VaR 的情況下的平均損失:
\[ ES_\alpha = E[X\mid X>x_\alpha] = u + E[Y\mid Y>y_\alpha] \]
對於 GPD,經推導可得:
\[ E[Y\mid Y>y_\alpha] = \frac{\beta + \xi y_\alpha}{1-\xi} \]
因此,
\[ ES_\alpha = u + \frac{\beta}{1-\xi}\left[\left(\frac{n}{n_u}(1-\alpha)\right)^{-\xi}-1\right] \]
(該公式在 \(\xi < 1\) 時有效。)
3. 參數估計
3.1 Block Maxima Method
- 我們對每個區塊提取極值 \(M_1, M_2, \dots, M_k\),然後利用最大似然估計(MLE)對這些數據直接擬合 GEV 分佈,估計出位置參數 \(\mu\)、尺度參數 \(\sigma\) 和形狀參數 \(\xi\)。
- 理論上存在標準化常數 \(a_n\) 和 \(b_n\) 使得 \(z_i = \frac{M_i-b_n}{a_n}\) 服從 GEV 分佈,但在 MLE 擬合中,我們直接用 \(M_i\) 進行擬合,這些常數效果被吸收到估計參數中。
3.2 POT 方法
- 對於超過閾值 $u$ 的數據 \(Y=X-u\),利用 MLE 擬合 GPD,得到形狀參數 \(\xi\) 與尺度參數 \(\beta\)。
- MLE 是最常用的方法,但也可以使用概率加權矩(PWM)。
4. Python 實作案例(基於 POT 方法)
以下代碼展示如何利用 POT 方法擬合 GPD 並計算 99.5% VaR 與 ES:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import genpareto, t
# Step 1: Generate simulated daily returns with heavy tails (t distribution)
np.random.seed(42)
data = np.random.standard_t(df=3, size=1000) / 100.0 # returns ~ t(df=3) scaled by 1/100
returns = pd.Series(data)
# Step 2: Convert returns to losses (loss = -return)
# Here, positive values indicate losses.
losses = -returns
# Step 3: Set threshold as the 95th percentile of losses
threshold = np.percentile(losses, 95)
print("Threshold (95th percentile):", threshold)
# Step 4: Calculate exceedances (losses above threshold)
exceedances = losses[losses > threshold] - threshold
print("Number of exceedances:", len(exceedances))
# Step 5: Fit the Generalized Pareto Distribution (GPD) to exceedances using MLE
params = genpareto.fit(exceedances)
xi, loc, beta = params
print("Fitted GPD parameters:")
print("Shape (xi):", xi)
print("Scale (beta):", beta)
# Step 6: Calculate VaR and ES at 99.5% confidence level using POT formulas
alpha = 0.995
n = len(losses) # total number of samples
n_exceed = len(exceedances) # number of exceedances
# VaR formula:
var = threshold + (beta/xi) * (((n/float(n_exceed))*(1-alpha))**(-xi) - 1)
print("Estimated 99.5% VaR:", var)
# ES formula:
es = threshold + (beta/(1-xi)) * (((n/float(n_exceed))*(1-alpha))**(-xi) - 1)
print("Estimated 99.5% ES:", es)
# Step 7: Plot the loss distribution histogram, GPD fitted tail, and theoretical t pdf
plt.figure(figsize=(12, 8))
# Plot histogram of losses in gray
plt.hist(losses, bins=50, density=True, alpha=0.6, color='gray', label='Loss Distribution')
# Plot GPD fitted tail for x >= threshold (red line)
x = np.linspace(threshold, losses.max(), 100)
tail_pdf = genpareto.pdf(x - threshold, xi, loc=0, scale=beta)
plt.plot(x, tail_pdf * (n_exceed/n), 'r-', lw=2, label='GPD Fitted Tail')
# Plot vertical line for VaR
plt.axvline(var, color='k', linestyle='--', label='99.5% VaR')
# Plot the theoretical t-distribution pdf for losses in gray
# Given returns ~ t(df=3)/100, and losses = -returns,
# the pdf for losses: f_loss(l) = 100 * t.pdf(100 * l, df=3)
x_theory = np.linspace(losses.min(), losses.max(), 200)
pdf_t = 100 * t.pdf(100 * x_theory, df=3)
plt.plot(x_theory, pdf_t, color='gray', lw=2, label='Theoretical t PDF')
# Annotate the plot with key values; use LaTeX formatting for parameters.
textstr = '\n'.join((
r'$u$ (95th percentile): {:.4f}'.format(threshold),
'Number of exceedances: {}'.format(n_exceed),
r'GPD Shape ($\xi$): {:.4f}'.format(xi),
r'GPD Scale ($\beta$): {:.4f}'.format(beta),
r'Estimated 99.5% VaR: {:.4f}'.format(var),
r'Estimated 99.5% ES: {:.4f}'.format(es)
))
# 使用灰色背景 (lightgray) 來顯示文字框
props = dict(boxstyle='round', facecolor='lightgray', alpha=0.5)
plt.text(0.65, 0.75, textstr, transform=plt.gca().transAxes, fontsize=12,
verticalalignment='top', bbox=props)
plt.xlabel("Loss")
plt.ylabel("Density")
plt.title("EVT (POT Method): GPD Fitting, Tail-Related Risk Estimation & Theoretical t PDF")
plt.legend()
plt.show()

圖中可見:
POT 方法(GPD 擬合):
- 基於超過 95% 閾值的數據進行擬合,利用有限的極端數據來外推尾部風險。
- 參數估計(例如形狀參數 \(\xi\))可能因極端數據較少而導致尾部估計更重,結果 VaR 與 ES 值較高。
- 這種方法更保守,特別適合捕捉實際極端事件下可能出現的嚴重損失。
t 分佈理論估計:
- 假定數據完全服從已知的 t 分佈(本例中 df=3, scale=1/100),直接利用分佈的分位數與密度函數計算 VaR 和 ES。
- 該方法依賴於假設分佈的尾部行為,通常較為樂觀,結果 VaR 與 ES 值較低。
POT 方法能捕捉到尾部數據中的極端現象,對於風險管理來說提供了更保守的估計;而 t 分佈假設可能低估了極端事件的風險。兩者各有合理性,具體選擇應根據數據特性和投資者對極端損失風險的敏感度而定。
5. 結論
風險指標定義:
VaR 為在給定置信水平下預計不會超過的最大損失,而 ES 為損失超過 VaR 時的平均損失。這兩個指標是極端風險管理中重要的量化工具。EVT 的作用:
EVT 為捕捉極端(尾部)風險提供了理論基礎,不依賴於整體分佈假設。兩種主要方法中,Block Maxima 方法通過劃分區塊提取極值,而 POT 方法則利用所有超過高閾值的數據進行建模。POT 方法推導與外推:
以 POT 方法為例,我們定義超額數據 \(Y=X-u\) 並假設其條件分佈滿足正則變化性質,從而推導出廣義帕累托分佈(GPD)的形式:\[ F_u(y) \approx 1-\left(1+\frac{\xi y}{\beta}\right)^{-1/\xi} \]
再根據該模型,利用超過閾值的數據數量 \(n_u\) 與總樣本數 $n$,推導出:
VaR 的公式:
\[ VaR_\alpha = u + \frac{\beta}{\xi}\left[\left(\frac{n}{n_u}(1-\alpha)\right)^{-\xi}-1\right] \]
ES 的公式:
\[ ES_\alpha = u + \frac{\beta}{1-\xi}\left[\left(\frac{n}{n_u}(1-\alpha)\right)^{-\xi}-1\right] \]
參數估計:
POT 方法中常用 MLE 估計 GPD 的參數 \(\xi\) 與 \(\beta\);而 Block Maxima 方法則直接利用區塊極值進行 GEV 擬合。實務中,由於 POT 方法數據利用率高且實現簡單,常被選用。