VaR とリスクエクスポージャー
前の演習では、損失が正規分布に従うと仮定して VaR と CVaR を計算しました。ここでは、scipy.stats に含まれるもう一つ一般的な損失分布である スチューデントの t 分布(T)を用いて VaR を求めます。
投資銀行のポートフォリオ losses に対して、30 日のローリングウィンドウを用い、自由度 30 - 1 = 29 の T 分布から 99% VaR の測度の 配列 を計算します。
まず各ウィンドウの平均と標準偏差を求め、rolling_parameters のリストを作成します。これらを使って 99% VaR の 配列 を計算します。
その後、この 配列 を使って、初期価値が $100,000 のポートフォリオのリスクエクスポージャーをプロットします。リスクエクスポージャーは、損失の確率(ここでは 1%)に、損失額(99% VaR が与える損失)を掛けたものだと復習してください。
この演習はコースの一部です
Pythonで学ぶ定量的リスク管理
演習の手順
scipy.statsからスチューデントのt分布をインポートします。lossesから 30 日ウィンドウの平均muと標準偏差sigmaのベクトルを計算し、rolling_parametersに格納します。rolling_parametersの要素を使って作成した T 分布のリストから、t.ppf()を用いて 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()