Tag

consumo de energia Archives - Análise Macro

Flertando com a estagflação

By | Comentário de Conjuntura

Amanhã, o IBGE divulga o resultado do IPCA de maio. O consenso formado pela média suavizada do Focus indica uma variação de 0,7%, a mesma que indica o nosso modelo de previsão, conforme mostramos ontem no Relatório AM. Se for confirmado, a inflação acumulada em 12 meses romperá a casa dos 7% a.a. A despeito da boa notícia do PIB do 1º trimestre, o hiato do produto ainda encontra-se em terreno negativo, o que indica que estamos basicamente flertando com o que os economistas chamam de estagflaçãoaquele momento do ciclo onde temos inflação alta (ou em elevação, para ser mais claro) e estagnação econômica. Nesse Comentário de Conjuntura, vamos falar um pouco sobre o conceito.

(*) Aprenda a fazer esse tipo de análise através dos nossos Cursos Aplicados de R.

O comentário de conjuntura 22 começa carregando os seguintes pacotes:


library(tidyverse)
library(readxl)
library(rbcb)
library(forecast)
library(vars)
library(tstools)
library(latex2exp)
library(sidrar)
library(lubridate)
library(scales)
library(RcppRoll)
library(ggrepel)
library(seasonal)
library(zoo)

A seguir, pegamos os dados da inflação medida pelo IPCA, assim como os núcleos de inflação desenvolvidos e acompanhados pelo Banco Central.


## Criar Inflação mensal e acumulada em 12 meses
ipca_indice =
'/t/1737/n1/all/v/2266/p/all/d/v2266%2013' %>%
get_sidra(api=.) %>%
mutate(date = ymd(paste0(`Mês (Código)`, '01'))) %>%
dplyr::select(date, Valor) %>%
mutate(mensal = round((Valor/lag(Valor, 1)-1)*100, 2),
anual = round((Valor/lag(Valor, 12)-1)*100, 2))

## Criar amostra
ipca_subamostra = ipca_indice %>%
filter(date >= as.Date('2007-06-01'))

## Pegar núcleos
series = c(ipca_ex2 = 27838,
ipca_ex3 = 27839,
ipca_ms = 4466,
ipca_ma = 11426,
ipca_ex0 = 11427,
ipca_ex1 = 16121,
ipca_dp = 16122)

nucleos = get_series(series, start_date = '2006-07-01') %>%
purrr::reduce(inner_join)

nucleos_12m <- nucleos %>%
mutate(across(!date, (function(x) 1+x/100))) %>%
mutate(across(!date, (function(x) (roll_prod(x, n=12, align='right',
fill = NA)-1)*100 )))

data_nucleos_12 = nucleos_12m %>%
filter(date >= as.Date('2007-06-01'))

&nbsp;

## Inflação vs. Núcleos

meta = c(rep(4.5, 139), rep(4.25, 12),
rep(4, 12), rep(3.75, 12), rep(3.5, 12), rep(3.25, 12))
meta_max = c(rep(4.5+2, 115), meta[-(1:115)]+1.5)
meta_min = c(rep(4.5-2, 115), meta[-(1:115)]-1.5)

metas = tibble(lim_sup=meta_max, meta=meta,
lim_inf=meta_min)

media.nucleos <- rowMeans(dplyr::select(data_nucleos_12, -date))

df = tibble(nucleos = round(media.nucleos, 2),
lim_sup = head(metas$lim_sup, n = nrow(ipca_subamostra)),
meta = head(metas$meta, n = nrow(ipca_subamostra)),
lim_inf = head(metas$lim_inf, n = nrow(ipca_subamostra)),
inflacao = ipca_subamostra$anual,
date = data_nucleos_12$date)

Na sequência, plotamos o primeiro gráfico do comentário.

