Policy Rates, Daily

Data - BIS


Info

source dataset .html .RData
bis CBPOL_D 2024-12-21 2024-05-10

LAST_COMPILE

LAST_COMPILE
2024-12-22

Last

date Nobs
2024-12-17 12

iso3c, REF_AREA, Ref_area

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n(),
            start = first(date),
            end = last(date)) %>%
  arrange(-Nobs) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Ref_area)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

FREQ, Freq

Code
CBPOL_D %>%
  left_join(FREQ, by = "FREQ") %>%
  group_by(FREQ, Freq) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
FREQ Freq Nobs
D Daily 641263

Individual Countries

Poland

All

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("PL")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

1999-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("PL"),
         date >= as.Date("1999-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2003-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("PL"),
         date >= as.Date("2003-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Iceland

All

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("IS")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Israel

All

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("IL")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

All - Stanley Fischer

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("IL")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank()) + 
    geom_rect(data = data_frame(start = as.Date("2005-05-01"), 
                                end = as.Date("2013-06-30")), 
              aes(xmin = start, xmax = end, ymin = -Inf, ymax = +Inf), 
              fill = viridis(4)[4], alpha = 0.2)

2004-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("IL"),
         date >= as.Date("2004-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2004- Stanley Fischer

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("IL"),
         date >= as.Date("2004-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank()) + 
    geom_rect(data = data_frame(start = as.Date("2005-05-01"), 
                                end = as.Date("2013-06-30")), 
              aes(xmin = start, xmax = end, ymin = -Inf, ymax = +Inf), 
              fill = viridis(4)[4], alpha = 0.2)

Japan

All

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("JP")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

1980-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("JP"),
         date >= as.Date("1980-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 0.5),
                labels = percent_format(accuracy = .1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

1990-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("JP"),
         date >= as.Date("1990-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 0.5),
                labels = percent_format(accuracy = .1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2000-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("JP"),
         date >= as.Date("2000-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 0.1),
                labels = percent_format(accuracy = .1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2010-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("JP"),
         date >= as.Date("2010-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 0.1),
                labels = percent_format(accuracy = .1)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2 Countries

United States, Euro area (1980-)

1999-

English

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("1999-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Europe", Ref_area)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + add_2flags +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = c("#003399", "#B22234")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

French

Code
plot <- CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("1999-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Europe", Ref_area),
         Ref_area2 = ifelse(REF_AREA == "XM", "Zone euro", "États-Unis")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area2)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1999, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = c( "#B22234", "#003399")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank()) +
  geom_rect(data = nber_recessions %>%
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = -Inf, ymax = +Inf),
            fill = '#B22234', alpha = 0.1)  +
  geom_rect(data = cepr_recessions %>%
              filter(Peak > as.Date("1999-01-01")), 
            aes(xmin = Peak, xmax = Trough, ymin = -Inf, ymax = +Inf), 
            fill = '#003399', alpha = 0.1) 
plot

Code
save(plot, file = "CBPOL_D_files/figure-html/US-XM-1999-francais-1.RData")

2008-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2008-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Europe", Ref_area)) %>%
  arrange(desc(date)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "XM", color2, color)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
  theme_minimal() + xlab("") + ylab("") + add_2flags + scale_color_identity() +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1))

2013-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2013-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Europe", Ref_area)) %>%
  arrange(desc(date)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "XM", color2, color)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
  theme_minimal() + xlab("") + ylab("") + add_2flags + scale_color_identity() +
  scale_x_date(breaks = seq(1940, 2026, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1))

Last 10 years

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= Sys.Date() - years(10)) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Europe", Ref_area)) %>%
  arrange(desc(date)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "XM", color2, color)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
  theme_minimal() + xlab("") + ylab("") + add_2flags + scale_color_identity() +
  scale_x_date(breaks = seq(1940, 2026, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1))

2022-

Dates

Code
dates_ecb <- CBPOL_D %>%
  filter(REF_AREA == "XM",
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
dates_fed <- CBPOL_D %>%
  filter(REF_AREA == "US",
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Euro area, Main Refinancing Operations", "US, Fed Funds rate")) %>%
  arrange(desc(date)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + scale_color_identity() +
  scale_color_manual(values = c("#003399", "#B22234")) +
  scale_x_date(breaks = c(dates_ecb),
               labels = date_format("%d %b %Y"),
               sec.axis = dup_axis(breaks = dates_fed)) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1),
                limits = c(0, 0.06)) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank(),
        axis.text.x.top = element_text(angle = 45, hjust = 0, colour = "#B22234"),
        axis.text.x.bottom = element_text(angle = 45, hjust = 1, colour = "#003399"))

Dates

Code
dates_ecb <- CBPOL_D %>%
  filter(REF_AREA == "XM",
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
dates_fed <- CBPOL_D %>%
  filter(REF_AREA == "US",
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Euro area, Main Refinancing Operations",
                           "US, Fed Funds rate")) %>%
  arrange(desc(date)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + scale_color_identity() +
  scale_color_manual(values = c("#003399", "#B22234")) +
  scale_x_date(breaks = c(dates_ecb),
               labels = date_format("%d %b %Y"),
               sec.axis = dup_axis(breaks = dates_fed)) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1),
                limits = c(0, 0.06)) +
  theme(legend.position = "top",
        legend.title = element_blank(),
        axis.text.x.top = element_text(angle = 45, hjust = 0, colour = "#B22234"),
        axis.text.x.bottom = element_text(angle = 45, hjust = 1, colour = "#003399")) +
  sapply(dates_fed, function(x) geom_vline(xintercept = x, linetype = "dotted", colour = "#B22234")) +
  sapply(dates_ecb, function(x) geom_vline(xintercept = x, linetype = "dotted", colour = "#003399"))

Dates, deposit

English
Code
Sys.setlocale("LC_TIME", "en_CA.UTF-8")
# [1] "en_CA.UTF-8"
Code
dates_ecb <- CBPOL_D %>%
  filter(REF_AREA == "XM",
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
dates_fed <- CBPOL_D %>%
  filter(REF_AREA == "US",
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)

CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Euro area, Deposit facility rate",
                           "US, Federal funds rate (midpoint)")) %>%
  arrange(desc(date)) %>%
  mutate(OBS_VALUE = ifelse(REF_AREA == "XM", OBS_VALUE - 0.005, OBS_VALUE)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + scale_color_identity() +
  scale_color_manual(values = c("#003399", "#B22234")) +
  scale_x_date(breaks = c(dates_ecb),
               labels = date_format("%d %b %Y"),
               sec.axis = dup_axis(breaks = dates_fed)) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1),
                limits = c(-0.01, 0.06)) +
  theme(legend.position = "top",
        legend.title = element_blank(),
        axis.text.x.top = element_text(angle = 45, hjust = 0, colour = "#B22234"),
        axis.text.x.bottom = element_text(angle = 45, hjust = 1, colour = "#003399")) +
  sapply(dates_fed, function(x) geom_vline(xintercept = x, linetype = "dotted", colour = "#B22234")) +
  sapply(dates_ecb, function(x) geom_vline(xintercept = x, linetype = "dotted", colour = "#003399"))

French
Code
Sys.setlocale("LC_TIME", "fr_CA.UTF-8")
# [1] "fr_CA.UTF-8"
Code
dates_ecb <- CBPOL_D %>%
  filter(REF_AREA == "XM",
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
dates_fed <- CBPOL_D %>%
  filter(REF_AREA == "US",
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)

dates_ecb <- c(dates_ecb, as.Date("2024-09-12"))

CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2022-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM",
                           "Zone euro, Taux de la facilité de dépôt",
                           "États-Unis, Taux des Feds Funds"),
         Ref_area = factor(Ref_area, levels = c("Zone euro, Taux de la facilité de dépôt",
                           "États-Unis, Taux des Feds Funds"))) %>%
  arrange(desc(date)) %>%
  mutate(OBS_VALUE = ifelse(REF_AREA == "XM", OBS_VALUE - 0.005, OBS_VALUE)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + scale_color_identity() +
  scale_color_manual(values = c("#003399", "#B22234")) +
  scale_x_date(breaks = c(dates_ecb),
               labels = date_format("%d %b %Y"),
               sec.axis = dup_axis(breaks = dates_fed)) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1),
                limits = c(-0.01, 0.06)) +
  theme(legend.position = "top",
        legend.title = element_blank(),
        axis.text.x.top = element_text(angle = 45, hjust = 0, colour = "#B22234"),
        axis.text.x.bottom = element_text(angle = 45, hjust = 1, colour = "#003399")) +
  sapply(dates_fed, function(x) geom_vline(xintercept = x, linetype = "dotted", colour = "#B22234")) +
  sapply(dates_ecb, function(x) geom_vline(xintercept = x, linetype = "dotted", colour = "#003399"))

