A Curva IS é a equação que diz quanto de atividade econômica custa um aperto de juros, e em quantos trimestres esse custo aparece. Neste tutorial estimamos uma Curva IS no Python para o Brasil, na formulação do modelo de pequeno porte do Banco Central, usando apenas dados públicos: o hiato do produto do próprio BCB, as expectativas do boletim Focus e o resultado primário do setor público.
O resultado se resume em três números. O hiato do produto carrega 89% do seu valor de um trimestre para o outro; um hiato de juros de 1 ponto percentual acima do neutro reduz o hiato do produto em 0,20 ponto por trimestre, com defasagem de dois a três trimestres; e a meia-vida de um choque é de seis trimestres. O caminho até esses números passa por uma armadilha que merece atenção: a estimativa do juro neutro, que muda mais o resultado do que qualquer refinamento econométrico.

Quer reproduzir esta decomposição?
O notebook completo em Python (coleta do hiato e do Focus, construção do juro neutro ancorado, estimação por variáveis instrumentais e os gráficos) vai para os assinantes do Boletim AM. Assine, é gratuito, e receba o código pronto para rodar no Colab.
O que a Curva IS explica
A Curva IS nasce com Keynes e ganha forma com Hicks, em 1937, como o equilíbrio do mercado de bens: o investimento, que cai quando o juro sobe, iguala a poupança, que cresce com a renda. Nos livros de graduação ela aparece como uma reta descendente no plano juro–produto. A versão que os bancos centrais usam hoje é outra. Depois da crítica de Lucas e da incorporação de expectativas, a curva passou a descrever o hiato do produto, a distância entre o PIB efetivo e o potencial, como função da sua própria inércia, da distância entre o juro real e o juro neutro, e de variáveis fiscais e externas.
No Brasil, essa é a segunda equação do Modelo Semiestrutural de Pequeno Porte do Banco Central, ao lado da Curva de Phillips, da equação do prêmio do swap e da regra de Taylor. O BCB estima as quatro em conjunto. Aqui estimamos só a Curva IS, isoladamente, para mostrar como ela funciona por dentro. Duas restrições da especificação oficial guiam o exercício: o juro nunca entra contemporaneamente, porque a política monetária não age no mesmo trimestre, e a variável de juros é o hiato de juros, o juro real ex-ante menos o neutro, e não o nível da taxa.
Como a curva foi estimada
O trabalho tem cinco etapas, e a mais delicada não é a regressão.
A coleta do Focus tem três detalhes que derrubam o código sem mensagem de erro: o endpoint trimestral não tem Selic, filtros encadeados devolvem vazio e a coluna de ano de referência vem como texto. O Focus também publica expectativas por ano-calendário, e a curva precisa de um horizonte fixo de 12 meses. A solução é interpolar a expectativa do ano corrente com a do ano seguinte, com peso dado pela fração do ano já decorrida. A série resultante tem média de 6,06% ao ano desde 2000, praticamente igual à média do swap pré-DI de 360 dias que o BCB usava em 2017 e que o IPEADATA deixou de publicar.
O problema da ponta da amostra
O juro neutro não é observável, e a forma mais direta de estimá-lo é extrair a tendência do juro real com o filtro Hodrick-Prescott. O filtro tem um defeito conhecido: no meio da amostra ele olha para trás e para a frente, mas no último trimestre não existe "frente", e a tendência passa a perseguir os dados recentes. Aplicado sem cuidado, o HP colocava o neutro brasileiro em 8,64% ao ano no terceiro trimestre de 2026.
A saída que o Banco Central e o FMI usam é estender a série com uma projeção antes de filtrar. Neste exercício a projeção vem de graça: o juro real já é construído a partir do Focus, e o mesmo boletim informa a Selic e o IPCA esperados para um e dois anos à frente. Convertemos essas expectativas em juro real, encaixamos oito trimestres na frente da série, filtramos o conjunto e descartamos a parte projetada. A projeção ancora a tendência na ponta, mas não vira dado. Com isso, o neutro do último trimestre cai para 7,47%.

O gráfico guarda uma lição extra. O filtro unilateral, recalculado a cada trimestre só com o passado, termina exatamente nos mesmos 8,64% do bilateral puro, porque no último ponto os dois são o mesmo cálculo. Ele serve para outra coisa: mostrar o tamanho das revisões, já que a ponta continua igual. Em 2021 o analista em tempo real teria visto um neutro próximo de zero, que o filtro completo depois revisou para 2,9%. Mesmo ancorado, o neutro de 7,5% segue distante dos 5% que o Copom adota como hipótese de trabalho, e o boxe do BCB de junho de 2024 sobre o tema reúne mais de vinte metodologias com resultados entre 3,5% e 5,7% para o mesmo trimestre. A tendência de uma única série entrega uma medida de ociosidade monetária coerente com os dados do exercício, suficiente para estimar a curva, mas não compete com isso.