Como se pode ver, a inflação acumulada em 12 meses está acima do limite superior da meta, resultado de diversos choques que têm ocorrido sobre a economia brasileira desde o ano passado. O aumento de commodities está por trás tanto do aumento de alimentos quanto do aumento dos combustíveis, que afetam diretamente a inflação medida pelo IPCA.


url = 'https://www12.senado.leg.br/ifi/dados/arquivos/estimativas-do-hiato-do-produto-ifi/at_download/file'
download.file(url, destfile='hiato.xlsx', mode='wb')
hiato = read_excel('hiato.xlsx', sheet = 2, skip=1)

Em meio a esses choques, está um hiato do produto em recuperação, como se pode ver pela figura acima, produzida pela IFI. Ainda em terreno negativo (os dados vão até 2021Q4), o hiato respira por aparelhos em meio a uma sucessão de crises que assola a economia brasileira desde meados de 2014.

Inflação em aceleração em meio a um hiato do produto negativo é a definição de estagflação. Por um lado, a inflação aumenta por causa de choques que afetam a economia doméstica. Por outro, o ciclo econômico se mantém em baixa como consequência de alguma crise externa/interna.

É, basicamente, o pior dos mundos para o cenário macroeconômico, porque afeta em última instância a taxa de desemprego, como pode ser visto abaixo.


desemprego = get_sidra(api="/t/6381/n1/all/v/4099/p/all/d/v4099%201") %>%
mutate(date = parse_date(`Trimestre Móvel (Código)`, format='%Y%m')) %>%
dplyr::select(date, Valor) %>%
rename(desemprego = Valor) %>%
mutate(desemprego_sa = final(seas(ts(desemprego, start=c(2012,03),
freq=12)))) %>%
as_tibble()

A taxa de desemprego tem aumentado no Brasil desde 2014, como resultado da crise interna que vivemos à época. Passou por um momento de leve redução nos anos pré-pandemia e reagiu forte ao choque mundial provocado pela Covid-19.

Em outras palavras, o desemprego no Brasil mudou de nível e, dificilmente, voltará aos níveis de 2013/2014 no curto prazo. Isto porque, o desemprego é a última variável a reagir à melhora do ambiente econômico. Há muitos motivos para isso. Um deles é que o desemprego afeta o capital humano das pessoas. Quanto maior o tempo desemprego, maior a parte de capital humano, o que torna difícil para o trabalhador voltar ao mercado.

Dito isso, é bastante preocupante ver o comportamento do desemprego de longo prazo no Brasil, como pode ser visto abaixo.


table = get_sidra(api='/t/1616/n1/all/v/4092/p/all/c1965/all') %>%
mutate(date = as.yearqtr(`Trimestre (Código)`, format='%Y%q')) %>%
dplyr::select(date, `Tempo de procura de trabalho`, Valor) %>%
spread(`Tempo de procura de trabalho`, Valor) %>%
as_tibble()

ratio = table %>%
mutate(across(!date, (function(x) x / Total *100))) %>%
dplyr::select(-Total)

ratio %>%
gather(variavel, valor, -date) %>%
ggplot(aes(x=date, y=valor, colour=variavel))+
geom_area(aes(colour=variavel, fill=variavel))+
theme(legend.title = element_blank(),
legend.position = 'left',
plot.title = element_text(size=8, face='bold'))+
scale_x_yearqtr(breaks= pretty_breaks(n=4), format="%YQ%q")+
labs(x='', y='',
title='Desemprego por tempo de procura por trabalho',
caption='Fonte: analisemacro.com.br com dados do IBGE')

O desemprego de mais de 2 anos tem aumentado de forma consistente nos últimos anos, como mostra a normalização pela PEA vista abaixo.

Os dados são da PNAD Trimestral, com o último dado disponível de 2020Q4.

Quanto maior o tempo da crise, maiores vítimas vão sendo acumuladas dentro do desemprego de longo prazo. A perda de capital humano, por suposto, afeta de forma direta o PIB Potencial da economia, com consequências não desprezíveis sobre o crescimento de longo prazo da economia brasileira.

