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

Análise do Censo Demográfico com o R

Como podemos analisar dados do Censo Demográfico para produzir pesquisas e implementar políticas públicas? Mostramos nesta postagem o resultado de uma breve análise dos dados preliminares do Censo Demográfico de 2022 usando o R.

Deploy de modelos com Python + Shinylive + GitHub gastando ZERO reais

Colocar modelos em produção pode ser um grande desafio. Lidar com custos monetários, infraestrutura operacional e complexidades de códigos e ferramentas pode acabar matando potenciais projetos. Uma solução que elimina todos estes obstáculos é a recém lançada Shinylive. Neste artigo mostramos um exemplo com um modelo de previsão para o preço do petróleo Brent.

Como automatizar tarefas repetitivas usando Python? Um exemplo para largar o Excel

Manter relatórios diários com dados e análises atualizados é um desafio, pois envolve várias etapas: coleta de dados, tratamento de informações, produção de análises e atualização de relatório. Para superar este desafio algumas ferramentas como Python + Quarto + GitHub podem ser usadas para automatizar tudo que for automatizável. Neste artigo mostramos um exemplo com dados do mercado financeiro.

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.