Taux d’intérêt - France

Data - BDF

Info

source dataset .html .RData
bdf MIR1 2024-11-19 2024-11-19

Data on interest rates

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

Données sur l’immobilier

source dataset .html .RData
acpr as151 2024-06-19 2024-04-05
bdf BSI1 2024-11-22 2024-11-21
bdf CPP 2024-07-26 2024-07-01
bdf FM 2024-11-22 2024-11-22
bdf immobilier 2024-11-19 2024-11-19
bdf MIR 2024-07-26 2024-07-01
bdf MIR1 2024-11-19 2024-11-19
bdf RPP 2024-11-19 2024-11-19
cgedd nombre-vente-maison-appartement-ancien 2024-09-26 2024-09-26
insee CONSTRUCTION-LOGEMENTS 2024-11-22 2024-11-21
insee ENQ-CONJ-ART-BAT 2024-11-22 2024-11-22
insee ENQ-CONJ-IND-BAT 2024-11-22 2024-11-22
insee ENQ-CONJ-PROMO-IMMO 2024-11-22 2024-11-22
insee ENQ-CONJ-TP 2024-11-22 2024-11-22
insee ILC-ILAT-ICC 2024-11-22 2024-11-22
insee INDICES_LOYERS 2024-11-22 2024-11-22
insee IPLA-IPLNA-2015 2024-11-22 2024-11-22
insee IRL 2024-11-22 2024-11-22
insee PARC-LOGEMENTS 2024-11-22 2023-12-03
insee SERIES_LOYERS 2024-11-22 2024-11-22
insee t_dpe_val 2024-11-22 2024-11-29
notaires arrdt 2024-06-30 2024-09-09
notaires dep 2024-06-30 2024-09-08

Data on housing

source dataset .html .RData
bdf RPP 2024-11-19 2024-11-19
bis LONG_PP 2024-08-09 2024-05-10
bis SELECTED_PP 2024-10-31 2024-10-31
ecb RPP 2024-10-08 2024-10-30
eurostat ei_hppi_q 2024-11-23 2024-11-23
eurostat hbs_str_t223 2024-11-23 2024-11-23
eurostat prc_hicp_midx 2024-11-01 2024-11-23
eurostat prc_hpi_q 2024-11-22 2024-10-09
fred housing 2024-11-22 2024-11-22
insee IPLA-IPLNA-2015 2024-11-22 2024-11-22
oecd housing 2024-09-15 2020-01-18
oecd SNA_TABLE5 2024-09-11 2023-10-19

LAST_COMPILE

LAST_COMPILE
2024-11-29

Last

date Nobs
2024-12-31 19
2024-11-30 5

BS_COUNT_SECTOR

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(BS_COUNT_SECTOR, by = "BS_COUNT_SECTOR") %>%
  group_by(BS_COUNT_SECTOR, Bs_count_sector) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
BS_COUNT_SECTOR Bs_count_sector Nobs
2240U6 SNF résidentes 7175
2250 Ménages et ISBLSM (S14 et S15) 6896
2250U6 Ménages et ISBLSM résidents 6840
2240 Sociétés non financières (S11) 4574
2230U6 Ménages et SNF résidents 3959
2254FR Particuliers (S14) 3955
2313FR SNF + EI (2240+2253) 3088
2254U6 Particuliers résidents 2892
2300U6 non IFM hors administration centrale résidents 1305
0000U6 Secteur de contrepartie non précisée (résidents) 1044
2312FR APU + ISBLSM (2100+2252) 994
2300 Administrations publiques hors administrations centrales et secteur privé hors IFMs 522
2251 Ménages 344
2253 Entrepreneurs individuels 187
2254P NA 176
MIC_U6 Micro-entreprises résidentes 138
2254PM NA 105
2240GE NA 97
224ETI NA 97
224PME NA 97

FREQ

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(FREQ, by = "FREQ") %>%
  group_by(FREQ, Freq) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
FREQ Freq Nobs
M Mensuel 33165
Q Trimestriel 11320

BS_ITEM

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(BS_ITEM, by = "BS_ITEM") %>%
  group_by(BS_ITEM, Bs_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

MATURITY_ORIG

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(MATURITY_ORIG, by = "MATURITY_ORIG") %>%
  group_by(MATURITY_ORIG, Maturity_orig) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

DATA_TYPE_MIR

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(DATA_TYPE_MIR, by = "DATA_TYPE_MIR") %>%
  group_by(DATA_TYPE_MIR, Data_type_mir) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
DATA_TYPE_MIR Data_type_mir Nobs
R Taux annuel 19296
B Transactions en volume (encours ou crédits nouveaux) 9163
C Coût du crédit 2836
Y Flux mensuels cumulés sur un an 2610
6 Taux cvs 2088
5 Flux mensuel cvs 1827
U Taux d'usure 1597
W Part dans les crédits totaux 1320
F Frais 1220
PNL Part en nombre de lignes 770
D Durée moyenne 507
4 Part dans les flux 275
T Taux théorique hors plancher 261
PTF Part taux fixe 165
K1 Premier quartile 110
K3 Troisième quartile 110
L Médiane 110
P5 Cinquième percentile 110
P95 Quatre vingt quinzième percentile 110

REF_AREA

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
REF_AREA Ref_area Nobs
FR France 43265
DE Allemagne 244
ES Espagne 244
GB Royaume-Uni 244
IT Italie 244
U2 Zone Euro (composition évolutive) 244

Taux de rémunération

Nobs

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  filter(grepl("Taux moyen de rémunération annuel", Variable)) %>%
  group_by(variable, Variable) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
variable Variable Nobs
MIR1.M.FR.B.L20.A.C.A.2300U6.EUR.O Taux moyen de rémunération annuel des dépôts bancaires 261
MIR1.M.FR.B.L20.A.R.A.2300U6.EUR.O Taux moyen de rémunération annuel des dépôts bancaires 261
MIR1.M.FR.B.L20.L.C.A.2300U6.EUR.O Taux moyen de rémunération annuel des dépôts, moins de 2 ans 261
MIR1.M.FR.B.L20.L.R.A.2300U6.EUR.O Taux moyen de rémunération annuel des dépôts, moins de 2 ans 261

Taux de rémunération des dépôts + immobilier

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.L20.A.C.A.2300U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L20.L.C.A.2300U6.EUR.O", variable)) %>%
  na.omit %>%
  left_join(MIR1_var, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.55, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, .1),
                labels = percent_format(accuracy = .1))

Taux

Nobs

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  filter(FREQ == "M",
         REF_AREA == "FR",
         BS_ITEM == "A22") %>%
  group_by(variable, Variable) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
variable Variable Nobs
MIR1.M.FR.B.A22.A.5.A.2250U6.EUR.N Crédits nouveaux à l'habitat des ménages, flux CVS 261
MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N Crédits nouveaux à l'habitat des particuliers, flux CVS 261
MIR1.M.FR.B.A22.A.R.A.2250U6.EUR.N Crédits nouveaux à l'habitat des ménages, taux d'intérêt annuel 261
MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N Crédits nouveaux à l'habitat des particuliers, taux d'intérêt annuel 310
MIR1.M.FR.B.A22.A.Y.A.2250U6.EUR.N Crédits nouveaux à l'habitat des ménages résidents, flux mensuels cumulés sur un an 261
MIR1.M.FR.B.A22.F.R.A.2250U6.EUR.N Crédits nouveaux à l'habitat des ménages, jusqu'à un an, taux d'intérêt annuel 261
MIR1.M.FR.B.A22.F.R.A.2254U6.EUR.N Crédits nouveaux à l'habitat des particuliers, jusqu'à un an, taux d'intérêt annuel 261
MIR1.M.FR.B.A22.F.Y.A.2250U6.EUR.N Crédits nouveaux à l'habitat des ménages résidents, jusqu'à un an, flux mensuels cumulés sur un an 261
MIR1.M.FR.B.A22.K.R.A.2250U6.EUR.N Crédits nouveaux à l'habitat des ménages, à plus d'un an, taux d'intérêt annuel 261
MIR1.M.FR.B.A22.K.R.A.2254U6.EUR.N Crédits nouveaux à l'habitat des particuliers, à plus d'un an, taux d'intérêt annuel 261
MIR1.M.FR.B.A22.K.Y.A.2250U6.EUR.N Crédits nouveaux à l'habitat des ménages résidents, à plus d'un an, flux mensuels cumulés sur un an 261

Livrets réglementés

-Info. html

Taux SNF

Table SNF

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  filter(BS_COUNT_SECTOR == "2240U6") %>%
  group_by(Variable) %>%
  summarise(Nobs = n(),
            date = last(date),
            value = last(value)) %>%
  print_table_conditional

Catégories montants

Tous

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A20.A.R.0.2240U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A20.A.R.1.2240U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A20.A.R.A.2240U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(AMOUNT_CAT, by = "AMOUNT_CAT") %>%
  arrange(desc(date)) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Amount_cat)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1))

2010-

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A20.A.R.0.2240U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A20.A.R.1.2240U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A20.A.R.A.2240U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(AMOUNT_CAT, by = "AMOUNT_CAT") %>%
  arrange(desc(date)) %>%
  filter(date >= as.Date("2010-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Amount_cat)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 0.5),
                labels = percent_format(accuracy = .1))

Catégories montants

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A20.A.R.0.2240U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A20.A.R.1.2240U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A20.A.R.A.2240U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  left_join(AMOUNT_CAT, by = "AMOUNT_CAT") %>%
  arrange(desc(date)) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Amount_cat)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.7, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1))

Livret A, Livret Jeune

Tous

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.L23FRLA.D.R.A.2230U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23RJ.A.R.A.2300.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23FRLJ.A.R.A.2250U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23FRLP.H.R.A.2250U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L22FRSP.H.R.A.2250U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  arrange(desc(date)) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.17),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux de rémunération annuel (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1))

2000-

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.L23FRLA.D.R.A.2230U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23RJ.A.R.A.2300.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23FRLJ.A.R.A.2250U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23FRLP.H.R.A.2250U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L22FRSP.H.R.A.2250U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  arrange(desc(date)) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux de rémunération annuel (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1))

2010-

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.L23FRLA.D.R.A.2230U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23RJ.A.R.A.2300.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23FRLJ.A.R.A.2250U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23FRLP.H.R.A.2250U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L22FRSP.H.R.A.2250U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  arrange(desc(date)) %>%
  filter(date >= as.Date("2010-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.8),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux de rémunération annuel (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 0.5),
                labels = percent_format(accuracy = .1))

2018-

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.L23FRLA.D.R.A.2230U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23RJ.A.R.A.2300.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23FRLJ.A.R.A.2250U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L23FRLP.H.R.A.2250U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.L22FRSP.H.R.A.2250U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  arrange(desc(date)) %>%
  filter(date >= as.Date("2018-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.8),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux de rémunération annuel (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 0.5),
                labels = percent_format(accuracy = .1))

Taux crédits habitat

Tous

Code
MIR1 %>%
  left_join(MIR1_var, by = "variable") %>%
  filter(FREQ == "M",
         REF_AREA == "FR",
         BS_REP_SECTOR == "B",
         BS_ITEM == "A2C",
         DATA_TYPE_MIR == "R",
         AMOUNT_CAT == "A",
         BS_COUNT_SECTOR == "2250U6",
         CURRENCY_TRANS == "EUR",
         IR_BUS_COV == "N") %>%
  left_join(MATURITY_ORIG, by = "MATURITY_ORIG") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Maturity_orig)) +
  
  theme_minimal() + xlab("") + ylab("Taux d'intérêt (%)") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.15),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1))

Tous

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A22.K.R.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A22.F.R.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.15),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1))

2016-

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A22.K.R.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A22.F.R.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  filter(date >= as.Date("2016-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, .1),
                labels = percent_format(accuracy = .1))

2018-

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A22.K.R.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A22.F.R.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  filter(date >= as.Date("2018-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, .1),
                labels = percent_format(accuracy = .1))

Taux de rémunération des dépôts + immobilier

Tous

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.A.N30.A.R.A.2230U6.EUR.O", variable) |
           grepl("MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.L21.A.R.A.2230U6.EUR.O", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.55, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1),
                limits = c(0, 0.07))

Part des renégociations

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A22PR.A.W.A.2254FR.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/100)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.15),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Part des renégo dans le total des crédits à l'habitat (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 5),
                labels = percent_format(accuracy = 1))

Volumes de crédit

Crédits à la consommation

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A2Z.A.R.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A2B.A.R.A.2254U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1),
                limits = c(0.03, 0.15))

Crédits nouveaux à l’habitat

Tous

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A22HR.A.5.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(0, 100, 2))

2015-

Code
MIR1 %>%
  filter(grepl("MIR1.M.FR.B.A22HR.A.5.A.2254U6.EUR.N", variable) |
           grepl("MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  filter(date >= as.Date("2015-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(0, 100, 2))

Taux d’usure

2017-

Code
MIR1 %>%
  filter(grepl("MIR1.Q.FR.R.A22FRF.Q.U.A.2254FR.EUR.N", variable) |
           grepl("MIR1.Q.FR.R.A22FRF.R.U.A.2254FR.EUR.N", variable) |
           grepl("MIR1.Q.FR.R.A22FRF.S.U.A.2254FR.EUR.N", variable)) %>%
  left_join(MIR1_var, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Taux d'intérêt (%)") +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 0.1),
                labels = percent_format(accuracy = .1))