Por que variáveis instrumentais
O juro não é exógeno ao ciclo. O Banco Central sobe a Selic justamente quando a economia aquece, seguindo algo próximo a uma regra de Taylor, e a relação vira uma via de mão dupla: o juro afeta o hiato e o hiato afeta o juro. Há um segundo motivo, específico deste exercício: o hiato de juros é uma variável construída a partir de uma tendência estimada, e carrega erro de medida. Nos dois casos, mínimos quadrados produzem coeficientes viesados. A solução é instrumentar o hiato de juros com defasagens mais distantes, correlacionadas com a variável de interesse mas predeterminadas em relação ao choque do trimestre. O juro entra como média das defasagens 2 e 3, a janela em que a literatura brasileira localiza a transmissão de 6 a 9 meses; testando de uma a quatro defasagens, o coeficiente cresce com o prazo e estabiliza a partir daí.
Os resultados
| Componente | Coeficiente | Erro padrão | p-valor |
|---|---|---|---|
| Constante | 0,056 | 0,077 | 0,466 |
| Hiato defasado (persistência) | 0,890 | 0,034 | < 0,001 |
| Hiato de juros (média das defasagens 2 e 3) | −0,199 | 0,042 | < 0,001 |
| Variação do resultado primário | 0,222 | 0,137 | 0,105 |
| Dummy crise de 2008 | −1,589 | 0,118 | < 0,001 |
| Dummy pandemia | −1,636 | 0,763 | 0,032 |
Curva IS estimada por IV-2SLS com matriz HAC. N = 87 trimestres (2004T4–2026T2), R² = 0,90, F do primeiro estágio = 1.859. Fontes: BCB e Focus.
A persistência de 0,89 diz que a economia sai devagar de onde está, e fica próxima do 0,85 que o próprio Banco Central reporta no boxe de junho de 2024 sobre o modelo em vigor. O coeficiente do juro de −0,20 responde à pergunta do título: um hiato de juros de 1 ponto percentual reduz o hiato do produto em 0,20 ponto por trimestre, dois a três trimestres depois. Acumulando o efeito pela persistência, o multiplicador de longo prazo é de −1,81, ou seja, um aperto permanente de 1 ponto custa cerca de 1,8 ponto de hiato. A meia-vida de um choque é de seis trimestres.
O coeficiente do BCB para o juro é maior, 0,44, e a diferença tem explicação. O Banco Central trata o juro neutro como variável não observável, estimada dentro do modelo por métodos bayesianos, enquanto aqui ele vem de uma tendência calculada fora da regressão. Uma medida ruidosa de hiato de juros atenua o coeficiente, mesmo com o instrumento. A variável fiscal não alcança significância e aparece com sinal positivo, retrato de uma substituição forçada: a planilha do resultado primário estrutural da Secretaria de Política Econômica saiu do ar, e o resultado efetivo que a substitui melhora sozinho quando a economia aquece, o que a regressão lê como efeito do fiscal sobre a atividade.

A decomposição que abriu o post fecha a leitura. A inércia domina em qualquer trimestre, que é a tradução visual da persistência de 0,89. A contribuição do juro aparece negativa e persistente no aperto de 2015 e 2016, vira positiva quando a Selic cai a 2% em 2020 e 2021, e volta a pesar contra a atividade no ciclo de alta a partir de 2023. Os resíduos acusam autocorrelação e caudas pesadas concentradas em 2020, e é por isso que a matriz de covariância robusta não é opcional: sem ela os erros padrão sairiam subestimados e a significância, inflada.
As ferramentas por trás

python-bcb para o SGS e o Focus, linearmodels para as variáveis instrumentais, statsmodels para o filtro HP e os testes de resíduos, e plotnine para os gráficos.
O que o exercício revela
- A política monetária age com defasagem e por muito tempo. O efeito de um aperto aparece dois a três trimestres depois e leva um ano e meio para se dissipar pela metade. É o que explica por que o hiato fechou em 2021 e 2022 enquanto a Selic subia onze pontos: a alta ainda não tinha chegado à atividade.
- O juro neutro decide o resultado. Trocar a forma de tratar a ponta do filtro moveu o neutro em mais de um ponto percentual; a leitura em tempo real pode diferir da final em dois pontos. Quem estima uma Curva IS passa mais tempo com o neutro do que com a regressão.
- A variável fiscal pede o conceito certo. Sem o resultado estrutural, a regressão confunde arrecadação que sobe com a economia com decisão de política fiscal, e o coeficiente sai com o sinal trocado.
Considerações finais
Estimar a Curva IS que o Banco Central usa, com os mesmos dados públicos que ele publica, cabe em um notebook. O que antes exigia acesso a sistemas proprietários e a uma equipe de modelagem hoje se resolve com uma API de expectativas, uma planilha do Relatório de Política Monetária e duas bibliotecas de Python. O que continua exigindo critério é a economia por trás de cada escolha: qual juro entra, com que defasagem, como tratar uma variável não observável e quando desconfiar de um coeficiente.
O Python é a ferramenta certa para esse trabalho porque reúne, no mesmo ambiente, a coleta direto das fontes oficiais, a construção das variáveis, a estimação com instrumentos e o gráfico que explica o resultado. O mesmo caminho se repete em quase todo problema de macroeconomia aplicada. O que muda é a pergunta:
- Economista de banco ou gestora: projeta o hiato do produto sob cenários de Selic e traduz a decisão do Copom em atividade, com defasagens estimadas em vez de supostas.
- Analista de política econômica: mede a potência da política monetária e discute o juro neutro com números próprios, em vez de repetir a hipótese de trabalho do Copom.
- Pesquisador e estudante de pós-graduação: replica e estende a equação do MPP, adicionando o bloco externo ou estimando o sistema completo.
- Analista de mercado e estrategista: lê o ciclo pela decomposição, separando o que é inércia, o que é juro e o que é choque, e antecipa a reação da atividade ao ciclo de cortes.
Aprender a linguagem é o que abre a porta para todas essas frentes.
Você viu como a Curva IS funciona; aprenda a construir o modelo inteiro
Na Formação em Análise Macroeconômica você aprende a coletar, tratar e modelar os dados da economia brasileira em Python, do hiato do produto à regra de Taylor, com o mesmo método deste exercício. Quem quer acesso a todas as formações tem o AM Black, a assinatura anual.
Leia também: