Interest rates - monthly data

Data - Eurostat

Info

source dataset .html .RData
eurostat ei_mfir_m 2024-12-22 2024-12-22

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-22 2024-05-10
bis CBPOL_M 2024-12-22 2024-04-19
ecb FM 2024-12-22 2024-12-22
ecb MIR 2024-06-19 2024-12-22
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-22
wdi FR.INR.RINR 2024-12-22 2024-12-22

Data on public debt

source dataset .html .RData
eurostat ei_mfir_m 2024-12-22 2024-12-22
eurostat gov_10q_ggdebt 2024-12-22 2024-12-22
fred r 2024-12-22 2024-12-22
fred saving 2024-12-22 2024-12-22
gfd debt 2021-08-22 2021-03-01
imf FM 2024-06-20 2020-03-13
imf GGXCNL_G01_GDP_PT 2024-12-22 2024-12-22
imf GGXONLB_G01_GDP_PT 2024-12-22 2024-12-22
imf GGXWDN_G01_GDP_PT 2024-10-29 2024-05-06
imf HPDD 2024-06-20 NA
oecd QASA_TABLE7PSD 2024-09-15 2024-12-22
wdi GC.DOD.TOTL.GD.ZS 2023-06-18 2024-09-18
wdi GC.XPN.INTP.CN 2023-06-18 2024-09-18
wdi GC.XPN.INTP.RV.ZS 2023-06-18 2024-09-18
wdi GC.XPN.INTP.ZS 2024-09-18 2024-09-18

Last

Code
ei_mfir_m %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2024M11 9

indic

Code
ei_mfir_m %>%
  left_join(indic, by = "indic") %>%
  group_by(indic, Indic) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
indic Indic Nobs
MF-LTGBY-RT Long term government bond yields - Maastricht definition (average) 11816
MF-3MI-RT 3-month interest rates (average) 5027
MF-DDI-RT Day-to-day money market interest rates (average) 4433
MF-EY10YM-RT Euro yields - 10 years (average) 243
MF-EY1YM-RT Euro yields - 1 year (average) 243
MF-EY5YM-RT Euro yields - 5 years (average) 243

geo

Code
ei_mfir_m %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

time

Code
ei_mfir_m %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  print_table_conditional

Interest Rates

Table

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         time %in% c("2000M01", "2005M01", "2010M01", "2020M01", "2021M04")) %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(geo, by = "geo") %>%
  spread(time, values) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Germany, Italy, France, Spain

All

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

1995-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

1998-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("1998-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

2010-2015

Interest rates

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2010-01-01"),
         date <= as.Date("2016-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

2005-

Interest rates

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Spreads

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(date) %>%
  mutate(values = values - values[geo == "DE"]) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond spreads vs. Germany\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, .5),
                labels = percent_format(a = .1))

2000-2007

Interest rates

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2000-01-01"),
         date <= as.Date("2008-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, .2),
                labels = percent_format(a = .1))

Spreads

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2000-01-01"),
         date <= as.Date("2008-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(date) %>%
  mutate(values = values - values[geo == "DE"]) %>%
  #filter(geo != "DE") %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond spreads vs. Germany\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, .1),
                labels = percent_format(a = .1))

2014-

Interest rates

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2014-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Spreads

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2014-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(date) %>%
  mutate(values = values - values[geo == "DE"]) %>%
  #filter(geo != "DE") %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond spreads vs. Germany\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, .5),
                labels = percent_format(a = .1))

Germany, Italy, France, Spain, Greece

All

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES", "EL")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

1995-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES", "EL")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

1998-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES", "EL")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("1998-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

2005-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES", "EL")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

2014-

Interest rates

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES", "EL")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2014-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Spreads

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES", "EL")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2014-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(date) %>%
  mutate(values = values - values[geo == "DE"]) %>%
  #filter(geo != "DE") %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond spreads vs. Germany\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, .5),
                labels = percent_format(a = .1))

2018-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES", "EL")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2018-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Germany, Italy, France, Spain, Greece, Portugal

2018-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("FR", "DE", "IT", "ES", "EL", "PT")) %>%
  left_join(geo, by = "geo") %>%
  month_to_date %>%
  filter(date >= as.Date("2018-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_6flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Portugal, Greece, Germany, Euro area

All

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("EA", "DE", "EL", "PT")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo)) %>%
  month_to_date %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

1995-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("EA", "DE", "EL", "PT")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

2005-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("EA", "DE", "EL", "PT")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("2005-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

2014-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("EA", "DE", "EL", "PT")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("2014-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Portugal, Spain, Italy

1998-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("EA","FR", "PT", "ES", "IT")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("1998-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

2014-

Code
ei_mfir_m %>%
  filter(indic %in% c("MF-LTGBY-RT"),
         geo %in% c("EA","FR", "PT", "ES", "IT")) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA", "Europe", Geo)) %>%
  month_to_date %>%
  filter(date >= as.Date("2014-01-01")) %>%
  mutate(values = values / 100) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Long term government bond yields\nMaastricht definition (average)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")