HOROI

How we rate

Every HOROI rating comes from one of two rubric variants that share one philosophy: a New Launch scorecard for private condos and ECs, and an HDB Town scorecard for the resale market. Each category is scored 0–5 against defined, public anchors, multiplied by its weight and scaled to a 0–100 composite with a letter grade, a one-line verdict and a “who it’s for.” The anchors are public so anyone can audit a score. Trust the method, not a person. This page describes rubric v0.2, with scoring mechanics locked in June 2026.

The two rubrics

A. New Launch (private condo / EC)

New launch rubric weights
CategoryWeight
Entry Price & Value25%
Supply & Exit Dynamics15%
Location & Connectivity15%
Investment Profile15%
Developer Track Record10%
Layout & Product10%
Sentiment Signal10%

B. HDB Town / Resale

HDB town rubric weights
CategoryWeight
Price Trend & Momentum25%
Upgrader Equity Unlock20%
Transaction Liquidity15%
Future Supply Pressure15%
Step-Up Gap to Private15%
Sentiment Signal10%

Percentile anchors, not opinions

Where a category is computed, the 0–5 score comes from where the measured value sits in a distribution of peers — e.g. a launch’s $psf percentile within its cohort, or a project’s MRT walk-time against the median and 75th percentile of all 183 rated launches. The anchor values are printed in the “basis” line of every sub-score, so the number can be checked, not just believed.

Value and appreciation are orthogonal axes

Cheapness scores well on Entry Price & Value; the bearish “weak pricing power” read lives on Investment Profile. We never penalise the value axis for being cheap — the same price-versus-fair-value philosophy Morningstar applies to stocks. A project can be a good price and a poor compounder, or vice versa, and the scorecard shows both.

Vintage-matched cohorts

Entry-value is scored against a cohort of launches in the same market segment (CCR/RCR/OCR) that launched within ±18 months — widened to ±24 months, then to the full window, only if the cohort drops below 10 projects. Segment launch prices drifted roughly +42% across the URA 5-year window, so an unmatched percentile would mostly measure the launch year, not the deal. Islandwide position is shown as context, never as the score.

Appreciation: annualized and cohort-relative

Singapore mass-market property almost never loses money in absolute terms (0% loss rate for OCR launches in our 60-pair launch→resale study), so “will it gain?” is an uninformative question. We instead score a project’s annualized (%/yr) gain as a percentile of its segment cohort’s realized %/yr distribution — raw percentage gains over unequal holding periods are not comparable. Estimates follow a strict priority: the project’s own realized exits, then realized comparables in the same district, then price-position inference. Inferred estimates are dampened toward neutral and earn zero coverage credit, because they mechanically correlate with the entry-value score.

Window censoring is flagged

URA’s transaction feed is a rolling 5-year window. A project whose first observed new-sale month sits at the edge of that window actually launched earlier — its observed “launch” price is late-phase pricing, not day-one pricing. Censored subjects and comparables are labelled CENSORED directly on the scorecard rather than silently treated as clean data.

Below-breakeven is a flag, not a markdown

A developer selling below estimated breakeven with a fast sell-down is passing cheap land to buyers — discipline, not distress. Selling below breakeven amid slow absorption is distress, and costs a point on Investment Profile. The trigger is absorption velocity: ≥60% of units sold in the first three months counts as strong.

Source classes & the coverage %

Every sub-score carries one of four source classes, and every scorecard prints a coverage percentage — the share of the rating’s weight that is actually measured — so a placeholder is never mistaken for a measurement:

The publish gate

No rating is published below roughly 75% coverage, and private ratings publish only once location & connectivity data is computed — it is the single strongest appreciation driver, so a rating without it would be hollow. Anything below the gate stays internal and provisional.

Sentiment is a signal, labelled as such

The sentiment category is a manual, aggregated, anonymized editorial overlay — never automated scraping, and never anonymous forum opinion presented as fact. Until it is populated for a given rating, it sits at the neutral placeholder and earns no coverage credit.

Versioning

This is rubric v0.2: scoring mechanics were locked in June 2026 after calibration against a live transaction archive, the 60-pair appreciation study and external domain research. Category weights are unchanged from v0.1; a weight review is deferred until at least 20 projects carry full data — we don’t upweight the weakest-measured category first.

See a score you disagree with? Check the basis lines and the anchors — then check our data sources. If the data is wrong, the score is wrong, and we’ll fix both.