Inteligência do Sistema Financeiro Nacional — dados do IFData/BACEN estruturados, normalizados e entregues para uso institucional.
O IFData do BACEN é público, mas a experiência de uso é terrível:
- A API OData exige queries manuais por relatório × trimestre × tipo de instituição
- Sem série histórica consolidada — cada query retorna um trimestre isolado
- Paginação necessária para relatórios com muitos registros
- Quebras de série no plano COSIF (ex: mar/2025) que quebram comparações históricas
- Endpoint
IfDataCadastroretorna HTTP 500 — cadastro de IFs está indisponível via API
O PulseIFData resolve isso: coleta, normaliza e entrega tudo em schema fixo.
| Produto | Cobre | Gap |
|---|---|---|
| PulseFlat | Macro e mercado (taxas, câmbio, fundos, índices) | Não cobre instituições financeiras individuais |
| PulseRatings | Risco de crédito externo (S&P, Moody's, Fitch) | Não cobre o SFN doméstico |
| PulseIFData | Inteligência competitiva do SFN | Complementar — inadimplência, market share, crescimento por IF |
Cruzamento exclusivo: PulseIFData + PulseFlat (SELIC, CDI) → NIM ajustado ao ciclo de juros.
PulseIFData/
├── scrapers/
│ ├── utils/
│ │ ├── base.py # BaseScraper (herdado do ecossistema)
│ │ └── odata.py # Paginação OData, checkpointing, períodos
│ ├── bacen_ifdata.py # Scraper financeiro (11 relatórios × 3 tipos)
│ └── bacen_ifdata_cadastro.py # Scraper de cadastro (fallback CodInst)
├── scripts/
│ ├── normalizer.py # Pivot semântico + indicadores + join cadastro
│ ├── derivadas.py # Market share, HHI, rankings, variações QoQ/YoY
│ ├── enriquecer_cadastro.py # Enriquecimento de cadastro com fallback
│ ├── generate_catalog.py # Gera datasets.json
│ └── utils/ux.py # Terminal UX colorida
├── utils/base.py # salvar_csv, monkey-patch HTTP, helpers
├── config/
│ ├── settings.yaml # Endpoints OData, relatórios, range temporal
│ ├── cosif_semantic_mapping.csv # 35 contas COSIF mapeadas semanticamente
│ └── cosif_de_para.csv # Equivalências para quebra COSIF 2025
├── data/
│ ├── raw/ # CSVs trimestrais brutos (checkpoint)
│ ├── processed/ # Série consolidada pivoted + indicadores
│ ├── cadastro_ifs.csv # Cadastro enriquecido de IFs
│ ├── datasets.json # Catálogo de datasets
│ └── pipeline_status.json # Status da última execução
├── .github/workflows/main.yml # GitHub Actions (cron trimestral + Pages)
├── run_all.py # Orquestrador do pipeline
├── index.html # Dashboard estático (GitHub Pages)
└── tests/ # Testes unitários
flowchart LR
A[API OData olinda.bcb.gov.br] --> B[scrapers/bacen_ifdata.py]
B --> C[data/raw/ checkpoints]
C --> D[scripts/normalizer.py]
C --> E[scripts/enriquecer_cadastro.py]
D --> F[data/processed/ifdata_historical_10y.csv]
D --> G[scripts/derivadas.py]
G --> H[data/derivadas_*.csv]
E --> I[data/cadastro_ifs.csv]
F --> J[index.html (dashboard)]
H --> J
I --> J
Fluxo:
- Detecção: pipeline cron do GitHub Actions verifica periodicamente novo trimestre
- Extração: itera por ano → trimestre → relatório → tipo de IF, com paginação
$top/$skipe checkpointing emdata/raw/ - Normalização: pivota COSIF accounts → colunas semânticas, calcula ROE/ROA/NIM, join cadastro
- Derivadas: market share, HHI (0–10000), rankings, variações QoQ + YoY
- Publicação: CSVs versionados no git, dashboard via GitHub Pages
| # | Relatório | Categoria |
|---|---|---|
| 1 | Resumo | Balanço |
| 2 | Ativo | Balanço |
| 3 | Passivo | Balanço |
| 4 | Demonstração de Resultado | Balanço |
| 5 | Informações de Capital | Balanço |
| 6 | Segmentação | Cadastro |
| 7 | Carteira de Crédito por indexador | Crédito |
| 8 | Carteira de Crédito por nível de risco | Crédito |
| 9 | Carteira de Crédito por região geográfica | Crédito |
| 11 | Carteira de Crédito PF — modalidade e prazo | Crédito |
| 13 | Carteira de Crédito PJ — modalidade e prazo | Crédito |
Série histórica desde 2014 (10+ anos), atualização trimestral.
| Dataset | Descrição | Categoria |
|---|---|---|
cadastro_ifs.csv |
Cadastro de IFs (CodInst + nomes conhecidos) | cadastro |
ifdata_historical_10y.csv |
Série consolidada pivoted com indicadores | balanco |
derivadas_market_share.csv |
Participação de mercado por IF (%) | derivadas |
derivadas_hhi.csv |
HHI de concentração (0–10000) | derivadas |
derivadas_rankings.csv |
Rankings por ativo total e carteira | derivadas |
derivadas_var.csv |
Variações QoQ e YoY | derivadas |
- IfDataCadastro (endpoint de cadastro de IFs) retorna HTTP 500 para todos os períodos testados. O pipeline usa fallback extraindo CodInst dos dados financeiros + mapeamento manual das maiores IFs.
- Relatórios de crédito (7–13) retornam vazios para tipo 1 (conglomerados prudenciais).
- COSIF sofreu quebra de série em março/2025 —
config/cosif_de_para.csvmantém as equivalências.
# Clone
git clone https://github.com/PulseDataLabs/PulseIFData.git
cd PulseIFData
# Dependências
pip install -r requirements.txt
# Pipeline completo (extração + normalização + derivadas + catálogo)
python run_all.py
# Apenas extração
python run_all.py --scraper-only
# Apenas normalização
python run_all.py --normalize-only
# Apenas derivadas
python run_all.py --derivadas-only
# Regenerar catálogo
python run_all.py --generate-catalogimport pandas as pd
# Série histórica consolidada
url = "https://raw.githubusercontent.com/PulseDataLabs/PulseIFData/main/data/processed/ifdata_historical_10y.csv"
df = pd.read_csv(url)
# Dataset específico
url_ranking = "https://raw.githubusercontent.com/PulseDataLabs/PulseIFData/main/data/derivadas_rankings.csv"
df_rank = pd.read_csv(url_ranking)Os CSVs seguem o padrão: UTF-8, separador vírgula, decimal ponto, datas YYYY-MM-DD.
Dados públicos do IFData/BACEN — ODbL. Código sob licença MIT.