Last observation: 2026-07-21 (N = 1)
First observation: 1993-04-30 (N = 2)
Last data update: 01 août 2026, 21:35. Last compile: 30 août 2026, 10:27
Data - Banque de France
Last observation: 2026-07-21 (N = 1)
First observation: 1993-04-30 (N = 2)
Last data update: 01 août 2026, 21:35. Last compile: 30 août 2026, 10:27
immobilier |>
left_join(variable, by = "variable") |>
group_by(variable, Variable) |>
summarise(Nobs = n(),
max_date = max(date),
min_date = min(date)) |>
arrange(desc(max_date)) |>
print_table_conditional()| variable | Variable | Nobs | max_date | min_date |
|---|---|---|---|---|
| FM.D.U2.EUR.4F.KR.DFR.LEV | BCE - Facilité de dépôt (données brutes) | 10064 | 2026-07-21 | 1999-01-01 |
| BSI1.M.FR.N.R.A220Z.A.1.U6.2254FR.Z01.E | Crédits à l'habitat accordés aux particuliers résidents, encours | 398 | 2026-05-31 | 1993-04-30 |
| BSI1.M.FR.N.R.A26.A.1.U6.2254FR.Z01.E | Crédits accordés aux particuliers résidents, encours | 398 | 2026-05-31 | 1993-04-30 |
| BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.E | Crédits à l'habitat accordés aux particuliers résidents, flux mensuels, CVS | 398 | 2026-05-31 | 1993-04-30 |
| BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F | Crédits à l'habitat accordés aux particuliers résidents, variation d'encours (moyenne sur 3 mois glissants), CVS | 398 | 2026-05-31 | 1993-04-30 |
| MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N | Crédits nouveaux à l'habitat des particuliers, flux CVS | 281 | 2026-05-31 | 2003-01-31 |
| MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N | Crédits nouveaux à l'habitat des particuliers, taux d'intérêt annuel | 330 | 2026-05-31 | 1998-12-31 |
| MIR1.M.FR.B.A22HR.A.5.A.2254U6.EUR.N | Crédits nouveaux à l'habitat (hors renégociations) aux particuliers résidents, flux, CVS | 281 | 2026-05-31 | 2003-01-31 |
| FM.M.U2.EUR.4F.KR.DF.LEV | BCE - Facilité de dépôt - niveau fin de mois yc mois en cours | 290 | 2023-02-28 | 1999-01-31 |
| FM.M.U2.EUR.4F.KR.MLF.LEV | BCE - Facilité de prêt marginal - niveau fin de mois yc mois en cours | 290 | 2023-02-28 | 1999-01-31 |
| FM.M.U2.EUR.4F.KR.MRR_FR.LEV | BCE - Principales opérations de refinancement (taux fixe) | 290 | 2023-02-28 | 1999-01-31 |
immobilier |>
filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") |>
left_join(variable, by = "variable") |>
ggplot() + geom_line(aes(x = date, y = value/100, color = Variable)) +
theme_minimal() + xlab("") + ylab("Interest rate (%)") +
theme(legend.position = c(0.32, 0.1),
legend.title = element_blank()) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
labels = percent_format(accuracy = 1))
immobilier |>
filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") |>
left_join(variable, by = "variable") |>
ggplot() + geom_line(aes(x = date, y = value/100, color = Variable)) +
theme_minimal() + xlab("") + ylab("Interest rate (%)") +
theme(legend.position = c(0.32, 0.1),
legend.title = element_blank()) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 0.5),
labels = percent_format(accuracy = .1))
immobilier |>
filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") |>
left_join(variable, by = "variable") |>
filter(date >= as.Date("2020-01-01")) |>
ggplot() + geom_line(aes(x = date, y = value/100, color = Variable)) +
theme_minimal() + xlab("") + ylab("Interest rate (%)") +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_x_date(breaks = "3 months",
labels = date_format("%b %Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, .25),
labels = percent_format(accuracy = .01))
immobilier |>
filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") |>
left_join(variable, by = "variable") |>
filter(date >= as.Date("2021-01-01")) |>
ggplot() + geom_line(aes(x = date, y = value/100, color = Variable)) +
#scale_color_manual(values = viridis(3)[1:2]) +
theme_minimal() + xlab("") + ylab("Interest rate (%)") +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_x_date(breaks = "2 months",
labels = date_format("%b %Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, .25),
labels = percent_format(accuracy = .01))
immobilier |>
filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") |>
left_join(variable, by = "variable") |>
filter(date >= as.Date("2022-01-01")) |>
ggplot() + geom_line(aes(x = date, y = value/100, color = Variable)) +
#scale_color_manual(values = viridis(3)[1:2]) +
theme_minimal() + xlab("") + ylab("Interest rate (%)") +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, .25),
labels = percent_format(accuracy = .01))
immobilier |>
filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
variable == "FM.M.U2.EUR.4F.KR.MRR_FR.LEV" |
variable == "FM.M.U2.EUR.4F.KR.MLF.LEV" |
variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") |>
left_join(variable, by = "variable") |>
ggplot() + geom_line(aes(x = date, y = value/100, color = Variable, linetype = Variable)) +
scale_color_manual(values = c(viridis(3)[1], viridis(3)[1], viridis(3)[1], viridis(3)[2])) +
scale_linetype_manual(values = c("dashed", "longdash", "solid", "solid")) +
theme_minimal() + xlab("") + ylab("Interest rate (%)") +
theme(legend.position = c(0.32, 0.13),
legend.title = element_blank(),
legend.spacing.x = unit(0.2, 'cm'),
legend.spacing.y = unit(0.2, 'cm')) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
labels = percent_format(accuracy = 1),
limits = c(-0.02, 0.065))
plot_linear <- immobilier |>
filter(variable == "BSI1.M.FR.N.R.A26.A.1.U6.2254FR.Z01.E" |
variable == "BSI1.M.FR.N.R.A220Z.A.1.U6.2254FR.Z01.E") |>
left_join(variable, by = "variable") |>
ggplot() + theme_minimal() + xlab("") + ylab("") +
geom_line(aes(x = date, y = value / 1000, color = Variable)) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.4, 0.9),
legend.title = element_blank(),
legend.direction = "vertical") +
scale_y_continuous(breaks = seq(-10000, 10000, 100),
labels = dollar_format(suffix = " Mds€", prefix = "", accuracy = 1))
plot_linear
plot_log <- plot_linear +
scale_y_log10(breaks = seq(-10000, 10000, 100),
labels = dollar_format(suffix = " Mds€", prefix = "", accuracy = 1))
plot_log
library("ggpubr")
ggarrange(plot_linear + ggtitle("Linear"), plot_log + ggtitle("Log"), common.legend = T, legend = "bottom")
immobilier |>
filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.E") |>
na.omit() |>
ggplot() + geom_line(aes(x = date, y = value)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-10000, 10000, 1000))
immobilier |>
filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.E",
date >= as.Date("1999-12-31")) |>
na.omit() |>
ggplot() + geom_line(aes(x = date, y = value)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-10000, 10000, 1000))
immobilier |>
filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F") |>
na.omit() |>
ggplot() + geom_line(aes(x = date, y = value)) +
theme_minimal() + xlab("") + ylab("Housing loans granted to resident households\n change in outstanding amounts (3-month rolling average)") +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-10000, 10000, 1000),
labels = dollar_format(acc = 1, pre = ""))
immobilier |>
filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F") |>
na.omit() |>
ggplot() + geom_line(aes(x = date, y = value/1000)) +
theme_minimal() + xlab("") + ylab("Housing loans granted to resident households\n change in outstanding amounts (3-month rolling average)") +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-10000, 10000, 1000)/1000,
labels = dollar_format(acc = 1, pre = "", su = " Mds€"))
immobilier |>
filter(date >= Sys.Date() - months(18)) |>
filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F") |>
na.omit() |>
ggplot() + geom_line(aes(x = date, y = value)) +
theme_minimal() + xlab("") + ylab("") +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
scale_y_continuous(breaks = seq(-10000, 10000, 1000),
labels = dollar_format(acc = 1, pre = ""))
immobilier |>
filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F" |
variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.E") |>
left_join(variable, by = "variable") |>
ggplot() + geom_line(aes(x = date, y = value, color = Variable)) +
theme_minimal() + xlab("") + ylab("") +
theme(legend.position = c(0.5, 0.9),
legend.title = element_blank()) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-10000, 10000, 1000))
immobilier |>
filter(variable == "MIR1.M.FR.B.A22HR.A.5.A.2254U6.EUR.N" |
variable == "MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N") |>
left_join(variable, by = "variable") |>
ggplot() + geom_line(aes(x = date, y = value, color = Variable)) +
theme_minimal() + xlab("") + ylab("") +
theme(legend.position = c(0.4, 0.9),
legend.title = element_blank()) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-100, 100, 5))
immobilier |>
filter(variable == "MIR1.M.FR.B.A22HR.A.5.A.2254U6.EUR.N" |
variable == "MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N") |>
left_join(variable, by = "variable") |>
group_by(date) |>
filter(n() == 2) |>
ggplot() + geom_line(aes(x = date, y = value, color = Variable)) +
theme_minimal() + xlab("") + ylab("") +
theme(legend.position = c(0.4, 0.9),
legend.title = element_blank()) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-100, 100, 5))
| source | dataset | Title | Updated |
|---|---|---|---|
acpr |
as151 | Enquête annuelle du SGACPR sur le financement de l'habitat 2022 - as151 | 2026-08-01 |
acpr |
as160 | Enquête annuelle du SGACPR sur le financement de l'habitat 2023 - as160 | 2026-08-01 |
acpr |
as174 | Enquête annuelle du SGACPR sur le financement de l'habitat 2024 - as174 | 2026-08-01 |
bdf |
BSI1 | Agrégats monétaires - France - BSI1 | 2026-08-28 |
bdf |
CPP | Prix immobilier commercial - CPP | 2026-08-10 |
bdf |
FM | Marché financier, taux - FM | 2026-08-15 |
bdf |
MIR | Taux d'intérêt - Zone euro - MIR | 2026-08-28 |
bdf |
MIR1 | Taux d'intérêt - France - MIR1 | 2026-08-28 |
bdf |
RPP | Prix de l'immobilier - RPP | 2026-08-28 |
bdf |
immobilier | Immobilier en France - immobilier | 2026-08-01 |
cgedd |
nombre-vente-maison-appartement-ancien | Nombre de ventes de logements anciens cumulé sur 12 mois - nombre-vente-maison-appartement-ancien | 2026-08-01 |
insee |
CONSTRUCTION-LOGEMENTS | Construction de logements - CONSTRUCTION-LOGEMENTS | 2026-08-28 |
insee |
ENQ-CONJ-ART-BAT | Conjoncture dans l'artisanat du bâtiment - ENQ-CONJ-ART-BAT | 2026-08-28 |
insee |
ENQ-CONJ-IND-BAT | Conjoncture dans l'industrie du bâtiment - ENQ-CONJ-IND-BAT | 2026-08-28 |
insee |
ENQ-CONJ-PROMO-IMMO | Conjoncture dans la promotion immobilière - ENQ-CONJ-PROMO-IMMO | 2026-08-28 |
insee |
ENQ-CONJ-TP | Conjoncture dans les travaux publics - ENQ-CONJ-TP | 2026-08-28 |
insee |
ILC-ILAT-ICC | Indices pour la révision d’un bail commercial ou professionnel - ILC-ILAT-ICC | 2026-08-28 |
insee |
INDICES_LOYERS | Indices des loyers d'habitation (ILH) - INDICES_LOYERS | 2026-08-28 |
insee |
IPLA-IPLNA-2015 | Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens - IPLA-IPLNA-2015 | 2026-08-28 |
insee |
IRL | Indice pour la révision d’un loyer d’habitation - IRL | 2026-08-28 |
insee |
PARC-LOGEMENTS | Estimations annuelles du parc de logements (EAPL) - PARC-LOGEMENTS | 2026-08-13 |
insee |
SERIES_LOYERS | Variation des loyers - SERIES_LOYERS | 2026-08-28 |
insee |
t_dpe_val | Dépenses de consommation des ménages pré-engagées - t_dpe_val | 2026-08-29 |
notaires |
arrdt | Prix au m^2 par arrondissement - arrdt | 2026-08-28 |
notaires |
dep | Prix au m^2 par département - dep | 2026-08-28 |
olap |
loyers | Loyers - loyers | 2026-08-01 |
| source | dataset | Title | Updated |
|---|---|---|---|
bdf |
RPP | Prix de l'immobilier - RPP | 2026-08-28 |
bis |
LONG_PP | Residential property prices - detailed series - LONG_PP | 2026-07-25 |
bis |
SELECTED_PP | Property prices, selected series - SELECTED_PP | 2026-08-28 |
ecb |
RPP | Residential Property Price Index Statistics - RPP | 2026-08-28 |
eurostat |
ei_hppi_q | House price index (2015 = 100) - quarterly data - ei_hppi_q | 2026-07-15 |
eurostat |
hbs_str_t223 | Mean consumption expenditure by income quintile - hbs_str_t223 | 2026-07-15 |
eurostat |
prc_hicp_midx | HICP (2015 = 100) - monthly data (index) - prc_hicp_midx | 2026-08-07 |
eurostat |
prc_hpi_q | House price index (2015 = 100) - quarterly data - prc_hpi_q | 2026-07-14 |
fred |
housing | House Prices - housing | 2026-08-28 |
insee |
IPLA-IPLNA-2015 | Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens - IPLA-IPLNA-2015 | 2026-08-28 |
oecd |
SNA_TABLE5 | Final consumption expenditure of households - SNA_TABLE5 | 2026-08-02 |
oecd |
housing | NA | NA |
| LAST_COMPILE |
|---|
| 2026-08-30 |
immobilier |>
group_by(date) |>
summarise(Nobs = n()) |>
arrange(desc(date)) |>
head(2) |>
print_table_conditional()| date | Nobs |
|---|---|
| 2026-07-21 | 1 |
| 2026-07-20 | 1 |