thoughts on building systems, thinking with data, and learning through real projects.

Part 3 of 10·Measuring New York

The price of standing still

Two community districts in New York. In one, the median renter household pays $1,301 a month and earns about $29 thousand a year — roughly half its income, before utilities, before transit, before anything else a household spends money on. In the other, the median renter pays $2,768 a month and earns about $160 thousand a year. The second household pays more than twice as much rent in dollars, and about half as much rent as a share of what it makes.

If you read New York's housing geography through the standard headline — median rent — those two CDs sit at opposite ends of the map. CD 108 (the Upper East Side) is dark. CD 206 (Belmont / East Tremont in the Bronx) is light. The story the headline tells is expensive Manhattan, cheap Bronx, which is true and also useless. The thing that actually matters to a household — can we afford it? — runs in the opposite direction. By that measure CD 206 is dark and CD 108 is light. The Bronx CD is the most squeezed in the city. The Upper East Side is one of the least.

This chapter is about that inversion, and about a second pattern layered on top of it: the same CDs that lose the rent-burden ranking also lose the eviction-filings ranking and the housing-code violations ranking. Three different bureaucracies, three different datasets, three signals that point the same way. And the headline-rent number — the metric you'd find at the top of a typical NYC-rent article — points the opposite way from all three.


Why housing deserves its own chapter

Chapter 1 was about a city as it appears in minutes. This chapter is about the same city as it appears in the most consequential question most households face on a given month, which is can we stay here. Mobility describes the world a household can reach. Housing stability describes whether they get to keep choosing.

Three things happen at home — sleep, recovery, the unglamorous logistical work of holding a life together — that don't happen anywhere else, and that compound on themselves day to day. A household that's stressed about whether next month's rent is payable, or about a years-long open HPD violation that the landlord won't repair, or about a Housing Court summons that arrived in February, is running on a substrate the city has degraded. Whatever else NYC offers them, that is the floor of their week.

The data doesn't show any of that directly. What it does show, with unusual clarity, is the geography of who's running on which floor.


How housing stress is measured in this chapter

The temptation, when a question is this big, is to reach for one number. The standard one is median asking rent. There's a reason it shows up in every NYC-rent article: it's clean, it's published, it tells you what an apartment costs. It just answers a different question from the one most households are actually asking.

A household's housing stress has at least three dimensions, each of which can move independently of the headline-rent number for the CD it lives in.

The first is affordability — what share of the household's income goes to rent. The Census Bureau measures this directly, table B25070, and the resulting number — the rent burden — is what most housing economists actually care about. It moves with both rents and incomes, and it can be high in places with low rents (because incomes are even lower) and low in places with high rents (because incomes are higher still).

The second is displacement pressure — how often households are getting taken to housing court. The state's Office of Court Administration publishes case-level filings data through a coalition of housing-data nonprofits, and the resulting number — eviction filings per 1,000 renter households per year — captures something the rent number can't: even at a given burden level, some neighborhoods generate filings at very different rates, because some landlords file aggressively and some don't.

The third is structural condition — whether the housing the household is paying for is actually habitable. The NYC Department of Housing Preservation and Development inspects buildings on complaint and after-the-fact, and the resulting violation counts — separated into classes A, B, and C — track the kinds of conditions tenants are actually living with.

Going in, the working hypothesis for this chapter was that these were three independent axes of housing stress that wouldn't necessarily co-rank. The data says otherwise. Filings and HPD violations density move so tightly together at the CD level (Spearman ρ = +0.82) that they're effectively the same signal — the structural-distress signal of "places where the housing is bad and the landlords are filing." Rent burden is meaningfully independent of that signal (ρ = +0.67) — it captures something the filings don't. And median rent is inversely correlated with both (ρ = −0.77 and −0.77): the CDs with the highest median rents are the least stressed on the other two measures, not the most. That last inversion is the chapter's spine.


The map

The federal definition of cost-burdened is a household that spends ≥30% of its income on gross rent. Throughout this chapter "rent-burdened share" refers to the share of a CD's renter households who fall into that bracket — the same B25070 brackets the Census publishes per tract, aggregated up to community districts. Cost-burdened isn't a fringe condition: it's a third or more of renter households in every NYC community district, and over 60% in the most-stressed ones.

The shape is the shape of where rents are cheapest — which sounds wrong until you remember that burden is rent over income, and incomes vary across NYC by a factor of seven (CD 206 median income: $29K; CD 101 median income: $209K). The Bronx is the darkest borough; Manhattan below 96th Street is the lightest part of the city, on a metric that, naively, you'd expect to point the other direction.


Five neighborhoods

I picked five community districts to anchor the chapter — one for each distinct corner of the (burden, structural distress) space the data lays out. Rankings below are out of 59 CDs.

