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)
| Category | Weight | What it measures |
|---|---|---|
| Entry Price & Value | 25% | Land cost, estimated breakeven, launch $psf vs comparable launches, price cushion |
| Supply & Exit Dynamics | 15% | Area oversupply, competing launches, holding-period rules, resale competition, absorption rate |
| Location & Connectivity | 15% | MRT walk-time, future infrastructure, parks / schools / amenities |
| Investment Profile | 15% | Projected rental yield, capital-appreciation potential, ROI vs comparables |
| Developer Track Record | 10% | Past project performance, pricing playbook, build quality, financial strength |
| Layout & Product | 10% | Unit mix, layout efficiency, ventilation, facing, parking ratio |
| Sentiment Signal | 10% | Aggregated crowd mood — hype vs skepticism, demand indicators |
B. HDB Town / Resale
| Category | Weight | What it measures |
|---|---|---|
| Price Trend & Momentum | 25% | 2-year resale price movement; young-MOP vs whole-estate growth split |
| Upgrader Equity Unlock | 20% | Equity freed at MOP; realistic non-top-up upgrade ceiling |
| Transaction Liquidity | 15% | Volume by flat type, seller holding power, days on market |
| Future Supply Pressure | 15% | Upcoming BTO/SBF supply, BTO subscription ratios |
| Step-Up Gap to Private | 15% | Cash/CPF gap from the town's HDB to the nearest EC/condo tier |
| Sentiment Signal | 10% | Aggregated crowd mood on the town; lease-decay anxiety, demand chatter |
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:
- computedFully measured from source data. Full coverage credit.
- partialA real but proxy signal (e.g. unit mix derived from transaction areas instead of floor plans). Half coverage credit.
- inferredAn estimate, dampened toward neutral. Zero coverage credit; drawn hatched on the scorecard.
- manual · awaiting dataA neutral 3.0 placeholder awaiting data. Zero coverage credit; greyed out on the scorecard.
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.