O Modelo Oculto de Markov (Hidden Markov Model, ou HMM) permite identificar em que fase a inflação está a partir da própria série de preços. Neste exercício, aplicamos o modelo ao IPCA mensal desde 2010, no Python, para separar os meses em regimes de inflação baixa, moderada e alta.
A inflação é um fenômeno dinâmico, que transita entre diferentes regimes ao longo do tempo. Com o HMM, conseguimos dizer em que regime ela esteve em cada mês, quanto tempo cada regime costuma durar e qual a probabilidade de cada um nos próximos 12 meses.

Na figura acima, os meses de mesma cor aparecem em blocos. O regime de inflação alta cobre 2015 e o começo de 2016 e, depois, o período de meados de 2020 a meados de 2022. Entre 2016 e 2020 a inflação ficou no regime baixo, e desde o fim de 2022 ela está no moderado.
📩 Boletim AM
Receba análises e conteúdos sobre modelos estatísticos clássicos, econometria feita com hipóteses sérias e LLMs acessados em ambientes de trabalho reais, tudo aplicado à economia, ao mercado financeiro e à análise de dados.
O que é um regime inflacionário
Um regime inflacionário é uma fase em que a inflação mensal oscila em torno de um mesmo nível por vários meses seguidos. O IPCA pode passar um ano subindo cerca de 0,2% ao mês e, depois, entrar num período em que roda perto de 0,8% ao mês.
O regime não é observado diretamente. O que observamos é a variação mensal do IPCA, e o regime precisa ser inferido a partir dela. Um mês de 0,6% pode ser um mês comum num regime alto ou um choque isolado num regime moderado.
Por que isso interessa? Porque a resposta muda a leitura da conjuntura. Se a inflação entrou num regime alto, a tendência é que continue alta por meses, e o Banco Central precisa reagir. Se foi um choque isolado, ela tende a voltar ao nível anterior.
O Modelo Oculto de Markov
O Modelo Oculto de Markov é um modelo probabilístico para sistemas em que os estados reais não são observados diretamente, mas podem ser inferidos a partir de uma série de observações. No nosso caso, os regimes da inflação são os estados ocultos, e os valores mensais do IPCA são as observações que usamos para estimá-los.
O modelo tem quatro componentes:
A cadeia de Markov dos regimes
Os regimes mudam segundo uma cadeia de Markov: a probabilidade de estar num regime neste mês depende só do regime do mês anterior. A probabilidade de passagem de um regime para outro é a probabilidade de transição:
Aqui St é o regime no mês t, i é o regime de origem e j o de destino. As probabilidades formam a matriz de transição, em que cada linha soma 1.
A diagonal da matriz, pii, guarda a chance de continuar no mesmo regime. Quanto mais perto de 1, mais persistente é o regime, e é assim que o modelo representa a inércia da inflação brasileira.
Da diagonal sai a duração esperada de cada regime, em meses:
Um regime com permanência de 0,9 dura em média 10 meses. Com permanência de 0,5, dura 2 meses.
A distribuição de emissão
Cada regime gera a inflação do mês com uma distribuição própria. No HMM gaussiano, ela é uma normal:
Aqui xt é a variação do IPCA no mês, μj é o nível em torno do qual ela oscila no regime j e σj mede o tamanho dessa oscilação.
Ou seja, cada regime tem seu nível e sua volatilidade. O histograma da série inteira vira uma mistura de normais, o que explica as caudas longas que a inflação mensal costuma ter.
Os parâmetros são estimados por máxima verossimilhança com o algoritmo de Baum-Welch, uma versão do algoritmo EM para o HMM. A mesma ideia de regimes aparece no modelo Markov switching, que aplicamos em Regimes de Política Monetária no Brasil: Evidências de Markov Switching usando Python.
Como o exercício foi feito
O exercício segue cinco etapas, todas no Python.
A coleta. O IPCA mede a variação dos preços de uma cesta de consumo das famílias e é o índice da meta de inflação. Usamos a variação mensal, que o Banco Central republica no SGS, o Sistema Gerenciador de Séries Temporais, com a biblioteca python-bcb.
O ajuste sazonal. A inflação tem um padrão que se repete com o calendário: mensalidades escolares reajustadas no começo do ano, alimentos que seguem as safras. Sem retirar esse padrão, o modelo poderia confundir um mês sazonalmente alto com a entrada num regime de inflação alta. Os efeitos de calendário do IPCA são o tema de Como analisar a Sazonalidade do IPCA no Python?.
Usamos a decomposição STL, que separa a série em tendência, sazonalidade e resíduo com regressões locais. Na versão robusta, os meses extremos pesam menos na estimação do padrão sazonal, o que ajuda numa série com choques fortes como o IPCA.
Quantos regimes? O BIC decide
O número de regimes precisa ser escolhido antes da estimação. Um modelo com mais regimes sempre se ajusta melhor aos dados, porque tem mais parâmetros livres. A pergunta é se a melhora compensa a complexidade.
Os critérios de informação respondem somando o desajuste a uma penalidade pelo número de parâmetros:
Aqui ln L é a log-verossimilhança, m é o número de parâmetros e T o número de meses. Escolhemos o modelo de menor critério. Como ln T passa de 2 com mais de sete observações, o BIC penaliza mais cada parâmetro e tende a escolher modelos menores.

No nosso exemplo, o BIC é mínimo com três regimes, em 69,5, contra 71,7 com dois e 85,5 com quatro. O AIC, que penaliza menos, apontaria quatro. Ficamos com o BIC, porque com cerca de 200 meses passar de três para quatro regimes acrescenta nove parâmetros.
Várias inicializações e rótulos estáveis
O algoritmo EM parte de valores sorteados e melhora a verossimilhança até parar. Dependendo do ponto de partida, ele pode parar num ótimo local, um ponto melhor que a vizinhança e pior que outro distante. Por isso estimamos cada modelo a partir de 30 sementes fixas e ficamos com o de maior verossimilhança. O resultado se repete a cada execução.
O HMM também numera os regimes em ordem arbitrária: o regime "0" pode ser o de inflação alta numa estimação e o de inflação baixa na seguinte. Para evitar essa troca de rótulos, ordenamos os regimes pela média estimada, da menor para a maior. Assim, "Alta" significa sempre o regime de maior média.
O que os regimes mostram sobre a inflação brasileira
A tabela resume os três regimes estimados com o IPCA de jan/2010 a set/2026.
| Regime | Média mensal | Média anualizada | Desvio-padrão | Permanência | Duração esperada |
|---|---|---|---|---|---|
| Baixa | 0,19% | 2,2% | 0,27 p.p. | 0,915 | 11,8 meses |
| Moderada | 0,45% | 5,5% | 0,16 p.p. | 0,989 | 89,3 meses |
| Alta | 0,81% | 10,2% | 0,30 p.p. | 0,909 | 11,0 meses |
Parâmetros do HMM gaussiano com três regimes, IPCA dessazonalizado. Fonte: IBGE, via SGS/BCB.
O regime moderado, com média de 0,45% ao mês, equivale a cerca de 5,5% ao ano. Ele é o mais estável dos três: oscila menos em torno da média e tem a maior permanência.
Os regimes extremos são mais voláteis e duram cerca de um ano em média. No nosso exemplo, o regime alto tem média de 0,81% ao mês, ou 10,2% ao ano, e duração esperada de 11 meses.
A matriz de transição

A diagonal concentra quase toda a probabilidade: entre 0,91 e 0,99. Devido à persistência inflacionária, a chance de continuar no mesmo regime é alta, e a de mudar é pequena. Isso reflete a inércia da inflação, em que períodos de aceleração ou desaceleração tendem a se prolongar antes de qualquer mudança.
Fora da diagonal, a matriz mostra por onde a inflação sai de cada regime. Do regime alto, a saída mais provável é para o baixo, com 0,09, o que descreve a desinflação rápida depois de 2016 e de 2022. A inércia da inflação no Brasil também é estimada por outros caminhos, como em Estimando a Inércia Inflacionária usando o Python.
Probabilidades suavizadas e filtradas
O modelo não diz com certeza em que regime a inflação estava num mês. Ele atribui uma probabilidade a cada regime, e há duas formas de calculá-la.
A probabilidade suavizada usa a amostra inteira, inclusive os meses posteriores, e por isso é a melhor leitura do passado. A probabilidade filtrada usa só os dados disponíveis até cada mês, e é o que um analista consegue dizer em tempo real.

Na figura acima, as faixas largas de uma só cor são meses em que o modelo tem segurança sobre o regime. As faixas divididas, como em 2018 e no fim de 2019, são meses de transição ou choques pontuais.
A filtrada é calculada pelo filtro de Hamilton, uma recursão em dois passos. A matriz de transição projeta a probabilidade do mês anterior para o mês atual, e o dado do mês atualiza essa previsão pela densidade da normal de cada regime:
Aqui ξt|t(j) é a probabilidade filtrada do regime j, f é a densidade da normal do regime e o somatório é a chance de chegar a j vinda de qualquer regime no mês anterior. O sinal ∝ indica que o resultado é normalizado para somar 1.

