Medindo o risco de um portfólio

Introdução à Análise de Portfólios em Python

Charlotte Werger

Data Scientist

Risco de um portfólio

  • Investir é arriscado: ativos individuais sobem e descem
  • Retorno esperado é uma variável aleatória
  • A dispersão dos retornos em torno da média é medida pela variância $\sigma^2$, comum para volatilidade
  • $\sigma^2 = \frac{\sum\limits_{i=1}^N (X -\mu)^2}{N}$

Risco como um ato de equilíbrio

Introdução à Análise de Portfólios em Python

Variância

$$

  • A variância de um ativo varia: alguns têm mais ou menos dispersão em torno da média
  • A variância do portfólio não é só a soma ponderada das variâncias dos ativos
  • Como os retornos são correlacionados, fica mais complexo

Distribuições com alta e baixa variância

Introdução à Análise de Portfólios em Python

Como variância e correlação afetam o risco do portfólio?

$$

  • A correlação entre os ativos 1 e 2 é $\rho_{1,2}$ e indica quanto se movem juntos
  • A variância do portfólio considera as variâncias individuais ($\sigma_1^2, \sigma_2^2, etc$), os pesos ($w_1, w_2$) e a correlação entre eles
  • O desvio padrão ($\sigma$) é a raiz da variância ($\sigma^2$); ambos medem a volatilidade
Introdução à Análise de Portfólios em Python

Calculando a variância do portfólio

$$ Fórmula da variância do portfólio

  • $\rho_{1,2} \sigma_1 \sigma_2$ é a covariância entre os ativos 1 e 2
  • A covariância também pode ser escrita como $ \sigma_{1,2} $
  • Isso nos permite escrever:

Fórmula da variância do portfólio reescrita

Introdução à Análise de Portfólios em Python

Reescrevendo a variância do portfólio de forma curta

Fórmula da variância do portfólio

  • Dá para reescrever em notação matricial, mais fácil de usar no código:

Variância do portfólio em notação matricial

  • Em palavras, o que precisamos calcular em Python é:

    Variância do portfólio = Pesos transpostos x (Matriz de covariância x Pesos)

Introdução à Análise de Portfólios em Python

Variância do portfólio em 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
# Calcular retornos diários a partir dos preços
daily_returns = df.pct_change()
# Construir a matriz de covariância dos retornos diários
cov_matrix_d = daily_returns.cov()
Introdução à Análise de Portfólios em Python

Variância do portfólio em Python

# Construir a matriz de covariância a partir de 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])
Introdução à Análise de Portfólios em Python

Variância do portfólio em Python

# Calcular a variância com a fórmula
port_variance = np.dot(weights.T, np.dot(cov_matrix_a, weights))
print (port_variance)

0.022742232726360567
# Converter o float de variância em porcentagem
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%
Introdução à Análise de Portfólios em Python

Vamos praticar!

Introdução à Análise de Portfólios em Python

Preparing Video For Download...