Um indicador de incerteza no Python transforma um sentimento difuso, a sensação de que o futuro da economia está mais nublado, em um número que entra em modelos e relatórios. Neste tutorial, construímos uma versão própria do IIE-Br, o indicador de incerteza da FGV, usando apenas dados públicos e algumas dezenas de linhas de código.
No lugar dos seis jornais que a FGV monitora, usamos as atas do COPOM. No lugar das previsões proprietárias, as expectativas de mercado do Banco Central. O resultado acompanha de perto o índice oficial e mostra que a lógica econômica por trás dele resiste bem à troca de fontes.

As duas curvas sobem juntas nos momentos que a memória econômica registra: a crise de confiança de 2002, o aperto fiscal e político de 2015 e 2016, o choque da pandemia em 2020. É esse encaixe que valida o exercício. A seguir, mostramos como cada peça foi construída.
Quer reproduzir este indicador?
O script completo em Python (coleta das atas do COPOM, tratamento das expectativas de mercado e a construção do índice passo a passo) vai para os assinantes do Boletim AM. Assine, é gratuito, e receba o código pronto para rodar no Google Colab.
O que é um indicador de incerteza
Incerteza econômica é a dificuldade de prever o que vem pela frente. Quando ela aumenta, empresas adiam investimentos, famílias seguram o consumo e o mercado cobra prêmios de risco maiores. Medir esse estado de ânimo em um número é o que permite acompanhá-lo mês a mês, como se faz com a inflação ou o desemprego.
A referência brasileira é o IIE-Br (Indicador de Incerteza da Economia Brasil), calculado pela FGV IBRE. Ele combina duas leituras da incerteza: uma vinda dos textos de imprensa e outra vinda da discordância entre analistas. Nosso exercício replica essa estrutura de dois blocos, trocando as fontes por dados públicos.
A escolha de reproduzir o método, e não apenas consumir o índice pronto, tem um motivo prático. A série oficial completa fica atrás de um produto pago, e a contagem de notícias depende de acesso aos jornais. Reconstruir a lógica com fontes abertas torna o indicador reprodutível por qualquer pessoa com Python.
Como o indicador foi construído
O caminho tem quatro etapas, e é o mesmo de quase todo projeto de dados macroeconômicos: coletar, tratar, modelar e visualizar. Cada etapa usa uma fonte pública e uma ferramenta específica.
O componente textual: atas do COPOM
O primeiro bloco substitui os jornais por um documento oficial: as atas do COPOM, o comitê que define a taxa de juros. A escolha tem lógica. As atas trazem a leitura do Banco Central sobre a conjuntura, são densas em menções a riscos, e estão inteiramente disponíveis por uma API pública. Não têm a diversidade de seis jornais, mas oferecem uma voz consistente ao longo de mais de duas décadas.
A coleta esbarra num detalhe técnico: as atas mudaram de formato com o tempo. As mais antigas e as recentes vêm em HTML; as do intervalo entre 2016 e 2020 só existem em PDF, que precisa ser baixado e lido à parte. O código trata os dois casos e junta tudo num único conjunto de 259 atas.
Para transformar texto em número, definimos dois grupos de palavras. Um grupo de incerteza (incerteza, risco, volatilidade) e um de economia (inflação, juros, Selic). Em vez de só marcar presença, medimos a densidade: quantas vezes cada grupo aparece por palavra da ata. Isso corrige o efeito do tamanho, já que uma ata longa naturalmente teria mais ocorrências.
O índice de cada ata é o produto das duas densidades. Multiplicar em vez de somar tem um efeito importante: o índice só fica alto quando os dois temas aparecem juntos e com força. Uma ata cheia de "risco" mas sem vocabulário econômico resulta num valor baixo — é o risco econômico que interessa, não o risco em abstrato.
O componente de expectativas: a discordância do mercado
O segundo bloco parte de uma intuição simples: quando os analistas concordam sobre o futuro, a incerteza é baixa; quando as previsões se espalham, ela sobe. A medida desse espalhamento é o coeficiente de variação, o desvio-padrão dividido pela média. Ele é adimensional, o que permite comparar variáveis em escalas diferentes — o IPCA em torno de 4% e o câmbio em torno de R$ 5.
Usamos três séries do sistema de Expectativas de Mercado do Banco Central, todas públicas: o IPCA acumulado 12 meses à frente, o câmbio 12 meses à frente e a Selic esperada. Para cada uma, calculamos o coeficiente de variação numa janela móvel de 12 meses e tiramos a média dos três. É o proxy de incerteza nas expectativas.
Juntando os dois na base da FGV
A consolidação segue a fórmula do IIE-Br oficial: 80% do componente textual e 20% do de expectativas. O peso maior no texto reproduz a ponderação da FGV. Por fim, a série é padronizada na janela de referência de 2006 a 2015 para ter média 100 e desvio-padrão 10. Padronizar significa reescalar a série para uma base comum: 100 marca a incerteza média daquela década, e valores acima ou abaixo indicam incerteza maior ou menor que o normal.
O indicador replicado sobe exatamente onde a história econômica registra tensão. A tabela abaixo resume os grandes picos e o que havia por trás de cada um.
| Período | Índice (base 100) | Contexto |
|---|---|---|
| Jan/2003 | 194,5 | Crise de confiança na transição de governo |
| Out/2008 | 109,4 | Crise financeira global |
| Jan/2016 | 107,6 | Recessão, crise fiscal e política |
| Nov/2020 | 135,3 | Auge da incerteza da pandemia |
| Jul/2026 | 89,6 | Expectativas mais ancoradas, incerteza abaixo da média |
Indicador de incerteza replicado nos principais episódios. Fonte: BCB (atas do COPOM e expectativas de mercado).

