<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Michael Wiebe]]></title><description><![CDATA[Economist working on housing and replication.]]></description><link>https://blog.michaelwiebe.com</link><image><url>https://blog.michaelwiebe.com/img/substack.png</url><title>Michael Wiebe</title><link>https://blog.michaelwiebe.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 29 Jul 2026 09:59:26 GMT</lastBuildDate><atom:link href="https://blog.michaelwiebe.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Michael Wiebe]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[michaelwiebeblog@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[michaelwiebeblog@substack.com]]></itunes:email><itunes:name><![CDATA[Michael Wiebe]]></itunes:name></itunes:owner><itunes:author><![CDATA[Michael Wiebe]]></itunes:author><googleplay:owner><![CDATA[michaelwiebeblog@substack.com]]></googleplay:owner><googleplay:email><![CDATA[michaelwiebeblog@substack.com]]></googleplay:email><googleplay:author><![CDATA[Michael Wiebe]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Explaining Jevons' paradox using supply and demand]]></title><description><![CDATA[Two markets, two graphs]]></description><link>https://blog.michaelwiebe.com/p/explaining-jevons-paradox-using-supply</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/explaining-jevons-paradox-using-supply</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Mon, 27 Jul 2026 00:05:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!w48o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Jevons&#8217; paradox is the idea that improved resource efficiency can lead to higher total use of the resource. The key distinction is between the resource and the service that is produced using the resource. For example, gasoline is a resource used to produce vehicle travel. More topically, GPUs are a resource used to produce AI services. As algorithms become more efficient, will demand for GPUs fall? Or, will better algorithms reduce AI prices, leading to increased demand for AI services and driving up consumption of GPUs?</p><p>There are two opposing effects underlying the paradox. The <em>engineering effect</em> is where improved efficiency means each unit of the service requires less of the resource. But through the <em>demand effect</em>, improved efficiency lowers the price of the service, which increases service demand, thereby increasing demand for the resource. When the demand effect is large enough, it outweighs the engineering effect, and Jevons&#8217; paradox occurs.</p><p>To model Jevons&#8217; paradox, we need two markets: one for the resource, and one for the service. Since the resource is the input used to produce the output, the markets are connected. Hence, any supply and demand explanation of Jevons&#8217; paradox requires two supply and demand graphs.</p><p>Let&#8217;s use the example of fuel efficiency. The service is vehicle travel, which is produced using the resource of gasoline. Vehicle travel is priced in dollars per mile, and gasoline is priced in dollars per gallon; fuel efficiency is miles per gallon. So the Jevons question is: does improved fuel efficiency lead to increased usage of gasoline?</p><p>Graphically, an increase in fuel efficiency shows up as a rightward-shift in the travel supply curve, as each unit of travel is now cheaper to produce, and either a left or right shift in gasoline demand, depending on the elasticity of travel demand.</p><h3>Elastic demand: Jevons&#8217; paradox, gasoline use increases</h3><p>When demand for vehicle travel is elastic, the shift in the travel supply curve increases the quantity of travel demanded by enough that gasoline usage increases. Here, efficiency increases by 50%, but travel quantity increases by more than 50%, so the gasoline demand curve shifts right, and the quantity of gasoline rises.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w48o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w48o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png 424w, https://substackcdn.com/image/fetch/$s_!w48o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png 848w, https://substackcdn.com/image/fetch/$s_!w48o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!w48o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w48o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png" width="1456" height="964" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:964,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130782,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/208498232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w48o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png 424w, https://substackcdn.com/image/fetch/$s_!w48o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png 848w, https://substackcdn.com/image/fetch/$s_!w48o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!w48o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70d526b0-761b-4037-9c20-b7a64b3e1f12_1600x1059.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The market for vehicle travel, with elastic demand (&#949;&gt;1)</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zulG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zulG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png 424w, https://substackcdn.com/image/fetch/$s_!zulG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png 848w, https://substackcdn.com/image/fetch/$s_!zulG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!zulG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zulG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png" width="1456" height="964" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:964,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:122307,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/208498232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zulG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png 424w, https://substackcdn.com/image/fetch/$s_!zulG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png 848w, https://substackcdn.com/image/fetch/$s_!zulG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!zulG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F125c9fd9-208a-4607-a9c6-0ea2f221c6a2_1600x1059.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The market for gasoline. When travel demand is elastic, the gasoline demand curve shifts right.</figcaption></figure></div><h3>Inelastic demand: no paradox, gasoline use falls</h3><p>But when demand for travel is inelastic, the travel supply curve shifts right, but the increase in travel quantity is smaller, so gasoline usage decreases. Here, efficiency increases by 50%, but the quantity of travel increases by less than 50%, so the gasoline demand curve shifts left, resulting in lower gasoline usage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZG5U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZG5U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png 424w, https://substackcdn.com/image/fetch/$s_!ZG5U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png 848w, https://substackcdn.com/image/fetch/$s_!ZG5U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!ZG5U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZG5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png" width="1456" height="964" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:964,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124236,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/208498232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZG5U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png 424w, https://substackcdn.com/image/fetch/$s_!ZG5U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png 848w, https://substackcdn.com/image/fetch/$s_!ZG5U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!ZG5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94885596-63ef-4b20-8ab1-1fea24ab7e3a_1600x1059.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The market for vehicle travel, with inelastic demand (&#949;&lt;1)</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4jzz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4jzz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png 424w, https://substackcdn.com/image/fetch/$s_!4jzz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png 848w, https://substackcdn.com/image/fetch/$s_!4jzz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!4jzz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4jzz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png" width="1456" height="964" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:964,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124607,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/208498232?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4jzz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png 424w, https://substackcdn.com/image/fetch/$s_!4jzz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png 848w, https://substackcdn.com/image/fetch/$s_!4jzz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!4jzz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a75ca5c-0193-480d-add2-8f59d1fd5189_1600x1059.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The market for gasoline. When travel demand is inelastic, the gasoline demand curve shifts left.</figcaption></figure></div><div><hr></div><p>See <a href="http://www.michaelwiebe.com/assets/jevons/jevons.pdf">here</a> for a formal model. Note the similarity to my <a href="https://blog.michaelwiebe.com/p/a-model-of-land-and-housing-part">model</a> of housing produced using land.</p><h3>Appendix: Wikipedia doesn&#8217;t get it</h3><p>The graph on the current Wikipedia <a href="https://en.wikipedia.org/wiki/Jevons_paradox">page</a> is incoherent. It combines the travel and gasoline markets, with the fuel price on the y-axis and the quantity of travel on the x-axis. But there should be two graphs: (fuel price, fuel quantity) and (travel price, travel quantity). They never show the quantity of fuel, and hence cannot actually demonstrate the core result of fuel quantity increasing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!92V-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!92V-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png 424w, https://substackcdn.com/image/fetch/$s_!92V-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png 848w, https://substackcdn.com/image/fetch/$s_!92V-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png 1272w, https://substackcdn.com/image/fetch/$s_!92V-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!92V-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png" width="500" height="354" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e42042f3-078a-498c-a39e-aa3f19a26211_500x354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:354,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram showing a shallow demand curve, where a drop in price from $100 to $80 causes quantity to increase from 10 to 14&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing a shallow demand curve, where a drop in price from $100 to $80 causes quantity to increase from 10 to 14" title="Diagram showing a shallow demand curve, where a drop in price from $100 to $80 causes quantity to increase from 10 to 14" srcset="https://substackcdn.com/image/fetch/$s_!92V-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png 424w, https://substackcdn.com/image/fetch/$s_!92V-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png 848w, https://substackcdn.com/image/fetch/$s_!92V-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png 1272w, https://substackcdn.com/image/fetch/$s_!92V-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe42042f3-078a-498c-a39e-aa3f19a26211_500x354.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[It's time to measure feasible zoned capacity]]></title><description><![CDATA[In California, municipalities are required to show that their zoned capacity, the number of homes that could theoretically be built under the current zoning, meets the housing target assigned by the state.]]></description><link>https://blog.michaelwiebe.com/p/its-time-to-measure-feasible-zoned</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/its-time-to-measure-feasible-zoned</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Tue, 21 Jul 2026 03:11:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nWj1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In California, municipalities are required to show that their zoned capacity, the number of homes that could theoretically be built under the current zoning, meets the housing target assigned by the state. As you&#8217;d expect, these targets are gamed by using fake zoned capacity. One city listed its own city hall building as a likely redevelopment site.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> How do we fix this? By using feasible zoned capacity that is profitable to build at current prices. The city hall building would only be redeveloped if rents reached astronomical levels; it&#8217;s theoretical capacity, but not feasible capacity.</p><p>More generally, zoned capacity can be stranded and infeasible due to redevelopment costs. It&#8217;s cheap to tear down a bungalow, so zoning for a 5-storey apartment building is feasible capacity. But it&#8217;s very expensive to tear down a low-rise apartment building; capacity for one extra floor is infeasible. Each scenario adds four floors of housing, but only one will actually get built. Not all zoned capacity is the same.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nWj1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nWj1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!nWj1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!nWj1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!nWj1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nWj1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2448507,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/205427606?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!nWj1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!nWj1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!nWj1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!nWj1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93455b95-df25-4c70-9613-96e2eac8aa38_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We can think of zoned capacity as the housing supply curve Q<sub>S</sub>(P) evaluated at infinite prices: Q<sub>S</sub>(&#8734;). If rents reached $10,000/month, it could be worth it to tear down those 4-storey buildings and redevelop at 5-storeys. When NIMBYs say &#8220;we have enough zoned capacity&#8221;, they are asking us to wait until rents rise to unbearable levels. This just shows that they don&#8217;t care about housing affordability.</p><p>This graph shows how two cities with the same theoretical zoned capacity can have very different affordability outcomes. City A is mostly bungalows and has liberal zoning, so 80% of the capacity can be built with rents below $3,000. In contrast, City B is mostly apartment buildings with restrictive zoning, so rents need to rise above $8,000 to produce the same number of homes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fdt6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fdt6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png 424w, https://substackcdn.com/image/fetch/$s_!fdt6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png 848w, https://substackcdn.com/image/fetch/$s_!fdt6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png 1272w, https://substackcdn.com/image/fetch/$s_!fdt6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fdt6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png" width="1456" height="890" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:890,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105930,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/205427606?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fdt6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png 424w, https://substackcdn.com/image/fetch/$s_!fdt6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png 848w, https://substackcdn.com/image/fetch/$s_!fdt6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png 1272w, https://substackcdn.com/image/fetch/$s_!fdt6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445b4158-fc88-45be-bc69-f390b595a9cd_1800x1100.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In practice, we want to know how much of the nominal capacity can be produced at reasonable rents. We always need to ask &#8220;capacity at what price level?&#8221;. And the point of upzoning is to shift the supply curve and add capacity that is profitable to build at <em>lower</em> prices. The holy grail is zoned capacity that brings down rents.</p><p>So how do we measure feasible zoned capacity? One approach is a parcel-level &#8216;pro forma&#8217; model, where for each parcel we calculate the optimal project and the probability of development, given current prices and construction costs; see the Terner <a href="https://www.ternerlabs.org/terner-housing-policy-simulator-full-methodology">housing policy simulator</a> and this <a href="https://grattan.edu.au/report/more-homes-better-cities/">Grattan report</a>. A more technical approach is to estimate a structural model and construct the aggregate supply curve. <a href="https://vrollet.github.io/files/city_structure.pdf">Rollet</a>&#8217;s model could be used to quantify how much of NYC&#8217;s zoned capacity is feasible at specific rent levels.</p><p>Read more in my deep dive on upzoning:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:203477869,&quot;url&quot;:&quot;https://www.buildingabundance.ca/p/upzoning&quot;,&quot;publication_id&quot;:5585634,&quot;embedding_publication_id&quot;:null,&quot;publication_name&quot;:&quot;Building Abundance&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!SenQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75fd4eb5-01fa-472c-b086-d4d473fbd67b_1024x1024.png&quot;,&quot;title&quot;:&quot;Upzoning&quot;,&quot;truncated_body_text&quot;:&quot;In 2015, the city of Auckland had roughly 350,000 units of &#8216;zoned capacity&#8217;: homes that could theoretically be built under the existing zoning. So you would expect that adding more zoned capacity would have no effect, like pushing on a string. And yet, after Auckland upzoned in 2016 to allow townhomes and apartments, housing construction surged, leading&#8230;&quot;,&quot;date&quot;:&quot;2026-06-30T17:16:51.288Z&quot;,&quot;like_count&quot;:20,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:20040806,&quot;name&quot;:&quot;Michael Wiebe&quot;,&quot;handle&quot;:&quot;buildingabundance&quot;,&quot;previous_name&quot;:&quot;Michael&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8eb6b1d4-e93c-4b11-b9fd-a47bd9986f08_2385x2385.jpeg&quot;,&quot;bio&quot;:&quot;economist interested in housing and replication&quot;,&quot;profile_set_up_at&quot;:&quot;2022-02-11T20:01:31.269Z&quot;,&quot;reader_installed_at&quot;:&quot;2025-10-06T18:53:05.683Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:5697143,&quot;user_id&quot;:20040806,&quot;publication_id&quot;:5585197,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:5585197,&quot;name&quot;:&quot;Michael Wiebe&quot;,&quot;subdomain&quot;:&quot;michaelwiebeblog&quot;,&quot;custom_domain&quot;:&quot;blog.michaelwiebe.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Economist working on housing and replication.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:20040806,&quot;primary_user_id&quot;:20040806,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-07-08T17:46:09.042Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Michael Wiebe&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}},{&quot;id&quot;:5697594,&quot;user_id&quot;:20040806,&quot;publication_id&quot;:5585634,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:5585634,&quot;name&quot;:&quot;Building Abundance&quot;,&quot;subdomain&quot;:&quot;buildingabundance&quot;,&quot;custom_domain&quot;:&quot;www.buildingabundance.ca&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;A literature review on housing and infrastructure&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75fd4eb5-01fa-472c-b086-d4d473fbd67b_1024x1024.png&quot;,&quot;author_id&quot;:20040806,&quot;primary_user_id&quot;:null,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-07-08T18:33:08.620Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Michael Wiebe&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.buildingabundance.ca/p/upzoning?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!SenQ!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75fd4eb5-01fa-472c-b086-d4d473fbd67b_1024x1024.png" loading="lazy"><span class="embedded-post-publication-name">Building Abundance</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Upzoning</div></div><div class="embedded-post-body">In 2015, the city of Auckland had roughly 350,000 units of &#8216;zoned capacity&#8217;: homes that could theoretically be built under the existing zoning. So you would expect that adding more zoned capacity would have no effect, like pushing on a string. And yet, after Auckland upzoned in 2016 to allow townhomes and apartments, housing construction surged, leading&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a month ago &#183; 20 likes &#183; Michael Wiebe</div></a></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><blockquote><p>Early in the 6th cycle, for example, the City of Vista listed both its own City Hall and public library as sites likely to be torn down and redeveloped as high-density housing. South Pasadena, another affluent suburb dominated by single family homes, predicted that every major grocery store within its borders would be redeveloped into affordable housing. And the pastor of a church in the wealthy enclave of La Canada Flintridge told a local newspaper that she agreed to let the city list church property as a site for future affordable housing, since &#8220;everyone knows&#8221; it will &#8220;never be built.&#8221;</p></blockquote><p>From <a href="https://www.sciencedirect.com/science/article/pii/S1051137724000019">Monkkonen, Manville, and Lens 2024</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Do rising land values explain high housing prices?]]></title><description><![CDATA[Demand for mansions drives up land costs, upzoning does not]]></description><link>https://blog.michaelwiebe.com/p/do-rising-land-values-explain-high</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/do-rising-land-values-explain-high</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Thu, 16 Jul 2026 02:02:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!08Ot!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>To build housing, you need land. So you might think that rising land values are a cause of higher housing prices, in the same way that more expensive construction labor and materials drive up home prices. This is true in some contexts, but not in others. Land values can be a cause of housing prices, but housing prices can also be a cause of land values.</p><p>Consider a city of detached houses, like Vancouver.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> If you&#8217;re a developer trying to build apartments, you need to buy an existing house and redevelop it. But the <a href="https://www03.cmhc-schl.gc.ca/hmip-pimh/en/TableMapChart/Table?TableId=1.10.1&amp;GeographyId=2410&amp;GeographyTypeId=3&amp;DisplayAs=Table&amp;GeograghyName=Vancouver#">average price</a> of a house has risen from $400,000 in 2000 to over $3,000,000 today, reflecting a massive increase in demand from wealthy buyers to live in Vancouver. This translates to a large increase in <a href="https://mountainmath.github.io/canadian_data/basic_descriptive/land_values.html">assessed land values</a>. So demand for detached houses sets a floor on land costs, since you need to outbid a house builder to acquire land.</p><p>For example, suppose a house builder is willing to pay $2M for a teardown bungalow, on which they can build a house that sells for $3M.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Then as an apartment developer, you need to offer at least $2M to buy land. And when demand for houses goes up, house prices increase, so house builders will bid even more for teardowns. If house prices hit $3.5M, you now have to pay $2.5M for land, so your apartment project won&#8217;t pencil until rents go up.</p><p>In this scenario, higher land values represent higher input costs that drive up the price of new apartments. Land behaves like any other construction material, where higher input costs mean higher output prices.</p><p>But there&#8217;s an important case where this doesn&#8217;t hold: when the city upzones to allow higher-density housing. If we change the zoning from detached housing to allow apartment buildings, we create valuable development rights that developers will pay a premium for. </p><p>For example, take the bungalow above. When zoned for a single house, a builder was willing to offer $2M. Since apartments are not allowed, the apartment developer bids nothing. But if we upzone for 12-unit apartments, the developer is now an active bidder. Say the apartment building is worth $12M, and demolition and construction costs are $9M. Then the developer can pay $3M for land; assuming developers are competitive, this is also the parcel&#8217;s market price.</p><p>So upzoning increases the land value from $2M to $3M. But this is <em>not</em> an increase in input costs for building apartments. Initially, the apartment building wasn&#8217;t even allowed, meaning the land cost was infinite. Bringing that cost down to $3M is a definite improvement. Rather, the increased land value reflects the increase in total housing value, since a six-storey apartment building has more homes than a detached house.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><p>From this angle, high land values&#8212;when caused by upzoning&#8212;are a sign of success, because land is being employed for its most valuable use.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> When land is expensive, you should economize on it, by densifying and using <a href="https://www.buildingabundance.ca/i/203477869/upzoning-reduces-land-costs-and-raises-land-prices">less land per home</a>. Restrictive zoning lowers land values by preventing developers from buying land and using it to build apartments. Low land values driven by constrained housing supply are a policy failure.</p><p>It is true that allowing apartment developers to bid on the land increases land costs for house builders. But this is a good thing. When zoning blocks apartments, it makes land artificially cheap by taking developers out of the market. This is a regressive subsidy from apartment renters to house buyers. If people want to live in detached houses, they should pay the market price.</p><p>Ultimately, high land values are caused by high housing demand. Demand for detached houses pushes up the floor on land prices. And demand for apartments leads to higher land values when we upzone to allow them. But if demand is the root cause, then &#8220;lowering land values&#8221; is not a solution.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> We care about lowering housing prices, and the way to do that is by allowing more density to reduce land cost per home and increase housing supply; land prices are just a symptom. Manhattan would have much lower land values if it was zoned for detached houses, but also much higher housing prices.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!08Ot!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!08Ot!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png 424w, https://substackcdn.com/image/fetch/$s_!08Ot!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png 848w, https://substackcdn.com/image/fetch/$s_!08Ot!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!08Ot!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!08Ot!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2907123,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/204946557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!08Ot!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png 424w, https://substackcdn.com/image/fetch/$s_!08Ot!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png 848w, https://substackcdn.com/image/fetch/$s_!08Ot!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!08Ot!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ecf7d2-9bdf-452f-9f6f-e1fe486b7e8d_1535x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>It is still mostly houses:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8l_z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8l_z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8l_z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8l_z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8l_z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8l_z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg" width="1456" height="1125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1125,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:482323,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/204946557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!8l_z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8l_z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8l_z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8l_z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4285751-6388-4c3f-abbb-00444ea5faf4_1650x1275.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>So construction costs are $1M.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>More formally, land values push up apartment costs when a competing use sets the opportunity cost. For example, houses are the competing use for apartments, so an apartment developer has to outbid a house builder. Then higher house prices push up the landowner&#8217;s reservation price that the developer has to match. But when apartments are the highest-value use, then upzoning to allow apartments leads to higher land values, but not higher land costs.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>And high land values can be captured for the public using land value taxes. Hence, we want high pre-tax land values and low after-tax land values.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Trivially, we can lower land prices by banning valuable land uses. If we want to reduce land costs for apartments, we can tax mansions.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>This assumes that demand to live in Manhattan is unchanged, as the jobs remain in the office buildings.</p></div></div>]]></content:encoded></item><item><title><![CDATA[No nexus: affordable-housing impact fees are unconstitutional]]></title><description><![CDATA[Creating jobs for poor people is good, actually]]></description><link>https://blog.michaelwiebe.com/p/no-nexus-affordable-housing-impact</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/no-nexus-affordable-housing-impact</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Mon, 29 Jun 2026 00:13:13 GMT</pubDate><content:encoded><![CDATA[<p>In 2013, San Diego increased its <a href="https://web.archive.org/web/20260110033748/https://www.kpbs.org/news/economy/2013/11/05/san-diego-city-council-votes-increase-linkage-fees">affordable-housing impact fee</a> on new office buildings. The rationale: office buildings bring in low-wage employees who can&#8217;t afford market-rate housing, so commercial developers are charged a fee to build affordable housing. However, if your office building brings in high-wage workers, you don&#8217;t have to pay the fee.</p><p>But wait, isn&#8217;t it good to create jobs for low-wage workers? Isn&#8217;t this just a tax on poor people?</p><p>In the U.S. <a href="https://en.wikipedia.org/wiki/Sheetz_v._County_of_El_Dorado">legal context</a>, if a land use has a negative impact, then an impact fee can be charged to mitigate that impact. For example, a developer builds a subdivision of houses; this leads to more traffic on the highway, increasing congestion and maintenance costs. Here the negative impact is the traffic congestion and strain on the public road budget. So a traffic impact fee is connected to the negative impact; in legal jargon, there is a &#8220;nexus&#8221; between the fee and the impact, which makes the fee legitimate.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>What is the negative impact caused by creating jobs for poor people? There&#8217;s an entire industry of consultants writing nexus studies to justify these affordable-housing impact fees, but they never seem to say what the negative impact is. For example, here&#8217;s a <a href="https://web.archive.org/web/20260628220331/https://communityscale.com/inclusionary-housing-nexus-calculator-from-open-data/">recent example</a> from Minneapolis. The argument is that new development brings residents who spend in the local economy, which creates jobs; some workers at those jobs will be poor, and hence unable to afford market-rate housing (in the sense of spending at most 30% of income on housing). Hence, development creates a need for affordable housing.</p><p>But which part is the negative impact? Is the low-wage worker worse off by having more job opportunities? Clearly not. By accepting the job, the worker is demonstrating that they are better off than before. If moving to San Diego made them worse off, they wouldn&#8217;t do it. (If anything, creating jobs is a positive impact, and should be rewarded with an impact bonus, not punished with a fee.)</p><p>Is the negative impact on taxpayers, because they have to pay for more affordable housing? This is a possible argument, but it leads down a dark road. By this logic, poor people need to pay extra taxes to offset their use of the welfare state. But this completely inverts the idea of redistribution, so I doubt anyone will argue it.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>So there is no negative impact analogous to traffic congestion or road maintenance costs. The nexus study just says that new development creates affordable housing need, and implicitly assumes that this is a negative impact which can justify an impact fee.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Similarly, <a href="https://repository.law.uic.edu/lawreview/vol52/iss3/3/">this law review article</a> by Nicholas and Juergensmeyer never explicitly identifies an adverse impact caused by new housing or commercial developments.</p><p>But without a negative impact, there is no nexus, which makes affordable-housing impact fees unconstitutional. Subsidized housing is a public good that should be funded by society as a whole, not by special taxes on developers.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>The fee needs to be connected to the negative impact (the nexus test, where &#8220;nexus&#8221; is the legal term for &#8220;connection&#8221;, from Nollan), and be roughly proportional to the impact (the proportionality test from Dolan).</p><p>Note that in the traffic example, drivers could already offset their impact on maintenance costs through property or gas taxes.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>And if we take this argument seriously, we should also impose an impact fee on employers who hire low-wage workers, even when there&#8217;s no change in land use. And where does it stop? Should parents of disabled children have to pay higher taxes to offset their burden on the welfare state?</p><p>Moreover, low-wage workers can&#8217;t &#8216;afford&#8217; many things (at some prescribed threshold, e.g. 30% of income for housing): food, housing, transportation, health care, child care, etc. Shouldn&#8217;t developers pay impact fees to offset the need created for each of them?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>More fundamentally, they don&#8217;t even prove that development creates affordable housing need, because they don&#8217;t compare to a no-development counterfactual. But low-wage workers would probably still need affordable housing in the scenario where San Diego didn&#8217;t allow the new office building. In that case, they might live somewhere else and be another city&#8217;s problem; this suggests the primary motivation is to keep poor people out, not to provide affordable housing.</p></div></div>]]></content:encoded></item><item><title><![CDATA[A model of land and housing, part 1: urban growth boundary]]></title><description><![CDATA[How to model upzoning, development charges, LVT, and more]]></description><link>https://blog.michaelwiebe.com/p/a-model-of-land-and-housing-part</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/a-model-of-land-and-housing-part</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Tue, 23 Jun 2026 23:48:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a5f1f697-d6c6-4643-9868-cca111837f13_1600x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Upzoning increases the supply of housing and reduces prices. But how does this work in a supply and demand model? In this post I&#8217;ll walk through a simple general equilibrium model of land and housing, where both the price of land and the price of housing are determined within the model. When zoning is a constraint, the supply of residential land is artificially limited, which restricts housing supply and raises home prices. Upzoning works by relaxing the zoning constraint, which directly increases the supply of housing; as a result, both land prices and housing prices are reduced.</p><p>To capture this core mechanism, I use the simplest possible model: a one-time build-out of single-family houses on greenfield land. Developers buy land from farmers and build houses. An urban growth boundary (UGB) is the zoning constraint on the supply of land, and we upzone by expanding the UGB and reallocating land from agricultural to residential. In general, upzoning reallocates land from low- to high-density, so this is analogous to upzoning from detached houses to apartments. (See <a href="https://michaelwiebe.com/assets/ge_model/ugb.pdf">here</a> for a formal model.)</p><h3>Setup</h3><p>We&#8217;re building out a new city of single-family houses on undeveloped agricultural land. Each house requires one parcel of land, and an urban growth boundary limits the size of the city by restricting the number of parcels available to build on. We don&#8217;t model location, which means assuming all land is in the same location. We also assume all behavior takes place during a single time period. There are three actors in the model: landowners, developers, and homebuyers. </p><p>Landowners can farm their land or sell to a developer. All land is the same, so landowners get the same farming payoff. This means that, without an UGB, landowners offer their land to developers at a price equal to this payoff. When developers want more land than the UGB allows, land becomes artificially scarce and the price is bid up above the farming payoff. Now, landowners can sell at an inflated price that includes a <em>scarcity premium</em>.</p><p>Developers buy parcels of land and pay fixed construction costs to build houses. We assume developers are competitive, so profits are zero: the revenue from selling a house is equal to construction and land costs. Finally, homebuyers buy houses, demanding a larger total quantity when prices are lower. All houses are the same, and sell for the same price.</p><p>From this setup, we get a general equilibrium model of land and housing. In the land market, landowner supply and developer demand determine the price of land; and in the housing market, developer supply and homebuyer demand determine the price of housing.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> Since land is the input used to build housing, developers derive their demand for land from homebuyers&#8217; demand for housing. Similarly, the supply of housing is derived from landowners&#8217; supply of land. Developers are the link between the two markets.</p><p>The graphs below show an equilibrium where the UGB is binding.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> In the land market, the supply curve is flat until we reach the UGB, where it becomes vertical. We say that landowners are &#8216;perfectly <a href="https://en.wikipedia.org/wiki/Elasticity_(economics)">elastic</a>&#8217;, meaning they will offer any quantity at the same price (here, the farming payoff of 40). The UGB makes supply &#8216;perfectly inelastic:&#8217; no matter how much prices rise, landowners cannot sell a larger quantity of land. The demand curve intersects the supply curve where it is vertical, which means the UGB is a constraint on residential land; if we could expand the UGB, developers would buy more land.</p><p>Because the UGB is binding, residential land is a fixed factor, so its price is determined as a residual, as the housing price minus construction costs. Land is artificially scarce and includes a scarcity premium, making it more expensive than agricultural land. Here, the residential land price is bid up to 100 and the farming payoff is 40, so the scarcity premium is 100 - 40 = 60. When zoning is not a constraint, residential and agricultural land sells for the same price, and the scarcity premium is zero.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aBu1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aBu1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!aBu1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!aBu1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!aBu1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aBu1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:167612,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aBu1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!aBu1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!aBu1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!aBu1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0056dd0b-73f8-4932-b12c-20d0a7e8cffb_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Supply and demand curves in the land and housing markets, showing an equilibrium with a binding urban growth boundary</figcaption></figure></div><p>In the housing market, we assume that homebuyers have downward-sloping demand: at lower prices, they are willing to buy a larger quantity of houses. Below the UGB, the housing supply curve is horizontal, and we calculate it by adding construction costs (80) to the land supply curve; developers build houses by paying land and construction costs (40 + 80 = 120). Because landowners are perfectly elastic suppliers, so too are developers. But once the UGB binds, the supply curve contains the scarcity premium and becomes vertical. (Similarly, the land demand curve is calculated as the housing demand curve minus construction costs.)</p><p>With a binding UGB, housing supply is constrained, pushing up house prices. If we could expand the UGB, we would move down the demand curve, increasing quantity and reducing housing prices.</p><h3>Upzoning: expanding the UGB</h3><p>So let&#8217;s expand the growth boundary and see what happens. Upzoning means shifting the land supply curve to the right, because we&#8217;re allowing more land to be used for housing. Each house uses one parcel of land, so more land means that the housing supply curve also shifts right, leading to lower housing prices. In the land market, increased supply leads to lower land prices, decreasing the scarcity premium on residential land.</p><p>In the graphs below, we expand the UGB from 120 parcels to 155. This reduces housing prices from 180 to 145, land prices from 100 to 65, and the scarcity premium from 60 to 25. So the constraint is still binding, but not as stringently.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3ekz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3ekz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!3ekz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!3ekz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!3ekz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3ekz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181476,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3ekz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!3ekz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!3ekz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!3ekz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8dfd047-db39-4359-bcee-39e83ee7cdbb_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Expanding the UGB (from 120 parcels to 155) reduces land and housing prices</figcaption></figure></div><p>Here upzoning reduces the land price of existing residential land. This is the <em>cross-parcel</em> effect, where increasing the supply of land (by 35 parcels) reduces the price of the original 120 residential parcels. When land is constrained and priced as a residual, lower housing prices translate to lower residual land values. (Generally, upzoning from low- to high-density reduces the price of existing high-density land.)</p><p>In contrast, the <em>own-parcel</em> effect is the increase in value for the 35 newly upzoned parcels. Initially, these were worth the farming payoff of 40. Upzoning them to residential increases their value to the new land price of 65, for a gain of 25. This is a windfall gain for those landowners, but the increase in price is not relevant to developers, since the land wasn&#8217;t even available to them when it was zoned for farming. All that matters for the housing market is that the stock of residential land is larger.</p><p>Also note that if we upzoned even more, by increasing the UGB to 180 parcels (or more), then the scarcity premium would be reduced to 0. Residential land would be so abundant that it would sell for the same price as agricultural land. In this case, the own-parcel effect is also 0: with no scarcity premium, agricultural landowners do not benefit from acquiring development rights. And when land is abundant, any additional upzonings have no effect on land prices.</p><p>This is the YIMBY endgame: upzoning so much that zoning is no longer a constraint, which achieves the maximum reduction in housing prices. In general, the policy goal is to have equal land prices for otherwise similar low- and high-density land.</p><h3>Do higher construction costs increase housing prices?</h3><p>One counterintuitive argument is that higher construction costs do not lead to higher housing prices, because market prices are fixed and higher costs just reduce land values. With our general equilibrium model, we can sort this out. When the UGB is not binding, prices are set by marginal costs, so higher costs do lead to higher housing prices. Demand for land falls, but with no effect, since land is priced at the farming payoff.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jHSk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jHSk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!jHSk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!jHSk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!jHSk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jHSk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:197725,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jHSk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!jHSk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!jHSk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!jHSk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc46361b3-27e0-44c1-8e55-0abb59cdf4c1_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But when the UGB is a binding constraint, prices are set by scarcity, not marginal costs. In this case, a small increase in costs reduces the scarcity premium on land without affecting housing prices, as demonstrated below. Costs increase by 40, and land prices fall by 40. The housing supply curve shifts up with no effect, since we&#8217;re eating into the scarcity premium.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DqmC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DqmC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!DqmC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!DqmC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!DqmC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DqmC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:206239,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DqmC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!DqmC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!DqmC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!DqmC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a83a84a-f254-42ec-ab21-f70c9118b3f3_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So whether costs affect housing prices depends on whether the zoning constraint is binding. If costs increase enough, developers don&#8217;t want to build as many houses and the UGB stops binding. Then we&#8217;re back in the scenario where construction costs are passed through to housing prices.</p><h3>Do development taxes increase housing prices?</h3><p>If we tax developers for building houses, do we get higher housing prices or lower land prices? As with construction costs, it depends on whether the UGB is a binding constraint. First, a primer on tax incidence. Even though developers are charged the tax when they buy land (they bear the &#8216;statutory incidence&#8217;), they can pass on the tax to landowners or homebuyers, due to our assumption of making zero profit. So the tax is actually paid by landowners or homebuyers (they bear the &#8216;economic incidence&#8217;), and this is determined by who is more responsive to price changes (i.e., more price-elastic).</p><p>When the UGB is binding, landowners cannot supply more land, no matter how high prices are. Here landowners are unresponsive to prices (perfectly inelastic), and developers can pass on the tax to landowners by paying lower land prices. And when the UGB is slack, landowners are perfectly elastic, since they offer any quantity of parcels at the farming payoff. Here, landowners are more price responsive than homebuyers, so developers can pass on the tax to homebuyers by increasing housing prices.</p><p>The graphs below show a non-binding UGB. When zoning is not a constraint, the tax reduces developers&#8217; demand for land, shifting the demand curve down. The tax acts like a cost, shifting the housing supply curve up, which reduces the quantity and increases the price of housing. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2-oZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2-oZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!2-oZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!2-oZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!2-oZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2-oZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:196296,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2-oZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!2-oZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!2-oZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!2-oZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b760166-22b0-4506-9863-9bd21e46d3be_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Next let&#8217;s see the binding UGB case. Here the tax also reduces demand for land, but because the zoning constraint makes landowners inelastic, developers can reduce their land payment without affecting the quantity of parcels. The housing supply curve shifts up, but this doesn&#8217;t change anything. Essentially, the tax comes out of the scarcity premium with no effect on housing prices, exactly the same as the cost increase above. If the tax is large enough, then the housing supply curve shifts up and the UGB stops binding, and we switch back to the case above where the tax increases house prices.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GZZU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GZZU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!GZZU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!GZZU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!GZZU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GZZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:199372,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GZZU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!GZZU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!GZZU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!GZZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6662e5cf-5ac2-4c30-8ce9-7fca24598046_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The political incentives here can be quite perverse. If the government wants to raise revenue while appearing to tax landowner windfalls, they are incentivized to impose an UGB, thereby creating a scarcity premium to tax. But as we saw when studying upzoning, the zoning constraint creates a scarcity premium only by raising housing prices! So even though the tax itself doesn&#8217;t affect the housing market, the combination of restrictive zoning and development taxes does result in higher prices. Even if the tax revenue is used to fund subsidized housing, the best case scenario is that housing prices fall back to their original level. We cannot improve affordability by first creating scarcity.</p><p>We can also interpret a development tax as value capture from upzoning, taxing the &#8216;land lift&#8217; on upzoned land that increases in value. Initially, the UGB is set at zero parcels and no development is allowed; land is priced at the farming payoff of 40. Then we upzone by expanding the UGB to 120 parcels, and the upzoned land increases in price to 100. We&#8217;ve created a scarcity premium of 100 - 40 = 60 that the government can tax.</p><p>But the scarcity premium exists only because we did a limited upzoning. If we had upzoned to 180 parcels, the scarcity premium would be zero and the government would have nothing to tax. Since the UGB isn&#8217;t binding, any tax would fall on homebuyers, raising prices. So a government that depends on revenue from development taxes is incentivized to do limited upzonings to create a taxable scarcity premium. A government that cared about housing affordability would upzone as much as possible to minimize housing prices.</p><h3>Land value taxes don&#8217;t affect housing prices</h3><p>In contrast to development taxes, a land value tax does not affect housing prices. While a development tax is imposed only when a development occurs, a land value tax is charged to the landowner unconditionally, even when no housing is built. This is the key difference that makes land value taxes non-distortionary and hence a favorite of economists. Landowners are taxed on their farming payoff, so even though a developer has to pay a tax to own land, they also pay lower land prices, so the effects cancel out.</p><p>The graphs below show a 50% proportional tax on the value of the land. The demand curve for land shifts down, same as the development tax. But now the land supply curve also shifts down, reflecting that landowners are taxed on their outside option. Since both curves shift, there&#8217;s no effect on the quantity of land, and the housing market is unchanged. Land prices fall and housing prices are the same. When the UGB is binding, an LVT reduces the scarcity premium on land, so it can be used as a value capture mechanism.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dl4M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dl4M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!Dl4M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!Dl4M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!Dl4M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dl4M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:203795,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dl4M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!Dl4M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!Dl4M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!Dl4M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d9206f-b2d2-4cb4-8b5e-2e18daf34be9_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>An LVT also has no effect on housing prices when the UGB is slack. Again, since both curves shift down in the land market, there&#8217;s no effect on quantity, and hence no change in the housing market.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w62m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w62m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!w62m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!w62m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!w62m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w62m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198419,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w62m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!w62m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!w62m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!w62m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cdcd3de-041c-4423-afad-2ffe94c369be_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Land prices are driven by housing demand</h3><p>Finally, let&#8217;s consider the argument that upzoning is the main factor driving up land prices. While it is true that upzoning can have a positive own-parcel effect (because residential land is priced above agricultural land), rising land prices are generally driven by increased housing demand.</p><p>When the UGB is binding, land prices are directly determined by the level of housing demand (via the demand curve intercept <em>y</em>). Shifting up the housing demand curve raises house prices, which also increases developer demand for land, thereby increasing land prices. So it makes sense that a city with growing demand will have higher housing and land prices.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D1SG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D1SG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!D1SG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!D1SG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!D1SG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D1SG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png" width="1456" height="1638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:215777,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/201900781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D1SG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png 424w, https://substackcdn.com/image/fetch/$s_!D1SG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png 848w, https://substackcdn.com/image/fetch/$s_!D1SG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!D1SG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc345c6-55ac-478c-ad3e-19bef97b048d_1600x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We can confirm this by looking at a natural experiment where upzoning isn&#8217;t allowed. First Shaughnessy, a heritage-protected mansion neighborhood in Vancouver, has seen a <a href="https://michaelwiebe.com/blog/2025/09/condonomics#land-value">5x increase</a> in land values even without any upzonings. This suggests that housing demand has increased substantially in Vancouver.</p><h3>Conclusion</h3><p>A simple supply and demand model of land and housing can explain how upzoning works, whether increased construction costs and taxes lead to higher housing prices, and how housing demand drives land prices. This model assumes one housing good, one zone, and one location, as the simplest model that captures how upzoning works. In future posts, I will extend it to have two zones (house- and apartment-zoning), two housing goods (houses and apartments), and two locations (city and suburb).</p><div><hr></div><p>See <a href="https://michaelwiebe.com/assets/ge_model/ugb.pdf">here</a> for the formal model.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>What makes it a <em>general</em> equilibrium model is that prices in both markets are determined within the model. A partial equilibrium model would take, for example, housing prices as fixed (determined outside of the model) and derive land prices.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Parameters: farming payoff = 40, construction cost = c = 80, UGB = Q_bar = 120, y = 300, z =1.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Another angle: land is priced residually as housing prices minus construction costs, so when housing prices are determined by the constraint, an increase in costs just reduces residual land value.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Inclusionary zoning works in theory, but not in practice]]></title><description><![CDATA[Parcel-level calibration is not realistic]]></description><link>https://blog.michaelwiebe.com/p/inclusionary-zoning-works-in-theory</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/inclusionary-zoning-works-in-theory</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Sun, 31 May 2026 21:05:50 GMT</pubDate><content:encoded><![CDATA[<p>When zoning is a constraint on housing supply, upzoning can create a windfall gain for landowners by giving them valuable development rights. In theory, local governments can capture this surplus land value by requiring the landowner to provide subsidized housing. This is the idea behind inclusionary zoning (IZ) with density bonuses: we fund subsidized housing by allowing developers to build extra density. Essentially, the government is taxing the surplus land value created by upzoning.</p><p>But there&#8217;s a fine balance to be struck: the amount of the tax must be less than the amount of the surplus land value, i.e., the cost of the subsidized units must be small enough that project still pencils. If not, the tax falls on new housing, reducing supply and raising prices. Specifically, if the tax causes the developer&#8217;s willingness-to-pay for land to fall below the landowner&#8217;s reservation price, then the project fails and IZ reduces housing supply.</p><p>So IZ only works if the subsidized housing requirement is carefully calibrated on each parcel. But upzoning will increase land values differently across a city; a vacant parcel (cheap to redevelop) gains much more from upzoning than a parcel with a newly built house (expensive to redevelop). The IZ tax needs to be fine-tuned on a parcel-by-parcel basis to match this spatial variation. Similarly, since market conditions change over time, the IZ tax needs to be updated frequently to maintain calibration. Subsidized housing requirements need to be decreased when the surplus land value shrinks; waiting for higher rents to make a project pencil means reducing supply today.</p><p>Can governments maintain parcel-level calibration on a quarterly basis? No, in practice they impose a blanket IZ policy. But an area-wide IZ tax can easily fail the cost-benefit test: even if land value is captured from some developments, we have to weigh it against the cost of reduced housing supply elsewhere. And we shouldn&#8217;t be taking risks with net-negative policies. So unless governments become omniscient central planners, IZ will remain a nice idea in theory that doesn&#8217;t work in practice. </p><p>Our time would be better spent implementing a land value tax, which automatically captures surplus land value. It also applies to landowners who don&#8217;t redevelop; there is no loophole for landowners to keep land value for themselves by maintaining the low-density status quo. Most importantly, because it applies unconditionally, a land value tax doesn&#8217;t reduce housing supply; it actually promotes new supply, by incentivizing landowners to make the best use of their land.</p><p>Read more about IZ in my <a href="https://www.buildingabundance.ca/p/inclusionary-zoning">deep dive</a>.</p>]]></content:encoded></item><item><title><![CDATA[YIMBY research wanted: upzoning and land prices]]></title><description><![CDATA[Does upzoning reduce the price of existing high-density land?]]></description><link>https://blog.michaelwiebe.com/p/yimby-research-wanted-upzoning-and</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/yimby-research-wanted-upzoning-and</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Tue, 26 May 2026 19:30:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K3Zi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Upzoning reduces housing prices by increasing the supply of high-density land and allowing developers to build more homes on the same parcel, which shifts the supply curve for housing. With lower housing prices, developers bid less for pre-existing high-density land; this reduces high-density land prices.</p><p>So to evaluate whether upzoning works, we first check whether increased housing supply results in lower home prices. As a second step, we can check whether existing high-density land becomes cheaper. This gives us a simple empirical test using land prices: take the set of high-density land that existed before upzoning, and track its price over time. However, no one has done this (yet).</p><p>For example, <a href="https://journals.sagepub.com/doi/10.1177/00420980231190281">Auckland</a> had 389 parcels zoned for terraced housing and apartments (THA) whose zoning status was unchanged by the 2016 upzoning.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> The THA zoning category increased in size to 13,341 parcels, as lower-density zones were upzoned to THA. Intuitively, the land price of the initial 389 THA parcels will fall, at least relative to single-family land, as competition from the thousands of new THA parcels leads to expectations of lower apartment prices and hence lower residual land values. So we can see whether upzoning worked by testing if increasing the supply of high-density land made it cheaper.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p><a href="https://www.nber.org/papers/w29440">S&#227;o Paulo</a> also upzoned in 2016, changing the allowed density on a block-by-block basis. On average, the built area ratio (BAR)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> increased by 35%, with about half of blocks being upzoned. We can use this to test whether upzoning reduced the price of existing higher-density land at a fine-grained level. For example, if upzoning increases the size of the BAR=4.0 category, then we expect apartment prices to fall and the price of the initial BAR=4.0 land to decrease. For categories that decreased in size, we might expect land prices to increase, for example, as detached houses become scarcer and more expensive, leading to higher residual land values.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Here&#8217;s a hypothetical graph:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K3Zi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K3Zi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png 424w, https://substackcdn.com/image/fetch/$s_!K3Zi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png 848w, https://substackcdn.com/image/fetch/$s_!K3Zi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!K3Zi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K3Zi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98364,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/199359933?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K3Zi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png 424w, https://substackcdn.com/image/fetch/$s_!K3Zi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png 848w, https://substackcdn.com/image/fetch/$s_!K3Zi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!K3Zi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36d5385b-c436-4c47-a621-b6a7eb80523d_1600x1200.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you have access to data on land prices or assessed land values in Auckland or S&#227;o Paulo, please reach out! Existing research has not looked at this question, and it seems straightforward to answer. Showing that upzoning reduces high-density land prices would give us empirical evidence for upzoning in addition to the main evidence on housing supply and prices.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>There were initially 1880 THA parcels; 389 remained THA and 1491 parcels were downzoned. See Table 2 in <a href="https://journals.sagepub.com/doi/10.1177/00420980231190281">Cheung, Monkkonen, and Yiu (2024)</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Similarly, there were 3461 Mixed Housing Suburban (two storeys, three dwellings) parcels and 4880 Mixed Housing Urban (three storeys, three dwellings) parcels with unchanged zoning status. Since upzoning increased the size of the MHS and MHU zoning categories, we predict that the land price of the initial parcels decreased.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>The ratio of a building&#8217;s total floor area to the land area. At BAR=1, a 1-story building could cover the entire lot, or a 2-story building could cover half of the lot.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>The effect could be positive or negative. If high-density housing is a substitute for low-density housing, then increased supply of the former would decrease the price of the latter, which would translate to lower low-density land prices.</p></div></div>]]></content:encoded></item><item><title><![CDATA[YIMBY research wanted: demand cascade]]></title><description><![CDATA[We have no studies of the key mechanism driving the housing crisis]]></description><link>https://blog.michaelwiebe.com/p/yimby-research-wanted-demand-cascade</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/yimby-research-wanted-demand-cascade</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Tue, 28 Apr 2026 16:46:00 GMT</pubDate><content:encoded><![CDATA[<p>The key mechanism underlying the housing crisis is the &#8216;demand cascade&#8217;: upper-class people move in and bid up the price of high-end homes, which pushes middle-class locals to compete for low-end homes, which forces the poor to take on roommates, move away, or become homeless. However, no one has written a paper showing how this works empirically.</p><p>But it seems straightforward to implement. We can use a Bartik shifter for college-educated workers (compare <a href="https://onlinelibrary.wiley.com/doi/10.1111/ecca.12398">Edlund et al. 2022</a>) as the increase in high-end demand, and show that prices and rents rise for both high- and low-end housing. This would prove that high- and low-end submarkets are connected, with increases in high-end demand driving up low-end prices and reducing affordability. Hence, high-end supply is needed to absorb high-end demand and prevent a demand cascade. (We can also use a demand shifter for non-college workers as an increase in low-end demand; this should affect only the low-end market.) As an extension, use the Baum-Snow and Han (2024) <a href="https://drive.google.com/file/d/1Qn3PZ0u8PO2IbyyPETCrca3rGmPyTVL7/view?usp=sharing">supply elasticities</a> to show that the demand cascade is stronger when supply is more restricted.</p><p>We can define quality segments simply as home age, or by estimating a richer model of quality using home characteristics. With data on residential addresses, we could study the effect on displacement (evictions, or moving to a poorer neighborhood) and gentrification (in-migration from a richer neighborhood). And with data on families, we could show that higher demand leads to larger households via <a href="https://doodles.mountainmath.ca/posts/2024-06-04-doubling-up-distinguishing-families-from-households/">doubling-up</a>.</p><p>Another angle is studying who is affected by demand cascades. Rent control can shield existing renters from market forces, which means the demand pressure is redirected to newcomers or young adults wanting to move out on their own. Hence, we should compare the effect of a demand cascade in cities with and without rent control.</p><p>Read my literature review on <a href="https://www.buildingabundance.ca/p/gentrification-and-displacement">gentrification and displacement</a>.</p>]]></content:encoded></item><item><title><![CDATA[Induced demand has to come from somewhere]]></title><description><![CDATA[Amenity effects reallocate demand, they don't create it]]></description><link>https://blog.michaelwiebe.com/p/induced-demand-has-to-come-from-somewhere</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/induced-demand-has-to-come-from-somewhere</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Mon, 06 Apr 2026 19:37:00 GMT</pubDate><content:encoded><![CDATA[<p>The literature on <a href="https://www.buildingabundance.ca/i/187913480/increased-supply-causes-gentrification-without-displacement">local effects of new housing</a> uses the framing of supply effects vs. amenity effects. A new apartment building adds housing supply, which decreases rents. But it also adds new amenities (e.g. nicer stores and cafes), which can induce new demand and raise rents. So the effect of a new building on local rents is the net effect of these two channels. (And empirically, the supply effect dominates.)</p><p>This analysis is looking only at the neighborhood around the new building. But induced demand means drawing in new residents from elsewhere: when demand increases in <em>this</em> neighborhood, it decreases in the neighborhoods that the new residents moved out of.</p><p>Upshot: induced demand through amenity effects is a wash. It increases demand in one neighborhood, but reduces it in another. So even if residents near the new building are worse off due to higher rents, residents in the origin neighborhoods of the movers are better off. A full welfare accounting needs to reflect this.</p><p>Read my full literature review on local supply effects and local demand effects here:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:187913480,&quot;url&quot;:&quot;https://www.buildingabundance.ca/p/gentrification-and-displacement&quot;,&quot;publication_id&quot;:5585634,&quot;embedding_publication_id&quot;:null,&quot;publication_name&quot;:&quot;Building Abundance&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!SenQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75fd4eb5-01fa-472c-b086-d4d473fbd67b_1024x1024.png&quot;,&quot;title&quot;:&quot;Gentrification and displacement&quot;,&quot;truncated_body_text&quot;:&quot;When demand to live in a city is increasing, should we allow densification so that the supply of housing can keep up? The case for allowing density is straightforward: given that rich newcomers are moving in, getting them to live in new homes means they won&#8217;t outbid residents for the existing housing stock. When supply increases enough, it absorbs the n&#8230;&quot;,&quot;date&quot;:&quot;2026-02-14T21:32:26.075Z&quot;,&quot;like_count&quot;:28,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:20040806,&quot;name&quot;:&quot;Michael Wiebe&quot;,&quot;handle&quot;:&quot;buildingabundance&quot;,&quot;previous_name&quot;:&quot;Michael&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8eb6b1d4-e93c-4b11-b9fd-a47bd9986f08_2385x2385.jpeg&quot;,&quot;bio&quot;:&quot;economist interested in housing and replication&quot;,&quot;profile_set_up_at&quot;:&quot;2022-02-11T20:01:31.269Z&quot;,&quot;reader_installed_at&quot;:&quot;2025-10-06T18:53:05.684Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:5697143,&quot;user_id&quot;:20040806,&quot;publication_id&quot;:5585197,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:5585197,&quot;name&quot;:&quot;Michael Wiebe&quot;,&quot;subdomain&quot;:&quot;michaelwiebeblog&quot;,&quot;custom_domain&quot;:&quot;blog.michaelwiebe.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Economist working on housing and replication.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:20040806,&quot;primary_user_id&quot;:20040806,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-07-08T17:46:09.042Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Michael Wiebe&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}},{&quot;id&quot;:5697594,&quot;user_id&quot;:20040806,&quot;publication_id&quot;:5585634,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:5585634,&quot;name&quot;:&quot;Building Abundance&quot;,&quot;subdomain&quot;:&quot;buildingabundance&quot;,&quot;custom_domain&quot;:&quot;www.buildingabundance.ca&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;A literature review on housing and infrastructure&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75fd4eb5-01fa-472c-b086-d4d473fbd67b_1024x1024.png&quot;,&quot;author_id&quot;:20040806,&quot;primary_user_id&quot;:null,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-07-08T18:33:08.621Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Michael Wiebe&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[89120],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.buildingabundance.ca/p/gentrification-and-displacement?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!SenQ!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75fd4eb5-01fa-472c-b086-d4d473fbd67b_1024x1024.png"><span class="embedded-post-publication-name">Building Abundance</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Gentrification and displacement</div></div><div class="embedded-post-body">When demand to live in a city is increasing, should we allow densification so that the supply of housing can keep up? The case for allowing density is straightforward: given that rich newcomers are moving in, getting them to live in new homes means they won&#8217;t outbid residents for the existing housing stock. When supply increases enough, it absorbs the n&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago &#183; 28 likes &#183; Michael Wiebe</div></a></div>]]></content:encoded></item><item><title><![CDATA[Can AI do replications? GPT5.2 vs GPT5.4 vs refine.ink]]></title><description><![CDATA[AI on ten issues in Moretti (2021)]]></description><link>https://blog.michaelwiebe.com/p/can-ai-do-replications-gpt52-vs-gpt54</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/can-ai-do-replications-gpt52-vs-gpt54</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Tue, 17 Mar 2026 00:11:28 GMT</pubDate><content:encoded><![CDATA[<p>In my <a href="https://blog.michaelwiebe.com/p/moretti-replication-published-in">comment</a> on Moretti (2021) (M21), I found ten problems in the paper. Since only I know what the problems are, I can test whether AI is able to do my job. Specifically, I want to test whether AI can detect the problems in the paper, using the original text and code. I run the test with GPT5.2 and GPT5.4 Extended Thinking, and with refine.ink.</p><p>For each of the ten issues, I uploaded PDFs of the paper and README and the relevant code files, and asked GPT to evaluate (1) whether the method is conceptually sound, and (2) whether the code correctly implements the method. For refine, I uploaded a combined PDF of the paper and code.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> My goal is to test pure reasoning ability in evaluating the econometric methods and code, rather than being able to parse the directory and find the relevant code. See the footnote for my generic prompt.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> If you want to try this yourself, here&#8217;s a <a href="https://github.com/maswiebe/moretti_rep">repo</a> with the paper and code. Here&#8217;s the original <a href="https://www.openicpsr.org/openicpsr/project/140662/version/V1/view;jsessionid=C81FA18299EEA09EEBD885CD1DA4D6B8?path=/openicpsr/140662/fcr:versions/V1/AER_UPLOADED">replication package</a>.</p><h3>Issue 1: Figure 5 distributed lag model</h3><p>Figure 5 is implementing a distributed lag (DL) model to test for rising-star inventors selecting into larger clusters. As discussed <a href="https://blog.michaelwiebe.com/p/whats-going-on-with-the-event-study">here</a>, M21 does not present this as a DL model, and does not realize that this is the most demanding case (basically, an event study with a different event in every period); so the identifying assumptions are not presented or defended. There&#8217;s also a coding error, with the leads and lags calculated using Stata&#8217;s <code>_n</code> operator, which refers to different observations; but the panel is unbalanced, so the previous observation need not be the previous year. Correcting this shrinks the sample and the estimate loses significance.</p><h5><a href="https://chatgpt.com/share/69b2fd67-5bbc-8004-b186-06a2f473d3cf">GPT5.2</a> (26min thinking)</h5><p>GPT notices that the sample is highly selected, with inventors who patent in 11 consecutive years, but didn&#8217;t catch the strong assumptions required for the DL model. It does notice the problem of an unbalanced panel, but mistakenly thinks that a different part of the cleaning code (that does create a balanced panel) is relevant here. So it understates the issue of the leads/lags being incorrect. In a separate <a href="https://chatgpt.com/share/69b30718-3708-8004-8fee-64586bb49f22">response</a> on Figure A1, GPT does more firmly flag the leads/lags issue, but totally misses that B_0 is incorrectly missing from the figure!</p><p>Grade: 4/10</p><h5><a href="https://chatgpt.com/share/69b86581-a8cc-8004-bc0b-378ef1d84edc">GPT5.4</a> (2min thinking)</h5><p>GPT doesn&#8217;t catch the strong DL assumptions required here. But it does correctly flag using <code>_n</code> to define leads/lags: &#8220;x_p1 is not necessarily cluster size at t+1&#8221;. (Now it notices that the interpolation code doesn&#8217;t apply, which GPT5.2 got wrong.)</p><p>Grade: 8/10</p><h5><a href="https://www.refine.ink/app/session/84424a27-81c8-4971-a590-963fbde58437">Refine</a></h5><p>Refine didn&#8217;t flag Figure 5. (It also seems to have an issue reading the code; it thinks some of the underscores are missing in <code>_n</code>.)</p><p>Grade: 0/10</p><h3>Issue 2: Figure 6 event study</h3><p>Figure 6 is doing a mover event study to again test for selection, interacting pre- and post-move cluster size with event time indicators. The problems here are subtle: the original event study method is incorrect and does not use variation from moving, and the code does not implement the (incorrect) method described in the text, since there&#8217;s no interaction term for post-move cluster size with the t=0 indicator; instead, the regression incorrectly uses time-varying cluster size to estimate B_0. (See full discussion <a href="https://blog.michaelwiebe.com/p/whats-going-on-with-the-event-study">here</a>.)</p><h5><a href="https://chatgpt.com/share/69b302c0-0ed8-8004-a55f-a8bccdccf609">GPT5.2</a> (16min thinking)</h5><p>Here GPT is confused by the confusing presentation in M21. Figure 6 is supposed to be an event study, but the figure notes say that it plots the leads and lags as in Figure 5; GPT doesn&#8217;t pick up that these are supposed to be interactions of cluster size with event time indicators. It also doesn&#8217;t notice that the method described in the text is an improper event study. It does correctly notice that the coefficients are plotted backwards, and that the regression uses time-varying cluster size to estimate B_0.</p><p>Grade: 5/10</p><h5><a href="https://chatgpt.com/share/69b867d4-b448-8004-bd48-b1a565be287f">GPT5.4</a> (5min thinking)</h5><p>GPT again misses that interacting pre- and post-move cluster size with event time indicators is not a proper event study. It does flag the problem with using time-varying cluster size to estimate B_0, and notices some other problems.</p><p>Grade: 6/10</p><h5>Refine</h5><p>Refine does catch the use of time-varying cluster size for B_0, and it flags that Figure 6b (calculating the cumulative response) is incorrect for event study coefficients. It also flags the backwards ordering. But it doesn&#8217;t notice the incorrect event study specification.</p><p>Grade: 6/10</p><h3>Issue 3: Table 5 IV</h3><p>The IV has a straightforward coding error: it does not sort by city when constructing the instrument, so the code incorrectly defines a first-difference across cities.</p><h5><a href="https://chatgpt.com/share/69b30822-ce68-8004-8caa-558882898344">GPT5.2</a> (17min thinking)</h5><p>GPT notices that the exclusion restriction is questionable: firm-level shocks can increase patenting in all cities, so using patenting in firms in other cities to instrument for cluster size doesn&#8217;t work. And it does find the fatal flaw in the code, where the data is not sorted by city before calculating the first difference: &#8220;the 2SLS estimate is not interpretable.&#8221;</p><p>Grade: 10/10</p><h5><a href="https://chatgpt.com/share/69b868fb-f0d8-8004-9430-f482cc20bf08">GPT5.4</a> (4min thinking)</h5><p>GPT again notices the strong assumption on the exclusion restriction, and the failure to sort by city.</p><p>Grade: 10/10</p><h5>Refine</h5><p>Refine catches the sorting error. It also points out problems with defining the IV in first-differences.</p><p>Grade: 10/10</p><h3>Issue 4: Table 6 citations</h3><p>Table 6 tests for the effect of cluster size on patent quality, as measured by citations. Do patents created in larger clusters have more citations? There are two issues here. First, the text claims to use log citations, but the code uses log(y+0.00001), which puts a very large weight on the extensive margin effect. A better approach is Poisson regression, or at least log(y+1). Second, M21 wants to adjust for the number of coauthors per patent; but here it calculates citations per patent using citations per coauthor and patents per coauthor, which nullifies the per-coauthor adjustment. The code should use whole patents in the denominator to calculate fractional citations per patent.</p><h5><a href="https://chatgpt.com/share/69b30bcb-b81c-8004-b80c-cf1920fd2cd2">GPT5.2</a> (14min thinking)</h5><p>GPT picks up the log(y+0.00001) issue, noting that this is an extreme transformation. (In fact, it flips the sign of the estimate.) But it doesn&#8217;t detect the per-coauthor issue, where the code calculates citations per patent using the per-coauthor versions of both; noticing this requires going back to the definition of each variable in another cleaning file. (However, it does correctly notice a many-to-many merge issue in columns 7-8.)</p><p>Grade: 7/10</p><h5><a href="https://chatgpt.com/share/69b86a5f-6068-8004-b071-ba23f1723aae">GPT5.4</a> (12min thinking)</h5><p>Here GPT surprisingly does not flag log(y+0.00001). And it again misses the per-coauthor issue. It does note the m:m merge and other issues.</p><p>Grade: 4/10</p><h5>Refine</h5><p>Refine does not flag log(y+0.00001), but does note the m:m merge.</p><p>Grade: 1/10</p><h3>Issue 5: Table 8 heterogeneity by cluster size</h3><p>Table 8 tests whether the patenting-size elasticity varies by cluster size itself, using quartiles of cluster size. It runs an interaction regression, interacting cluster size with quartile indicators. There&#8217;s a clear coding error in Panel A: M21 omits the quartile indicators themselves from the regression, which forces the baseline to be the same across quartiles.</p><h5><a href="https://chatgpt.com/share/69b30dc4-5788-8004-8725-be463d2aedfe">GPT5.2</a> (14min thinking)</h5><p>GPT misses the coding error. In the past, is has been able to detect it. (It does flag an important issue: whether quartiles are calculated at the cluster level or the inventor level.)</p><p>Grade: 1/10</p><h5><a href="https://chatgpt.com/share/69b86baf-29b4-8004-baae-abdc2a5455ff">GPT5.4</a> (3min thinking)</h5><p>Here GPT does catch the omitted quartile indicators (and notices that Table 8 Panel B does correctly include them).</p><p>Grade: 10/10</p><h5>Refine</h5><p>Refine doesn&#8217;t catch the omitted quartile indicators. It does note the quartile level issue.</p><p>Grade: 1/10</p><h3>Issue 6: Table A6 interpolation</h3><p>Table A6 addresses the issue of inventors not appearing in the data during years where they don&#8217;t patent. It imputes these missing observations for gaps of length 1 and 2 years, by assigning patent=0 and the city from the year before the gap. There&#8217;s a small coding error: for 2-year gaps, only the second year of the gap is filled. Moreover, the text claims to interpolate values for both movers (with a different city before and after the gap) and stayers, but the code only does stayers.</p><h5><a href="https://chatgpt.com/share/69b31324-26c0-8004-80f5-d57fde7f003b">GPT5.2</a> (11min thinking)</h5><p>GPT does notice that the code only fills the second year of 2-year gaps. It doesn&#8217;t notice the mover/stayer issue. (It also helpfully notes that M21 doesn&#8217;t recalculate cluster size after imputing the missing observations. And it notices that M21 does not have a unique inventor identifier, but simply treats names as unique.)</p><p>Grade: 7/10</p><h5><a href="https://chatgpt.com/share/69b86cb1-198c-8004-81b4-11e8f85d37de">GPT5.4</a> (5min thinking)</h5><p>GPT does not notice the 2-year gap problem, or the mover/stayer issue. It does notice that M21 doesn&#8217;t recalculate cluster size.</p><p>Grade: 2/10</p><h5>Refine</h5><p>Not mentioned.</p><p>Grade: 0/10</p><h3>Issue 7: Table A7 time unit</h3><p>Table A7 varies the time unit of the data. M21 thinks this is addressing the missing extensive margin, where inventors do not patent and are not observed. But this interpretation is incorrect, because at no point are zeros observed, so no extensive margin effect can be estimated. Moreover, M21 doesn&#8217;t redefine cluster size at the new time unit, but uses the baseline 1-year definition of cluster size.</p><h5><a href="https://chatgpt.com/share/69b3137b-4aec-8004-9b7f-cbd257af49f9">GPT5.2</a> (10min thinking)</h5><p>GPT is skeptical of M21&#8217;s argument, noting that changing the time unit means changing the sample. But it doesn&#8217;t get that M21 is confused about the extensive margin. It does catch that cluster size isn&#8217;t redefined at the new time unit.</p><p>Grade: 3/10</p><h5><a href="https://chatgpt.com/share/69b86f00-0f64-8004-9d49-b21b8652c24d">GPT5.4</a> (3min thinking)</h5><p>GPT again misses the extensive margin confusion.  It does catch that M21 uses 1-year cluster size instead of redefining size at the new time unit.</p><p>Grade: 3/10</p><h5>Refine</h5><p>Not mentioned.</p><p>Grade: 0/10</p><h3>Issue 8: Table A8 cluster quality</h3><p>Table A8 Columns 1-4 test for a larger elasticity in higher-quality clusters. Two issues here. First, M21 calculates cluster size incorrectly, taking the average size when inventors patent in multiple clusters; the text says that M21 uses the modal cluster size. Second, M21 forgets to adjust for the number of coauthors, which treats inventors on larger teams as higher quality.</p><h5><a href="https://chatgpt.com/share/69b31698-1e2c-8004-87f8-b0aa64056ec2">GPT5.2</a> (17min thinking)</h5><p>GPT does flag that the code is taking average cluster size rather than modal size. It doesn&#8217;t catch the per-coauthor issue. (It does helpfully note that using lifetime output to define quality is using a post-treatment variable. It also flags the many-to-many merges.)</p><p>Grade: 6/10</p><h5><a href="https://chatgpt.com/share/69b87233-53e4-8004-8e2f-047627135733">GPT5.4</a> (2min thinking)</h5><p>Here GPT does not catch either issue. </p><p>Grade: 1/10</p><h5>Refine</h5><p>Not mentioned.</p><p>Grade: 0/10</p><h3>Issue 9: Table A8 team size</h3><p>Table A8 Columns 5-8 try to address supposed confounding from team size (number of coauthors per patent). This is conceptually confused, because team size is a mediator, not a confounder: cluster size affects patenting indirectly through larger teams, which independently increase patenting. Moreover, the code already uses fractional patents (dividing by team size), so M21 is adjusting for team size twice; team size is in the denominator of the left-hand side and is a control variable on the right-hand side.</p><h5><a href="https://chatgpt.com/share/69b31841-803c-8004-ab4b-e754e6d1c39d">GPT5.2</a> (9min thinking)</h5><p>GPT does recognize the &#8220;bad control&#8221; problem, where team size is a causal channel through which cluster size affects productivity. But it doesn&#8217;t catch the double-adjustment problem.</p><p>Grade: 5/10</p><h5><a href="https://chatgpt.com/share/69b876b4-0754-8004-92c0-ae3e20f118ea">GPT5.4</a> (3min thinking)</h5><p>GPT again mentions bad controls, and misses the double adjustment. </p><p>Grade: 5/10</p><h5>Refine</h5><p>Refine does flag the incorrect interpretation of team size as a confounder. It misses the double adjustment.</p><p>Grade: 5/10</p><h3>Issue 10: unreproducible data cleaning</h3><p>The cleaning code in M21 uses many-to-many merges that make the results unreproducible. Different runs of the code produce different datasets.</p><h5><a href="https://chatgpt.com/share/69b32b9c-cae4-8004-b926-b9f3f7fccc47">GPT5.2</a> (6min thinking)</h5><p>GPT picks up the many-to-many merges. It now notices the mover/stayer issue with interpolation that it missed above. It again notices the lack of unique identifier.</p><p>Grade: 10/10</p><h5><a href="https://chatgpt.com/share/69b87364-78c8-8004-b952-2945959b1b57">GPT5.4</a> (4min thinking)</h5><p>GPT again notices the main problems: many-to-many merges, lack of unique identifier, and problems with the calculation of cluster size.</p><p>Grade: 10/10</p><h5>Refine</h5><p>Refine does not discuss the cleaning code.</p><p>Grade: 0/10</p><h3>Takeaways</h3><p>Here&#8217;s my rough average scoring (treating all problems as equally important):</p><ul><li><p>GPT5.2: 5.8/10</p></li><li><p>GPT5.4: 5.9/10</p></li><li><p>Refine: 2.3/10</p></li></ul><p>So GPT5.4 was only slightly better than 5.2. However, the GPT scores are somewhat noisy: as mentioned, GPT5.2 has been able to detect the Table 8 coding error in the past, but missed it here. And 5.2 catches the cluster quality issue, while 5.4 missed it.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><p>GPT5.2 was more sensitive to the prompt. As an example, I mentioned in the generic prompt to be aware of issues like an unbalanced panel. GPT5.2 really anchored on this, and brought up a part of the cleaning code that does create an unbalanced panel, but only for Table A6. It mistakenly took this to apply to all of the results. Better prompting could help.</p><p>For GPT5.4, I created a project with the PDFs and code files attached as sources, which each session had access to; for 5.2 I attached the PDFs and relevant code to each session. This led to much shorter thinking times for 5.4, perhaps related to processing PDFs. But the extra context seemed to help, and 5.4 avoided fixating on the unbalanced panel.</p><p><a href="https://www.refine.ink/app/session/84424a27-81c8-4971-a590-963fbde58437">Refine</a> looks at the whole paper at once; you can&#8217;t tell it to focus on a specific result. This likely explains the lower score. It&#8217;s also not designed for evaluating code.</p><p>Overall, I think this proves that current reasoning LLMs are useful as a first pass or an independent check when evaluating a paper. </p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>refine doesn&#8217;t have an input prompt.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Here&#8217;s the prompt I used for each GPT5.2 session:</p><blockquote><p>Evaluate the main results in the paper. For each result, ask: Is the method conceptually sound? Does the code correctly implement the method? <br>Make sure to point out anything that could be a fatal flaw; eg. if the code works assuming the panel is balanced, but fails when the panel is unbalanced, then flag this as a serious problem, because panel data is often unbalanced. Don&#8217;t assume the code works just because the panel might be balanced. Apply this lesson generally. Don&#8217;t be overly nice to the paper; we care about the truth, and are scrutinizing the paper to see if we can trust it in the real world. <br>Focus on major issues that could flip the results. Don&#8217;t focus on small issues like apparent typos; note that in Stata, it is legal to use shortened versions of a variable name when the context is unambiguous (eg. <code>inventor</code> for <code>inventor_id</code>, or <code>org</code> for <code>org_id</code>). <br>The attached code is in .txt files. The attached README mentions .do files, but I converted these to .txt so you can read them. <br>Summarize your discussion with one sentence each for the soundness of the method and the correctness of the code.</p></blockquote></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Note that I&#8217;m testing only for false negatives here, by giving it cases with known problems and seeing if it can detect them. We could also test for false positives by giving it the correct results (eg. Table 3) and seeing if it finds a nonexistent problem.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Collinearity in mover event studies]]></title><description><![CDATA[A note for economists]]></description><link>https://blog.michaelwiebe.com/p/collinearity-in-mover-event-studies</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/collinearity-in-mover-event-studies</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Fri, 13 Mar 2026 17:30:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!93Hm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>How do you get an event study that looks like this? By having almost no treatment variation. This post is about an issue I came across in my <a href="https://michaelwiebe.com/assets/moretti/moretti_comment_aer.pdf">comment</a> on Moretti (2021) (M21), when trying to fix the event study. M21 uses city fixed effects, but it turns out these create collinearity and this pattern of confidence intervals jumping in width.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!93Hm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!93Hm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png 424w, https://substackcdn.com/image/fetch/$s_!93Hm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png 848w, https://substackcdn.com/image/fetch/$s_!93Hm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png 1272w, https://substackcdn.com/image/fetch/$s_!93Hm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!93Hm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png" width="592" height="389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:389,&quot;width&quot;:592,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!93Hm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png 424w, https://substackcdn.com/image/fetch/$s_!93Hm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png 848w, https://substackcdn.com/image/fetch/$s_!93Hm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png 1272w, https://substackcdn.com/image/fetch/$s_!93Hm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4130bb83-3dfd-4f3e-a3a9-0834fd9def80_592x389.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Event study graph using M21 data</figcaption></figure></div><p>The setting is a 'mover' event study, where individuals move across cities; the treatment is the change in city environment. In M21, this is the change in cluster size, defined as the number of inventors in the same research field and city. The treatment variable is Size_diff = Size_post - Size_pre. The event study interacts Size_diff with event time indicators.</p><p>The sample is movers: inventors who change cities exactly once. Stayers are excluded from the sample (i.e., there are no never-treated observations). It's a staggered rollout design, with inventors moving in different calendar years. The graph above includes individual, year, and city fixed effects. Seems fine, right?</p><p>When I simulate data for N=1000 individuals moving between C=20 cities, with true effect B=1, we get the expected event study graph (using the same fixed effects):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q8ya!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q8ya!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q8ya!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q8ya!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q8ya!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q8ya!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg" width="680" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!q8ya!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q8ya!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q8ya!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q8ya!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693b05e9-a1d3-447e-a7a1-30f81f334575_680x453.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Simulated data, C=20 cities</figcaption></figure></div><p>Here's the graph for N=1000 individuals and C=1000 cities. This looks very similar to the original graph! So the city fixed effects are the key.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!niqR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!niqR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png 424w, https://substackcdn.com/image/fetch/$s_!niqR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png 848w, https://substackcdn.com/image/fetch/$s_!niqR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png 1272w, https://substackcdn.com/image/fetch/$s_!niqR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!niqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png" width="680" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!niqR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png 424w, https://substackcdn.com/image/fetch/$s_!niqR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png 848w, https://substackcdn.com/image/fetch/$s_!niqR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png 1272w, https://substackcdn.com/image/fetch/$s_!niqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a3ecd7-6df2-47ec-8757-90eac328d848_680x453.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Simulated data, C=1000 cities</figcaption></figure></div><p>The core issue is cities being observed only as origins or only as destinations. By definition, origin = (Post==0), so origin-only cities have Post=0 for all observations. Similarly, destination-only always have Post=1. For these observations, the city fixed effect is collinear with Post.</p><p>In the event study, with t=-1 omitted, this means the post-move indicators are collinear with the city FE. In the extreme case, where origins and destinations are disjoint, no cities are both origin and destination, so the regression is unidentified.</p><p>With C=1000 cities, only 5% of city-year pairs are observed as both origin and destination. So when including city fixed effects, the effective sample is very small, and we get a big jump in confidence interval width. With C=20 cities, this is 78%, so the confidence intervals are fine.</p><p>Note that the jump in confidence interval width is just a function of the omitted period. When I omit t=0 instead of t=-1, then the pre-move indicators are nearly collinear with the city fixed effect, and the confidence intervals are now wider pre-move.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I3Ol!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I3Ol!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png 424w, https://substackcdn.com/image/fetch/$s_!I3Ol!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png 848w, https://substackcdn.com/image/fetch/$s_!I3Ol!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png 1272w, https://substackcdn.com/image/fetch/$s_!I3Ol!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I3Ol!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png" width="680" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!I3Ol!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png 424w, https://substackcdn.com/image/fetch/$s_!I3Ol!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png 848w, https://substackcdn.com/image/fetch/$s_!I3Ol!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png 1272w, https://substackcdn.com/image/fetch/$s_!I3Ol!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7af9e0c-4f95-4714-b55a-bbcc211794e8_680x453.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Simulated data, C=1000 cities, reference period t=0</figcaption></figure></div><p>Final note: the pattern of large standard errors could also be explained by treatment effect heterogeneity. In this case, however, it is due to the city fixed effects driving collinearity. When I redo the original graph using real data and remove the city fixed effects, the jump in width disappears.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XWGF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XWGF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XWGF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XWGF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XWGF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XWGF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg" width="680" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!XWGF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XWGF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XWGF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XWGF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d1876f5-6ce7-427b-ad98-f5e74359ab25_680x453.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">M21 data, no city fixed effects</figcaption></figure></div><p><a href="https://github.com/maswiebe/metrics/blob/main/sim_es_orig_dest.do">Link</a> to simulation code.</p>]]></content:encoded></item><item><title><![CDATA[What's going on with the event study in Moretti (2021)?]]></title><description><![CDATA[An explainer for economists]]></description><link>https://blog.michaelwiebe.com/p/whats-going-on-with-the-event-study</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/whats-going-on-with-the-event-study</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Fri, 13 Mar 2026 17:30:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uFmd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re reading <a href="https://www.aeaweb.org/articles?id=10.1257/aer.20191277">Moretti (2021)</a> (M21) after seeing my <a href="https://michaelwiebe.com/assets/moretti/moretti_comment.pdf">comment</a>, you&#8217;re probably confused by the Figure 6 event study. The idea is to test whether cluster size affects patenting, using variation in cluster size from inventors who move across cities: &#8220;this specification is an event study, based on a &#8220;pure&#8221; movers design solely exploiting variation in cluster size induced by moves.&#8221; (p.3352) So the event is moving, and the treatment is the change in cluster size (i.e., the number of other inventors in the same research field and city).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6FvC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6FvC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png 424w, https://substackcdn.com/image/fetch/$s_!6FvC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png 848w, https://substackcdn.com/image/fetch/$s_!6FvC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png 1272w, https://substackcdn.com/image/fetch/$s_!6FvC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6FvC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png" width="618" height="942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:618,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72182,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/190643977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6FvC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png 424w, https://substackcdn.com/image/fetch/$s_!6FvC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png 848w, https://substackcdn.com/image/fetch/$s_!6FvC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png 1272w, https://substackcdn.com/image/fetch/$s_!6FvC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff931b9c0-1b8e-4220-9a0d-78bf90c153b5_618x942.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But why are there two panels? An event study gives us only one set of coefficients, i.e., the treatment effect in each event year. What does the spike in Figure 6a mean?  Why isn&#8217;t t=-1 omitted as the reference year? What&#8217;s going on with the x-axis labels?</p><p>To explain this, let&#8217;s go back to Figure 5 (which happens to look very similar to Figure 6). M21 is running a regression of log patents (y) for inventor i on current log cluster size (S) as well as five leads and five lags of cluster size. Here&#8217;s M21 Equation 2:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TaXh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TaXh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png 424w, https://substackcdn.com/image/fetch/$s_!TaXh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png 848w, https://substackcdn.com/image/fetch/$s_!TaXh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png 1272w, https://substackcdn.com/image/fetch/$s_!TaXh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TaXh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png" width="689" height="117" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c51c5177-97ca-4bc0-972b-668614106b36_689x117.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:117,&quot;width&quot;:689,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11077,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/190643977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TaXh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png 424w, https://substackcdn.com/image/fetch/$s_!TaXh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png 848w, https://substackcdn.com/image/fetch/$s_!TaXh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png 1272w, https://substackcdn.com/image/fetch/$s_!TaXh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51c5177-97ca-4bc0-972b-668614106b36_689x117.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>The lead terms (B_1 to B_5) capture how current patenting is affected by future cluster size, while the lag terms (B_{-5} to B_{-1}) capture lagged effects of past cluster size. M21 says this is &#8220;studying the dynamic response of productivity following a change in cluster size&#8221;, but also that &#8220;this is not a standard event study&#8221;. (p.3351)</p><p>Thanks to <a href="https://onlinelibrary.wiley.com/doi/full/10.1002/jae.2971">Schmidheiny and Siegloch (2023)</a>, we know that this is a distributed lag model. They prove that event study (ES) and distributed lag (DL) models are equivalent.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> But ES models give you estimates of the cumulative effect of a treatment, and DL models give you the incremental effect, i.e., changes in the cumulative effect. So the DL estimates need to be aggregated to get the total treatment effect. In M21 Fig 5, the beta terms are the incremental effects and the mu terms are the aggregated cumulative effect.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>Moreover, this is the most extreme case of a DL model. Cluster size is a continuous variable and changes every year, so this is equivalent to an event study where a different event occurs every year (i.e., a change in cluster size). The simplest case is a binary treatment that turns on once; here we have a time-varying continuous treatment dose. M21 does not discuss the identifying assumptions required here.</p><p>Now let&#8217;s revisit the event study in Figure 6. M21 seems to think that this is also a DL model, with incremental beta estimates in the top panel and aggregate mu estimates in the bottom panel. The spike in Figure 6a is exactly what a proper treatment effect looks like in a DL model, where there is an incremental effect in the treatment year, and nothing in other years. But this is wrong: an event study already gives us aggregate treatment effects, so aggregating again means calculating the cumulative response function of a cumulative effect. So Figure 6b is meaningless and should be removed.</p><p>And the text clearly states that Figure 6 is attempting an event study, based on interacting a treatment variable with event time indicators: </p><blockquote><p>In Figure 6 I replicate [Figure 5] using only variation from inventors who move across cities. [...] I use the subset of inventors who change city once to estimate a variant of equation (2), where t = 0 marks the time of the move, and the timing relative to an inventor&#8217;s move is interacted with the corresponding cluster size before the move and after the move. [...] Thus, this specification is an event study, based on a &#8220;pure&#8221; movers design solely exploiting variation in cluster size induced by moves.&#8221; (p.3352)</p></blockquote><p>But as I discuss in my comment, this is not a proper event study specification. Instead of using the change in cluster size associated with moving across cities, M21 interacts pre-move average cluster size with the pre-move event time indicators, and post-move average cluster size with the post-move event time indicators. M21 doesn&#8217;t show a regression equation; my reconstruction is:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JtX9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JtX9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png 424w, https://substackcdn.com/image/fetch/$s_!JtX9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png 848w, https://substackcdn.com/image/fetch/$s_!JtX9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png 1272w, https://substackcdn.com/image/fetch/$s_!JtX9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JtX9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png" width="683" height="127" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75a48478-9834-4441-8576-80fa03ab108f_683x127.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:683,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11356,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/190643977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JtX9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png 424w, https://substackcdn.com/image/fetch/$s_!JtX9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png 848w, https://substackcdn.com/image/fetch/$s_!JtX9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png 1272w, https://substackcdn.com/image/fetch/$s_!JtX9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75a48478-9834-4441-8576-80fa03ab108f_683x127.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>But this doesn&#8217;t use variation in cluster size from moving; it is identified even if there is no change in size (Size_pre = Size_post). In my comment, I show that a correct mover event study using &#8710;Size = Size_post - Size_pre as the treatment variable gives a null result.</p><p>So why does Figure 6a have that spike in t=0? Equation 1 is not using variation from moving, so there shouldn&#8217;t be a spike. This specification is actually testing for heterogeneity in the cross-sectional relationship between (averaged) cluster size and patenting by event time. So the beta coefficients should all be equal, if they estimate the same constant elasticity.</p><p>The problem is that the M21 code does not follow my Equation 1 above, due to a coding error. It doesn&#8217;t generate an interaction of Size_post with the event time indicator for t=0, but instead uses the regular time-varying cluster size variable (ln S_it). So B_0 is estimated using data from all event years, instead of capturing the effect in t=0. In Figure A1 of my comment, I show the results using the original and corrected code. The large spike disappears:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uFmd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uFmd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png 424w, https://substackcdn.com/image/fetch/$s_!uFmd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png 848w, https://substackcdn.com/image/fetch/$s_!uFmd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png 1272w, https://substackcdn.com/image/fetch/$s_!uFmd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uFmd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png" width="628" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&quot;width&quot;:628,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:20588,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/190643977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uFmd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png 424w, https://substackcdn.com/image/fetch/$s_!uFmd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png 848w, https://substackcdn.com/image/fetch/$s_!uFmd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png 1272w, https://substackcdn.com/image/fetch/$s_!uFmd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772041a6-fa32-4d84-8954-55dae0d7b2db_628x462.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>To sum up: M21 Figure 6 shows an attempted event study that is confused with a distributed lag model. Figure 6b calculates the cumulative response function of a cumulative effect, and is unnecessary. Figure 6a uses an incorrect event study specification, and the large effect is due to a coding error anyway.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Why does a regression on leads and lags do the same thing as an event study, which interacts the treatment variable with event time indicators? Consider a binary treatment T and a DL model with one lead and one lag; suppose the treatment occurs in t=2000, so T=0 before 2000 and T=1 afterwards. Then (ignoring other terms) Y_2000 = B_{-1} T_1999 + B_0 T_2000 + B_1 T_2001 = B_{-1} x 0<em> </em>+ B_0 x 1 + B_1 x 1 = <strong>B_0 + B_1</strong>. And Y_1999 = B_{-1} T_1998 + B_0 T_1999 + B_1 T_2000 = B_{-1} x 0<em> </em>+ B_0 x 0 + B_1 x 1 = <strong>B_1</strong>. So B_0 contributes to the estimate in event year 0 (t=2000), and not in event year -1 (t=1999). Hence, the incremental effect of the treatment (B_0) is identified off of the change between event years -1 and 0. This is the same as B_0 from an event study.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>M21 calculates the aggregate effects incorrectly. Schmidheiny and Siegloch (2023) says to omit t=-1 as the reference period, and calculate the cumulative effects by (1) cumulating the post-treatment effects upwards and (2) cumulating the pre-treatment effects downwards with a negative sign. M21 simply sums all of the incremental effects, with no reference period.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Moretti replication published in AER]]></title><description><![CDATA[How I found ten problems in a paper from a top economics journal]]></description><link>https://blog.michaelwiebe.com/p/moretti-replication-published-in</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/moretti-replication-published-in</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Fri, 13 Mar 2026 17:30:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gTGp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf25d50-c0f3-43c0-a07e-f70cb3599b73_613x462.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;m pleased to announce that my replication of <a href="https://www.aeaweb.org/articles?id=10.1257/aer.20191277">Moretti (2021)</a> (M21) is now accepted as a comment at American Economic Review. <a href="https://michaelwiebe.com/assets/moretti/moretti_comment_aer.pdf">Here is the pdf</a>. I find ten issues in the paper. My comment focuses on two major problems; in the appendix, I document eight (relatively) minor problems.</p><p>M21 studies agglomeration effects for innovation: do bigger technology clusters have more patenting? The main results are based on inventor-level regressions of patents on cluster size, which give a positive correlation. To claim a causal effect, M21 uses an event study and IV strategy to rule out selection and omitted variable bias.</p><p>To test for selection bias, M21 uses an event study based on inventors moving across cities. Since moving changes cluster size, we should see a clear effect on patenting; if inventors select into bigger cities, we&#8217;ll see a trend before the move.  I show that the original event study uses an incorrect model: it doesn&#8217;t actually use variation from moving. When I run a proper mover event study, I get a null result.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cf25d50-c0f3-43c0-a07e-f70cb3599b73_613x462.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cc23695-15f9-4892-a63b-30beba5d2c15_613x462.png&quot;}],&quot;caption&quot;:&quot;The original (incorrect) event study shows a big effect only in t=0. Using a proper event study shows no effect.&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7789fe0f-42e5-4a48-8667-0122ddd01823_1456x720.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>M21 uses an instrumental variable to address omitted variable bias, such as local subsidies that drive both cluster size and patenting. The instrument is based on the number of inventors in the same field who work for firms in other cities. Due to a coding error, the data is not sorted by city, so the instrument is constructed incorrectly. I correct the code and find a null result.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZMGj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZMGj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png 424w, https://substackcdn.com/image/fetch/$s_!ZMGj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png 848w, https://substackcdn.com/image/fetch/$s_!ZMGj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png 1272w, https://substackcdn.com/image/fetch/$s_!ZMGj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZMGj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png" width="748" height="119" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:119,&quot;width&quot;:748,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28313,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/190785474?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZMGj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png 424w, https://substackcdn.com/image/fetch/$s_!ZMGj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png 848w, https://substackcdn.com/image/fetch/$s_!ZMGj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png 1272w, https://substackcdn.com/image/fetch/$s_!ZMGj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532641ed-0dea-4fbc-8c3f-7a415d897f72_748x119.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">The calculates a first-difference by firm; it sorts by field (zd), firm (org_new) and year,  but not by city (bea). DD1 is then a first-difference across cities.</figcaption></figure></div><p>The event study and IV are necessary to establish that the baseline regressions show causation, nor correlation. Since they both fail, the main takeaway of my comment is that the positive correlation between cluster size and patenting may not be causal.</p><p>I was hired by Coefficient Giving to do a small extension of this paper, since it&#8217;s the main evidence on technology agglomeration effects that informs their housing policy funding. But the more I looked at the paper, the more problems I found. Let&#8217;s go through the other eight problems:</p><p><strong>Issue 3</strong>: Early on, I would sometimes get different results when running the baseline regression to get the main patenting-size elasticity. It turns out this is due to M21 using many-to-many merges in the data cleaning, so the results are actually unreproducible. Each time you run the code, you get a slightly different sample.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XSo9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XSo9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png 424w, https://substackcdn.com/image/fetch/$s_!XSo9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png 848w, https://substackcdn.com/image/fetch/$s_!XSo9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png 1272w, https://substackcdn.com/image/fetch/$s_!XSo9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XSo9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png" width="829" height="214" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/deee4464-be2f-47ad-a417-987f47b78e2e_829x214.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:214,&quot;width&quot;:829,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:&quot;Image&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!XSo9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png 424w, https://substackcdn.com/image/fetch/$s_!XSo9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png 848w, https://substackcdn.com/image/fetch/$s_!XSo9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png 1272w, https://substackcdn.com/image/fetch/$s_!XSo9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeee4464-be2f-47ad-a417-987f47b78e2e_829x214.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">M21&#8217;s cleaning code uses many-to-many merges.</figcaption></figure></div><p><strong>Issue 4</strong>: Table 6 studies the effect of cluster size on patent quality, measured using citations. M21 claims to use log citations, but the code actually does log(y+0.00001). When I use log(y+1) or Poisson, the effect switches from positive to negative.</p><p>As in <a href="https://academic.oup.com/qje/article-abstract/139/2/891/7473710">Chen and Roth</a>, this happens because the extensive margin effect is positive, and a smaller constant puts less weight on the intensive margin effect. Here, c=0.00001 means valuing the extensive margin as a 40,000% change in the intensive margin.</p><p>M21 also calculates citation- per-patent using citations-per-coauthor and patents-per-coauthor; but this nullifies the per-coauthor adjustment. The correct approach is to use citations per coauthor / whole patents.</p><p>So the original M21 finding is reversed: patent quality is in fact decreasing in cluster size. The actual story may be: larger clusters produce more patents, but they are lower quality, e.g., strategic patents used in IP lawsuits. (For example, bigger firms produce strategic patents and locate in big cities.)</p><p><strong>Issue 5</strong>: there&#8217;s another substantive coding error when M21 estimates heterogeneous elasticities by cluster size in Table 8. Here the goal is to test whether agglomeration effects are bigger in bigger clusters. M21 reports limited heterogeneity.</p><p>M21 interacts log cluster size with size quartile indicators, but incorrectly omits the quartile indicators themselves. This forces the baseline level of patents to be equal across quartiles, biasing the estimates. When I do the correct interaction, I find substantial heterogeneity across size quartiles. The patenting-cluster size elasticity is actually much bigger in large clusters.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kNSB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kNSB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png 424w, https://substackcdn.com/image/fetch/$s_!kNSB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png 848w, https://substackcdn.com/image/fetch/$s_!kNSB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png 1272w, https://substackcdn.com/image/fetch/$s_!kNSB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kNSB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png" width="760" height="384" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:384,&quot;width&quot;:760,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90849,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/190785474?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kNSB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png 424w, https://substackcdn.com/image/fetch/$s_!kNSB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png 848w, https://substackcdn.com/image/fetch/$s_!kNSB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png 1272w, https://substackcdn.com/image/fetch/$s_!kNSB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef329fe3-7efd-4661-8019-32fc244d5ae9_760x384.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The regression includes the interaction terms x_dd_i, but not the main effects dd_i.</figcaption></figure></div><p>M21 does an exercise to quantify the aggregate benefits of agglomeration. The idea: equalize cluster size and calculate the decrease in the total number of patents. Since inventors are reallocated to smaller clusters, total output falls. But since M21 understates the heterogeneity in elasticities by size quartiles, M21 also understates the aggregate effects. The aggregate losses appear to be 3x larger!</p><p>But this isn&#8217;t the final word. First, the elasticity may not be causal. Second, we need to account for the negative effect on patent quality. When I redo the exercise using quality-adjusted patents, I find a similar aggregate loss as the original. (See appendix fn.32)</p><p><strong>Issue 6</strong>: M21 uses a distributed lag model in Figure 5, regressing log patents on five leads and five lags of log cluster size. This is a demanding model, and M21 doesn&#8217;t discuss identifying assumptions. (More discussion <a href="https://blog.michaelwiebe.com/p/whats-going-on-with-the-event-study">here</a>.)</p><p>There&#8217;s another coding error: M21 defines leads and lags using Stata&#8217;s <code>_n</code> operator, which refers to the observation number. But with an unbalanced panel, the previous observation is not the previous year. (You should use the panel operators <code>L.</code> and <code>F.</code>) When I fix the code, the estimate loses significance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G6jx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G6jx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png 424w, https://substackcdn.com/image/fetch/$s_!G6jx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png 848w, https://substackcdn.com/image/fetch/$s_!G6jx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png 1272w, https://substackcdn.com/image/fetch/$s_!G6jx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G6jx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png" width="464" height="262" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:262,&quot;width&quot;:464,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47729,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.michaelwiebe.com/i/190785474?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G6jx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png 424w, https://substackcdn.com/image/fetch/$s_!G6jx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png 848w, https://substackcdn.com/image/fetch/$s_!G6jx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png 1272w, https://substackcdn.com/image/fetch/$s_!G6jx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa464eb49-eda5-4eef-90a4-b37ad8ad597e_464x262.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Here x_m1 refers to the previous observation, not the previous year.</figcaption></figure></div><p>This also applies to Fig A1, which restricts to the subset of pharmaceutical patents. When I correct the code, the sample size drops to N=58, so the regression fails entirely. Moreover, the M21 code doesn&#8217;t even match the published figure: there&#8217;s no B_0 term in Fig A1, but it&#8217;s there when I run the original code. But Fig A1 is based on Equation 2, which clearly has B_0.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0e811c2-41d0-453c-938f-593f52287d65_761x561.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0f6f2a6-fb99-4103-abc1-5965cfb0563e_663x523.png&quot;}],&quot;caption&quot;:&quot;B_0 is missing in the M21 figure, but not when you run the code.&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5890f6f-484f-493d-90dd-e0749bf0afa7_1456x720.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p><strong>Issue 7</strong>: M21 Table A.8 tests whether the elasticity is larger in higher-quality clusters. There are two issues here: the code is supposed to use modal cluster size, but M21 now takes average size. And M21 doesn&#8217;t adjust for team size, when the main results use fractional attribution for coauthored patents. After correcting, the estimates are half as large.</p><p><strong>Issue 8</strong>: M21 varies the time unit of the data, from 1-month to 3-year periods. The idea, according to M21, is to address missing observations; when inventors do not patent, they don&#8217;t have a row in the data. M21 claims this creates a downward bias at shorter time units, because more of the extensive margin effect is missing.</p><p>This interpretation is incorrect. Regardless of the time unit, there are no observations with patent=0, so no extensive margin effect can be estimated. Moreover: at shorter time units, coauthors make up a bigger share of cluster size, and patents-per-coauthor is mechanically linked to the number of coauthors. This creates a mechanical negative bias.</p><p><strong>Issue 9</strong>: M21 claims that controlling for team size (number of coauthors on a patent) increases the elasticity. This is incorrect: patents are already measured on a per-coauthor basis, so adjusting for team size again means controlling for the same variable twice.</p><p>This is especially confused. Team size is not a confounder, but a mediator: cluster size affects patenting directly, and indirectly by enabling larger teams, where team size independently affects patenting. Controlling for a mediator means shutting down the causal pathway we&#8217;re trying to estimate.</p><p><strong>Issue 10</strong>: When inventors do not patent in a year, they don&#8217;t have a row in the data; we know they have zero patents, but their city is unobserved. M21 interpolates these observations for gaps of 1 or 2 years, to capture part of the extensive margin effect.</p><p>There&#8217;s a coding error: for two-year gaps, only the second year of the gap is filled. Fixing this increases the elasticity, since more observations are interpolated, leading to a bigger extensive margin.</p><div><hr></div><p>So there are a lot of issues in M21. The major ones are the event study and IV, the citation results, and the heterogeneity by cluster size. Should you believe in agglomeration effects for innovation? My advice: don&#8217;t update too much on this paper. (Although I do have ideas on <a href="https://blog.michaelwiebe.com/p/how-to-fix-moretti-2021">how to fix it</a>.)</p><p>I started working on this 3 years ago. I emailed Moretti about the event study in July 2023, and never got a response. But he was a referee at AER and offered some useful feedback. It would have been helpful for Coefficient Giving to get this feedback sooner!</p><p>This has happened to me several times now, where the author never responds to questions. If you publish research, and it&#8217;s actually being used to inform decision-making, please respond to replicators! (Another case was my <a href="https://michaelwiebe.com/assets/atwood/atwood_comment">replication</a> of Atwood 2022 on the long-run economic effects of the measles vaccine.)</p><p>Again, read my full comment <a href="https://michaelwiebe.com/assets/moretti/moretti_comment_aer.pdf">here</a>. Please support my work by becoming a paid subscriber.</p>]]></content:encoded></item><item><title><![CDATA[How to fix Moretti (2021)]]></title><description><![CDATA[Advice for economists]]></description><link>https://blog.michaelwiebe.com/p/how-to-fix-moretti-2021</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/how-to-fix-moretti-2021</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Fri, 13 Mar 2026 17:30:53 GMT</pubDate><content:encoded><![CDATA[<p>In my <a href="https://michaelwiebe.com/assets/moretti/moretti_comment.pdf">comment</a> on <a href="https://www.aeaweb.org/articles?id=10.1257/aer.20191277">Moretti (2021)</a> (M21), I show that correcting errors in the event study and IV regressions gives null results. So should we believe in agglomeration effects for innovation? Here I discuss two ways to repair the paper.</p><p>First, the problem with the mover event study is data issues. M21 uses inventor-level data based on the <a href="https://www.kauffman.org/resources/comets/">COMETS dataset</a>, but it doesn&#8217;t distinguish between different inventors who share the same name. Instead, the M21 code simply assigns an identifier based on inventor names. As I show in my comment, we can find examples where two people with the same name are living in different cities, but this is coded as one inventor moving across cities. Since no move actually occurs, this creates attenuation bias, which could explain the null result.</p><p>For example, we see John P. Hansen patenting in Austin, Texas from 1993-2002 and in Wadsworth, Ohio from 1997-2003. Austin-Hansen works in computer science and assigns patents to Motorola, while Wadsworth-Hansen assigns patents to J.M. Smucker, the food and beverage company. M21 assigns these observations the same inventor identifier, and transforms the patent data into an inventor-year panel by assigning the inventor&#8217;s modal city, which is Austin from 1993-2002 and Wadsworth in 2003. This is then coded as John Hansen moving from Austin to Wadsworth in 2003. </p><p>But clearly these are just different people, and this case shouldn&#8217;t be used in the mover event study. So we can improve the event study by going back to the raw data and creating a proper unique identifier for inventors.</p><p>Another data issue is that the COMETS dataset does not have unique city identifiers, which also leads to misclassified moves. For example, Abbas Rafii is observed in Los Altos in 1997-1998, but is coded as moving in 1998. This occurs because the city identifier changes from 097 to 146, despite the recorded city name being Los Altos in every year. I also noticed that Fremont, California is associated with numeric codes 097, 140, and 146 with frequencies 23%, 34%, and 43%. Clearly something is wrong with the COMETS data.</p><p>So the null result in the event study could be explained by attenuation bias from misclassified moves, and could be repaired by improving the data.</p><p>Second, the null result in the IV regression could be due to the choice of instrument. Recall that the endogenous variable is cluster size, which is defined at the research field by city level. M21 instruments for cluster size using an IV based on variation in the number of inventors in firms in other cities, for firms that also have a presence in the focal city. One issue here is that there is a level mismatch: the instrument is constructed at the firm level, while cluster size is at the cluster level. So inventors at different firms in the same cluster have different instruments for cluster size, which is odd.</p><p>M21&#8217;s instrument is similar in spirit to a shift-share/Bartik IV, so why not do that? In the classic Bartik setup, we have cities and industries, and use national growth in an industry (the shift) with the industry share of city employment (the share) to construct a proxy for employment growth. Specifically, the instrument for a city&#8217;s employment growth is the weighted average of national industry growth, weighting by local shares.</p><p>In our context, we have clusters (i.e., city-field) and firms. So we can use the national growth in a firm as the shift (in a leave-one-out way to omit the focal city) with the firm&#8217;s share of inventors in the cluster (the share). So the instrument for cluster size is the weighted average of national firm growth in inventors, weighting by the firm&#8217;s share of the local cluster.</p><p>So it seems like we can apply the &#8216;exogenous shifts&#8217; version of shift-share IV, and maybe get a non-null result.</p>]]></content:encoded></item><item><title><![CDATA[Three misconceptions about inclusionary zoning]]></title><description><![CDATA[Who really pays for IZ]]></description><link>https://blog.michaelwiebe.com/p/three-misconceptions-about-inclusionary</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/three-misconceptions-about-inclusionary</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Thu, 12 Mar 2026 22:29:35 GMT</pubDate><content:encoded><![CDATA[<p>Inclusionary zoning (IZ) requires developers of new housing to provide below-market homes. For example, 20% of new units in the building have to be offered at 50% of market-rate rents. But this common policy is widely misunderstood. Here are three misconceptions:</p><ol><li><p>IZ makes developers pay for subsidized housing</p></li></ol><p>Fact: landowners and new residents pay, not developers. IZ makes developers pay the cost of providing subsidized homes, which they can pass on to landowners by paying less for land. If the IZ cost is so high that developers cannot cover the landowner&#8217;s reservation price, then the project fails. Here, IZ delays supply until prices rise enough for the project to pencil; hence, the subsidized units are effectively paid for by new residents paying higher housing prices. IZ has a ratchet effect on prices, forcing them to only ever increase.</p><ol start="2"><li><p>The below-market homes in an IZ building are cross-subsidized by the market-rate units in the same building.</p></li></ol><p>Fact: funded IZ pays for below-market units by capturing surplus land value. Unfunded IZ pays for them by raising market rents city-wide. Developers cannot set above-market rents in their building, because renters would simply find cheaper rents elsewhere. Instead, developers have to wait for market rents to rise until the development pencils; this is the ratchet effect again.</p><ol start="3"><li><p>IZ unambiguously improves housing affordability</p></li></ol><p>Fact: unfunded IZ makes developments infeasible, reducing supply and increasing prices and rents. IZ causes a demand cascade from the high-end to the low-end markets, and creates more need for subsidized housing. IZ is a net-negative policy if it creates more need for subsidized housing than the number of subsidized units provided. Simply counting the number of IZ units created does not tell us whether it passes a cost-benefit analysis, since this ignores the harm of reduced supply.</p><p>Final thought: if some IZ is good, why not do more? Why not increase density everywhere to capture even more surplus land value? Every IZ building provides subsidized homes, so we should keep upzoning and keep adding more subsidized housing.</p><p>See my full writeup on IZ <a href="https://www.buildingabundance.ca/p/inclusionary-zoning">here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Condonomics Debunked]]></title><description><![CDATA[A review of Patrick Condon's 'Broken City']]></description><link>https://blog.michaelwiebe.com/p/condonomics</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/condonomics</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Tue, 02 Sep 2025 17:00:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/14a2232a-5b46-420d-82c9-2ab6962ed68a_750x400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In <a href="https://www.ubcpress.ca/broken-city">Broken City</a>, landscape architect Patrick Condon presents a diagnosis of the housing crisis. Condon claims to be a pragmatic empiricist, but he actually relies on extreme theoretical scenarios. He thinks in memes, not models. The result is a flawed analysis of housing policy. Condon misunderstands the relationship between land and housing prices, and incorrectly identifies upzoning as the main cause of the housing crisis. This leads him to reject supply and demand theory entirely. Applying this erroneous framework to inclusionary zoning and development taxes, Condon recommends policies that would worsen housing affordability.</p><h1>I. An incoherent theory of land values</h1><p>Condon&#8217;s thesis is that rising land values are responsible for increasing housing costs:</p><blockquote><p>The thesis of this volume [&#8230;] is that the housing crisis is not caused by an impeded supply of homes but by the asset value of the land below them. This Rent value is inflated when higher-density homes are authorized, much to the disappointment of those who argue that the housing-affordability problem is caused by constrained supply. (p.177)</p></blockquote><p>In other words, since land is an input into the production of housing, higher land values will drive up housing costs. And upzoning in particular is a primary cause of higher land values. This view is superficially plausible. As a naive empiricist, Condon has observed rising housing prices and land values coincide with upzonings. But what is the actual causal relationship underlying these correlations?</p><p>Condon thinks that upzoning drives land values, which in turn causes higher housing prices. Right away we can find a fatal flaw in this view: in First Shaughnessy, a heritage-protected mansion neighborhood in Vancouver, land values quintupled between 2006 and 2017 (before decreasing after a property tax was implemented). Over the same period, building values doubled.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GC-K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GC-K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png 424w, https://substackcdn.com/image/fetch/$s_!GC-K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png 848w, https://substackcdn.com/image/fetch/$s_!GC-K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png 1272w, https://substackcdn.com/image/fetch/$s_!GC-K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GC-K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:144,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!GC-K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png 424w, https://substackcdn.com/image/fetch/$s_!GC-K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png 848w, https://substackcdn.com/image/fetch/$s_!GC-K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png 1272w, https://substackcdn.com/image/fetch/$s_!GC-K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1ad06f-1529-4f99-a0ed-8386c01810a2_750x400.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>The entire neighborhood of First Shaughnessy is a <a href="https://bylaws.vancouver.ca/ODP/odp-heritage-conservation-area.pdf">heritage conservation area</a>, so we have a clean natural experiment: very few upzonings are happening here (and any rezoned parcels are removed from the data), and yet land values are soaring. Moreover, the pattern in the rest of Vancouver is almost identical; so land values are increasing whether or not upzonings occur.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>But then what is causing the increase in land values? Condon has no answer. He could appeal to speculators bidding up parcels in anticipation of future upzonings, but when the entire neighborhood is heritage-protected, this is obviously strained. Hence, we can discard his thesis.</p><p>So what is the correct model of housing and land values?</p><p>Consider a simplified setting where land is zoned for either detached houses or six-storey apartments; developers can build houses on house-zoned <em>or</em> apartment-zoned land, and can build apartments only on apartment-zoned land. Upzoning means reallocating a parcel from house-zoning to apartment-zoning. This makes apartment-zoned land more abundant and hence cheaper (Figure 1b), while house-zoned land becomes scarcer and more expensive (Figure 1a). Since land is an input into housing, upzoning makes apartments cheaper and houses more expensive.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> (See <a href="https://michaelwiebe.com/blog/2025/07/land_model">here</a> for a full writeup.)</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zZuA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zZuA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png 424w, https://substackcdn.com/image/fetch/$s_!zZuA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png 848w, https://substackcdn.com/image/fetch/$s_!zZuA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png 1272w, https://substackcdn.com/image/fetch/$s_!zZuA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zZuA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!zZuA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png 424w, https://substackcdn.com/image/fetch/$s_!zZuA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png 848w, https://substackcdn.com/image/fetch/$s_!zZuA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png 1272w, https://substackcdn.com/image/fetch/$s_!zZuA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8442d7-bb84-4b1f-8080-033efa779ffe_706x377.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>A supply and demand model of upzoning and land prices</em></p><p>Condon does get one thing right: the upzoned parcel itself increases in value as it switches markets (from P1H to P2A). But this &#8216;own-parcel effect&#8217; is irrelevant for evaluating upzoning. Developers make decisions based on the market-wide price, not the price of a single parcel. Upzoning reduces costs for apartment-developers, because it reduces the price of apartment-zoned land. The upzoned parcel itself was previously <em>legally</em> unavailable to apartment-developers, so making it available at <em>some</em> price is an unambiguous improvement.</p><p>In this model, housing demand is the main driver of land values. When demand to live in the city increases while supply is constrained, housing prices go up, which raises developers&#8217; willingness-to-pay for land. This is why land values in First Shaughnessy quintupled: Vancouver became more attractive to global-elite CEO types who want to live in a mansion. Hence, the cause of the housing crisis is housing demand growing faster than supply, with rising land values being a symptom. So Condon has misdiagnosed the problem, confusing cause with effect.</p><p>We can also see the problem with Condon&#8217;s thesis by applying it more generally. His view implies that it&#8217;s never worth it to upgrade something, because upgrading just increases the cost. For example, processing iron ore into steel just means you have to pay more for the finished product. Let&#8217;s apply Condon&#8217;s thesis from above to steel:</p><blockquote><p>the [steel] crisis is not caused by an impeded supply of [steel] but by the asset value of [iron ore]. This Rent value is inflated when [ore-processing is] authorized, much to the disappointment of those who argue that the [steel]-affordability problem is caused by constrained supply.</p></blockquote><p>But of course, manufacturers can&#8217;t use iron ore, just as apartment-developers can&#8217;t use house-zoned land. And the increased availability of steel makes it cheaper, so manufacturers are actually better off, just as apartment-developers are better off when apartment-zoned land is cheaper.</p><h1>II. A dogmatic rejection of supply and demand</h1><p>In Condon&#8217;s worldview, supply and demand cannot explain the housing market:</p><blockquote><p>The theory of supply and demand has been undercut by the observed economic reality [&#8230;] that no matter how many new housing units a metropolitan area adds, housing prices continue to rise. (p.56)</p></blockquote><p>Condon attributes the problem to land values:</p><blockquote><p>[The] increase in urban land price seems to be caused by factors other than the supply and demand for new homes. The increase has to do with the innate limits on the availability of urban land and with how these limits make land perform uniquely in the global marketplace for &#8220;real&#8221; assets. (p.56)</p></blockquote><p>For Condon, housing demand doesn&#8217;t affect land prices, so he needs to find some other factor to explain why land values have increased. As we&#8217;ve seen, his attempt to pin the problem on upzoning fails, and with it, his attempt to disprove supply and demand.</p><p>In fact, a supply and demand model can neatly explain the data. Demand to live in cities like Vancouver has increased, and restrictive zoning has prevented supply from keeping up. This supply and demand mismatch causes both higher housing prices and higher land values.</p><p>Condon is fond of claiming that Vancouver&#8217;s city center has tripled the stock of homes, yet prices remain very high. He is simply unable to conceive of demand being a cause of housing prices.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1eUW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1eUW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1eUW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1eUW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1eUW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1eUW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!1eUW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1eUW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1eUW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1eUW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F683c04d4-aa66-447f-91f7-e6f13606d60a_508x491.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1>III. A reliance on theoretical edge cases</h1><p>To see how Condon uses extreme theoretical edge cases, let&#8217;s consider his numerical example showing that upzoning merely increases land values:</p><blockquote><p>Imagine a parcel of 4,000 square feet with an allowable floor surface ratio of one (FSR 1) that sells for $2 million dollars prior to rezoning. If the allowable density is doubled to a floor surface ratio of two (FSR 2), the redevelopment value increases in kind, forcing a near doubling in the value of the land to $4 million. Why?</p><p>When the city authorities a doubling of market density without requiring affordability, the residual land price goes up in response. The city gets more efficient use of the land with the new density &#8211; all good &#8211; but gets no substantial decrease in the [price] per square foot of new housing. [&#8230;]</p><p>In this example, with a market sale price of $1,000 per square foot of usable interior space, the developer would calculate a land-price residual of $500 per buildable square foot because that is what is left after paying for construction (at $250 per square foot) and for fees, constants, and profits (at a total of $250 per square foot). The developer can afford only up to $500 per buildable square foot, or roughly $4 million for land (i.e., 8,000 interior square feet at $500 per buildable square foot). [&#8230;] But note the land-price residual has doubled from $2 million to $4 million. And if the developer refuses to pay the $4 million, some other developer certainly will. (p.195-96)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p></blockquote><p>Note the last sentence: this entire argument depends on this tacked-on clause, though Condon does not realize it. When would a developer be willing to pay $4 million? Only when demand for housing is perfectly elastic, so the demand curve is horizontal (see Fig 2a below). In this case, shifting the supply of housing doesn&#8217;t reduce the price, because supply always intersects demand at the same price. So Condon is simply <em>assuming</em> that upzoning does not reduce housing prices.</p><p>If we relax this assumption, then the demand curve slopes downward (as usual), and increasing supply reduces the price (Fig 2b).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> For example, if a mass upzoning increases supply and causes housing prices to fall to $900psf, then the land price residual is now $400psf instead of $500psf. Hence, developers would only be willing to pay $400*8000 = $3.2M, instead of $4M.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> Notice what happened: land values went up and housing prices went down; but according to Condon, this should be impossible.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7wjG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7wjG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png 424w, https://substackcdn.com/image/fetch/$s_!7wjG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png 848w, https://substackcdn.com/image/fetch/$s_!7wjG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png 1272w, https://substackcdn.com/image/fetch/$s_!7wjG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7wjG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!7wjG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png 424w, https://substackcdn.com/image/fetch/$s_!7wjG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png 848w, https://substackcdn.com/image/fetch/$s_!7wjG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png 1272w, https://substackcdn.com/image/fetch/$s_!7wjG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44860bda-5951-4101-abe4-4158eeb40a5f_711x393.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>The effect of increased housing supply for different demand curves</em></p><p>Another problem is that Condon is focused on the land price of a single parcel, instead of the market-wide price of each type of land. When the parcel is upzoned, it switches from 1-FSR to 2-FSR. This makes the set of all 1-FSR parcels smaller by one, and the set of all 2-FSR parcels bigger by one. So 1-FSR land becomes more expensive and 2-FSR land becomes cheaper. But Condon completely ignores this effect, because he does not track land prices by type before and after the upzoning.</p><p>Finally, this argument doesn&#8217;t even support Condon&#8217;s thesis. His claim is that higher land values are the cause of higher housing prices, and that upzoning is the main cause of rising land values. But in this example, the goalposts have shifted: now the goal is to show that upzoning does not <em>reduce</em> housing prices. That&#8217;s because Condon doesn&#8217;t have a model of prices; by assuming perfectly elastic demand, he effectively takes prices as fixed, and determined outside of the model. Hence, even if we set aside the reliance on a theoretical edge case, Condon is unable to support his thesis that upzoning increases housing prices.</p><h1>IV. A backwards analysis of inclusionary zoning</h1><p>Condon favors inclusionary zoning (IZ) as a solution to the housing crisis, because it reduces land values. Under the &#8216;density bonus&#8217; version of IZ discussed by Condon (from Cambridge, MA), developers are granted permission to build extra density in exchange for making all units in the project Affordable (that is, available at subsidized prices).</p><p>Continuing the numerical example from above, if the city imposes a housing price of $750psf on the new Affordable units, then the developer&#8217;s willingness-to-pay for land is: $750psf - $500psf = $250psf. For 8,000sf (at FSR=2), this means the developer will pay up to $2M for the parcel, compared to $4M in the market-rate upzoning scenario.</p><p>For Condon, IZ reduces housing prices because it reduces land values:</p><blockquote><p>In this example, if a nonprofit housing corporation or co-op is assumed, the selling price per square foot drops from $1,000 to $750, with all of this price reduction attributable to lower land cost (p.197).</p></blockquote><p>But this gets the causality backwards. The lower housing price is not &#8216;attributable&#8217; to the lower land price; rather, the regulated housing price directly causes the lower land price. By artificially controlling the housing price, we reduce developers&#8217; willingness-to-pay for land, which in turn reduces the land price. So the land price is a symptom, not a cause.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p><p>Condon mistakenly implies that IZ works like a cost-reduction policy, by reducing the price of housing inputs (namely, land). But IZ is a <em>non</em>-market policy. It has no direct effect on the market forces that led to a housing price of $1,000psf.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a> Using IZ to reduce land costs is like dipping a thermometer in cold water to reduce the air temperature.</p><p>This is an important point. IZ doesn&#8217;t address the question of how we make <em>market-rate</em> housing more affordable. Even though the vast majority of people live in market housing, Condon has no answers for them. Because he rejects supply and demand, Condon has given up on fixing the housing market, and instead wants to switch to a non-market approach.</p><p>While IZ is better than doing nothing, it is still worse than simple upzoning. With Condon&#8217;s version of IZ, the supply of market-rate housing cannot respond to increases in high-end demand, because only new subsidized units are allowed. This causes a <a href="https://michaelwiebe.com/blog/2024/08/perfsub_cts#demand-cascades-and-yuppie-fishtanks">demand cascade</a>, where unabsorbed demand at the top of the market cascades down and increases competition for low-end homes, which in turn forces poorer residents to look for non-market housing. Hence, while IZ does increase the supply of subsidized homes, it also increases the need for subsidized housing. IZ is self-defeating.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A84Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A84Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!A84Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!A84Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!A84Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A84Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!A84Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!A84Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!A84Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!A84Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf40a6be-e898-4602-9fbd-9d0b3bac3a47_753x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>Original <a href="https://imgflip.com/memegenerator/171305372/Soldier-protecting-sleeping-child">meme</a> for context</em></p><h1>V. A failure of value capture</h1><p>And we can do land value capture in a market system. Using my upzoning example above, when we relax the assumption of perfectly elastic demand, housing prices fall from $1000psf to $900psf and the land value increases from $2M to $3.2M. Since the minimum amount the landowner is willing to accept (their reservation price) is $2M, the city could impose a windfall tax of $1.2M on the landowner. In this case, the surplus created by upzoning is split between lower market-rate housing prices and higher land values, which are taxed for public benefit. Again, higher land values are consistent with lower housing prices.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a></p><p>Because Condon insists that only upzoning can cause higher land values, his approach to value capture is woefully incomplete. As we&#8217;ve seen, land values in First Shaughnessy have multiplied, despite zero upzonings. This land lift is driven by increased demand, and cannot be captured by regulations that apply only conditional on redevelopment. Condon&#8217;s fixation on upzoning has blinded him to billions of dollars in land lift that should have been captured for public benefit. The solution is to tax land values unconditionally, as with a land value tax.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a></p><p>Moreover, the same focus on upzoning means that Condon prescribes taxing only new housing, while leaving old housing untouched; this makes him a favorite among NIMBY activists. In fact, we can see in the graph above that the 2019 <a href="https://www2.gov.bc.ca/gov/content/taxes/property-taxes/annual-property-tax/school-tax/additional-school-tax-rate">property tax</a> coincided with a decrease in land values; but Condon appears uninterested in raising taxes that affect all homeowners.</p><h1>VI. A partial grasp of development taxes</h1><p>Condon does not have a model of the land market as a whole. Instead he analyzes a single parcel, which leads to a misleading analysis of development charges:</p><blockquote><p>Development taxes [&#8230;] will affect the residual value of each buildable square foot of a subject parcel. When development taxes are added, the land-price residual goes down, and when development costs are removed, the land-price residual goes up. In this way, development taxes do not add to housing prices for new owners but reduce the residual value per buildable square foot of the development site, thus lowering the money that a developer is able to offer the landowner (p.197-198).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-12" href="#footnote-12" target="_self">12</a></p></blockquote><p>This is true for a limited context. Specifically, when the tax amount is low enough that the project remains feasible, then the developer does pay less for land. Housing prices are set by the total quantity of homes supplied and demanded; since these haven&#8217;t changed, housing prices are unaffected by the tax. So development taxes are another way to implement land value capture.</p><p>But more generally, excessive taxes can kill projects, which reduces supply and raises prices. Obviously a tax of $100M would not merely reduce the land price residual. Instead, it would lower the developer&#8217;s willingness-to-pay below the landowner&#8217;s reservation price, so the transaction would fail and the project would be cancelled. Since the tax reduces the quantity of homes supplied, it raises housing prices. In general, to evaluate the effect of a tax on housing prices, we need to look at the change in the total number of homes.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-13" href="#footnote-13" target="_self">13</a></p><p>Condon doesn&#8217;t seem to recognize the risk of killing projects:</p><blockquote><p>However, a development tax imposed late in the approval process <em>may</em> make the business case for a project unworkable. At that point, either the project will be cancelled or the price for the land will be renegotiated down. Municipalities are therefore in a position to moderate or eliminate land-price inflation by signalling their intention, years ahead of time, to impose a development tax. One might call this process disciplining the land market. (p.163)</p></blockquote><p>Again, if projects are cancelled because a tax, then supply is reduced and housing prices are higher compared to the no-tax scenario. The same is true if the tax prevents projects from being started in the first place. Condon does not show an awareness of how taxes affect housing prices, since he is narrowly focused on minimizing land values.</p><p>It&#8217;s worth spelling out what Condon&#8217;s strategy of &#8220;disciplining the land market&#8221; means. For Condon, housing does not follow supply and demand, so reducing market-rate housing prices is off the table. Instead, our only hope is to make land cheap enough for non-market projects to pencil. This requires imposing enough costs on developers that they stop building new projects, and hence stop offering to buy land at high prices. In turn, landowners would eventually realize that their land won&#8217;t sell for a gain, and that they might as well sell it to a non-market developer with a lowball offer. Hence, we get cheap land for non-market housing.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-14" href="#footnote-14" target="_self">14</a></p><p>But as I noted above, this strategy would be a disaster. It does nothing to absorb demand increases, so demand cascades would occur continuously, raising prices and pushing more and more people into needing subsidized housing. Fortunately, Condon&#8217;s views are incorrect, and we can improve affordability by upzoning to increase housing supply.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>R code to produce the graph:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;r&quot;,&quot;nodeId&quot;:&quot;6f07e822-3112-456d-a476-00fa911c1a75&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-r">
library(VancouvR)
library(tidyverse)

