SSM-Audit Q&A Series – Housing Early-Warning (Question 30)

Prices hold, yet days-on-market and concessions climb

Question
Median prices in our city are steady, listings look healthy, and monthly reports say
“stable.” But days-on-market is creeping up in edge neighborhoods, price cuts and
concessions are more common, appraisals are missing contract more often, and
builder cancellations bunched this quarter. Why does the market feel softer when
the headline price is flat?

Answer ✅
Price medians lag cadence. When demand thins at the edges, agents widen concessions,
appraisals miss more often, and absorption slows—even if medians hold for a while.
SSM-Audit adds a stability band beside the KPIs you already publish so you see
whether the market is calm and repeatable or drifting toward a downturn—well before
median prices move.

What the bands would have shown 📊
Days-on-market (DOM) stability sliding A+ -> A0 in outer ZIPs (longer time to sell)
Price-cut share degrading to A- (more listings reduce list vs close)
Concession share tilting A0 -> A- (credits, buy-downs, and freebies rise)
Absorption cadence weakening A+ -> A0 (new listings outpace pendings)
Appraisal gap incidence rising (A0 -> A-) on financed deals at higher LTV
Builder cancellation rate softening A0 -> A- after promotional spikes

What to do now 🛠️

  1. Band at micro-market level: publish bands by ZIP, price tier, and property type weekly.
  2. Lead with cadence, not medians: when DOM band < A0 for 2 weeks, rebalance pricing and
    marketing mix for that tier first.
  3. Triage concessions: cap buy-downs where concession band slips; prefer small, frequent
    price moves over large last-minute cuts.
  4. Protect financed contracts: if appraisal gap band < A0, pre-check comps, adjust list
    strategies, and encourage rate locks.
  5. Watch absorption: when absorption band < A0, pace new listings and builder releases,
    focus on move-in-ready inventory.
  6. Stress-test builders: if cancellation band degrades, tighten release gates and vendor
    terms until the band recovers.

How SSM-Audit helps (practicalities) 🌟
No additional infrastructure: runs beside MLS exports, builder reports, and closing files.
Numbers unchanged: prices, DOM, concessions remain exactly as reported; stability is a
read-only overlay.
Easy to use: spreadsheet/BI friendly; one lightweight weekly panel per market.
Universal language: A++ / A+ / A0 / A- / A– aligns agents, builders, lenders, and city teams fast.

CLI 💻 — try our mini Calculator to identify the drift
(Mini CLI Download Page)

Feed your CSVs and see bands and drift at a glance (numbers unchanged).

# Days-on-market (DOM) stability
ssm_audit_mini_calc housing.csv --kpi "DOM Stability" \
  --out bands_dom.csv --plot_kpi "DOM Stability" --build_id housing

# Price-cut share (pct listings with reductions)
ssm_audit_mini_calc housing.csv --kpi "Price-Cut Share" \
  --out bands_pricecut.csv --plot_kpi "Price-Cut Share" --build_id housing

# Concession share (credits/buy-downs)
ssm_audit_mini_calc housing.csv --kpi "Concession Share" \
  --out bands_concess.csv --plot_kpi "Concession Share" --build_id housing

# Absorption cadence (new listings vs pendings)
ssm_audit_mini_calc housing.csv --kpi "Absorption Cadence" \
  --out bands_absorb.csv --plot_kpi "Absorption Cadence" --build_id housing

# Appraisal gap incidence (pct financed deals w/ gap)
ssm_audit_mini_calc housing.csv --kpi "Appraisal Gap Incidence" \
  --out bands_gap.csv --plot_kpi "Appraisal Gap Incidence" --build_id housing

# Builder cancellation rate (weekly)
ssm_audit_mini_calc housing.csv --kpi "Builder Cancellation Rate" \
  --out bands_cancel.csv --plot_kpi "Builder Cancellation Rate" --build_id housing

Outputs you will get:
• CSVs with stability bands for each timestamp (e.g., bands_dom.csv).
• Drift charts per KPI (--plot_kpi) showing where edges soften first.
• Optional alerts if you enable thresholds in your setup.

Technical notes

Representation: x = (m, a) with a in (-1, +1)
Collapse parity: phi((m,a)) = m
Order-invariant pooling:
  U = sum(w_i * atanh(a_i))
  W = sum(w_i)
  a_out = tanh( U / max(W, eps_w) )

Typical bands (example):
  A++: a >= 0.75
  A+:  0.50 - 0.75
  A0:  0.25 - 0.50
  A-:  0.10 - 0.25
  A--: a < 0.10

Navigation
Back: SSM-Audit Q&A Series – Semiconductor Quality (Question 29)
Next: SSM-Audit Q&A Series – Stablecoin Stress (Question 31)

Page disclaimer
Illustrative scenario for research and education. Observation-only; do not use for critical decisions without independent validation.