Tag

pib Archives - Página 2 de 14 - Análise Macro

Relatório AM #39 - Análise de Dados de Economia Internacional no R

By | Indicadores

Ao realizar análises de conjuntura econômica, devemos ter em mente diversos indicadores em diferentes áreas, e o cenário externo deve ter um espaço especial nessas análises. O foco é acompanhar indicadores econômicos das principais economias internacionais, de forma a tirar conclusões sobre os seus efeitos sobre o Brasil e na economia mundial. No Relatório AM de hoje iremos mostrar como é possível acompanhar esses indicadores no R. Você também pode aprender a como realizar uma análise completa através do nosso Curso de Análise de Conjuntura com o R.

Pacotes

Para coletar, tratar e visualizar os dados, devemos utilizar alguns pacotes importantes. Utilizaremos o pacote {OECD} para retirar os dados de Economias Internacionais através da base de dados do site de OECD.  Para tratamento, usaremos a família de pacotes do tidyverse.


library(tidyverse)
library(OECD)
library(lubridate)

Parâmetros da OECD

Retiramos os parâmetros dos dados através do site da OECD. Como exemplo, iremos utilizar dois indicadores, o PIB pela ótica da despesa e a Inflação de diversos países.


## Parâmetros e códigos para coleta de dados
parametros <- list(
# Contas Nacionais Trimestrais (código do dataset na OECD)
dataset_qna = "QNA",

# Main Economic Indicators - dataset com principais indicadores (código do dataset na OECD)
dataset_mei = "MEI",
# PIB - Ótica da despesa (lista de países e variáveis para filtro no dataset QNA)
filter_gdp = "AUS+CHL+JPN+MEX+USA+EA19+CHN+IND+RUS+SAU.B1_GE.GYSA+GPSA.Q",
# Taxa de Inflação (lista de países e variáveis para filtro no dataset MEI)
filter_inflation = "AUS+CHL+JPN+MEX+USA+EA19+CHN+IND+RUS+SAU.CPALTT01.GPSA+GY.M"
)

Coleta dos dados

Coletamos os indicadores através do pacote {OECD}.


# Coleta dos dados

# PIB - Ótima da despesa
str_gdp <- OECD::get_data_structure(parametros$dataset_qna)
raw_gdp_oecd <- OECD::get_dataset(
dataset = parametros$dataset_qna,
filter = list(parametros$filter_gdp),
pre_formatted = TRUE
)

# Taxa de Inflação
str_inflation <- OECD::get_data_structure(parametros$dataset_mei)
raw_inflation_oecd <- OECD::get_dataset(
dataset = parametros$dataset_mei,
filter = list(parametros$filter_inflation),
pre_formatted = TRUE
)

Tratamento

Realizamos os tratamentos utilizando o universo do tidyverse para visualizarmos os dois indicadores.


## Tratamento dos dados