# time series plot of average land and building values in First Shaughnessy

# remove upzoned parcels and character infill
  # if zoning changes, then no longer FSD
  # hence, require that zoning is FSD in all years
# use assessment date: July 1 of previous year

fsd_data &lt;- search_cov_datasets("tax")$dataset_id |&gt;
  map_df(\(ds)get_cov_data(ds, where = "zoning_district= 'FSD'",
         select = "pid,land_coordinate,zoning_district,neighbourhood_code,report_year,current_land_value,current_improvement_value")) |&gt;
  mutate(n=n(),.by=land_coordinate) # count number of times a parcel appears

est_data &lt;- tibble(Date=as.Date(c("2018-02-01")), label=c("Announced"))

png(file=paste0("shaughnessy.png"), width=750, height=400, res=90)
fsd_data |&gt;
  # keep parcels with 18 observations as FSD
  # if &gt;18, then multiple conversion dwelling: multiple dwellings per parcel
  filter(n==length(unique(fsd_data$report_year))) |&gt;
  summarize(`Land value`=mean(current_land_value),
            `Building value`= mean(current_improvement_value),
            .by=report_year) |&gt;
  mutate(Date=as.Date(paste0(as.integer(report_year)-1,"-07-01"))) |&gt;
  arrange(Date) |&gt;
  pivot_longer(cols=c(`Land value`, `Building value`), names_to="type", values_to="value") |&gt;
  ggplot(aes(x=Date, y=value, colour=type)) +
  geom_line() +
  geom_point(shape=21) +
  geom_vline(data=est_data, aes(xintercept=Date), colour="black", linetype="dashed") +
  scale_y_continuous(labels=\(x) scales::dollar(x, scale=10^-6, suffix="M")) +
  scale_color_manual(values=c("Land value"="#1F77B4", "Building value"="#FF7F0E")) +
  labs(
    title="First Shaughnessy land and building values",
    x="Assessment year",
    y="Average value",
    colour=NULL,
    caption="Note: extra school tax announced in 2018, implemented in 2019."
  ) +
  guides(linetype="none") +   # removes legend entry for vline
  theme(plot.caption = element_text(hjust = 0) # left-align caption
        , legend.position = "right",
        legend.justification = "center"
        ) 
