Análise de Portfólio de investimentos com o Python

Backtesting é um método usado para averiguar o quão bem uma estratégia de trading ou a construção de um portfólio performou com base nos dados históricos. Vamos mostrar uma ferramenta útil para a criação de métricas do Backtesting no Python.

Idealmente, os dados históricos devem vir de um período no qual as condições econômicas são iguais ao período de futuro de constituição do portfólio, portanto, deve-se atentar e comparar a volatilidade do mercado.

Além disso, deve-se atentar-se aos custos transacionais do período, de forma que tenha-se uma visão verdadeira.

Mas como realizar o Backtesting e quais métricas são usadas para avaliar os retornos?

Existem diversos indicadores que levam em conta não somente o retorno e o risco dos dados passados da estratégia/portfólio, mas também indicadores que avaliam o retorno ajustado ao risco. Entre alguns desses, podemos elencar:

  • Retorno Acumulado: visa avaliar o retorno total ao longo do tempo
  • Retorno anualizado: permite comparar diferentes investimentos
  • Volatilidade anual: permite comparar o risco de diferentes investimentos
  • Drawndown: exibe os períodos de queda dos retornos ao longo do tempo (útil para avaliar eventos que aumentam a volatilidade, bem como o efeito de sinais de entrada/saída das estratégias)
  • Sharpe ratio/Omega ratio/Sortino ratio: Indicadores de risco-retorno, que usualmente avaliam o ganho de retorno para cada aumento unitário do risco, e que são comparados com algum Benchmark.
  • Beta: medida de risco sistemático
  • Alpha: retorno acima do mercado
  • Visualização: uso de gráficos das medidas acima para avaliar o desempenho, tais como o histograma, boxplot e gráfico de linha.

Existem muitas outras medidas e indicadores que podem ser utilizados para avaliar o desempenho de um investimento, mas o mais utilizados estão elencados acima.

In-sample e Out-of-sample

Outro ponto importante para se realizar um bom Backtesting, reside na comparabilidade dos dados dados de treino e teste - in-sample e out-of-sample (dentro da amostra e fora da amostra).
Como saber que o teste em dados passados irá funcionar com dados que ainda estão por vir?
  •  In-sample: refere-se aos dados usados para treinar a estratégia, separando-a de uma pequena porção dos dados da amostra total;
  •  Out-of-sample: refere-se aos dados que são usados para testar a estratégia. Esses dados não foram usados no treino, portanto, são úteis para comparar se houve ou não viés, bem como se a estratégia performou bem.
Vamos instalar a biblioteca `pyfolio` e começar a nossa análise.
No bloco abaixo, baixamos a biblioteca direto do Github.


# Instala o pyfolio direto do github
!pip install git+https://github.com/quantopian/pyfolio



!pip install yfinance
import yfinance as yf
import pyfolio as pf
from matplotlib import pyplot as plt

 # Conecta as informações da ITSA4 symbol = 'ITSA4.SA' itsa_yahoo_info = yf.Ticker(symbol) itsa_history = itsa_yahoo_info.history(start = '2021-01-01', # data início                                        end = '2022-12-31', # data fim                                        auto_adjust = True) # OHLCV ajustado #  Calcula os retornos itsa_returns = itsa_history.Close.pct_change() # Conecta as informações da IBOV (Bechmark) ibov_yahoo_info = yf.Ticker('^BVSP') ibov_history = ibov_yahoo_info.history(start = '2021-01-01', # data início                                        end = '2022-12-31', # data fim                                        auto_adjust = True) # OHLCV ajustado #  Calcula os retornos ibov_returns = ibov_history.Close.pct_change() 

Com os retornos do ativo financeiro e do benchmark em mãos, podemos averiguar o backtesting do ativo por meio de diferentes métricas usando o pyfolio. Vemos o resultado o abaixo.

A construção de todos os procedimentos para a criação dos gráficos abaixo você pode obter fazendo parte do Clube AM, o repositório especial de códigos da Análise Macro.

______________________________________

Quer saber mais?

Veja nosso curso de Python para Investimentos.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Criando operações SQL com IA Generativa no R com querychat

No universo da análise de dados, a velocidade para obter respostas é um diferencial competitivo. Frequentemente, uma simples pergunta de negócio — “Qual foi nosso produto mais vendido no último trimestre na região Nordeste?” — inicia um processo que envolve abrir o RStudio, escrever código dplyr ou SQL, executar e, finalmente, obter a resposta. E se pudéssemos simplesmente perguntar isso aos nossos dados em português, diretamente no nosso dashboard Shiny?

Dashboard Financeiro com IA e Shiny Python: Análise de Dados Abertos da CVM

Este artigo apresenta um tutorial completo sobre como construir uma ferramenta de análise financeira de ponta. Utilizando Shiny for Python, demonstramos a automação da coleta de dados das Demonstrações Financeiras Padronizadas (DFP) da CVM e o tratamento dessas informações com Pandas. O ponto alto do projeto é a integração da IA Generativa do Google Gemini, que atua como um assistente de análise, interpretando os dados filtrados pelo usuário e fornecendo insights contábeis e financeiros em tempo real. O resultado é um dashboard dinâmico que democratiza a análise de dados complexos e acelera a tomada de decisão.

Econometria, ML ou IA para previsão da PMS?

Prever a Pesquisa Mensal de Serviços (PMS/IBGE) é um desafio por natureza: trata-se de uma série mensal, sujeita a volatilidade e choques que vão de fatores sazonais a mudanças estruturais no setor. Para enfrentar esse problema, realizamos um exercício de comparação entre três abordagens de modelagem: econometria tradicional (ARIMA), machine learning (XGBoost) e inteligência artificial (TimeGPT).

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.