Immobilier en France

Data - BDF

Info

source dataset .html .RData

bdf

immobilier

2024-07-03 2024-06-18

Données sur l’immobilier

source dataset .html .RData

acpr

as151

2024-06-19 2024-04-05

bdf

BSI1

2024-07-26 2024-06-14

bdf

CPP

2024-07-26 2024-07-01

bdf

FM

2024-07-26 2024-06-18

bdf

immobilier

2024-07-03 2024-06-18

bdf

MIR

2024-07-03 2024-07-01

bdf

MIR1

2024-07-03 2024-07-01

bdf

RPP

2024-07-03 2024-07-01

insee

CONSTRUCTION-LOGEMENTS

2024-07-03 2024-07-03

insee

ENQ-CONJ-ART-BAT

2024-07-03 2024-07-02

insee

ENQ-CONJ-IND-BAT

2024-07-03 2024-07-02

insee

ENQ-CONJ-PROMO-IMMO

2024-07-03 2024-07-02

insee

ENQ-CONJ-TP

2024-07-03 2024-07-02

insee

ILC-ILAT-ICC

2024-07-03 2024-07-02

insee

INDICES_LOYERS

2024-07-03 2024-07-02

insee

IPLA-IPLNA-2015

2024-07-03 2024-07-03

insee

IRL

2024-07-04 2024-07-03

insee

PARC-LOGEMENTS

2024-07-04 2023-12-03

insee

SERIES_LOYERS

2024-07-04 2024-07-03

insee

t_dpe_val

2024-07-04 2024-07-01

notaires

arrdt

2024-06-30 2024-07-23

notaires

dep

2024-06-30 2024-07-23

Data on housing

source dataset .html .RData

bdf

RPP

2024-07-03 2024-07-01

bis

LONG_PP

2024-07-02 2024-05-10

bis

SELECTED_PP

2024-07-02 2024-05-10

ecb

RPP

2024-07-01 2024-07-03

eurostat

ei_hppi_q

2024-07-01 2024-07-03

eurostat

hbs_str_t223

2024-07-01 2024-07-03

eurostat

prc_hicp_midx

2024-07-01 2024-07-03

eurostat

prc_hpi_q

2024-07-01 2024-07-01

fred

housing

2024-07-26 2024-07-26

insee

IPLA-IPLNA-2015

2024-07-03 2024-07-03

oecd

housing

2024-07-01 2020-01-18

oecd

SNA_TABLE5

2024-07-01 2023-10-19

LAST_COMPILE

LAST_COMPILE
2024-07-26

Last

Code
immobilier %>%
  group_by(date) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(date)) %>%
  head(2) %>%
  print_table_conditional()
date Nobs
2024-06-13 1
2024-06-12 1

variable

Code
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) 9297 2024-06-13 1998-12-31
BSI1.M.FR.N.R.A220Z.A.1.U6.2254FR.Z01.E Crédits à l'habitat accordés aux particuliers résidents, encours 373 2024-03-31 1993-03-31
BSI1.M.FR.N.R.A26.A.1.U6.2254FR.Z01.E Crédits accordés aux particuliers résidents, encours 373 2024-03-31 1993-03-31
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 372 2024-03-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 370 2024-03-31 1993-06-30
MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N Crédits nouveaux à l'habitat des particuliers, flux CVS 256 2024-03-31 2002-12-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 305 2024-03-31 1998-11-30
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 163 2024-03-31 2010-09-30
FM.M.U2.EUR.4F.KR.DF.LEV BCE - Facilité de dépôt - niveau fin de mois yc mois en cours 290 2023-01-31 1998-12-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-01-31 1998-12-31
FM.M.U2.EUR.4F.KR.MRR_FR.LEV BCE - Principales opérations de refinancement (taux fixe) 290 2023-01-31 1998-12-31

Comparer taux crédits immobilier et taux banque centrale

Tous

1 année

Code
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("Taux d'intérêt (%)") +
  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))

2 ans

Tous

Code
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("Taux d'intérêt (%)") +
  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))

2020-

Code
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("Taux d'intérêt (%)") +
  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))

2021-

Code
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("Taux d'intérêt (%)") +
  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))

2022-

Code
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("Taux d'intérêt (%)") +
  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))

Tous les taux

Code
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("Taux d'intérêt (%)") +
  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))

Crédits à l’habitat

Encours

Linear

Code
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

Log

Code
plot_log <- plot_linear +
  scale_y_log10(breaks = seq(-10000, 10000, 100),
                     labels = dollar_format(suffix = " Mds€", prefix = "",  accuracy = 1))

plot_log

Both

Code
library("ggpubr")
ggarrange(plot_linear + ggtitle("Linear"), plot_log + ggtitle("Log"), common.legend = T, legend = "bottom")

Montants mensuels

All

Code
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))

2000-

Code
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))

3 mois

All

Code
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("Crédits à l'habitat accordés aux particuliers résidents\n variation d'encours (moyenne sur 3 mois glissants)") +
  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 = ""))

2000-

Code
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("Crédits à l'habitat accordés aux particuliers résidents\n variation d'encours (moyenne sur 3 mois glissants)") +
  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€"))

Last year

Code
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 = ""))

1 mois, 3 mois

Code
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))

Crédits nouveaux à l’habitat (hors renégociation)

All

Code
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))

Complete series

Code
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))