O índice de condições financeiras resume, em um único número, se o ambiente financeiro está apertando ou afrouxando a economia.
Neste tutorial reconstruímos no Python o ICF do Banco Central do Brasil com dados públicos, e o decompomos para ver o que puxa cada movimento.
O resultado replica de perto o índice oficial: a versão que construímos acompanha de perto o ICF divulgado pelo BCB, sem usar nenhuma base paga. A prova está no gráfico abaixo.

As duas linhas quase se sobrepõem em toda a amostra que o BCB publica, o que valida a metodologia. A seguir mostramos como chegar até esse resultado, passo a passo, e como abrir o índice por grupo de fatores.
Código do exercício
O código com a réplica do Índice de Condições Financeiras do Banco Central com dados públicos está disponível em:
O que é um índice de condições financeiras
As condições financeiras descrevem o custo e a disponibilidade de crédito para famílias e empresas. Quando estão restritivas (juros altos, risco elevado, câmbio depreciado, bolsa em queda), elas freiam o consumo e o investimento. Quando estão estimulativas, aceleram.
As condições financeiras se manifestam em dezenas de preços de mercado ao mesmo tempo: juros de vários prazos, prêmios de risco, câmbio, bolsa, commodities. Cada preço carrega um pedaço da informação.
O índice de condições financeiras (ICF) representa esse conjunto de preços num indicador único, construído para que o movimento comum entre eles apareça numa série só. Por convenção, valores positivos indicam aperto e valores negativos indicam afrouxamento.
O ponto é que o ICF precisa ser estimado, e não consultado. Ele resulta de uma sequência de escolhas sobre quais variáveis entram, como se agrupam e quanto cada grupo pesa.
Este exercício replica a metodologia que o Banco Central descreve no Boxe 5 do Relatório de Inflação de dezembro de 2022 e no Estudo Especial nº 76.
A adaptação central é usar apenas fontes públicas e automatizáveis, o que torna o índice reproduzível de ponta a ponta no Python.
Como o índice é construído
A construção segue quatro etapas. Cada uma resolve um problema específico de juntar variáveis muito diferentes em uma medida comparável.
📥
🧹
🧮
⚖️
Os sete grupos de variáveis
As variáveis cobrem tanto o mercado local quanto o global, porque as condições financeiras no Brasil respondem às duas frentes.
Do lado local entram os juros Brasil (NTN-B de 5 e 10 anos e Selic esperada) e o mercado de capitais (Ibovespa, MSCI World e MSCI Emerging Markets).
Do lado externo, os juros exterior (títulos soberanos de EUA, Alemanha, Reino Unido e Japão) e o risco (VIX e spread Brasil-EUA).
Completam o conjunto as moedas (dólar, moedas emergentes e real), o petróleo (WTI e Brent) e as commodities (índices metálico e agropecuário do BCB).
O tratamento das séries
Antes de modelar, todas as séries passam por três ajustes.
A frequência. As séries diárias viram mensais, por média ou último valor do mês, para que todas compartilhem a mesma unidade de tempo.
A remoção de tendência. Variáveis com tendência de longo prazo, como índices de bolsa e commodities, têm a tendência linear subtraída. O índice passa a captar oscilação, e não nível.
A padronização por z-score. Cada série é recentrada em média zero e desvio-padrão um. Sem esse passo, uma variável com números grandes dominaria o resultado só pela unidade em que é medida.
A extração de fatores com PCA
A Análise de Componentes Principais (PCA) encontra, dentro de cada grupo, a combinação das variáveis que captura a maior parte da variação conjunta. Essa combinação, chamada de primeira componente principal, é o fator comum do grupo.
No grupo de juros, por exemplo, quando as taxas de 5 e 10 anos e a Selic esperada sobem juntas, o fator sobe com elas e passa a resumir, em uma série só, o nível de juros.
Reduzir cada grupo a um fator evita contar duas vezes variáveis que andam juntas.
Há um detalhe técnico que muda o resultado: o sinal de uma componente principal é indeterminado. O fator e o seu negativo explicam a mesma variação, e o algoritmo pode devolver qualquer um dos dois.
Para o índice ter interpretação estável, ancoramos o sinal de cada subíndice em uma variável de referência: a NTN-B nos juros, o VIX no risco, o Ibovespa na bolsa. Assim, subíndice maior significa sempre condições mais restritivas.
A ponderação pela relevância econômica
Os sete subíndices não pesam igual no índice final. O peso de cada um vem da sua relevância econômica, medida por uma regressão contra a variação futura do IBC-Br, a proxy mensal do PIB.
Quanto mais um grupo se relaciona com a atividade seis meses à frente, maior o peso que ele recebe. O ICF final é a soma ponderada dos subíndices, padronizada.
A tabela abaixo traz o peso de cada grupo.
| Grupo de fatores | Peso no índice |
|---|---|
| Risco | 26,3% |
| Moedas | 16,9% |
| Juros Brasil | 16,6% |
| Mercado de Capitais | 14,8% |
| Commodities | 10,5% |
| Juros Exterior | 8,3% |
| Petróleo | 6,5% |
Peso de cada grupo no ICF, pela relevância econômica frente à atividade futura. Fonte: elaboração própria.
Risco, moedas e juros locais concentram quase 60% do índice, o que é coerente com o que costuma mover as condições financeiras de uma economia emergente.
O índice até o dado mais recente
Validada a replicação contra o BCB, o mesmo índice pode ser estendido até o dado mais recente, já que todas as fontes são de acesso contínuo. O gráfico abaixo traz a série completa.

