Bem-vindo/a!

Gerenciamento Quantitativo de Risco em Python

Dr. Jamsheed Shorish

Computational Economist

Sobre mim

  • Economista Computacional
  • Especializado em:
    • precificação de ativos
    • tecnologias financeiras ("FinTech")
    • aplicações computacionais em economia e finanças
  • Co-instrutor do curso "Economic Analysis of the Digital Economy" na ANU
  • Shorish Research (Bélgica): aplicações computacionais para negócios
Gerenciamento Quantitativo de Risco em Python

O que é Gerenciamento Quantitativo de Risco?

  • Gerenciamento Quantitativo de Risco: estudo da incerteza mensurável
  • Incerteza:
    • Resultados futuros são desconhecidos
    • Resultados impactam decisões de planejamento
  • Gerenciamento de risco: mitigar (reduzir efeitos de) resultados adversos
  • Incerteza mensurável: identificar fatores para medir o risco
    • Exemplo: seguro contra incêndio. Quais fatores aumentam a chance de incêndio?
  • Este curso: foco no risco associado a um portfólio financeiro
Gerenciamento Quantitativo de Risco em Python

Gerenciamento de risco e a Crise Financeira Global

  • Grande Recessão (2007 - 2010)
    • Perda de crescimento global acima de US$ 2 trilhões
    • Estados Unidos: quase US$ 10 trilhões em riqueza das famílias
    • Bolsas dos EUA perderam aprox. US$ 8 trilhões em valor
  • Crise Financeira Global (2007-2009)
    • Mudanças em larga escala nos valores fundamentais dos ativos
    • Grande incerteza sobre retornos futuros
    • Alta volatilidade dos retornos de ativos
    • Gerenciamento de risco foi crucial para o sucesso ou fracasso
Gerenciamento Quantitativo de Risco em Python

Recap rápido: portfólios financeiros

  • Portfólio financeiro
    • Conjunto de ativos com retornos futuros incertos
    • Ações
    • Títulos (bonds)
    • Posições em câmbio ("forex")
    • Opções de ações
  • Desafio: quantificar o risco para gerir a incerteza
    • Tomar decisões de investimento ótimas
    • Maximizar o retorno do portfólio, dado o apetite a risco
Gerenciamento Quantitativo de Risco em Python

Quantificando o retorno

  • Retorno do portfólio: soma ponderada dos retornos dos ativos
    • Biblioteca de análise de dados Pandas
    • DataFrame prices
    • Método .pct_change()
    • Método .dot() de returns
prices = pandas.read_csv("portfolio.csv")

returns = prices.pct_change()
weights = (weight_1, weight_2, ...)
portfolio_returns = returns.dot(weights)
Gerenciamento Quantitativo de Risco em Python

Quantificando o risco

  • Volatilidade do retorno do portfólio = risco
  • Calcule a volatilidade via matriz de covariância
  • Use o método .cov() do DataFrame returns e anualize

 

 

covariance = returns.cov()*252

print(covariance)

Exemplo de matriz de covariância entre 4 ativos

Gerenciamento Quantitativo de Risco em Python

Quantificando o risco

  • Volatilidade do retorno do portfólio = risco
  • Calcule a volatilidade via matriz de covariância
  • Use o método .cov() do DataFrame returns e anualize
  • A diagonal de covariance são as variâncias dos ativos  

   

covariance = returns.cov()*252

print(covariance)

Exemplo de matriz de covariância com variâncias destacadas na diagonal

Gerenciamento Quantitativo de Risco em Python

Quantificando o risco

  • Volatilidade do retorno do portfólio = risco
  • Calcule a volatilidade via matriz de covariância
  • Use o método .cov() do DataFrame returns e anualize
  • A diagonal de covariance são as variâncias dos ativos
  • Os fora da diagonal de covariance são as covariâncias entre ativos
covariance = returns.cov()*252

print(covariance)

Exemplo de matriz de covariância com covariâncias destacadas fora da diagonal

Gerenciamento Quantitativo de Risco em Python

Risco do portfólio

  • Depende dos weights dos ativos no portfólio
  • A variância do portfólio $\sigma_p^2$ é $$ \sigma_p^2 := w^T \cdot \textnormal{Cov}_p \cdot w $$
  • Multiplicação de matrizes pode ser feita com o operador @ no Python
  • Usa-se geralmente o desvio padrão em vez da variância
weights = [0.25, 0.25, 0.25, 0.25] # Supõe quatro ativos no portfólio

portfolio_variance = np.transpose(weights) @ covariance @ weights
portfolio_volatility = np.sqrt(portfolio_variance)
Gerenciamento Quantitativo de Risco em Python

Série temporal da volatilidade

  • Também é possível calcular a volatilidade do portfólio ao longo do tempo
  • Use uma "janela" para calcular em um período fixo (ex.: semana, "mês" de 30 dias)
  • Series.rolling() cria a janela
  • Observe a tendência da volatilidade e possíveis eventos extremos
windowed = portfolio_returns.rolling(30)

volatility = windowed.std()*np.sqrt(252) volatility.plot() .set_ylabel("Standard Deviation...")

Gráfico de janela móvel de 30 dias da volatilidade anualizada do retorno

Gerenciamento Quantitativo de Risco em Python

Vamos praticar!

Gerenciamento Quantitativo de Risco em Python

Preparing Video For Download...