Skip to content

BRRRR score

Buy–rehab–rent–refinance. What it measures: gross yield you can actually hold, taxes that don’t eat the hold, and appreciation to refinance against. Weights below are the engine’s (model p0a-2026.07).

All inputs are county-relative percentiles (50 = median tract).

Factor Weight Source
Gross yield 30% ZORI rent ÷ ZHVI price, by ZIP
Low effective tax 22% 2023 Cook municipal effective rates, inverted
Appreciation block 20% capital flow (HMDA 2022→2024) 50% + halo frontier 50%
Renovation + business momentum 12% Chicago permits (18 mo) + licenses (12 mo)
Buyer income 8% HMDA 2024
Market heat (sale-to-list) 8% Redfin, latest quarter, by ZIP
  • Within 1.5 mi of a financially distressed municipality: −26 (−11 within 3 mi). Heavier than the flip penalty because you hold through it.
  • Effective tax rate ≥ 5%: −12, on top of the low-tax weight. High yields in 5%+ tax towns are usually mirages; the tax-trap penalty says so twice on purpose.

Same rule as flip: coverage = share of five universal signals present; below 70%, −0.5 points per missing point. All-null inputs → unscored, not zero.

Confirmed live 2026-07: a Glencoe tract ranked top BRRRR at 88 with a $1.6M median price and null rent — the yield input was simply missing, and the composite renormalized around it. Coverage damping did not catch it (4 of 5 universal signals were present, so no damping applied). The P3 fix is a hard gate: rent/yield is strategy-critical for BRRRR, so a null-rent tract becomes “Unscored (insufficient data)” for BRRRR entirely, reason stated. Grey is the honest color for a tract we cannot underwrite as a rental.

Yield is ZIP-blended and ZORI covers ~288 IL ZIPs. Lake County effective tax is unavailable (portal down), so Lake tracts carry no tax signal. Weights are hand-set until P3 weight learning (labels: achieved yield and refinance feasibility).