Code
Sys.setlocale("LC_TIME", "en_CA.UTF-8")
# [1] "en_CA.UTF-8"

2007-2014

All

Code
CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2007-01-01"),
         date <= as.Date("2014-12-31")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Europe", Ref_area)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + add_2flags +
  scale_x_date(breaks = seq(1940, 2020, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, .5),
                labels = percent_format(accuracy = .1)) +
  scale_color_manual(values = c("#003399", "#B22234")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Dates

Code
dates_ecb <- CBPOL_D %>%
  filter(REF_AREA == "XM",
         date >= as.Date("2007-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
dates_fed <- CBPOL_D %>%
  filter(REF_AREA == "US",
         date >= as.Date("2007-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2007-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Euro area, Main Refinancing Operations", "US, Fed Funds rate")) %>%
  arrange(desc(date)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + scale_color_identity() +
  scale_color_manual(values = c("#003399", "#B22234")) +
  scale_x_date(breaks = c(dates_ecb),
               labels = date_format("%d %b %Y"),
               sec.axis = dup_axis(breaks = dates_fed)) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 0.25),
                labels = percent_format(accuracy = .01)) +
  theme(legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        axis.text.x.top = element_text(angle = 45, hjust = 0, colour = "#B22234"),
        axis.text.x.bottom = element_text(angle = 45, hjust = 1, colour = "#003399"))

2009-2014

All

Code
CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2009-01-01"),
         date <= as.Date("2014-12-31")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Europe", Ref_area)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + add_2flags +
  scale_x_date(breaks = seq(1940, 2020, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, .5),
                labels = percent_format(accuracy = .1)) +
  scale_color_manual(values = c("#003399", "#B22234")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Dates

Code
dates_ecb <- CBPOL_D %>%
  filter(REF_AREA == "XM",
         date >= as.Date("2009-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
dates_fed <- CBPOL_D %>%
  filter(REF_AREA == "US",
         date >= as.Date("2009-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2009-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Euro area, Main Refinancing Operations", "US, Fed Funds rate")) %>%
  arrange(desc(date)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + scale_color_identity() +
  scale_color_manual(values = c("#003399", "#B22234")) +
  scale_x_date(breaks = c(dates_ecb),
               labels = date_format("%d %b %Y"),
               sec.axis = dup_axis(breaks = dates_fed)) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 0.25),
                labels = percent_format(accuracy = .01),
                limits = c(0, 0.015)) +
  theme(legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        axis.text.x.top = element_text(angle = 45, hjust = 0, colour = "#B22234"),
        axis.text.x.bottom = element_text(angle = 45, hjust = 1, colour = "#003399"))

2011-2014

Dates

Code
dates_ecb <- CBPOL_D %>%
  filter(REF_AREA == "XM",
         date >= as.Date("2011-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
dates_fed <- CBPOL_D %>%
  filter(REF_AREA == "US",
         date >= as.Date("2011-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE-lag(OBS_VALUE)) %>%
  filter(OBS_VALUE != 0) %>%
  pull(date)
CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM"),
         date >= as.Date("2011-01-01"),
         date <= as.Date("2015-01-01")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100,
         Ref_area = ifelse(REF_AREA == "XM", "Euro area, Main Refinancing Operations", "US, Fed Funds rate")) %>%
  arrange(desc(date)) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  theme_minimal() + xlab("") + ylab("") + scale_color_identity() +
  scale_color_manual(values = c("#003399", "#B22234")) +
  scale_x_date(breaks = c(dates_ecb),
               labels = date_format("%d %b %Y"),
               sec.axis = dup_axis(breaks = dates_fed)) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 0.25),
                labels = percent_format(accuracy = .01),
                limits = c(0, 0.015)) +
  theme(legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        axis.text.x.top = element_text(angle = 45, hjust = 0, colour = "#B22234"),
        axis.text.x.bottom = element_text(angle = 45, hjust = 1, colour = "#003399"))

All

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "XM")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = `Ref_area`)) + 
  geom_image(data = . %>%
               filter(date == as.Date("2007-01-02")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", `Ref_area`)), ".png")),
             aes(x = date, y = OBS_VALUE, image = image), asp = 1.5) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = c("#003399", "#B22234")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

United States, Hong Kong

All

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "HK")) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE/100, color = `Ref_area`)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = c("#DE2408", "#3C3B6E")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

