風險衡量

Python 量化風險管理

Jamsheed Shorish

CEO, Shorish Research

損失分配

  • 外匯範例
    • 投資組合以美元計價為 USD 100
    • 風險因子 = EUR / USD 匯率
    • 若 1 EUR = 1 USD,則以歐元計價的投資組合:USD 100 x EUR 1 / USD 1 = EUR 100。
    • r EUR = 1 USD,則:USD 100 x EUR r / 1 USD = EUR 100 x r
    • 損失 = EUR 100 - EUR 100 x r = EUR 100 x (1 - r)
  • 損失分配r 的隨機實現 ⇒ 未來投資組合損失的分配

外匯損失的直方圖

Python 量化風險管理

最大損失

  • 投資組合的最大損失是什麼?
  • 無法以 100% 的確定性界定損失上限
  • 信賴水準:以上限發生的「機率」取代 100% 的確定性
  • 可表達:「有 95% 機會時的最大可能損失是?」這類問題
    • 這裡的信賴水準是 95%
Python 量化風險管理

在險價值(VaR)

  • VaR:在特定信賴水準下衡量「投資組合最大損失」的統計量
  • 常見信賴水準:95%99%99.5%(通常以小數表示)
  • 外匯範例:若有 95% 的時間 EUR/USD 匯率「至少」為 0.40,則:
    • 投資組合價值「至少」為 USD 100 x 0.40 EUR / USD = EUR 40
    • 投資組合損失「至多」為 EUR 40 - EUR 100 = EUR 60
    • 因此 95% 的 VaR 為 EUR 60

EUR/USD 匯率時間序列與 0.40 閾值

Python 量化風險管理

條件在險價值(CVaR)

  • CVaR:在最小損失等於 VaR 的條件下,衡量「期望損失」
  • 等於損失分配「尾端」的期望值
    • $$\textnormal{CVaR}(\alpha) := \frac{1}{1-\alpha}\mathbb{E} \int_{\textnormal{VaR}(\alpha)}^{\bar{x}} x f(x) dx,$$
    • $f(\cdot)$ = 損失分配的機率密度函數(pdf)
    • $\bar{x}$ = 損失的上界(可為無限)
    • $\textnormal{VaR}(\alpha)$ = 信賴水準 $\alpha$ 下的 VaR。
  • 外匯範例
    • 95% CVaR = 在 5% 情況下,投資組合價值「低於」EUR 40 時的期望損失

顯示 VaR 與 CVaR 尾端關係的損失分配圖

Python 量化風險管理

推導 VaR

  1. 指定信賴水準,如 95%(0.95)
  2. 建立 loss 觀測的 Series
  3. 於指定信賴水準計算 loss.quantile()
  4. VaR = 目標信賴水準下計算得到的 .quantile()

  5. scipy.stats 的損失分配也可用百分點函式 .ppf()

loss = pd.Series(observations)

VaR_95 = loss.quantile(0.95) print("VaR_95 = ", VaR_95)
Var_95 = 1.6192834157254088
Python 量化風險管理

推導 CVaR

  1. 指定信賴水準,如 95%(0.95)
  2. 建立或使用來自損失分配的樣本
  3. 在指定信賴水準(如 0.95)計算 VaR
  4. 將 CVaR 視為期望損失計算(常態分配可用 scipy.stats.norm.expect()
losses = pd.Series(scipy.stats.norm.rvs(size=1000))

VaR_95 = scipy.stats.norm.ppf(0.95)
CVaR_95 = (1/(1 - 0.95))*scipy.stats.norm.expect(lambda x: x, lb = VaR_95)
print("CVaR_95 = ", CVaR_95)
CVaR_95 = 2.153595332530393
Python 量化風險管理

視覺化 VaR

  • 由 N(1,3) 抽樣 1000 次的損失分配直方圖

常態分配損失的直方圖

Python 量化風險管理

視覺化 VaR

  • 由 N(1,3) 抽樣 1000 次的損失分配直方圖
    • VaR$_{95}$ = 5.72,即 95% 信賴水準下的 VaR

含 95% VaR 的損失直方圖

Python 量化風險管理

視覺化 VaR

  • 由 N(1,3) 抽樣 1000 次的損失分配直方圖
    • VaR$_{95}$ = 5.72,即 95% 信賴水準下的 VaR
    • VaR$_{99}$ = 7.81,即 99% 信賴水準下的 VaR

含 95% 與 99% VaR 的損失直方圖

Python 量化風險管理

視覺化 VaR

  • 由 N(1,3) 抽樣 1000 次的損失分配直方圖
    • VaR$_{95}$ = 5.72,即 95% 信賴水準下的 VaR
    • VaR$_{99}$ = 7.81,即 99% 信賴水準下的 VaR
    • VaR$_{99.5}$ = 8.78,即 99.5% 信賴水準下的 VaR
  • 隨著信賴水準「提高」,VaR 會「增加」

含 95%、99% 與 99.5% VaR 的損失直方圖

Python 量化風險管理

一起來練習吧!

Python 量化風險管理

Preparing Video For Download...