Last data update: 01 Oct 2026, 22:17
Last compile: 01 Oct 2026, 22:20
Les remboursements de capital se déduisent de l’identité de stock :
\[\text{Remboursements}_t = \text{Production}_t - \Delta\text{Encours}_t\]
BSI1.M.FR.N.A.A22.A.4.U6.2251.Z01.E).Limites : la variation d’encours est nette de titrisation et d’amortissements comptables, et le solde production − Δ encours contient donc aussi les remboursements anticipés. Rembourser du capital est de l’épargne, pas une perte de richesse : l’indicateur mesure le revenu arbitrable.
remboursements_credit_habitat |>
filter(!is.na(ratio_brut)) |>
select(date, `(A) Production brute` = ratio_brut, `(B) Production hors refinancements` = ratio_hors_refi) |>
pivot_longer(-date) |>
ggplot(aes(x = date, y = value, color = name)) + geom_line() +
theme_minimal() + xlab("") + ylab("Remboursements de capital / RDB (cumul 4 trimestres)") +
scale_color_manual(values = viridis(3)[1:2]) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
theme(legend.title = element_blank(), legend.position = "bottom")
remboursements_credit_habitat |>
filter(!is.na(rdb_4t)) |>
transmute(date,
`Revenu disponible brut` = rdb_4t,
`RDB − remboursements (A, brute)` = rdb_4t - rembt_brut_4t,
`RDB − remboursements (B, hors refinancements)` = rdb_4t - rembt_hors_refi_4t) |>
pivot_longer(-date) |>
ggplot(aes(x = date, y = value / 1000, color = name)) + geom_line() +
theme_minimal() + xlab("") + ylab("Milliards d'euros (cumul 4 trimestres)") +
scale_color_manual(values = viridis(4)[1:3]) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
scale_y_continuous(labels = label_number(big.mark = " ")) +
theme(legend.title = element_blank(), legend.position = "bottom")
remboursements_credit_habitat |>
filter(!is.na(rdb_4t)) |>
transmute(date,
`Revenu disponible brut` = rdb_4t,
`RDB − remboursements (B, hors refinancements)` = rdb_4t - rembt_hors_refi_4t) |>
pivot_longer(-date) |>
group_by(name) |>
mutate(ga = value / lag(value, 4) - 1) |>
filter(!is.na(ga)) |>
ggplot(aes(x = date, y = ga, color = name)) + geom_line() +
theme_minimal() + xlab("") + ylab("Glissement annuel (%)") +
scale_color_manual(values = viridis(3)[1:2]) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
theme(legend.title = element_blank(), legend.position = "bottom")
remboursements_credit_habitat |>
filter(!is.na(rdb_4t)) |>
transmute(date,
`Production brute` = prod_brute_4t,
`Production hors refinancements` = prod_hors_refi_4t,
`Variation d'encours` = variation_encours_4t,
`Remboursements (A)` = rembt_brut_4t,
`Remboursements (B)` = rembt_hors_refi_4t) |>
pivot_longer(-date) |>
ggplot(aes(x = date, y = value / 1000, color = name)) + geom_line() +
theme_minimal() + xlab("") + ylab("Milliards d'euros (cumul 4 trimestres)") +
scale_color_manual(values = viridis(6)[1:5]) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
theme(legend.title = element_blank(), legend.position = "bottom")
remboursements_credit_habitat |>
filter(!is.na(taux_amortissement_brut)) |>
select(date, `(A) Production brute` = taux_amortissement_brut,
`(B) Production hors refinancements` = taux_amortissement_hors_refi) |>
pivot_longer(-date) |>
ggplot(aes(x = date, y = value, color = name)) + geom_line() +
theme_minimal() + xlab("") + ylab("Remboursements 4T / encours il y a un an") +
scale_color_manual(values = viridis(3)[1:2]) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
theme(legend.title = element_blank(), legend.position = "bottom")
remboursements_credit_habitat |>
arrange(desc(date)) |>
select(date, rdb, prod_brute, prod_hors_refi, variation_encours, rembt_brut, rembt_hors_refi,
ratio_brut, ratio_hors_refi) |>
mutate(across(c(ratio_brut, ratio_hors_refi), ~ round(100 * .x, 1)),
across(c(rdb, prod_brute, prod_hors_refi, variation_encours, rembt_brut, rembt_hors_refi), round)) |>
print_table_conditional()