IBOV

106.373,87 pts

-0,51%

SP500

4.662,27 pts

-0,01%

DJIA

35.955,91 pts

+0,12%

NASDAQ

15.567,51 pts

-0,26%

IFIX

2.795,85 pts

+0,46%

BRENT

US$ 86,55

+0,56%

IO62

¥ 709,50

+0,28%

TRAD3

R$ 4,41

-4,13%

ABEV3

R$ 14,80

-1,98%

AMER3

R$ 30,47

+0,52%

ASAI3

R$ 12,01

-0,98%

AZUL4

R$ 25,82

-1,93%

B3SA3

R$ 12,36

+1,14%

BIDI11

R$ 23,11

-3,10%

BBSE3

R$ 19,67

+1,13%

BRML3

R$ 8,41

+0,11%

BBDC3

R$ 17,54

+0,57%

BBDC4

R$ 20,99

+0,57%

BRAP4

R$ 27,37

-0,54%

BBAS3

R$ 30,47

+0,19%

BRKM5

R$ 48,65

-6,72%

BRFS3

R$ 24,75

+1,85%

BPAC11

R$ 19,73

-0,50%

CRFB3

R$ 14,49

+0,62%

CCRO3

R$ 11,24

-1,31%

CMIG4

R$ 12,74

+0,07%

HGTX3

R$ 37,51

+0,00%

CIEL3

R$ 2,12

+4,95%

COGN3

R$ 2,17

+0,46%

CPLE6

R$ 6,40

+0,94%

CSAN3

R$ 21,08

-0,66%

CPFE3

R$ 26,00

+0,19%

CVCB3

R$ 11,58

-1,11%

CYRE3

R$ 14,14

-0,35%

ECOR3

R$ 7,22

+0,27%

ELET3

R$ 31,69

+0,25%

ELET6

R$ 31,25

+0,51%

EMBR3

R$ 21,55

-2,09%

ENBR3

R$ 21,08

+1,34%

ENGI11

R$ 41,00

+0,07%

ENEV3

R$ 12,61

-0,23%

EGIE3

R$ 38,42

+0,07%

EQTL3

R$ 22,29

-1,45%

EZTC3

R$ 18,50

-0,59%

FLRY3

R$ 17,79

-0,78%

GGBR4

R$ 27,66

-2,19%

GOAU4

R$ 11,55

-1,61%

GOLL4

R$ 16,77

-0,94%

NTCO3

R$ 21,23

-2,61%

HAPV3

R$ 10,50

+1,84%

HYPE3

R$ 27,82

-0,64%

IGTA3

R$ 33,24

+0,00%

GNDI3

R$ 61,48

+1,67%

IRBR3

R$ 3,48

-1,69%

ITSA4

R$ 9,54

-0,17%

ITUB4

R$ 23,64

-0,17%

JBSS3

R$ 36,98

-1,09%

JHSF3

R$ 4,81

-0,82%

KLBN11

R$ 24,61

-2,80%

RENT3

R$ 50,48

-1,54%

LCAM3

R$ 22,62

-1,13%

LWSA3

R$ 8,58

+2,26%

LAME4

R$ 5,76

+1,40%

LREN3

R$ 23,49

-2,00%

MGLU3

R$ 6,12

-3,31%

MRFG3

R$ 23,25

-1,10%

BEEF3

R$ 10,07

-1,94%

MRVE3

R$ 11,00

-0,81%

MULT3

R$ 18,21

-1,51%

PCAR3

R$ 19,25

-3,31%

PETR3

R$ 34,45

-0,31%

PETR4

R$ 31,50

+0,15%

VBBR3

19,53

-1,51%

PRIO3

R$ 22,82

-0,34%

QUAL3

R$ 16,37

+2,76%

RADL3

R$ 20,54

-2,19%

RAIL3

R$ 16,35

+0,24%

SBSP3

R$ 35,41

+0,85%

SANB11

R$ 31,69

-0,53%

CSNA3

R$ 25,14

-2,25%

SULA11

R$ 23,15

+0,52%

