library(MiscImport)

library(tidyverse)

library(readxl)

library(zoo)

library(lubridate)

library(ggcorrplot)
monetary_df = import_boi_monetary_df()
gdp_df = read_csv(paste0(Sys.getenv("USERPROFILE"),
                                  "\\OneDrive - Bank Of Israel\\Data",
                                  "\\BoI\\real_data",
                                  "\\GDP_nominal_quarterly.csv"),
                  col_names = c("date","gdp"))

gdp_df = gdp_df %>% 
  mutate(date = as.yearqtr(date, format = "%d/%m/%Y")) %>% 
  mutate(gdp_trend = gdp / gdp[date == as.yearqtr("2000 Q1")])
mortgage_credit_df = read_xlsx(
  paste0(
    Sys.getenv("USERPROFILE"),
    "\\OneDrive - Bank Of Israel\\Data",
    "\\BoI\\Credit\\new_mortgages_by_linkage.xlsx"
  ),
  col_names = c(
    "date",
    "real_variable",
    "real_fixed",
    "nominal_variable",
    "nominal_fixed",
    "total",
    "fx-real_variable",
    "fx-nominal_fixed"
  ),
  range = cell_limits(c(2, 1), c(NA, 8)),
  col_types = c("date", rep("numeric", 7))
) %>% 
  mutate(date = as.yearmon(date))


mortgage_interest_df = read_xlsx(paste0(Sys.getenv("USERPROFILE"),
                              "\\OneDrive - Bank Of Israel\\Data",
                              "\\BoI\\Credit\\mortgages_fixed_interest.xlsx"),
                       col_names = c("date","fixed_mortgage_rate"),
                       range = cell_limits(c(2, 1), c(NA, 2)),
                       col_types = c("date","numeric")) %>% 
               mutate(date = as.yearmon(date))%>% 
  inner_join(read_xlsx(paste0(Sys.getenv("USERPROFILE"),
                              "\\OneDrive - Bank Of Israel\\Data",
                              "\\BoI\\Credit\\mortgage_interest.xlsx"),
                       col_names = c("date","real_mortgage_rate"),
                       range = cell_limits(c(2, 1), c(NA, 2)),
                       col_types = c("date","numeric")) %>% 
               mutate(date = as.yearmon(date)), by = "date")
mortgage_credit_df = mortgage_credit_df  %>% 
  pivot_longer(-date) %>% 
  separate(name, into = c("linkage","rate_type"),sep = "_",
           fill = "right") %>% 
  mutate(date_yearqtr = as.yearqtr(date)) %>% 
  inner_join(select(gdp_df, c(date, gdp_trend)),
             by = c("date_yearqtr" = "date")) %>% 
  mutate(value_norm = value / gdp_trend) %>% 
  select(-c("date_yearqtr","gdp_trend"))
mortgage_credit_df %>% 
  filter(linkage == "nominal") %>% 
  filter(rate_type == "fixed") %>% 
  select(date, starts_with("value")) %>% 
  pivot_longer(-date, names_to = "category") %>% 
  ggplot(aes(date, value, color = category)) + 
  geom_line()
mortgage_credit_df %>% 
  filter(linkage == "nominal") %>% 
  filter(rate_type == "fixed") %>% 
  select(date, credit = value_norm) %>% 
  inner_join(select(mortgage_interest_df,
                    c("date","fixed_mortgage_rate")),
             by = "date") %>% 
  filter(date >= as.yearmon("Jan 2010")) %>% 
  select(-date) %>% 
  cor() %>% 
  ggcorrplot(type = "upper",show.diag = FALSE, lab = TRUE)
mortgage_credit_df %>% 
  filter(linkage == "nominal") %>% 
  filter(rate_type == "fixed") %>% 
  select(date, credit = value_norm) %>% 
  inner_join(select(mortgage_interest_df,
                    c("date","fixed_mortgage_rate")),
             by = "date") %>% 
  filter(date >= as.yearmon("Jan 2010")) %>% 
  pivot_longer(-date) %>% 
  ggplot(aes(date, value, color = name)) + 
  geom_line()
mortgage_credit_df %>% 
  filter(linkage == "nominal") %>% 
  filter(rate_type == "fixed") %>% 
  select(date, credit = value_norm) %>% 
  inner_join(select(mortgage_interest_df,
                    c("date",rate = "fixed_mortgage_rate")),
             by = "date") %>% 
  filter(year(date) > 2010) %>% 
  mutate(rate = rate - lag(rate, 12)) %>% 
  mutate(credit = lead(credit, 12) - credit) %>% 
  filter(complete.cases(.)) %>% 
  pivot_longer(-date) %>% 
  ggplot(aes(date, value, color = name)) + 
  geom_line()
mortgage_credit_df %>% 
  filter(linkage == "nominal") %>% 
  filter(rate_type == "fixed") %>% 
  select(date, credit = value_norm) %>% 
  inner_join(select(mortgage_interest_df,
                    c("date",rate = "fixed_mortgage_rate")),
             by = "date") %>% 
  filter(year(date) > 2010) %>% 
  mutate(rate = rate - lag(rate, 12)) %>% 
  mutate(credit = lead(credit, 12) - credit) %>% 
  filter(complete.cases(.)) %>% 
  ggplot(aes(credit,rate)) + 
  geom_point()
mortgage_credit_df %>% 
  filter(linkage == "nominal") %>% 
  filter(rate_type == "fixed") %>% 
  select(date, credit = value) %>% 
  mutate(date_yearqtr = as.yearqtr(date)) %>% 
  inner_join(select(gdp_df, c(date, gdp_trend)),
             by = c("date_yearqtr" = "date")) %>% 
  mutate(credit_norm = credit / gdp_trend) %>% 
  select(-c(date_yearqtr,gdp_trend)) %>% 
  inner_join(select(mortgage_interest_df,
                    c("date","fixed_mortgage_rate")),
             by = "date") %>% 
  filter(fixed_mortgage_rate < quantile(fixed_mortgage_rate,0.99)) %>% 
  ggplot(aes(fixed_mortgage_rate,credit_norm)) + 
  geom_point() + 
  geom_smooth()


MichaelGurkov/LearningMaterials documentation built on July 9, 2022, 5:17 p.m.