Irish Property Price Index — Mix-Adjusted vs Headline

A stratified-median price index built entirely in dbt + DuckDB from the PSRA Residential Property Price Register (797,774 raw records, 2010–2026), showing where a naive headline median diverges from a mix-adjusted measure — and validated, directionally, against the CSO's official RPPI.

Overview

Two independent index computations — Dublin (10 strata: property type × Dublin district) and National (8 strata: property type × region bucket) — each shown as the naive headline median and the mix-adjusted stratified series, based to 100 over 2010–2012.

Loading the real finding from mart_price_index_monthly
Mix-adjusted (fixed-fullsample weights) Headline median (naive)

Both series indexed to 100 over the 2010-01 to 2012-12 base period. Source: mart_price_index_monthly.

The mix shift

What's actually being sold changes composition over time — this is the mechanism behind the gap above. Each stratum's share of that month's transactions, stacked to 100%.

Source: mart_mix_shift, derived from int_mix__composition.

Method

Fixed-base-weight stratified median index, computed entirely in SQL — no hedonic regression, because PPR carries none of the covariates (floor area, BER, bedroom count) a hedonic needs.

Formula

Index(region, t) = 100 × Σ_s [ w_s(region) × median_price(s, region, t) / median_price(s, region, base) ] base period = 2010-01-01 .. 2012-12-31 min_stratum_n = 30 (a stratum-month with fewer sales contributes nothing; weights renormalise) new-build gross-up = ×1.135 on VAT-exclusive new-dwelling prices price winsorised at p1 / p99 before feeding any median

Strata & base weights (fixed-fullsample variant)

Data quality — rows in vs excluded

Property Size Description coverage collapses to ~0% from 2019 onward — this is why the index stratifies on property type × geography only (Tier A), not property size (Tier B). Full year-by-year numbers and the ≥40% gate rule are in DECISIONS.md. Source: mart_data_quality.

Validation against the CSO's official index

The CSO's Residential Property Price Index (HPM09) uses a rolling hedonic regression matched to BER data via stamp-duty returns — a record-level join this project can't perform on PPR alone. This is directional validation, not equivalence.

This project's mix-adjusted index CSO RPPI (HPM09)

Both rebased to their first common month. Source: mart_index_vs_cso, benchmark from CSO PxStat HPM09.

Why it doesn't match exactly, and why that's expected: different universe (CSO excludes non-household and non-market purchases differently than the Not-Full-Market-Price flag used here), different method (12-month rolling hedonic vs fixed-weight stratified median), and BER-matched covariates this project doesn't have access to at record level. See DECISIONS.md for the full reasoning and the measured correlation numbers.