SUZB3

R$ 62,03

-1,17%

TAEE11

R$ 36,07

+0,02%

VIVT3

R$ 47,51

+1,34%

TIMS3

R$ 12,94

+2,45%

TOTS3

R$ 25,29

+0,35%

UGPA3

R$ 12,86

-2,27%

USIM5

R$ 16,23

-1,33%

VALE3

R$ 84,25

-0,52%

VIIA3

R$ 3,90

-1,76%

WEGE3

R$ 30,35

-1,13%

YDUQ3

R$ 19,07

+0,89%

IBOV

106.373,87 pts

-0,51%

SP500

4.662,27 pts

-0,01%

DJIA

35.955,91 pts

+0,12%

NASDAQ

15.567,51 pts

-0,26%

IFIX

2.795,85 pts

+0,46%

BRENT

US$ 86,55

+0,56%

IO62

¥ 709,50

+0,28%

TRAD3

R$ 4,41

-4,13%

ABEV3

R$ 14,80

-1,98%

AMER3

R$ 30,47

+0,52%

ASAI3

R$ 12,01

-0,98%

AZUL4

R$ 25,82

-1,93%

B3SA3

R$ 12,36

+1,14%

BIDI11

R$ 23,11

-3,10%

BBSE3

R$ 19,67

+1,13%

BRML3

R$ 8,41

+0,11%

BBDC3

R$ 17,54

+0,57%

BBDC4

R$ 20,99

+0,57%

BRAP4

R$ 27,37

-0,54%

BBAS3

R$ 30,47

+0,19%

BRKM5

R$ 48,65

-6,72%

BRFS3

R$ 24,75

+1,85%

BPAC11

R$ 19,73

-0,50%

CRFB3

R$ 14,49

+0,62%

CCRO3

R$ 11,24

-1,31%

CMIG4

R$ 12,74

+0,07%

HGTX3

R$ 37,51

+0,00%

CIEL3

R$ 2,12

+4,95%

COGN3

R$ 2,17

+0,46%

CPLE6

R$ 6,40

+0,94%

CSAN3

R$ 21,08

-0,66%

CPFE3

R$ 26,00

+0,19%

CVCB3

R$ 11,58

-1,11%

CYRE3

R$ 14,14

-0,35%

ECOR3

R$ 7,22

+0,27%

ELET3

R$ 31,69

+0,25%

ELET6

R$ 31,25

+0,51%

EMBR3

R$ 21,55

-2,09%

ENBR3

R$ 21,08

+1,34%

ENGI11

R$ 41,00

+0,07%

ENEV3

R$ 12,61

-0,23%

EGIE3

R$ 38,42

+0,07%

EQTL3

R$ 22,29

-1,45%

EZTC3

R$ 18,50

-0,59%

FLRY3

R$ 17,79

-0,78%

GGBR4

R$ 27,66

-2,19%

GOAU4

R$ 11,55

-1,61%

GOLL4

R$ 16,77

-0,94%

NTCO3

R$ 21,23

-2,61%

HAPV3

R$ 10,50

+1,84%

HYPE3

R$ 27,82

-0,64%

IGTA3

R$ 33,24

+0,00%

GNDI3

R$ 61,48

+1,67%

IRBR3

R$ 3,48

-1,69%

ITSA4

R$ 9,54

-0,17%

ITUB4

R$ 23,64

-0,17%

JBSS3

R$ 36,98

-1,09%

JHSF3

R$ 4,81

-0,82%

KLBN11

R$ 24,61

-2,80%

RENT3

R$ 50,48

-1,54%

LCAM3

R$ 22,62

-1,13%

LWSA3

R$ 8,58

+2,26%

LAME4

R$ 5,76

+1,40%

LREN3

R$ 23,49

-2,00%

MGLU3

R$ 6,12

-3,31%

MRFG3

R$ 23,25

-1,10%

BEEF3

R$ 10,07

-1,94%

MRVE3

R$ 11,00

-0,81%

MULT3

R$ 18,21

-1,51%

PCAR3

R$ 19,25