(*) Aprenda a fazer esse tipo de análise através dos nossos Cursos Aplicados de R.

____________________

(**) Para quem quiser ter acesso a todos os códigos desse e de todos os exercícios que publicamos ao longo da semana, visite o Clube AM.

Consumo de Energia e Nowcasting do PIB

By | Comentário de Conjuntura

No dia 20 de abril, publiquei aqui nesse espaço a edição número 15 do Comentário de Conjuntura fazendo uma análise sobre o Consumo de Energia. Na minha visão, o fato da elasticidade entre a energia e o pib serem muito próximos da unidade significa que o PIB não teria tido um resultado ruim no 1º tri de 2021. Pelo contrário, o resultado deveria vir positivo, já que o Consumo de Energia havia continuado a toada da recuperação. Nesse Comentário de Conjuntura, com os dados divulgados ontem, vamos fazer uma análise detalhada da relação entre o PIB e o Consumo de energia elétrica, bem como apresentamos nosso modelo de nowcasting do PIB.

Os membros do Clube AM têm acesso a todos os códigos dos nossos exercícios!

Para começar, vamos comparar aqui o número índice do PIB dessazonalizado com o consumo de energia, também dessazonalizado.

As séries andam juntas e há, possivelmente, uma relação de cointegração entre elas. Uma vez consideradas as séries em nível, podemos ver a comparação das variações marginal, interanual e anual.

O fit entre as séries é impressionante, não é mesmo?


Esse fit continua também na variação interanual e na variação acumulada em 4 períodos, como pode ser vista abaixo.

A variação acumulada em 4 trimestres mostra uma relação forte entre as séries, com uma volta pronunciada do consumo na margem. Algo que ainda não ocorre com o PIB.

Para além dessa relação entre consumo de energia e movimentos do PIB, também estamos trabalhando aqui na AM em um modelo de nowcasting para o PIB, sob liderança do Vitor Pestana Ostrensky.

O resultado previsto para o 1º tri de 2021 foi de 1,22%, quando o ocorrido ficou em 1,2, na comparação com o trimestre imediatamente anterior.

Os resultados do modelo bem como a sua operacionalização serão divulgados nos próximos dias no Clube AM.

(*) Aprenda a fazer esse tipo de análise através dos nossos Cursos Aplicados de R.

____________________

Como foi o impacto da 2ª onda da pandemia sobre o nível de atividade?

By | Comentário de Conjuntura

No ano passado, de modo a inferir o que poderia ocorrer com o PIB em 2020 por causa da pandemia, fiz um exercício da relação entre o mesmo e o Consumo de Energia. Os resultados encontrados sugeriam que a elasticidade entre uma série e outra era de 1,1, indicando que os estragos no nível de atividade seriam grandes, visto o que estava ocorrendo com o consumo de energia. Nesse Comentário de Conjuntura, nós analisamos novamente a série de consumo de energia, disponível na ONS, de modo a vislumbrar o que ocorrerá com o nível de atividade no primeiro trimestre, dada a 2ª onda da pandemia no país.

Membros do Clube AM, por suposto, têm acesso a todos os códigos desse exercício.

Os dados do Consumo de Energia podem ser obtidos no site da ONS. A seguir, colocamos os dados da carga de energia, em MWmed e a tendência da série, obtida através de uma decomposição STL.

Os dados revelam que, de fato, houve um vale na tendência da série em 2020, seguido de uma recuperação no final do ano, que permaneceu em 2021. O mesmo comportamento pode ser visto nos dados mensalizados, quando colocamos a carga contra a carga com ajuste sazonal.

Os dados na margem do IBC-Br, o índice de nível de atividade do Banco Central, corroboram a ideia de que houve crescimento ao longo dos primeiros dois meses do primeiro tri de 2021. A tabela abaixo ilustra.

Índice de Nível de Atividade do Banco Central
Data IBC-Br IBC_sa Margem Interanual Trimestral Anual
2020-09-01 137.06 135.40 1.68 -0.89 8.20 -3.56
2020-10-01 139.45 136.94 1.14 -2.31 6.57 -3.94
2020-11-01 138.01 138.03 0.80 -0.60 4.65 -4.06
2020-12-01 139.69 139.11 0.78 1.56 3.63 -4.00
2021-01-01 132.90 140.85 1.25 -0.53 3.08 -4.05
2021-02-01 135.96 143.24 1.70 0.98 3.13 -4.02

A incógnita fica, evidentemente, sobre o mês de março, quando houve uma série de restrições nos Estados, por conta do avanço da 2ª onda da pandemia no país. Dando um zoom sobre os últimos dados do consumo de energia, observamos um comportamento de normalidade na série, considerando o ajuste sazonal.


A verificar o que, de fato, ocorreu com o PIB no primeiro tri de 2021, mas tudo indica que o buraco vai ser bem menor do que o de 2020. Tudo isso, claro, considerando que o organismo econômico aprendeu a conviver com a pandemia, principalmente pela adesão em massa da economia ao e-commerce. O impacto sobre o nível de atividade, se houve, fica restrito aos meses de março e abril, mas nada comparável ao que houve no ano passado.

____________________________

(*) O exercício entre consumo de energia e PIB pode ser visto aqui.

Coletando dados financeiros com o R

By | Comentário de Conjuntura

Os efeitos da pandemia do coronavírus não param de nos surpreender. Ontem, o preço do contrato futuro de petróleo com vencimento em maio fechou no terreno negativo! Ou seja, as pessoas pagaram para quem comprou o papel. Para ilustrar, podemos pegar os dados do Yahoo Finance através do pacote quantmod, como iremos ensinar no nosso novo Curso da área de finanças Mercado Financeiro e Gestão de Portfólios. Carregamos o quantmod e outros pacotes abaixo para fazer o tratamento e visualização dos dados.


library(tidyverse)
library(tidyquant)
library(timetk)
library(scales)
library(quantmod)

Uma vez carregados os pacotes, nós podemos pegar o contrato de petróleo com vencimento em maio de 2020 com o código abaixo.


getSymbols('CLK20.NYM', warning=FALSE)

Com a função tk_tbl do pacote timetk nós transformamos nossos dados de xts para tibble.


df = `CLK20.NYM` %>%
tk_tbl(preserve_index = TRUE,
rename_index = 'date') %>%
drop_na()

E a seguir, podemos visualizá-los com o pacote ggplot2.


