I built a 50-year NYC housing simulator. Here's what I learned (mostly not what the simulator said).


I spent a couple days (and Claude spent ~20 sessions) building YIMBY NYC — a simulation where 10,000 “agents” of varied incomes bid on NYC apartments, move to minimize commute, have kids and look for places with more space, lose jobs, double up with friends, sometimes leave the city when they can’t take it anymore.

Go to kaighn.com/yimby and hit play to advance month by month from 2020 to 2070. Toggle policies in the left nav — remove parking minimums, upzone the Bronx, levy a land value tax, mandate 100% affordable housing on every new project, abolish CEQR — and watch what happens.

A note on confidence before we start

This is a one-person project that ran for a few days. Where I am on the methodology spectrum, borrowing Alejandro’s framing from a friend chat:

  1. I have no idea what my AIs did.
  2. I (+ AIs) did roughly X to establish methodology. I tentatively stand behind the qualitative directions. I would be embarrassed if someone found an obvious invalidating bug. ← I’m here.
  3. Methods adhere to canonical sources, reviewed by people who weren’t me.

So: don’t take the magnitudes literally. Don’t cite this in housing-policy debates. The model is a thinking aid, not an oracle. Where I have reasonable confidence is in qualitative ordinal claims — “X is worse than Y”, “policies that share property Z perform worse than ones without it.” The cardinal numbers (e.g. “2.8 million units built”) are made up by an engine I wrote in a few days.

What I want to share is what I learned by building it, not what the simulator “proved.” The construction process itself was the education — committing causal beliefs to code forces you to face which ones contradict.

How the thing works (briefly)

The simulator opens in January 2020 with 10,000 households scattered across 55 NYC neighborhoods. Each is an agent with an income, household size, age, work location, savings, and a tolerance for commute. Each month — each “tick” — they ask the same question: am I in the right place?

Some shop around. Some renew. New arrivals come, retirees leave. Available units go up for auction: market-rate clears at the marginal-bid price; rent-stabilized units get screened by income with noise (which causes “Yuppie Fishbowl” — wealthy tenants capturing cheap regulated apartments). Developers run a pro forma each month and decide whether to break ground.

The mechanism that drove most of the model’s interesting behavior is the Stone-Geary “subsistence cliff”:

The subsistence cliff

Drag the sliders. Watch utility crash when rent leaves less than $800 for food, transit, and necessities — not gradually, but all at once.

Income left after rent:$1,500
Subsistence needed:$800
Discretionary:$700

Affordable

Why is this a cliff and not a slope?

Classical economics assumes goods are substitutable — if rent goes up, you can just consume less food. Stone-Geary utility says no: you need at least subsistence consumption (≈$800/mo for transit + groceries + utilities), and the slider here treats that as binding. Below the cliff, the unit isn't merely "less attractive" — it's infeasible. This is why high-income areas have stable demand while low-income areas see catastrophic flight when rents tick up.

Drag the income slider down. Notice the discontinuity. Below the cliff, the agent doesn’t merely shrug and accept a worse deal — the unit is infeasible. They cannot live there because food, transit, and utilities aren’t substitutable for housing. They search elsewhere, or they flee. This is why low-income flight in housing crises looks like a regime change, not a gradual response curve.

A handful of other mechanisms matter a lot for results (I’ll defend these below): the endowment effect locking in rent-stabilized tenants, land cost capitalization eating upzoning windfalls, search friction (you only see a few units a month), and the auction mechanic itself. These are the load-bearing pieces. The model has a lot of other features (gentrification, blight, demolition, capital flight, life events) which add color but don’t drive the headline policy ordering.

Before continuing, one piece of context: every policy in 2020 NYC is a reaction to the unintended consequences of the previous one. The simulator’s in-game history tab walks through 180 years of this. It’s relevant because the simulator can’t pretend 2020 is a blank slate — it has to start with the layered policy state we actually inherited:

180 years of NYC housing policy

From the simulator

Every reform created the conditions for the next crisis. Tenement overcrowding → zoning → Moses → ULURP → NIMBYs → housing shortage → COYHO.

Scroll through 180 years ↓