1999-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "HK"),
         date >= as.Date("1999-01-01")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "HK", "Hong Kong", `Ref_area`)) %>%
  mutate(OBS_VALUE = OBS_VALUE/100) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = `Ref_area`)) + 
  add_2flags + theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = c("#DE2408", "#3C3B6E")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2009-2014

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "HK"),
         date >= as.Date("2009-01-01"),
         date <= as.Date("2014-12-31")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "HK", "Hong Kong", `Ref_area`)) %>%
  mutate(OBS_VALUE = OBS_VALUE/100) %>%
  ggplot(.) + geom_line(aes(x = date, y = OBS_VALUE, color = `Ref_area`)) + 
  geom_image(data = . %>%
               filter(date == as.Date("2012-01-04")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", `Ref_area`)), ".png")),
             aes(x = date, y = OBS_VALUE, image = image), asp = 1.5) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1940, 2020, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, .5),
                labels = percent_format(accuracy = .1)) +
  scale_color_manual(values = c("#DE2408", "#3C3B6E")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

3 Countries

United States, Japan, Euro area

1980-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "JP", "XM"),
         date >= as.Date("1980-01-01")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "XM", "Europe", `Ref_area`)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

1985-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "JP", "XM"),
         date >= as.Date("1985-01-01")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "XM", "Europe", `Ref_area`)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(OBS_VALUE = OBS_VALUE/100) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2009-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "JP", "XM"),
         date >= as.Date("2009-01-01")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "XM", "Europe", `Ref_area`),
         OBS_VALUE = OBS_VALUE/100) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2000-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "JP", "XM"),
         date >= as.Date("2000-01-01")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "XM", "Europe", `Ref_area`)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  scale_color_manual(values = c("#003399", "#BC002D", "#B22234")) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