-3,31%

PETR3

R$ 34,45

-0,31%

PETR4

R$ 31,50

+0,15%

VBBR3

19,53

-1,51%

PRIO3

R$ 22,82

-0,34%

QUAL3

R$ 16,37

+2,76%

RADL3

R$ 20,54

-2,19%

RAIL3

R$ 16,35

+0,24%

SBSP3

R$ 35,41

+0,85%

SANB11

R$ 31,69

-0,53%

CSNA3

R$ 25,14

-2,25%

SULA11

R$ 23,15

+0,52%

SUZB3

R$ 62,03

-1,17%

TAEE11

R$ 36,07

+0,02%

VIVT3

R$ 47,51

+1,34%

TIMS3

R$ 12,94

+2,45%

TOTS3

R$ 25,29

+0,35%

UGPA3

R$ 12,86

-2,27%

USIM5

R$ 16,23

-1,33%

VALE3

R$ 84,25

-0,52%

VIIA3

R$ 3,90

-1,76%

WEGE3

R$ 30,35

-1,13%

YDUQ3

R$ 19,07

+0,89%

Avaliando performance de portfólios com o Python

vitor-diniz

25 MAR

7 MIN

Avaliando performance de portfólios com o Python

Hoje trazemos mais uma aplicação da linguagem de programação Python no campo dos investimentos e análise de carteira de ações. Dessa vez, iremos aplicar as métricas de avaliação de performance trazidas pelo 19º capítulo da sequência de e-books do CFA Institute Investment Foundations®.

Com isso, iremos – abordando prática e teoria – entender os seguintes tópicos:

  • Cálculo de retornos absolutos
  • Patrimônio, benchmark e taxa Selic
  • Métricas de retornos ajustados ao risco
  • Métricas de retornos relativos

Bons estudos!

Cálculo de retorno anormal

Se você ainda não conhece os comandos básicos do Python, é interessante ler os primeiros tópicos da série Quant & Investimentos.

Importando bibliotecas

Inicialmente, importaremos as bibliotecas necessárias para o desenvolvimento deste estudo:

Funções Úteis

Em seguida, declararemos as algumas funções úteis que usaremos durante o estudo.

Patrimônio, benchmark e taxa Selic

No decorrer deste estudo, utilizaremos constantemente esses dados. Tais informações terão frequência mensal neste artigo.

  • O patrimônio consiste no volume de dinheiro existente nas nossas carteiras de ações (utilizaremos duas: um com aportes mensais e outro sem);
  • O benchmark é o retorno do mercado, representado pelo Ibovespa; e
  • A taxa básica de juros do Brasil, ou taxa Selic.

Dessa forma, declararemos as variáveis de patrimônio e benchmark:

A taxa Selic precisa de um processamento maior nos dados, pois a buscaremos através da API do Banco Central do Brasil e o formato de entrega é diferente do utilizado neste estudo.

Cálculo de retornos absolutos

Carteira sem aportes mensais

Suponha que o temos uma carteira de investimentos e que nosso patrimônio evoluiu da seguinte forma durante os últimos 12 meses:

Para calcular os retornos mensais absolutos de uma carteira, basta utilizar a equação:

Retorno = patrimônio atual / patrimônio anterior -1

Com isso, podemos calcular as rentabilidades mensais aplicando a função retornos_mensais (que implementa a fórmula acima).

Além disso, para verificar a rentabilidade acumulada do nosso patrimônio, iremos aplicar a fórmula do retorno considerando sempre o patrimônio anterior como o inicial (patrimônio do mês 1). Essa descrição está implementada na função retornos_acumulados e, ao aplicá-la, obtemos:

Medição com aportes mensais

Para tornar o caso mais realista, iremos modificar nossa regra de aportes patrimônio para um aporte mensal de R$ 1000,00, sendo realizado após o cálculo da rentabilidade de cada mês. Agora, temos um patrimônio que obteve a seguinte evolução:

Se utilizarmos a função criada previamente para calcular os retornos, obteremos o seguinte resultado:

