UK House Prices
QABQais Adeniji-Bello ← Data Analytics Code & data on GitHubAbout
Data Analytics · Excel · UK house prices, 1953-2025

120 times dearer,
or five?

Seventy years of Nationwide house prices in one Excel workbook, measured in cash and after inflation. Every number is a live formula over the raw data, and an independent pandas run checks the results.

Loading…

Cash prices rose 120-fold. After inflation, five-fold.

Average Nationwide house price each year, in cash (grey) and restated in 2024 pounds (green). Real prices only start in 1960, the first year of the inflation data.

Cash priceReal price (2024 £)

Three crashes, and a quiet fourth

Real price against the highest real price reached before it. In the 1970s, cash prices never fell at all; inflation did the work.

Decade by decade

Growth from the first to the last year of each decade (the 2020s run to 2024). The gap between the bars is inflation.

Cash growthReal growth

What did the average house cost a month?

The workbook's Mortgage sheet, working in the browser: a repayment mortgage on the average house in two quarters. The rates are your assumptions, not historical rates. Both start at 5% so the comparison isolates the price.

ThenNow Average price Monthly repayment In 2024 pounds Deposit, 2024 £

Monthly repayment  =PMT(C13, C9*12, -C12)
In base-year £     =C14*100/INDEX(CPI_Index, MATCH(VALUE(LEFT(C6,4)), CPI_Year, 0))

Inside the workbook

Raw data goes in untouched; calculation sheets read it with formulas; the dashboard reads the calculation sheets. Blue text in a yellow cell is an input. Every other number is a formula.

DashboardBase-year picker, six headline figures, the three crashes (MINIFS), three charts, and a live pass/fail for the checks.
MortgageThen vs now with PMT, real repayments, and a rate x deposit sensitivity grid with a colour scale.
Annual · DecadesAVERAGEIFS over the quarters; compound growth per decade, cash and real, against inflation.
Quarterly290 Nationwide quarters: real price, year-on-year change, running real peak and fall from peak.
CPIWorld Bank UK inflation pulled with SUMIFS, chained into an index, rebased to the chosen year.
Checks · Raw8 reconciliation tests; Nationwide and World Bank data exactly as published.
Inflation for one year, from the 16,000-row World Bank file
=SUMIFS(Raw_CPI!$D:$D, Raw_CPI!$B:$B, "GBR", Raw_CPI!$C:$C, A6)/100
A chained price index, rebased to the year picked on the Dashboard
=C5*(1+B6)
=C6/INDEX($C$5:$C$70, MATCH(BaseYear, $A$5:$A$70, 0))*100
Real price and fall from the peak so far
=IF(G5="", "", E5*100/G5)
=IF(H5="", "", H5/MAX(H$5:H5)-1)
The worst fall in an episode, and when it bottomed out
=MINIFS(Q_Fall, Q_Year, ">=1989", Q_Year, "<=1996")
=INDEX(Q_Label, MATCH(C18, Q_Fall, 0))
Checks sheet. Each test compares the calculations with the raw data. Separately, tools/check_workbook.py recalculates the workbook in LibreOffice and checks every real price, fall and annual figure against pandas.

A data quality catch. The World Bank CPI file's metadata says it holds a price index with 2005 = 100. It holds annual inflation rates (UK 1975: 24.2). The workbook treats them as rates and chains its own index; read as an index, real prices would be nonsense.