Skip to main content

Command Palette

Search for a command to run...

Extreme Value Theory (EVT) and Tail-Related Risk Measures

Updated

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)\):超額數據的條件累積分佈函數。
  • 推導詳解:

    1. 條件分佈定義:

      \[ F_u(y)=\frac{F(u+y)-F(u)}{1-F(u)} \]

    2. 正則變化假設:
      假設 $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}\) 衰減。

    3. 推導條件分佈:
      當 \(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) \]

    4. 外推 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. 結論

  1. 風險指標定義:
    VaR 為在給定置信水平下預計不會超過的最大損失,而 ES 為損失超過 VaR 時的平均損失。這兩個指標是極端風險管理中重要的量化工具。

  2. EVT 的作用:
    EVT 為捕捉極端(尾部)風險提供了理論基礎,不依賴於整體分佈假設。兩種主要方法中,Block Maxima 方法通過劃分區塊提取極值,而 POT 方法則利用所有超過高閾值的數據進行建模。

  3. 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] \]

  4. 參數估計:
    POT 方法中常用 MLE 估計 GPD 的參數 \(\xi\) 與 \(\beta\);而 Block Maxima 方法則直接利用區塊極值進行 GEV 擬合。實務中,由於 POT 方法數據利用率高且實現簡單,常被選用。

35 views