As ferramentas por trás

pandas, requests e pypdf.
O que o resultado revela
- A lógica econômica se sustenta. Mesmo com fontes diferentes das oficiais, o sinal de incerteza emerge e acompanha o índice da FGV nos grandes choques.
- Dado público é suficiente. Todo o insumo veio de APIs abertas do Banco Central — nada pago, nada restrito.
- O método é transferível. Trocando os termos e as séries, o mesmo pipeline mede incerteza setorial, sentimento de mercado ou risco político.
As diferenças de nível e amplitude entre as duas curvas são esperadas e não invalidam o exercício. As atas do COPOM refletem a visão institucional do Banco Central, não a percepção ampla que os jornais captam, e o vocabulário de termos é fixo. O objetivo aqui é reproduzir o método com transparência, explicitando cada escolha, não competir com o índice oficial.
Considerações finais
Com fontes públicas e algumas dezenas de linhas de Python, você reproduziu um indicador que, até agora, ficava restrito a quem paga pela série oficial da FGV. O trabalho não está na fórmula, que é simples, mas na engenharia de dados: alinhar séries que vêm em formatos e frequências diferentes, do texto das atas em PDF às expectativas diárias do mercado.
O Python reúne todas as etapas num fluxo único: baixar da API, limpar o texto, calcular a dispersão, ponderar e desenhar o gráfico. Não é preciso alternar entre planilha, editor de texto e software estatístico, e qualquer pessoa consegue rodar o mesmo código e chegar ao mesmo número.
O alcance vai além deste indicador. O mesmo caminho se repete em quase todo problema de análise econômica, e o que muda é só a aplicação:
- Economista: constrói indicadores próprios de conjuntura e antecipa pontos de virada do ciclo.
- Analista de mercado: transforma a discordância dos analistas em um sinal quantitativo de risco.
- Gestor de risco: monitora a incerteza como variável de entrada em modelos de exposição e alocação.
- Cientista de dados: aplica a mesma extração de texto a relatórios, notícias e comunicados de qualquer setor.
Em todas elas, o trabalho começa com o mesmo pipeline de coleta e tratamento que você viu aqui.
Aprenda a construir indicadores como este
A Formação em Análise Macroeconômica ensina a coletar, tratar e modelar os dados da economia brasileira em Python e R: inflação, câmbio, juros e expectativas, exatamente o tipo de pipeline deste exercício. Quem quer acesso a todas as formações tem o AM Black, a assinatura anual.
Leia também: