House sales index of value of transactions (2015=100) - annual data - prc_hpi_hsvq
Data - Eurostat
Info
Last observation: Quarterly: 2026Q1 (N = 224)
First observation: Quarterly: 2006Q1 (N = 13)
Last data update: 23 jul 2026, 22:11. Last compile: 24 jul 2026, 03:44
Structure
France: New vs. Existing Dwellings
Code
prc_hpi_hsvq %>%
filter(geo == "FR",
unit == "I25_Q",
purchase %in% c("DW_NEW", "DW_EXST")) %>%
quarter_to_date %>%
ggplot + geom_line(aes(x = date, y = values, color = Purchase)) +
theme_minimal() +
scale_x_date(breaks = as.Date(paste0(seq(2005, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.85),
legend.title = element_blank()) +
xlab("") + ylab("House sales index (2025=100)")
Annual Rate of Change: France, Spain, Netherlands
Code
prc_hpi_hsvq %>%
filter(geo %in% c("FR", "ES", "NL"),
unit == "RCH_A",
purchase == "TOTAL") %>%
quarter_to_date %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values/100) %>%
ggplot + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + scale_color_identity() + add_3flags +
scale_x_date(breaks = as.Date(paste0(seq(2005, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
xlab("") + ylab("House sales index, annual rate of change") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
geom_hline(yintercept = 0, linetype = "dashed", color = "black")
Latest Quarter by Country
Code
latest_q <- prc_hpi_hsvq %>%
filter(unit == "I25_Q",
purchase == "TOTAL",
!is.na(values)) %>%
summarise(m = max(time)) %>%
pull(m)
prc_hpi_hsvq %>%
filter(unit == "I25_Q",
purchase == "TOTAL",
time == latest_q) %>%
mutate(values = round(values, 1)) %>%
select(Geo, values) %>%
arrange(-values) %>%
print_table_conditional()| Geo | values |
|---|---|
| Cyprus | 101.6 |
| Slovenia | 101.6 |
| Hungary | 99.3 |
| Malta | 99.3 |
| Lithuania | 99.1 |
| Denmark | 98.5 |
| Spain | 97.6 |
| Portugal | 95.9 |
| Netherlands | 94.2 |
| Belgium | 92.4 |
| Austria | 89.0 |
| France | 88.7 |
| Bulgaria | 80.8 |
| Luxembourg | 80.8 |
| Finland | 77.3 |
| Ireland | 74.0 |
| Croatia | 68.5 |
| Norway | 61.5 |
Purchase Total
France, Spain, Austria
Code
prc_hpi_hsvq %>%
filter(geo %in% c("FR", "ES", "AT"),
unit == "I25_Q",
purchase == "TOTAL") %>%
quarter_to_date %>%
ggplot() + geom_line() + theme_minimal() +
aes(x = date, y = values, color = Geo, linetype = Geo) +
scale_color_manual(values = viridis(4)[1:3]) +
scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(-100, 300, 10)) +
ylab("House Price Index") + xlab("")
Belgium, Denmark, Finland
Code
prc_hpi_hsvq %>%
filter(geo %in% c("BE", "DK", "FI"),
unit == "I25_Q",
purchase == "TOTAL") %>%
quarter_to_date %>%
ggplot() + geom_line() + theme_minimal() +
aes(x = date, y = values, color = Geo, linetype = Geo) +
scale_color_manual(values = viridis(4)[1:3]) +
scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.1, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(-100, 300, 10)) +
ylab("House Price Index") + xlab("")