Skip to main content

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.cadastro.search("Itau")
bcb.cadastro.search("Bradesco")
#    cnpj_8                 instituicao  situacao        fontes  score
# 0  60872504  ITAU UNIBANCO HOLDING S.A.        A  cosif,ifdata    100

# 3. Ler dados usando CNPJ de 8 digitos
# start e OBRIGATORIO (posicional); instituicao e keyword-only e opcional
# start sozinho = data unica; start + end = range
# read() devolve a data como DatetimeIndex 'date': df.loc["2024"] e resample() funcionam direto

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

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

# Bulk read: todas as instituicoes (sem instituicao)
df = bcb.cosif.read("2024-12", escopo="prudencial")

# Enriquecer com dados cadastrais inline
df = bcb.ifdata.read(
    "2024-01",
    "2024-12",
    instituicao="60872504",
    escopo="prudencial",
    cadastro=["tcb", "segmento"],
)

# Cadastro
df = bcb.cadastro.read("2024-12", segmento="Banco Multiplo")

# Espiar dados direto do BCB sem tocar o cache local
df = bcb.cosif.fetch("2024-12", instituicao="60872504", escopo="prudencial")

# 4. Listar valores distintos e contas
bcb.ifdata.list_values(["relatorio"])
bcb.cosif.list_values(["data", "escopo"])
bcb.cadastro.list_values(["segmento"], uf="SP")
bcb.cosif.list_contas("ativo", 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

# Excecoes e warnings (todos importaveis do top-level)
bcb.BacenAnalysisError  # Classe base de todos os erros
bcb.BacenWarning  # Classe base de todos os warnings

Metodos dos Explorers

Todos os explorers possuem:

Metodo Descricao
collect(start, end=None, ...) Coleta dados do BCB. end=None coleta so o periodo de start
read(start, end, *, instituicao, ...) Le dados com filtros (start posicional, demais keyword-only). Devolve DatetimeIndex date
fetch(start, end, *, instituicao, ...) Baixa do BCB e devolve DataFrame no formato de read() sem tocar o cache local
list_values(columns, *, ...) Lista valores distintos para colunas (SELECT DISTINCT)
list_periodos(escopo=None) Periodos disponiveis (opcionalmente por escopo)
describe(escopo=None) Escopos, filtros e colunas aceitas, mais os periodos coletados
has_data(escopo=None) Verifica se tem dados

Metodos especificos:

Explorer Metodos Adicionais
cosif list_contas()
ifdata list_contas(), mapeamento()
cadastro search()

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_periodos() para verificar disponibilidade.
  • Primeira coleta lenta: a coleta inicial de dados pode demorar dependendo do range de datas solicitado, pois faz multiplas requisicoes HTTP ao BCB (paralelas com 4 workers).
  • 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.

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-1.0.0.tar.gz (276.6 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-1.0.0-py3-none-any.whl (95.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ifdata_bcb-1.0.0.tar.gz
  • Upload date:
  • Size: 276.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ifdata_bcb-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c686131c9e1c62ba7e7d8f84cd161ac20fef2ba61340bd0672d53c119d658533
MD5 aae764588b8f5a7477c73859c007ceab
BLAKE2b-256 81a93b0b1ca6226358d770e63e33aadb84a372417bc6650bcc316d0fefc8ee48

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifdata_bcb-1.0.0.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-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ifdata_bcb-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 95.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ifdata_bcb-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 301e571647ffa927de137e294f651e5c8e0eda07397e06a26d2e6eb1156357d1
MD5 534cb95d51a110cf2b8958463eb272a8
BLAKE2b-256 2808d5927f1d25c250b99f46f44e4f56c775a77436a383c3ea4d7a2e0a2065d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifdata_bcb-1.0.0-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.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 files

0.6.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page