Last observation: M: 2026-06 (N = 6626)
First observation: M: 1994-03 (N = 2)
Last data update: 28 août 2026, 16:09. Last compile: 28 août 2026, 17:24
Data - ECB
Last observation: M: 2026-06 (N = 6626)
First observation: M: 1994-03 (N = 2)
Last data update: 28 août 2026, 16:09. Last compile: 28 août 2026, 17:24
Monetary financial institutions in the euro area are legally obliged to report data to their National Central Banks, which in turn report to the ECB.
MIR |>
filter(KEY %in% c("MIR.M.U2.B.A2I.AM.R.A.2240.EUR.N",
"MIR.M.U2.B.A2C.AM.R.A.2250.EUR.N")) |>
month_to_date() |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1)) +
theme(legend.position = c(0.65, 0.9),
legend.title = element_blank())
MIR |>
filter(REF_AREA == "FR",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
# A: Total
TIME_PERIOD == "2021-04") |>
month_to_date() %>%
select_if(~n_distinct(.) > 1) |>
select(-TITLE_COMPL, -TITLE, -KEY) |>
mutate(BS_COUNT_SECTOR = paste0(BS_COUNT_SECTOR)) |>
arrange(OBS_VALUE) |>
select(OBS_VALUE, Bs_count_sector, Bs_item, Amount_cat, Ir_bus_cov, Maturity_not_irate, everything()) |>
print_table_conditional()MIR |>
filter(REF_AREA == "FR",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
TIME_PERIOD == "2021-04") |>
month_to_date() %>%
select_if(~n_distinct(.) > 1) |>
select(-TITLE_COMPL, -TITLE, -KEY) |>
mutate(BS_COUNT_SECTOR = paste0(BS_COUNT_SECTOR)) |>
print_table_conditional()MIR |>
filter(REF_AREA == "FR",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
TIME_PERIOD == "2021-04") |>
month_to_date() %>%
select_if(~n_distinct(.) > 1) |>
select(-TITLE_COMPL, -TITLE, -KEY) |>
mutate(BS_COUNT_SECTOR = paste0(BS_COUNT_SECTOR)) |>
print_table_conditional()| AMOUNT_CAT | Amount_cat | BS_COUNT_SECTOR | Bs_count_sector | IR_BUS_COV | Ir_bus_cov | OBS_VALUE |
|---|---|---|---|---|---|---|
| 0 | Up to and including EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.31 |
| 1 | Over EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.39 |
| 2 | Up to and including EUR 0.25 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.44 |
| 3 | Over EUR 0.25 million and up to EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.14 |
| A | Total | 2240 | Non-Financial corporations (S.11) | N | New business | 1.36 |
| A | Total | 2240 | Non-Financial corporations (S.11) | P | Pure new loans | 1.35 |
| A | Total | 2240 | Non-Financial corporations (S.11) | R | Renegotiation | 1.42 |
| A | Total | 2250 | Households and non-profit institutions serving households (S.14 and S.15) | P | Pure new loans | 1.63 |
| A | Total | 2250 | Households and non-profit institutions serving households (S.14 and S.15) | R | Renegotiation | 1.65 |
MIR |>
filter(REF_AREA == "FR",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("France Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1)) +
theme(legend.position = c(0.65, 0.8),
legend.title = element_blank(),
legend.text = element_text(size = 8),
legend.key.size = unit(0.9, 'lines'))
MIR |>
filter(REF_AREA == "FR",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
IR_BUS_COV == "N",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("France Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1),
limits = c(0.005, 0.08)) +
theme(legend.position = c(0.5, 0.9),
legend.title = element_blank(),
legend.text = element_text(size = 8),
legend.key.size = unit(0.9, 'lines'))
MIR |>
filter(REF_AREA == "FR",
# A20: Loans
BS_ITEM == "A20",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
mutate(BS_COUNT_SECTOR = paste0(BS_COUNT_SECTOR)) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = Bs_count_sector)) +
theme_minimal() + xlab("") + ylab("France Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 0.5),
labels = percent_format(accuracy = .1)) +
theme(legend.position = c(0.6, 0.9),
legend.title = element_blank())
MIR |>
filter(REF_AREA == "U2",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
TIME_PERIOD == "2021-04") |>
month_to_date() %>%
select_if(~n_distinct(.) > 1) |>
select(-TITLE_COMPL) |>
print_table_conditional()| KEY | AMOUNT_CAT | Amount_cat | BS_COUNT_SECTOR | Bs_count_sector | IR_BUS_COV | Ir_bus_cov | OBS_VALUE | OBS_STATUS | Obs_status | TITLE |
|---|---|---|---|---|---|---|---|---|---|---|
| MIR.M.U2.B.A2A.A.R.0.2240.EUR.N | 0 | Up to and including EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.79 | A | Normal value | Bank interest rates - loans to corporations of up to EUR 1M (new business) |
| MIR.M.U2.B.A2A.A.R.1.2240.EUR.N | 1 | Over EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.33 | A | Normal value | Bank interest rates - loans to corporations of over EUR 1M (new business) |
| MIR.M.U2.B.A2A.A.R.2.2240.EUR.N | 2 | Up to and including EUR 0.25 million | 2240 | Non-Financial corporations (S.11) | N | New business | 2.00 | A | Normal value | Bank interest rates - loans to corporations of up to EUR 0.25M (new business) |
| MIR.M.U2.B.A2A.A.R.3.2240.EUR.N | 3 | Over EUR 0.25 million and up to EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.48 | A | Normal value | Bank interest rates - loans to corporations of over EUR .25M & up to EUR 1M (new business) |
| MIR.M.U2.B.A2A.A.R.A.2240.EUR.N | A | Total | 2240 | Non-Financial corporations (S.11) | N | New business | 1.47 | A | Normal value | Bank interest rates - loans to corporations (new business) |
| MIR.M.U2.B.A2A.A.R.A.2240.EUR.P | A | Total | 2240 | Non-Financial corporations (S.11) | P | Pure new loans | 1.43 | A | Normal value | Bank interest rates - loans to corporations (pure new loans) |
| MIR.M.U2.B.A2A.A.R.A.2240.EUR.R | A | Total | 2240 | Non-Financial corporations (S.11) | R | Renegotiation | 1.64 | E | Estimated value | Bank interest rates - loans to corporations (renegotiations) |
| MIR.M.U2.B.A2A.A.R.A.2250.EUR.P | A | Total | 2250 | Households and non-profit institutions serving households (S.14 and S.15) | P | Pure new loans | 2.14 | A | Normal value | Bank interest rates - loans to households (pure new loans) |
MIR |>
filter(REF_AREA == "U2",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
mutate(TITLE = gsub("Bank interest rates - loans to", "", TITLE),
TITLE = gsub("- Germany", "", TITLE)) |>
month_to_date() |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("Euro Area Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1)) +
theme(legend.position = c(0.65, 0.8),
legend.title = element_blank(),
legend.text = element_text(size = 8),
legend.key.size = unit(0.9, 'lines'))
MIR |>
filter(REF_AREA == "U2",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
mutate(TITLE = gsub("Bank interest rates - loans to", "", TITLE),
TITLE = gsub("- Germany", "", TITLE)) |>
month_to_date() |>
filter(date >= as.Date("2010-01-01")) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("Germany Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1)) +
theme(legend.position = c(0.65, 0.72),
legend.title = element_blank(),
legend.text = element_text(size = 8),
legend.key.size = unit(0.9, 'lines'))
MIR |>
filter(REF_AREA == "U2",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
mutate(TITLE = gsub("Bank interest rates - loans to", "", TITLE),
TITLE = gsub("- Germany", "", TITLE)) |>
month_to_date() |>
filter(date >= as.Date("2015-01-01")) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("Germany Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1)) +
theme(legend.position = c(0.65, 0.8),
legend.title = element_blank(),
legend.text = element_text(size = 8),
legend.key.size = unit(0.9, 'lines'))
MIR |>
filter(REF_AREA == "DE",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
TIME_PERIOD == "2021-04") |>
month_to_date() %>%
select_if(~n_distinct(.) > 1) |>
select(-TITLE_COMPL) |>
print_table_conditional()| KEY | AMOUNT_CAT | Amount_cat | BS_COUNT_SECTOR | Bs_count_sector | IR_BUS_COV | Ir_bus_cov | OBS_VALUE | TITLE |
|---|---|---|---|---|---|---|---|---|
| MIR.M.DE.B.A2A.A.R.0.2240.EUR.N | 0 | Up to and including EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.90 | Bank interest rates - loans to corporations of up to EUR 1M (new business) |
| MIR.M.DE.B.A2A.A.R.1.2240.EUR.N | 1 | Over EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.41 | Bank interest rates - loans to corporations of over EUR 1M (new business) |
| MIR.M.DE.B.A2A.A.R.2.2240.EUR.N | 2 | Up to and including EUR 0.25 million | 2240 | Non-Financial corporations (S.11) | N | New business | 2.05 | Bank interest rates - loans to corporations of up to EUR 0.25M (new business) |
| MIR.M.DE.B.A2A.A.R.3.2240.EUR.N | 3 | Over EUR 0.25 million and up to EUR 1 million | 2240 | Non-Financial corporations (S.11) | N | New business | 1.65 | Bank interest rates - loans to corporations of over EUR .25M & up to EUR 1M (new business) |
| MIR.M.DE.B.A2A.A.R.A.2240.EUR.N | A | Total | 2240 | Non-Financial corporations (S.11) | N | New business | 1.52 | Bank interest rates - loans to corporations (new business) |
| MIR.M.DE.B.A2A.A.R.A.2240.EUR.P | A | Total | 2240 | Non-Financial corporations (S.11) | P | Pure new loans | 1.50 | Bank interest rates - loans to corporations (pure new loans) |
| MIR.M.DE.B.A2A.A.R.A.2240.EUR.R | A | Total | 2240 | Non-Financial corporations (S.11) | R | Renegotiation | 1.55 | Bank interest rates - loans to corporations (renegotiations) |
| MIR.M.DE.B.A2A.A.R.A.2250.EUR.P | A | Total | 2250 | Households and non-profit institutions serving households (S.14 and S.15) | P | Pure new loans | 2.11 | Bank interest rates - loans to households (pure new loans) |
| MIR.M.DE.B.A2A.A.R.A.2250.EUR.R | A | Total | 2250 | Households and non-profit institutions serving households (S.14 and S.15) | R | Renegotiation | 2.44 | Bank interest rates - loans to households (renegotiations) |
MIR |>
filter(REF_AREA == "DE",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
mutate(TITLE = gsub("Bank interest rates - loans to", "", TITLE),
TITLE = gsub("- Germany", "", TITLE)) |>
month_to_date() |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("Germany Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1)) +
theme(legend.position = c(0.65, 0.8),
legend.title = element_blank(),
legend.text = element_text(size = 8),
legend.key.size = unit(0.9, 'lines'))
MIR |>
filter(REF_AREA == "DE",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
mutate(TITLE = gsub("Bank interest rates - loans to", "", TITLE),
TITLE = gsub("- Germany", "", TITLE)) |>
month_to_date() |>
filter(date >= as.Date("2010-01-01")) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("Germany Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1)) +
theme(legend.position = c(0.65, 0.8),
legend.title = element_blank(),
legend.text = element_text(size = 8),
legend.key.size = unit(0.9, 'lines'))
MIR |>
filter(REF_AREA == "DE",
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2A",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
mutate(TITLE = gsub("Bank interest rates - loans to", "", TITLE),
TITLE = gsub("- Germany", "", TITLE)) |>
month_to_date() |>
filter(date >= as.Date("2015-01-01")) |>
ggplot() +
geom_line(aes(x = date, y = OBS_VALUE / 100, color = TITLE)) +
theme_minimal() + xlab("") + ylab("Germany Interest Rates (%)") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1)) +
theme(legend.position = c(0.65, 0.8),
legend.title = element_blank(),
legend.text = element_text(size = 8),
legend.key.size = unit(0.9, 'lines'))
MIR |>
filter(REF_AREA %in% c("FR"),
# A2C: Lending for house purchase excluding revolving loans and overdrafts, convenience and extended credit card debt
BS_ITEM %in% c("A2C", "A20"),
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
BS_COUNT_SECTOR == "2250") |>
month_to_date() |>
filter(date >= as.Date("2015-01-01")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase excluding revolving (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = paste0(BS_ITEM, " - ", Bs_item, "\n", Ir_bus_cov))) +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1)) +
theme(legend.position = c(0.5, 0.85),
legend.title = element_blank())
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2C: Lending for house purchase excluding revolving loans and overdrafts, convenience and extended credit card debt
BS_ITEM %in% c("A2C", "A20"),
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
BS_COUNT_SECTOR == "2250") |>
month_to_date() |>
arrange(desc(date)) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase excluding revolving (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color, linetype = paste0(Bs_item, IR_BUS_COV))) +
add_flags(6) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1)) +
theme(legend.position = c(0.8, 0.2),
legend.title = element_blank())
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2C: Lending for house purchase excluding revolving loans and overdrafts, convenience and extended credit card debt
BS_ITEM %in% c("A2C", "A20"),
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
BS_COUNT_SECTOR == "2250") |>
month_to_date() |>
filter(date >= as.Date("2010-01-01")) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase excluding revolving (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color, linetype = paste0(BS_ITEM, " - ", Ir_bus_cov))) +
add_flags(6) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1)) +
theme(legend.position = c(0.2, 0.2),
legend.title = element_blank())
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2C: Lending for house purchase excluding revolving loans and overdrafts, convenience and extended credit card debt
BS_ITEM %in% c("A2C", "A20"),
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
BS_COUNT_SECTOR == "2250") |>
month_to_date() |>
filter(date >= as.Date("2015-01-01")) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase excluding revolving (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color, linetype = paste0(BS_ITEM, " - ", Ir_bus_cov))) +
add_flags(6) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1)) +
theme(legend.position = c(0.5, 0.85),
legend.title = element_blank())
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2C: Lending for house purchase excluding revolving loans and overdrafts, convenience and extended credit card debt
BS_ITEM %in% c("A2C", "A20"),
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
BS_COUNT_SECTOR == "2250",
IR_BUS_COV %in% c("N", "O")) |>
month_to_date() |>
filter(date >= as.Date("2015-01-01")) |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Loans to Households (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color, linetype = paste0(BS_ITEM, " - ", Ir_bus_cov))) +
add_flags(6) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1)) +
theme(legend.position = c(0.5, 0.85),
legend.title = element_blank())
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A20 - Loans
BS_ITEM == "A20",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
BS_COUNT_SECTOR == "2240") |>
month_to_date() %>%
select_if(~n_distinct(.) > 1) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Loans to corporations (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(3) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1))
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2C: Lending for house purchase excluding revolving loans and overdrafts, convenience and extended credit card debt
BS_ITEM == "A20",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
BS_COUNT_SECTOR == "2250") |>
month_to_date() %>%
select_if(~n_distinct(.) > 1) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Loans to households (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(3) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1))
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2C: Lending for house purchase excluding revolving loans and overdrafts, convenience and extended credit card debt
BS_ITEM == "A2C",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
# N: New business
IR_BUS_COV == "N") |>
month_to_date() |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase excluding revolving (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(3) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1))
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A2C",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R",
# N: New business
IR_BUS_COV == "N") |>
month_to_date() |>
filter(date >= as.Date("2010-01-01")) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase excluding revolving (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(3) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1))
MIR |>
filter(REF_AREA %in% c("EE", "LT", "LV", "PT"),
# A22: Lending for house purchase
BS_ITEM == "A22",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
filter(date >= as.Date("2018-01-01")) |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100,
color = ifelse(REF_AREA == "FR", color2, color)) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase, Old loans (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(4) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1))
MIR |>
filter(REF_AREA %in% c("FR", "BE", "DE", "NL"),
# A22: Lending for house purchase
BS_ITEM == "A22",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
mutate(Ref_area = ifelse(REF_AREA == "U2", "Europe", Ref_area)) |>
month_to_date() |>
filter(date >= as.Date("2018-01-01")) |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase, Old loans (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(4) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .2),
labels = percent_format(accuracy = .1))
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT", "ES", "NL"),
# A22: Lending for house purchase
BS_ITEM == "A22",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100,
color = ifelse(REF_AREA == "FR", color2, color)) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase, Old loans (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(5) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1))
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT", "ES", "NL"),
# A22: Lending for house purchase
BS_ITEM == "A22",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
filter(date >= as.Date("2018-01-01")) |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100,
color = ifelse(REF_AREA == "FR", color2, color)) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase, Old loans (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(5) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1))
MIR |>
filter(REF_AREA %in% c("EE", "LT", "LV", "PT", "FI", "ES"),
# A22: Lending for house purchase
BS_ITEM == "A22",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
filter(date >= as.Date("2018-01-01")) |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100,
color = ifelse(REF_AREA == "FR", color2, color)) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase, Old loans (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(6) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .5),
labels = percent_format(accuracy = .1))
MIR |>
filter(REF_AREA %in% c("FR", "U2", "BE", "DE", "NL"),
# A22: Lending for house purchase
BS_ITEM == "A22",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
mutate(Ref_area = ifelse(REF_AREA == "U2", "Europe", Ref_area)) |>
month_to_date() |>
filter(date >= as.Date("2018-01-01")) |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Lending for house purchase, Old loans (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(5) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, .2),
labels = percent_format(accuracy = .1))
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A25",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
ggplot() + theme_minimal() + xlab("") + ylab("Credit for consumption and other lending (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(3) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1))
MIR |>
filter(REF_AREA %in% c("FR", "DE", "IT"),
# A2A: Loans oth. than revolving loans and overdrafts, convenience and ext. CC debt
BS_ITEM == "A25",
# A: Total
MATURITY_NOT_IRATE == "A",
# R: Rate
DATA_TYPE_MIR == "R") |>
month_to_date() |>
arrange(date) |>
left_join(colors, by = c("Ref_area" = "country")) |>
mutate(OBS_VALUE = OBS_VALUE/100) |>
filter(date >= as.Date("2017-01-01")) |>
ggplot() + theme_minimal() + xlab("") + ylab("Credit for consumption and other lending (%)") +
geom_line(aes(x = date, y = OBS_VALUE, color = color)) +
add_flags(3) + scale_color_identity() +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 50, 1),
labels = percent_format(accuracy = 1))