The market, plainly explained.
Every score Havn shows is produced by the formula on this page — nothing hidden, nothing subjective. This page renders from the same scoring module that computes every score shown anywhere in the app, so this explanation can never drift from what you actually see on a market page.
The buy score is a weighted sum of four sub-scores, each on a 0–100 scale where higher favors buyers and lower favors sellers.
Buy Score = Rate × 35% + Inventory × 30% + DOM Trend × 20% + Price Cuts × 15%
Model v1, effective 2026-07-20.
100 − percentile rank of the current 30yr rate within its trailing 24-month range
clamp((months of supply − 2) / 5 × 100, 0, 100)
clamp(50 + clamp((current avg DOM − 90-day avg DOM) / 90-day avg DOM, −50%, +50%) × 100, 0, 100)
clamp(price-cut % / 30 × 100, 0, 100)
Illustrative — computed from representative sample data, not a live metro. As of 2026-07-20.
| Mortgage rate | 37.5 | × 35% | 13.1 |
| Inventory | 36 | × 30% | 10.8 |
| Days-on-market trend | 66.7 | × 20% | 13.3 |
| Price cuts | 41.7 | × 15% | 6.3 |
The headline sentence shown with every score (e.g. on the homepage or a market page) isn't written per metro or generated freely — it's built from a fixed set of phrases, one pair per sub-score, describing what a high or low value means. The two sub-scores furthest from neutral (50) in the breakdown above are picked, and their phrases are joined. It never says anything the numbers above don't already show, and when the two biggest drivers pull in opposite directions, the sentence says so rather than forcing a one-sided story.
“Homes are sitting on the market longer than usual, and inventory remains tight.”
Generated from the worked example above — for real metros, this describes today's actual data.
| Range | Reading |
|---|---|
| 0–30 | strongly favors sellers |
| 31–45 | leans seller favor |
| 46–55 | neutral / balanced |
| 56–70 | leans buyer favor |
| 71–100 | strongly favors buyers |
The rate sub-score currently reflects only where today's rate sits within its trailing 24-month range. A momentum adjustment — whether a fast recent move up or down should shift the score further — is deliberately left out for now: the direction it should push the score isn't settled without backtested data, and an honest formula beats a decorative one. It's reserved for a future model version once it's been validated against historical outcomes.