Abrindo o índice: a decomposição
Como o ICF é uma soma ponderada dos subíndices, ele pode ser aberto para revelar quanto cada grupo contribuiu em cada mês. Essa abertura é a decomposição.
Ela responde a uma pergunta que o número agregado deixa aberta: um aperto veio dos juros, do câmbio ou do risco global?

Cada barra soma as contribuições dos grupos naquele mês, e a linha preta é o índice resultante.
Nos episódios de aperto, a figura mostra se o empurrão veio dos juros locais, do risco global ou do câmbio. O índice agregado, sozinho, não traz essa origem.
As ferramentas por trás

pandas, scikit-learn (PCA e regressão) e plotnine para os gráficos.
python-bcb.pandas-datareader e yfinance.Considerações finais
Este exercício mostra algo que era, até pouco tempo, restrito a mesas de análise: reconstruir um indicador oficial do Banco Central com dados públicos e poucas etapas de código, chegando a uma série que acompanha de perto a original.
O Python reúne num só ambiente a coleta das APIs, o tratamento das séries, a modelagem estatística (PCA e regressão) e a visualização.
Esse caminho, de coletar a tratar, modelar e visualizar, se repete em quase todo problema de análise macrofinanceira. O que muda é a aplicação:
- Economistas: monitorar o aperto ou afrouxamento das condições financeiras como leitura complementar à política monetária.
- Analistas de mercado: antecipar inflexões do ciclo, já que condições financeiras costumam anteceder a atividade.
- Gestores e traders: ler o ambiente de risco de forma sintética e decompô-lo por fator para entender de onde vem o estresse.
- Risco e research: construir indicadores próprios, calibrados à carteira ou ao mandato, em vez de depender de um número fechado.
Em todas elas o ganho é o mesmo: um indicador reconstruído em casa pode ser aberto por grupo, refeito com outra janela e checado contra a série oficial.
Você viu como funciona. Aprenda a construir do zero
Coletar dados de APIs públicas, tratar séries temporais, aplicar PCA e regressão e montar gráficos: é o que você pratica, do zero e sem pré-requisito, na formação Do Zero à Análise de Dados Econômicos e Financeiros usando Python e IA. Quem quer acesso a todas as formações tem o AM Black, a assinatura anual.
Leia também: