Construindo um Índice de Tom das Atas do Copom com LLMs e Python

Este artigo apresenta um tutorial sobre como construir um Índice de Tom para as atas do Copom utilizando Grandes Modelos de Linguagem (LLMs) e Python. Mostramos o processo de coleta de dados via API do BCB, engenharia de prompt com o Google Gemini e calibração do índice via regressão linear para expressá-lo em unidades equivalentes à taxa Selic. O resultado é um indicador quantitativo que mede o sentimento (hawkish vs. dovish) da comunicação do Banco Central.
Gráfico de linha e pontos intitulado "Índice de Tom das Atas do Copom", cobrindo o período de 2020 a 2026. A linha vermelha contínua representa o índice de tom calibrado, expresso em pontos percentuais equivalentes à Selic. Os pontos em formato de diamante cinza marcam a variação real da taxa Selic em cada reunião. O gráfico demonstra a alta correlação entre o tom da ata e a decisão de juros, capturando o ciclo de aperto monetário de 2021-2022 e o ciclo de afrouxamento iniciado em 2023.

Introdução

A comunicação dos bancos centrais é uma ferramenta de política monetária por si só. As atas das reuniões do Comitê de Política Monetária (Copom) do Banco Central do Brasil (BCB) são documentos densos, onde a escolha de cada palavra — "cautela", "parcimônia", "vigilância" — carrega um sinal sobre a direção futura da taxa Selic. Analistas de mercado dedicam horas para decifrar essa linguagem, buscando antecipar os próximos passos do comitê.

E se pudéssemos automatizar essa leitura, transformando o texto subjetivo em um indicador quantitativo? Este exercício demonstra como utilizar LLMs, como o Gemini do Google, para construir um Índice de Tom das atas do Copom. O objetivo é criar um indicador que não apenas mede o sentimento (hawkish vs. dovish), mas o expressa em unidades diretamente comparáveis à própria taxa Selic.

O Estado da Arte: LLMs na Análise de Comunicação de Bancos Centrais

A aplicação de Processamento de Linguagem Natural (PLN) para analisar textos de bancos centrais não é nova, mas a chegada dos LLMs representa um avanço relevante em capacidade analítica. Enquanto métodos tradicionais se baseavam em dicionários de palavras — como Loughran & McDonald (2011), que contam termos hawkish e dovish —, os LLMs conseguem interpretar contexto, semântica e nuances do discurso, permitindo uma leitura mais próxima da interpretação econômica real.

Nosso exercício se insere nessa fronteira ao criar um pipeline reprodutível em Python, utilizando LangChain e modelos generativos para transformar texto de política monetária em dados quantitativos.

Metodologia e Dados

O processo foi estruturado em três etapas principais, demonstrando a capacidade do Python em orquestrar desde a coleta de dados até a modelagem estatística e visualização.

1. Coleta e Pré-processamento de Dados O primeiro passo foi construir um coletor de dados automatizado. Utilizando a biblioteca requests, o código acessa diretamente as APIs públicas do BCB para baixar o conteúdo de todas as atas do Copom desde a reunião 232 (agosto de 2020) e a série histórica da meta Selic. Para otimizar a análise pelo LLM, aplicamos um pré-processamento inteligente:

  • Limpeza de HTML: Removemos todas as tags HTML, notas de rodapé e espaços excessivos, transformando o documento em texto puro.
  • Extração de Seções Relevantes: O sinal informacional de uma ata concentra-se nas seções de diagnóstico da conjuntura (Seção A) e balanço de riscos (Seção B). As seções seguintes, que anunciam a decisão já conhecida, são menos informativas. O código isola apenas as seções A e B, reduzindo em cerca de 50% o número de tokens enviados ao modelo sem perda de informação relevante.

2. Geração do Score Bruto via LLM (Engenharia de Prompt) Esta é a etapa central. Utilizando o modelo gemini-flash-lite-latest através do LangChain, desenvolvemos um prompt altamente especializado. O modelo recebe a persona de um "economista sênior do BCB" e uma escala de pontuação detalhada, que vai de -3.0 (fortemente dovish) a +3.0 (fortemente hawkish). O prompt inclui âncoras explícitas para cada faixa de score (ex: "-2.0: balanço de riscos assimétrico para baixo; desinflação clara") e a instrução crucial de ignorar a decisão da taxa já anunciada, focando apenas no tom implícito do texto.

