Residential property prices - detailed series - LONG_PP

Data - BIS

Last observation: Q1 2026 (N = 236)

First observation: Q1 1927 (N = 1)

Last data update: 03 sept. 2026, 23:01

Last compile: 03 sept. 2026, 23:17

Structure

iso3c, Reference area

Code
LONG_PP |>
  arrange(iso3c, FREQ, date) |>
  group_by(iso3c, FREQ, `Reference area`) |>
  summarise(Nobs = n(),
            start = first(date),
            end = last(date)) |>
  arrange(-Nobs) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(`Reference area`)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

1970-2020

France, Italy, Spain

Code
LONG_PP |>
  filter(iso3c %in% c("FRA", "ITA", "ESP"),
         FREQ == "Q",
         date >= as.Date("1970-01-01")) |>
  add_flag_color("Reference area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("House Prices (Index)") +
  geom_line(aes(x = date, y = value, color = color)) +
  scale_x_date(breaks = seq(1900, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 600, 50), seq(0, 50, 10), seq(0, 5, 1)),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.8, 0.2),
        legend.title = element_blank())

Denmark, Sweden, Japan

Code
LONG_PP |>
  filter(iso3c %in% c("DNK", "SWE", "JPN"),
         FREQ == "Q",
         date >= as.Date("1970-01-01")) |>
  add_flag_color("Reference area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("House Prices (Index)") +
  geom_line(aes(x = date, y = value, color = color)) +
  scale_x_date(breaks = seq(1900, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 600, 50), seq(0, 50, 10), seq(0, 5, 1)),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.8, 0.2),
        legend.title = element_blank())

Australia, Great Britain, South Africa

Code
LONG_PP |>
  filter(iso3c %in% c("AUS", "GBR", "ZAF"),
         FREQ == "Q",
         date >= as.Date("1970-01-01")) |>
  add_flag_color("Reference area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("House Prices (Index)") +
  geom_line(aes(x = date, y = value, color = color)) +
  scale_x_date(breaks = seq(1900, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 600, 50), seq(0, 50, 10), seq(0, 5, 1)),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.8, 0.2),
        legend.title = element_blank())

All

Japan, UK, US

Code
LONG_PP |>
  filter(iso3c %in% c("JPN", "GBR", "USA"),
         FREQ == "Q") |>
  add_flag_color("Reference area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("House Prices (Index)") +
  geom_line(aes(x = date, y = value, color = color)) +
  scale_x_date(breaks = seq(1900, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 600, 50), seq(0, 50, 10), seq(0, 5, 1)),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.8, 0.2),
        legend.title = element_blank())

Italy, Japan, South Africa

Code
LONG_PP |>
  filter(iso3c %in% c("ITA", "JPN", "ZAF"),
         FREQ == "Q") |>
  add_flag_color("Reference area") |>
  ggplot() + theme_minimal() + xlab("") + ylab("House Prices (Index)") +
  geom_line(aes(x = date, y = value, color = color)) +
  scale_x_date(breaks = seq(1900, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 600, 50), seq(0, 50, 10), seq(0, 5, 1)),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.8, 0.2),
        legend.title = element_blank())

Japan

1955-2020

(ref:HP-1955-2020) Japan House Prices (1955-2020)

Code
LONG_PP |>
  filter(iso3c == "JPN") |>
  ggplot() +
  geom_line(aes(x = date, y = value)) + 
  ylab("House Price Index") + xlab("") +
  scale_y_continuous(breaks =  seq(0, 200, 10)) + 
  scale_x_date(breaks = seq(1800, 2100, 10) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) + 
  theme_minimal() + 
  geom_vline(xintercept = as.Date("1990-10-29"), linetype = "dashed", color = viridis(3)[2])

(ref:HP-1955-2020)

1980-2020

(ref:HP-1980-1995) Japan House Prices (1980-1995)

Code
LONG_PP |>
  filter(iso3c == "JPN",
         date >= as.Date("1980-01-01"),
         date <= as.Date("1995-01-01")) |>
  ggplot() +
  geom_line(aes(x = date, y = value)) + 
  ylab("House Price Index") + xlab("") +
  scale_y_continuous(breaks =  seq(0, 200, 10)) + 
  scale_x_date(breaks = seq(1800, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) + 
  theme_minimal() + 
  geom_vline(xintercept = as.Date("1929-10-29"), linetype = "dashed", color = "red")

Australia

1955-2020

Code
LONG_PP |>
  filter(iso3c == "AUS") |>
  ggplot() + theme_minimal() + ylab("House Price Index") + xlab("") +
  geom_line(aes(x = date, y = value)) +
  scale_y_log10(breaks =  seq(0, 500, 50)) + 
  scale_x_date(breaks = seq(1800, 2100, 10) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y"))

2000-

Code
LONG_PP |>
  filter(iso3c == "AUS",
         date >= as.Date("2000-01-01")) |>
  ggplot() + theme_minimal() + ylab("House Price Index") + xlab("") +
  geom_line(aes(x = date, y = value)) +
  scale_y_log10(breaks =  seq(0, 500, 50)) + 
  scale_x_date(breaks = seq(1800, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y"))

2010-

Code
LONG_PP |>
  filter(iso3c == "AUS",
         date >= as.Date("2010-01-01")) |>
  ggplot() + theme_minimal() + ylab("House Price Index") + xlab("") +
  geom_line(aes(x = date, y = value)) +
  scale_y_log10(breaks =  seq(0, 500, 20)) + 
  scale_x_date(breaks = seq(1800, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y"))