I'm considering the acquisition of age-restricted (55+) rental communities in Fort Collins MSA, and I want a read, inclusive of demographic trends, on where senior rental demand is strongest across submarkets. Please compare rents per square foot and leasing velocity at existing communities, and flag submarkets where new supply is still in lease-up. Identify the strong submarkets and provide guidance on what I should expect to pay per unit for class A communities and what rent and occupancy levels are reasonable to underwrite for acquisition.
"""Fort Collins MSA 55+ rental read: property metrics, premiums vs submarket, velocity, pricing ratios.
Inputs are copied from query_data results (RealAI Datamart, Sep 2026)."""
import json
props = {
# name: submarket, units, sqft, asking, asking_psf, inplace, inplace_psf, occ_snapshot, dom_30d, retention, unleased_30d
"Affinity at Fort Collins (2017)": dict(sub="Fort Collins - South", units=161, sqft=795, ask=2533.67, ask_psf=3.68,
ip=2762.59, ip_psf=3.56, occ=0.8944, dom=46, ret=0.8447, unleased=18,
sale_ppu=263490.68, sale="2024-08", leases={"2026-05":6,"2026-06":7,"2026-07":4,"2026-08":2}),
"Affinity at Loveland (2016)": dict(sub="Loveland", units=155, sqft=780, ask=2257.73, ask_psf=3.51,
ip=2470.76, ip_psf=3.26, occ=0.9484, dom=114, ret=0.871, unleased=11,
sale_ppu=251245.16, sale="2024-08", leases={"2026-05":6,"2026-06":3,"2026-07":5,"2026-08":3}),
"Avenida at Centerra (2021)": dict(sub="Loveland", units=154, sqft=860, ask=2736.76, ask_psf=3.12,
ip=2534.87, ip_psf=2.97, occ=0.9286, dom=37, ret=0.7922, unleased=16,
sale_ppu=None, sale="2025-12",
leases={"2025-09":2,"2025-10":11,"2025-11":2,"2025-12":4,"2026-01":4,"2026-02":4,"2026-03":3,
"2026-04":3,"2026-05":7,"2026-06":6,"2026-07":4,"2026-08":3}),
}
subs = { # conventional MF submarket snapshot
"Fort Collins - Central": dict(ask_psf=2.15, ip_psf=2.21, ask=1818.66, ip=1614.99, occ=0.9383, dom=69, ret=0.659, ask_t12=-0.0006, ip_t12=0.0258),
"Fort Collins - South": dict(ask_psf=2.13, ip_psf=2.02, ask=1877.41, ip=1762.00, occ=0.9457, dom=58, ret=0.713, ask_t12=0.0294, ip_t12=0.0144),
"Loveland": dict(ask_psf=2.05, ip_psf=1.97, ask=1965.59, ip=1842.95, occ=0.9497, dom=56, ret=0.686, ask_t12=-0.0013, ip_t12=-0.0068),
"Fort Collins - North": dict(ask_psf=2.18, ip_psf=1.54, ask=2605.07, ip=1767.17, occ=0.9696, dom=54, ret=0.852, ask_t12=0.9305, ip_t12=0.1030),
}
out = {"property": {}, "submarket": {}}
for n, p in props.items():
s = subs[p["sub"]]
lm = list(p["leases"].values())
avg_leases = sum(lm) / len(lm)
out["property"][n] = {
"asking_vs_inplace_spread_pct": round((p["ask"] - p["ip"]) / p["ip"] * 100, 1),
"inplace_psf_premium_vs_submarket_pct": round((p["ip_psf"] / s["ip_psf"] - 1) * 100, 1),
"asking_psf_premium_vs_submarket_pct": round((p["ask_psf"] / s["ask_psf"] - 1) * 100, 1),
"inplace_rent_premium_vs_submarket_usd": round(p["ip"] - s["ip"]),
"unleased_pct_of_units": round(p["unleased"] / p["units"] * 100, 1),
"avg_leases_signed_per_month": round(avg_leases, 1),
"monthly_lease_rate_pct_of_units": round(avg_leases / p["units"] * 100, 1),
"months_to_absorb_unleased_at_current_pace": round(p["unleased"] / avg_leases, 1),
"retention_minus_submarket_pts": round((p["ret"] - s["ret"]) * 100, 1),
"price_per_sf_at_sale": round(p["sale_ppu"] / p["sqft"]) if p["sale_ppu"] else None,
"gross_rent_multiplier_on_current_inplace": round(p["sale_ppu"] / (p["ip"] * 12), 1) if p["sale_ppu"] else None,
}
for n, s in subs.items():
out["submarket"][n] = {"asking_vs_inplace_spread_pct": round((s["ask"] - s["ip"]) / s["ip"] * 100, 1)}
# Pricing context: conventional Class A trades (2018-2021 vintage) vs 55+ trades
conv = {"Bucking Horse (2018, Dec-25)": (330279.5, 2047.96, 994),
"Copperleaf Place (2018, Aug-25)": (295744.68, 1663.85, 691),
"Cycle (2018, Aug-24)": (296296.3, None, None),
"281 Willow (2021, Sep-23)": (329949.24, 1698.57, 532)}
out["conventional_comps"] = {k: {"ppu": round(v[0]),
"grm_on_current_inplace": round(v[0] / (v[1] * 12), 1) if v[1] else None,
"price_psf": round(v[0] / v[2]) if v[2] else None} for k, v in conv.items()}
senior_ppu = [263490.68, 251245.16]
conv_ppu = [v[0] for v in conv.values()]
out["avg_55plus_trade_ppu"] = round(sum(senior_ppu) / 2)
out["avg_conventional_classA_trade_ppu"] = round(sum(conv_ppu) / len(conv_ppu))
out["55plus_discount_to_conventional_pct"] = round((out["avg_55plus_trade_ppu"] / out["avg_conventional_classA_trade_ppu"] - 1) * 100, 1)
# Price guidance: apply the observed 55+ GRM band (on today's in-place rents) to a Class A 55+ rent level
grms = [out["property"][n]["gross_rent_multiplier_on_current_inplace"] for n in out["property"] if out["property"][n]["gross_rent_multiplier_on_current_inplace"]]
out["grm_band_55plus"] = [min(grms), max(grms)]
for rent in (2450, 2550, 2650):
out[f"implied_ppu_at_inplace_{rent}"] = [round(g * rent * 12, -3) for g in (min(grms), max(grms))]
# Concession drag at Avenida: up to $7,500 off vs 12-mo lease at in-place avg
out["avenida_concession_pct_of_annual_rent"] = round(7500 / (2534.87 * 12) * 100, 1)
out["avenida_effective_rent_after_max_concession"] = round(2534.87 - 7500 / 12)
print(json.dumps(out, indent=1))
cd /vercel/sandbox && python3 senior_fc_analysis.py
Loveland is the only submarket in the Fort Collins MSA with proven demand for 55+ rentals. Even there, the three Class A communities are signing new leases below their current rent rolls or giving concessions. Underwrite today's asking rents, not the in-place rents, and don't pay conventional Class A prices per unit.
Scope. The Datamart tags 27 senior-restricted properties in the MSA. Only three are market-rate 55+ apartments with live rent tracking: Affinity at Fort Collins, Affinity at Loveland and Avenida at Centerra. The rest are assisted living, affordable/income-restricted, or for-sale cottages. The rent and leasing comparison below therefore rests on three communities. That makes it a thin comp set, so treat the figures as directional.
| Property | In-Place Rent/Unit | In-Place $/SF | Asking $/SF | Asking vs In-Place Spread % | $/SF Premium vs Conventional % | Occupancy | Unleased % of Units | Avg Leases Signed/Month | Retention Rate | Median Days on Market |
|---|---|---|---|---|---|---|---|---|---|---|
| $2,763 | $3.56 | $3.68 | -8.3% | +76% | 89.4% | 11.2% | 4.81 | 84% | 46 | |
| $2,471 | $3.26 | $3.51 | -8.6% | +66% | 94.8% | 7.1% | 4.21 | 87% | 114 | |
| $2,535 | $2.97 | $3.122 | +8.0% | +51% | 92.9% | 10.4% | 4.43 | 79% | 37 |
Rent per square foot. 55+ product earns a large premium. In-place rent per square foot runs 51–76% above conventional apartments in the same submarket, or $630–$1,000 more per month .
The warning sign is on new leases:
Leasing velocity. All three communities sign 4–5 leases a month, about 3% of their units. At that pace their unleased inventory takes about 2.5–4 months to clear .
Where these assets do win is retention. They keep 79–87% of residents, 11–19 points above conventional apartments in their submarkets . Lower turnover is the core of the operating case.
Occupancy:
| Submarket | Verdict | Net migration % (submarket) | Median age moving in vs out | Retiree share / avg HH-head age (anchor city) | Conventional occupancy / median DOM | Conventional rent spread (asking vs in-place) | Lease-up flags |
|---|---|---|---|---|---|---|---|
| Strongest | +1.04% | 44 vs 43 | Loveland city 21.3% / 40.71 | 95.0% / 56 days | +6.7% | Plat 10 at The Ranch (Windsor, 353 units, 88.9% occupied, 58 unleased)2 | |
| Mixed / soft for 55+ | -0.24% | 39 vs 38 | Submarket median household income $147.5K1 | 94.6% / 58 days | +6.5% | The Granary (264 units, 89.8% occupied, 35 unleased, 306 days on market) | |
| Not proven | +0.85% | 43 vs 40 | n/a1 | 97.0% / 54 days | Unreliable data | Ascend at Old Town (2024) figures inconsistent | |
| Avoid | -2.05% | 37 vs 33 | Fort Collins city 12.8% / 30.9 | 93.8% / 69 days | +12.6% | The Landing at Lemay (344 units, 67.4% occupied, 110 unleased, 396 days on market) |
Loveland is the clear leader:
Windsor and Timnath are the growth fringe. Net migration is +3.5% in Windsor and +8.0% in Timnath, with high incomes . Neither has any 55+ rental stock yet, so they are an opportunity to build new, not a place to buy existing assets. Windsor is also technically in the Greeley CBSA .
Fort Collins – South has the money but not the performance. Household incomes are the MSA's highest at $147.5K . But Affinity there is the weakest of the three communities, and a conventional project (The Granary) is still leasing up nearby.
Central is a student market to avoid. People are leaving on net (−2.0%) , and it has the biggest conventional lease-up in the market: The Landing at Lemay, only 67% occupied .
Supply still in lease-up. I found no 55+ rental project currently leasing up. All the active lease-ups are conventional apartments (listed in the table above), and they compete for 55+ residents only at the edges. The bigger supply risk for age-restricted rentals comes from for-sale homes:
Resident profile. Residents of these communities average 77–82 years old. They pay 43–49% of their income in rent , which means they're drawing on savings and home equity rather than income. So the ceiling on rents here depends on home values, not wages.
Price per unit (my judgment):
Rent and occupancy to underwrite:
Risks:
What I'd act on now: pursue Loveland assets at or below about $300K per unit, underwritten on asking rents. What would change the view: if Avenida's December 2025 sale price comes in above $325K per unit, the market is pricing 55+ like conventional Class A, and the guidance range shifts up.
This is a read-only snapshot of a RealAI analysis.