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