# PIB - Ótica da despesa
gdp_oecd <- raw_gdp_oecd %>%
dplyr::filter(FREQUENCY == "Q") %>%
dplyr::select(
date = obsTime,
location = LOCATION,
measure = MEASURE,
value = obsValue,
status = dplyr::contains("OBS_STATUS")
) %>%
dplyr::left_join(
str_gdp$LOCATION,
by = c("location" = "id")
) %>%
dplyr::mutate(
dplyr::across(
dplyr::any_of("status"),
~dplyr::recode(
status,
"E" = "Estimated value",
"P" = "Provisional value"
)
),
value = as.numeric(value),
measure = dplyr::recode(
measure,
"GPSA" = "% change from same quarter of previous year",
"GYSA" = "% change from previous quarter"
),
label = stringr::str_remove_all(label, " \| \"),
date = lubridate::yq(date)
)



# Taxa de Inflação
inflation_oecd <- raw_inflation_oecd %>%
dplyr::select(
date = obsTime,
location = LOCATION,
measure = MEASURE,
value = obsValue,
status = dplyr::contains("OBS_STATUS")
) %>%
dplyr::left_join(
str_inflation$LOCATION,
by = c("location" = "id")
) %>%
dplyr::mutate(
date = paste0(date, "-01") %>% lubridate::as_date(format = "%Y-%m-%d"),
dplyr::across(
dplyr::any_of("status"),
~dplyr::recode(
status,
"E" = "Estimated value",
"P" = "Provisional value"
)
),
value = as.numeric(value),
measure = dplyr::recode(
measure,
"GY" = "Growth rate same period previous year"
),
label = stringr::str_remove_all(label, " \| \")
)

Visualização

Visualizamos os gráficos através do ggplot2


# Cores dos gráficos

colors <- c(
blue = "#282f6b",
red = "#b22200",
yellow = "#eace3f",
green = "#224f20",
purple = "#5f487c",
orange = "#b35c1e",
turquoise = "#419391",
green_two = "#839c56",
light_blue = "#3b89bc",
gray = "#666666"
)

# Gerar gráfico
gdp_oecd %>%
dplyr::filter(
date >= max(date) %m-% lubridate::years(2),
measure == "% change from previous quarter",
!location %in% c("CHL", "RUS", "SAU", "AUS")
) %>%
ggplot(aes(x = date, y = value, colour = label))+
geom_line(size = .8)+
geom_hline(yintercept = 0, linetype = "dashed")+
ggplot2::scale_colour_manual(NULL, values = unname(colors))+
labs(x = "",
y = "%",
title = "PIB - Crescimento trimestral (TsT)",
subtitle = "Países selecionados, ótica da despesa",
caption = "Fonte: analisemacro.com.br com dados da OECD.")+
theme(
plot.title = ggplot2::element_text(size = 14, face = "bold", hjust = 0, vjust = 2),
plot.subtitle = ggplot2::element_text(size = 12, face = "italic", hjust = 0),
plot.caption = ggplot2::element_text(size = 10, hjust = 1),
panel.background = ggplot2::element_rect(fill = "white", colour = "white"),
axis.line.x.bottom = ggplot2::element_line(colour = "black"),
axis.line.y.left = ggplot2::element_line(colour = "black"),
legend.position = "top",
legend.direction = "horizontal",
strip.background = ggplot2::element_rect(fill = "transparent", colour = NA),
strip.text = ggplot2::element_text(face = "bold")
)+
facet_wrap(~label, scales = "free_y") +
ggplot2::theme(legend.position = "none")


# Gerar gráfico
inflation_oecd %>%
dplyr::filter(
date >= max(date) %m-% lubridate::years(2),
!location %in% c("CHL", "RUS", "SAU", "AUS")
) %>%
ggplot(aes(x = date, y = value, colour = label))+
geom_line(size = .8)+
geom_hline(yintercept = 0, linetype = "dashed")+
ggplot2::scale_colour_manual(NULL, values = unname(colors))+
labs(x = "",
y = "%",
title = "Inflação - Variação interanual (AsA)",
subtitle = "Países selecionados",
caption = "Fonte: analisemacro.com.br com dados da OECD.")+
theme(
plot.title = ggplot2::element_text(size = 14, face = "bold", hjust = 0, vjust = 2),
plot.subtitle = ggplot2::element_text(size = 12, face = "italic", hjust = 0),
plot.caption = ggplot2::element_text(size = 10, hjust = 1),
panel.background = ggplot2::element_rect(fill = "white", colour = "white"),
axis.line.x.bottom = ggplot2::element_line(colour = "black"),
axis.line.y.left = ggplot2::element_line(colour = "black"),
legend.position = "none",
legend.direction = "horizontal",
strip.background = ggplot2::element_rect(fill = "transparent", colour = NA),
strip.text = ggplot2::element_text(face = "bold")
)+
facet_wrap(~label, scales = "free_y")

Quer saber mais?

Veja nosso Curso de R para Economistas, e nosso Curso de Análise de Conjuntura com o R. A partir do conhecimento obtido com os cursos, você pode realizar análises completas sobre a economia nacional e internacional.

{tidyverts}: séries temporais no R

By | Data Science

{tidyverts} é uma família de pacotes de R criada para ser a próxima geração de ferramentas para modelagem e previsão de séries temporais, substituindo o famoso pacote {forecast}.

Utilizando uma interface simples e integrada com os pacotes do tidyverse, é possível construir uma ampla gama de modelos de previsão univariados e multivariados: ARIMA, VAR, suavização exponencial via espaço de estado (ETS), modelo linear (TSLM), autorregressivo (AR), passeio aleatório (RW), autoregressão de rede neural (NNETAR), Prophet, etc.

Neste exercício, daremos uma breve introdução aplicada a modelagem e previsão de séries temporais usando os pacotes do {tidyverts}.

Conhecendo os pacotes

Um breve resumo do que a família de pacotes do {tidyverts} tem a oferecer:

fable

  • Coleção de modelos univariados e multivariados de previsão
  • Modelagem de séries temporais em formato "tidy"
  • Especificação de modelos utiliza terminologia de fórmula (y ~ x)

fabletools

  • Extensões e ferramentas para construção de modelos
  • Combinação de modelos, previsão hierárquica e extração de resultados
  • Obtenção de medidas de acurácia e visualização de dados

feasts

  • Decomposição de séries temporais
  • Extração e visualização de componentes de séries temporais
  • Análise de autocorrelação, testes de raiz unitária, etc.

tsibble

  • Estrutura de dados tidy para séries temporais no R
  • Funções para tratamento de dados
  • Objeto orientado aos dados e a modelos, integrado ao tidyverse

Fluxo de trabalho para previsão

Com o tidyverts o processo de construir um modelo de previsão pode ser dividido em poucos passos:

Com esse esquema em mente, vamos ilustrar esse processo com um exercício prático e didático: construir um modelo de previsão para a taxa de crescimento do PIB brasileiro.

Pacotes

Para reproduzir o exercício a seguir você precisará dos seguintes pacotes:

library(fable) # CRAN v0.3.1
library(fabletools) # CRAN v0.3.2
library(tsibble) # CRAN v1.1.1
library(tsibbledata) # CRAN v0.4.0
library(feasts) # CRAN v0.2.2
library(dplyr) # CRAN v1.0.7
library(tidyr) # CRAN v1.2.0
library(ggplot2) # CRAN v3.3.5

 

Dados tidy

Utilizaremos o dataset global_economy armazenado como um objeto tsibble, trazendo variáveis econômicas em frequência anual para diversos países. Nosso interesse é a série da taxa de crescimento do PIB brasileiro:

pib_br <- tsibbledata::global_economy %>% 
dplyr::filter(Country == "Brazil") %>% 
dplyr::select(Year, Growth) %>% 
tidyr::drop_na()
pib_br

# # A tsibble: 57 x 2 [1Y]
# Year Growth
# <dbl> <dbl>
# 1 1961 10.3 
# 2 1962 5.22 
# 3 1963 0.875
# 4 1964 3.49 
# 5 1965 3.05 
# 6 1966 4.15 
# 7 1967 4.92 
# 8 1968 11.4 
# 9 1969 9.74 
# 10 1970 8.77 
# # ... with 47 more rows

Visualização de dados

Visualização é uma etapa essencial para entender os dados, o que permite identificar padrões e modelos apropriados. No nosso exemplo, criamos um gráfico de linha para plotar a série do PIB brasileiro usando a função autoplot():

pib_br %>% 
fabletools::autoplot(Growth) +
ggplot2::labs(title = "Crescimento anual do PIB do Brasil", y = "%")

Podemos também plotar os correlogramas ACF e PACF para identificar o processo estocástico da série, obtendo alguns modelos candidatos:

pib_br %>% 
feasts::gg_tsdisplay(Growth, plot_type = "partial")

Especificação do modelo

Existem muitos modelos de séries temporais diferentes que podem ser usados para previsão, e especificar um modelo apropriado para os dados é essencial para produzir previsões.

Os modelos no framework do fable são especificados usando funções com nomenclatura abreviada do nome do modelo (por exemplo, ARIMA(), AR(), VAR(), etc.), cada uma usando uma interface de fórmula (y ~ x). As variáveis de resposta são especificadas à esquerda da fórmula e a estrutura do modelo é escrita à direita.

Por exemplo, um modelo ARIMA(1,0,2) para a taxa de crescimento do PIB pode ser especificado com: ARIMA(Growth ~ pdq(1, 0, 2)).

Neste caso, a variável resposta é Growth e está sendo modelada usando a estrutura de um modelo ARMA(1, 2) especificada na função especial pdq().

Existem diversas funções especiais para definir a estrutura do modelo e em ambos os lados da fórmula pode ser aplicado transformações. Consulte detalhes da documentação do fable.

Estimar o modelo

Identificado um modelo (ou mais) apropriado, podemos em seguida fazer a estimação usando a função model()1.Neste exemplo, estimaremos os seguintes modelos: ARIMA(1,0,2), ARIMA(1,0,0), ARIMA(0,0,2), o algoritmo de seleção automatizada do auto ARIMA criado pelo prof. Rob Hyndman e um passeio aleatório.


fit <- pib_br %>%
fabletools::model(
arima102 = fable::ARIMA(Growth ~ pdq(1, 0, 2)),
arima100 = fable::ARIMA(Growth ~ pdq(1, 0, 0)),
arima002 = fable::ARIMA(Growth ~ pdq(0, 0, 2)),
auto_arima = fable::ARIMA(Growth),
random_walk = fable::RW(Growth)
)

Diagnóstico do modelo

O objeto resultante é uma "tabela de modelo" ou mable, com a saída de cada modelo em cada coluna:


fit

# # A mable: 1 x 5
# arima102 arima100 arima002
# <model> <model> <model>
# 1 <ARIMA(1,0,2) w/ mean> <ARIMA(1,0,0) w/ mean> <ARIMA(0,0,2) w/ mean>
# # ... with 2 more variables: auto_arima <model>, random_walk <model>

Para obter os critérios de informação use a função glance():


fabletools::glance(fit) %>% dplyr::arrange(AICc)

# # A tibble: 5 x 8
# .model sigma2 log_lik AIC AICc BIC ar_roots ma_roots
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <list> <list>
# 1 auto_arima 12.8 -150. 307. 307. 313. <cpl [1]> <cpl [1]>
# 2 arima100 12.6 -152. 311. 311. 317. <cpl [1]> <cpl [0]>
# 3 arima102 12.8 -152. 313. 314. 323. <cpl [1]> <cpl [2]>
# 4 arima002 13.1 -153. 314. 315. 322. <cpl [0]> <cpl [2]>
# 5 random_walk 16.0 NA NA NA NA <NULL> <NULL>

Os critérios de informação indicam que, dos modelos estimados, o modelo automatizado ARIMA(1,1,1) apresentou o menor valor de AICc - seguido pelos demais identificados pelos correlogramas ACF e PACF. Com a função gg_tsresiduals() podemos verificar o comportamento dos resíduos deste modelo, indicando que os resíduos se comportam como ruído branco:


fit %>%
dplyr::select(auto_arima) %>%
feasts::gg_tsresiduals()

Um teste de autocorrelação (Ljung Box) retorna um p-valor grande, também indicando que os resíduos são ruído branco:


fabletools::augment(fit) %>%
dplyr::filter(.model == "auto_arima") %>%
fabletools::features(.innov, feasts::ljung_box, lag = 10, dof = 3)

# # A tibble: 1 x 3
# .model lb_stat lb_pvalue
# <chr> <dbl> <dbl>
# 1 auto_arima 8.63 0.281

Também pode ser interessante visualizar o ajuste do modelo. Utilize a função augment() para obter os valores estimados:


fit %>%
fabletools::augment() %>%
dplyr::filter(.model == "auto_arima") %>%
ggplot2::ggplot(ggplot2::aes(x = Year)) +
ggplot2::geom_line(ggplot2::aes(y = Growth, colour = "Observado")) +
ggplot2::geom_line(ggplot2::aes(y = .fitted, colour = "Modelo")) +
ggplot2::scale_colour_manual(
values = c(Observado = "#282f6b", Modelo = "#b22200")
) +
ggplot2::labs(title = "Crescimento anual do PIB do Brasil", colour = NULL)

Previsão

Com o modelo escolhido, previsões podem ser geradas com a função forecast() indicando um horizonte de escolha.


fit %>%
dplyr::select(auto_arima, random_walk) %>%
fabletools::forecast(h = 5) %>%
fabletools::autoplot(pib_br) +
ggplot2::facet_wrap(~.model)

Perceba que os pontos de previsão médios gerados são bastante similares a um processo de passeio aleatório (equivalente a um ARIMA(0,1,0)). O trabalho adicional de especificar termos AR e MA trouxe pouca diferença para os pontos de previsão neste exemplo, apesar de ser perceptível que os intervalos de confiança do modelo auto ARIMA são mais estreitos do que de um passeio aleatório.

Além disso, a previsão fora da amostra gerada ficou bastante aquém dos dados reais para a taxa de crescimento do PIB brasileiro observados no horizonte em questão, configurando apenas um exercício didático.

Saiba mais

Estes são apenas alguns dos recursos e ferramentas disponíveis na família de pacotes do tidyverts. Para uma referência aprofundada, confira o livro Forecasting: Principles and Practice, 3rd Edition, de Hyndman e Athanasopoulos (2021).

Confira outros exercícios aplicados com pacotes do tidyverts:


[1] A função suporta estimação dos modelos com computação paralela usando o pacote future, veja detalhes na documentação e este post para saber mais sobre o tema.

 

Relatório AM #36 - PIB

By | Indicadores

O Produto Interno Bruto é o principal indicador para acompanhamento do nível de atividade no Brasil, medindo a soma final de todos os bens e serviços produzidos no país. Os dados do PIB podem ser acessados através do SIDRA, sendo importados facilmente no R através do pacote {sidrar}. No Relatório AM de hoje, trazemos uma parte do código que ensinamos no Curso de Análise de Conjuntura de como automatizar o processo de coleta, tratamento e visualização dos dados do PIB.

library(tidyverse)
library(sidrar)
library(flextable)
## Funções e objetos úteis

# Acumular valores percentuais em 'n' janelas móveis
acum_i <- function(data, n){

data_ma_n <- RcppRoll::roll_meanr(data, n)

data_lag_n <- dplyr::lag(data_ma_n, n)

data_acum_n = (((data_ma_n/data_lag_n)-1)*100)

return(data_acum_n)

}

# Cores para gráficos e tabelas
colors <- c(
blue = "#282f6b",
red = "#b22200",
yellow = "#eace3f",
green = "#224f20",
purple = "#5f487c",
orange = "#b35c1e",
turquoise = "#419391",
green_two = "#839c56",
light_blue = "#3b89bc",
gray = "#666666"
)

# Fonte para gráficos e tabelas
foot_ibge <- "Fonte: analisemacro.com.br com dados do Sidra/IBGE."

# Definir padrão de tabelas
flextable::set_flextable_defaults(
big.mark = " ",
font.size = 10,
theme_fun = theme_vanilla,
padding.bottom = 6,
padding.top = 6,
padding.left = 6,
padding.right = 6,
decimal.mark = ",",
digits = 2L
)

Definimos a chave do API que coletaremos através do {sidrar}.

## Parâmetros e códigos para coleta de dados
parametros <- list(
# PIB com ajuste sazonal
api_pib_sa = "/t/1621/n1/all/v/all/p/all/c11255/90707/d/v584%202",

# PIB sem ajuste
api_pib = "/t/1620/n1/all/v/all/p/all/c11255/90707/d/v583%202"
)

Retiramos os dados com a função get_sidra do pacote {sidrar}.

## Coleta dos dados

# PIB com ajuste sazonal
raw_pib_sa <- sidrar::get_sidra(api = parametros$api_pib_sa)

# PIB sem ajuste
raw_pib <- sidrar::get_sidra(api = parametros$api_pib)

Tratamos os dados, realizando a limpeza e o cálculo das variações do índice do PIB.

## Tratamento dos dados

# PIB com ajuste sazonal
pib_sa <- raw_pib_sa %>%
dplyr::mutate(
date = zoo::as.yearqtr(`Trimestre (Código)`, format = "%Y%q"),
var_marginal = (Valor / dplyr::lag(Valor, 1) - 1) * 100
) %>%
dplyr::select(date, "pib_sa" = Valor, var_marginal) %>%
dplyr::as_tibble()

# PIB sem ajuste
pib <- raw_pib %>%
dplyr::mutate(
date = zoo::as.yearqtr(`Trimestre (Código)`, format = "%Y%q"),
var_interanual = (Valor / dplyr::lag(Valor, 4) - 1) * 100,
var_anual = acum_i(Valor, 4)
) %>%
dplyr::select(date, "pib" = Valor, var_interanual, var_anual) %>%
dplyr::as_tibble()

# Juntar os dados do PIB
df_pib <- dplyr::inner_join(pib_sa, pib, by = "date") %>%
tidyr::drop_na() %>%
dplyr::filter(date >= "2007 Q1")

Índice do PIB

Vemos que é possível visualizar através do pacote ggplo2 o índice do PIB ao longo do tempo, comparando o PIB sem e com ajuste sazonal.

# Gerar gráfico
df_pib %>%
dplyr::filter(date > "2000 Q1") %>%
ggplot2::ggplot(ggplot2::aes(x = date)) +
ggplot2::geom_line(ggplot2::aes(y = pib, color = "PIB"), size = 0.8) +
ggplot2::geom_line(ggplot2::aes(y = pib_sa, color = "PIB s.a."), size = 0.8) +
ggplot2::scale_color_manual(
NULL,
values = c("PIB" = unname(colors[1]), "PIB s.a." = unname(colors[2]))
) +
zoo::scale_x_yearqtr(
breaks = scales::pretty_breaks(n = 8),
format = "%Y T%q"
) +
ggplot2::theme(
plot.title = ggplot2::element_text(size = 12, face = "bold"),
legend.position = "bottom"
) +
ggplot2::labs(
x = NULL,
y = "Número Índice",
title = "Produto Interno Bruto",
caption = foot_ibge
)

Variações do PIB

Realizamos o calculo das variações marginais, interanuais e anuais do PIB, através do índice, dentro do R e podemos visualizar através da construção de um tabela.

# Filtrar últimos 8 trimestres
df_pib_tbl <- df_pib %>%
dplyr::slice_tail(n = 8) %>%
dplyr::select(var_marginal, var_interanual, var_anual)

# Tabela com variações e número índice do PIB
df_pib %>%
dplyr::slice_tail(n = 8) %>%
flextable::flextable() %>%
flextable::set_header_labels(
date = "Trimestre", pib_sa = "PIB s.a.", var_marginal = "Var. Marginal", pib = "PIB",
var_interanual = "Var. Interanual", var_anual = "Var. Anual"
) %>%
flextable::add_header_row(
colwidths = c(3, 3),
values = c("Sazonalmente ajustado", "Sem ajuste sazonal")
) %>%
flextable::colformat_double(j = 2:6, digits = 2) %>%
flextable::align(i = 1, part = "header", align = "center") %>%
flextable::add_footer_lines(foot_ibge) %>%
flextable::color(part = "footer", color = colors["gray"]) %>%
flextable::bg(
j = c("var_marginal", "var_interanual", "var_anual"),
bg = scales::col_numeric(
palette = colorspace::diverge_hcl(n = 20, palette = "Blue-Red 2"),
reverse = TRUE,
domain = c(-max(abs(df_pib_tbl)), max(abs(df_pib_tbl)))
),
part = "body"
) %>%
flextable::theme_vanilla() %>%
flextable::width(width = .95)

____________________

Quer conferir o código completo e aprender a como criar uma análise do PIB utilizando o R? Veja nosso Curso de Análise de Conjuntura.

____________________

 

 

Projeções macroeconômicas para 2022

By | Dados Macroeconômicos, Indicadores

2022 será mais um ano novo com velhos desafios. A combinação de inflação acima da meta, atividade econômica em recessão técnica, alto desemprego e contas públicas deterioradas é ao mesmo tempo passado e futuro da economia brasileira. A perspectiva não é animadora, confira nossos números dos principais indicadores macroeconômicos abaixo.

Com a inflação corrente em patamar elevado e acima da meta, além da surpresa do IPCA em outubro, nossa projeção de inflação para 2021 é de 9,82%, convergindo para dentro do intervalo da meta somente após o segundo semestre de 2022 e encerrando em 3,74%.

O custo de trazer a inflação para meta será enorme e o Banco Central deve continuar fazendo sucessivos aumentos da taxa de juros durante o primeiro semestre de 2022, com SELIC terminal projetada em 10,75% a.a. e risco de alta.

O impacto da contração monetária será significativo, mas ainda assim o PIB deve apresentar - com otimismo - crescimento de 1,83% em 2022. O valor é abaixo da média histórica (2,20%) da série, mensurada a partir de 2000. Na variação marginal, a economia deve sair do terreno negativo somente a partir do segundo trimestre de próximo ano.

Por fim, a moeda brasileira deve seguir se desvalorizando significativamente, encerrando o ano de 2022 com a taxa de câmbio nominal cotada acima dos (R$/US$) 7,00.

_________________

Saiba mais sobre modelos de previsão nos cursos de Macroeconomia Aplicada utilizando o R da Análise Macro.

O Brasil não decepciona

By | Comentário de Conjuntura

Ontem, eu parei para escrever o comentário de conjuntura dessa semana e a minha ideia inicial era falar sobre a taxa de câmbio, sobre o índice bovespa e também sobre o risco país. Variáveis que sofrem bastante em momentos de turbulência política como agora. O tema da moda, no mundinho dos economistas, é o "furo" do teto, com a ideia fixa do governo de aprovar um auxílio provisório que tem claros objetivos eleitorais.

Mas eu acabei recuando e fechando o RStudio. Resolvi dar uma caminhada na praia, mesmo com o frio que anda fazendo no Rio de Janeiro. Às vezes, é importante dar um passo para trás, de forma a compreender o contexto a que estamos submetidos.

E qual é esse contexto, leitor, em termos de Brasil?

Hoje pela manhã, reabri o RStudio e rodei um script de R que baixa os números índices do PIB brasileiro diretamente do site do SIDRA/IBGE.

Com esses números índices, eu criei algumas métricas de crescimento. O gráfico acima, por suposto, expõe o crescimento acumulado do PIB brasileiro em quatro trimestres. Ele dá uma ideia geral de como andou a economia brasileira desde o final de 1997 até o dias atuais.

Foi uma aventura e tanto.

O período inicial do gráfico é marcado pelo tripé macroeconômico, composto por superávits primários recorrentes, meta de inflação e câmbio flutuante.

Nesse período de convergência macroeconômica, o Brasil acabou aproveitando um ambiente externo bastante favorável, com juros baixos e boom de commodities. Foi uma Belle Époque, que possibilitou uma expansão forte do PIB, início da redução da taxa de desemprego e pesados investimentos na agenda social, com, por exemplo, a criação do Bolsa Família.

Estava tudo muito bem até o estouro da crise do subprime no mercado norte-americano.

A crise de 2008 pegou em cheio a ideia de convergência entre responsabilidade fiscal e agenda social.

O Brasil colocou um terno muito caro e poucas vezes utilizado chamado política econômica anti-cíclica. 

Houve uma implementação forte de políticas fiscais, monetárias e parafiscais que tinham como objetivo conter o pior da crise de 2008.

O uso desse arsenal foi feito em um ambiente onde havia espaço fiscal, graças aos consistentes superávits primários do governo central, da redução da dívida líquida e ainda da melhor composição do endividamento público.

O pós-crise, contudo, mostrou as limitações dessa reação.

O tripé macroeconômico foi abandonado em 2011 e sobre surgiria a nova matriz econômica (NME), uma ideia heterodoxa de que é possível controlar preços, entre eles juros e câmbio.

Além da direção macro, houve diversas ações no campo microeconômico, principalmente através do BNDES, principal braço de execução da política industrial pensada pelo governo da época.

A NME geraria a contabilidade criativa nas contas públicas, o uso de manobras fiscais de modo a dar conta do esforço de tentar reativar a economia.

Como mostra o gráfico acima, isso não deu certo. O crescimento do PIB foi ladeira abaixo até o início de 2016, influenciado pelo ambiente político conturbado e, também, pelas lambanças feitas no campo macro e microeconômico.

O interregno Temer, por suposto, iniciou um novo ciclo reformista, que animou o mercado e culminaria no hoje tão falado Teto de Gastos

Os efeitos do Teto de Gastos são claros para a redução da taxa de juros e mesmo para a desinflação que ocorreria na sequência.

Além disso, o interregno Temer proporcionou uma retomada da economia, como, novamente, pode ser visto no gráfico.

Essa retomada da economia brasileira, contudo, teve um teto. O Brasil chegou a um crescimento acumulado em quatro trimestres de 2% em 2018Q3. Depois disso, foi só ladeira abaixo.

A pandemia, por seu turno, piorou o que já estava ruim, escancarando as restrições de oferta da economia e abrindo a caixa de Pandora em termos fiscais.

Essa semana, por suposto, estamos vivenciando o fim do Teto de Gastos, que foi, em si, a cereja no bolo do interregno Temer, um período que pode ser interpretado como uma tentativa da sociedade brasileira em voltar àquela convergência macroeconômica do início do gráfico.

O que vem por aí?

A criatividade brasileira em termos econômicos e políticos é tanta que não há autor que consiga prever.

Vamos acompanhar, leitor!

_____________________________

(*) Os scripts do Comentário de Conjuntura estão disponíveis no Clube AM.

________________________
(*) Para entender mais sobre política fiscal e monetária, confira nossos Cursos de Macroeconomia Aplicada.

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

Assinar Gratuitamente