Misurare il rischio di un portafoglio

Introduzione all'analisi di portafoglio in Python

Charlotte Werger

Data Scientist

Rischio di un portafoglio

  • Investire è rischioso: i singoli asset salgono o scendono
  • Il rendimento atteso è una variabile casuale
  • La dispersione attorno alla media si misura con la varianza $\sigma^2$, una misura comune di volatilità
  • $\sigma^2 = \frac{\sum\limits_{i=1}^N (X -\mu)^2}{N}$

Il rischio come equilibrio

Introduzione all'analisi di portafoglio in Python

Varianza

$$

  • La varianza di un singolo asset varia: alcuni hanno più o meno dispersione dalla media
  • La varianza del portafoglio non è semplicemente la media pesata delle varianze dei singoli asset
  • Poiché i rendimenti sono correlati, il calcolo è più complesso

Distribuzioni con varianza alta e bassa

Introduzione all'analisi di portafoglio in Python

Come varianza e correlazione influenzano il rischio del portafoglio?

$$

  • La correlazione tra asset 1 e 2 è indicata con $\rho_{1,2}$ e indica quanto si muovono insieme
  • La varianza del portafoglio considera le varianze dei singoli asset ($\sigma_1^2, \sigma_2^2, ecc.$), i pesi nel portafoglio ($w_1, w_2$) e la loro correlazione reciproca
  • La deviazione standard ($\sigma$) è la radice quadrata della varianza ($\sigma^2$); entrambe misurano la volatilità
Introduzione all'analisi di portafoglio in Python

Calcolare la varianza del portafoglio

$$ Formula della varianza di portafoglio

  • $\rho_{1,2} \sigma_1 \sigma_2$ è detta covarianza tra asset 1 e 2
  • La covarianza si può anche scrivere come $ \sigma_{1,2} $
  • Questo ci permette di scrivere:

Formula della varianza di portafoglio riscritta

Introduzione all'analisi di portafoglio in Python

Riscrivere più brevemente la varianza del portafoglio

Formula della varianza di portafoglio

  • Si può riscrivere in notazione matriciale, più pratica nel codice:

Varianza di portafoglio in notazione matriciale

  • In parole semplici, in Python calcoliamo:

    Varianza portafoglio = Pesi trasposti × (Matrice di covarianza × Pesi)

Introduzione all'analisi di portafoglio in Python

Varianza del portafoglio in 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
# Calcola i rendimenti giornalieri dai prezzi
daily_returns = df.pct_change()
# Costruisci una matrice di covarianza per i rendimenti giornalieri
cov_matrix_d = daily_returns.cov()
Introduzione all'analisi di portafoglio in Python

Varianza del portafoglio in Python

# Costruisci una matrice di covarianza dai 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])
Introduzione all'analisi di portafoglio in Python

Varianza del portafoglio in Python

# Calcola la varianza con la formula
port_variance = np.dot(weights.T, np.dot(cov_matrix_a, weights))
print (port_variance)

0.022742232726360567
# Converte la varianza (float) in percentuale
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%
Introduzione all'analisi di portafoglio in Python

Ayo berlatih!

Introduzione all'analisi di portafoglio in Python

Preparing Video For Download...