What is GLPM?
The Gera Local Price Momentum (GLPM) index combines three signals per UK postcode district, derived solely from real HM Land Registry sold prices:
- medianPrice — median sold price (current period, GBP)
- pctChange12m — 12-month % change vs prior year median
- txCount — number of qualifying transactions
Districts with fewer than 10 transactions in the current period output “insufficient data” and are excluded from the published dataset.
Data source
| Source | HM Land Registry — Price Paid Data |
| Current period file | pp-2026.csv (January–April 2026) |
| Prior period file | pp-2025.csv (January–December 2025) |
| Reference period | January–April 2026 |
| Last computed | 2026-06-20 |
| Licence | Open Government Licence v3.0 |
| Key required? | No — bulk CSV, no registration |
Step-by-step formula
- 1
Download the Price Paid Data CSV files
Fetch pp-2026.csv and pp-2025.csv from https://www.gov.uk/government/statistical-data-sets/price-paid-data-downloads. No API key required. Files are plain CSV with no header row. Column 4 (index 3) is the full postcode (e.g. "SW3 4JU"); column 2 (index 1) is the price in GBP; column 16 (index 15) is the record_status ("A" = added, "C" = changed, "D" = deleted).
- 2
Filter valid records
Exclude rows where record_status = "D" (deleted). Parse the postcode field to extract the outcode (first group before the space). Discard rows with an invalid postcode or price ≤ 0.
- 3
Group by outcode × period
Create two maps — current (pp-2026.csv) and prior (pp-2025.csv) — keyed by outcode, values = array of sale prices.
- 4
Apply N≥10 threshold
For any outcode with fewer than 10 transactions in the current map, skip it entirely — the published dataset omits "insufficient data" districts.
- 5
Compute medianPrice
Sort the current-period prices array ascending. median = prices[⌊n/2⌋] if n is odd; (prices[n/2−1] + prices[n/2]) / 2 if n is even. Round to the nearest integer GBP.
- 6
Compute pctChange12m
If the prior-period array for the same outcode has ≥10 entries, compute its median identically. pctChange12m = (currentMedian − priorMedian) / priorMedian × 100, rounded to 1 d.p. If prior period has <10 entries, pctChange12m = null.
- 7
Record txCount
txCount = length of the current-period prices array (before any deduplication — one transaction = one row in the PPD CSV).
- 8
Sort and publish top 600
Sort all qualifying outcodes by txCount descending. Publish the top 600 as the GLPM dataset. This ensures coverage prioritises the most liquid markets.
Pseudocode
# Input: pp-2026.csv (current), pp-2025.csv (prior)
# Output: GLPM_DISTRICTS array
for each csv_file in [pp-2026.csv, pp-2025.csv]:
for each row in csv_file:
if record_status == "D": skip
outcode = postcode.split(" ")[0].toUpperCase()
price = parseInt(fields[1])
if price <= 0 or outcode is empty: skip
period_map[period][outcode].append(price)
for each outcode in current_map:
if len(current_map[outcode]) < 10: continue # insufficient data
medianPrice = median(current_map[outcode])
txCount = len(current_map[outcode])
if outcode in prior_map and len(prior_map[outcode]) >= 10:
priorMedian = median(prior_map[outcode])
pctChange12m = round((medianPrice - priorMedian) / priorMedian * 100, 1)
else:
pctChange12m = null
results.append({ outcode, slug, medianPrice, pctChange12m, txCount })
results.sort_by(txCount, descending=True)
GLPM_DISTRICTS = results[:600]Coverage (January–April 2026)
- Districts published: 600 (top 600 by 2026 transaction volume)
- UK median sold price: £275,000
- Data source last published: 20 June 2026
- Update cadence: Monthly (on each new Land Registry PPD release)
- Licence: Open Government Licence v3.0 — free to use with attribution
Limitations & caveats
- Lag: Land Registry typically publishes transactions 2–3 months after completion. The January–April 2026 file may not yet include all April 2026 completions.
- Mix effect: A median over all property types (detached, semi, terraced, flat) is influenced by the mix of properties sold, not just price-level changes. A shift toward more expensive types can inflate the median even if like-for-like prices are flat.
- 12-month comparison window: GLPM compares 2026 data (Jan–Apr) vs full-year 2025 data. The windows are not identical in length — interpret pctChange12m as a directional indicator, not a like-for-like repeated-sale index.
- Not professional valuation advice: GLPM is a statistical summary of past transactions. It is not a property valuation, mortgage advice, or investment recommendation.
Contains public sector information published by HM Land Registry and licensed under the Open Government Licence v3.0. Source: HM Land Registry — Price Paid Data (January–April 2026).