## ----include = FALSE----------------------------------------------------------
BUILD_LIVE_VIGNETTES <- identical(
  tolower(Sys.getenv("REALESTATEBR_BUILD_LIVE_VIGNETTES")),
  "true"
)
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  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(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
# units <- 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

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

## ----eval = BUILD_LIVE_VIGNETTES----------------------------------------------
# # 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 = scales::breaks_pretty(n = 8)) +
#   labs(
#     title = "Annual Net Savings Flow (SBPE)",
#     x = NULL,
#     y = "R$ billions"
#   ) +
#   theme_series()

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

## ----eval = BUILD_LIVE_VIGNETTES----------------------------------------------
# # Monthly SBPE units financed
# 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.8,
#     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()

## ----eval = BUILD_LIVE_VIGNETTES----------------------------------------------
# bcb <- get_dataset("bcb_realestate")
# 
# # Get a specific series
# sfh_pf <- bcb |>
#   filter(series_info == "credito_estoque_carteira_credito_pf_sfh_br")
# 
# # Get all 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
#   ))

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

## ----eval = BUILD_LIVE_VIGNETTES----------------------------------------------
# credit_stock <- credit_stock |>
#   mutate(
#     credit_line_label = dplyr::recode(
#       v4,
#       `home-equity` = "Home Equity",
#       comercial = "Commercial",
#       livre = "Market",
#       fgts = "FGTS",
#       sfh = "SFH"
#     )
#   )
# 
# 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()

