Price Carrington Park in Jonesboro, GA against the Jonesboro submarket: in-place rent by bedroom type versus submarket in-place by bedroom, occupancy and retention versus submarket, and the submarket's 12-month in-place rent trend and tradeout. Where does the asset sit relative to the market it's in?
mkdir -p work && cat > work/carrington_vs_submarket.py <<'EOF'
prop={'1BR':1260.50,'2BR':1550.92,'3BR':1738.29,'All (avg)':1447.87,'All (median)':1447.50}
sub ={'1BR':1240.64,'2BR':1398.67,'3BR':1625.24,'All (avg)':1388.76,'All (median)':1334.50}
psf={'1BR':(1.75,1.58),'2BR':(1.34,1.28),'3BR':(1.22,1.22),'All':(1.51,1.34)}
print("In-place premium vs submarket")
for k in prop: print(f" {k}: ${prop[k]-sub[k]:+.0f} ({prop[k]/sub[k]-1:+.1%})")
for k,(p,s) in psf.items(): print(f" {k} $/sf: {p} vs {s} ({p/s-1:+.1%})")
# asking vs in-place (loss-to-lease proxy)
pa={'1BR':1350.86,'2BR':1566.75,'3BR':1948.29}; sa={'1BR':1307.60,'2BR':1443.05,'3BR':1634.64}
for k in pa: print(f" {k} asking premium vs sub: {pa[k]/sa[k]-1:+.1%}; prop asking/in-place {pa[k]/prop[k]-1:+.1%}; sub asking/in-place {sa[k]/sub[k]-1:+.1%}")
# submarket monthly ts (Jul-25..Aug-26)
months=['2025-07','2025-08','2025-09','2025-10','2025-11','2025-12','2026-01','2026-02','2026-03','2026-04','2026-05','2026-06','2026-07','2026-08']
ipavg=[1320.04,1327.05,1330.28,1331.07,1337.77,1349.45,1355.50,1359.74,1364.47,1366.68,1368.85,1373.23,1377.51,1382.27]
ipmed=[1284,1287,1290,1289,1296,1300,1305,1310,1316,1318,1319,1326,1331,1331]
to=[0.017769,0.053504,0.006939,0.018541,0.036503,0.062958,0.013975,0.012215,0.016764,-0.001474,0.004451,-0.008356,0.017372,0.001421]
ton=[69,78,63,75,77,64,102,121,107,84,392,147,130,161]
occ=[0.9775,0.9787,0.9724,0.9689,0.9586,0.9609,0.9561,0.9508,0.9584,0.9565,0.9435,0.9352,0.9321,0.9422]
print(f"\nSub in-place avg Aug-25->Aug-26: {ipavg[-1]/ipavg[1]-1:+.2%}; median {ipmed[-1]/ipmed[1]-1:+.2%}")
print(f"Sub in-place avg detail latest vs 12mo ago: {1388.76/1329.89-1:+.2%}")
l12=slice(2,14)
w=sum(t*n for t,n in zip(to[l12],ton[l12]))/sum(ton[l12])
print(f"Sub T12 (Sep25-Aug26) weighted tradeout: {w:+.2%}, n={sum(ton[l12])}")
f=slice(2,8); b=slice(8,14)
for nm,s in [('Sep25-Feb26',f),('Mar26-Aug26',b)]:
print(f" {nm}: {sum(t*n for t,n in zip(to[s],ton[s]))/sum(ton[s]):+.2%}")
print(f"Sub occupancy Aug-25 {occ[1]:.1%} -> Aug-26 {occ[-1]:.1%}")
print(f"Retention: prop 71.2% vs sub 61.2% = {71.21-61.2:+.1f} pts")
print(f"Prop occupancy gap: {0.9455-0.9471:+.2%}")
print(f"Prop tradeout +6.75% vs sub +0.22% latest: {0.0675-0.0022:+.2%} gap")
EOF
python3 work/carrington_vs_submarket.pyCarrington Park rents above its submarket and holds occupancy at the submarket level. It keeps more of its residents, and it is still pushing rents on new leases while the rest of the submarket has stopped. The premium is almost all in the larger units, and the submarket around it is getting weaker.
Rent by bedroom (in-place, averages)
| Carrington Park | Jonesboro submarket | Premium | |
|---|---|---|---|
| 1BR | $1,261 | $1,241 | +1.6% |
| 2BR | $1,551 | $1,399 | +10.9% |
| 3BR | $1,738 | $1,625 | +7.0% |
| All units | $1,448 | $1,389 | +4.3% (median +8.5%) |
Occupancy and retention
Submarket trend over 12 months
Where it sits: Carrington Park (330 units, built 1998, renovated 2017) is a top-tier garden property in a submarket that is getting softer .
I couldn't measure the property's own 12-month rent change because its tracking history is shorter than 12 months. Its reading of 100% occupancy a year ago likely just marks when tracking started, so I didn't use it .
This is a read-only snapshot of a RealAI analysis.