O retorno acumulado dos últimos 12 meses é 79,81%.

Contudo, obtivemos aqui um resultado falso, pois há o efeito do incremento de R$ 12 mil pela sucessão de aportes. Sabendo disso, deveremos, portanto, desconsiderar o valor do aporte do mês seguinte, conforme a equação:

retorno = (patrimônio atual – aporte) / patrimônio anterior -1

Tal equação está implementada na função retornos_com_aportes.

Aplicando a função, obtemos o seguintes resultados mensais:

Para mensurar os retornos acumulados, aplicaremos a função já criada.

Comparando os resultados, observamos que:

O retorno acumulado ilusório foi 79,81%. Já o retorno acumulado é, na verdade, 67,16%.

Retorno ajustado ao risco

Já somos capazes de calcular no Python os retornos mensais e acumulados da nossa carteira de investimentos. Agora vamos aplicar uma série de métricas para avaliar se a performance encontrada anteriormente é razoável para o risco assumido.

Risco

A definição de risco é bastante discutida e pode variar de acordo com o tipo de investidor. Consideraremos, neste artigo, risco como a volatilidade do portfólio, que, por sua vez, será calculada pelo desvio padrão dos retornos.

Métrica 1: Risco-Retorno

A medida mais simples de retorno ajustado é o coeficiente de risco-retorno, calculado pela razão entre o retorno e o risco, conforme a equação:

Risco-Retorno = Retorno acumulado / risco do portfólio

Aplicando-a, obtemos:

A medida de risco-retorno para o portfólio sem aportes é 6.76, sendo o retorno = 0.486 e o risco = 0.072.

A medida de risco-retorno para o portfólio com aportes é 8.72, sendo o retorno = 0.672 e o risco = 0.077.

Métrica 2: Índice de Sharpe

William Sharpe considera que o prêmio pelo risco da carteira é medido pelo seu excesso de retorno, ou seja, pela diferença entre o retorno do período e o retorno de uma taxa livre de risco. Com isso, o Índice de Sharpe (IS) é calculado pela razão entre o excesso de retorno e o risco do portfólio.

IS = excesso de retorno / risco do portfólio

excesso de retorno = retorno do portfólio – taxa livre de risco

A taxa livre de risco é aproximada pela taxa de juros de curto prazo do país, pois tende a ser a taxa de mais baixo risco. No caso do Brasil – e para facilitar os cálculos – utilizaremos a taxa Selic mensal entre março de 2020 e fevereiro de 2021 (considerando que os retornos do portfólio são referentes ao mesmo período).


A partir disso, podemos calcular o Índice Sharp (IS).

O Índice de Sharpe para o portfólio sem aportes é 6.45, sendo o excesso de retorno = 0.463 e o risco = 0.072. Já o Índice de Sharpe para o portfólio com aportes é 8.43, sendo o excesso de retorno = 0.649 e o risco = 0.077.

Métrica 3: Índice de Treynor

Índice de Treynor (IT) é bastante parecido com o de Sharpe, entretanto, a sua medida de risco é o beta(β) do portfólio. Para calcular o β, basta aplicar a equação [6] – como discutido em Calculando o Beta em Python – e, em seguida, calculamos a razão entre o excesso de retorno e o β, conforme ilustra a equação [7].

β = cov(Rp, Rm) / var(Rm) [6]

IT = excesso de retorno / β [7]

Sendo Rm os retornos do mercado e Rp os retornos do portfólio.

Consideraremos o Ibovespa como aproximação do mercado. Portanto, calcularemos seus retornos mensais (Rm) com as cotações já adquiridas. Além disso, criaremos uma função – utilizando lambda expression – para o cálculo do beta.

O Índice de Treynor para o portfólio sem aportes é 0.48, sendo o excesso de retorno = 0.463 e o β = 0.972. Já o Índice de Treynor para o portfólio com aportes é 0.63, sendo o excesso de retorno = 0.649 e o β = 1.025.

Retornos relativos

