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 EUROS si 1 EUR = 1 USD : USD 100 × EUR 1 / USD 1 = EUR 100.
    • Valeur en EUROS 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 r ⇒ distribution 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 ?
  • Les pertes ne peuvent pas être bornées avec 100 % de certitude
  • Niveau de confiance : remplacer la certitude absolue par la probabilité d'une borne supérieure
  • Peut s'exprimer ainsi : « 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 notés en décimal)
  • 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 attendue é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)$ = densité de probabilité de la distribution des pertes
    • $\bar{x}$ = borne supérieure de la perte (peut être l'infini)
    • $\textnormal{VaR}(\alpha)$ = VaR au niveau de confiance $\alpha$.
  • Exemple Forex :
    • CVaR 95 % = perte attendue pour 5 % des 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 choisi
  4. VaR = .quantile() calculé au niveau visé

  5. Distribution des pertes via scipy.stats : la fonction quantile .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 spécifié, 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 VaR augmente quand le niveau de confiance s'élève

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...