PCCP Research - April 2026 - Tier 2 Review

Apartment / Industrial Supply Elasticity

A panel-regression model of how supply pulses translate into rent compression across 50+ US markets and two sectors. Model fit on quarterly actuals - industrial back to 1989Q1, apartment back to 1996Q1, both through 2025Q4. Forecasts through 2035Q4 are surfaced in the drill-down view for context, not used in fitting. The Supply Absorption Quadrant is the named framework for ranking markets by elasticity moderators (supply barriers, demand regime).
Data vintage: CBRE-EA history through 4Q-2025; Green Street fundamentals through 2026-Q1; FRED public data current. Iteration 2 model fit 2026-04-27.
Internal Tier 2 Review. PCCP partners and research team. Not for deal-team distribution until iteration 2.5 maturation. Replacement-cost moderator is in-flight - public construction-cost source files captured (RLB Q1 2026, Mortenson Q4 2025, Turner, ENR, Census C30); clean panel pending parsing.
Headline Finding
The supply × demand-regime interaction is the model's most reliable signal: β = +0.347 at h=4 (p < 0.001) and +0.197 at h=8 (p = 0.005). A 2% rolling four-quarter supply pulse (trailing-12-month completions ÷ year-ago stock) in a weak-demand market (z = -1) implies roughly 100 to 180 bps of additional rent compression per year over the next 1 to 2 years; strong-demand markets (z = +1) absorb the same pulse without measurable rent damage.
The supply main effect is not statistically significant at any horizon. The action is in the interactions. The 2% threshold is a useful screen, not a fitted breakpoint.

The five-line thesis

  1. Demand absorbs. Cross-sectional demand strength (z-score of employment + median HHI growth) is the model's most robust moderator. β = +0.347 at h=4Q, p < 0.001.
  2. Barriers don't help the way folklore says. High-barrier markets show MORE rent response per unit of pulse, not less. Plausible interpretation: rare pulses in those markets represent more genuine shocks rather than noise.
  3. Detroit and Chicago resist anyway. No-dip behavior is real (large positive residuals 2022 to 2024) and not explained by current model variables. Replacement-cost economics are the leading hypothesis.
  4. Forward 2Y pipeline is the actionable variable. Ranking markets by forward 2Y pulse % surfaces the underwriting watchlist directly. The 2% threshold is the trap-arming line.
  5. Iteration 2.5 tests the gap. Adds replacement-cost spread as a fourth moderator to test whether construction-cost economics explain the Detroit / Chicago resilience. Hypothesis - not yet a fitted result.

What to do with it

  • Forward 2Y pulse > 2% AND demand z < 0: underwrite a longer hold, conservative rent path, and a material concession allowance for years 1 to 2. The trap is armed.
  • Compression Zone (high barriers + strong demand): pricing power is durable through pulses. Lean into replacement-cost-aware bids.
  • Absorbed Sprint (low barriers + strong demand): the trap arms the moment demand softens. Track employment growth and in-migration as leading indicators.
  • Detroit / Chicago / similar no-dip markets: the model under-predicts your rent path. Treat the residual as load-bearing evidence, not noise.

Top 5 markets by heuristic screen score - apartment and industrial

Heuristic screen, not a fitted prediction. Composite = (forward 2Y pulse % × 100) - (supply barriers score 1 to 5) - (2 × demand regime z). The 2× weight on demand has no coefficient backing - it is a hand-built screening rule for ranking, not a model output. Use to surface markets for review; do not interpret as an estimated rent impact. Top 5 shown per sector.

Overbuild Risk Plot

Each dot is a market. X-axis = forward 2Y supply pulse (% of stock). Y-axis = demand regime z-score. Color = supply barriers grade. Size = market stock. Lower-right corner = highest overbuild risk.

What's next

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.

Methodology in 60 words

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 →
Internal PCCP research. Iteration 2 of N. Do not distribute beyond the partner team without sign-off.
Data sources: CBRE-EA, Green Street, FRED, Census BPS, public REIT 10-K / 10-Q filings.
Tier 2 Review Draft. Internal only - PCCP partners and research team. Not for deal-team distribution until iteration 2.5 maturation. Replacement-cost moderator in-flight; source files captured, parsing pending.
-
Markets
PCCP priority + tier-2
-
Market-Quarters
Industrial 1989Q1+, Apartment 1996Q1+
Forecasts through 2035Q4
-
Supply Pulses Above 2%
Historical observations
-
R Squared (h=4)
Panel regression fit
-
Demand p-value (h=4)
DemandRegime interaction

Headline findings

  • DemandRegime is the dominant moderator. β_pulse×demand = +0.347 at h=4Q (p < 0.001) and +0.281 at h=8Q (p < 0.01). Strong demand absorbs pulses; weak demand amplifies them.
  • SupplyBarriers coefficient signs unexpectedly. β_pulse×barriers = -0.118 at h=8Q (p < 0.05). Plausible interpretation: pulses in high-barrier markets are rarer and represent more genuine supply shocks.
  • Detroit / Chicago "no-dip" not explained by demand or barriers. Both have negative DemandRegime z-scores yet historically resisted compression. Large positive residuals 2022 to 2024. Replacement-cost economics are the leading hypothesis; iteration 2.5 quantifies them.
Quadrant counts (current panel)
  • Compression Zone (high barriers + strong demand): -
  • Absorbed Sprint (low barriers + strong demand): -
  • Latent Risk (high barriers + weak demand): -
  • Overbuild Trap (low barriers + weak demand): -
Confidence calibration
  • DemandRegime interaction: p < 0.01 across h ∈ {4, 8, 12} Q
  • SupplyBarriers interaction: p < 0.05 at h=8Q
  • R² range: 0.85 (h=0Q) to ~0.45 (h=16Q)
  • n = 7,927 (h=0/4) to 7,003 (h=16); cluster-robust SE at market_id
Not yet in scope: Replacement-cost moderator (iter 2.5, source files captured), Class A/B/C apartment breakouts, building-size segmentation within industrial.

Overbuild Risk Plot (Apartment)

Each dot is a market. X = forward 2-year supply pulse (% of stock). Y = demand regime z-score. Color = supply barriers grade. Lower-right corner is highest overbuild risk. The 2% pulse line is the trap-arming threshold. The Supply Absorption Quadrant tab shows the same data on the categorical 2x2 quadrant lens.

Supply Absorption Quadrant

Markets plotted on Supply Barriers (Green Street grade, 1=Very Low to 5=Very High) by Demand Regime z-score. Bubble size = forward 2-year pipeline as % of stock. Hover for detail. Toggle sector and quadrant to filter.

Time-to-Impact: rent response to a 2% supply pulse

Implied cumulative rent impact of a 2% supply pulse at horizon h, by Supply Barriers grade. Demand regime held at cross-sectional mean. Slide horizon and toggle sector to recompute.
Reading the chart: A line in the negative half-plane means rent compression; a line in the positive half-plane means rent acceleration. Curves diverge by Supply Barriers grade because the model includes a SupplyPulse x SupplyBarriers interaction.
Pulse magnitude is a y-axis rescale. Predicted rent impact is linear in the pulse (point estimate = pulse × coefficient expression), so doubling the pulse doubles every horizon's predicted impact. Curve shapes and the relative ordering of Supply Barriers grades are pulse-invariant by model construction; only the y-axis scale changes.

No-Dip Diagnostic

Top panel: actual rent YoY (solid) versus the model's prediction (dashed). Bottom panel: residual as columns - green positive bars = market resisted compression more than the model predicted; red negative bars = market compressed more than expected. Defaults to Detroit; switch to Sun Belt comparators (Austin, Phoenix) for contrast. The largest positive Detroit / Chicago residuals over 2022 to 2024 are the quantitative signal behind the "no-dip" thesis.

Market Watchlist

Sortable, filterable scorecard. Default-sorted by Heuristic Screen Score descending - highest-screen markets at the top. Click any column header to re-sort. Use the filters to narrow by sector or quadrant. Export filtered subset as CSV. The Heuristic Screen Score is a hand-built linear combination, not a fitted model prediction. See column tooltip.
Market Sector Supply Barriers Demand z Fwd 2Y Pulse Quadrant Heuristic Screen

Market Drill-Down

Pick a market and sector to see all four core series on one screen: rent level, completions, vacancy rate, and supply pulse. Quarterly history (industrial 1989Q1+, apartment 1996Q1+) plus forecast through 2035Q4. Vertical dashed line marks the actual / forecast boundary; shaded bands show the GFC (2008Q4-2009Q3) and COVID (2020Q1-2020Q3) periods. Note on continuity: apartment actuals + forecasts are now both rolled up from CBRE-EA submarket files via the same inventory-weighted aggregation, which closes most of the historical-to-forecast step that previously showed up in markets like Detroit. A small residual step can remain at the boundary because the forecast file is 4Q25 vintage (made before CBRE saw the 2026Q1 actual) - that vintage offset resolves on the next quarterly refresh. Industrial uses CBRE's market-level files for both history and forecast; CBRE's column there (avrate) is technically availability rate, not pure vacancy.

Methodology

A plain-English walkthrough of the model, then the formal specification, variables, coefficient table, and caveats.

Plain-English walkthrough

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"?

Concept 1
Supply pulse - the shock

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.

Concept 2
Supply Barriers - structural protection

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.

Concept 3
Demand Regime z-score - cyclical absorption capacity

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.

Concept 4
Beta coefficients - what the model says rent does

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.

Concept 5
Why DemandRegime is the dominant moderator

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.

Concept 6
Why the SupplyBarriers coefficient sign is unexpected (open question)

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.

  • Rare-shock interpretation: supply pulses in high-barrier markets are rarer relative to baseline; when one occurs it represents a more genuine shock rather than noise.
  • Endogenous selection: developers in high-barrier markets only break ground when rent levels already justify it, so pulses there cluster with rent peaks - the apparent moderation is composition, not causation.
  • Encoding sensitivity: Supply Barriers is treated as a continuous 1-to-5 score; a categorical (above-/below-median) encoding may produce a different sign. Robustness check planned for iteration 3.
  • Sector heterogeneity: the joint apartment + industrial estimate may obscure sector-specific responses; sector-by-sector refit deferred.
Concept 7
Residuals - the gap the model can't explain

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.

Concept 8
SAQ quadrants - what each means for an underwriter
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.
Concept 9
Why DemandRegime is annual but the panel is quarterly

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.

Concept 10
Confidence calibration

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.

Specification

rent_yoy_lead_h ~ supply_pulse_4q + supply_pulse_4q × supply_barriers_score + supply_pulse_4q × demand_regime_z + supply_pulse_4q × sector_industrial + vacancy_rate_lag1 + rent_yoy_lag1 + market_FE + time_FE

Variables

  • SupplyPulse_4q = rolling 4-quarter completions / 4-quarter-lagged stock (% of stock)
  • SupplyBarriers = Green Street market-level grade (Very Low/Low/Average/High/Very High to 1-5)
  • DemandRegime z = cross-sectional z-score of {employment growth, Median HHI growth} within (year, sector)
  • Controls = lagged vacancy, lagged rent growth, sector dummy
  • Fixed effects = market and time; cluster-robust SE at canonical_market_id

Coefficient Table

Caveats

  • Apartment forecasts are baseline-only (CBRE-EA does not publish multi-scenario apartment forecasts); industrial has 5 scenarios.
  • ReplCostSpread interaction is in-flight for iteration 2.5. Public construction-cost source files are captured (RLB Q1 2026 city-level index + indicative hard costs, Mortenson Q4 2025 metro cost movement, Turner, ENR, Census C30); the clean market-level replacement-cost panel is pending parsing - not yet a regression input.
  • SupplyBarriers coefficient sign is unexpected (negative). Interpretation: pulses in high-barrier markets are rarer and represent more genuine supply shocks. Robustness check planned for iteration 3.
  • Inland Empire West data uses RIVERS (full Riverside MSA) - overstates IE West footprint by ~40%.
  • Apartment Class A vs B vs C breakouts not yet ingested. Building-size segmentation within industrial deferred.

Raw Panel Data Browser

22,321 market-quarter observations. Filter by market, sector, period range, frequency. Export filtered subset as CSV.
Loading...
MarketSectorPeriodFrequency StockCompletions VacancyRent Pulse 4Q