O post de hoje é simples. O objetivo é aproximar o resultado apresentado pelo BC no box Proxy da taxa de juros estrutural implícita nas expectativas da pesquisa Focus (RTI de 2019).
Abaixo os pacotes utilizados:
# required packages
# install.packages(devtools)
# devtools::install_github('wilsonfreitas/rbcb')
library(rbcb)
library(tidyverse)
Como o
rbcb
não está no CRAN você deve usar o pacotedevtools
realizar o download diretamente do github.
Começamos coletando as expectativas para o IPCA 12 meses à frente e também a SELIC projetada pelos players TOP5 do relatório Focus:
inflation <- rbcb::get_annual_market_expectations(indic = "IPCA")
selic <- rbcb::get_top5s_annual_market_expectations(indic = "Selic")
Ambas as séries contêm o mesmo período de referência. Com isso, é possível extraír a previsão (3 anos à frente) dos participantes de mercado para cada variável:
inflation_filtered <- inflation |>
mutate(reference_date = as.numeric(reference_date),
n_ahead = reference_date - lubridate::year(date)) |>
filter(n_ahead == 3) |>
select(date, ipca_median = median)
selic_filtered <- selic |>
mutate(reference_date = as.numeric(reference_date),
n_ahead = reference_date - lubridate::year(date)) |>
filter(n_ahead == 3) |>
select(date, selic_median = median)
Em seguida, junta-se ambas pela data e consolida-se a mediana das expectativas para taxa de juros real em cada ponto do tempo:
real_rate_expectations <- left_join(selic_filtered, inflation_filtered, by = "date") |>
mutate(real_rate_median = selic_median - ipca_median) |>
group_by(date) |>
summarise(median = median(real_rate_median)) |>
ungroup()
real_rate_expectations
## # A tibble: 5,032 x 2
## date median
## <date> <dbl>
## 1 2001-11-06 NA
## 2 2001-11-07 NA
## 3 2001-11-08 NA
## 4 2001-11-09 7.5
## 5 2001-11-12 7.5
## 6 2001-11-13 7.5
## 7 2001-11-14 7.5
## 8 2001-11-16 7.5
## 9 2001-11-19 7.5
## 10 2001-11-20 7.5
## # ... with 5,022 more rows
Agora é só correr para o abraço com o ggplot2
:
real_rate_expectations |>
ggplot(aes(x = date, y = median)) +
geom_line() +
labs(title = "Taxa de Juros (Real) Estrutural",
subtitle = "Informações Implícitas no Relatório Focus",
x = NULL,
y = NULL) +
scale_y_continuous(labels = scales::percent_format(scale = 1, accuracy = 1)) +
theme(panel.background = element_rect(fill = "#efe4ce"),
plot.background = element_rect(fill = "#efe4ce"))
As últimas informações disponíveis apontam para uma taxa de juros real de médio-prazo em torno de \(3.50\%\)
. Adicionando-se a inflação esperada para 2022 (atualmente em volta de \(5\%\)
) chega-se a uma SELIC neutra de \(8.50\%\)
.
Eu disse que era simples!