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(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.