ECOFIN - Economy and Finance - ECOFI

Data - Banque de France

🇫🇷 Version française

Info

Last observation: Mensuel: 30 jui 2026 (N = 3,583) · Trimestriel: 31 mar 2026 (N = 1,308) · Quotidien: 05 jul 2024 (N = 49,860)

First observation: Mensuel: 31 jan 1970 (N = 3,583) · Trimestriel: 30 jui 2009 (N = 1,308) · Quotidien: 02 jan 1986 (N = 49,860)

Last data update: 10 aoû 2026, 19:04. Last compile: 13 aoû 2026, 00:42

Structure

LAST_DOWNLOAD

LAST_DOWNLOAD
2026-08-10

Interest Rates

Since 1986

Code
ECOFI |>

  filter(variable %in% c("ECOFI.INR.FR.FITB_PA._Z.D",
                          "ECOFI.INR.FR.FID_PA._Z.D",
                          "ECOFI.INR.FR.FIGB_PA._Z.D")) |>
  mutate(Variable = trimws(Variable)) |>
  na.omit() |>
  ggplot() + geom_line(aes(x = date, y = value/100, color = Variable)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 4) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.75, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical")

Since 2015

Code
ECOFI |>

  filter(variable %in% c("ECOFI.INR.FR.FITB_PA._Z.D",
                          "ECOFI.INR.FR.FID_PA._Z.D",
                          "ECOFI.INR.FR.FIGB_PA._Z.D")) |>
  mutate(Variable = trimws(Variable)) |>
  na.omit() |>
  filter(date >= as.Date("2015-01-01")) |>
  ggplot() + geom_line(aes(x = date, y = value/100, color = Variable)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank(),
        legend.direction = "vertical")

CAC 40 Index

Since 1987

Code
ECOFI |>

  filter(variable == "ECOFI.SPI.FR.FPE_IX._Z.D") |>
  na.omit() |>
  ggplot() + geom_line(aes(x = date, y = value), color = "#002395") +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 4) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(labels = comma_format(accuracy = 1))

Over the Last 5 Years

Code
ECOFI |>

  filter(variable == "ECOFI.SPI.FR.FPE_IX._Z.D") |>
  na.omit() |>
  filter(date >= max(date) - years(5)) |>
  ggplot() + geom_line(aes(x = date, y = value), color = "#002395") +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = "6 months",
               labels = date_format("%b %Y")) +
  scale_y_continuous(labels = comma_format(accuracy = 1)) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Financial Soundness of French Banks

Financial Soundness Indicators (FSI) for the French banking sector, calculated quarterly by the Banque de France.

Capital Ratios

Code
ECOFI |>

  filter(variable %in% c("ECOFI.FSI.FR.FSKRTC_PT._Z.Q",
                          "ECOFI.FSI.FR.FSKRTCA_PT._Z.Q")) |>
  mutate(Variable = trimws(Variable)) |>
  na.omit() |>
  ggplot() + geom_line(aes(x = date, y = value/100, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.3, 0.15),
        legend.title = element_blank(),
        legend.direction = "vertical")

Asset Quality

Code
ECOFI |>

  filter(variable == "ECOFI.FSI.FR.FSANL_PT._Z.Q") |>
  na.omit() |>
  ggplot() + geom_line(aes(x = date, y = value/100), color = "#B22222") +
  xlab("") + ylab("Non-performing loans / total loans") + theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_continuous(labels = percent_format(accuracy = 0.1))

Latest Data Points

Code
ECOFI |>

  filter(DATA_DOMAIN == "FSI") |>
  na.omit() |>
  group_by(Variable) |>
  filter(date == max(date)) |>
  ungroup() |>
  mutate(Variable = trimws(Variable)) |>
  select(Variable, date, value) |>
  arrange(Variable) |>
  print_table_conditional()
Variable date value
Actifs liquides rapportés aux passifs de courts terme 2026-03-31 21.08
Fonds propres de catégorie 1 rapportés au total de bilan 2026-03-31 5.36
Fonds propres de catégorie 1 rapportés aux actifs pondérés (RWA) 2026-03-31 17.20
Prêts douteux rapportés au total des prêts 2026-03-31 2.51
Prêts douteux net de provisions rapportés au capital 2026-03-31 11.41
Résultat sur total des actifs 2026-03-31 0.41