AZ · City data hub
Phoenix, AZ housing methodology
How this city's fixture-backed signals are computed — the formulas, the inputs present for this market, and the limits.
Signal formulas and this city's inputs
Each signal uses a fixed, documented formula. For Phoenix, the cards below show whether the signal was computed and which raw inputs are present or missing — partial coverage is never hidden.
Affordability
72 / 100rentBurden = annualGrossRent / medianHouseholdIncome; score = clamp((0.30 − rentBurden) / 0.30 × 100 + 50, 0, 100)
Higher = relatively more affordable for typical income.
Required inputs: medianGrossRent, medianHouseholdIncome. All present for this city.
Supply
100 / 100intensity = (trailing12Permits / housingUnits) × 1,000; score = clamp(intensity / 0.6, 0, 100)
Higher = new supply growing relative to existing stock.
Required inputs: permits, housingUnits. All present for this city.
Price momentum
63 / 100score = clamp(50 + hpiYoYChangePct × 5, 0, 100)
Higher = stronger recent price appreciation. Not a forecast.
Required inputs: homePriceIndexYoY. All present for this city.
Job market
70 / 100level = clamp((8.5 − unemploymentRate) / 6 × 100, 0, 100); trend = clamp((1.0 − Δ12m) / 2 × 100, 0, 100) (missing → 50); score = round(level × 0.7 + trend × 0.3)
Higher = lower / improving unemployment.
Required inputs: unemploymentRate. All present for this city.
Optional refinement: unemploymentRateChange12m — present: unemploymentRateChange12m.
Economic strength
64 / 100weighted blend of per-capita income level (0.35), income growth (0.45), and regional GDP growth (0.20; renormalized if missing)
Higher = higher / growing metro per-capita income. Not investment advice.
Required inputs: perCapitaPersonalIncome, perCapitaPersonalIncomeGrowthYoY. All present for this city.
Optional refinement: regionalGdpGrowthYoY — present: regionalGdpGrowthYoY.
Climate risk
96 / 100score = round(femaNriRiskIndex) // 0-100, higher = more hazard exposure
Higher = more FEMA NRI hazard exposure (county-level, not property-level).
Required inputs: climateRiskIndex. All present for this city.
Overall
55 / 100positives = avg of available {affordability, supply, priceMomentum, jobMarket, economicStrength}; overall = clamp(positives − (climateRisk / 100 × 20), 0, 100)
Higher = better risk-adjusted reading across available signals.
Derived from the available positive signals above, with a climate-risk penalty.
Limitations
Static fixtures
Values are source-attributed static fixtures bundled with the build — not live data. Provenance is labeled fixture across every metric.
Mixed precision
Inputs land at different geographic levels: city/place (Census ACS), county (FEMA NRI, BLS LAUS), and MSA/CBSA (FHFA HPI, Census BPS, BEA Regional).
No property-level claims
Climate risk and other county/metro values are area-level context. Nothing here predicts risk or value for a specific address or neighborhood.
No investment advice
Computed signals summarize public data. They are not investment, financial, or purchase advice for any individual.
Full methodology
These summaries mirror the platform-wide methodology, which carries the full formulas, weights, confidence model, and the known signal-formula limitations. See this market's sources and data table for the underlying values.
The affordability signal reflects rent relative to income — only part of the real cost of owning. For the recurring and one-time costs beyond a mortgage, see homeownership costs.