Automação Carteira de Investimentos com Python

Automatize sua carteira de investimentos com Python! Faça o Python calcular a rentabilidade de sua carteira de investimentos pra você!

Se quiser pode acompanhar esse conteúdo em formato de vídeo ou pode acessar o nosso Canal do YouTube para mais vídeos!

O que você aprende neste vídeo

Resposta rápida: A aula monta em Python uma automação que lê os ativos de uma carteira em um arquivo TXT, busca as cotações do Yahoo Finance com pandas_datareader e yfinance e calcula a rentabilidade da carteira, comparando com o índice Bovespa. O código roda de uma vez só, e a data final pode ser trocada.

Neste vídeo (31 min):

  • 1:01 - O arquivo TXT com o código do ativo e o valor investido
  • 1:30 - Um arquivo .ipynb para rodar o código em células
  • 2:44 - Importar as bibliotecas e instalá-las com pip install
  • 6:17 - Ler o TXT e montar o dicionário da carteira
  • 8:38 - Separar o código do valor de cada linha
  • 11:45 - Ajustar os códigos dos ativos para a busca das cotações
  • 13:44 - Tabela de cotações de um ativo entre duas datas
  • 15:37 - A coluna de fechamento ajustado
  • 18:53 - Lista de ativos da carteira com o índice Bovespa
  • 24:08 - Valor inicial e valor final da carteira
  • 27:52 - No exemplo da aula, a carteira cai 5,7% e o índice Bovespa cai 6,1%
  • 28:46 - Rodar tudo de novo com outra data final

Trechos do vídeo:

  • Com with open, o arquivo é aberto, lido e fechado automaticamente dentro da mesma estrutura.
  • O read devolve o texto do arquivo inteiro como um só; o readlines separa cada linha como um item de uma lista.
  • Na coluna Adj Close, o Yahoo Finance incorpora pagamento de dividendo e desdobramento, e não só a oscilação do preço.
  • No Yahoo Finance, as ações da bolsa brasileira levam .SA no fim do código, e um índice como o Bovespa leva o circunflexo no início, como ^BVSP.
  • A rentabilidade sai do valor final dividido pelo inicial, que dá o multiplicador (0,97 é uma perda de 3%); para ter a variação percentual, subtraia 1.

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

Automação - Carteira de Investimentos com Python

Gerenciar uma carteira de investimentos pode dar trabalho, especialmente quando você precisa acompanhar a rentabilidade de cada ativo separadamente e compará-la a índices do mercado.

Sorte que é possível automatizar esse processo e obter uma análise clara com apenas algumas linhas de código Python!

Neste post, vamos mostrar como criar um script simples e eficiente que vai te ajudar a monitorar seus investimentos. Preparado? Vamos lá!

Automatize suas análises financeiras com Python

Neste post vou te ensinar a calcular a rentabilidade de sua carteira de investimentos, que pode conter múltiplas ações, no intervalo de tempo que você quiser, tudo de uma só vez.

Isso é possível porque o Python oferece ótimas ferramentas para automatizar a consulta de informações, os cálculos e as análises necessárias para isso.

Resumindo, o script que vamos construir consegue:

  1. Ler as informações da sua carteira em um arquivo .txt.
  2. Obter automaticamente as cotações dos ativos usando a biblioteca do Yahoo Finance.
  3. Receber um período específico para consulta.
  4. Calcular a rentabilidade da carteira e verifica se ela superou o índice Bovespa.

Te ensinaremos como isso funciona em um passo a passo aqui embaixo, garantindo que mesmo quem é iniciante consiga acompanhar.

O que você vai precisar?

Ferramentas e bibliotecas

  • Python: Certifique-se de que ele está instalado em seu computador.
  • Bibliotecas: Vamos usar pandas, yfinance e pandas-datareader. Instale-as executando os comandos abaixo no terminal:
    • pip install pandas
    • pip install yfinance
    • pip install pandas-datareader
  • Editor de código: Usaremos o VSCode e o nosso código estará em um arquivo .ipynb, em vez do usual .py para arquivos Python. Dessa forma, podemos utilizar a interface do Jupyter Notebook diretamente no VSCode, o que vai facilitar a execução e a visualização das análises.

Arquivo inicial

Crie um arquivo chamado carteira.txt contendo os tickers (códigos) dos seus ativos e o valor investido em cada um.

Arquivo inicial com a carteira
Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Passo a passo: construindo nosso código

1. Configure o ambiente de trabalho

No seu editor de código, comece importando as bibliotecas necessárias e configurando o yfinance:

Python
import pandas as pd
import pandas_datareader.data as pdr
import yfinance as yf

yf.pdr_override()

O que cada uma delas faz?

  • pandas: Serve para manipulação e análise de dados estruturados, como tabelas.
  • yfinance: Permite acessar dados do mercado financeiro, como preços de ações e históricos de mercado, diretamente da plataforma Yahoo Finance.
  • pandas-datareader: Facilita o acesso a dados financeiros e econômicos de fontes online, como o Yahoo Finance. É integrado ao Pandas.

Aqui, utilizamos apelidos (aliases) para as bibliotecas para facilitar seu acesso ao longo do código. Por exemplo, quando formos chamar a biblioteca pandas novamente, podemos usar apenas pd.

Já o comando yf.pdr_override(), serve para “atualizar” o datareader,  fazendo com que ele possar utilizar os dados do Yahoo Finance.

2. Lendo a carteira de investimentos

