Coletando dados de demonstrativos financeiros com o Python

No post de hoje iremos mostrar como extrair dados de demonstrativos financeiros disponibilizados pela B3 utilizando o Python.

É possível obter os dados de demonstrativos financeiros através de duas fontes distintas, por meio dos bancos de dados da CVM e por meio da página do site da B3. A diferença entre as duas está no fato que por meio da B3 é possível obter os dados atualizados em menor atualização de tempo, portanto, essa é a vantagem que a biblioteca brfinance, criado por  traz. Será por meio dela que iremos importar os dados de demonstrativos financeiros.

O segredo da biblioteca está em "conectar" com o objeto CVMAsyncBackend, e após declará-lo em uma variável, utiliza-lo em conjunto com seus métodos para obter os dados de acordos com os inputs inserido. Vejamos, de acordo com o tutorial proposto pelo autor,  por etapas como funciona.

Primeiro importamos as bibliotecas.


from brfinance import CVMAsyncBackend
import pandas as pd
from datetime import datetime, date
A partir do objeto CVMAsyncBackend() é possível utilizar os métodos para capturar os dados das empresas.
Definimos a variável com o nome de cvm_httpclient. Em seguida, usamos o método get_cvm_codes para obter os códigos CVM das empresas. Com o método get_consulta_externa_cvm_categories é obtido as categorias dos documentos que podem ser obtidos.

cvm_httpclient = CVMAsyncBackend()
# Dicionário dos códigos CVM de todas as empresas
cvm_codes = cvm_httpclient.get_cvm_codes()
# Dicionário de todas as categorias de busca disponíveis (Fato relevante, DFP, ITR, etc.)
categories = cvm_httpclient.get_consulta_externa_cvm_categories()


Ao obter os códigos das empresas e das categorias desejadas, é necessário somente definir os inputs do método

get_consulta_externa_cvm_results para obter os dados da(s) empresa(s) desejada(s).


# Realizando busca por Empresa
start_date = date(2020, 1, 1) # data de início
end_dt = date.today() # data de fim
cvm_codes_list = ['21610'] # Código CVM da B3
category = ["EST_4", "EST_3"] # Códigos de categoria para DFP e ITR.
last_ref_date = False # Se "True" retorna apenas o último report no intervalo de datas




# Busca
search_result = cvm_httpclient.get_consulta_externa_cvm_results(
    cod_cvm=cvm_codes_list,
    start_date=start_date,
    end_date=end_dt,
    last_ref_date=last_ref_date,
    category=category
    )



Em search_result, obtém-se os resultados da busca dos balanços e demonstrativos disponíveis na B3, de acordo com o que foi definido na consulta. Os passos seguintes referem-se apenas em filtrar o data frame para obter a DFP e ITR.


# Filtrar dataframe de busca para DFP e ITR apenas
search_result = search_result[
    (search_result['categoria']=="DFP - Demonstrações Financeiras Padronizadas") |
    (search_result['categoria']=="ITR - Informações Trimestrais")]
search_result = search_result[pd.to_numeric(search_result['numero_seq_documento'], errors='coerce').notnull()]


Depois disso, é só acessar em cada linha o documento produzido pela consulta.



# Obter demonstrativos
for index, row in search_result.iterrows():
    empresa = f"{row['cod_cvm']} - {cvm_codes[row['cod_cvm']]}"
    print("*" * 20, empresa, "*" * 20)
    reports = cvm_httpclient.get_report(row["numero_seq_documento"], row["codigo_tipo_instituicao"], reports_list=reports_list)

    for report in reports:
        reports[report]["cod_cvm"] = row["cod_cvm"]
        print(reports[report].head())


______________________________________

Quer saber mais?

Veja nosso curso de Python para Investimentos.

_______________________________________________________________

Referências

Oliveira, Eudes. brfinance - Acesse facilmente dados financeiros de empresas brasileiras na B3/CVM. Acesso em: https://github.com/eudesrodrigo/brFinance.

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.