The Tenement Era

1840s–1900s
1840s
First purpose-built tenements appear on the Lower East Side as Irish and German immigration surges. By 1900, the LES has the highest population density in the world — over 330,000 people per square mile. Families of 10 share 325-square-foot apartments with no running water, ventilation, or indoor plumbing.
1867
Tenement House Act of 1867 — New York's first housing law. Requires one privy per 20 residents and a fire escape per building. Largely unenforced.
1879
"Dumbbell tenement" design wins a city competition — narrow air shafts between buildings create the illusion of ventilation while maximizing lot coverage. 80,000 are built over the next 20 years.
1890
Jacob Riis publishes How the Other Half Lives, photojournalism exposing tenement conditions. Sparks reform movement.
1901
Tenement House Act of 1901 ("New Law") — Spearheaded by reformer Lawrence Veiller. Requires every room to have a window opening outside, indoor plumbing, fire-resistant construction, minimum room sizes. Bans dumbbell tenements. Over 200,000 apartments built under the new standards.

The Birth of Zoning

1916–1961
1915
The 40-story Equitable Building rises 1.2 million sq ft straight up from the lot line with no setbacks. Casts a permanent 7-acre shadow. The immediate catalyst for zoning reform.
1916
1916 Zoning Resolution — First comprehensive zoning law in the United States. Three use districts (residential, commercial, unrestricted) and setback regulations producing the "wedding cake" skyscraper shape. By 1926, 76 US cities adopt similar codes.
1934
NYCHA created — First public housing authority in the US. Will eventually house 400,000+ New Yorkers in 335 developments.
1942
Federal rent control enacted — WWII Emergency Price Control Act freezes rents nationwide. NYC rents frozen at March 1, 1943 levels. After the war ends, most cities decontrol — NYC keeps it, creating the foundation of the modern rent regulation system.
1949
Housing Act of 1949 (Title I) — Federal "urban renewal" program. Robert Moses uses Title I to demolish neighborhoods and replace them with superblocks. Over 15 years, Moses displaces 250,000+ people, disproportionately Black and Puerto Rican.
1955
Jane Jacobs vs. Robert Moses begins. Moses proposes extending Fifth Avenue through Washington Square Park. Jacobs and community activists fight back. The road is blocked in 1959 — first major defeat for Moses's highway agenda.
1956
Cross-Bronx Expressway construction begins. Moses routes a highway through the South Bronx, destroying 60,000 homes. Triggers the spiral of poverty, abandonment, and fire that devastates the Bronx in the 1970s.
1961
1961 Zoning Resolution — Replaces the 1916 code with the FAR system still used today (and modeled in this simulator). Sets maximum FARs by district: R1 (0.5) to R10 (12.0).
1961
Jane Jacobs publishes The Death and Life of Great American Cities — Argues that the top-down urban renewal approach destroys what makes cities work. Champions mixed uses, short blocks, old buildings, and high density. Becomes the most influential book in urban planning history.

Crisis & Rent Stabilization

1963–1979
1963
Penn Station demolished. McKim, Mead & White's 1910 masterpiece razed for Madison Square Garden. Ada Louise Huxtable: "One entered the city like a god. One scuttles in now like a rat." The outrage directly leads to the Landmarks Law.
1965
Landmarks Preservation Commission created — Directly motivated by Penn Station's demolition. Will eventually protect ~37,600 properties — but critics argue it freezes housing supply in the neighborhoods that need density most.
1969
Rent Stabilization Law of 1969 — Creates the modern two-tier rent regulation system. Rent control (pre-1947 buildings) and rent stabilization (buildings with 6+ units built 1947-1974). Approximately 1 million apartments are stabilized.
1971
421-a tax abatement created — Exempts new residential construction from property tax increases for 10-25 years. Becomes the primary incentive for new rental housing — produces over 180,000 apartments by 2022.
1975
NYC fiscal crisis. City nearly declares bankruptcy. Daily News headline: "FORD TO CITY: DROP DEAD". Massive cuts to housing services. NYCHA maintenance budgets slashed — beginning of the $40B+ capital backlog that persists today.
1975
ULURP established — NYC Charter revision creates mandatory public review for zoning changes. Community Boards, Borough Presidents, City Planning Commission, and City Council all get a voice. Designed to prevent another Robert Moses — but eventually empowers NIMBYs to block housing.
1970s
South Bronx burning. At peak, 120,000 fires per year. The South Bronx loses 36% of its housing stock and 40% of its population. 250,000 people displaced. Causes: arson-for-insurance, redlining, the Cross-Bronx Expressway, city service cuts. Housing Commissioner Roger Starr proposes "planned shrinkage" — deliberately withdrawing services from the worst areas.

