Skip to main content

Analise de dados financeiros do Banco Central do Brasil (BCB)

Project description

ifdata-bcb

PyPI version Python License: MIT CI

Coleta e analise de dados contabeis e financeiros de instituicoes financeiras brasileiras. Dados publicos do Banco Central do Brasil.

Fonte Modulo Dados Periodicidade
COSIF bcb.cosif Plano contabil (individual e prudencial) Mensal
IFDATA bcb.ifdata Informacoes financeiras Trimestral
Cadastro bcb.cadastro Metadados de instituicoes (segmento, conglomerado) Trimestral

Instalacao

uv add ifdata-bcb

Requer Python 3.12+.

Uso Rapido

import ifdata_bcb as bcb

# 1. Coletar dados (primeira vez ou atualizar)
bcb.cadastro.collect('2024-01', '2024-12')
bcb.cosif.collect('2024-01', '2024-12')
bcb.ifdata.collect('2024-01', '2024-12')

# 2. Buscar instituicao por nome (fuzzy matching)
bcb.search('Itau')
bcb.search('Bradesco')
#    CNPJ_8                       INSTITUICAO  SITUACAO  FONTES  SCORE
# 0  60872504  ITAU UNIBANCO HOLDING S.A.           A    ...    100
# Quando possivel, prioriza resultados com dados disponiveis em FONTES.

# 3. Ler dados usando CNPJ de 8 digitos
# COSIF/IFDATA: instituicao e start sao OBRIGATORIOS
# start sozinho = data unica; start + end = range

# COSIF (escopo=None busca em todos os escopos)
df = bcb.cosif.read(
    instituicao='60872504',
    start='2024-12',
    conta='TOTAL GERAL DO ATIVO',
    escopo='prudencial'
)

# IFDATA
df = bcb.ifdata.read(
    instituicao='60872504',
    start='2024-01',
    end='2024-12',
    conta='Lucro Liquido'
)

# Enriquecer com dados cadastrais inline
df = bcb.ifdata.read(
    instituicao='60872504',
    start='2024-01',
    end='2024-12',
    escopo='prudencial',
    cadastro=['TCB', 'SEGMENTO']
)

# Cadastro
info = bcb.cadastro.info('60872504', start='2024-12')

# Cadastro tambem pode ser filtrado sem instituicao
df = bcb.cadastro.read(start='2024-12', segmento='Banco Multiplo')

# 4. Listar contas e instituicoes disponiveis
bcb.cosif.list_accounts(escopo='prudencial')
bcb.cosif.list_institutions(escopo='prudencial')

# 5. SQL direto com DuckDB (para analises avancadas)
from ifdata_bcb.infra import QueryEngine

qe = QueryEngine()
df = qe.sql("""
    SELECT CNPJ_8, NOME_INSTITUICAO, SALDO
    FROM '{cache}/cosif/prudencial/*.parquet'
    WHERE DATA_BASE = 202412 AND NOME_CONTA = 'TOTAL GERAL DO ATIVO'
    ORDER BY SALDO DESC
    LIMIT 10
""")

Documentacao

Guias de Uso

Fontes de Dados

Uso Avancado

Arquitetura Interna

Estrutura de Dados

{cache}/
  cosif/
    individual/       # cosif_ind_YYYYMM.parquet
    prudencial/       # cosif_prud_YYYYMM.parquet
  ifdata/
    valores/          # ifdata_val_YYYYMM.parquet
    cadastro/         # ifdata_cad_YYYYMM.parquet

O diretorio de cache varia por sistema:

Sistema Caminho
Windows %LOCALAPPDATA%\py-bacen\Cache\
Linux ~/.cache/py-bacen/
macOS ~/Library/Caches/py-bacen/

Customizavel via variavel de ambiente BACEN_DATA_DIR.

API Publica

Modulo Principal

import ifdata_bcb as bcb

# Explorers (lazy loading)
bcb.cosif       # COSIFExplorer
bcb.ifdata      # IFDATAExplorer
bcb.cadastro    # CadastroExplorer

# Funcoes
bcb.search(termo, limit=10)  # Busca instituicoes por nome

# Exceptions
bcb.BacenAnalysisError       # Classe base para todos os erros
bcb.DataUnavailableError     # Dados nao disponiveis

Metodos dos Explorers

Todos os explorers possuem:

Metodo Descricao
collect(start, end, ...) Coleta dados do BCB
read(instituicao, start, ...) Le dados com filtros
list_periods() Periodos disponiveis
has_data() Verifica se tem dados

Metodos especificos:

Explorer Metodos Adicionais
cosif list_accounts(), list_institutions()
ifdata list_accounts(), list_institutions(), list_reporters(), list_reports()
cadastro info(), list_segmentos(), list_ufs(), get_conglomerate_members()

Limitacoes Conhecidas

  • Dependencia de APIs do BCB: a coleta depende da disponibilidade dos endpoints publicos do Banco Central. Se a API estiver fora do ar ou mudar seu schema, a coleta pode falhar.
  • Dados historicos: nem todos os periodos estao disponiveis para todas as fontes. Use list_periods() para verificar disponibilidade.
  • Primeira coleta lenta: a coleta inicial de dados pode demorar dependendo do range de datas solicitado, pois faz requisicoes HTTP sequenciais ao BCB.
  • Cache sem invalidacao automatica: dados coletados ficam em cache local indefinidamente. Para atualizar, colete novamente o periodo desejado.
  • Sem suporte offline: a coleta requer conexao com a internet. A leitura funciona offline se os dados ja estiverem em cache.

Contribuindo

Contribuicoes sao bem-vindas! Consulte o guia de contribuicao para detalhes sobre como participar.

Licenca

Distribuido sob a licenca MIT. Veja LICENSE para mais informacoes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ifdata_bcb-0.1.1.tar.gz (153.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ifdata_bcb-0.1.1-py3-none-any.whl (54.7 kB view details)

Uploaded Python 3

File details

Details for the file ifdata_bcb-0.1.1.tar.gz.

File metadata

  • Download URL: ifdata_bcb-0.1.1.tar.gz
  • Upload date:
  • Size: 153.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ifdata_bcb-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9d4d5a22d8230ea5394da2f49f2daa9bb883f192562c5826952e7d7033d0c802
MD5 1509c12e77c73ca340748d1c39a71df4
BLAKE2b-256 12b56012c3c11309f2d5f2043046402f85df3bdce9d53b12a855b51cffc80251

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifdata_bcb-0.1.1.tar.gz:

Publisher: publish.yml on enzoomoreira/ifdata-bcb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ifdata_bcb-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: ifdata_bcb-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 54.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ifdata_bcb-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 244793010e72d7492a6bad69f8f271a16297b4a8a226dae95634caa477fa9947
MD5 ecfbd08a263ca10fac9088cff9797715
BLAKE2b-256 40d8f5b6ef9d03b332e05de108a4326a5835af9f32a6f77ba9d92b94717b953b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifdata_bcb-0.1.1-py3-none-any.whl:

Publisher: publish.yml on enzoomoreira/ifdata-bcb

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page