codinggames

Como calcular a inflação acumulada dos últimos 12 meses com JavaScript

Escrito em 13 de maio de 2021 - 🕒 2 min. de leitura

Hoje eu precisei saber a inflação acumulada dos últimos 12 meses para um cálculo em um projeto que eu estou trabalhando, informação que pode ser facilmente acessada no site do IBGE, porem eu precisava desses dados em JSON ou pelo menos XML.

Inflação
Inflação

Por incrível que pareça, apenas pesquisar por ”API inflação acumulada 2021” não me retornou nenhum resultado útil. Eu até tentei ”como calcular a inflação acumulada “javascript”” e nada, e é por isso que eu estou fazendo esse post.

O Banco Central fornece diversos end-points com dados relacionados à economia brasileira, porem para uma pessoa que não entende muito do assunto como eu, é difícil saber qual é o endpoint correto para pegar os dados corretos.

O Banco Central possuí end-points no formato https://api.bcb.gov.br/dados/serie/bcdata.sgs.XXX/dados, no qual XXX é o código de referência dos dados. Primeiro eu encontrei esse end-point, que parecia ser correto, porem o valor de Abril de 2021 é 0.05 e no site do IBGE o valor é 0.31, ou seja não é isso que eu preciso.

Depois de tentar alguns códigos diferentes que eu achei pesquisando no Google, eu encontrei esse end-point, no qual o valor de Abril de 2021 é 0.31. Yay!

É possível filtrar os resultados desse end-point usando https://api.bcb.gov.br/dados/serie/bcdata.sgs.433/dados/ultimos/12?formato=json, que me retorna os valores dos últimos 12 meses.

Agora podemos usar esses dados para calcular a inflação acumulada dos últimos 12 meses:

const fetchBacenData = async () => {
    const url = 'https://api.bcb.gov.br/dados/serie/bcdata.sgs.433/dados/ultimos/12?formato=json';
    const result = await fetch(url, {
        method: 'GET',
    }).then(async (response) => await response.text());

    return JSON.parse(result);
};

const data = await fetchBacenData();

Para calcular a inflação acumulada usamos a seguinte fórmula: inflação acumulada = ((1 + inflação mensal anterior) * (1 + inflação mensal atual)) - 1 (formulada fornecida pelo meu grande amigo matemático sinistro Leandro). E como acumulamos dados usando JavaScript? Usando reduce:

const inflation =
    data.reduce((acc, curr) => ((1 + parseFloat(acc)) * (1 + parseFloat(curr.valor) / 100)) - 1, 0);

Isso nos resultará em 0,06759188526903293, que arredondando chegaremos ao valor de 6,76%, exatamente como está no site do IBGE. GG!

Espero que a próxima pessoa que pesquisar no Google por “API inflação acumulada 2021” encontre esse post 😊

Isso é tudo por hoje, até a próxima!

Tags:


Publicar um comentário

Comentários

pedro em 08/04/2022

muito bom!