Koch, Co-ops & Deregulation

1980s–1990s
1982
Co-op conversion wave begins. Landlords convert rental buildings to cooperative ownership. By 1990, ~390,000 co-op units and ~100,000 condo units. NYC becomes overwhelmingly co-op for owner-occupied multifamily — unique in the US.
1986
Koch's Ten Year Housing Plan — Mayor Ed Koch's $5.1 billion plan to build and rehabilitate 100,000 affordable units, leveraging ~100,000 city-owned properties from tax foreclosures. Ultimately produces ~180,000 affordable units — one of the most successful municipal housing programs in US history.
1994
Vacancy decontrol introduced. Stabilized apartments above $2,000/month that become vacant can be permanently deregulated. Landlords also get a 20% vacancy bonus on each turnover. Over 291,000 apartments will be deregulated by 2019.
1997
Rent Regulation Reform Act — Formalizes vacancy decontrol, adds high-income decontrol ($175k income + $2,000 rent). State Senate Republicans extract these in exchange for renewing rent regulation.

Bloomberg Rezonings

2002–2013
2005
Bloomberg-era rezonings begin. DCP rezones Williamsburg/Greenpoint waterfront from manufacturing to residential, enabling 10,000+ new apartments. Over Bloomberg's 12 years, the city rezones ~37% of NYC's land area, producing a net increase of ~180,000 buildable units.
2009
Hudson Yards rezoning — The largest private real estate development in US history. 28 acres of former rail yards rezoned for 18 million sq ft of commercial and residential space. Extension of the 7 train ($2.4 billion) to serve the new neighborhood.

De Blasio & the Housing Crisis

2014–2021
2014
Housing New York plan — Mayor de Blasio pledges to build or preserve 200,000 affordable units over 10 years (later expanded to 300,000). The most ambitious municipal affordable housing program in US history.
2016
Mandatory Inclusionary Housing (MIH) adopted. Developers in rezoned areas must include 25-30% permanently affordable units. First time NYC requires affordability as a condition of upzoning.
2019
HSTPA — The most significant strengthening of rent regulation since 1969. Eliminates vacancy decontrol, vacancy bonuses, and high-income decontrol. Caps IAIs at $15,000/15 years. Stabilized building values drop 15-40% overnight. Over 95,000 stabilized apartments subsequently lost from the rental market (warehousing).
2019
Local Law 97 (Climate Mobilization Act) — Buildings over 25,000 sq ft must meet carbon emission limits, with penalties of $268/ton over the limit. Compliance costs estimated at $5,000-$25,000 per unit, adding pressure to already-squeezed stabilized building finances.
2020
COVID-19 pandemic hits NYC. Population drops as remote workers flee. Vacancy rates spike to 5.1% — the highest in 14 years. Manhattan rents drop 15-20%. Paradoxically, the brief vacancy spike proves rents can fall when supply exceeds demand — exactly what YIMBY economists predicted.
2021
Post-COVID rent surge. Rents snap back as workers return. Manhattan median rent hits an all-time high of $4,000/month by mid-2022. The pandemic's brief rental relief evaporates. Vacancy rate falls back below 2%.

The YIMBY Era