United States, Europe, Sweden

All

Code
CBPOL_D %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "SE", "XM"),
         date >= as.Date("1998-01-01")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "XM", "Europe", `Ref_area`)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "US", color2, color)) %>%
  mutate(OBS_VALUE = OBS_VALUE/100) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2000-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("US", "SE", "XM"),
         date >= as.Date("2000-01-01")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "XM", "Europe", `Ref_area`)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "US", color2, color)) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Switzerland, Denmark, United Kingdom

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("CH", "DK", "GB")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Sweden, India, United States

All

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("SE", "IN", "US")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

1993-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("SE", "IN", "US"),
         date >= as.Date("1993-01-01")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2000-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("SE", "IN", "US"),
         date >= as.Date("2000-01-01")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 30, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Japan, Canada, Australia

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("JP", "CA", "AU")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 100, 5),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

South Africa, New Zealand, Norway

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("ZA", "NZ", "NO")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 100, 5),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Brazil, Philippines, Hungary

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("BR", "PH", "HU")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-5, 100, 5),
                labels = percent_format(accuracy = 1),
                limits = c(-0.05, 0.40)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Russia, Poland, Argentina

All

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("RU", "PL", "AR")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 50),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

1990-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("RU", "PL", "AR"),
         date >= as.Date("2006-01-01")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2026, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 10),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Israel, Colombia, Croatia

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("IL", "CO", "HR")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 50),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Malaysia, Czech Republic, China

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("MY", "CZ", "CN")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 1),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Serbia, Chile, Iceland

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("RS", "CL", "IS")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 5),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Hong Kong, Mexico, Euro area

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("HK", "MX", "XM")) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "XM", "Europe", `Ref_area`)) %>%
  mutate(`Ref_area` = ifelse(REF_AREA == "HK", "Hong Kong", `Ref_area`)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 5),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