A linha filtrada oscila mais, porque reage a cada dado sem saber o que vem depois. Em 2014 e no começo de 2025, por exemplo, ela passou de 0,3 no regime alto, e a suavizada, que já conhece os meses seguintes, manteve esses meses no regime anterior.
Ou seja, a filtrada é o sinal disponível para quem acompanha a conjuntura, e a suavizada é a melhor classificação do passado.
Projeção para os próximos 12 meses
A matriz de transição também projeta o futuro. Partimos da probabilidade filtrada do último mês e aplicamos a matriz h vezes:
Com h crescendo, a projeção converge para a distribuição estacionária da cadeia, a proporção do tempo que a inflação passa em cada regime no longo prazo.

No nosso exemplo, a inflação de set/2026 está no regime moderado com probabilidade de 0,99. Doze meses à frente, essa probabilidade cai para 0,87, e a do regime alto sobe para 0,09.
A projeção perde força devagar porque o regime moderado é muito persistente. No longo prazo, a distribuição estacionária põe cerca de 53% do tempo no regime moderado, 24% no baixo e 23% no alto.
Limitações do modelo
O HMM se baseia apenas na trajetória passada do IPCA. Ele não incorpora fatores exógenos, como mudanças na política monetária e fiscal, choques de oferta ou o câmbio. A projeção diz o que a persistência histórica sugere, sem a informação econômica do momento.
Intervenções pontuais distorcem temporariamente a dinâmica capturada pelo modelo. A redução de impostos sobre combustíveis e energia em 2022 e o bônus de Itaipu na conta de luz derrubam a inflação de um mês sem mudar o regime de preços. Por isso, a leitura do regime pede o acompanhamento dos grupos do IPCA, como em Analisando os grupos do IPCA com o Python.
O modelo também supõe que a matriz de transição é a mesma em toda a amostra. Em economias emergentes, sujeitas a maior volatilidade, a meta, a credibilidade do Banco Central e o grau de indexação mudam com o tempo, e as probabilidades de transição podem mudar junto.
Aplicações no dia a dia
A classificação em regimes é usada em várias frentes de quem trabalha com inflação e com mercado.
- Leitura de conjuntura: a probabilidade filtrada diz, a cada IPCA divulgado, se o dado é compatível com o regime atual ou se aponta para uma mudança.
- Previsão de inflação: modelos condicionados ao regime permitem que a dinâmica dos preços seja diferente em cada fase, em vez de uma única equação para toda a amostra. Os modelos estruturais do Banco Central seguem outro caminho, descrito em Modelo de pequeno porte do BCB: como o Banco Central projeta a inflação.
- Política monetária: a duração esperada de um regime alto ajuda a dimensionar por quanto tempo a pressão inflacionária tende a durar.
- Alocação de carteira: ativos atrelados à inflação, juros prefixados e ações respondem de forma diferente em cada regime, e a mesma técnica serve para retornos de ativos, como em Aplicação de Hidden Markov Models para Finanças usando Python.
Considerações finais
O Modelo Oculto de Markov identifica que a inflação brasileira alterna entre regimes de inflação baixa, moderada e alta, com alta persistência em cada um. Quando a inflação entra num regime, ela tende a permanecer nele por um período antes de transitar para outro.
Três escolhas tornam a estimação confiável: o BIC define o número de regimes, as várias inicializações reduzem o risco de ótimo local e a ordenação pela média mantém o significado dos rótulos a cada execução.
O Python reúne todas as etapas num mesmo fluxo: coleta no SGS, ajuste sazonal, estimação e gráficos. Quando sai um novo IPCA, basta rodar de novo para atualizar os regimes e a projeção. O mesmo caminho serve a várias profissões:
- Economistas de bancos e consultorias: acompanhar a fase da inflação a cada divulgação e calibrar cenários.
- Analistas de renda fixa: ligar a probabilidade de cada regime às apostas em juros reais e nominais.
- Gestores de risco: condicionar cenários de estresse ao regime de inflação.
- Pesquisadores e estudantes: estimar modelos de mudança de regime com dados públicos e código reprodutível.
Aprenda a analisar a inflação e a política monetária no Python
Na Formação em Análise Macroeconômica, você aprende a coletar, tratar e modelar os dados de inflação, atividade, juros e câmbio com Python, do jeito que fizemos neste exercício. Quem quer acesso a todas as formações tem o AM Black, a assinatura anual.
Leia também:
📩 Análise de dados aplicada, todo dia
Este exercício é um recorte. No Boletim AM eu mostro o trabalho com dado do jeito que ele acontece — coletar, limpar, rodar o modelo e ler o resultado, em R, Python e agora com IA no meio do caminho.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.