BCBFinancialService
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(String startDate, String endDate)
Retorna a série da Taxa SELIC diária no período informado.
getSelicMonthlySeries(String startDate, String endDate)
Retorna a série da Taxa SELIC mensal (taxa acumulada no mês).
getDollarBuySeries(String startDate, String endDate)
Retorna a série da cotação de compra do Dólar.
getDollarSellSeries(String startDate, String endDate)
Retorna a série da cotação de venda do Dólar.
getIPCASeries(String startDate, String endDate)
Retorna a série histórica do índice IPCA.
getPoupanca2012Series(String startDate, String 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 no formato dd/MM/yyyy
- endDate
: Data final no formato dd/MM/yyyy
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.time.format.DateTimeFormatter;
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);
String dataInicio = inicio.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
String dataFim = hoje.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
List<FinancialIndexEntry> selicDiaria = BCBFinancialService.getSelicDailySeries(dataInicio, dataFim);
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 br.eng.rodrigogml.rfw.finance.fetcher.BCBFinancialService;
import br.eng.rodrigogml.rfw.finance.fetcher.FinancialIndexEntry;
import java.util.List;
public class ExemploDolarCompra {
public static void main(String[] args) {
try {
List<FinancialIndexEntry> dolarCompra = BCBFinancialService.getDollarBuySeries("01/04/2025", "29/04/2025");
for (FinancialIndexEntry entry : dolarCompra) {
System.out.println(entry.getDate() + ": " + entry.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Observações Importantes
- É importante validar limites de requisições impostos pela API pública do BCB.