Para garantir a robustez da saída, utilizamos a funcionalidade de saída estruturada (Pydantic). O LLM é forçado a retornar sua resposta em um formato JSON pré-definido, contendo apenas um número float. Isso elimina a necessidade de parsing frágil de texto e garante que o resultado seja diretamente utilizável.

3. Calibração OLS em Unidades da Selic O score bruto do LLM (de -3 a +3) é qualitativo. Para dar-lhe um significado econômico, calibramos o índice. Estimamos uma regressão linear simples (OLS) onde a variável dependente é a variação da Selic em cada reunião (em pontos percentuais) e a variável explicativa é o score bruto gerado pelo LLM.

Análise dos Resultados

Neste primeiro gráfico temos o índice calibrado (linha vermelha) contra a variação efetiva da Selic em cada reunião (pontos em formato de diamante). A correlação visual é notável. O índice conseguiu capturar com precisão os grandes ciclos de política monetária:

Gráfico de linha e pontos intitulado "Índice de Tom das Atas do Copom", cobrindo o período de 2020 a 2026. A linha vermelha contínua representa o índice de tom calibrado, expresso em pontos percentuais equivalentes à Selic. Os pontos em formato de diamante cinza marcam a variação real da taxa Selic em cada reunião. O gráfico demonstra a alta correlação entre o tom da ata e a decisão de juros, capturando o ciclo de aperto monetário de 2021-2022 e o ciclo de afrouxamento iniciado em 2023.

Surpresa de Comunicação (Z-Score)

No segundo gráfico temos a "surpresa" do tom de cada ata. Ele calcula o desvio do score de cada reunião em relação à média histórica, expresso em desvios-padrão (z-score). Pontos acima de zero indicam uma comunicação mais hawkish que o esperado, enquanto pontos abaixo de zero indicam um tom mais dovish. Este gráfico é útil para identificar reuniões onde o Copom sinalizou uma mudança de rota inesperada, gerando surpresa no mercado.

Gráfico de dispersão em formato de diamante intitulado "Tom Observado das Atas — z-score (desvios da média histórica)". O eixo vertical representa o desvio-padrão (z-score) do tom de cada ata em relação à média histórica. Pontos acima da linha zero indicam uma comunicação mais "hawkish" (contracionista) que o esperado, enquanto pontos abaixo de zero indicam um tom mais "dovish" (expansionista). O gráfico permite identificar reuniões onde o Copom sinalizou uma mudança de postura que surpreendeu o mercado.

Conclusão

Este exercício demonstra que a aplicação de LLMs na análise de política monetária é não apenas viável, mas extremamente poderosa. O pipeline construído em Python permitiu transformar textos complexos e subjetivos em um indicador quantitativo, tempestivo e economicamente interpretável.

A capacidade de automatizar a coleta de dados, aplicar engenharia de prompt sofisticada e calibrar os resultados via modelos estatísticos em um único ambiente de programação oferece aos economistas e analistas de mercado uma ferramenta de ponta para o monitoramento da conjuntura. O Índice de Tom do Copom, quando bem construído, pode servir como um indicador antecedente valioso para a formulação de cenários e estratégias de investimento.

Referências

CARUSO, L. Índice de Tom do Copom com LLMs. São Paulo: Santander Brasil, 2026.

HANSEN, S.; KAZINNIK, S. Can ChatGPT Decipher Fedspeak? Richmond: Federal Reserve Bank of Richmond, 2023. (SSRN Working Paper n. 4399406). Disponível em: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4399406. Acesso em: 14 abr. 2026.

HANSEN, S.; McMAHON, M. Shocking language: understanding the macroeconomic effects of central bank communication. Journal of International Economics, v. 99, supl. 1, p. S114–S133, 2016. DOI: 10.1016/j.jinteco.2015.12.008.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print
Análise Macro © 2011 / 2026

comercial@analisemacro.com.br – Rua Visconde de Pirajá, 414, Sala 718
Ipanema, Rio de Janeiro – RJ – CEP: 22410-002

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp