How we compute everything
Methodology
Every chart, table, and number on OpenProperty.sg traces back to an open government dataset and a published rule. This page explains where the data comes from, how we transform it, and how often it refreshes.
Data sources
Where our data comes from
- HDB resale transactions — from data.gov.sg, the official historical and current resale price dataset (1990 to present). Source →
- URA private residential transactions — from the URA Realis API (2021 to present, recent rolling window). Source →
- URA private residential rents — from URA Data Service PMI_Resi_Rental when the warehouse ingest has run. Condo yield is shown only after that table is populated; we do not invent private rental numbers. Source →
- HDB median rents — from data.gov.sg, quarterly HDB median rent dataset.
- HDB block inventory — from data.gov.sg, HDB property information dataset.
- CEA salesperson register and transaction records — public CEA register + transaction submissions. Source →
How fresh is the data?
Refresh schedule
Two dates are shown separately. Latest transaction is the newest sale date in the warehouse. Last successful refresh is when an ETL job or published rebuild last finished. A successful refresh can be more recent than the newest sale if the source has not published new deals.
Our ETL pipeline runs nightly. Each market page footer date is the most recent transaction in that market, not the fetch time.
If you see a stale timestamp anywhere on the site, that's a bug. Let us know.
How metrics are computed
Definitions
- Median PSF
- The median of price-per-square-foot across all recorded transactions in the scope (project, town, district, or time window). We use the median, not the mean, because the mean is sensitive to a single high-end or low-end deal.
- Floor premium
- Median PSF grouped by floor band (e.g. 01–05, 06–10, …). Shows the price difference high-floor units command in the same project or area.
- Repeat-sale outcomes
- We do not publish unit-level profit, loss or holding-period claims because the public feeds do not contain the unit and ownership identifiers needed to establish that two transactions concern the same home.
- Benchmark PSF delta
- Median PSF in the subject market vs. its parent benchmark (project → district, district → all districts, town → all towns) for the last 12 months.
- District concentration (HHI)
- For agent pages: a Herfindahl-Hirschman index of the agent's top districts over the last 24 months. Higher = more specialised.
- Gross rental yield
- Annualised median monthly rent ÷ median sale price, over the same 12-month window. HDB yield is matched by flat type. Private yield is matched by floor-area band and landed/non-landed class — a 1-bed rent is never divided by a 3-bed sale median. A segment is omitted unless both sides have at least five observations. Gross: before maintenance, tax, and vacancy.
- Comparable transactions
- For a given transaction, we find the 10 most similar deals using: same property kind, same district (private) or same town (HDB), area within ±15%, transacted within the last 24 months. Ranked by recency, then by area delta. Value-check evidence is shown as sample size, similarity, recency and price spread. A large sample is not labelled strong evidence.
- Affordability loan
- The loan is the amount still needed after cash and CPF, capped by MSR or TDSR and 75% LTV. A cash-rich buyer may borrow less than 75%. The calculator names the binding constraint (income, cash, CPF, or loan cap).
- Estimate backtest
- We recreate a fair-value estimate using only deals dated before a later recorded sale, then compare the implied band with that sale. Results are on the estimate accuracy page. This quantifies error; it cannot capture unobserved condition or renovation.
Limitations
What we don't know
- CEA transaction records don't always include unit-level identifiers. Some agent-transaction matching is district-level for private property.
- URA private data is current rolling window (~5 years). Older private transactions are not available through the public API.
- HDB resale prices exclude transactions that may not reflect full market price (HDB caveat).
- We do not have access to unsold inventory, time-on-market, or asking-vs-sold spread. We're working on these from public sources.
Found an error?
Corrections
We publish corrections. If a number looks wrong on this site, or you spot a misattributed agent record, tell us — and we'll either fix the data or publish a note explaining why.