Construção e Análise do Índice de Condições Financeiras (ICF) com Python

Este exercício apresenta a replicação do Índice de Condições Financeiras (ICF) do Banco Central do Brasil utilizando a linguagem Python. O estudo detalha o ciclo completo de dados: coleta automatizada de variáveis locais e globais (via APIs do BCB, FRED e Yahoo Finance), tratamento estatístico (padronização e remoção de tendência) e modelagem via Análise de Componentes Principais (PCA). Os resultados validam a metodologia, gerando um indicador aderente à dinâmica histórica de aperto e afrouxamento financeiro da economia brasileira.

Introdução

As condições financeiras desempenham um papel central na transmissão da política monetária e na atividade econômica. Elas refletem o custo e a disponibilidade de financiamento para famílias e empresas, influenciando decisões de consumo e investimento. Para mensurar esse conceito abstrato, bancos centrais e instituições financeiras utilizam o Índice de Condições Financeiras (ICF), uma métrica sintética que agrega diversas variáveis de mercado.

Este exercício tem como objetivo replicar a metodologia do Banco Central do Brasil (BCB) para a construção do ICF, conforme detalhado no Boxe 5 do Relatório de Inflação de Dezembro de 2022 e no Estudo Especial nº 76. Utilizando a linguagem Python, desenvolvemos um pipeline completo de dados para coletar, processar e modelar indicadores financeiros locais e globais, culminando na extração de um índice comum via Análise de Componentes Principais (PCA).

Quer ver a vídeoaula do tutorial deste exercício? E receber o código que o produziu? Faça parte do Clube AM e receba toda semana os códigos em R/Python, vídeos, tutoriais e suporte completo para dúvidas.

O Poder do Python na Análise Macrofinanceira

A execução deste estudo demonstra a versatilidade do ecossistema Python para a análise econômica avançada. O código desenvolvido ilustra como a linguagem permite integrar fontes de dados heterogêneas e aplicar técnicas estatísticas robustas de forma eficiente:

  1. Coleta: Integração simultânea com APIs do Banco Central (SGS e Expectativas)FRED (Federal Reserve Economic Data) e Yahoo Finance, além de scraping de dados do Tesouro Direto.
  2. Tratamento de Séries Temporais: Manipulação avançada de datas, preenchimento de falhas (forward fill), remoção de tendências (detrending) e padronização (z-score) de variáveis com diferentes unidades e periodicidades.
  3. Modelagem Estatística: Aplicação de Análise de Componentes Principais (PCA) para redução de dimensionalidade e extração de fatores latentes.
  4. Visualização de Dados: Criação de gráficos comparativos de alta qualidade para validar os resultados frente aos dados oficiais.

Metodologia e Dados

A construção do ICF parte da premissa de que as condições financeiras constituem um fator comum não observável, que afeta simultaneamente diferentes classes de ativos e preços financeiros. Essa ideia é amplamente utilizada na literatura e fundamenta a metodologia adotada pelo Banco Central do Brasil (BCB) em seus Boxe e Estudos Especiais.

Neste artigo, seguimos a metodologia proposta pelo BCB, porém introduzimos adaptações com o objetivo de garantir total reprodutibilidade do indicador utilizando exclusivamente dados obtidos via APIs públicas, acessíveis diretamente em Python. Essas modificações são necessárias porque algumas variáveis utilizadas pelo BCB não possuem acesso público automatizado.

Em particular, variáveis como o swap x DI Pré de 1 e 5 anos, CDS do Brasil (5 anos), Índice CRB e taxas de juros de economias avançadas em múltiplas maturidades foram excluídas ou substituídas por proxies economicamente equivalentes, disponíveis em bases públicas. Essa substituição busca preservar a interpretação econômica do indicador, ainda que com pequenas diferenças em relação à cesta original do BCB.

Como consequência direta das bases de dados utilizadas, o indicador aqui construído possui frequência mensal, diferentemente do ICF diário divulgado pelo BCB. Essa limitação decorre da própria natureza das séries disponíveis publicamente. Ressalte-se que seria possível obter dados de maior frequência por meio de bases pagas ou via download manual de sites como o Investing.com; no entanto, esse procedimento não foi o adotado, a fim de manter a automação completa do processo, sem qualquer intervenção humana.

Apesar dessas restrições, o indicador resultante apresenta elevada aderência ao ICF oficial do BCB, tanto em termos de dinâmica quanto de interpretação econômica, o que reforça a robustez da metodologia e das proxies utilizadas. A seguir, apresentamos o conjunto de variáveis empregadas na construção do ICF reproduzível.

1. Seleção e Coleta de Variáveis

