Měření rizika portfolia

Introduction to Portfolio Analysis in Python

Charlotte Werger

Data Scientist

Riziko portfolia

  • Investování je rizikové: hodnota aktiv kolísá
  • Očekávaný výnos je náhodná proměnná
  • Rozptýlení výnosů kolem průměru měří rozptyl $\sigma^2$, běžná míra volatility
  • $\sigma^2 = \frac{\sum\limits_{i=1}^N (X -\mu)^2}{N}$

Riziko jako rovnováha

Introduction to Portfolio Analysis in Python

Rozptyl

$$

  • Rozptyl jednotlivých aktiv se liší: některá mají větší či menší rozptýlení kolem průměru
  • Rozptyl portfolia není prostým váženým průměrem rozptylů jednotlivých aktiv
  • Výnosy aktiv jsou korelované, což výpočet komplikuje

Rozdělení s vysokým a nízkým rozptylem

Introduction to Portfolio Analysis in Python

Vztah rozptylu a korelace k riziku portfolia

$$

  • Korelace mezi aktivem 1 a 2 je označena $\rho_{1,2}$ a vyjadřuje, do jaké míry se aktiva pohybují společně
  • Rozptyl portfolia zohledňuje individuální rozptyly aktiv ($\sigma_1^2, \sigma_2^2$ atd.), jejich váhy ($w_1, w_2$) a vzájemnou korelaci
  • Směrodatná odchylka ($\sigma$) je odmocnina rozptylu ($\sigma^2$); obě jsou mírami volatility
Introduction to Portfolio Analysis in Python

Výpočet rozptylu portfolia

$$ Vzorec pro rozptyl portfolia

  • $\rho_{1,2} \sigma_1 \sigma_2$ se nazývá kovariance mezi aktivem 1 a 2
  • Kovarianci lze také zapsat jako $ \sigma_{1,2} $
  • To nám umožňuje zapsat:

Přepsaný vzorec pro rozptyl portfolia

Introduction to Portfolio Analysis in Python

Zkrácení vzorce pro rozptyl portfolia

Vzorec pro rozptyl portfolia

  • To lze přepsat do maticového zápisu, který je snáze použitelný v kódu:

Rozptyl portfolia v maticovém zápisu

  • Co je třeba vypočítat v Pythonu:

    Rozptyl portfolia = transponovaná váhová matice x (kovarianční matice x Váhy)

Introduction to Portfolio Analysis in Python

Rozptyl portfolia v Pythonu

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 to Portfolio Analysis in Python

Rozptyl portfolia v Pythonu

# 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 to Portfolio Analysis in Python

Rozptyl portfolia v Pythonu

# 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 to Portfolio Analysis in Python

Pojďme si procvičit!

Introduction to Portfolio Analysis in Python

Preparing Video For Download...