Teoria moderna de portfólios

Gerenciamento Quantitativo de Risco em Python

Jamsheed Shorish

Computational Economist

O trade-off risco-retorno

  • Fatores de risco: fontes de incerteza que afetam o retorno
  • Intuitivo: mais incerteza (mais risco) compensada por maior retorno
  • Não dá para garantir retorno: é preciso uma medida de retorno esperado
    • retorno histórico médio: proxy do retorno futuro esperado
Gerenciamento Quantitativo de Risco em Python

Apetite ao risco do investidor

  • Pesquisa com investidores: retorno mínimo exigido para um dado nível de risco?
  • A resposta gera um ponto de dados (risco, retorno) do perfil de risco
  • Variando o nível de risco => conjunto de pontos (risco, retorno)
  • Apetite ao risco do investidor: define uma relação quantificada entre risco e retorno
Gerenciamento Quantitativo de Risco em Python

Escolhendo os pesos do portfólio

  • Variar os pesos do portfólio de um portfólio dado => cria um conjunto de pares (risco, retorno)
  • Mudar os pesos = começo da gestão de risco!
  • Objetivo: ajustar pesos para maximizar o retorno esperado, dado o nível de risco
    • Ou: minimizar o risco, dado o retorno esperado
  • Mudar os pesos = ajustar a exposição ao risco do investidor
Gerenciamento Quantitativo de Risco em Python

Teoria moderna de portfólios

  • Portfólio eficiente: pesos que geram o maior retorno esperado para um dado nível de risco
  • Modern Portfolio Theory (MPT), 1952
    • H. M. Markowitz (Prêmio Nobel 1990)
  • O vetor de pesos eficientes $w^\star$ resolve:

Equações do problema de otimização para encontrar o portfólio eficiente

Gerenciamento Quantitativo de Risco em Python

A fronteira eficiente

  • Calcular muitos portfólios eficientes para níveis de risco diferentes
  • Fronteira eficiente: lugar geométrico de pares (risco, retorno) gerados por portfólios eficientes
  • Biblioteca PyPortfolioOpt: ferramentas otimizadas para MPT
    • Classe EfficientFrontier: gera um portfólio ótimo por vez
    • Classe Constrained Line Algorithm (CLA): gera toda a fronteira eficiente
      • Requer a matriz de covariância dos retornos
      • Requer um proxy do retorno futuro esperado: retornos históricos médios
Gerenciamento Quantitativo de Risco em Python

Portfólio de banco de investimento 2005 - 2010

  • Retornos esperados: dados históricos
  • Matriz de covariância: Covariance Shrinkage melhora a eficiência da estimativa
  • Objeto Constrained Line Algorithm CLA
  • Portfólio de variância mínima: cla.min_volatility()
  • Fronteira eficiente: cla.efficient_frontier()

 

expected_returns = mean_historical_return(prices)

efficient_cov = CovarianceShrinkage(prices).ledoit_wolf()
cla = CLA(expected_returns, efficient_cov)
minimum_variance = cla.min_volatility()
(ret, vol, weights) = cla.efficient_frontier()
Gerenciamento Quantitativo de Risco em Python

Visualizando a fronteira eficiente

  • Gráfico de dispersão de pares (vol, ret)

A fronteira eficiente plotada como uma série de pares (risco, retorno)

Gerenciamento Quantitativo de Risco em Python

Visualizando a fronteira eficiente

  • Gráfico de dispersão de pares (vol, ret)
  • Portfólio de variância mínima: menor volatilidade entre todos os portfólios eficientes

O portfólio de variância mínima destacado no gráfico da fronteira eficiente

Gerenciamento Quantitativo de Risco em Python

Visualizando a fronteira eficiente

  • Gráfico de dispersão de pares (vol, ret)
  • Portfólio de variância mínima: menor volatilidade entre todos os portfólios eficientes
  • Aumentando o apetite ao risco: mover-se ao longo da fronteira

Movimento ao longo da fronteira eficiente mostrado como uma seta na direção de maior risco e maior retorno

Gerenciamento Quantitativo de Risco em Python

Vamos praticar!

Gerenciamento Quantitativo de Risco em Python

Preparing Video For Download...