← Back to blog

Singapore HDB: why Price Tier is bimodal — and what it tells us

While running the CityDataLab factor model on 210,000 HDB resale transactions (2017–2025), the Price Tier histogram looked off. Price Tier buckets every transaction into a septile from −3 (cheapest) to +3 (dearest) based on its own price-per-sqm versus the trailing 12-month distribution. By construction the buckets should each hold roughly one-seventh of transactions. They don't — the right tail (+2/+3) is materially heavier than the left, and the middle is hollowed out:

Singapore HDB Price Tier distribution, 210k transactions, 2017–2025. Septile buckets are thirty-percent fatter on the right (+2/+3) than the left (−3/−2).

The +2 and +3 buckets each hold ~16% of transactions; the −3 bucket holds only 10%. Something is consistently pushing transactions toward the dear end of the trailing distribution. We tested every plausible covariate.

Which covariate splits the distribution?

For each candidate, we compute the mean Price Tier on each side of a binary split. The biggest spread wins:

Covariate (binary split)On countOn meanOff meanSpread
floor_level ≥ 2011,989+2.35+0.12+2.23
lease_year ≥ 201053,882+1.89−0.32+2.21
building_age < 1049,076+1.87−0.25+2.12
is_studio (< 50sqm)3,867+2.09+0.22+1.88
floor_level ≥ 1080,661+0.95−0.19+1.14
floor_level ≤ 337,092−0.65+0.44−1.09
lease_year < 199087,555−0.22+0.59−0.81
building_age > 3086,369−0.21+0.57−0.78

Three of the top four splits ride together: high floor level, recent lease commencement, and small floor area. They all describe the same kind of flat — a post-2010 Build-to-Order (BTO) in a newer town, in a taller block, with the more compact floor plans that became the standard after 2010. Splitting the population by lease cohort makes the bimodality almost surgical:

Price Tier distribution by lease commencement cohort. Post-2010 BTOs (red) sit overwhelmingly in the +2/+3 buckets — 68% of them. Pre-1990 stock (grey) is roughly bell-shaped. The mid cohort (1990–2009, blue) shows its own internal bimodality.

Post-2010 BTO flats land in the dearest two septiles 68% of the time. They are barely present in the bottom three septiles at all (2.5% combined). The right hump in the overall histogram is, almost in its entirety, this segment.

Why post-2010 BTOs sit so far above the trailing-window median

Several structural premiums compound:

  • Lease compression hasn't started. A 2015-built flat has ~89 of its 99 years of leasehold remaining. A 1985-built flat has ~59. That's nearly a third less remaining tenure, which the secondary market discounts steeply.
  • Smaller, more efficient floor plans. Modern 4-room BTOs are ~85–95 sqm versus ~100–110 sqm for the 1990s equivalent — concentrating the same dwelling utility into less floor area mechanically lifts price-per-sqm.
  • Higher floors, taller blocks. Post-2010 HDB blocks routinely go above 30 storeys. That feeds back into Price Tier directly, and views/noise/light all command a premium.
  • Newer towns at higher per-sqm prices. Punggol, Sengkang and Tengah didn't exist as catchments in 1990; the BTO programme rolled them out from 2007 onwards with newer amenities and MRT integration.

Floor level alone tells a similar story:

Mean Price Tier rises monotonically with storey, from −0.65 at storeys 1–3 (street-level discount) to +2.35 at storeys 20+. The 20+ category is dominated by post-2010 blocks.

Floor area shows the size-premium pattern, with studios (< 50 sqm) the only sub-segment averaging above the +1 mark:

Mean Price Tier by floor area bucket. Studio / 1-2 room flats trade richly because price-per-sqm scales non-linearly downward with size.

What this means for the model

Price Tier is partly capturing "is this a new BTO?" rather than the within-window money-chases-money signal we want. In the factor selection log it shows up at ρ = +0.26 with log_building_age: moderate but real. Total log-price contribution from Price Tier in the final model is −1.05% over 2017–2025 — small — but the OLS already attributes most of the "new BTO premium" to log_building_age directly (+23.2% cumulative, the dominant factor), leaving Price Tier with the residual.

If we wanted a cleaner Price Tier we could compute it within age cohorts — each cohort getting its own −3..+3 spread — or residualise log price-per-sqm against age before bucketing. That would make Price Tier orthogonal to age and remove the bimodal artifact, at the cost of changing what the factor measures (it becomes "dear-given-vintage" rather than "dear absolute").

For now, the headline finding stands: Singapore's HDB market is two markets stacked on top of each other. Post-2010 BTOs operate at a structurally higher price-per-sqm, and they are the right hump of the Price Tier histogram. The selection algorithm correctly identified that this signal exists; the unusual histogram shape is the model telling us where the regime break is.

Explore the Singapore factor model

All 10 factors with rolling betas, p-values and contributions for HDB resales 2017–2025.

Open Singapore Factors →

Methodology: Price Tier is computed as the septile bucket of each transaction's log price-per-sqm against the trailing 12-month distribution, scored on {−3, −2, −1, 0, +1, +2, +3}. Data: 210,000 HDB resale transactions from data.gov.sg covering Jan 2017 to Dec 2025. Full methodology at about.