Enquête annuelle du SGACPR sur le financement de l’habitat 2024

Data - ACPR

Info

source dataset Title .html .rData
acpr as174 Enquête annuelle du SGACPR sur le financement de l'habitat 2024 2025-09-29 2025-09-29
acpr as160 Enquête annuelle du SGACPR sur le financement de l'habitat 2023 2025-08-24 2024-09-26

Données sur l’immobilier

Code
load_data("immobilier.RData")
immobilier %>%
  source_dataset_file_updates()
source dataset Title .html .rData
acpr as151 Enquête annuelle du SGACPR sur le financement de l'habitat 2022 2025-08-24 2024-04-05
bdf BSI1 Agrégats monétaires - France 2025-08-28 2025-08-24
bdf CPP Prix immobilier commercial 2025-08-28 2024-07-01
bdf FM Marché financier, taux 2025-08-28 2025-08-28
bdf MIR Taux d'intérêt - Zone euro 2025-08-28 2025-08-04
bdf MIR1 Taux d'intérêt - France 2025-08-28 2025-08-04
bdf RPP Prix de l'immobilier 2025-08-28 2025-08-24
bdf immobilier Immobilier en France 2025-08-28 2025-08-28
cgedd nombre-vente-maison-appartement-ancien Nombre de ventes de logements anciens cumulé sur 12 mois 2024-09-26 2024-09-26
insee CONSTRUCTION-LOGEMENTS Construction de logements 2025-09-26 2025-09-26
insee ENQ-CONJ-ART-BAT Conjoncture dans l'artisanat du bâtiment 2025-09-26 2025-09-26
insee ENQ-CONJ-IND-BAT Conjoncture dans l'industrie du bâtiment - ENQ-CONJ-IND-BAT 2025-09-26 2025-09-26
insee ENQ-CONJ-PROMO-IMMO Conjoncture dans la promotion immobilière 2025-09-26 2025-09-26
insee ENQ-CONJ-TP Conjoncture dans les travaux publics 2025-09-26 2025-09-26
insee ILC-ILAT-ICC Indices pour la révision d’un bail commercial ou professionnel 2025-09-26 2025-09-26
insee INDICES_LOYERS Indices des loyers - Base 2019 2025-09-26 2025-09-26
insee IPLA-IPLNA-2015 Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens 2025-09-26 2025-09-26
insee IRL Indice pour la révision d’un loyer d’habitation 2025-09-26 2025-09-26
insee PARC-LOGEMENTS Estimations annuelles du parc de logements (EAPL) 2025-09-26 2023-12-03
insee SERIES_LOYERS Variation des loyers 2025-09-26 2025-09-26
insee t_dpe_val Dépenses de consommation des ménages pré-engagées 2025-09-26 2025-08-29
notaires arrdt Prix au m^2 par arrondissement - arrdt 2025-03-27 2025-03-27
notaires dep Prix au m^2 par département 2025-03-27 2025-03-27

Liens

  • Enquête sur le financement de l’habitat 2023, 24 juil. 2023. html / xlsx / pdf

Production

Code
ig_b("acpr", "ACPR_production_2022")

Encours

Code
ig_b("acpr", "ACPR_encours_2022")

variable

Code
as174 %>%
  group_by(Variable, Line) %>%
  summarise(Nobs = n()) %>%
  arrange(Line) %>%
  print_table_conditional()

date

Code
as174 %>%
  group_by(date) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(date)) %>%
  print_table_conditional()
date Nobs
2024-12-31 76
2023-12-31 76
2022-12-31 76
2021-12-31 76
2020-12-31 76
2019-12-31 76
2018-12-31 76
2017-12-31 76
2016-12-31 76
2015-12-31 76
2014-12-31 76
2013-12-31 76
2012-12-31 76
2011-12-31 76
2010-12-31 76
2009-12-31 68
2008-12-31 68
2007-12-31 68
2006-12-31 68
2005-12-31 68
2004-12-31 68
2003-12-31 68
2002-12-31 68
2001-12-31 68

Tables

2001, 2010, 2016, 2022

Code
as174 %>%
  mutate(year = year(date)) %>%
  select(-date) %>%
  filter(year %in% c("2001", "2010", "2016", "2022")) %>%
  spread(year, value) %>%
  print_table_conditional()

2023

Code
as174 %>%
  mutate(year = year(date)) %>%
  select(-date) %>%
  filter(year %in% c("2022")) %>%
  spread(year, value) %>%
  print_table_conditional()

Données relatives à la production (lignes 2 à 42)

Production de prêts à l’habitat en Mds€, montant du prêt moyen (K€)

Code
as174 %>%
  filter(Line %in% c(7, 12)) %>%
  filter(value >0) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 1000*seq(0, 500, 20),
                     labels = dollar_format(acc = 1, pre = "")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank())

Production de prêts, type

Code
as174 %>%
  filter(Line %in% 8:10) %>%
  filter(value >0) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank())

Montant du pret moyen

Code
as174 %>%
  
  filter(Line %in% 14:18) %>%
  filter(value >0) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 1000*seq(0, 500, 20),
                     labels = dollar_format(acc = 1, pre = "", su = "€")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank())

Durée moyenne des prêts

Code
as174 %>%
  
  filter(Line == 31) %>%
  ggplot + geom_line(aes(x = date, y = value)) +
  xlab("") + ylab("Durée moyenne des prêts") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 100, 1),
                     labels = dollar_format(a = 1, su = " ans", pre = ""))

Taux variables vs fixes

Code
as174 %>%
  
  filter(Line %in% c(24, 28)) %>%
  filter(value >0) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.8, 0.6),
        legend.title = element_blank())

Taux d’endettement moyen des emprunteurs à l’octroi

Code
as174 %>%
  
  filter(Line == 47) %>%
  filter(value >0) %>%
  ggplot + geom_line(aes(x = date, y = value)) +
  
  xlab("") + ylab("Taux d'endettement moyen des emprunteurs à l'octroi") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 100, .2),
                     labels = dollar_format(a = .1, su = " ans", pre = ""))

Taux d’apport - Evolution

LTV moyenne à l’octroi

Code
as174 %>%
  
  filter(Line == 41) %>%
  ggplot + geom_line(aes(x = date, y = value)) +
  xlab("") + ylab("Taux d'effort moyen (%)") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                     labels = percent_format(a = 1))

Tranches

Classique

Code
as174 %>%
  
  filter(Line %in% 42:45) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Taux d'apport (%)") +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.9),
        legend.title = element_blank())

Joli

Code
as174 %>%
  
  filter(Line %in% 42:45) %>%
  ggplot + geom_line(aes(x = date, y = value, color = paste0(Line))) +
  annotate("text", x = as.Date("2006-12-31"), y = 0.55, label= "Apport > 15% ", color = viridis(5)[1]) + 
  annotate("text", x = as.Date("2016-12-31"), y = 0.17, label= "5% < Apport < 15%", color = viridis(5)[2]) + 
  annotate("text", x = as.Date("2015-12-31"), y = 0.27, label= "0% < Apport < 5%", color = viridis(5)[3]) + 
  annotate("text", x = as.Date("2017-12-31"), y = 0.08, label= "Apport < 0% ", color = viridis(5)[4]) + 
  theme_minimal() + xlab("") + ylab("Part des emprunteurs (%)") +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = "none")

Taux d’effort

Taux d’effort moyen

Code
as174 %>%
  
  filter(Line == 34) %>%
  ggplot + geom_line(aes(x = date, y = value)) +
  
  xlab("") + ylab("Taux d'effort moyen (%)") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                     labels = percent_format(a = 1))

Tranches

Code
as174 %>%
  
  filter(Line %in% c(35:38)) %>%
  mutate(Variable = factor(Variable, 
                           levels=c("Taux d'effort < 20%",
                                    "20% < Taux d'effort < 30%",
                                    "30% < Taux d'effort ≤ 35%",
                                    "Taux d'effort > 35%"))) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Part des emprunteurs (%)") +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank())

Tranches

Code
as174 %>%
  
  filter(Line %in% c(35:38)) %>%
  mutate(Variable = factor(Variable, 
                           levels=c("Taux d'effort < 20%",
                                    "20% < Taux d'effort < 30%",
                                    "30% < Taux d'effort ≤ 35%",
                                    "Taux d'effort > 35%"))) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Part des emprunteurs (%)") +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank())

Données relatives à la production (lignes 44 à 110)

Poids des douteux dans l’encours

Taux variables vs fixes

Code
as174 %>%
  
  filter(Line %in% c(96, 97, 88)) %>%
  filter(value >0) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  xlab("") + ylab("") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())

Production vs encours

Durée moyenne des prêts VS résiduelle moyenne

Code
as174 %>%
  
  filter(date >= as.Date("2010-01-01")) %>%
  filter(Line %in% c(31, 69)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  xlab("") + ylab("Durée moyenne des prêts, maturité résiduelle") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 100, 1),
                     labels = dollar_format(a = 1, su = " ans", pre = "")) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

LTV

Code
as174 %>%
  
  filter(date >= as.Date("2010-01-01")) %>%
  filter(Line %in% c(41,67)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  xlab("") + ylab("LTV") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                     labels = percent_format(a = 1)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())

Prêts taux fixes

Code
as174 %>%
  
  filter(date >= as.Date("2010-01-01")) %>%
  filter(Line %in% c(28,64)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  xlab("") + ylab("Prêts à taux fixe (encours), produits à taux fixe (production)") + theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                     labels = percent_format(a = 1)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank())