Monetary Aggregates - Euro Area - BSI

Data - Banque de France

🇫🇷 Version française

Info

Last observation: Mensuel: 31 mai 2026 (N = 553,136) · Trimestriel: 31 mar 2026 (N = 86,863)

First observation: Mensuel: 31 jan 1971 (N = 553,136) · Trimestriel: 31 mar 1993 (N = 86,863)

Last data update: 10 aoû 2026, 18:53. Last compile: 13 aoû 2026, 00:12

Structure

source dataset Title .html .rData
bdf DIREN Observatoire des Entreprises 2026-08-10 2026-08-10

Latest

  • Latest. html

  • List of BdF Data - Household Credit. html

  • Household Credit, April 2021. html / pdf

  • Household Credit, October 2021. html / pdf

LAST_DOWNLOAD

LAST_DOWNLOAD
2026-08-10

LAST_COMPILE

LAST_COMPILE
2026-08-13

Last

date Nobs
2026-05-31 1731

Euro Area Monetary Aggregates (M1, M2, M3)

Annual Growth Rate

Code
BSI |>

  filter(variable %in% c("BSI.M.U2.Y.V.M10.X.I.U2.2300.Z01.A",
                          "BSI.M.U2.Y.V.M20.X.I.U2.2300.Z01.A",
                          "BSI.M.U2.Y.V.M30.X.I.U2.2300.Z01.A")) |>
  mutate(Aggregate = case_when(BS_ITEM == "M10" ~ "M1",
                              BS_ITEM == "M20" ~ "M2",
                              BS_ITEM == "M30" ~ "M3"),
         value = value/100) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Aggregate)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.85, 0.85),
        legend.title = element_blank())

Since 2000

Code
BSI |>

  filter(variable %in% c("BSI.M.U2.Y.V.M10.X.I.U2.2300.Z01.A",
                          "BSI.M.U2.Y.V.M20.X.I.U2.2300.Z01.A",
                          "BSI.M.U2.Y.V.M30.X.I.U2.2300.Z01.A")) |>
  filter(date >= as.Date("2000-01-01")) |>
  mutate(Aggregate = case_when(BS_ITEM == "M10" ~ "M1",
                              BS_ITEM == "M20" ~ "M2",
                              BS_ITEM == "M30" ~ "M3"),
         value = value/100) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Aggregate)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.85, 0.85),
        legend.title = element_blank())

Outstanding Amounts (€bn)

Code
BSI |>

  filter(variable %in% c("BSI.M.U2.Y.V.M10.X.1.U2.2300.Z01.E",
                          "BSI.M.U2.Y.V.M20.X.1.U2.2300.Z01.E",
                          "BSI.M.U2.Y.V.M30.X.1.U2.2300.Z01.E")) |>
  mutate(Aggregate = case_when(BS_ITEM == "M10" ~ "M1",
                              BS_ITEM == "M20" ~ "M2",
                              BS_ITEM == "M30" ~ "M3"),
         value = value/1000) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Aggregate)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(labels = dollar_format(accuracy = 1, prefix = "", suffix = " €bn", big.mark = " ")) +
  theme(legend.position = c(0.15, 0.85),
        legend.title = element_blank())

Household Housing Loans (Annual Growth Rate)

France, Germany, Italy, Spain

Code
BSI |>

  filter(variable %in% c("BSI.M.FR.N.A.A22.A.I.U2.2250.Z01.A",
                          "BSI.M.DE.N.A.A22.A.I.U2.2250.Z01.A",
                          "BSI.M.IT.N.A.A22.A.I.U2.2250.Z01.A",
                          "BSI.M.ES.N.A.A22.A.I.U2.2250.Z01.A")) |>
  mutate(Ref_area = case_when(REF_AREA == "FR" ~ "France",
                               REF_AREA == "DE" ~ "Germany",
                               REF_AREA == "IT" ~ "Italy",
                               REF_AREA == "ES" ~ "Spain"),
         value = value/100) |>
  left_join(colors, by = c("Ref_area" = "country")) |>
  na.omit() |>
  ggplot() + geom_line(aes(x = date, y = value, color = color)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
  theme_minimal() + xlab("") + ylab("") + scale_color_identity() + add_4flags +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

Latest Available Month

Code
BSI |>

  filter(variable %in% c("BSI.M.FR.N.A.A22.A.I.U2.2250.Z01.A",
                          "BSI.M.DE.N.A.A22.A.I.U2.2250.Z01.A",
                          "BSI.M.IT.N.A.A22.A.I.U2.2250.Z01.A",
                          "BSI.M.ES.N.A.A22.A.I.U2.2250.Z01.A")) |>
  filter(!is.na(value)) |>
  mutate(Ref_area = case_when(REF_AREA == "FR" ~ "France",
                               REF_AREA == "DE" ~ "Germany",
                               REF_AREA == "IT" ~ "Italy",
                               REF_AREA == "ES" ~ "Spain")) |>
  group_by(Ref_area) |>
  filter(date == max(date)) |>
  ungroup() |>
  select(Ref_area, date, value) |>
  arrange(desc(value)) |>
  print_table_conditional()
Ref_area date value
Spain 2026-05-31 4.0
Italy 2026-05-31 3.5
Germany 2026-05-31 2.5
France 2026-05-31 0.1