BCBFinancialService

De Wiki do Leitão
Ir para: navegação, pesquisa

BCBFinancialService

A classe BCBFinancialService é responsável por realizar a consulta de índices financeiros diretamente na API pública do Banco Central do Brasil (BCB).

Objetivo

Facilitar o acesso a séries históricas financeiras como: - Taxa SELIC (diária e mensal) - Cotação do Dólar (compra e venda) - Índice IPCA - Rentabilidade da Poupança (regra pós-2012)

Sem a necessidade de configuração adicional de bibliotecas externas. Toda comunicação é feita via HTTP(S) e interpretada via JSON nativo.

Principais Funcionalidades

A classe é utilitária (não deve ser instanciada) e expõe métodos estáticos para consulta de diferentes séries financeiras.

Métodos Públicos Disponíveis

  • getSelicDailySeries(LocalDate startDate, LocalDate endDate)

Retorna a série da Taxa SELIC diária no período informado.

  • getSelicMonthlySeries(LocalDate startDate, LocalDate endDate)

Retorna a série da Taxa SELIC mensal (taxa acumulada no mês).

  • getDollarBuySeries(LocalDate startDate, LocalDate endDate)

Retorna a série da cotação de compra do Dólar.

  • getDollarSellSeries(LocalDate startDate, LocalDate endDate)

Retorna a série da cotação de venda do Dólar.

  • getIPCASeries(LocalDate startDate, LocalDate endDate)

Retorna a série histórica do índice IPCA.

  • getPoupanca2012Series(LocalDate startDate, LocalDate endDate)

Retorna a série histórica da rentabilidade da poupança segundo regra pós-2012.

Todos os métodos recebem: - startDate: Data inicial como LocalDate. - endDate: Data final como LocalDate.

E retornam uma List<FinancialIndexEntry> contendo data e valor.

Exemplos de Uso

Consultar a taxa SELIC diária dos últimos 30 dias

import java.time.LocalDate;
import java.util.List;
import br.eng.rodrigogml.rfw.finance.fetcher.BCBFinancialService;
import br.eng.rodrigogml.rfw.finance.fetcher.FinancialIndexEntry;
import br.eng.rodrigogml.rfw.kernel.exceptions.RFWException;

public class ExemploSelic {

    public static void main(String[] args) {
        try {
            LocalDate hoje = LocalDate.now();
            LocalDate inicio = hoje.minusMonths(1);

            List<FinancialIndexEntry> selicDiaria = BCBFinancialService.getSelicDailySeries(inicio, hoje);

            for (FinancialIndexEntry entry : selicDiaria) {
                System.out.println(entry.getDate() + ": " + entry.getValue());
            }
        } catch (RFWException e) {
            e.printStackTrace();
        }
    }
}

Consultar a cotação de compra do Dólar

import java.time.LocalDate;
import java.util.List;
import br.eng.rodrigogml.rfw.finance.fetcher.BCBFinancialService;
import br.eng.rodrigogml.rfw.finance.fetcher.FinancialIndexEntry;
import br.eng.rodrigogml.rfw.kernel.exceptions.RFWException;

public class ExemploDolarCompra {

    public static void main(String[] args) {
        try {
            LocalDate inicio = LocalDate.of(2025, 4, 1);
            LocalDate fim = LocalDate.of(2025, 4, 29);

            List<FinancialIndexEntry> dolarCompra = BCBFinancialService.getDollarBuySeries(inicio, fim);

            for (FinancialIndexEntry entry : dolarCompra) {
                System.out.println(entry.getDate() + ": " + entry.getValue());
            }
        } catch (RFWException e) {
            e.printStackTrace();
        }
    }
}

Observações Importantes

- É importante validar limites de requisições impostos pela API pública do BCB.