Precisamos fazer com que o Python entenda o que tem na nossa carteira. Use o seguinte código para transformar os dados do arquivo carteira.txt em um dicionário Python:

Python
with open("carteira.txt", "r") as arquivo:
    texto = arquivo.readlines()

carteira = {}

for linha in texto:
    ticker, valor = linha.split("-")
    ticker = f"{ticker.strip()}.SA"
    valor = float(valor.strip())
    print(ticker, valor)
    carteira[ticker] = valor
print(carteira)

A linha with open("carteira.txt", "r") as arquivo serve para ler o arquivo em .txt, que em seguida é armazenado na variável texto e dividido por linhas com o método .readlines().

Em seguida, criamos uma variável para a carteira, que a princípio vai estar vazia. Ela vai ser preenchida com o código que vem em seguida, iniciado em for. Nele, as linhas da variável texto são organizadas em pares ticker – valor (como ITUB4 – 1000).

Uma observação: é necessário adicionar os caracteres ".SA" ao final de cada ticker para consultas das cotações no Brasil (é uma sinalização que especifica ações brasileiras no Yahoo Finance, são as primeiras letras de São Paulo). Para fazer esse pequeno ajuste, utilizaremos uma f-string no conteúdo da variável ticker e adicionaremos os caracteres.

Na próxima linha, os valores são transformados em numéricos com partes decimais através da função float().

Por último, para de fato preencher a carteira com essas informações adquiridas, utilizamos carteira[ticker] = valor. Assim, devemos ter a saída:

{'ITUB4.SA': 1000.0, 'BBAS3.SA': 2000.0, 'VALE3.SA': 1000.0, 'EGIE3.SA': 500.0, 'SLCE3.SA': 300.0}

3. Obtendo as cotações

O próximo passo é buscar as cotações para todos os ativos na carteira e fazer uma tabela de cotações.

Python
acao = "ITUB4.SA"
ativos = list(carteira.keys())
ativos.append("^BVSP")
data_inicial = "2024-01-01"
data_final = "2024-12-18"
tabela_cotacoes = pdr.get_data_yahoo(ativos, data_inicial, data_final)
tabela_cotacoes = tabela_cotacoes["Adj Close"]
display(tabela_cotacoes)

A primeira coisa que o código acima faz é criar a lista com todos os ativos da carteira, que seria apenas a parte das chaves (keys) do dicionário. Nessa parte da criação da lista, ainda podemos adicionar o índice Bovespa, para que seja possível comparar nossas ações com ele.

Para construir a tabela, usamos o comando pdr.get_data_yahoo, passando como parâmetros a lista de ações e as datas inicial e final.

Das várias colunas que a tabela apresenta, a que mais importa pra nossa análise é Adj Close, que representa os valores ajustados considerando dividendos, desdobramentos etc., e que, portanto, mostra a rentabilidade real dos ativos.

Obtendo as cotações dos ativos

4. Calculando a rentabilidade da carteira

Para enfim calcularmos a rentabilidade da carteira como um todo, precisamos primeiro obter a rentabilidade de cada ativo, já que cada valor varia de forma independente.

Esses valores individuais podem ser obtidos ao dividir o valor final de cada ativo pelo seu valor inicial. O ativo do Banco do Brasil (BBAS3.SA), por exemplo, iniciou o período em 25.26 e terminou em 24.51, sendo a sua rentabilidade 0.97.

Com o código a seguir, é possível criar um dicionário com todas as rentabilidades seguidas por seus respectivos índices.

Python
rentabilidades = {}
for ativo in tabela_cotacoes.columns:
    rentabilidade = tabela_cotacoes[ativo][-1] / tabela_cotacoes[ativo][0]
    rentabilidades[ativo] = rentabilidade
print(rentabilidades)

Feito isso, o dicionário rentabilidadesdeve ficar assim:

{'BBAS3.SA': 0.9666879537987186, 'EGIE3.SA': 0.8864000769161816, 'ITUB4.SA': 1.0199652434520559, 'SLCE3.SA': 1.0938795176742793, 'VALE3.SA': 0.7956346843041397, '^BVSP': 0.9397198128066195}

Com esses dados em mãos, podemos calcular o valor final de cada ativo multiplicando seus valores iniciais pelos de rentabilidade, que aparecem no dicionário acima.

Por fim, somamos todos os valores iniciais da carteira e multiplicamos a soma dos valores finais pelo resultado.

Python
valor_inicial = sum(carteira.values())
print(valor_inicial)
valor_final = sum(carteira[ativo] * rentabilidades[ativo] for ativo in carteira)
print(valor_final)
rentabilidade_carteira = valor_final / valor_inicial - 1
print(f"{rentabilidade_carteira:.1%}")
rentabilidade_indice = rentabilidades["^BVSP"] - 1
print(f"{rentabilidade_indice:.1%}")
Calculando a rentabilidade da carteira

No exemplo que usamos aqui, a rentabilidade da carteira foi negativa, de -5,8%. Utilizei os comandos print para visualizar os números e a f-string com .1% para a apresentação das porcentagens.

Conclusão - Automação Carteira de Investimentos com Python

Com este projeto, você aprendeu como usar Python para automatizar a análise de rentabilidade da sua carteira de investimentos. De forma simples, coletamos dados financeiros, calculamos resultados e os comparamos com o índice Bovespa.

Pronto para aplicar o que aprendeu? Experimente criar o seu próprio script e veja como ele pode facilitar o acompanhamento dos seus investimentos!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos