Mesurer le risque d’un portefeuille

Introduction à l’analyse de portefeuille en Python

Charlotte Werger

Data Scientist

Risque d’un portefeuille

  • Investir est risqué : les actifs individuels montent ou descendent
  • Le rendement attendu est une variable aléatoire
  • L’écart autour de la moyenne se mesure par la variance $\sigma^2$, indicateur courant de volatilité
  • $\sigma^2 = \frac{\sum\limits_{i=1}^N (X -\mu)^2}{N}$

Le risque comme exercice d’équilibre

Introduction à l’analyse de portefeuille en Python

Variance

$$

  • La variance d’un actif varie : certains ont plus ou moins d’écart autour de la moyenne
  • La variance du portefeuille n’est pas la somme pondérée des variances individuelles
  • Comme les rendements sont corrélés, cela se complexifie

Distributions à variance élevée et faible

Introduction à l’analyse de portefeuille en Python

Lien entre variance, corrélation et risque du portefeuille

$$

  • La corrélation entre les actifs 1 et 2, notée $\rho_{1,2}$, indique à quel point ils évoluent ensemble
  • La variance du portefeuille tient compte des variances individuelles ($\sigma_1^2, \sigma_2^2, etc$), des poids ($w_1, w_2$) et de leur corrélation
  • L’écart type ($\sigma$) est la racine carrée de la variance ($\sigma^2$) ; tous deux mesurent la volatilité
Introduction à l’analyse de portefeuille en Python

Calculer la variance d’un portefeuille

$$ Formule de la variance de portefeuille

  • $\rho_{1,2} \sigma_1 \sigma_2$ est la covariance entre les actifs 1 et 2
  • La covariance s’écrit aussi $ \sigma_{1,2} $
  • Cela permet d’écrire :

Formule de variance réécrite

Introduction à l’analyse de portefeuille en Python

Raccourcir l’écriture de la variance du portefeuille

Formule de la variance de portefeuille

  • On peut la réécrire en notation matricielle, plus pratique en code :

Variance de portefeuille en notation matricielle

  • En clair, à calculer en Python :

    Variance du portefeuille = Poids transposés × (Matrice de covariance × Poids)

Introduction à l’analyse de portefeuille en Python

Variance de portefeuille en Python

price_data.head(2)

ticker        AAPL       FB        GE       GM       WMT
date                    
2018-03-21    171.270    169.39    13.88    37.58    88.18
2018-03-22    168.845    164.89    13.35    36.35    87.14
# Calculate daily returns from prices
daily_returns = df.pct_change()
# Construct a covariance matrix for the daily returns data
cov_matrix_d = daily_returns.cov()
Introduction à l’analyse de portefeuille en Python

Variance de portefeuille en Python

# Construct a covariance matrix from the daily_returns
cov_matrix_d = (daily_returns.cov())*250
print (cov_matrix_d)

        AAPL          FB          GE          GM          WMT                    
AAPL    0.053569    0.026822    0.013466    0.018119    0.010798
FB      0.026822    0.062351    0.015298    0.017250    0.008765
GE      0.013466    0.015298    0.045987    0.021315    0.009513
GM      0.018119    0.017250    0.021315    0.058651    0.011894
WMT     0.010798    0.008765    0.009513    0.011894    0.041520
weights = np.array([0.2, 0.2, 0.2, 0.2, 0.2])
Introduction à l’analyse de portefeuille en Python

Variance de portefeuille en Python

# Calculate the variance with the formula
port_variance = np.dot(weights.T, np.dot(cov_matrix_a, weights))
print (port_variance)

0.022742232726360567
# Just converting the variance float into a percentage
print(str(np.round(port_variance, 3) * 100) + '%')

2.3%
port_stddev = np.sqrt(np.dot(weights.T, np.dot(cov_matrix_a, weights)))
print(str(np.round(port_stddev, 3) * 100) + '%')
15.1%
Introduction à l’analyse de portefeuille en Python

Passons à la pratique !

Introduction à l’analyse de portefeuille en Python

Preparing Video For Download...