How is an HDB valuation calculated, and how wrong is it?
Fairhome values a flat from comparable sales: recent resale transactions of the same flat type nearby, each adjusted for market movement, remaining lease, and storey, then combined as a weighted median. A machine-learning model then corrects that estimate for the patterns comparables alone miss. Every input is a real transaction published by HDB on data.gov.sg, refreshed daily, no survey, no listing data, no agent-submitted prices. Backtested against sales the model never saw, the typical estimate lands within a few percent of the actual price; the exact figure for every town is published below.
Find comparables
We look for sales of the same flat type in the last 12 months, first in the same block, then within 500m, then across the town. The first tier with at least 5 sales is used, and we always tell you which one it was.
Adjust each sale to your flat
Three transparent adjustments, all in $/sqft: market movement since the sale (the town's price trend), remaining-lease difference (a decay rate fitted per town and flat type), and storey difference (the town's floor premiums). You can see all three for every comp on the estimate page.
Take the weighted middle
We combine the adjusted values into a weighted median, recent and nearby sales count more. The range shown is the 25th–75th percentile, so roughly half of comparable sales landed inside it.
Correct with the model
A machine-learning model, trained on hundreds of thousands of past sales, has learned where the comparable-sales method tends to run high or low, for a given flat's town, remaining lease, storey, size, and project, and nudges the estimate to correct it. It's a second opinion on top of the comps, not a black box replacing them: you still see every sale above.
Accuracy, measured honestly
±3.26%
typical (median) estimate error
5,893
hidden sales predicted
3 mo
holdout: 2026-05, 2026-06, 2026-07
We hide the most recent months of transactions, rebuild all statistics and retrain the model without them, and predict each hidden sale. Half of the estimates were closer than the typical error; half were further off.
Typical estimate error by town
median absolute error vs actual sale price · amber = above 5%, treat as a starting point
- CHOA CHU KANG2.4%
- SENGKANG2.6%
- WOODLANDS2.6%
- PUNGGOL2.7%
- TAMPINES2.7%
- PASIR RIS2.8%
- YISHUN2.9%
- BUKIT BATOK3.1%
- SEMBAWANG3.2%
- JURONG WEST3.3%
- BEDOK3.4%
- HOUGANG3.4%
- JURONG EAST3.7%
- GEYLANG3.8%
- SERANGOON3.9%
- CLEMENTI4.1%
- ANG MO KIO4.3%
- BISHAN4.4%
- TOA PAYOH4.5%
- BUKIT PANJANG4.6%
- QUEENSTOWN4.6%
- KALLANG/WHAMPOA5.1% ⚠
- BUKIT MERAH5.2% ⚠
- MARINE PARADE5.4% ⚠
- CENTRAL AREA6.0% ⚠
- BUKIT TIMAH6.1% ⚠
| Town | Typical error | Sales tested |
|---|---|---|
| CHOA CHU KANG | 2.4% | 245 |
| SENGKANG | 2.6% | 441 |
| WOODLANDS | 2.6% | 447 |
| PUNGGOL | 2.7% | 397 |
| TAMPINES | 2.7% | 491 |
| PASIR RIS | 2.8% | 185 |
| YISHUN | 2.9% | 360 |
| BUKIT BATOK | 3.1% | 345 |
| SEMBAWANG | 3.2% | 163 |
| JURONG WEST | 3.3% | 334 |
| BEDOK | 3.4% | 295 |
| HOUGANG | 3.4% | 306 |
| JURONG EAST | 3.7% | 116 |
| GEYLANG | 3.8% | 148 |
| SERANGOON | 3.9% | 93 |
| CLEMENTI | 4.1% | 128 |
| ANG MO KIO | 4.3% | 215 |
| BISHAN | 4.4% | 93 |
| TOA PAYOH | 4.5% | 210 |
| BUKIT PANJANG | 4.6% | 179 |
| QUEENSTOWN | 4.6% | 207 |
| KALLANG/WHAMPOA | 5.1% | 182 |
| BUKIT MERAH | 5.2% | 227 |
| MARINE PARADE | 5.4% | 31 |
| CENTRAL AREA | 6.0% | 40 |
| BUKIT TIMAH | 6.1% | 15 |
Last measured 21/07/2026. Amber rows are towns still above 5% typical error, mostly those with few recent sales, where the median bounces on small samples, or unusually varied flat stock. Treat those as starting points, not answers.
Private property: condo, EC and landed
Private estimates use the same idea and the same honest backtest — re-valuing real URA resales the engine never saw, as of their sale month, from prior data only. Condo/EC runs the same two steps as HDB (comparable sales, then an ML correction learned per project). Landed is comparable-sales only plus a land-size adjustment: URA records neither built-up area nor condition, so it is inherently rougher.
±4.23%
condo & EC, typical error (6,186 sales tested)
±10.01%
landed, typical error (1,188 sales tested)
| District | Condo / EC | Landed |
|---|---|---|
| D01 | 7.8% | — |
| D02 | 4.8% | — |
| D03 | 3.0% | — |
| D04 | 5.4% | — |
| D05 | 4.3% | 15.3% |
| D07 | 4.7% | — |
| D08 | 7.6% | — |
| D09 | 5.6% | — |
| D10 | 5.7% | 15.7% |
| D11 | 4.8% | 8.4% |
| D12 | 4.5% | — |
| D13 | 3.8% | 14.1% |
| D14 | 5.8% | 2.9% |
| D15 | 5.9% | 8.7% |
| D16 | 4.7% | 8.7% |
| D17 | 3.7% | 9.1% |
| D18 | 3.4% | — |
| D19 | 3.4% | 8.4% |
| D20 | 4.1% | 12.7% |
| D21 | 5.2% | 12.0% |
| D22 | 4.2% | 10.9% |
| D23 | 3.1% | 25.0% |
| D25 | 3.9% | — |
| D26 | 8.2% | 11.6% |
| D27 | 3.4% | 12.8% |
| D28 | 3.7% | 9.2% |
Last measured 2026-07. Median absolute error on a leave-one-out holdout; districts with fewer than 10 tested sales are shown as “—”. Amber marks 8%+ typical error (thin or unusually varied markets); treat those as starting points. No other Singapore tool publishes private-property accuracy.