2022–Present
2022
421-a tax abatement expires. After 51 years, the legislature fails to renew NYC's primary incentive for new rental construction. New rental building permits plummet. Developers shift to condos or pause projects entirely.
2023
Record-low 1.4% vacancy rate — NYC Housing and Vacancy Survey finds the lowest vacancy in 50+ years. Median asking rent hits $3,500/month citywide. The "housing emergency" threshold triggering rent regulation is 5%.
2024
Good Cause Eviction signed (April 20, 2024). Extends eviction protections to market-rate tenants statewide. Caps rent increases at CPI + 5% (max 10%). Critically exempts buildings built after 2009 — designed to protect tenants without chilling new construction.
2024
485-x tax abatement enacted (June 2024). Replaces 421-a. Requires 20-25% affordable units and prevailing wages. 40-year benefit period. Attempts to restart the rental construction pipeline that froze after 421-a's expiration.
2024
City of Yes for Housing Opportunity (COYHO) passes (December 5, 2024). The most significant citywide zoning reform since 1961. Legalizes ADUs, eliminates parking minimums, enables transit-oriented development, town center zoning, and UAP. Estimated to enable 82,000+ new homes over 15 years.
2025
DOB begins accepting ADU applications (September 30, 2025). NYC homeowners can legally add basement, attic, and backyard apartments for the first time. Manhattan median rent crosses $5,000/month for the first time — up 22% from pre-pandemic levels.
The pattern

Every generation faces the same cycle: crisis → regulation → unintended consequences → new crisis. Tenement overcrowding led to zoning. Zoning enabled Robert Moses's clearance. Moses's destruction created community review (ULURP). ULURP empowered NIMBYs. NIMBY obstruction caused the housing shortage. The shortage drove COYHO. Can supply-side reform break the cycle?

What I learned

I came in as YIMBY. I left as YIMBY+vouchers.

My priors before building: just build more. Upzone aggressively, eliminate parking and CEQR and prevailing wage requirements, let the market do its thing. Rent control bad, supply-side good.

The simulator agrees with this partially. The best-performing scenario in my dataset — every supply-side reform I could think of, all turned on — produces the lowest rents (about $1,700/mo real in 2070) and the most housing built. But it leaves roughly a million households unhoused, and the discrepancy is structural: 50 years isn’t long enough to undo 50 years of accumulated under-building.

What genuinely updated my view was running Section 8 vouchers. I expected modest individual benefit and significant market distortion. What I observed in the model was the opposite: voucher recipients exit homelessness, stay in the city, reach stable rent burdens — and the side-effect (a small demand-side rent inflation in voucher-accepting neighborhoods) is much smaller than I’d assumed. Roughly 0.5% rent inflation per placement, against a huge anti-homelessness benefit.

Then compare to rent control:

Rent control's golden handcuffs

You signed a rent-stabilized lease in 2010. Now your family grew. Why don't you move?

Rent savings vs market:$2,700/mo
Endowment-weighted breakeven:$2,250
Family size pressure:Cramped (need 3BR)
Move?Stay (locked in)
How the model works

Behavioral econ (Thaler) tells us people overvalue what they have by ~1.5×. For an RC tenant, the breakeven to voluntarily move isn't "market < my RC rent" but "market < my RC rent ÷ 1.5". This means the unit gets misallocated: empty-nesters keep 4-bedrooms, families squeeze into studios. The model calls this the "incumbency penalty" — RC stock is functionally frozen.

Universal rent control in the simulator is catastrophic. The endowment effect locks tenants into apartments that no longer fit them (empty-nesters keep 3BRs, families squeeze into studios). Construction collapses because the cap rate inversion kills profitability. Most of the city flees. The remaining tenants are technically rent-protected but the city as a functioning entity is gone.

The contrast struck me: vouchers and RC are both demand-side interventions aimed at the same problem (low-income tenants can’t afford market rents). But vouchers route around the price signal while RC breaks it. Routing around is much better.

I then read more — Edward Glaeser, Rebecca Diamond, Joe Gyourko, the Moving to Opportunity studies — and the housing-econ consensus broadly says exactly this. Vouchers outperform rent control on basically every metric. The simulator was reproducing what the empirical literature already established. That was a reassuring outcome: a model built from first principles, recovering a result that working housing economists had derived empirically.

So my current position is something like: strong supply-side reform, with a land value tax to prevent landowner capture, with vouchers as the demand-side complement. Rent control narrow and means-tested if at all. This is more “left-YIMBY” or “abundance-with-redistribution” than my original pure-supply position.

The supply side is real but partially captured

Who captures the upzoning?

When zoning allows more density, the marginal value has to go somewhere. Drag to upzone, and watch the surplus get captured.

Landowner windfall75%
Developer margin15%
Lower rents (tenant gain)10%

Without LVT, upzoning is mostly a transfer to the landowner. Build cost stays the same; land cost balloons.

The thing the YIMBY discourse mostly skips: when zoning lets you build twice as much on a lot, the lot becomes worth roughly twice as much. In my model, landowners capture ~75% of the marginal value from upzoning. Developers absorb most of the rest as higher land acquisition costs. Renters see small reductions, slowly.

The fix isn’t to oppose upzoning — it’s to upzone and tax the windfall. Toggle the LVT checkbox above; the distribution shifts dramatically. Without LVT, YIMBY is partly a transfer to current landowners. With LVT, the surplus flows to renters and the public.

I think this is the biggest unforced error in the current YIMBY movement: fighting for upzoning without fighting for the tax that captures its gains.

Combinations beat single policies, by a wide margin

Here are the ten most informative scenarios from my run:

10 policy bundles after 50 years

After 600 simulated months (2020-2070), here's how each bundle ends up. Click a row to see what's inside.

Bundle
Rent (2025$)
Housed

Don't take the magnitudes too literally — this is one model with one set of parameters. The ordinal ranking is more robust than the absolute numbers. The clear pattern: combinations outperform individual policies, and pure rent control is destructive across every metric.

The pattern that holds across every run: individual reforms (parking elimination alone, ADUs alone, LVT alone, even FAR 20 upzoning alone) all underperform combinations. They only matter when stacked. This is unintuitive politically — it’s much easier to advocate for one named bill than for fifteen. But the structural finding is robust to most of the parameters I tweaked. Housing is a multi-equation problem.

The flip side: pure rent control and 100% mandatory affordable mandates are catastrophic in the model. Both shut down construction by inverting the developer’s pro forma, and the city hollows out.

Three takeaways that updated me

  1. Time is the scarce input, not money or political will. Construction has hard physical limits — labor capacity, 36-month delivery, interest rate cycles that pause projects. Every year of delay compounds. The single most important thing about COYHO isn’t its policies, it’s that it passed in 2024 instead of 2034.

  2. “Build more” understates the difficulty by ~10×. The full sentence is: build more and tax the land windfall and train construction labor and maintain political legitimacy through 30 years of cranes and sustain it across multiple recessions. Any one of those failing kills most of the gain.

  3. Demand-side complements are not substitutes for supply. Vouchers, eviction protection, public housing — they extend the survival horizon while construction does its slow thing. None of them work as a primary policy. All of them help when stacked under a supply-side primary.

Defending the methodology, briefly

The mechanisms I treat as load-bearing are all well-established in housing/urban economics:

The implementations are documented in SIMULATION.md, step by step. Gemini critiqued the model six separate times, posing as a housing economist looking for biases; each round produced ~10-15 concrete patches. The current grading function, the equity-via-collapse guard, the land capitalization mechanic, the voucher inflation effect — all came out of that critique loop.

The things I’d want a real housing economist to check before I’d raise my confidence one notch: the parameter calibration (most numbers are eyeballed, not estimated), the labor-capacity constraint shape, and whether the auction mechanic accurately models how NYC rent-stabilized units actually get allocated. If you’re that economist and you want to break this, the source is at github.com/KaighnKevlin/yimby.

Try it. Disagree with it. Tell me what’s wrong.

The simulator is at kaighn.com/yimby. Hit play, toggle some policies, watch the city evolve. The grading system maps three sub-scores to a 0-100 composite — but honestly the letter grades are arbitrary and you should ignore them in favor of the underlying metrics (rent in 2025$, households housed, units built, fraction fled).

The thing I’m most confident in after this whole exercise is the smallest possible claim: housing is a multi-equation problem. No single policy fixes it. The honest answer to “what should we do” is most of them, in the right order, sustained for 30+ years. Which is to say: we should start.