Mesurer le risque

Gestion quantitative des risques en Python

Jamsheed Shorish

CEO, Shorish Research

La distribution des pertes

  • Exemple Forex :
    • Valeur du portefeuille en dollars US : USD 100
    • Facteur de risque = taux de change EUR / USD
    • Valeur en EURO si 1 EUR = 1 USD : USD 100 × EUR 1 / USD 1 = EUR 100.
    • Valeur en EURO si r EUR = 1 USD : USD 100 × EUR r / 1 USD = EUR 100 × r
    • Perte = EUR 100 − EUR 100 × r = EUR 100 × (1 − r)
  • Distribution des pertes : réalisations aléatoires de rdistribution des pertes futures du portefeuille

Histogram of forex losses

Gestion quantitative des risques en Python

Perte maximale

  • Quelle est la perte maximale d'un portefeuille ?
  • On ne peut pas borner les pertes avec 100 % de certitude
  • Niveau de confiance : remplacer la certitude de 100 % par la probabilité d'une borne supérieure
  • On peut formuler : « Quelle est la perte maximale qui surviendrait 95 % du temps ? »
    • Ici, le niveau de confiance est de 95 %.
Gestion quantitative des risques en Python

Value at Risk (VaR)

  • VaR : statistique mesurant la perte maximale du portefeuille à un niveau de confiance donné
  • Niveaux de confiance usuels : 95 %, 99 % et 99,5 % (souvent en décimales)
  • Exemple Forex : si, 95 % du temps, le taux EUR/USD est au moins 0,40, alors :
    • la valeur du portefeuille est au moins USD 100 × 0,40 EUR/USD = EUR 40,
    • la perte du portefeuille est au plus EUR 40 − EUR 100 = EUR 60,
    • donc la VaR à 95 % est de EUR 60.

Time series of EUR/USD exchange rate with 0.40 cutoff

Gestion quantitative des risques en Python

Conditional Value at Risk (CVaR)

  • CVaR : mesure la perte espérée étant donné une perte minimale égale à la VaR
  • Égale à la valeur attendue de la queue de la distribution des pertes :
    • $$\textnormal{CVaR}(\alpha) := \frac{1}{1-\alpha}\mathbb{E} \int_{\textnormal{VaR}(\alpha)}^{\bar{x}} x f(x) dx,$$
    • $f(\cdot)$ = pdf de la distribution des pertes
    • $\bar{x}$ = borne supérieure des pertes (peut être l'infini)
    • $\textnormal{VaR}(\alpha)$ = VaR au niveau de confiance $\alpha$.
  • Exemple Forex :
    • CVaR 95 % = perte attendue pour les 5 % de cas où la valeur du portefeuille est inférieure à EUR 40

Plot of the loss distribution, showing the VaR and CVaR tail dependence

Gestion quantitative des risques en Python

Calculer la VaR

  1. Indiquer le niveau de confiance, p. ex. 95 % (0,95)
  2. Créer une Series d'observations loss
  3. Calculer loss.quantile() au niveau de confiance indiqué
  4. VaR = .quantile() calculé au niveau souhaité

  5. Distribution des pertes avec scipy.stats : la fonction centile .ppf() peut aussi être utilisée

loss = pd.Series(observations)

VaR_95 = loss.quantile(0.95) print("VaR_95 = ", VaR_95)
Var_95 = 1.6192834157254088
Gestion quantitative des risques en Python

Calculer la CVaR

  1. Indiquer le niveau de confiance, p. ex. 95 % (0,95)
  2. Créer ou utiliser un échantillon de la distribution des pertes
  3. Calculer la VaR au niveau de confiance indiqué, p. ex. 0,95
  4. Calculer la CVaR comme perte attendue (loi normale : scipy.stats.norm.expect() le fait).
losses = pd.Series(scipy.stats.norm.rvs(size=1000))

VaR_95 = scipy.stats.norm.ppf(0.95)
CVaR_95 = (1/(1 - 0.95))*scipy.stats.norm.expect(lambda x: x, lb = VaR_95)
print("CVaR_95 = ", CVaR_95)
CVaR_95 = 2.153595332530393
Gestion quantitative des risques en Python

Visualiser la VaR

  • Histogramme de la distribution des pertes pour 1 000 tirages de N(1,3)

Histogram of normally-distributed losses

Gestion quantitative des risques en Python

Visualiser la VaR

  • Histogramme de la distribution des pertes pour 1 000 tirages de N(1,3)
    • VaR$_{95}$ = 5,72, soit la VaR à 95 % de confiance

Histogram of losses with the 95% VaR

Gestion quantitative des risques en Python

Visualiser la VaR

  • Histogramme de la distribution des pertes pour 1 000 tirages de N(1,3)
    • VaR$_{95}$ = 5,72, soit la VaR à 95 % de confiance
    • VaR$_{99}$ = 7,81, soit la VaR à 99 % de confiance

Histogram of losses with the 95% and 99% VaR

Gestion quantitative des risques en Python

Visualiser la VaR

  • Histogramme de la distribution des pertes pour 1 000 tirages de N(1,3)
    • VaR$_{95}$ = 5,72, soit la VaR à 95 % de confiance
    • VaR$_{99}$ = 7,81, soit la VaR à 99 % de confiance
    • VaR$_{99,5}$ = 8,78, soit la VaR à 99,5 % de confiance
  • La mesure VaR augmente quand le niveau de confiance monte

Histogram of losses with the 95%, 99% and 99.5% VaR

Gestion quantitative des risques en Python

Passons à la pratique !

Gestion quantitative des risques en Python

Preparing Video For Download...