Skip to main content

Acesso simplificado aos dados do Banco Central do Brasil

Project description

BacenData

Acesso simplificado aos dados do Banco Central do Brasil.

Resolve automaticamente a limitacao de 10 anos por consulta imposta pelo BACEN em marco/2025, com paginacao transparente, retry inteligente e cache local.

Instalacao

pip install bacendata

Uso rapido

from bacendata import sgs

# Buscar a taxa Selic (por codigo ou nome)
selic = sgs.get(11, start="2020-01-01")
selic = sgs.get("selic", start="2020-01-01")

# Buscar multiplas series de uma vez
df = sgs.get({"Selic": 11, "IPCA": 433, "Dolar": 1}, start="2010-01-01")

# Ultimos N valores
ipca = sgs.get(433, last=12)

# Buscar mais de 10 anos (paginacao automatica!)
selic_longa = sgs.get(11, start="2000-01-01", end="2024-12-31")

Funcionalidades

  • Paginacao automatica — consultas >10 anos sao divididas em chunks e feitas em paralelo
  • Multiplas series — busque varias series de uma vez com dict
  • Catalogo integrado — use nomes em vez de codigos: sgs.get("selic")
  • Cache local — evite chamadas repetidas a API do BACEN
  • Retry com backoff — trata automaticamente erros 429, 500 e timeouts
  • Formato flexivel — aceita datas ISO (2024-01-01), brasileiro (01/01/2024) e objetos date
  • Retorno pandas — dados prontos para analise como DataFrame
  • Async nativo — interface sync (get) e async (aget) para FastAPI

Catalogo de series

Voce pode usar nomes em vez de codigos numericos:

sgs.get("selic")          # Taxa Selic diaria (codigo 11)
sgs.get("ipca")           # IPCA mensal (codigo 433)
sgs.get("dolar")          # Dolar PTAX compra (codigo 1)
sgs.get("euro")           # Euro compra (codigo 10813)
sgs.get("focus_ipca")     # Expectativa IPCA 12m (codigo 27574)
sgs.get("focus_selic")    # Expectativa Selic (codigo 27575)
sgs.get("inadimplencia_pf")  # Inadimplencia PF (codigo 21112)

Para listar todas as series disponiveis:

from bacendata.wrapper.catalogo import listar

for serie in listar():
    print(f"{serie.codigo:>6} | {serie.nome} ({serie.periodicidade})")

Cache local

Ative o cache para evitar chamadas repetidas:

from bacendata import sgs

sgs.cache.ativar()  # Salva em ~/.bacendata/cache.db

selic = sgs.get(11, start="2020-01-01")  # Primeira vez: busca na API
selic = sgs.get(11, start="2020-01-01")  # Segunda vez: le do cache

# Caminho customizado
sgs.cache.ativar("/tmp/meu_cache.db")

# Limpar cache
sgs.cache.limpar()

# Desativar
sgs.cache.desativar()

TTL padrao por periodicidade:

  • Series diarias: 1 hora
  • Series semanais: 6 horas
  • Series mensais: 24 horas

Metadados

info = sgs.metadata(433)
# {'codigo': 433, 'nome': 'IPCA - Variacao mensal', 'periodicidade': 'Mensal', ...}

Interface async

Para uso em FastAPI ou outros frameworks async:

import asyncio
from bacendata import sgs

async def main():
    df = await sgs.aget(11, start="2020-01-01")
    print(df)

asyncio.run(main())

Series disponiveis no catalogo

Codigo Nome Periodicidade Aliases
1 Dolar (compra) Diaria dolar, usd, ptax, cambio
11 Selic diaria Diaria selic, selic_diaria
12 Selic acumulada no mes Mensal selic_mensal, selic_acumulada
433 IPCA Mensal ipca, inflacao
4189 Juros PF Mensal juros_pf, taxa_pf
4390 Selic acumulada anualizada Mensal selic_anual, selic_anualizada
7326 Reservas Internacionais Diaria reservas
10813 Euro (compra) Diaria euro, eur
20542 Saldo Credito Livre Mensal saldo_credito, carteira_credito
21082 Inadimplencia PJ Mensal inadimplencia_pj, default_pj
21112 Inadimplencia PF Mensal inadimplencia_pf, default_pf
25434 Juros Credito Livre Mensal juros_credito, credito_livre
27574 Expectativa IPCA 12m Semanal focus_ipca, expectativa_ipca
27575 Expectativa Selic Semanal focus_selic, expectativa_selic

Qualquer codigo SGS funciona mesmo fora do catalogo: sgs.get(99999, last=10).

Tratamento de erros

from bacendata.wrapper.exceptions import (
    SerieNaoEncontrada,
    BacenAPIError,
    BacenTimeoutError,
    ParametrosInvalidos,
)

try:
    df = sgs.get(99999, start="2024-01-01")
except SerieNaoEncontrada:
    print("Serie nao existe")
except BacenTimeoutError:
    print("API do BACEN nao respondeu")
except BacenAPIError as e:
    print(f"Erro {e.status_code}: {e.mensagem}")

Desenvolvimento

git clone https://github.com/fmaignacio/bacendata.git
cd bacendata
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
pip install -e ".[dev]"

# Testes
python -m pytest tests/ -v --cov=src/bacendata

# Lint
ruff check src/ tests/
black src/ tests/

Licenca

MIT

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

bacendata-0.1.0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

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

bacendata-0.1.0-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file bacendata-0.1.0.tar.gz.

File metadata

  • Download URL: bacendata-0.1.0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for bacendata-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c0279d89ae5167eee2334d357b2a57f8174006928100d102f12b782618638472
MD5 f2020dca034e6c4d177da760422063e0
BLAKE2b-256 2bd9a59f4b12c646ea73982b6dedfb72f8276cfd9490c8f2b90a1d403898ccb3

See more details on using hashes here.

File details

Details for the file bacendata-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bacendata-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for bacendata-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f195b5a3659ab60c13e611f67c64afa43457b2d612c13f4f5d3b13a852df6b3
MD5 49a67bde007e6916a9a34a128a8962da
BLAKE2b-256 c73322cfb3bff64446f6672a4553bdfd0fb50fe5656c4b3657ffd9832c5127f6

See more details on using hashes here.

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