Tag

conjuntura no r Archives - Análise Macro

Relatório #38 - Análise de dados de Crédito no R

By | Indicadores

Mercado de crédito

O Mercado de crédito compreende-se como um sistema no qual ocorrem trocas financeiras, visando repassar o dinheiro dos poupadores para os tomadores. Esse mercado tem uma importância significativa nos países, principalmente no Brasil, de forma que empresas e pessoas consigam financiamento e empréstimos , estimulando novas formas de negócio e promovendo a dinâmica da economia. Para a análise do Mercado de Crédito, podemos acompanhar as concessões totais de créditos por tomadores, bem como a taxa média de juros dessas operações para que possamos compreender o momento macroeconômico do país. No post de hoje, iremos ensinar a como coletar esses indicadores e também a dessazonalizar e deflacionar as concessões de crédito. Esse exercício faz parte do nosso Curso de Análise de Conjuntura com o R, onde ensinamos a coletar, tratar e visualizar os dados do Mercado de Crédito.

Pacotes

# Carregar pacotes
library(GetBCBData)
library(magrittr)
library(dplyr)
library(ggplot2)
library(scales)
library(tidyr)
library(deflateBR)
library(lubridate)
library(ggseas)
library(stringr)
library(zoo)

</pre>
## Funções e objetos úteis

# Cores para gráficos e tabelas
colors <- c(
blue = "#282f6b",
red = "#b22200"
)

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

# Definir padrão de gráficos
ggplot2::theme_set(
theme(
plot.title = ggplot2::element_text(size = 15, hjust = 0, vjust = 2)
)
)

Código das séries

Para a coleta dos dados, devemos ter em mãos as séries disponibilizadas pelo Sistema Gerenciados de Séries Temporais do Banco Central. Através delas, coletamos os dados com o pacote {GetBCBData}.

</pre>
## Parâmetros e códigos para coleta de dados
parametros <- c(
# Concessões de crédito - Total - R$ (milhões)
"Concessões de crédito - Total" = 20631,

# Concessões de crédito - Pessoas jurídicas - Total - R$ (milhões)
"Concessões de crédito - PJ" = 20632,

# Concessões de crédito - Pessoas físicas - Total - R$ (milhões)
"Concessões de crédito - PF" = 20633,

# Taxa média de juros das operações de crédito - Total - % a.a.
"Taxa média de juros das operações de crédito" = 20714
)
<pre>
</pre>
## Coleta dos dados

# Dados do BCB (tidy)
raw_dados <- GetBCBData::gbcbd_get_series(
id = parametros,
first.date = "2000-01-01",
use.memoise = FALSE
)
<pre>

Tratamento

Realizamos o tratamento de forma que possamos deflacionar as séries e visualizá-las.

</pre>
## Tratamento dos dados

# Dados tratados em formato long
dados <- raw_dados %>%
dplyr::select(
"date" = ref.date,
"variable" = series.name,
value
)

# Deflacionar variáveis selecionadas (concessões)
concessoes <- dados %>%
dplyr::filter(
variable %in% c(
"Concessões de crédito - Total",
"Concessões de crédito - PJ",
"Concessões de crédito - PF"
)
) %>%
tidyr::pivot_wider(
id_cols = date,
names_from = variable,
values_from = value
) %>%
dplyr::mutate(
dplyr::across(
-date,
~deflateBR::deflate( # deflacionar séries com o IPCA
nominal_values = .,
nominal_dates = date %m+% months(1),
real_date = format(tail(date, 1), "%m/%Y"),
index = "ipca"
)
)
) %>%
tidyr::pivot_longer(
cols = -date,
names_to = "variable",
values_to = "value"
)
<pre>

Concessões mensais de crédito

concessoes %>% 
dplyr::filter(variable == "Concessões de crédito - Total") %>% 
ggplot2::ggplot(ggplot2::aes(x = date, y = value/1000)) +
ggseas::stat_seas( # dessazonalizar série com X13
start = c(2011, 03), 
frequency = 12,
colour = unname(colors["blue"])
) +
ggplot2::labs(
x = "", 
y = "R$ Bilhões", 
title = "Concessões mensais de crédito",
subtitle = paste0(
"Valores dessazonalizados e deflacionados pelo IPCA - preços de ", 
format(tail(concessoes$date, 1), "%b/%Y")
),
caption = foot_ibge) +
ggplot2::scale_x_date(
breaks = scales::date_breaks("1 year"),
labels = scales::date_format("%Y")
)

Concessões de Crédito: PJ x PF

concessoes %>% 
dplyr::filter(variable %in% c("Concessões de crédito - PJ", "Concessões de crédito - PF")) %>% 
ggplot2::ggplot(ggplot2::aes(x = date, y = value/1000, colour = variable)) +
ggseas::stat_seas( # dessazonalizar série com X13
start = c(2011, 03), 
frequency = 12
) +
ggplot2::labs(
x = "", 
y = "R$ Bilhões", 
title = "Concessões mensais de crédito: PF vs. PJ",
subtitle = paste0(
"Valores dessazonalizados e deflacionados pelo IPCA - preços de ", 
format(tail(concessoes$date, 1), "%b/%Y")
),
caption = foot_ibge) +
ggplot2::scale_x_date(
breaks = scales::date_breaks("1 year"),
labels = scales::date_format("%Y")
) +
ggplot2::scale_color_manual(NULL, values = unname(colors[1:2])) +
ggplot2::theme(legend.position = "bottom")

Taxa média de Juros

dados %>% 
dplyr::filter(variable == "Taxa média de juros das operações de crédito") %>% 
ggplot2::ggplot(ggplot2::aes(x = date, y = value)) +
ggplot2::geom_line(size = 1, colour = unname(colors[1])) +
ggplot2::labs(
x = "", 
y = "% a.a.", 
title = "Taxa média de juros das operações de crédito - Total",
caption = foot_ibge) +
ggplot2::scale_x_date(
breaks = scales::date_breaks("1 year"),
labels = scales::date_format("%Y")
)

Oferta Especial!

No próximo dia 17, das 9h às 19h da manhã, você terá a chance de participar do pré-lançamento do treinamento Análise de Dados Macroeconômicos e Financeiros no R. Para concorrer a uma das vagas com desconto, acesse o link e conheça os detalhes.

____________________

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.

____________________

 

 

Relatório AM #32 - IPCA

By | Indicadores

Inflação medida pelo IPCA

No Relatório AM de hoje, iremos comentar sobre o IPCA. O índice é utilizado como principal indicador de acompanhamento de inflação no Brasil. É também utilizado como referência pelo Banco Central para acompanhamento das metas de inflação anuais.

IPCA Mensal

Na variação mensal, referente ao mês de novembro em relação a outubro, o IPCA configurou uma variação positiva de 0,95%, ditando os rumos para que a inflação acumulada no ano feche com dois dígitos.

 

Inflação acumulada

O índice acumulado em 12 meses configurou em uma variação de 10,74%. Podemos compará-la com as metas de inflação e a média dos núcleos de inflação, esta configurando o valor de 7,07%.

Grupos do IPCA

Em relação aos grupos do IPCA, vemos que o Transporte ainda persiste em uma grande contribuição para o aumento do IPCA. Por outro lado, Alimentação e bebidas, Saúde e Cuidados Pessoais, tiveram uma variação negativa no mês.

 

Como criar uma análise como esta?

Quer aprender a coletar, tratar e calcular dados sobre a inflação? Confira nosso Curso de Análise de Conjuntura no R.

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

Assinar Gratuitamente