## ----include = FALSE----------------------------------------------------------
NOT_CRAN <- identical(tolower(Sys.getenv("NOT_CRAN")), "true")
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = NOT_CRAN,
  fig.width = 7,
  fig.asp = 0.618,
  fig.align = "center",
  message = FALSE,
  warning = FALSE
)

## -----------------------------------------------------------------------------
# library(realestatebr)
# library(dplyr)

## ----setup, message = FALSE---------------------------------------------------
# library(ggplot2)
# 
# color_palette <- c(
#   "#1E3A5F",
#   "#DD6B20",
#   "#2C7A7B",
#   "#D69E2E",
#   "#805AD5",
#   "#C53030"
# )
# 
# theme_series <- function() {
#   theme_minimal(
#     # swap for other font if needed
#     base_family = "Avenir",
#     base_size = 10
#   ) +
#     theme(
#       plot.title = element_text(size = 16),
#       panel.grid.minor = element_blank(),
#       panel.grid.major.x = element_blank(),
#       axis.line.x = element_line(color = "gray10", linewidth = 0.5),
#       axis.ticks.x = element_line(color = "gray10", linewidth = 0.5),
#       axis.title.x = element_blank(),
#       legend.position = "bottom",
#       palette.color.discrete = color_palette
#     )
# }

## -----------------------------------------------------------------------------
# library(knitr)
# library(kableExtra)

## -----------------------------------------------------------------------------
# # Default table
# abecip <- get_dataset("abecip")
# 
# # Specific table
# sbpe <- get_dataset("abecip", table = "units")

## -----------------------------------------------------------------------------
# ds <- list_datasets()

## -----------------------------------------------------------------------------
# ds |>
#   select(name, title, source, available_tables, frequency) |>
#   kable() |>
#   kable_styling(bootstrap_options = "striped") |>
#   scroll_box(width = "100%", height = "400px")

## -----------------------------------------------------------------------------
# info <- get_dataset_info("abecip")
# names(info$categories)
# #> [1] "sbpe"  "units"  "cgi"

## -----------------------------------------------------------------------------
# get_dataset("abecip", source = "github") # pre-processed asset from GitHub release
# get_dataset("abecip", source = "fresh") # direct from the original source

## -----------------------------------------------------------------------------
# sbpe <- get_dataset("abecip", table = "sbpe")
# 
# glimpse(sbpe)

## -----------------------------------------------------------------------------
# # Annual net credit flow
# sbpe_annual <- sbpe |>
#   filter(date >= as.Date("2019-01-01")) |>
#   mutate(year = lubridate::year(date)) |>
#   summarise(net_flow = sum(sbpe_netflow, na.rm = TRUE) / 1e3, .by = year) |>
#   mutate(
#     label_num = format(round(net_flow, 1)),
#     ypos = if_else(net_flow > 0, net_flow + 10, net_flow - 10)
#   )
# 
# ggplot(sbpe_annual, aes(year, net_flow)) +
#   geom_col(fill = color_palette[1], alpha = 0.9, width = 0.8) +
#   geom_text(aes(y = ypos, label = label_num), size = 3) +
#   geom_hline(yintercept = 0) +
#   scale_x_continuous(breaks = 2019:2026) +
#   labs(
#     title = "Annual Net Savings Flow (SBPE)",
#     x = NULL,
#     y = "R$ billions"
#   ) +
#   theme_series()

## -----------------------------------------------------------------------------
# units <- get_dataset("abecip", table = "units")
# 
# glimpse(units)

## -----------------------------------------------------------------------------
# # SBPE units financed per year
# units_recent <- units |>
#   filter(date >= as.Date("2019-01-01"))
# 
# ggplot(units_recent, aes(date, units_total)) +
#   geom_point(alpha = 0.5, size = 0.8, color = color_palette[1]) +
#   geom_smooth(
#     color = color_palette[1],
#     lwd = 0.7,
#     se = FALSE,
#     method = stats::loess,
#     method.args = list(span = 0.4)
#   ) +
#   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
#   labs(
#     title = "Monthly Financed Units",
#     y = "Units"
#   ) +
#   theme_series()

## -----------------------------------------------------------------------------
# bcb <- get_dataset("bcb_realestate")
# 
# # Get a specific series
# sfh_pf <- bcb |>
#   filter(series_info == "credito_estoque_carteira_credito_pf_sfh_br")
# 
# # Get the all the related series for 'estoque_carteira_credito_pf'
# credit_stock <- bcb |>
#   filter(
#     category == "credito",
#     type == "estoque",
#     v1 == "carteira",
#     v2 == "credito",
#     v3 == "pf",
#     # since v4 is left blank, we get all credit lines
#     v5 == "br"
#   )
# 
# # The helper columns essentially separate the 'series_info' column allowing
# # for easier filtering. It's equivalent to filtering by regex
# credit_stock <- bcb |>
#   filter(grepl(
#     "(?<=credito_estoque_carteira_credito_pf_).+_br$",
#     series_info,
#     perl = TRUE
#   ))

## -----------------------------------------------------------------------------
# ggplot(sfh_pf, aes(date, value / 1e9)) +
#   geom_line(lwd = 0.7, color = color_palette[1]) +
#   labs(title = "SFH", y = "R$ (billions)") +
#   theme_series()

## -----------------------------------------------------------------------------
# credit_labels <- c(
#   "Home Equity" = "home-equity",
#   "Comercial" = "comercial",
#   "Livre" = "livre",
#   "FGTS" = "fgts",
#   "SFH" = "sfh"
# )
# 
# credit_stock <- credit_stock |>
#   mutate(
#     credit_line_label = factor(
#       v4,
#       levels = credit_labels,
#       labels = names(credit_labels)
#     )
#   )
# 
# ggplot(credit_stock, aes(date, value / 1e9)) +
#   geom_area(aes(fill = credit_line_label), alpha = 0.9) +
#   scale_fill_manual(values = rev(color_palette[1:5])) +
#   scale_x_date(expand = expansion(mult = c(0.01))) +
#   scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
#   labs(
#     title = "Real Estate Credit Stock",
#     subtitle = "Household real estate credit stock (total debt) by credit line",
#     y = "R$ (billions)",
#     fill = NULL
#   ) +
#   theme_series()

