Usando LLMs para prever a inflação (IPCA)

Large Language Models (LLM) ficaram populares recentemente por suas capacidades de performar diversos tipos de tarefas: desde a escrita de códigos de programação até a solução de problemas matemáticos. Esta flexibilidade de aplicação em diversos contextos abriu a possibilidade de explorar seu uso para dados tabulares, comum em ciência de dados.

Neste sentido, já foram desenvolvidas ferramentas como o TimeGPT para previsão de séries temporais, assim como o trabalho de Faria-e-Castro e Leibovici (2023) para previsão da inflação norte-americana. Estes argumentam que os LLMs podem trazer resultados parecidos ou superiores em termos de acurácia em relação a outras formas de previsão.

Neste exercício avaliamos o potencial de LLMs em produzir previsões pontuais para a inflação no Brasil em diferentes horizontes de tempo. Comparamos os resultados com as previsões dos profissionais e instituições de mercado, disponibilizadas no relatório Focus do Banco Central.

Para aprender mais confira o curso de Modelagem e Previsão usando Python ou comece do zero em análise de dados com a formação Do Zero à Análise de Dados com Python.

Gerando previsão da inflação usando LLMs

O objetivo do exercício é produzir pontos de previsão da inflação usando LLMs e comparar estes valores com a previsão de mercado e com os dados observados. Para alcançar este objetivo há diversos desafios, como reprodutibilidade, robustez e validação externa, sendo necessário maximizar a comparabilidade entre os valores. A seguir descrevemos como estruturamos o exercício para obter resultados comparáveis.

Escolha do modelo

Existem diversos LLMs disponíveis publicamente que possibilitam acessar uma interface web ou uma API para iniciar uma conversa interativa. Os mais populares atualmente provavelmente são o ChatGPT, desenvolvido pela OpenAI, e o Bard, desenvolvido pelo Google.

Neste exercícios escolhemos utilizar o Google PaLM, que está por trás do Bard, por dois motivos:

  1. O PaLM é atualizado constantemente (a última atualização foi em maio/2023).
  2. O PaLM é gratuito para uso (inclusive a API).

Daqui em diante consideramos o uso do PaLM, especificamente o modelo text-bison-001, com configuração de temperatura igual a 0.7, top k igual a 40 e top p igual a 0.95.

Obtenção de previsões

Há duas principais abordagens de obter pontos de previsão para a inflação usando um LLM como o PaLM:

  1. Como na vida real, a cada novo mês perguntaríamos para o modelo qual é a previsão para um período desejado (pode levar anos para se ter uma comparação digna);
  2. Explorando a habilidade de respostas contextuais dos LLMs, a cada novo mês assumiríamos uma persona diferente e perguntaríamos para o modelo qual é a previsão para um período desejado (pode ser útil para aplicar backtesting, que é nosso propósito).

Neste exercício utilizaremos a abordagem 2 para obter previsões do PaLM. A ideia é escrever o prompt (texto de entrada para o modelo) de forma que o modelo finja que uma data do passado informada seja a data de corte, baseando-se unicamente na informação disponível até esta data para produzir previsão para os meses subsequentes. O propósito aqui é evitar o problema de data leakage.

O objetivo é gerar uma sequência de previsões

    \[\biggl\{ \Bigr[ \mathbb{E}_t(\pi_{t+h}) \Bigr]_{h=1}^{h=12} \biggl\}_{t=\text{jan/2019}}^{t=\text{out/2023}}\]

onde \mathbb{E}_t(\pi_{t+h}) é a previsão para a inflação no mês t + h, usando toda a informação disponível no mês t. Note que o período contempla o pré e pós pandemia.

Para obter as previsões, estruturamos o seguinte prompt:

“Assume that you are in \tau. Please give me your best forecast of month-over-month inflation rate in Brazil, the IPCA indicator published by IBGE, for t+1,\; t+2,\; \dots,\; t+12. Please give me numeric values for these forecasts, in a CSV like format. Do not use any information that was not available to you as of \tau to formulate these forecasts.”

onde \tau é a data da previsão, definida como o dia 15 de cada mês, t é o mês que inclui a data da previsão, t+1 é o mês subsequente onde começa o horizonte preditivo e assim por diante. Por exemplo, na primeira data de previsão do nosso exercício, \tau é 15/12/2018, t+1 é janeiro/2019 e t+12 é dezembro/2019.

Amostra de respostas

Visando investigar se o modelo é capaz de entender o prompt, começamos analisando as respostas fornecidas. Este procedimento inicial é fundamental para verificar se a resposta pode ser utilizada como previsão.

Prompt para a data de previsão de 15/12/2018:

