Gerenciamento de risco com VaR e CVaR

Gerenciamento Quantitativo de Risco em Python

Jamsheed Shorish

Computational Economist

Gestão de risco via teoria moderna de portfólios

  • Portfólio eficiente
    • Pesos que maximizam o retorno dado um nível de risco
  • Fronteira eficiente: conjunto de pontos (risco, retorno) gerados por portfólios eficientes
    • Cada ponto = otimização de pesos do portfólio
  • Criação de portfólio/fronteira eficiente: Teoria Moderna de Portfólios

Gráfico da fronteira eficiente

Gerenciamento Quantitativo de Risco em Python

Incorporando Value at Risk na MPT

  • Teoria Moderna de Portfólios (MPT): otimização "média-variância"
    • Maior retorno esperado
    • Nível de risco (volatilidade) é dado
    • Função objetivo: retorno esperado
  • VaR/CVaR: medem risco sobre a distribuição de perdas
  • Adaptar MPT para otimizar sobre a distribuição de perdas vs. retorno esperado
Gerenciamento Quantitativo de Risco em Python

Um novo objetivo: minimizar o CVaR

  • Mudar o objetivo da otimização do portfólio
    • objetivo média-variância: maximizar o retorno médio esperado
    • objetivo CVaR: minimizar a perda condicional esperada em um nível de confiança
  • Exemplo: Distribuição de perdas
    • VaR: perda máxima com 95% de confiança
    • Otimização: pesos que minimizam o CVaR
    • CVaR: perda esperada dado pelo menos a perda VaR (piores 5% dos casos)
  • Encontrar a menor perda esperada nos piores 100% - 95% = 5% dos resultados
Gerenciamento Quantitativo de Risco em Python

O problema de gestão de risco

  • Selecionar os pesos ótimos $w^\star$ como solução de

cvar_minimization

  • Lembre: $f(x)$ = função densidade de probabilidade da perda do portfólio

  • PyPortfolioOpt: definir a minimização de CVaR como novo objetivo

Gerenciamento Quantitativo de Risco em Python

Minimização de CVaR com PyPortfolioOpt

  • Crie um objeto EfficientCVaR com retornos dos ativos returns
  • Calcule os pesos ótimos usando o método .min_cvar()

 

ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)

optimal_weights = ec.min_cvar()
Gerenciamento Quantitativo de Risco em Python

Média-variância vs. gestão de risco por CVaR

  • Portfólio de mínima volatilidade (média-variância), ativos de bancos de investimento 2005-2010
ef = EfficientFrontier(None, e_cov)

min_vol_weights = ef.min_volatility()
print(min_vol_weights)
{'Citibank': 0.0,
 'Morgan Stanley': 5.0784330940519306e-18,
 'Goldman Sachs': 0.6280157234640608,
 'J.P. Morgan': 0.3719842765359393}
Gerenciamento Quantitativo de Risco em Python

Média-variância vs. gestão de risco por CVaR

  • Portfólio que minimiza CVaR, ativos de bancos de investimento 2005-2010
ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)
min_cvar_weights = ec.min_cvar()

print(min_cvar_weights)

 

{'Citibank': 0.0,
 'Morgan Stanley': 0.0,
 'Goldman Sachs': 0.669324359403484,
 'J.P. Morgan': 0.3306756405965026}
Gerenciamento Quantitativo de Risco em Python

Vamos praticar!

Gerenciamento Quantitativo de Risco em Python

Preparing Video For Download...