What's the rent growth outlook for the Nashville multifamily market over the next 3 years, and what's driving that forecast?
cat skills/forecasting/references/request.md
cat > /vercel/sandbox/build_payload.py << 'EOF'
import json
nash_raw = [
("2024-07-01",1799.584362),("2024-08-01",1801.424332),("2024-09-01",1801.214563),
("2024-10-01",1794.473364),("2024-11-01",1780.109834),("2024-12-01",1770.912062),
("2025-01-01",1769.548549),("2025-02-01",1800.276724),("2025-03-01",1808.029050),
("2025-04-01",1814.714893),("2025-05-01",1825.408853),("2025-06-01",1831.680138),
("2025-07-01",1827.930050),("2025-08-01",1837.415524),("2025-09-01",1840.899143),
("2025-10-01",1854.803583),("2025-11-01",1849.245502),("2025-12-01",1865.213900),
("2026-01-01",1874.422468),("2026-02-01",1864.523219),("2026-03-01",1856.635031),
("2026-04-01",1872.545404),("2026-05-01",1886.223971),("2026-06-01",1894.898530),
("2026-07-01",1892.686675),("2026-08-01",1887.510100),
]
nation_raw = [
("2024-07-01",2021.064758),("2024-08-01",1999.096508),("2024-09-01",1983.485121),
("2024-10-01",1956.163833),("2024-11-01",1939.061396),("2024-12-01",1933.520577),
("2025-01-01",1932.925160),("2025-02-01",1933.821042),("2025-03-01",1946.327995),
("2025-04-01",1955.239935),("2025-05-01",1943.977553),("2025-06-01",1947.104872),
("2025-07-01",1946.274835),("2025-08-01",1937.857483),("2025-09-01",1932.567659),
("2025-10-01",1950.860341),("2025-11-01",1945.122502),("2025-12-01",1946.173485),
("2026-01-01",1951.893580),("2026-02-01",1945.370452),("2026-03-01",1945.901904),
("2026-04-01",1948.456431),("2026-05-01",1951.014572),("2026-06-01",1948.288042),
("2026-07-01",1934.446753),("2026-08-01",1917.923318),
]
history = [{"period": d, "value": round(v,2), "source": "datamart"} for d,v in nash_raw]
peer_history = [{"period": d, "value": round(v,2), "source": "datamart"} for d,v in nation_raw]
history_check = {"count": len(nash_raw), "sum": round(sum(v for _,v in nash_raw),2), "last_value": round(nash_raw[-1][1],2)}
peer_history_check = {"count": len(nation_raw), "last_value": round(nation_raw[-1][1],2)}
level_ratio = nash_raw[-1][1] / nation_raw[-1][1]
payload = {
"metric": {"name": "mf_rent_ts.asking_rent_latest_avg (Nashville MSA multifamily asking rent)", "units": "$", "family": "rent_or_occupancy"},
"subject": {"entity_type": "market", "entity_id": "34980", "label": "Nashville, TN MSA"},
"horizon": {"years": 3, "intervals": "annual"},
"as_of": "2026-09-11",
"requested_lookback_years": 3,
"caller_disclosures": {
"peer_selection_basis": f"parent nation (US) default; level ratio {level_ratio:.3f}, both series trending flat-to-down over trailing 12mo (Nashville roughly flat, US down ~1.5%)",
"excluded_periods": [{"period": "2024-01 to 2024-06", "reason": "source break / null values in Nashville series; US national series shows a discontinuous ~2.5x level drop starting 2024-07, indicating a methodology change - excluded pre-break period from both subject and peer history"}],
"sibling_series_note": "in-place rent checked in same fetch; in-place rent has been far stickier (12mo chg ~0.01% vs asking's 3.0%) reflecting a large embedded mark-to-market gap, not divergence in trend direction",
"sibling_divergence_pct": 0.029,
"lookback_note": "full clean history available is 26 months (Jul 2024-Aug 2026) post data source break; below the 30-month ideal depth",
"rate_instrument": "fed_funds"
},
"history": history,
"history_check": history_check,
"peer_history": peer_history,
"peer_history_check": peer_history_check,
"context_signals": {
"supply_pipeline": {
"existing_stock": 177268,
"under_construction_t12": 11714,
"permitted_units_t13_t24": 5350
},
"migration": {
"inbound_income": 127487,
"outbound_income": 125761
},
"employment": {
"job_growth_1_year_pct": 0.0324
},
"rate_environment": {
"current_rate": 3.63,
"projected_rate": 3.4,
"projected_as_of": "2028",
"note": "FOMC median dot-plot; horizon target year 2029 exceeds furthest available projection (2028) - shortfall flagged"
}
},
"scenarios": ["base", "upside", "downside"]
}
with open("payload.json","w") as f:
json.dump(payload, f, indent=2)
print("done")
EOF
python3 /vercel/sandbox/build_payload.py
cat /vercel/sandbox/payload.json | head -5cd /vercel/sandbox && python skills/forecasting/scripts/forecast.py --version && python skills/forecasting/scripts/forecast.py --file payload.json
Nashville multifamily rent growth: muted near-term, ~2% base case through 2029 — supply, not demand, is the swing factor
Asking rents in Nashville sit at $1,888/unit as of August 2026, up 3.0% over the trailing 12 months , but the forward math flattens sharply. Running the market's asking-rent series through the forecasting engine (25 months of clean history post a mid-2024 data-source break, benchmarked against the national series) produces a base case of +1.8% in year 1, +0.6% in year 2, and -0.5% in year 3 — essentially flat, cumulative growth of under 2% over three years . The upside case (tighter absorption, faster permit pullback) reaches +8.9% cumulative by 2029; the downside (heavier deliveries, softer leasing) falls to -4.9% cumulative .
What's driving the flat read:
One flag on the read: the engine's peer check against the national aggregate came back with a large statistical mismatch (Nashville's growth trajectory diverges well outside the normal band versus the national series), and with only ~25 months of clean post-break history, confidence on this projection is medium, not high — there isn't a full cycle in the data to lean on for the terminal anchor . Treat the base case as directionally right (soft near-term, gradual firming as the permit slowdown works through) rather than precise to the decimal.
Bottom line: this is a market working off a supply hangover, not a demand problem. If you're underwriting acquisitions now, model rent growth closer to the downside-to-base range for years 1–2 and don't count on a reacceleration until the under-construction pipeline clears — likely 2028 onward as the permit slowdown starts showing up in delivery counts.
This is a read-only snapshot of a RealAI analysis.