Portfólios de Markowitz

Introdução ao Gerenciamento de Risco de Portfólio em Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

100.000 portfólios gerados aleatoriamente

Introdução ao Gerenciamento de Risco de Portfólio em Python

Índice de Sharpe

O índice de Sharpe mede o retorno ajustado ao risco.

Para calcular a versão de 1966 do índice de Sharpe:

$$ S = \frac{ R_a - r_f }{\sigma_a} $$

  • S: Índice de Sharpe
  • $ R_a $: Retorno do ativo
  • $ r_f $: Taxa livre de risco
  • $ \sigma_a $: Volatilidade do ativo
Introdução ao Gerenciamento de Risco de Portfólio em Python

A fronteira eficiente

Introdução ao Gerenciamento de Risco de Portfólio em Python

Os portfólios de Markowitz

Qualquer ponto na fronteira eficiente é um portfólio ótimo.

Dois pontos comuns são os Portfólios de Markowitz:

  • MSR: portfólio de Máximo Sharpe Ratio
  • GMV: portfólio de Volatilidade Global Mínima

Introdução ao Gerenciamento de Risco de Portfólio em Python

Escolhendo um portfólio

Como escolher o melhor portfólio?

  • Procure um portfólio na borda da fronteira eficiente
  • Retorno maior exige aceitar mais risco
Introdução ao Gerenciamento de Risco de Portfólio em Python

Selecionando o MSR em Python

Supondo um DataFrame df de portfólios aleatórios com colunas Volatility e Returns:

numstocks = 5
risk_free = 0
df["Sharpe"] = (df["Returns"] - risk_free) / df["Volatility"]
MSR = df.sort_values(by=['Sharpe'], ascending=False)
MSR_weights = MSR.iloc[0, 0:numstocks]
np.array(MSR_weights)
array([0.15, 0.35, 0.10, 0.15, 0.25])
Introdução ao Gerenciamento de Risco de Portfólio em Python

Desempenho passado não garante retornos futuros

Mesmo que um portfólio de Máximo Sharpe Ratio pareça ótimo, na prática é muito difícil prever retornos.

Introdução ao Gerenciamento de Risco de Portfólio em Python

Selecionando o GMV em Python

Supondo um DataFrame df de portfólios aleatórios com colunas Volatility e Returns:

numstocks = 5
GMV = df.sort_values(by=['Volatility'], ascending=True)
GMV_weights = GMV.iloc[0, 0:numstocks]
np.array(GMV_weights)
array([0.25, 0.15, 0.35, 0.15, 0.10])
Introdução ao Gerenciamento de Risco de Portfólio em Python

Vamos praticar!

Introdução ao Gerenciamento de Risco de Portfólio em Python

Preparing Video For Download...