Índice de Sharpe e índice de Sortino

Negociação Financeira em Python

Chelsea Yang

Data Science Instructor

Qual estratégia tem melhor desempenho?

$$

Estratégia 1:
  • Retorno: 15%
  • Volatilidade (desvio padrão): 30%

$$

Estratégia 2:
  • Retorno: 10%
  • Volatilidade (desvio padrão): 8%
Negociação Financeira em Python

Retorno ajustado ao risco

  • Tornar o desempenho comparável entre estratégias
  • Uma razão que descreve o risco para obter o retorno

Risco vs. retorno

Negociação Financeira em Python

Índice de Sharpe

$$ \text{Sharpe Ratio} = (R_p - R_r)/\sigma_p $$

$$

  • $R_p $: Retorno da estratégia, carteira, ativo etc.
  • $R_r $: Taxa livre de risco
  • $\sigma_p $: Desvio padrão do excesso de retorno ($R_p-R_f$)

$$

  • Quanto maior o índice de Sharpe, mais atraente o retorno
Negociação Financeira em Python

Agora, escolha de novo

$$

Estratégia 1:
  • Retorno: 15%
  • Volatilidade (desvio padrão): 30%
  • Índice de Sharpe: 15%/30% = 0,5

$$

Estratégia 2:
  • Retorno: 10%
  • Volatilidade (desvio padrão): 8%
  • Índice de Sharpe: 10%/8% = 1,25
Negociação Financeira em Python

Obter índice de Sharpe do backtest do bt

resInfo = bt_result.stats
# Obter índices de Sharpe nas estatísticas do backtest
print('Sharpe ratio diário: %.2f'% resInfo.loc['daily_sharpe'])
print('Sharpe ratio mensal %.2f'% resInfo.loc['monthly_sharpe'])
print('Sharpe ratio anual %.2f'% resInfo.loc['yearly_sharpe'])
Sharpe ratio diário: 0.49
Sharpe ratio mensal 0.48
Sharpe ratio anual 1.34
Negociação Financeira em Python

Calcular índice de Sharpe manualmente

# Obter retorno anual
annual_return = resInfo.loc['yearly_mean']

# Obter volatilidade anual volatility = resInfo.loc['yearly_vol']
# Calcular índice de Sharpe manualmente sharpe_ratio = annual_return / volatility print('Sharpe ratio anual %.2f'% sharpe_ratio)
Sharpe ratio anual 1.34
Negociação Financeira em Python

Limitações do índice de Sharpe

  • Penaliza a volatilidade "boa" e "ruim"
  • A volatilidade positiva pode distorcer o índice para baixo

Limitações do índice de Sharpe

Negociação Financeira em Python

Índice de Sortino

$$ \text{Sortino Ratio} = (R_p - R_r)/\sigma_d $$

  • $R_p $: Retorno da estratégia, carteira, ativo etc
  • $R_r $: Taxa livre de risco
  • $\sigma_d $: Desvio negativo do excesso de retorno ($R_p-R_f$)

Volatilidade de queda

Negociação Financeira em Python

Obter índice de Sortino do backtest do bt

resInfo = bt_result.stats
# Obter índice de Sortino nas estatísticas do backtest
print('Sortino ratio diário: %.2f'% resInfo.loc['daily_sortino'])
print('Sortino ratio mensal %.2f'% resInfo.loc['monthly_sortino'])
print('Sortino ratio anual %.2f'% resInfo.loc['yearly_sortino'])
Sortino ratio diário: 0.70
Sortino ratio mensal 0.86
Sortino ratio anual 2.29
Negociação Financeira em Python

Vamos praticar!

Negociação Financeira em Python

Preparing Video For Download...