VaR et exposition au risque
Auparavant, vous avez calculé la VaR et la CVaR lorsque les pertes suivaient une loi normale. Ici, vous allez estimer la VaR en utilisant une autre loi de pertes courante, la loi t de Student (ou T) fournie dans scipy.stats.
Vous allez calculer un tableau de mesures de VaR à 99 % selon la distribution T (avec 30 - 1 = 29 degrés de liberté), en utilisant des fenêtres glissantes de 30 jours à partir des losses du portefeuille d'une banque d'investissement.
Vous commencerez par calculer la moyenne et l'écart type de chaque fenêtre afin de créer une liste de rolling_parameters. Vous les utiliserez pour calculer le tableau des mesures de VaR à 99 %.
Ensuite, vous utiliserez ce tableau pour tracer l'exposition au risque d'un portefeuille d'une valeur initiale de 100 000 $. Rappelons que l'exposition au risque correspond à la probabilité de perte (ici 1 %) multipliée par le montant de la perte (donné par la VaR à 99 %).
Cette activité fait partie du cours
Gestion quantitative des risques en Python
Instructions de l’exercice
- Importez la distribution
tde Student depuisscipy.stats. - Calculez, à partir de
losses, les vecteurs de moyennemuet d'écart typesigmasur des fenêtres de 30 jours, puis placez-les dansrolling_parameters. - Calculez un tableau Numpy de mesures de VaR à 99 %
VaR_99à l'aide det.ppf(), à partir d'une liste de distributions T utilisant les éléments derolling_parameters. - Calculez et visualisez l'exposition au risque associée au tableau
VaR_99.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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()