開始使用免費開始

VaR 與風險曝險

先前你在虧損服從常態分配時計算過 VaR 與 CVaR。這裡要用另一個常見的虧損分配——scipy.stats 中的 Student's t-distribution(或稱 T)——來求 VaR。

你將以投資銀行投資組合的 losses 為基礎,使用 30 天滾動視窗,從 T 分配(自由度為 30 - 1 = 29)計算一個 99% VaR 的「陣列」。

首先,計算每個視窗的平均數與標準差,建立 rolling_parameters 清單。接著用這些參數來計算 99% VaR 的「陣列」。

然後,使用這個「陣列」來繪製初始價值為 $100,000 的投資組合之風險曝險。回想一下,風險曝險等於虧損機率(這裡是 1%)乘上虧損金額(也就是 99% VaR 給出的虧損)。

本練習屬於課程

Python 量化風險管理

檢視課程

練習說明

  • scipy.stats 匯入 Student 的 t 分配。
  • losses 計算 30 天視窗的平均數向量 mu 與標準差向量 sigma,並放入 rolling_parameters
  • 使用 t.ppf(),根據 rolling_parameters 各元素建立的 T 分配清單,計算 99% VaR 衡量的 Numpy「陣列」VaR_99
  • 計算並視覺化與 VaR_99 陣列相關的風險曝險。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Import the Student's t-distribution
from scipy.____ import t

# Create rolling window parameter list
mu = losses.rolling(30).____
sigma = losses.rolling(30).____
rolling_parameters = [(29, mu[i], s) for i,s in enumerate(sigma)]

# Compute the 99% VaR array using the rolling window parameters
VaR_99 = np.array( [ t.ppf(____, *params) 
                    for params in ____ ] )

# Plot the minimum risk exposure over the 2005-2010 time period
plt.plot(losses.index, 0.01 * ____ * 100000)
plt.show()
編輯並執行程式碼