dev.off()

# same graph for rest of Vancouver
nonfsd_data &lt;- search_cov_datasets("tax")$dataset_id |&gt;
  map_df(\(ds)get_cov_data(ds, where = "zoning_district != 'FSD'",
                           select = "pid,land_coordinate,zoning_district,neighbourhood_code,report_year,current_land_value,current_improvement_value")) |&gt;
  mutate(n=n(),.by=land_coordinate) # count number of times a parcel appears

png(file=paste0("non_shaughnessy.png"), width=750, height=400, res=90)
nonfsd_data |&gt;
  filter(is.na(current_land_value)==0 &amp; is.na(current_improvement_value)==0) |&gt;
  summarize(`Land value`=mean(current_land_value),
            `Building value`= mean(current_improvement_value),
            .by=report_year) |&gt;
  mutate(Date=as.Date(paste0(as.integer(report_year)-1,"-07-01"))) |&gt;
  arrange(Date) |&gt;
  pivot_longer(cols=c(`Land value`, `Building value`), names_to="type", values_to="value") |&gt;
  ggplot(aes(x=Date, y=value, colour=type)) +
  geom_line() +
  geom_point(shape=21) +
  geom_vline(data=est_data, aes(xintercept=Date), colour="black", linetype="dashed") +
  scale_y_continuous(labels=\(x) scales::dollar(x, scale=10^-6, suffix="M")) +
  scale_color_manual(values=c("Land value"="#1F77B4", "Building value"="#FF7F0E")) +
  labs(
    title="Vancouver land and building values (excluding First Shaughnessy)",
    x="Assessment year",
    y="Average value",
    colour=NULL,
    caption="Note: additional school tax announced in 2018, implemented in 2019."
  ) +
  guides(linetype="none") +   # removes legend entry for vline
  theme(plot.caption = element_text(hjust = 0) # left-align caption
        , legend.position = "right",
        legend.justification = "center"
  ) 
dev.off()</code></pre></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>We see a similar increase in land values in the rest of Vancouver, where upzoning happens much more frequently compared to First Shaughnessy. So upzoning cannot be main explanatory factor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sqED!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sqED!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png 424w, https://substackcdn.com/image/fetch/$s_!sqED!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png 848w, https://substackcdn.com/image/fetch/$s_!sqED!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png 1272w, https://substackcdn.com/image/fetch/$s_!sqED!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sqED!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png" width="750" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:750,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!sqED!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png 424w, https://substackcdn.com/image/fetch/$s_!sqED!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png 848w, https://substackcdn.com/image/fetch/$s_!sqED!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png 1272w, https://substackcdn.com/image/fetch/$s_!sqED!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6553a5c-b569-4a66-82f7-e2e294a38cb2_750x400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Equivalently, higher supply of apartment-zoned land increases the supply of apartments, reducing their price. Since apartments are cheaper, the return to owning apartment-zoned land is lower. In a general equilibrium model, land and housing prices are <a href="https://michaelwiebe.com/blog/2025/08/hijack_review#land-and-housing-prices">jointly determined</a>; causality runs in both directions. So lower land prices cause lower apartment prices, and lower apartment prices cause lower land prices. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Condon has a meme version of this example, where the key point is that housing prices are held fixed by assumption.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lT4n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lT4n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png 424w, https://substackcdn.com/image/fetch/$s_!lT4n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png 848w, https://substackcdn.com/image/fetch/$s_!lT4n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png 1272w, https://substackcdn.com/image/fetch/$s_!lT4n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lT4n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png" width="936" height="702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:936,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!lT4n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png 424w, https://substackcdn.com/image/fetch/$s_!lT4n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png 848w, https://substackcdn.com/image/fetch/$s_!lT4n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png 1272w, https://substackcdn.com/image/fetch/$s_!lT4n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe3cbdc-04cc-4d01-b084-fb15e504041c_936x702.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>By the same logic, upzoning agricultural land to single-family residential doesn&#8217;t reduce housing prices, because it just increases land values.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dNAQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dNAQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!dNAQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!dNAQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!dNAQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dNAQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dNAQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!dNAQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!dNAQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!dNAQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360a497b-07ac-4739-a3eb-d5c7599266de_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>What if inter-city migration makes local housing demand highly elastic? In this case, we evaluate one city&#8217;s upzoning in the context of the national market, since lower prices induce in-migration from other cities. Upzoning in city A also reduces prices in B and C, so the effect is scaled down by A&#8217;s share of the national population. But the national demand curve is downward-sloping, since immigration into the country is limited, so we get the same analysis as before. In fact, this is just an argument for upzoning nationally, and for zoning policy to be set at higher-level governments to internalize the externalities of local upzoning.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Is Condon committing a fallacy of composition here, instead of assuming perfectly elastic demand? That is, upzoning one parcel doesn&#8217;t reduce housing prices, but upzoning the entire city would; and Condon is arguing from no effect of upzoning one parcel to no effect of upzoning all parcels. I don&#8217;t think this fits. When demand is perfectly elastic, neither a single upzoning nor a mass upzoning has any effect on price. But if demand is downward-sloping, then upzoning even one parcel would decrease the housing price by a tiny amount, say to $999.99psf. But then it&#8217;s obvious that a larger upzoning would reduce prices even more.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>More generally, there&#8217;s no necessary connection between lower land values and more-affordable housing. We can always reduce the land price by reducing how much buyers are willing to pay. For example, if we change the zoning to &#8220;parking lot only&#8221;, the land value will certainly be reduced! But obviously this will not make housing more affordable (in fact, the opposite).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>Strictly speaking, there is some substitution effect, as new subsidized units reduce demand and prices in the market-rate sector.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>Versions of IZ that allow some market-rate housing alongside the Affordable units, and hence absorb demand increases, are better than versions that don&#8217;t allow any market-rate housing.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>Condon is focused on reducing land values <em>indirectly</em>, by reducing how much developers are willing to pay for land, so the price doesn&#8217;t increase in the first place. As the windfall tax shows, this is not necessary; the city can capture the same land value when the transacted price goes up, by directly taxing the landowner. Also note that a land value tax works like IZ, by reducing developer willingness-to-pay for land. With a LVT, future tax payments are a liability that reduce the value of owning land.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>An unconditional tax would also solve the problem of landowners shrinking land lift by raising their selling price in anticipation of future upzonings.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-12" href="#footnote-anchor-12" class="footnote-number" contenteditable="false" target="_self">12</a><div class="footnote-content"><p>Condon also has a meme version of this argument.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SVqz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SVqz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SVqz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SVqz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SVqz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SVqz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg" width="1456" height="933" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:933,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!SVqz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SVqz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SVqz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SVqz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22cc895-94e8-4830-9ce1-f99ac83bfd28_1839x1179.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The key assumption is that fees are less than the land price residual; if fees are larger, then the residual is negative and the project fails.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YZyY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YZyY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png 424w, https://substackcdn.com/image/fetch/$s_!YZyY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png 848w, https://substackcdn.com/image/fetch/$s_!YZyY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png 1272w, https://substackcdn.com/image/fetch/$s_!YZyY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YZyY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png" width="520" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:520,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!YZyY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png 424w, https://substackcdn.com/image/fetch/$s_!YZyY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png 848w, https://substackcdn.com/image/fetch/$s_!YZyY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png 1272w, https://substackcdn.com/image/fetch/$s_!YZyY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e3cb72f-f16c-47e1-96e8-0720377cd207_520x548.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-13" href="#footnote-anchor-13" class="footnote-number" contenteditable="false" target="_self">13</a><div class="footnote-content"><p>Similarly, a tax cut reduces prices by increasing the quantity of homes, since projects that didn&#8217;t pencil with the tax now become feasible. These new homes increase competition between sellers, which drives prices down.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-14" href="#footnote-anchor-14" class="footnote-number" contenteditable="false" target="_self">14</a><div class="footnote-content"><p>&#8220;Condon acknowledged that &#8220;disciplining the land market&#8221; would take time and require certain projects to go unbuilt, at least for a few years. A city council that attempted to do it could be seen as actively blocking new housing construction in a city where more affordable homes are always needed.&#8221; <a href="https://www.ctvnews.ca/vancouver/article/land-lift-how-vancouver-zoning-policy-creates-multi-million-dollar-teardowns/">Source</a></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[A review of Murray's 'Great Housing Hijack']]></title><description><![CDATA[In The Great Housing Hijack, Cameron Murray sets up a framework with five equilibria (asset price, rental, spatial, density, and absorption rate), which he applies to various policy issues.]]></description><link>https://blog.michaelwiebe.com/p/hijack_review</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/hijack_review</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Tue, 19 Aug 2025 17:00:00 GMT</pubDate><content:encoded><![CDATA[<p>In <a href="https://www.allenandunwin.com/browse/book/Cameron-K.-Murray-Great-Housing-Hijack-9781761470851">The Great Housing Hijack</a>, Cameron Murray sets up a framework with five equilibria (asset price, rental, spatial, density, and absorption rate), which he applies to various policy issues.</p><p>I found a couple of insightful points. For example, the price-to-income ratio is a flawed measure of housing (ownership) affordability, because we really care about the cost of housing services (i.e., mortgage payments), which is a function of the interest rate. Hence, any measure of affordability needs to adjust for the interest rate. Moreover, since property taxes are priced into housing prices, we also need to adjust for different tax rates across cities. In the chapter on vacant homes, Murray distinguishes between vacant and unoccupied homes, and gives a useful analogy between vacant rental homes and unemployed workers.</p><p>Murray often makes &#8220;cui bono?&#8221; style arguments, asking about someone&#8217;s self-interest in making an argument, rather than engaging with the argument in good faith. For example, Murray points out that landowners and developers benefit from high prices, yet support upzoning.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> But of course, many property owners are strenously opposed to new housing, giving up financial returns to protect their neighborhood character. Moreover, interest groups are diverse. A new developer entering the market wants lower prices in order to outcompete incumbents. Or take small-scale developers, who would benefit from the legalization of six-storey single-stair apartments, while big developers are happier with a discretionary system where being friends with the developer of planning is a job requirement.</p><p>In another case, Murray discusses at length how the UCLA Lewis Center is funded by a developer and landlord:</p><blockquote><p>There is no way that a property owner with a balance sheet in the billions has a financial interest in policies that bring down the value of property assets [&#8230;] The Lewis Group is also a landlord with 11,000 units, so it won&#8217;t support policies that reduce rents to benefit tenants. Like property lobbyists in Australia, research from UCLA&#8217;s Lewis Center is focused on deregulating town planning [&#8230;] its research is always beneficial for its property-owner funders. (p.97)</p></blockquote><p>This mudslinging is beneath serious researchers. In my experience, the Lewis Center does solid work, and the Housing Voice podcast is great.</p><p>On a related note, Murray points out that political incentives are very strongly in favor of incumbent homeowners, who make up a majority of voters. But I&#8217;m puzzled by this framing:</p><blockquote><p>A policy that reduced home prices by 30 per cent would wipe $3 trillion of value from household balance sheets, hitting hardest the households with the highest income and the most political influence. (p.84)</p></blockquote><p>In other words, if some imaginary policy could reduce housing costs by 30%, it would still be political suicide. But why are we talking about imaginary policies? Why don&#8217;t we talk about the actual policies that are on the table? There is no policy that will uniformly reduce property values. For instance, upzoning will lower housing prices but raise land values, leading to a nuanced set of winners and losers.</p><p>Murray attacks YIMBYs as self-contradictory for supporting more homes and more immigration.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> But there is a tension only if you take a restrictive view of who matters (incumbent residents, not newcomers). By Murray&#8217;s logic, we can boost the number of homes per capita by deporting half of the population.</p><h1>Land and housing prices</h1><p>Murray claims that housing prices determine land prices:</p><blockquote><p>the price of [vacant land] is the residual of dwelling value, minus the cost of developing that dwelling and a margin for the perceived risk of that arbitrage. [&#8230;] The causality runs from the price of dwellings to the price of land via the cost of development. (p.48)</p></blockquote><p>This picture is incomplete. In general equilibrium, land and housing prices are <em>jointly determined</em>; the causality runs in both directions. For example, what is the effect of doubling a city&#8217;s residential land area (upzoning from agricultural to residential)? Intuitively, this makes land more abundant, and hence cheaper for developers; competition between developers then reduces housing prices. On the residual view, this intuition is wrong. Instead, we have to say that more abundant land leads to more housing, and lower housing prices lead to lower residual land values. But in fact both channels are true; single-direction causal explanations do not work in general equilibrium models.</p><p>Murray gives a numerical example:</p><blockquote><p>the price of land is $300,000 per developable lot, and the cost of developing a home is $300,000, but the price of a home is $500,000. No one will buy the land at the $300,000 price. [&#8230;] The price of the vacant property must adjust back to $200,000 so that the cost of buying an existing home, or building a new one, is the same. (p.48)</p></blockquote><p>But this does not necessarily follow. It could also be the case that land prices are fixed and housing prices have to adjust upwards to $600k (= 300k + 300k); that is, it&#8217;s the housing prices that are out of equilibrium. In general equilibrium, both housing and land prices will adjust, but Murray assumes a partial equilibrium view (holding housing prices fixed).</p><h1>Spatial equilibrium and the location of housing</h1><p>Murray takes a simplistic view of spatial equilibrium, where the location of new housing doesn&#8217;t matter, because prices will adjust as people sort geographically:</p><blockquote><p>We must apparently build &#8216;where people want to live&#8217;. But spatial equilibrium tells us that people will live anywhere, because all locations are substitutes at the right price. Sure, higher value areas have lower travel times and better amenity; the value of this location benefit is exactly equal to the additional rent compared to other areas. (p.65)</p></blockquote><p>This paragraph is very puzzling. A spatial model with congestion and agglomeration externalities delivers an unambiguous conclusion: we should build homes near jobs and amenities. Murray seems to be attached to the vanilla model without externalities.</p><p>Murray claims that planners and zoning affect the location, but not the rate, of new housing supply. This may be true: zoning restrictions in Vancouver have certainly redirected demand and caused massive growth in the suburbs (Surrey will soon overtake Vancouver in population). But there are obvious violations. If zoning causes people to double-up and form larger households to stay in the city, instead of moving to the suburbs and building a new home, then total supply is in fact lower.</p><p>I wanted to see more comparative analysis, for example using a two-city model to show how high and low levels of regulation affect the rate of new supply. Murray tends to make over-time comparisons instead of comparing against a counterfactual.</p><p>Murray claims that &#8220;one part of a region [having] no housing development doesn&#8217;t lead to higher rents in aggregate&#8221; (p.141). Clearly something has gone wrong here. By this logic, all cities could impose 100%-binding zoning constraints and there would be no effect on aggregate prices. But Murray does not present a model that could generate this result.</p><h1>The rate of new supply</h1><p>Murray skips over a static model and instead uses a dynamic model, where we have a rate of new supply over time (&#8216;absorption rate&#8217;). Murray thinks it is an insightful point that developers will limit how fast they build new homes. But this seems like a mundane response to uncertainty and production lags; developers will reduce risk through a diversified portfolio of projects. And note that this behavior is encouraged by a discretionary planning regime; if developers could build apartments under apartment zoning, instead of needing permission for every project, they would have less need to smooth out risk.</p><p>Murray says:</p><blockquote><p>Housing analysts who argue that we need to let the market rip to increase the number of homes always overlook the absorption rate equilibrium. Property owners will not flood the market with new homes just because the rules allow it. (p.72)</p></blockquote><p>The key issue here is whether zoning is a binding constraint. If it is, then relaxing that constraint will reduce costs and increase supply. Murray seems to believe this argument: &#8216;developers already leave feasible sites undeveloped, so adding more feasible sites won&#8217;t make a difference&#8217;. But upzoning actually changes the feasibility threshold, by reducing land costs, which in turn increases the supply of housing (see <a href="https://michaelwiebe.com/blog/2025/07/land_model">here</a>).</p><h1>Other issues</h1><p>Murray motivates his arguments using striking anecdotes, like a development of detached homes being rejected by city council for being too low density next to a proposed train station in the exurbs. This anecdote sets up the question: if lack of density is the cause of high rents, why aren&#8217;t developers building to the maximum allowed? I didn&#8217;t find this persuasive. Were there poison pills that made apartments infeasible (limits on height or floor space, setbacks, unfunded inclusionary zoning, etc.)? Meanwhile, there are plenty of <a href="https://senakw.com/">examples</a> of what the market will build when restrictions are removed. In general, I found myself wanting to see more data instead of anecdotes.</p><p>Murray repeats the common argument that developers won&#8217;t build if it causes rents to fall.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> But developers will build if costs fall; they require only that profits remain the same.</p><p>In the chapter on rent control, Murray claims that homeownership is like rent control for the homeowner, because housing costs are fixed.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Variable-rate mortgages aside, this analogy is clearly inapt. (I&#8217;ve seen it argued that homeowner subsidies are analogous to rent control as a subsidy to renters; this is not Murray&#8217;s argument.)</p><p>Murray cites the Diamond et al. <a href="https://www.aeaweb.org/articles?id=10.1257/aer.20181289">paper</a> on rent control in San Francisco, but somehow claims that reducing the stock of rental housing is a &#8220;good outcome&#8221;. He neglects to mention the next sentence in the paper&#8217;s abstract: &#8220;the lost rental housing supply likely drove up market rents in the long run&#8221;.</p><p>Murray has a strange view of value capture, claiming that airspace is public property, and the public needs to be compensated when airspace is privatized by allowing landowners to build apartments.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> By this logic, isn&#8217;t it a giveaway to allow landowners to even build <em>houses</em> on their land? After all, that&#8217;s also taking airspace away from the public. The right approach here is simply optimal tax theory: we should tax inelastic factors, like land.</p><p>In Australia, Murray reports, the ratio of rent to disposable income was 20% in both 1993 and 2023. Murray claims that, since housing is a constant share of income as a nation gets richer, housing is a normal good. But he also notes that poorer households spend a larger share of income on rent, and richer households spend a smaller share. So for individuals, housing is a necessity, where the income elasticity of demand is less than 1; but for the nation, the income elasticity of demand is equal to 1, producing a constant budget share. What explains this?</p><p>Murray claims that the reason missing middle housing is rare, aside from regulations banning it, is that it is expensive to buy land with existing buildings. But then, why do we see detached houses being demolished and replaced with new detached houses, instead of townhomes or low-rise apartments? The answer is not the cost of demolition, but the fact that demand for detached houses is very high. In Vancouver, developers would rather build a detached house instead of a four-storey rental building. The four-storey would have been feasible a few decades ago, but enough mansion-buyers have moved in that now only a six-storey rental building can compete.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>&#8220;It&#8217;s a puzzle that property owners and the development lobby, who make money from selling and renting property, claim that land use regulations decrease housing supply and should be removed, despite standing to benefit financially from higher prices and less competition.&#8221; (p.167)</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>&#8220;the YIMBY movement is rife with many contradictory views. A fundamental premise of the movement is that there are too few homes for the number of people. But, almost without fail, YIMBYs also support open borders policies to radically increase the population through immigration. On the one hand, they advocate the simple solution of building more housing per capita; yet at the same time, they seek to make this outcome more difficult with feverish support of open borders immigration policy.&#8221; (p.115)</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>&#8220;property owners [won&#8217;t] supply new homes so fast as to cause lower rents&#8221; (p.160)</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>&#8220;The whole point of homeownership is to control the rent, rather than be continually exposed to market pricing, by finding a favourable landlord. Yourself. The asset value of a home is, after all, just the financial representation of all future rents paid at a fixed upfront price. The only difference with rent control is that the occupant and the name on the property title are different.&#8221;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>&#8220;It would be economically irresponsible for a government to give away property like a public park to a neighbouring private property owner so they could build more homes. That property would be sold at market prices. But when that property right is in the air, we all too easily give it away.&#8221; (p.174)</p></div></div>]]></content:encoded></item><item><title><![CDATA[A two-sector model of land and upzoning]]></title><description><![CDATA[[Read the original version with properly-rendered math here.]]]></description><link>https://blog.michaelwiebe.com/p/land_model</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/land_model</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Fri, 25 Jul 2025 17:00:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/93046859-fcca-4fff-9c3b-a9dc9ffd69ed_724x496.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>[Read the original version with properly-rendered math <a href="https://michaelwiebe.com/blog/2025/07/land_model">here</a>.]</p><p>When we upzone land from single-family zoning to apartment zoning, we change the allocation of a city&#8217;s fixed stock of land. Upzoning makes apartment-zoned land more abundant and hence cheaper, while single-family-zoned land becomes scarcer and more expensive. Because land is an input into the production of housing, upzoning reduces the cost of building apartments, and hence is a key policy option for reducing housing costs.</p><p>In this post I&#8217;ll set up a two-sector model of land and show the effects of upzoning. (If you get stuck, try reading <a href="https://michaelwiebe.com/blog/2024/08/perfsub_cts">this post</a> first.) House developers can use either single-family-zoned land or apartment-zoned land to produce houses, while apartment developers can use only apartment-zoned land. Since it&#8217;s more lucrative to build an apartment building than a house on a given parcel, apartment developers are willing to pay more for land; as a result, the price of apartment-zoned land is higher than the price of single-family-zoned land.</p><p>Upzoning moves a parcel from the single-family- to the apartment-zoned market. This makes apartment-zoned land more abundant, reducing its price; because land is an input into the production of apartments, upzoning reduces the price of apartments. In the extreme case, if we upzone all land, then house developers are indifferent between the two types of land, and we get an equilibrium where land prices are equal across submarkets.</p><h1>A two-sector model of land</h1><p>Consider a representative house developer with <a href="https://en.wikipedia.org/wiki/Substitute_good#Perfect_substitutes">perfect substitutes</a> preferences over house-zoned and apartment-zoned land. For the house developer, a parcel is a parcel, since they can build a house on it regardless of the zoning. (Parcels of different zoning types are identical in size.) Hence, they treat both types of land as interchangeable, and will choose the lower-price option. To simplify, I assume they have a fixed budget to spend; in a complete model, developer demand for the input (land) is derived from the price of the output (housing). Also note that we are considering vacant parcels with no teardown cost.</p><p>Click the footnote to see the underlying demand functions.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>The graph below shows the demand curve for house-zoned land, with the price of of house-zoned land (P_H) on the y-axis. Recall that this is an inverse demand function, so we read it as: for a given price, what quantity of land is demanded? For example, when the price is 2, quantity demanded is 12.</p><p>Here, I&#8217;m showing an equilibrium where the price of the substitute good (apartment-zoned land) is P_A=12, so when P_H&lt;12, the house developer buys only house-zoned land and spend their entire budget on it (bottom curved segment). The horizontal segment is where P_H=P_A, so the house developer is indifferent; any quantity along this segment is equally good (and the remaining budget is spent on apartment-zoned land). When P_H&gt;12, apartment-zoned land is cheaper, so demand for house-zoned land is 0 and the demand curve overlaps the y-axis.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IPEF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IPEF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!IPEF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!IPEF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!IPEF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IPEF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!IPEF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!IPEF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!IPEF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!IPEF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf1af0b-b9cb-4af9-a327-8b1f72c1366b_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>For the apartment-zoned land market, we have to aggregate the demand of both house and apartment developers (see graph below). Apartment developers spend their whole budget on apartment-zoned land, regardless of how cheap house-zoned land gets. Because they have higher willingness to pay, their quantity demanded is larger at higher prices. (Note that I&#8217;m using continuous quantities, which allows buying an infinitesimally-small quantity of land; in practice, the demand curve would intersect the y-axis at some price.)</p><p>As before, house developers will spend everything on apartment-zoned land if it is cheap enough (bottom curved segment in blue). If apartment-zoned land is more expensive than house-zoned land, the demand curve is 0 and overlaps the y-axis (and they go all-in on house-zoned land). Here, the equilibrium has the substitute price at P_H=2, so when P_A=P_H=2, they are indifferent between the two, corresponding to the horizontal segment.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vklN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vklN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!vklN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!vklN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!vklN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vklN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!vklN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!vklN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!vklN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!vklN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9da65956-63c1-4505-aa8a-3bf64c4f824f_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Adding up the sector demand curves horizontally, we get aggregate demand for apartment-zoned land (see below). In the upper-left curved segment we will get a corner solution where apartment developers buy only apartment-zoned land, and house developers buy only house-zoned land. (When P_A&gt;2, the aggregate demand curve is equal to the apartment developers&#8217; demand curve.) The horizontal segment is the interior solution where house developers buy some apartment-zoned land and prices are equal. (The bottom-right curved segment is the other corner solution where both developers buy only apartment zoned land and P_A&lt;P_H; I&#8217;ll discuss this case later.)</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OafT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OafT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!OafT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!OafT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!OafT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OafT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!OafT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!OafT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!OafT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!OafT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cabd12d-d1ad-4698-a579-b84a2d83026b_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Here&#8217;s an equilibrium for the corner solution. To maintain incentive compatibility, we require that P_A&gt;P_H, so that the house developer chooses the cheaper option (house-zoned land). This holds when the (fixed) supply of house-zoned land is large and the supply of apartment-zoned land is small.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zxVT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zxVT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!zxVT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!zxVT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!zxVT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zxVT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!zxVT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!zxVT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!zxVT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!zxVT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e13d8c9-25a7-4528-9893-b294e72d3708_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lmBn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lmBn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!lmBn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!lmBn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!lmBn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lmBn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!lmBn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!lmBn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!lmBn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!lmBn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd83f2a-64b0-40c5-9df6-50a581a53ba4_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>At these prices, all supply is demanded, so this is an equilibrium. Note that we also have a market clearing condition for supply across sectors: S_A+S_H=S=13, where S is the total stock of land. (I use S=13 to make the math work.)</p><h1>Small upzoning</h1><p>Let&#8217;s upzone a small amount by moving one parcel from the house market to the apartment market (so S_A increases from 1 to 2 and S_H falls from 13 to 12). This shifts S_A to the right, which reduces P_A from 12 to 6. At the same time, S_H shifts left, increasing P_H from 2 to 2.2.</p><p>Because the house developer treats the two land types as substitutes, these price changes also &#8216;shift&#8217; the demand curves. (Recall from <a href="https://michaelwiebe.com/blog/2024/08/perfsub_cts">last time</a> that this is actually a movement along the 3D demand surface.) House-zoned land becomes more expensive, so demand for its substitute (apartment-zoned land) increases; this is the shift up/right in demand for apartment-zoned land (from D1 (blue) to D2 (red)).</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y7Sp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/873f758f-4975-4f08-8a05-52c5271b1124_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!Y7Sp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F873f758f-4975-4f08-8a05-52c5271b1124_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Similarly, apartment-zoned land becomes cheaper, so demand for its substitute (house-zoned land) falls, shown by the shift down/left in demand for house-zoned land. These changes in the demand curves occur away from the intersections with the supply curves, so the equilibria are unaffected.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A_Ym!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A_Ym!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!A_Ym!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!A_Ym!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!A_Ym!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A_Ym!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!A_Ym!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!A_Ym!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!A_Ym!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!A_Ym!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc15dc9c-4a8b-46e6-8417-79adfa761a37_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>So upzoning makes apartment-zoned land more abundant, and the price has to fall to clear the market. This reduces the price of land, making apartments cheaper to produce. Hence, upzoning reduces the price of apartments. (The model here shows only the input market (for land), but intuitively, decreased input prices translate to decreased output prices.)</p><p>Conversely, houses become a bit more expensive, since house developers have to compete over a more limited stock of land. This is progressive, because houses are inherently more of a luxury good than apartments (ask yourself: which has more square footage, a private yard, private parking?). (Note that upzoning does not literally remove land from house developers; instead, upzoning moves land to a submarket with higher prices, where house developers are unwilling to pay the market price.)</p><p>With this model, we can see where the &#8220;but upzoning raises land costs&#8221; argument goes wrong. By changing the allocation of land across zoning types, upzoning makes apartment-zoned land cheaper and house-zoned land more expensive. While the upzoned parcel itself increases in price (from 2 to 6), that parcel was previously unavailable to apartment developers <em>at any price</em>. Adding it to the apartment-zoned market makes apartment developers better off, because P_A falls from 12 to 6. The fallacy in &#8220;but upzoning raises land costs&#8221; lies in looking at a single parcel instead of the market-wide price.</p><h1>Large upzoning</h1><p>Next let&#8217;s explore the interior solution where P_A=P_H. Here we shift supply enough that we reach the horizontal segment of the perfect substitutes demand function. In this case, P_A=P_H=P&#8776;2.8; this is the maximum possible reduction in the price of apartment-zoned land. We can choose S_A&#8805;4.33 and S_H&#8804;8.66, subject to S_A+S_H=13; here I&#8217;ve used S_A=S_H=6.5.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!umZ1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!umZ1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!umZ1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!umZ1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!umZ1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!umZ1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!umZ1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!umZ1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!umZ1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!umZ1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0e3b5d1-6c29-42a6-9c07-00a0479dca9d_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Since house developers are indifferent between the types of land, we can be anywhere on the horizontal segment as long as market clearing holds. Because the demand curve is horizontal, these movements don&#8217;t affect prices, and any allocation of supply is an equilibrium.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!czCt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!czCt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!czCt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!czCt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!czCt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!czCt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!czCt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!czCt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!czCt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!czCt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddbcf5b-a571-4ade-a430-0c593f5b6ced_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1>Maximum upzoning</h1><p>Finally, let&#8217;s show the case where the entire stock of land is upzoned for apartments: S_H=0 and S_A=S=13. This is really the same case as the large upzoning above, because we again have P_A=P_H=P&#8776;2.8, and the only difference is that we move all of the way to the edge of the interior solution.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tB2j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tB2j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!tB2j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!tB2j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!tB2j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tB2j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!tB2j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!tB2j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!tB2j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!tB2j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0782a06c-1738-4fa3-a4c3-4a88573e21c4_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Note that this is the minimum P_A achievable, since all supply is allocated to apartment-zoned land. So when S is fixed, we can&#8217;t drive P_A down to the initial P_H=2, because we have to clear the market with demand from both types of developer, whereas P_H=2 comes from a market with only house developers (and hence less total demand).</p><p>When S_H=0 we can also have equilibria with P_H&gt;P_A, but these have the same equilibrium price P_A and quantity S_A. (With larger values of P_H, the demand curve for apartment-zoned land &#8216;shifts&#8217; up, but the intersection of supply and demand is unchanged.)</p><h1>Discussion</h1><p>A full general equilibrium model would include the output markets for houses and apartments, and show explicitly how output prices for housing are linked to input prices for land. One interesting case to look at would be where mass upzoning reduces PH and hence further reduces house developers&#8217; demand for house-zoned land. For example, a huge increase in the supply of apartments downtown induces people to move out the exurbs.</p><p>Another extension is the N-sector model with multiple types of apartments. For example, the N=3 case could have houses, 3-storey apartments, and 6-storey apartments. This would also shed light on how development feasibility changes over time. For example, as demand for houses increases, so does the price; this raises house developers&#8217; willingness-to-pay for land. If demand from house developers is sufficiently higher than demand from 3-storey apartment developers, then no 3-storey apartments will be built.</p><p>Notice that in the small upzoning, the upzoned parcel increases in price from 2 to 6. This &#8216;land lift&#8217; is the motivation for value capture policies that tax windfall gains from upzoning. But in the large upzoning, the land lift per parcel is much smaller: from 2 to 2.8. This shows the inherent tension in trying to both (a) improve housing affordability, and (b) collect taxes from new developments. Local governments are incentivized to do small spot-upzonings to maximize land lift<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, but because this limits the stock of apartment-zoned land, it comes at the expense of making apartments more affordable. Instead of taxing land only when it is developed, a better approach is to tax land unconditionally, like with a land value tax.</p><p>Another extension is to model anticipation effects, where landowners expect upzoning to occur in the future, which raises the price of house-zoned land today.</p><div><hr></div><p>Code for graphs <a href="https://michaelwiebe.com/assets/land_model/perfsub_land.ipynb">here</a>.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>What are you doing here? Go see the <a href="https://michaelwiebe.com/blog/2025/07/land_model">actual</a> Latex.</p><p>Let xH = house-zoned land, xA = apartment-zoned land. Let xi,j be quantity demanded by developer type i for land type j, with budget mi. Given perfect substitutes utility u(xH,xA)=axH+bxA, we can derive the demand functions with the threshold defined by equating the marginal rate of substitution (a/b) with the price ratio (pH/pA). If pH/a&gt;pA/b, the developer chooses xH and spends their entire budget on it; otherwise, they choose xA. Here the house developer has a=b=1.</p><p>With perfect substitutes preferences, we get a corner solution: the optimal choice is one or the other, and not a mix of both. Note that the demand functions take both pH and pA as arguments, so they define a 3-dimensional surface.</p><p>The apartment developer values only apartment-zoned land.</p><p>uH(xH,xA)=xH+xA<br>uA(xH,xA)=xA<br>mH=24<br>mA=12<br>xH,H={<br>0, pH&gt;pA<br>&#8712;[0,mH/pH], pH=pA<br>mH/pH, pH&lt;pA<br>xH,A={<br>mH/pA, pH&gt;pA<br>&#8712;[0,mH/pA], pH=pA<br>0, pH&lt;pA<br>xA,H=0<br>xA,A=mA/pA</p><p>I assume the total stock of land is S=13, which can be allocated to house-zoning or apartment-zoning.</p><p>In the corner solution with pA&gt;pH, the aggregate demand curves are xHD=mH/pH and xAD=mA/pA. Since quantity supplied is exogenous, we have xiD=xiS, so we can solve for prices pH=mH/xHS and pA=mA/xAS.</p><p>Hence, we can see that upzoning, by increasing xAS and decreasing xHS, will reduce pA and increase pH. (This is the main point, the rest of the post explains how this works out graphically.)</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>The land lift in a sequence of one-unit upzonings is: 6-2=4, 4-2.2=1.8, 3-2.4=0.6, and 2.8-2.7=0.1, for a total of 6.43. The last upzoning is from SA= 4 to 4.33, where we hit the interior solution. The land lift from upzoning 3.33 parcels at once is 3.33 * 0.8 = 2.67. (Upzoning all parcels at once delivers 12 * 0.8 = 9.6, which is better than spot upzoning. However, in a dynamic model with an optimal timing problem, spot zoning (delaying) has higher revenue when PA grows faster than PH. So the revenue-maximizing policy is unclear.)</p></div></div>]]></content:encoded></item><item><title><![CDATA[A YIMBY FAQ]]></title><description><![CDATA[What caused the housing crisis?]]></description><link>https://blog.michaelwiebe.com/p/yimby_faq</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/yimby_faq</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Thu, 12 Sep 2024 17:00:00 GMT</pubDate><content:encoded><![CDATA[<h1>What caused the housing crisis?</h1><p>Skyrocketing housing costs in big cities are caused by demand for housing increasing faster than supply. The key mechanism underlying the housing crisis is the <em>demand cascade</em>: richer people move in and bid up the price of new homes, which pushes less-rich locals to compete for old homes, which forces the poor to take on roommates, move away, or become homeless.</p><h1>Isn&#8217;t the problem a lack of <em>affordable</em> housing in particular?</h1><p>The housing market is interconnected. When we don&#8217;t build enough new market-rate housing, we get demand cascades that bid up the price of old housing. Housing that was affordable becomes expensive. Solving the housing crisis will require building more market-rate housing and more subsidized housing; subsidized housing by itself is not enough.</p><p>Moreover, the issue isn&#8217;t only that prices are too high for current residents. We also have to think of the people who want to move into the city, but are priced out.</p><h1>But new homes are not affordable, so building more will not help the people with the greatest need.</h1><p>First, new homes function as a <em>yuppie fishtank</em>: by containing rich newcomers in glass towers, we absorb their demand and prevent a demand cascade. Hence, even if new homes are more expensive, they still help protect the stock of affordable old homes.</p><p>Second, the price of a home is not an intrinsic feature of the home. Rather, it is determined by both supply and demand. The key idea here is a <a href="https://en.wikipedia.org/wiki/Multiunit_auction">multi-unit auction</a>. There are 5 units of a product for sale, and 100 bidders. The price is the lowest winning bid. With 5 units, the top 5 richest bidders win, and the price is the bid of the 5th richest bidder.</p><p>What if there are 50 units for sale? Then the top 50 richest bidders win, and the price is the bid of the 50th richest bidder. Since the 50th richest is willing to pay less than the 5th richest, the price falls. This shows how the price depends on the level of demand relative to supply.</p><p>New homes do have higher costs than old homes, because they use new materials and modern construction practices. But when demand is high relative to supply, prices are driven far above construction costs, and lowering prices requires increasing supply.</p><h1>When developers build expensive new buildings, they raise the average rent in a neighborhood, giving existing landlords an excuse to raise <em>their</em> rents</h1><p>This is not how prices work. If a grocery store starts selling organic bananas at a higher price, does that enable them to raise the price of regular bananas? No, since supply and demand for regular bananas hasn&#8217;t changed.</p><p>What&#8217;s actually going on is that demand to live in the neighborhood is increasing, which drives both new developments and higher rents in existing buildings. Another flaw in this argument: if landlords could raise rents, they would have done so already.</p><h1>You&#8217;re really saying that building luxury homes will solve the housing crisis?</h1><p>Yes, building highrise condos is a step in the right direction. Apart from acting as yuppie fishtanks to absorb new demand, &#8216;luxury&#8217; homes also free up affordable old housing through <em>vacancy chains</em>. When a local resident moves into a new apartment building, they free up their original unit; someone else moves into <em>that</em> unit, vacating <em>their</em> home; and so on, until homes in affordable neighborhoods are made available. Research shows that every new market-rate home added leads to 0.6 homes freed up in below-median-income neighborhoods.</p><p>The deeper issue is that highrise condos aren&#8217;t actually luxurious. True luxury is living in a big house on a quiet street with nice views, having a private yard and garage, and having easy access to big city jobs and amenities. This is what single-family zoning creates for the privileged few, at the expense of the many.</p><h1>We&#8217;ve seen cities increasing housing supply, but prices keep going up. Doesn&#8217;t this disprove your supply theory?</h1><p>On the contrary, this is exactly what a supply and demand model predicts would happen when demand is increasing and supply is (partially) restricted. Developers are able to build some new homes, but not enough to keep up with demand, so we still get a demand cascade, and prices of both new and old homes go up.</p><h1>If more density was the solution, shouldn&#8217;t New York City be the most affordable city in the world?</h1><p>Big cities are expensive because they offer amenities and jobs, so demand to live there is high. So big cities have high supply, but even higher demand. But it&#8217;s still true that increasing supply makes prices go down, holding other factors constant. If New York upzoned to allow more apartments, that would make it more affordable. The comparison of a small town (low demand, low supply) and a big city (high demand, high supply) is comparing apples and oranges, since we&#8217;re not holding demand constant.</p><h1>What about induced demand? Increasing supply just draws in more demand.</h1><p>The idea of &#8216;induced demand&#8217; is that we&#8217;re in a positive feedback loop where more people leads to more productivity, higher wages, and better amenities, which in turn leads to more people. NIMBYs use this to argue that increasing supply actually raises prices, so we need to block new apartments. But this argument is far more general than they realize.</p><p>The feedback loop is not driven by apartment buildings, but by more people. So if we build more suburbs and people move in and commute to their job downtown, they still contribute to higher productivity, driving the feedback loop. So to break out of the loop, we have to block <em>all</em> new housing, including in the suburbs.</p><p>And it goes even deeper. If college students study computer science and establish a tech sector, they are fuelling the feedback loop. When someone renovates an old building to open a high-end yoga studio or a fancy coffee shop, they are fuelling the feedback loop. If we&#8217;re really committed to avoiding induced demand, we need to clamp down on anything that could make the city nicer.</p><p>But this is absurd. Higher wages and nicer amenities are a good thing, and by assumption, these are net benefits, so the positives outweigh any negatives like increased congestion. Why should we turn down a net improvement?</p><p>And I suspect that NIMBYs will quickly abandon this argument once they realize that it commits them to opposing new single-family suburbs.</p><p>In any case, it&#8217;s not even clear whether the induced demand effect is big or small, or even negative. Maybe more people leads to more congestion, which induces people to move away. The effect likely varies by city, and as the size of the city changes over time.</p><p>For our purposes, induced demand is not an argument against legalizing apartment buildings.</p><h1>Doesn&#8217;t upzoning increase land values? Higher land costs mean more expensive homes.</h1><p>Upzoning a plot of land switches it from single-family-only to multi-family. From the landowner&#8217;s point of view, the price of that particular land will tend to rise, because apartments are worth more than houses. But from the developer&#8217;s point of view, the price of all multi-family land goes down, since there are now more options for land to build apartments on. The fact that the upzoned lot goes up in price is irrelevant, since it wasn&#8217;t available for building apartments to begin with (so the cost was really infinite). The key is distinguishing between the price of the upzoned plot and the market price of all multi-family land.</p><p>And note that when the upzoning is broad enough, we increase the stock of multi-family land so much that a specific upzoned plot doesn&#8217;t increase in price. This happens when the marginal buyer is a single-family builder, who is only willing to pay single-family prices. Since the marginal buyer is what determines the market price, broad upzoning increases the option value of the land (because there are more legal uses) without increasing land prices.</p><h1>Isn&#8217;t upzoning a giveaway to developers?</h1><h1>Inclusionary zoning</h1><h1>Don&#8217;t developer fees just reduce what they pay for land? We can fund public goods for free!</h1><p>If the fee is small enough, yes. (This is similar to a land value tax.) But if the fee causes a developer to shut down their project (because they can&#8217;t afford the land), then we get less housing and hence higher housing costs. And if cities are using fees on developers to control the rate of new supply, then those fees will be high enough to deter new housing.</p><h1>Are there any upzoning success stories?</h1><p>Not many. NIMBYs are politically powerful and have prevented reforms. It&#8217;s only with the housing crisis getting worse year after year that support for upzoning has started to win out.</p><p>In New Zealand, Auckland upzoned three-quarters of its residential land in 2016. <a href="https://worksinprogress.co/issue/upzoning-new-zealand/">The result</a>: &#8220;six years after the Auckland Unitary Plan was enacted, rents for three-bedroom dwellings were 26&#8211;33 percent lower than they would have been, compared to rents in other urban areas in the country.&#8221;</p><h1>What other factors have contributed to rising housing costs?</h1><p>Some candidates for demand-side factors:</p><ul><li><p>Demographics: with longer lifespans, Boomers are staying in their homes and not downsizing, making it harder for Millennials to find housing.</p></li><li><p>As divorce becomes more common, there are more separate households needing separate homes.</p></li><li><p>Cities have grown and run out of space to keep sprawling, or have reached the limit for how long people are willing to commute.</p></li><li><p>Jobs are increasingly moving to big cities.</p></li></ul><h1>People want to live in single-family homes, not apartments.</h1><p>If so, then there&#8217;s no harm in zoning for apartments, because people will choose detached houses. Developers won&#8217;t build apartments, since they see that the market wants houses. The true test of what people want is to legalize apartments and see what happens on a level playing field.</p><p>The deeper issue here is that some people want single-family houses, and other people are willing to economize on housing and live in an apartment if it gets them a shorter commute. Why should public policy give special preference to people who want houses?</p><h1>If we only have apartments, no one will have kids and the population will collapse.</h1><p>Under the status quo where apartments are hardly allowed, developers economize by making units smaller. If we allowed tall apartment buildings everywhere and didn&#8217;t micromanage their dimensions, we would have large family-sized units where people would be happy to raise kids. The key: to make apartments larger on the inside, we need to make them larger on the outside.</p><h1>This is an expensive city. If you can&#8217;t afford to live here, move somewhere else.</h1><p>The price of housing is determined by supply and demand; it isn&#8217;t an intrinsic feature. We can choose to increase the supply of housing, making it more affordable. Whether or not a city is expensive is a policy choice, and we can choose differently.</p><h1>Zoning policy should prioritize maintaining the neighborhood character for current residents.</h1><p>Public policy should maximize overall social welfare, and not merely cater to one special interest group. There is a tradeoff between preserving neighborhood character for incumbent residents and providing housing so that people can live near their job and family. The YIMBY argument is that providing shelter is more important than neighborhood character, so we should sacrifice a lot of character to get more housing. NIMBYs value neighborhood character more, so they&#8217;re willing to sacrifice a lot of housing to preserve it.</p><p>If we are trying to do what&#8217;s best for society as a whole, we should legalize apartments, because (1) the number of people who would benefit from living near their job and family is much larger than the number of people who would lose their mountain view and easy street parking; and (2) the magnitude of the benefits gained by new residents from having housing is much larger than the magnitude of the losses in neighborhood character faced by incumbent residents.</p><h1>Who are the winners and losers from upzoning?</h1><p>A common argument is that homeowners oppose new housing to protect the financial value of their investment. This is not quite right; wouldn&#8217;t homeowners want to legalize apartments so they can sell to a developer for bags of cash? The actual pattern of financial winners and losers is more subtle.</p><p>Upzoning means replacing detached houses with apartments. Centrally-located houseowners benefit, because detached houses become scarcer and hence more valuable. In contrast, houseowners in the suburbs would lose, as new apartments in the city induce people to migrate from the suburbs to the city center, reducing demand for homes in the suburbs.</p><p>Apartment owners also lose, as the increased supply of apartments provides direct competition. Meanwhile, renters unambiguously win, with more rental options to pick from.</p><p>In the city center, housesellers gain from upzoning, because they now have the option of selling to an apartment-developer. Correspondingly, housebuyers lose, because houses are scarcer and more valuable. This is reversed in the suburbs, since detached houses are cheaper there.</p><p>So central houseowners are a clear winner from upzoning, in contrast to claims that houseowners oppose apartments in order to protect their property value. But this is for financial benefits. What about non-financial benefits?</p><p>Long-term houseowners (who aren&#8217;t looking to sell and plan on living there for decades) lose neighborhood character as apartments are built. They have less privacy, streets and sidewalks are busier, street parking is more difficult, there&#8217;s more noise, and new apartments block their views. (On the other hand, they gain from new cafes and stores, and new housing for their friends and children to live in.) So because central houseowners oppose upzoning, we infer that they care more about nonfinancial than financial benefits. (And note that suburban houseowners generally can&#8217;t vote in the city, so the fact that they lose financially is politically irrelevant.)</p><h1>To make housing more affordable, do we need to make it a bad investment for current homeowners?</h1><p>From above, we can see that this question is poorly framed. If we&#8217;re talking about upzoning, housing becomes more affordable by building cheaper types of homes (townhomes, apartments). This makes owning a townhome or apartment a worse investment, but makes owning a house a better investment. Suburban houses also become a worse investment as they get cheaper.</p><p>The deeper problem here is treating housing as a commodity. But it isn&#8217;t. There are different types, you can rent or buy, and the value of a home changes based on its location. Since housing is not a commodity, it doesn&#8217;t make sense for &#8220;housing&#8221; to become more affordable or for &#8220;housing&#8221; to become a worse investment. As we&#8217;ve seen, some types become more affordable, and some types become more expensive. The original question just doesn&#8217;t make sense.</p><p>(If we&#8217;re talking about improving affordability by building new subdivisions of detached houses or entire new towns, then we&#8217;d expect this new supply to reduce property values for owners living in nearby suburbs. Curiously, this is never raised as an issue.)</p><h1>So how do NIMBYs explain the housing crisis?</h1><p>Some NIMBYs accept supply and demand, but blame rising demand as the problem. In particular, if we just blocked immigration (and for the more extreme NIMBYs, deported landed immigrants), then there would be enough housing for native-born citizens.</p><p>Other NIMBYs think that landlords have become greedier or that &#8220;financialization&#8221; of the housing market (whatever that means) is the problem.</p><h1>Do YIMBYs favor cutting immigration to reduce housing costs?</h1><p>The point of housing policy is to provide shelter for people; reducing the number of people in order to make shelter cheaper is just giving up on the goal. (Notice: we could just deport everyone and trivially end the housing crisis!)</p><p>Immigration policy should not depend on housing policy. First choose an optimal immigration level, and then set your housing policy to accommodate it. Don&#8217;t restrict housing supply and then use that as an excuse to limit immigration.</p><p>There is a limit here; we can&#8217;t build enough houses for a billion immigrants in one year. But the housing market can adapt to real-world immigration targets if they announced in advance.</p><h1>Do YIMBYs support developers?</h1><p>It depends. Some developers fight through zoning and permits to provide us with a fundamental need: housing. Many developers shut down or do not enter in the first place, deterred by onerous regulations.</p><p>On the other hand, big developers have established close relationships with city planners, allowing them to navigate the regulatory thicket. Big Dev doesn&#8217;t want clear, simple rules that would open the industry to new competition. Instead, they support a discretionary system where you need to be friends with the director of planning to get anything built.</p><h1>If YIMBY is correct, why haven&#8217;t you won yet?</h1><p>The coalition of self-interested YIMBY supporters is dispersed. Young people aren&#8217;t thinking about buying a home, so they don&#8217;t follow debates about zoning. Young homebuyers do care about housing policy, but they&#8217;re looking to buy now, and any activism won&#8217;t have an effect on current prices. Recent buyers who moved to the suburbs and would have lived in an apartment in the city are now settled down and aren&#8217;t likely to uproot themselves.</p><p>We should expect the YIMBY coalition to be fractured. If it was easy to organize, housing wouldn&#8217;t be such an intractable issue.</p><p>In contrast, NIMBYs are easily organized. They are established homeowners who are already active in local politics, and it&#8217;s easy to walk down the street and find allies. New housing imposes a clear cost (noise, congestion, lost views, more difficult street parking). NIMBYs being naturally well-organized based on self-interest explains why they have been so successful.</p><p>This suggests that YIMBY success depends on forming an <em>ideological</em> coalition, rather than a self-interested one. To overcome the self-interest of NIMBYs, we need people to fight for justice.</p><h1>Isn&#8217;t upzoning violating the property rights of homeowners?</h1><p>On the contrary. Upzoning is giving homeowners a legal right they didn&#8217;t have before: the right to build apartments on their own land.</p><p>Some NIMBYs take an alternative view of property rights that includes preventing their neighbors from building apartments on <em>their</em> land; this is a non-standard view, to say the least.</p><h1>When I moved into this neighborhood, it was zoned for single-family houses. Changing that is a violation of an implicit contract.</h1><p>It would have to be an implicit contract, because it sure isn&#8217;t listed on the title deed. Yes, homeowners often expect their neighborhood to remain the same as when they bought it. But this doesn&#8217;t overrule the property right of the landowner to build an apartment.</p><p>Having this expectation is also unreasonable in many cases. If you bought a house in a growing city and expected growth to stop after you moved in, then you have poor judgment. That&#8217;s just not how cities work. If you were attracted by jobs and amenities, then you should have noticed that the economy was thriving, and other people would be similarly drawn in. If you wanted a neighborhood that wouldn&#8217;t change, you should have moved into a declining city.</p><h1>But property rights aren&#8217;t absolute. The local government democratically chose single-family zoning, so it&#8217;s undemocratic for a state government to force upzoning.</h1><p>The problem with this argument is that it gives no voice to citizens who currently live elsewhere but want to move in. What&#8217;s really undemocratic is how local control gives a voice only to incumbent residents. In fact, federal control over zoning is arguably a better option, because housing policy determines whether people can move across the country, and state governments are not accountable to out-of-state migrants.</p><p><a href="https://www.nytimes.com/2023/09/11/opinion/editorials/tokyo-housing.html">Tokyo</a> is governed by a national zoning law:</p><blockquote><p>Instead of allowing the people who live in a neighborhood to prevent others from living there, Japan has shifted decision-making to the representatives of the entire population, allowing a better balance between the interests of current residents and of everyone who might live in that place.</p></blockquote><h1>Upzoning will destroy heritage neighborhoods</h1><p>Old neighborhoods will change; whether they will be &#8220;destroyed&#8221; is up for interpretation. The key issue is the cost of preserving heritage: are we willing to accept high housing costs in order to turn some neighborhoods into a museum exhibit? This should be decided on democratically by everyone.</p><p>If people want to preserve heritage houses or neighborhoods, they&#8217;re always welcome to pay the market price and keep it as is. And if they&#8217;re not willing to pay that much, it just shows that heritage is a suboptimal use of the land (since apartment-dwellers, via developers, are willing to pay more). We shouldn&#8217;t subsidize heritage at the expense of housing affordability.</p>]]></content:encoded></item><item><title><![CDATA[A supply and demand model of housing, part 2: unit demand]]></title><description><![CDATA[In the last post I used continuous quantities of housing: people could buy, say, 1.26 homes.]]></description><link>https://blog.michaelwiebe.com/p/unit_demand</link><guid isPermaLink="false">https://blog.michaelwiebe.com/p/unit_demand</guid><dc:creator><![CDATA[Michael Wiebe]]></dc:creator><pubDate>Thu, 05 Sep 2024 17:00:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6cd82f9f-f7f7-44a7-b1a4-caf96228e5f0_711x496.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the <a href="https://michaelwiebe.com/blog/2024/08/perfsub_cts">last post</a> I used continuous quantities of housing: people could buy, say, 1.26 homes. Here I show how a supply and demand model works with discrete quantities, and with a unit demand constraint, where people buy at most one unit of housing. This involves a different approach than the perfect substitutes case, but we arrive at the same conclusion regarding vacancy chains, demand cascades, and yuppie fishtanks.</p><h1>A supply and demand equilibrium</h1><p>Consumers start with a willingness to pay for Old and New apartments. They buy the housing type with the largest difference between valuation and price: v-p. To satisfy the unit demand constraint, their demand only counts in the market of the type they choose. So one rich person could buy up all of the homes, but the unit demand constraint prevents this, by requiring them to buy their highest-valued type, and removing their demand for the other types. Here, there are five consumers, and everyone value New apartments more than Old.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UebS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UebS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png 424w, https://substackcdn.com/image/fetch/$s_!UebS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png 848w, https://substackcdn.com/image/fetch/$s_!UebS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png 1272w, https://substackcdn.com/image/fetch/$s_!UebS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UebS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!UebS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png 424w, https://substackcdn.com/image/fetch/$s_!UebS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png 848w, https://substackcdn.com/image/fetch/$s_!UebS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png 1272w, https://substackcdn.com/image/fetch/$s_!UebS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29b36fa2-d1b0-40f2-8033-80fc00e05598_711x496.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>I&#8217;ll show an initial equilibrium where Person 1 buys a New apartment, and Persons 2 and 3 buy Old. Because Person 1 buys New, their demand is removed from the Old market. Hence, the aggregate demand curve for Old apartments looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HhCG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HhCG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!HhCG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!HhCG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!HhCG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HhCG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!HhCG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!HhCG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!HhCG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!HhCG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676d7b42-0cde-4d61-8e46-d44538e482a6_724x496.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>Since each person demands one unit, aggregate demand tops out at four. Next, here&#8217;s the supply and demand equilibrium for Old apartments. The supply curve is vertical, representing a fixed stock of Old apartments. Since the supply curve overlaps the demand curve for some segment, technically the equilibrium is not well-defined. However, this is not a big deal, because we can pretend the supply curve is slightly sloping upward, so the intersection is unique (though this brings in continuous quantities). Alternatively, if we had a large number of consumers, the demand curve would be a straight line that intersects supply uniquely; working with discrete quantities is just a pain.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5OHV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5OHV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!5OHV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!5OHV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!5OHV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5OHV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!5OHV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!5OHV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!5OHV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!5OHV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73d92886-2c05-445e-91d7-6dc94e47d471_724x496.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>So Persons 2 and 3 each get an Old apartment, and the price is 2. Note that Persons 4 and 5 are initially priced-out, and don&#8217;t get a home. We can interpret this as having to move away, or living in their car (or being homeless).</p><p>Next we have the aggregate demand curve for New apartments. Here we show Persons 1, 4, and 5, because Persons 2 and 3 buy Old apartments, so their demand for New is removed (by the unit demand constraint).</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eUhH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eUhH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!eUhH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!eUhH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!eUhH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eUhH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!eUhH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!eUhH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!eUhH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!eUhH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56236682-bf15-474d-9c15-f167beb0ffd2_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>In the initial equilibrium, only Person 1 gets a new apartment, and the price is 4. The supply curve is vertical, representing zoning constraints: developers cannot build any more, even if prices went up. Note that Persons 4 and 5 are priced out here as well.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FXAt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FXAt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!FXAt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!FXAt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!FXAt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FXAt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!FXAt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!FXAt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!FXAt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!FXAt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40d81912-8783-46a5-b64d-ecd149e146c7_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1>Vacancy chains</h1><p>To show a vacancy chain, we increase the supply of New apartments. This will allow Person 2 to upgrade, vacating their Old apartment, which in turn allows Person 4 to get a home (instead of being homeless).</p><p>The higher supply of New apartments reduces the price, as we move down the demand curve. This lower price induces Person 2 to re-evaluate their housing choice. Their willingness to pay is 3.7 for New apartments, and 2.2 for Old. The price for New apartments was 4, so they chose Old. But now the price is 2, so their payoff for a New apartment is 3.7 - 2 = 1.7, and the payoff for an Old apartment is 2.2 - 2 = 0.2 Hence, the New apartment is a better deal, so they switch markets from Old to New.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dUDU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dUDU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!dUDU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!dUDU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!dUDU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dUDU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dUDU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!dUDU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!dUDU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!dUDU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fef7f96-41c9-4050-898e-d5fe0c089d63_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Person 2 upgrading means that we also change which market their demand contributes to. So we subtract their demand from the Old demand curve, and add it to the New demand curve, shifting it to the right. For New apartments, this pushes up the price. Note that we can end up out of equilibrium if this increase in price is not consistent with Person 2&#8217;s willingness to pay. Here, I&#8217;ll use the modelling flexibility we have from the supply and demand curve overlapping to choose a new equilibrium price of 3.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y7Zo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y7Zo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!y7Zo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!y7Zo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!y7Zo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y7Zo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!y7Zo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!y7Zo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!y7Zo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!y7Zo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c78523f-68c8-482b-a973-ee7adf7ff933_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Since Person 2 upgrades, we remove their demand for Old apartments, shifting it left. Now Persons 3 and 4 are able to get an Old apartment, and the price falls to 1.6. (That is, supply intersects demand on the section of the demand curve where Persons 3 and 4 buy.) This is the vacancy chain in action: Person 4 was initially priced out and didn&#8217;t have a home, but by adding a New apartment, we have freed up an Old apartment for Person 4 to live in!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z_-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z_-X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!z_-X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!z_-X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!z_-X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z_-X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!z_-X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!z_-X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!z_-X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!z_-X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dcec58f-be3d-44b2-90f4-e6799d536dc9_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>To make sure this is an equilibrium, let&#8217;s check the payoffs. Person 1 is happy to buy New, because they get 4.7 - 3 = 1.7 from New and 2.6 = 1.6 = 1 from Old. Person 2&#8217;s payoffs are 3.7 - 3 = 0.7 (New) and 2.2 - 1.6 = 0.6, so they buy New. Person 3 gets 2.2 - 3 &lt; 0 for New and 2 - 1.6 = 0.4 from Old, so they buy Old. So each consumer&#8217;s choice is consistent, hence, these prices define an equilibrium.</p><p>Note that with unit demand, we are able to have consumers being priced out (like Person 4 initially). With continuous quantities, this was not possible, since they could always buy some infinitesimal quantity, and so can&#8217;t be priced out completely. But with discrete units, Person 4 initially doesn&#8217;t get anything, then thanks to the vacancy chain, they get an Old apartment.</p><h1>Demand cascade and yuppie fishtank</h1><p>Now let&#8217;s see how demand cascades and yuppie fishtanks work in the unit demand case. Since people can be priced out entirely, demand cascades will push people out of old apartments, and yuppie fishtanks will allow them to avoid being pushed out.</p><p>We&#8217;ll use the same willingness to pay as before, but this time we&#8217;ll start with Person 1 living outside of the city. Person 2 starts in a New apartment, so they don&#8217;t contribute to demand for Old apartments. That leaves Persons 3, 4, and 5 making up the aggregate demand curve for Old apartments.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gXV6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gXV6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!gXV6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!gXV6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!gXV6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gXV6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!gXV6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!gXV6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!gXV6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!gXV6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7626f6ee-7940-4dff-9320-1af7d8a81b4d_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>There are two Old units, so the equilibrium has Person 3 and 4 each getting an Old unit at a price of 1.6.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fVjR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fVjR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!fVjR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!fVjR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!fVjR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fVjR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!fVjR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!fVjR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!fVjR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!fVjR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26817f7-18ec-4279-8f5f-1464b1a22787_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>For New apartments, Persons 2 and 5 contribute to the demand curve.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pFtf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pFtf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!pFtf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!pFtf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!pFtf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pFtf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!pFtf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!pFtf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!pFtf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!pFtf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7182a727-efd9-4aad-be86-bb4839e2da6d_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>But there&#8217;s only one New unit supplied, so only Person 2 gets a New unit in the equilibrium. The price is 3, which ensures that everyone is choosing their best option. Person 5 is priced out of both housing types, and has to live in their car.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uRbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uRbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!uRbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!uRbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!uRbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uRbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!uRbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!uRbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!uRbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!uRbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F113caf8c-2e72-4fc0-9f73-5740042a2bd6_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The demand cascade starts with Person 1 moving in and bidding for a New apartment. This shifts the demand curve to the right (from D1 to D2a), increasing the price from 3 to 4.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MxNJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MxNJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!MxNJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!MxNJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!MxNJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MxNJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!MxNJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!MxNJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!MxNJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!MxNJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65454dc5-255a-4825-80ce-9e846fbc7153_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Since Person 1 is richer, they outbid Person 2 for the New apartment, so now Person 2 downgrades to an Old apartment. Hence, we remove their demand from the New demand curve; this does not affect the new equilibrium. Now only Persons 1 and 5 contribute to the aggregate demand curve.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W5w2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W5w2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!W5w2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!W5w2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!W5w2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W5w2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W5w2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!W5w2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!W5w2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!W5w2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3d259f-083e-4d59-98d8-ddece5f119a8_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Turning to Old market, we add in Person 2&#8217;s demand, shifting the demand curve to the right. This pushes up the price, from 1.6 to 2. Now Persons 2 and 3 get an Old apartment, and Person 4 is priced out and doesn&#8217;t have a home. This is the demand cascade: when high-income Person 1 moves in, they bid up the price of new apartments, leading Person 2 to downgrade to an old apartment, which leaves Person 4 being priced out. In short, when supply is restricted, rich people moving in forces poor people to move out.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dW45!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dW45!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!dW45!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!dW45!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!dW45!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dW45!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dW45!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!dW45!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!dW45!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!dW45!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84484cd9-07e8-407a-b010-3d4bc8effb85_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>But what if supply is not restricted, and grows to match the increase in demand? This is the yuppie fishtank: by building a new glass tower to contain Person 1, we absorb their demand and protect the old apartments from competition. So we shift supply from 1 to 2, reducing the price.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dVDV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dVDV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!dVDV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!dVDV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!dVDV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dVDV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a43718f-eec8-4760-af73-f36a083de7db_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dVDV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!dVDV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!dVDV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!dVDV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a43718f-eec8-4760-af73-f36a083de7db_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This lower price induces Person 2 to upgrade back to a New apartment. So the demand curve shifts right, and the price is 3. This is the same as the initial equilibrium: the yuppie fishtank has absorbed Person 1&#8217;s demand, keeping prices flat.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1IXB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1IXB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!1IXB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!1IXB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!1IXB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1IXB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!1IXB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png 424w, https://substackcdn.com/image/fetch/$s_!1IXB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png 848w, https://substackcdn.com/image/fetch/$s_!1IXB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png 1272w, https://substackcdn.com/image/fetch/$s_!1IXB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3286b9-1dde-4b3d-9460-886ae9e3278b_714x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>And since Person 2 is not competing for an Old apartment, the demand curve shifts left. Thanks to the yuppie fishtank, Person 4 gets to stay in their Old unit, and isn&#8217;t priced out.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DQ47!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DQ47!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!DQ47!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!DQ47!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!DQ47!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DQ47!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4bd36b24-de53-4e56-87d7-841765db088d_724x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!DQ47!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png 424w, https://substackcdn.com/image/fetch/$s_!DQ47!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png 848w, https://substackcdn.com/image/fetch/$s_!DQ47!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png 1272w, https://substackcdn.com/image/fetch/$s_!DQ47!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd36b24-de53-4e56-87d7-841765db088d_724x496.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Notice that a yuppie fishtank can cancel out a demand cascade caused by a rich newcomer, while a vacancy chain triggered by a rich local upgrading is an inverse demand cascade.</p><div><hr></div><p>See <a href="https://michaelwiebe.com/assets/housing/unit/vac_chain/unit_vacancychain.ipynb">here</a> and <a href="https://michaelwiebe.com/assets/housing/unit/cascade/unit_cascade.ipynb">here</a> for code to produce the graphs.</p>]]></content:encoded></item></channel></rss>