Analise de dados financeiros do Banco Central do Brasil (BCB)
Project description
ifdata-bcb
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
- getting-started.md - Instalacao e primeiro uso
Fontes de Dados
- cosif.md - Plano contabil (individual/prudencial)
- ifdata.md - Informacoes financeiras trimestrais
- cadastro.md - Metadados de instituicoes
Uso Avancado
- sql-queries.md - Queries SQL com DuckDB
- extending.md - Como criar novos providers
Arquitetura Interna
- architecture.md - Visao geral da arquitetura
- core.md - BaseExplorer, EntityLookup, Constants
- domain.md - Exceptions, Models, Types, Validation
- infra.md - Settings, QueryEngine, DataManager
- providers.md - BaseCollector, Explorers
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d4d5a22d8230ea5394da2f49f2daa9bb883f192562c5826952e7d7033d0c802
|
|
| MD5 |
1509c12e77c73ca340748d1c39a71df4
|
|
| BLAKE2b-256 |
12b56012c3c11309f2d5f2043046402f85df3bdce9d53b12a855b51cffc80251
|
Provenance
The following attestation bundles were made for ifdata_bcb-0.1.1.tar.gz:
Publisher:
publish.yml on enzoomoreira/ifdata-bcb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ifdata_bcb-0.1.1.tar.gz -
Subject digest:
9d4d5a22d8230ea5394da2f49f2daa9bb883f192562c5826952e7d7033d0c802 - Sigstore transparency entry: 1107653809
- Sigstore integration time:
-
Permalink:
enzoomoreira/ifdata-bcb@209a9beaa113d9306f08d291e009291f6fde1e8e -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/enzoomoreira
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@209a9beaa113d9306f08d291e009291f6fde1e8e -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
244793010e72d7492a6bad69f8f271a16297b4a8a226dae95634caa477fa9947
|
|
| MD5 |
ecfbd08a263ca10fac9088cff9797715
|
|
| BLAKE2b-256 |
40d8f5b6ef9d03b332e05de108a4326a5835af9f32a6f77ba9d92b94717b953b
|
Provenance
The following attestation bundles were made for ifdata_bcb-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on enzoomoreira/ifdata-bcb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ifdata_bcb-0.1.1-py3-none-any.whl -
Subject digest:
244793010e72d7492a6bad69f8f271a16297b4a8a226dae95634caa477fa9947 - Sigstore transparency entry: 1107653811
- Sigstore integration time:
-
Permalink:
enzoomoreira/ifdata-bcb@209a9beaa113d9306f08d291e009291f6fde1e8e -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/enzoomoreira
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@209a9beaa113d9306f08d291e009291f6fde1e8e -
Trigger Event:
release
-
Statement type: