Methodology

What each figure measures, what it is derived from, and where it stops.

Figures come from published datasets, worked through arithmetic that is written down, and each is shown with its source and period. Where a figure is an estimate it is labelled as one and shown as a range. Where a figure cannot be produced from the data, the page says so.

How scores and estimates are set

Numbers come from formulas, not from AI. Blindspot’s score follows a published rubric: the same inputs always give the same result. Where AI writes prose on this site, it works around figures that are already fixed and may use no others.

How often each dataset is refreshed

The interval is how often the source publishes, not how often it is convenient to ask. This table is generated from the same list the scheduler runs, so it cannot drift from what actually happens.

DatasetCheckedWhy that interval
soradailyMAS publishes SORA every business day
transactionsdailyHDB and URA file new transactions continuously, with a lag of weeks
price-indexevery 80 daysthe resale price index is quarterly
ppievery 80 daysURA's private residential price index is quarterly
mopevery 80 daysHDB Property Information changes a few times a year
hdb-footprintsevery 365 daysHDB builds or demolishes a few blocks a year; one missing here is still in OpenStreetMap
p1every 30 daysMOE publishes each Primary 1 exercise once, after it ends
amenitiesevery 180 daysstations, schools and hawker centres barely move
rentalevery 30 daysURA files rental contracts quarterly, but in rolling batches
boundariesevery 365 daysthe Master Plan is redrawn about every five years — this is a formality, not a refresh
gls-awardsevery 3 daysURA republishes the past-sites sheet as each tender is awarded
planningevery 7 daysURA decides applications continuously and the current year grows all year
zoningevery 365 daysthe Master Plan land use layer changes on the statutory review, not on a feed
archivedailyrebuilt from the price indices and rates already on disk; policy announcements are added by hand and dated as last reviewed

A dataset is only re-downloaded when it is past due, and the deploy happens only when the data actually changed — so a quiet day produces no commit rather than a timestamp with nothing behind it.

What “filed” means

A transaction appears here once it has been filed with the authority and published by it — a lodged caveat for private property, a registered resale for HDB. That is not the day the deal was agreed. A caveat is typically lodged some weeks after the option is exercised, and the agency publishes it after that.

So the most recent weeks are always thinner than they will eventually be, on this site and on every other. A month that looks quiet may simply not have finished arriving. Nothing here back-fills silently: the period covered is printed beside the figures it produced.

What each derived figure is

Median price, and median psf
The middle of the filed transactions for that address over the period shown — calculated here, not supplied by the agency. Per square foot uses the area as filed (strata area for private, floor area for HDB), which is not the same as usable space. A median of one sale is not a median, and a record with a single filed transaction says so rather than printing a range with identical ends.
Observed range and spread
The cheapest and dearest psf actually filed, not a confidence interval and not a forecast. Where a home sits inside it depends on floor, facing, renovation and lease, none of which the transaction record contains.
Floor premium
Measured within a single building by comparing filed sales in different storey bands, never by applying a national curve to a specific address. A curve that does not rise with height is refused rather than applied. Both agencies publish a storey band, not a floor.
Gross rental yield
Filed annual rent over filed price, matched on unit size band. Gross, not net— it carries no maintenance, tax, insurance, vacancy, agent fee or financing cost, and those are the difference between a yield and an income.
Blindspot score
Six checks scored against a published rubric. A check that cannot run scores nothing and says so; it is never counted as zero risk, and the denominator shown is the number that actually ran.
Price indices
Published quarterly by the agencies and used unrebased. HDB’s runs from 1990-Q1. Both share a 1Q2009 = 100 base, which is what lets them sit beside each other. An index is a market and a home is one home: applying one to a single address says what the market did, not what that address did.
Historical windows
Every holding period of the reader’s own length that has run in the index, counted rather than turned into a probability — overlapping windows are not independent trials. Where the record holds fewer than four non-overlapping stretches of that length, the section refuses to read rather than reporting a count that is one history read many times.
Estimated launch price
Worked from what the developer paid for the land, then adjusted by stack, floor and size, with the premium for a stack measured from URA’s filed sales. It is an estimate with a range, shown before the developer’s price list exists, and it is replaced by the price list when that is published. It is not a price list, an offer or a forecast.
Distances
Straight-line, always labelled as such. What sits between two points — a canal, an expressway, a fence — is in no dataset held here, so a walking time would be a guess presented as a measurement. The 1km school band is ballot priority, not a place.

What is not published

Valuations of specific homes, walking times, school places and anything drawn from REALIS are not on the site. Standards gives the reason for each and what is there instead.

Corrections

A filed transaction that looks wrong is wrong at the agency, and is shown as filed. A derivation, a name, a coordinate or a match that looks wrong is worked out here and will be corrected. Send the page you were on to the contact on the About page.

Contains information from HDB Resale Flat Prices (data.gov.sg) accessed on 2026-09-30 from data.gov.sg, made available under the Singapore Open Data Licence v1.0Contains information from URA Data Service — PMI_Resi_Transaction accessed on 2026-09-30, made available under the Singapore Open Data Licence v1.0