Iteration 2.5 adds a replacement-cost moderator to test whether construction-cost spreads explain the Detroit / Chicago no-dip. Public construction-cost source files (RLB Q1 2026 city-level index, Mortenson Q4 2025 metro cost movement, Turner, ENR, Census C30) are captured; the clean market-level panel is pending parsing. Iteration 3 plans a 30-market expansion and a Class A vs B vs C apartment rent breakout.
Panel regression of forward h-quarter rent growth on rolling-4Q supply pulse, three pulse interactions (× demand z, × supply barriers, × sector), and lagged controls (vacancy, rent). Market and time fixed effects; cluster-robust standard errors at canonical_market_id. Sample size varies by horizon: n = 7,927 at h=0 / h=4; 7,675 at h=8; 7,339 at h=12; 7,003 at h=16. Pooled apartment + industrial; 43 markets × up to 96 quarters.
Deep dive in Methodology tab →| Market | Sector | Supply Barriers | Demand z | Fwd 2Y Pulse | Quadrant | Heuristic Screen |
|---|
The question: when a market's apartment or industrial stock grows by more than 2% in a year, does that excess supply translate into rent compression? And which market features predict whether the answer is "yes, hard" or "no, the market absorbs it"?
A market's supply pulse is the share of its existing stock added through new construction over the past 12 months, computed as rolling-4-quarter completions divided by stock 4 quarters earlier. A 2% pulse means a market with 100,000 apartment units added 2,000 new units in the past year. The model treats this as the "shock" and asks how rents respond at horizons of 0, 4, 8, 12, and 16 quarters out.
How hard is it to build new product in this market? Green Street rates each market on zoning friction, entitlement timelines, regulatory regime, and physical land constraints. A "Very Low" market like Atlanta lets developers build quickly. A "Very High" market like New York throttles supply structurally. We encode the grade as 1 to 5 (Very Low to Very High) so it can enter the regression as a moderator.
How strong is the demand backdrop in this market relative to other US markets in the same year? We build a composite of employment growth + median HHI growth, then take a cross-sectional z-score within (year, sector). A z-score of +1 means the market's demand strength is one standard deviation above the cross-market average that year. -1 means one standard deviation below. Around zero is roughly average.
Each β (beta) value tells you "how much rent growth moves per unit of the predictor." For example, β_pulse×demand = +0.347 at h=4 quarters means: for every additional 1% of supply pulse, in a market with a +1 demand z-score, rent growth one year out is 0.347 percentage points HIGHER than in a market at the cross-sectional average. The "×" interaction terms multiply: pulse × demand strength becomes the workhorse of the model.
The model says strong demand absorbs new supply almost entirely, while weak demand turns supply pulses into rent compression. This passes statistical significance (p < 0.01) at multiple horizons. If you can only track one variable when underwriting overbuild risk, track demand strength.
We expected high supply barriers to dampen the rent response to a pulse - barriers limit how much new supply actually arrives. Instead, the model shows the opposite: at h=8, β_pulse×barriers = -0.303 (p = 0.043), meaning high-barrier markets show MORE rent response per unit of pulse. This is a single statistically significant cell at one horizon with a counterintuitive sign. Several mechanisms could produce it - we surface this as a real research finding worth Tier-2 discussion before final framing, not as an established conclusion.
A residual is the gap between what really happened and what the model predicted. A large positive residual means the market's actual rent growth exceeded the prediction - the model under-predicted strength. In Detroit and Chicago, large positive residuals over 2022 to 2024 are the quantitative signal that the "no-dip" phenomenon is real and not yet explained by the model. Iteration 2.5 tests whether a replacement-cost moderator can absorb that residual. Hypothesis, not yet a fitted result.
| Quadrant | Underwriter takeaway |
|---|---|
| Compression Zone High barriers + strong demand |
Pricing power durable through pulses. Underwrite higher rent growth; lean into replacement-cost-aware bids. |
| Absorbed Sprint Low barriers + strong demand |
Pulses absorb because demand is strong. The trap arms the moment demand softens. Track employment + in-migration as leading indicators. |
| Latent Risk High barriers + weak demand |
Barriers prevent overbuild but offer no protection against a demand failure. Underwrite a longer hold and a more conservative rent path. |
| Overbuild Trap Low barriers + weak demand |
Textbook risk. Price the deal off pipeline magnitude. If forward 2Y pulse is below 2% the trap isn't currently armed; above 2% expect rent compression in years 1 to 2. |
Green Street publishes employment and median HHI growth at annual frequency. To use them as moderators in a quarterly model, we replicate each year's value to all four quarters of that year. This is standard panel practice and the model's fixed effects absorb any seasonality this introduces.
Coefficients with p-values below 0.05 are flagged in bold in the coefficient table. The DemandRegime interaction passes p < 0.01 at multiple horizons; the SupplyBarriers interaction passes p < 0.05 at h=8 quarters. R-squared peaks at 0.85 at h=0 (because the dependent variable is highly auto-correlated with itself) and falls to roughly 0.45 at h=16 quarters where the model has to predict 4 years out. The more interesting fits are h=4 and h=8.
| Market | Sector | Period | Frequency | Stock | Completions | Vacancy | Rent | Pulse 4Q |
|---|