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

Como selecionar variáveis para modelos de previsão no Python?

Em oposição à crença popular, grande parte dos modelos de machine learning não produzem previsões magicamente. É papel do cientista de dados executar uma boa engenharia de variáveis para não cair no clássico problema de “garbage in, garbage out” (GIGO) em aprendizado de máquina. Neste sentido, aprender a fazer uma boa seleção de variáveis é fundamental e neste artigo exploramos algumas possibilidades práticas usando o Python.

Resultado IPCA-15 - Novembro/2024

A Análise Macro apresenta os resultados do IPCA-15 de Novembro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Resultado PNADc Trimestral - 3° Trimestre/2024

A Análise Macro apresenta os resultados da PNADc Trimestral do 3º trimestre de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

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.