O conceito de retorno relativo surge a partir da comparação da rentabilidade do portfólio com os índices disponíveis no mercado (benchmarks), como Ibovespa, SMLL, IBrX100, IBrA, S&P500, NASD100, entre outros. Existem várias formas calcular os retornos relativos ao mercado e neste artigo abordaremos:

  1. Comparação direta
  2. Information Ratio

Comparação direta

A forma mais simples de calcular retornos relativos é avaliar a razão entre o retorno acumulado da carteira e do mercado. Em outras palavras, avaliar quantas vezes o seu portfólio “bateu” o benchmark, conforme ilustrado na equação.

retorno relativo = retorno acumulado do portfólio / retorno acumulado do benchmark

Com essa informação, já é possível calcular os retornos dos portfólios relativos ao Ibovespa.

O retorno da carteira sem aportes foi 95.79% do retorno do Ibovespa. Já o retorno da carteira com aportes foi 132.49% do retorno do Ibovespa.

Information Ratio

O Information Ratio é outra forma de se calcular uma relação risco-retorno. O indicador utiliza, como medida de retorno, a diferença média entre as rentabilidades do portfólio e do benchmark e, como medida de risco, o tracking error (desvio padrão das diferenças).

Em que:

  • Rpi é o retorno do portfólio para o mês i;
  • Rmi é o retorno do benchmark para o mês i; e
  • n é o número total de meses.

Sabendo disso, podemos calcular o Information Ratio das nossas carteiras de ações.

O Information Ratio da carteira sem aportes foi de -0.079; com retorno = -0.001 e tracking_error = 0.016. Já o Information Ratio da carteira sem aportes foi de 0.431; com retorno = 0.009 e tracking_error = 0.022.

Retorno anormal: Alfa de Jensen

O Alfa de Jensen (α) é uma medida de retorno anormal, ou seja, parte do retorno do portfólio não explicado pelo risco assumido (medido pelo beta do portfólio – ver Calculando o Beta em Python).

O α é o coeficiente linear do modelo CAPM – discutido em Python: Modelo de Precificação de Ativos (CAPM) – o qual é utilizado para estimar o retorno teórico esperado de um portfólio [9]. Para encontrar esse valor, devemos realizar a regressão linear dos excessos de retorno da carteira com os do benchmark.

E[Rp] – Rf = α + β(E[Rm] -Rf) [9]

Em que,

  • E[Rp] – Rf representa os excessos de retorno do portfólio;
  • E[Rm] – Rf representa os excessos de retorno do mercado.
  • α – significa o retorno anormal do portfólio (Alfa de Jensen)
  • β – significa o beta do portfólio

Com isso, podemos aplicar a função OLS da biblioteca statsmodels – que realiza uma regressão linear utilizando o método dos Mínimos Quadrados Ordinários – nos dados dos retornos das carteiras e do Ibovespa para descobrirmos o beta e o alfa dos portfólios.

Portfólio sem aportes

Portfólio com aportes

Para tais resultados das regressões, obtemos os seguintes modelos para os portfólios:

Portfólio sem aporte: α = -0.02% ao mês.

Portfólio com aporte: α = 0.84% ao mês.

Considerações finais

Neste artigo aprendemos a calcular os retornos periódicos e acumulados para carteiras com e sem aportes mensais e ajustá-los ao risco utilizando 3 métricas: risco-retorno, Índice de Sharpe e Índice de Treynor. Além disso, aprendemos a avaliar o desempenho do portfólio com base em um benchmark, calculando retornos relativos. Por fim, revisamos o CAPM para calcular o retorno anormal (α) do portfólio.

Referências

CFA Institute Investment Foundations®, Third Edition – Chapter 19. Performance Evaluation.

Notebook do Google Colaboratory

Engenheiro de Software do TC School

Aprenda tudo sobre contabilidade

E-BOOK

Aprenda tudo sobre contabilidade

Neste e-book — “Contabilidade”, trazemos informações e conceitos importantes sobre contabilidade financeira.

Receba todas as novidades do TC

Deixe o seu contato com a gente e saiba mais sobre nossas novidades, eventos e facilidades.