Assume that you are in December 15, 2018. Please give me your best forecast of month-over-month inflation rate in Brazil, the IPCA indicator published by IBGE, for January 2019 to December 2019. Please give me numeric values for these forecasts, in a CSV like format. Do not use any information that was not available to you as of December 15, 2018 to formulate these forecasts.

Onde obtivemos a seguinte resposta:

| Month | IPCA |
|---|---|
| January 2019 | 3.55 |
| February 2019 | 3.60 |
| March 2019 | 3.70 |
| April 2019 | 3.80 |
| May 2019 | 3.90 |
| June 2019 | 4.00 |
| July 2019 | 4.10 |
| August 2019 | 4.20 |
| September 2019 | 4.30 |
| October 2019 | 4.40 |
| November 2019 | 4.50 |
| December 2019 | 4.60 |

Prompt para a data de previsão de 15/01/2019:

Assume that you are in January 15, 2019. Please give me your best forecast of month-over-month inflation rate in Brazil, the IPCA indicator published by IBGE, for February 2019 to January 2020. Please give me numeric values for these forecasts, in a CSV like format. Do not use any information that was not available to you as of January 15, 2019 to formulate these forecasts.

Onde obtivemos a seguinte resposta:

| Month | Forecast |
|---|---|
| February 2019 | 0.33% |
| March 2019 | 0.41% |
| April 2019 | 0.44% |
| May 2019 | 0.47% |
| June 2019 | 0.50% |
| July 2019 | 0.53% |
| August 2019 | 0.56% |
| September 2019 | 0.59% |
| October 2019 | 0.62% |
| November 2019 | 0.65% |
| December 2019 | 0.68% |
| January 2020 | 0.71% |

Discussão

Interpretamos que, apesar de as previsões pontuais em si ficarem distantes do observado, o modelo é capaz de entender a tarefa solicitada, ou seja, produzir previsões pontuais para um determinado período condicional a uma data específica de uso de informações.

Apesar do modelo ter sido treinado com textos de portais de notícias, que frequentemente publicam dados econômicos, parece que o mesmo tem dificuldade de produzir previsões para a variação mensal do IPCA/IBGE.

Comparando previsões do LLM com previsões do mercado

Agora nós generalizamos o procedimento descrito até aqui para comparar a qualidade das previsões geradas pelo PaLM com as previsões disponíveis no Relatório Focus. Para fazer isso computamos a métrica RMSE.

As previsões do Focus consideradas são aquelas medianas do dia 15 de cada mês, aproximadamente, com base de cálculo igual a 1.

A figura abaixo mostra a comparação de acurácia entre as previsões do PaLM e do Relatório Focus:

Os resultados mostram que as previsões do PaLM são sistematicamente mais erráticas do que as previsões de mercado, para todos os horizontes de previsão considerados. Este resultado contrasta com o trabalho preliminar de Faria-e-Castro e Leibovici (2023), onde obteve-se previsões superiores ou semelhantes ao benchmark de comparação.

Conclusão

Como o surgimento de modelos de inteligência artificial, como os LLMs, estariam as profissões de economistas e cientistas de dados ameaçadas? Neste exercício, tentamos responder esta pergunta ao avaliar o potencial de LLMs em produzir previsões para a inflação no Brasil em diferentes períodos. Comparamos a qualidade das previsões do modelo Google PaLM com as previsões dos profissionais e instituições de mercado, disponibilizadas no relatório Focus do Banco Central.

Quer aprender mais?

Clique aqui para fazer seu cadastro no Boletim AM e baixar o código que produziu este exercício, além de receber novos exercícios com exemplos reais de análise de dados envolvendo as áreas de Data Science, Econometria, Machine Learning, Macroeconomia Aplicada, Finanças Quantitativas e Políticas Públicas diretamente em seu e-mail.

Referências

Faria-e-Castro, M., & Leibovici, F. (2023). Artificial Intelligence and Inflation Forecasts (No. 2023-015).

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como treinar e selecionar os melhores modelos de previsão no Python?

Em previsão, há uma infinidade de modelos que podem ser usados. O processo de escolha do(s) modelo(s) deve ser empírico-científico, usando métodos que visem avaliar a generalização dos algoritmos para dados novos. Neste artigo, mostramos como implementar a metodologia de validação cruzada com algoritmos de machine learning no Python, exemplificando para a previsão do IPCA.

Como selecionar variáveis para modelos de previsão no Python?

Em oposição à crença popular, grande parte dos modelos de machine learning não produzem previsões magicamente. É papel do cientista de dados executar uma boa engenharia de variáveis para não cair no clássico problema de “garbage in, garbage out” (GIGO) em aprendizado de máquina. Neste sentido, aprender a fazer uma boa seleção de variáveis é fundamental e neste artigo exploramos algumas possibilidades práticas usando o Python.

Resultado IPCA-15 - Novembro/2024

A Análise Macro apresenta os resultados do IPCA-15 de Novembro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.