CDNeighborhoodBoroughBurden ≥30%Median rentMedian incomeFilings / 1k / yrHPD viol. / 1k / yr
206Belmont / East TremontBX63% (#1)$1,301$29,000137 (#1)1,285 (#1)
313Coney Island / Brighton BeachBK62% (#5)$1,250$51,00040 (#29)243 (#46)
109Manhattanville / Hamilton HeightsMN51% (#37)$1,796$66,00073 (#15)727 (#9)
108Upper East SideMN41% (#54)$2,768 (#5)$160,00017 (#56)90 (#57)
411Bayside / Little NeckQN51% (#41)$2,342$101,00032 (#38)163 (#50)

Each one is its own story. Use the tabs below to explore — selecting an anchor highlights it on the map and surfaces its detail.

Belmont / East Tremont (CD 206) is the worst-off CD in the data, on every axis, by margin. It has the highest share of severely cost-burdened renter households — 40% of CD 206's renters pay at least half of their income in rent, the worst rate in the city. It has the highest rate of housing-court filings — about one new filing every year for every seven renter households in the CD. It has the highest rate of HPD violations density, which after normalization works out to roughly one new violation every nine months for every renter household in the CD, sustained across 2024 and 2025. The class-C subset of those violations — the immediately hazardous ones, lead and missing heat and fire-safety failures — runs at 447 per 1,000 renter households per year, about one such violation every two years for every renter household, on top of everything else. The data says CD 206 is the toughest place in the city to rent. Nothing in the data argues with that.


The contradiction

The median-rent map and the rent-burden map aren't measuring nearby things — they're measuring inverse things. Once you remember that what most households experience as "rent" is rent over income, and that incomes vary across NYC much more than rents do, the inversion stops being a paradox and starts being arithmetic.


A housing-stress score

The chapter's bottom-line summary is a per-CD score combining the two surviving axes:

housing-stress score = 0.7 × rank(rent burden) + 0.3 × rank(structural distress) where rank(structural distress) = mean(rank(filings), rank(HPD)) All ranks are 1–59 within NYC; lower means more stressed.

The 70/30 split isn't arbitrary. HUD's 2025 Worst Case Housing Needs report defines worst-case need as the union of severe rent burden OR severely inadequate housing condition, and finds that 97.2% of worst-case households qualify through rent burden, not housing condition. Affordability is the empirically dominant dimension of housing crisis at the household level — by roughly thirty-to-one. Distress signals matter as confirming evidence, but they describe the cascade after burden has already broken through; the score weights causes more heavily than effects.

Under this score, CD 206 ranks #1 — the most stressed community district in NYC. The top-5 is all Bronx (206, 207, 205, 201, 204). The bottom-5 runs 101 (Financial District), 306 (Park Slope), 102 (Village / Soho), 108 (Upper East Side), 105 (Midtown).

This is a chapter-specific roll-up of housing's two dimensions, not a livability score — there's no mobility, no environmental quality, no economic-opportunity dimension in here. The cross-chapter synthesis is the explicit job of Chapter 9, The Friction Map; this score is one input to that, not a stand-in.


What this means for a household

If you're choosing a neighborhood: don't filter by median rent alone. A CD with $1,300 rent and $29K median income is a different financial proposition than a CD with $2,800 rent and $160K median income, in a direction the headline numbers reverse. The right comparison isn't which apartment is cheaper, it's which apartment leaves more of your paycheck for everything else.

If you're already renting: the displacement-pressure and structural-condition signals — filings rate, HPD violations density — are the ones that don't show up on Streeteasy. They're public, they're updated monthly, and they're at ZIP-level resolution. The CD-level numbers in the table above are starting points. Building-level HPD data lives at the same dataset (wvxf-dwi5) and can be queried for any specific address.


What this measure misses

Three caveats worth holding in mind, with the full list in Chapter 10:

  • Rent-stabilized stock is opaque per-unit. The city publishes counts of rent-stabilized units per building (derived from tax records), but tenants don't get a published list of which apartments are stabilized. In CDs with deep rent-stab penetration — like Washington Heights / Inwood or Hamilton Heights — the measured median rent can drift from the effective market rent, and the burden number absorbs both kinds of households without distinguishing them.
  • Eviction filings aren't evictions executed. A filing is the landlord moving the process forward; most filings settle, get withdrawn, or are dismissed before they become marshal-executed evictions. The displacement-pressure signal captures the act of filing, which is what a renter household actually experiences. The narrower question — who gets physically removed — needs the NYC Open Data marshal evictions dataset (6z8x-wfk4), which is a different and smaller number.
  • HPD violations are reported conditions, not lived conditions. A violation requires a complaint or an inspection. CDs with high HPD violation counts may be CDs where conditions are actually worst or CDs where tenant organizing has been most effective at generating complaints. The data can't separate the two. In practice these probably correlate, but the gradient may be steeper than the raw numbers imply.

Reach for the next chapter

Chapter 1 was about the city as a function of minutes. This chapter has been about the city as a function of dollars-over-income. Chapter 3 will measure the city as a function of air — the PM2.5 readings, the asthma ED rates, the tree-canopy and heat-vulnerability geography that the NYC Department of Health and Mental Hygiene publishes at finer-than-CD resolution than almost any city in the country. Whether the air map agrees with the burden map or runs perpendicular to it is, as of this writing, an open question.