Mäta risk i en portfölj

Introduktion till portföljanalys i Python

Charlotte Werger

Data Scientist

Portföljrisk

  • Investering är riskfyllt: enskilda tillgångar stiger eller faller
  • Förväntad avkastning är en slumpvariabel
  • Hur avkastningen sprids kring medelvärdet mäts med variansen $\sigma^2$, ett vanligt mått på volatilitet
  • $\sigma^2 = \frac{\sum\limits_{i=1}^N (X -\mu)^2}{N}$

Risk som en balansgång

Introduktion till portföljanalys i Python

Varians

$$

  • Variansen för en enskild tillgång varierar: spridningen kring medelvärdet skiljer sig åt
  • Portföljens varians är inte bara en viktad summa av de ingående tillgångarnas varianser
  • Eftersom tillgångarnas avkastningar är korrelerade blir beräkningen komplex

Fördelningar med hög och låg varians

Introduktion till portföljanalys i Python

Hur hänger varians och korrelation ihop med portföljrisk?

$$

  • Korrelationen mellan tillgång 1 och 2 betecknas $\rho_{1,2}$ och anger i vilken grad tillgångarna rör sig tillsammans
  • Portföljvariansen tar hänsyn till de enskilda tillgångarnas varianser ($\sigma_1^2, \sigma_2^2, etc$), deras vikter i portföljen ($w_1, w_2$) samt deras korrelation med varandra
  • Standardavvikelsen ($\sigma$) är kvadratroten ur variansen ($\sigma^2$) – båda är mått på volatilitet
Introduktion till portföljanalys i Python

Beräkna portföljvarians

$$ Formel för portföljvarians

  • $\rho_{1,2} \sigma_1 \sigma_2$ kallas kovariansen mellan tillgång 1 och 2
  • Kovariansen kan även skrivas som $ \sigma_{1,2} $
  • Det ger oss:

Omskriven formel för portföljvarians

Introduktion till portföljanalys i Python

Förkorta uttrycket för portföljvarians

Formel för portföljvarians

  • Detta kan skrivas om i matrisnotation, vilket är enklare att använda i kod:

Portföljvarians i matrisnotation

  • Det vi behöver beräkna i Python är:

    Portföljvarians = Vikter transponerade x (Kovariansmatris x Vikter)

Introduktion till portföljanalys i Python

Portföljvarians i 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()
Introduktion till portföljanalys i Python

Portföljvarians i 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])
Introduktion till portföljanalys i Python

Portföljvarians i 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%
Introduktion till portföljanalys i Python

Nu kör vi en övning!

Introduktion till portföljanalys i Python

Preparing Video For Download...