ggplot(df, aes(x=date, y=`CLK20.NYM.Low`))+
geom_line()+
geom_hline(yintercept=0, colour='red', linetype='dashed')+
scale_x_date(breaks = date_breaks("3 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=10, face='bold'))+
labs(x='', y='',
title='Preço mínimo do Contrato Futuro de Petróleo WTI com vencimento em maio de 2020',
caption='Fonte: analisemacro.com.br com dados do Yahoo Finance')

Observe que o preço rompeu a barreira do zero ontem, 20 de abril. Um marco dos tempos sombrios que estamos vivendo...

_____________________

(*) Isso e muito mais você irá aprender no nosso Novo Curso Mercado Financeiro e Gestão de Portfólios.


Investigando cointegração entre consumo de energia e crescimento do PIB

By | Comentário de Conjuntura

Como tenho comentado nas últimas semanas, estamos tendo acesso aos primeiros dados de março que trazem os efeitos da pandemia do coronavírus sobre a economia brasileira. Um dos indicadores que tenho acompanhado mais de perto é o consumo diário de energia elétrica. Como comentei também por aqui, publicamos na semana passada a Edição 73 do Clube do Código, que traz uma intensa investigação da relação dessa série com o PIB, tanto em nível quanto em termos de taxa de crescimento.

Nesse Comentário de Conjuntura trago mais alguns detalhes do exercício. O mesmo está disponível no repositório privado do Clube no github, acessível para alunos do plano premium dos nossos Cursos Aplicados de R e para os assinantes do Clube. Para assinar, clique aqui. A seguir, carregamos os pacotes utilizados na investigação.


library(tidyverse)
library(scales)
library(readxl)
library(xts)
library(forecast)
library(sidrar)
library(lubridate)
library(zoo)
library(gridExtra)
library(tstools)
library(vars)
library(aod)
library(dynlm)
library(stargazer)
### Pacote Seasonal
library(seasonal)
Sys.setenv(X13_PATH = "C:/Séries Temporais/R/Pacotes/seas/x13ashtml")

A seguir, nós importamos as séries de energia e do PIB.


## Coleta de dados de energia
energia = read_csv2('energia.csv',
col_types = list(col_date(format='%d/%m/%Y'),
col_double()))

## Coletar dados do PIB
# PIB com ajuste sazonal
pib_sa = get_sidra(api='/t/1621/n1/all/v/all/p/all/c11255/90707/d/v584%202') %>%
mutate(date = as.yearqtr(`Trimestre (Código)`, format='%Y%q')) %>%
dplyr::select(date, Valor) %>%
as_tibble()
# PIB sem ajuste
names = c('date', 'pib_sa', 'pib', 'anual_pib')
pib = get_sidra(api='/t/1620/n1/all/v/all/p/all/c11255/90707/d/v583%202') %>%
mutate(date = as.yearqtr(`Trimestre (Código)`, format='%Y%q')) %>%
mutate(pib_sa = pib_sa$Valor) %>%
mutate(anual_pib = acum_i(Valor, 4)) %>%
dplyr::select(date, pib_sa, Valor, anual_pib) %>%
as_tibble() %>%
`colnames<-`(names)

Os dados de energia e do PIB estão com frequências diferentes, de modo que é preciso torná-las comparáveis. O código a seguir trata disso.


## Trimestralizar dados de Energia
consumo_energia = xts(energia$carga, order.by = energia$date)
consumo_energia_trimestral = apply.quarterly(consumo_energia, FUN=mean)
consumo_energia_trimestral_ts = ts(consumo_energia_trimestral,
start=c(2000,01), freq=4)
consumo_energia_trimestral_sa = final(seas(consumo_energia_trimestral_ts))
energia_trimestral = tibble(date = as.yearqtr(index(consumo_energia_trimestral_sa), format='%Y%q'),
carga=consumo_energia_trimestral_sa) %>%
mutate(anual_carga = acum_i(carga,4))

## Reunir dados
data = inner_join(pib, energia_trimestral, by='date') %>%
dplyr::select(date, pib_sa, carga, anual_pib, anual_carga) %>%
drop_na()

Com os dados comparáveis, nós plotamos o gráfico abaixo.

Uma das várias coisas que fazemos na Edição 73 do Clube do Código é estimar um modelo de correção de erros (ECM) entre as séries, uma vez que as mesmas guardam uma relação de longo prazo entre si. O modelo estimado é o seguinte:

(1)   \begin{align*} \Delta Carga_t = \gamma_0 + \gamma_1 \hat{u_{t-1}} + \gamma_2 \Delta PIB_t + \varepsilon_t \end{align*}

A tabela a seguir resume o modelo estimado.

Dependent variable:
d(anual_carga)
stats::lag(resid, -1) -0.189***
(0.055)
d(anual_pib) 1.032***
(0.183)
Constant 0.147
(0.184)
Observations 72
R2 0.403
Adjusted R2 0.386
Residual Std. Error 1.558 (df = 69)
F Statistic 23.273*** (df = 2; 69)
Note: *p<0.1; **p<0.05; ***p<0.01

 

(*) Aprenda a produzir exercícios como esse em nossos Cursos Aplicados de R.

(**) Os códigos estão disponíveis no Clube do Código.


Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente