| source | dataset | .html | .RData |
|---|---|---|---|
| acpr | credithab_statistiques_mensuelles | 2025-08-24 | 2024-04-05 |
Statistiques sur la production mensuelle de crédit à l’habitat
Data - ACPR
Info
Données sur l’immobilier
Code
load_data("immobilier.RData")
immobilier %>%
source_dataset_file_updates()| source | dataset | .html | .RData |
|---|---|---|---|
| acpr | as151 | 2025-08-24 | 2024-04-05 |
| bdf | BSI1 | 2025-08-24 | 2025-08-24 |
| bdf | CPP | 2025-08-24 | 2024-07-01 |
| bdf | FM | 2025-08-10 | 2025-08-24 |
| bdf | immobilier | 2025-08-24 | 2025-08-24 |
| bdf | MIR | 2025-08-10 | 2025-08-04 |
| bdf | MIR1 | 2025-08-10 | 2025-08-04 |
| bdf | RPP | 2025-08-24 | 2025-08-24 |
| cgedd | nombre-vente-maison-appartement-ancien | 2024-09-26 | 2024-09-26 |
| insee | CONSTRUCTION-LOGEMENTS | 2025-08-02 | 2025-08-24 |
| insee | ENQ-CONJ-ART-BAT | 2025-08-02 | 2025-08-24 |
| insee | ENQ-CONJ-IND-BAT | 2025-05-18 | 2025-08-24 |
| insee | ENQ-CONJ-PROMO-IMMO | 2025-08-02 | 2025-08-24 |
| insee | ENQ-CONJ-TP | 2025-08-02 | 2025-08-24 |
| insee | ILC-ILAT-ICC | 2025-08-02 | 2025-08-24 |
| insee | INDICES_LOYERS | 2025-08-02 | 2025-08-24 |
| insee | IPLA-IPLNA-2015 | 2025-08-02 | 2025-08-24 |
| insee | IRL | 2025-08-02 | 2025-08-24 |
| insee | PARC-LOGEMENTS | 2025-08-02 | 2023-12-03 |
| insee | SERIES_LOYERS | 2025-08-02 | 2025-08-24 |
| insee | t_dpe_val | 2025-08-02 | 2025-05-28 |
| notaires | arrdt | 2025-03-27 | 2025-03-27 |
| notaires | dep | 2025-03-27 | 2025-03-27 |
Liens
variable
Code
credithab_statistiques_mensuelles %>%
group_by(Variable, Line) %>%
summarise(Nobs = n()) %>%
arrange(Line) %>%
print_table_conditional()year
Code
credithab_statistiques_mensuelles %>%
group_by(date) %>%
summarise(Nobs = n()) %>%
arrange(desc(date)) %>%
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
as151 %>%
filter(Line %in% c(2, 7)) %>%
filter(value >0) %>%
ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 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
as151 %>%
filter(Line %in% 3:5) %>%
filter(value >0) %>%
ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 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
as151 %>%
filter(Line %in% 9:13) %>%
filter(value >0) %>%
ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 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
as151 %>%
filter(Line == 26) %>%
ggplot + geom_line(aes(x = date, y = value)) +
xlab("") + ylab("Durée moyenne des prêts") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 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
as151 %>%
filter(Line %in% c(19, 23)) %>%
filter(value >0) %>%
ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 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
as151 %>%
filter(Line == 42) %>%
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, 2025, 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
as151 %>%
filter(Line == 36) %>%
ggplot + geom_line(aes(x = date, y = value)) +
xlab("") + ylab("Taux d'effort moyen (%)") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 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
as151 %>%
filter(Line %in% 37:40) %>%
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, 2025, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.8, 0.9),
legend.title = element_blank())
Nouvelle
Code
as151 %>%
filter(Line %in% 37:40) %>%
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, 2025, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = "none")
Taux d’effort
Taux d’effort moyen
Code
credithab_statistiques_mensuelles %>%
filter(Line == 120) %>%
ggplot + geom_line(aes(x = date, y = value)) +
xlab("") + ylab("Taux d'effort moyen (%)") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(0, 100, .5),
labels = percent_format(a = .1))
Tranches
Code
as151 %>%
filter(Line %in% c(30:33)) %>%
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, 2025, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.5, 0.9),
legend.title = element_blank())
Tranches
Code
as151 %>%
filter(Line %in% c(30:33)) %>%
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, 2025, 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
as151 %>%
filter(Line %in% c(91, 92, 83)) %>%
filter(value >0) %>%
ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 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
as151 %>%
filter(date >= as.Date("2010-01-01")) %>%
filter(Line %in% c(26,64)) %>%
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, 2025, 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
as151 %>%
filter(date >= as.Date("2010-01-01")) %>%
filter(Line %in% c(36,62)) %>%
ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
xlab("") + ylab("LTV") + theme_minimal() +
scale_x_date(breaks = seq(1920, 2025, 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
as151 %>%
filter(date >= as.Date("2010-01-01")) %>%
filter(Line %in% c(23,59)) %>%
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, 2025, 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())