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

A weekend project that became an excuse to learn housing economics. Don't cite this in policy debates. But the things I learned by building it changed my position on a few things.


I spent a couple days vibin’ this NYC housing simulation: YIMBY NYC. 10,000 individual actors 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.

How It Works

The simulator opens in January 2020 with 10,000 households scattered across 55 NYC neighborhoods. Each agent is a person 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: interested renters make bids, someone wins, and they move in! Developers run a “pro forma” each month and decide whether to break ground on making a new building - potentially financing it depending on the current interest rates.

Try the policy nav

This is the simulator running inline, minus the map. Toggle policies on the left, hit play in the top bar, watch the trend charts at the bottom. For the full thing with neighborhood maps and detail panels, open the standalone simulator.

NYC Housing History

The simulator’s in-game history tab walks through 180 years of NYC housing events, legislation, and history. Every policy in 2020 NYC is a reaction to the unintended consequences of the previous one — the simulator can’t pretend 2020 is a blank slate.

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

FAR (Floor Area Ratio)

The hidden number that rules our life in NYC, and no one talks about it. Here’s how it works:

With a FAR of 1 — if you have a 1,000 sq ft lot, you can build one story. Or 2 stories on 500 sq ft, leaving the other half of the lot empty. Or 4 stories on 25% of the lot.

The number determines whether a neighborhood is a forest of towers (Midtown, FAR 10) or detached suburban homes (Staten Island R1, FAR 0.5). It’s the single biggest dial in housing policy, and the average New Yorker has never heard the term.

NYC neighborhoods by FAR

Scale 0–24 FAR

A sampling of real NYC zoning. Bars scale 0–24 (NYC's commercial peak, in special Midtown districts). Click a column header to sort. Filter by borough below.

What gets built

~75% of NYC residential land is R1–R5 (FAR ≤ 1.25). The state's Multiple Dwelling Law caps residential at FAR 12 citywide; commercial special districts (Hudson Yards, Midtown East) reach 18–24. Most residential supertalls used air-rights transfers and bonuses to clear the FAR 10 R10 cap.

Two things that surprised me building this:

Most of NYC is zoned closer to Bayside than Midtown. Roughly three-quarters of residential land in the city is R1–R5: single- and two-family homes. The dense city you picture from movies is a small slice of the actual zoning map. Even Williamsburg required a 2005 upzone to get to its current ~FAR 2.4, and it’s still less than a quarter of Midtown’s allowance.

Residential is capped at FAR 12 by state law (the Multiple Dwelling Law). R10, the densest as-of-right residential district, sits at 10.0 — set in 1961 and barely moved since. Every residential supertall in Manhattan got there through air-rights transfers, special bonuses, or sliver-tower geometry tricks — not because zoning lets you build big. The Brooklyn Tower, Steinway Tower, 432 Park: all worked around the cap, not within it.

Commercial zoning is a different story. The 2017 Midtown East rezone pushed FAR to 18 on Lexington/Madison/Third, 21.6 on Park Avenue around Grand Central, and 24 in the blocks immediately adjacent to it. Hudson Yards was up-zoned to 18 base with peaks at 24. NYC happily lets offices reach FAR 24; it draws the line at apartments past 12.

In the simulator, the “upzone-all” scenario extends FAR 10 citywide — i.e. lets 50 neighborhoods do what 5 currently can. That’s already a much bigger move than New York has been willing to make.

The Pro Forma (The Developer’s Spreadsheet)

Every month, the simulation runs a “pro forma” — a math equation checking if a new building will be profitable.

It estimates rent revenue, subtracts running costs, and compares that potential profit against construction costs, land prices, and loan interest. It’s a harsh binary. When the Fed raises interest rates, loans get expensive, and projects die.

The most consequential real-world example: 421-a. Until it expired in June 2022, the tax abatement was the difference between rental construction penciling out or not in NYC. Without it, the pro forma turned negative for most rental projects even at 2022’s record-high rents. New multifamily rental starts dropped roughly 80% the following year. The math has to work or nobody builds — even in the middle of a housing crisis.

Same logic applies to interest rates. When the Fed went from ~0% to 5.5% in 2022–2023, projects that had been profitable on paper for years suddenly weren’t. The pipeline didn’t slowly empty — it snapped. This is real options theory: when the future gets volatile, the value of waiting goes up. Developers don’t have to choose to build; they can just wait, and they often do.

Moving Chains

Build more? How will building more luxury apartment buildings for yuppies do anything other than gentrify our historic neighborhoods?

In the simulation, when a new building opens, high-income tenants move in. But they leave their old apartments vacant. Middle-income tenants move into those, leaving theirs vacant. This creates a moving chain (economists call this “filtering”). One new luxury unit can shake loose 4–5 moves down the chain, ending in a unit that becomes affordable to someone who otherwise wouldn’t have had one.

But watch what happens when you don’t build that luxury tower. The chain breaks. The high-income newcomers still arrive — they’re not going away because you didn’t build — but now they compete for existing, older housing, outbidding lower-income residents. Noah Smith calls this the “Yuppie Fishbowl” effect: luxury towers act as fishtanks that safely absorb high-income demand. Without the fishbowl, the yuppies are loose in the ecosystem, eating everything.

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. Universal rent control in the simulator is catastrophic. It creates “golden handcuffs” locking tenants into apartments that no longer fit them (empty-nesters keep 3BRs, families squeeze into studios) because giving up a below-market deal feels like an irrational loss. 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 Illusion of “Low Rent” (Lost Human Potential)

When you toggle on 100% universal rent control, the “Average Rent” metric on the dashboard looks amazing. But the simulation forced me to code a new metric to capture reality: Waitlist Suffering.

This tracks the total months people spend desperately searching for housing. Under rent control, waitlist suffering skyrockets. The rent is legally “low,” but nobody can actually get an apartment because the vacancy rate drops to zero.

The economic term for this destroyed human potential is Deadweight Loss. It measures the value lost when people who want to live, work, and contribute to the city are locked out. In the code, it’s a brutal calculation: counting up all the people forced into shelters or out of the city, and multiplying that by the wages they would have earned. Low rents don’t matter if you’re stuck in a shelter or forced to leave your home entirely.

You can’t just upzone everywhere (Infrastructure Strain)

It’s tempting to play God and just upzone the entire city to solve the crisis instantly. But real infrastructure — subways, sewers, electrical grids — was sized for original neighborhood densities.

I had to code in an Infrastructure Strain penalty. If a neighborhood’s population doubles beyond its original capacity, the model applies compounding costs: terrible commutes from subway overcrowding, and a 15% added cost for developers who now have to upgrade water mains and dig deeper foundations. It proved to me that you can’t just dump infinite density on one single neighborhood; you have to spread the new housing citywide.

The supply side is real but partially captured

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. A land value tax (LVT) shifts the distribution 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.

Glossary

Every term I’d never heard before starting this — plus NYC specifics and source links. Search or click any term to expand.

Housing glossary

From the simulator

67 housing-economics terms with NYC specifics. Click a term to expand for full context, history, and links.

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.

Disclaimer

This is a vibe coded housing simulator. We’re not simulating every atom in the universe — we’re just codifying some simple rules into code and seeing if there’s any emergent properties. So: don’t take the magnitudes literally. Don’t cite this in housing-policy debates. Just treat this as a way to interact with a political opinion essay in a video game rather than reading a dry urban econ PhD thesis.