Foram selecionadas 20 variáveis financeiras, agrupadas em 7 dimensões, cobrindo o período de 2000 a 2025.

Juros Brasil: Taxas reais das NTN-Bs de 5 e 10 anos (Tesouro IPCA+).

Juros Externos: Taxas de títulos soberanos de longo prazo dos EUA, Alemanha, Reino Unido e Japão.

Risco: VIX (volatilidade implícita do S&P 500) e Spread soberano Brasil-EUA (5 anos).

Moedas: Índice Dólar (DXY), índice de moedas emergentes e taxa de câmbio BRL/USD.

Commodities: Preços do petróleo (WTI e Brent) e índices de commodities do BCB (Metálicas e Agropecuárias).

Mercado de Capitais: Índices acionários Ibovespa, MSCI World e MSCI Emerging Markets.

Categoria Indicador / Série Fonte Python / Biblioteca Código / Endpoint / Ticker
Juros Brasil Selic (Focus, 12 meses à frente) BCB python-bcb bcb.expectativas – ExpectativasMercadoTop5Anuais
NTN-B (Tesouro IPCA+ 5 e 10 anos) Tesouro Nacional Scraping CSV Tesouro Direto CSV
Juros Exterior EUA (3M, 2Y, 10Y) FRED pandas-datareader DGS3MODGS2DGS10
Alemanha (3M, 10Y) FRED pandas-datareader IR3TIB01DEM156NIRLTLT01DEM156N
Reino Unido (3M, 10Y) FRED pandas-datareader IR3TIB01GBM156NIRLTLT01GBM156N
Japão (3M, 10Y) FRED pandas-datareader IR3TIB01JPM156NIRLTLT01JPM156N
Risco Volatilidade VIX Yahoo Finance yfinance ^VIX
Spread Brasil vs EUA (5Y) BCB / FRED Cálculo direto Brasil: Swap Pré-DI/Tesouro 5Y, EUA: DGS5
Moedas DXY (desenvolvidos) Yahoo Finance yfinance DX-Y.NYB
Emergentes FRED pandas-datareader DTWEXEMEGS
BRL/USD Yahoo Finance yfinance BRL=X
Petróleo WTI Yahoo Finance yfinance CL=F
Brent Yahoo Finance yfinance BZ=F
Commodities (IC-Br) Metal (US$) BCB (SGS) python-bcb – módulo sgs 29040
Agropecuária (US$) BCB (SGS) python-bcb – módulo sgs 29041
Mercado de Capitais Ibovespa Yahoo Finance yfinance ^BVSP
MSCI World Yahoo Finance yfinance URTH
MSCI Emerging Markets Yahoo Finance yfinance EEM

2. Tratamento dos Dados

Para garantir a comparabilidade e a adequação ao modelo estatístico, as séries passaram por transformações rigorosas: * Frequência: Todas as séries foram convertidas para frequência mensal (média ou último valor). * Estacionariedade: Variáveis com tendência de longo prazo (como índices de bolsas e commodities) foram submetidas a um processo de detrending linear. * Padronização: Todas as variáveis foram normalizadas pelo método z-score (média zero e desvio-padrão unitário), eliminando diferenças de escala.

3. Extração de Fatores (PCA)

Aplicou-se a Análise de Componentes Principais (PCA) individualmente para cada um dos 7 grupos de variáveis, extraindo a primeira componente principal de cada grupo. Isso gerou 7 subíndices representativos.

4. Ponderação Econômica

Diferente de um PCA puro sobre todas as variáveis, a metodologia do BCB pondera os subíndices com base em sua relevância econômica. Os pesos foram estimados através de regressões lineares simples, onde cada subíndice (componente principal) foi utilizado para explicar a variação futura (6 meses à frente) do IBC-Br (proxy do PIB). O ICF final é a média ponderada desses subíndices, padronizada para ter média zero e variância unitária.

Bibliotecas

Coleta de Dados

1. Juros Brasil

Data NTNB_5Y NTNB_10Y
0 2004-12-01 8.820000 8.840000
1 2005-01-01 8.864286 8.875714
2 2005-02-01 9.094444 8.897778
3 2005-03-01 9.396364 8.962727
4 2005-04-01 9.471500 8.983000
... ... ... ...
249 2025-09-01 7.898182 7.603409
250 2025-10-01 8.078261 7.695435
251 2025-11-01 7.881579 7.477895
252 2025-12-01 7.862000 7.417250
253 2026-01-01 7.918421 7.648684

254 rows × 3 columns

2. Juros Exterior

