Вимірювання ризику портфеля

Вступ до Portfolio Analysis у Python

Charlotte Werger

Data Scientist

Ризик портфеля

  • Інвестування ризиковане: окремі активи зростають або падають
  • Очікувана дохідність — це випадкова змінна
  • Розкидання дохідностей навколо середнього вимірює дисперсія $\sigma^2$ — поширена міра волатильності
  • $\sigma^2 = \frac{\sum\limits_{i=1}^N (X -\mu)^2}{N}$

Ризик як балансування

Вступ до Portfolio Analysis у Python

Дисперсія

$$

  • Дисперсія окремого активу різниться: деякі мають більший чи менший розкид навколо середнього
  • Дисперсія портфеля не дорівнює просто зваженим дисперсіям складових активів
  • Оскільки дохідності активів корельовані, це ускладнює розрахунок

Розподіли з великою та малою дисперсією

Вступ до Portfolio Analysis у Python

Як дисперсія та кореляція впливають на ризик портфеля?

$$

  • Кореляцію між активами 1 і 2 позначають $\rho_{1,2}$; вона показує, наскільки активи рухаються разом
  • Дисперсія портфеля враховує дисперсії окремих активів ($\sigma_1^2, \sigma_2^2, etc$), ваги активів у портфелі ($w_1, w_2$) і їхню кореляцію між собою
  • Стандартне відхилення ($\sigma$) — це корінь із дисперсії ($\sigma^2$); обидві — міри волатильності
Вступ до Portfolio Analysis у Python

Обчислення дисперсії портфеля

$$ Формула дисперсії портфеля

  • $\rho_{1,2} \sigma_1 \sigma_2$ називається коваріацією між активами 1 і 2
  • Коваріацію також записують як $ \sigma_{1,2} $
  • Це дає змогу записати:

Формула дисперсії портфеля в іншому вигляді

Вступ до Portfolio Analysis у Python

Скорочений запис дисперсії портфеля

Формула дисперсії портфеля

  • Це можна переписати у матричному вигляді — так зручніше в коді:

Дисперсія портфеля у матричному вигляді

  • Словами, що потрібно обчислити в python:

    Дисперсія портфеля = транспоновані ваги × (коваріаційна матриця × ваги)

Вступ до Portfolio Analysis у Python

Дисперсія портфеля в 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()
Вступ до Portfolio Analysis у Python

Дисперсія портфеля в 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])
Вступ до Portfolio Analysis у Python

Дисперсія портфеля в 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%
Вступ до Portfolio Analysis у Python

Давайте потренуємось!

Вступ до Portfolio Analysis у Python

Preparing Video For Download...