South Korea, North Macedonia, Saudi Arabia

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("KR", "MK", "SA")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 5),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

Thailand, Turkey, Romania

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("TH", "TR", "RO")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + 
  scale_x_date(breaks = seq(1940, 2022, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 5),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

South Korea, Brazil, Turkey

1995-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("KR", "BR", "TR"),
         date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() + 
  scale_x_date(breaks = seq(1940, 2022, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 5),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

2015-

Code
CBPOL_D %>%
  
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(REF_AREA %in% c("KR", "BR", "TR"),
         date >= as.Date("2015-01-01")) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Policy Rates (%)") +
  geom_line(aes(x = date, y = OBS_VALUE/100, color = color)) + 
  scale_color_identity() +
  scale_x_date(breaks = seq(1940, 2022, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 10000, 5),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.80),
        legend.title = element_blank())

More…

Data on monetary-policy

source dataset .html .RData
bdf FM 2024-12-22 2024-12-22
bdf MIR 2024-07-26 2024-07-01
bdf MIR1 2024-11-29 2024-12-09
bis CBPOL 2024-12-19 2024-12-19
ecb BSI 2024-11-19 2024-11-19
ecb BSI_PUB 2024-11-19 2024-11-21
ecb FM 2024-12-21 2024-12-21
ecb ILM 2024-10-08 2024-11-21
ecb ILM_PUB 2024-10-08 2024-09-10
ecb liq_daily 2024-10-08 2024-09-11
ecb MIR 2024-06-19 2024-12-16
ecb RAI 2024-10-08 2024-10-30
ecb SUP 2024-10-08 2024-10-08
ecb YC 2024-11-19 2024-11-19
ecb YC_PUB 2024-10-08 2024-10-08
eurostat ei_mfir_m 2024-12-22 2024-12-22
eurostat irt_st_m 2024-12-22 2024-12-22
fred r 2024-12-22 2024-12-22
oecd MEI 2024-04-16 2024-06-30
oecd MEI_FIN 2024-09-15 2024-12-14

Data on interest rates

source dataset .html .RData
bdf FM 2024-12-22 2024-12-22
bdf MIR 2024-07-26 2024-07-01
bdf MIR1 2024-11-29 2024-12-09
bis CBPOL_D 2024-12-21 2024-05-10
bis CBPOL_M 2024-12-21 2024-04-19
ecb FM 2024-12-21 2024-12-21
ecb MIR 2024-06-19 2024-12-16
eurostat ei_mfir_m 2024-12-22 2024-12-22
eurostat irt_lt_mcby_d 2024-12-22 2024-12-22
eurostat irt_st_m 2024-12-22 2024-12-22
fred r 2024-12-22 2024-12-22
oecd MEI 2024-04-16 2024-06-30
oecd MEI_FIN 2024-09-15 2024-12-14
wdi FR.INR.RINR 2024-12-16 2024-12-16