Data Treasury_3M Treasury_2Y Treasury_5Y Treasury_10Y Alemanha_3M Alemanha_10Y ReinoUnido_3M ReinoUnido_10Y Japao_3M Japao_10Y
308 2025-09-01 4.065714 3.568571 3.662381 4.120476 2.027273 2.693182 3.97 4.6885 0.81818 1.645
309 2025-10-01 3.977727 3.521364 3.648636 4.061818 2.034435 2.617826 3.93 4.5721 0.80909 1.655
310 2025-11-01 3.937222 3.550000 3.673333 4.093889 2.041650 2.657500 3.84 4.4985 0.80636 1.805
311 2025-12-01 3.679545 3.500909 3.701818 4.143182 2.045783 2.814211 3.75 4.4826 NaN 2.060
312 2026-01-01 3.664118 3.537059 3.776471 4.206471 NaN NaN NaN NaN NaN NaN

3. Risco e 4. Moedas

Data VIX DXY BRL_USD DXY_Emergentes
308 2025-09-01 15.773333 97.685715 5.370752 131.861262
309 2025-10-01 18.086522 98.765218 5.385140 132.077923
310 2025-11-01 19.904211 99.747369 5.338730 132.245783
311 2025-12-01 15.548182 98.542727 5.451923 131.289323
312 2026-01-01 15.922222 98.383888 5.359616 130.136273

5. Petróleo

Data WTI Brent
301 2025-09-01 63.533809 67.548571
302 2025-10-01 60.069565 63.953913
303 2025-11-01 59.479474 63.679474
304 2025-12-01 57.866364 61.628636
305 2026-01-01 59.697778 64.106110

6. Commodities

Data WTI Brent Metal Agropecuaria
308 2025-09-01 63.533809 67.548571 235.67 200.46
309 2025-10-01 60.069565 63.953913 251.64 195.40
310 2025-11-01 59.479474 63.679474 257.04 186.36
311 2025-12-01 57.866364 61.628636 282.12 188.81
312 2026-01-01 59.697778 64.106110 NaN NaN

7. Mercado de capitais

Data Ibovespa MSCI_World MSCI_EM
308 2025-09-01 143730.000000 179.071427 52.151904
309 2025-10-01 144415.000000 182.974347 54.396522
310 2025-11-01 155693.052632 182.791053 54.510000
311 2025-12-01 159718.700000 186.016364 54.262273
312 2026-01-01 168300.736842 188.842777 58.000000

Análise Gráfica

A análise dos resultados confirma a aderência do modelo replicado à dinâmica histórica das condições financeiras no Brasil.

Comparação: ICF Calculado vs. ICF Oficial (BCB):

O gráfico comparativo revela uma correlação visual extremamente alta entre o índice replicado (linha azul) e o índice oficial divulgado pelo Banco Central (linha vermelha).

Valores positivos do ICF indicam condições financeiras restritivas (aperto), enquanto valores negativos sinalizam condições estimulativas (afrouxamento).

Gráfico de linha comparativo entre o Índice de Condições Financeiras calculado via Python (linha azul) e o ICF oficial do Banco Central do Brasil (linha vermelha) no período de 2012 a 2026. As duas linhas apresentam uma correlação visual extremamente alta, movendo-se juntas nos picos de estresse (como recessão de 2016 e pandemia de 2020) e nos vales de afrouxamento financeiro.

Dinâmica Recente:

Observa-se que, no período mais recente (2021-2024), o ICF transitou para o terreno positivo, refletindo o ciclo global e doméstico de alta de juros e a aversão ao risco, atuando como um freio na atividade econômica para combater a inflação. A estabilização recente sugere uma acomodação das condições financeiras em patamar ainda restritivo.

Gráfico de linha azul sobre fundo branco exibindo a evolução histórica do Índice de Condições Financeiras (ICF) no Brasil de 2012 a 2026. O eixo vertical representa o índice padronizado (z-score) e o eixo horizontal o tempo. A curva oscila em torno da linha zero, indicando ciclos de condições financeiras restritivas (valores positivos) e estimulativas (valores negativos) ao longo das últimas duas décadas.

Referências

BANCO CENTRAL DO BRASIL. Boxe 5: Índice de Condições Financeiras. In: Relatório de Inflação: dezembro 2022. Brasília: BCB, 2022. Disponível em: https://www.bcb.gov.br/content/ri/relatorioinflacao/202212/ri202212b5p.pdf.

BANCO CENTRAL DO BRASIL. Indicador de Condições Financeiras. Estudo Especial nº 76. Brasília: BCB, [s.d.]. Disponível em: https://www.bcb.gov.br/conteudo/relatorioinflacao/EstudosEspeciais/EE076_Indicador_de_condicoes_financeiras.pdf.

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