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()