Ontem, comentei aqui nesse espaço sobre o cenário benigno para a inflação e como isso estava garantindo uma taxa básica de juros abaixo de 5% no final do ano. Hoje, vou detalhar um pouco melhor esse ponto a partir dos núcleos de inflação. A ideia de um núcleo é capturar a tendência da inflação ao longo do tempo, retirando assim variações idiossincráticas. Em outros palavras, busca capturar a persistência do aumento de preços ao longo do tempo. De modo a ilustrar, considere, por exemplo, que o preço de um bem/serviço varie de acordo com a equação
, onde
representa uma tendência e
uma idiossincracia. Desse modo, para
bens/serviços, o núcleo será dado por:
(1)
Em outras palavras, o objetivo do núcleo é reconhecer e retirar a parte idissiocrática, , concentrando-se na verdadeira tendência da variação dos preços ao longo do tempo. Não à toa, Bancos Centrais de todo o mundo procuram construir e acompanhar medidas de núcleo de inflação. No Brasil, em particular, temos atualmente sete medidas de núcleo. Para uma explicação completa sobre os núcleos de inflação construídos pelo BCB, ver o Estudo Especial 17/2018 Novas Medidas de Núcleos de Inflação.
De modo a ilustrar o comportamento da média desses núcleos ao longo do tempo, bem como comparar com a inflação cheia, vamos criar um gráfico com o comportamento de ambas as séries. Para isso, precisaremos primeiro carregar alguns pacotes, como abaixo.
1 2 3 4 5 6 7 8 9 10 | ## Carregar pacotes library (tidyverse) library (readxl) library (sidrar) library (ggplot2) library (forecast) library (tstools) library (scales) library (png) library (grid) |
Vamos baixar o número-índice do IPCA a partir do pacote sidrar e posteriormente podemos criar a inflação mensal e a acumulada em 12 meses. O código abaixo implementa.
1 2 3 4 5 | ## Criar Inflação mensal e acumulada em 12 meses ipca_indice = get_sidra (api= '/t/1737/n1/all/v/2266/p/all/d/v2266%2013' ) ipca_indice = ts (ipca_indice$Valor, start= c (1979,12), freq=12) ipca_mensal = round ((ipca_indice/stats:: lag (ipca_indice,-1)-1)*100,2) ipca_anual = round ((ipca_indice/stats:: lag (ipca_indice,-12)-1)*100,2) |
O número-índice do IPCA tem início em dezembro de 1979, pegando assim toda a hiperinflação da década de 80. Não queremos isso, então pegamos apenas uma amostra dos dados, começando em junho de 2007, quando os choques provenientes da eleição do ex-presidente Lula já haviam se dissipado.
1 2 3 4 | ## Criar amostras ipca_indice_subamostra = window (ipca_indice, start= c (2007,06)) ipca_mensal_subamostra = window (ipca_mensal, start= c (2007,06)) ipca_anual_subamostra = window (ipca_anual, start= c (2007,06)) |
Uma vez que tenhamos a inflação acumulada em 12 meses, vamos agora pegar os núcleos de inflação. Você pode baixar os dados no Sistema de Séries Temporais do Banco Central e depois importar para o R como abaixo. Observe que o código utiliza pipes, de modo já a acumular os dados em 12 meses e se concentrar na amostra que queremos.
1 2 3 4 5 6 | ## Núcleos nucleos_12m = read_excel ( 'nucleos.xlsx' )[,-1] %>% ts (start= c (1999,06), freq=12) %>% acum_p (12) %>% ts (start= c (1999,06), freq=12) %>% window (start= c (2007,06)) |
De posse de todos os dados, podemos agora construir o nosso gráfico com o pacote ggplot2, como no código a seguir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | ## Gráfico media.nucleos = rowMeans (nucleos_12m) meta = c ( rep (4.5, length (media.nucleos)-8), rep (4.25, 8)) time = seq ( as.Date ( '2007-06-01' ), as.Date ( '2019-08-01' ), by= '1 month' ) df = data.frame (time=time, meta=meta, nucleos= round (media.nucleos,2), inflacao=ipca_anual_subamostra) img <- readPNG ( 'logo.png' ) g <- rasterGrob (img, interpolate= TRUE ) ggplot (df, aes (x=time))+ annotate ( "rect" , fill = "gray" , alpha = 0.6, xmin = as.Date ( '2016-01-01' ), xmax = as.Date ( '2019-08-01' ), ymin = - Inf , ymax = Inf )+ geom_line ( aes (y=inflacao, colour= 'Inflação 12 meses' ), size=.8)+ geom_line ( aes (y=meta, colour= 'Meta de Inflação' ), size=.8)+ geom_line ( aes (y=nucleos, colour= 'Média dos 7 Núcleos' ), size=.8)+ scale_colour_manual ( '' , values= c ( 'Inflação 12 meses' = 'darkblue' , 'Meta de Inflação' = 'red' , 'Média dos 7 Núcleos' = '#56B4E9' ))+ theme (legend.position = 'top' )+ scale_x_date (breaks = date_breaks ( "1 years" ), labels = date_format ( "%Y" ))+ xlab ( '' )+ ylab ( '% a.a.' )+ labs (title= 'Inflação vs. Núcleos de Inflação' , caption= 'Fonte: analisemacro.com.br com dados do BCB.' )+ theme (panel.background = element_rect (fill= '#acc8d4' , colour= '#acc8d4' ), plot.background = element_rect (fill= '#8abbd0' ), axis.line = element_line (colour= 'black' , linetype = 'dashed' ), axis.line.x.bottom = element_line (colour= 'black' ), panel.grid.major = element_blank (), panel.grid.minor = element_blank (), legend.position = c (.2,.8), legend.background = element_rect ((fill= '#acc8d4' )), legend.key = element_rect (fill= '#acc8d4' , colour= '#acc8d4' ), plot.margin= margin (5,5,15,5))+ annotation_custom (g, xmin= as.Date ( '2016-06-01' ), xmax= as.Date ( '2019-06-01' ), ymin=8.5, ymax=11) |
E assim temos um gráfico com o comportamento da inflação cheia e a média dos 7 núcleos construídos e divulgados pelo Banco Central.
Como é possível observar no gráfico acima, a média dos 7 núcleos segue bem comportada na margem - 3,17% no acumulado até agosto -, bem abaixo da meta de inflação para esse ano, que é de 4,25%. Mesmo a inflação cheia também está abaixo da meta e a expectativa, como notei ontem, é que feche próximo a 3,42% no final de 2019. Se os núcleos de inflação forem bons preditores para a inflação no curto prazo - ver, por exemplo, Forecasting inflation in Latin America with core measures, publicado no International Journal of Forecasting - podemos considerar que na ausência de choques relevantes - principalmente, em relação ao câmbio - a inflação tanto esse quanto no próximo ano dá sinais de ficar mesmo abaixo da meta, abrindo caminho para mais cortes na taxa básica de juros nas próximas reuniões do COPOM.
___________________
(*) O script completo do exercício estará disponível logo mais no Clube do Código.
(**) No nosso Curso de Análise de Conjuntura usando o R, nós destrinchamos o IPCA na parte de inflação.