diff --git a/_freeze/blog/2026/property-values/index/execute-results/html.json b/_freeze/blog/2026/property-values/index/execute-results/html.json index a37fd69..0012d38 100644 --- a/_freeze/blog/2026/property-values/index/execute-results/html.json +++ b/_freeze/blog/2026/property-values/index/execute-results/html.json @@ -1,8 +1,8 @@ { - "hash": "ed2d48fafd528a34d115def0f47926e6", + "hash": "d51a01a94a34cadf91333dd880f5cdec", "result": { "engine": "knitr", - "markdown": "---\ntitle: \"Infill construction and property values in Edmonton\"\ndate: \"2026-03-08\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, zoning, property value]\ndescription: \"Using a first-difference event study design, I find no evidence that nearby multi-unit infill construction reduces property appreciation rates in Edmonton's mature neighbourhoods — and some evidence it slightly accelerates them.\"\nlink-external-newwindow: true\nlink-external-icon: false\n---\n\nIn a [previous post](../../2025/property-value-preliminary/), I showed some descriptive evidence that properties near new multi-unit buildings don't appreciate less than properties farther away. That analysis was intentionally preliminary: comparing group medians year-by-year doesn't account for the fact that infill tends to cluster in specific neighbourhoods, on specific lot types, and near properties that may already be on different value trajectories.\n\nThis post applies more rigorous methods to the same question. Using a first-difference event study design, I control for all time-invariant differences across properties (location, lot size, age, neighbourhood character) and for city-wide appreciation trends.\n\nThe answer is the same as the preliminary post: **there is no evidence that multi-unit infill construction reduces nearby property values**, across every specification.\n\n## Data\n\nAll data are from Edmonton's open data portal.\n\n- **Historical property assessment data**, 2015–2024. I filter for residential properties (`mill_class_1 == \"RESIDENTIAL\"`) with positive assessed values.\n- **General building permit data**, 2009–2025. Filtered using the same criteria as the preliminary post: permits adding ≥1 unit, excluding excavation-only permits.\n- **Mature neighbourhood boundaries** (2024 vintage).\n\nThe treatment variable follows the preliminary post: a **multi-unit building permit** is one for ≥6 units, excluding new single-family homes, backyard houses, additions/conversions, and duplex-to-fourplex permits. A property is *treated* in assessment year $t$ if such a permit was issued within 50m in year $t - 1$, giving time for the building's presence to be reflected in assessed value.\n\nThe sample is restricted to mature neighbourhoods (excluding Downtown), where infill has been most active.\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\n## Methods\n\nThe preliminary post compared median property value changes between a \"treated\" group (nearby multi-unit permit) and a \"control\" group. The limitation is that treated and control properties may differ systematically: infill tends to cluster in specific neighbourhoods, on certain street types, and near properties that may already be on different value trajectories.\n\nA first-difference (FD) approach addresses this by using each property's *year-over-year change in log assessed value* as the outcome. Time-invariant differences between properties — location, lot size, year built — cancel out in differencing, because they affect value levels equally in every year. A neighbourhood × year fixed effect absorbs both city-wide appreciation trends and neighbourhood-specific appreciation dynamics, comparing treated and control properties *within the same neighbourhood in the same year*. This removes bias from infill clustering in already-appreciating areas. The parallel trends assumption is weaker than in a levels regression: it requires only that treated and control properties within the same neighbourhood would have appreciated at similar *rates* absent treatment, not that they were on parallel value *levels*.\n\nThe event study estimates separate effects at each point in time relative to the first nearby permit: $t = -4, -3, -2, -1$ (pre-treatment), and $t = 0, +1, +2, +3, +4$ (post-treatment). If the parallel trends assumption holds — i.e., treated and control properties in the same neighbourhood would have followed similar appreciation rate trajectories absent treatment — the pre-treatment coefficients should be near zero. Flat pre-trends are not proof of causality, but they are necessary evidence for it.\n\nI use the Sun-Abraham (2021) estimator (`sunab()` in the `fixest` package), which is robust to heterogeneous treatment effects across cohorts — important here because properties receive their first nearby permit in different years throughout 2015–2024.\n\n## Results\n\nEach analysis below is shown for two samples side by side. The **all residential** sample covers all residential properties in mature neighbourhoods. The **always-SFH** sample excludes any property that ever had a ≥6-unit permit issued within 10m of itself during the study period — removing properties approaching redevelopment, which tend to be assessed near land value and cluster near new infill. The always-SFH sample most directly answers the policy question: *does building apartments next door hurt my house's value?*\n\n\n\n::: {#tbl-fd .cell tbl-cap='First-difference estimates: effect of nearby multi-unit permit on year-over-year log assessed value change. All models use neighbourhood × year fixed effects.'}\n::: {.cell-output-display}\n\n```{=html}\n\n\n \n\n \n\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
All residential\n(≥6 units)Always-SFH\n(≥6 units)All residential\n(≥2 units)Always-SFH\n(≥2 units)
Standard errors clustered by property. 95% confidence intervals in brackets.
Multi-unit permit within 50m (≥6 units)0.01182.053e-04
[0.0049, 0.0188][-0.0031, 0.0035]
Multi-unit permit within 50m (≥2 units)0.03740.0369
[0.0340, 0.0409][0.0335, 0.0404]
Observations1,144,5371,134,5611,144,5371,134,561
Neighbourhood × year FEXXXX
\n
\n\n```\n\n:::\n:::\n\n\nThe always-SFH estimates (both thresholds) are near zero — consistent with no effect on stable single-family homes. The all-residential estimates are near zero or slightly positive: properties near new multi-unit permits appreciate at similar or slightly faster rates on average, not slower. The ≥2-unit columns show that the null result holds for smaller infill types (including duplex-to-fourplex), not just large apartment buildings.\n\nThe first-difference event studies (@fig-es-fd-main and @fig-es-fd-sfh) test whether appreciation *rates* were diverging before treatment. The always-SFH pre-trends are flat, and post-treatment estimates are near zero throughout — a clean null result. The all-residential event study tells a more revealing story: there is a large positive spike at $t = 0$, which then reverts to near zero. This spike is almost certainly driven by properties approaching redevelopment in the all-residential sample: when a multi-unit permit appears nearby, properties that are themselves candidates for demolition see an immediate reassessment of their land value. The always-SFH exclusion removes this effect entirely, confirming that stable single-family homes see no change in appreciation rates. See @tbl-es-fd-sample for treated-observation counts by cohort and relative year.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![First-difference event study: all residential properties](index_files/figure-html/fig-es-fd-main-1.png){#fig-es-fd-main width=672}\n:::\n:::\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n![First-difference event study: always-SFH properties](index_files/figure-html/fig-es-fd-sfh-1.png){#fig-es-fd-sfh width=672}\n:::\n:::\n\n\n\n::: {#tbl-es-fd-sample .cell tbl-cap='First-difference event study: treated observations per cohort and relative year'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n
Cohort\n
Pre-treatment (relative year)
\n
\n
Post-treatment (relative year)
\n
-8-7-6-5-4-3-2-10+1+2+3+4+5+6+7+8
All residential
20159595959595959595
2016313131313131313131
20175540404040404040
2018141414212121212121
2019999999999
2020242424252727272727
2021123123124124127127127127127
2022137138138141141143143153153
2023293298302304306310311313319
2024356357367368375379385387387
Always-SFH
20152323232323232323
2016313131313131313131
2017555555555
2018141414141414141414
2019999999999
2020232323242626262626
2021120120121121124124124124124
2022134135135137137139139139139
2023275280284286288292295295297
2024307308317318325329335335335
\n
\n```\n\n:::\n:::\n\n\n@fig-es-fd-sfh-robust repeats the always-SFH FD event study restricted to cohorts 2017 and later — the earliest cohort with at least one pre-treatment FD observation. The result is unchanged: all estimates are statistically indistinguishable from zero throughout the full time horizon, with no systematic trend.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![First-difference event study: always-SFH, cohorts 2017 and later only (cohorts 2015–2016 excluded — no pre-treatment data in FD sample)](index_files/figure-html/fig-es-fd-sfh-robust-1.png){#fig-es-fd-sfh-robust width=672}\n:::\n:::\n\n\n\n## Caveats\n\n**Parallel trends is untestable.** Flat pre-trends are necessary but not sufficient evidence for a causal interpretation. A time-varying confounder that begins exactly when the permit is issued — say, a developer specifically targeting blocks that are about to appreciate for unrelated reasons — could still bias the estimates. The flat pre-trends make this story less plausible, but it cannot be ruled out.\n\n**Developer selection likely biases toward finding a positive effect.** If developers preferentially site multi-unit builds near properties that are already appreciating (e.g., near amenities, on major streets), the \"treated\" group would be expected to appreciate faster even without the infill. This would work against finding a null result, making the null finding more conservative, not less.\n\n**Assessed value is not sale price.** Edmonton's assessment data reflects the city's model of market value, not observed transactions. City-wide assessment methodology changes are absorbed by year fixed effects, but property-specific reassessment events are not. Using only properties where the same assessment method applies across all years would be a useful robustness check.\n\n**One-year lag.** The treatment indicator uses permits issued in year $t-1$ to predict assessments in year $t$. Construction timelines vary — larger buildings may take two or more years to complete — so some effects may be lagged further than the specification captures. The event study, which shows no effect even 4+ years post-permit, addresses this concern.\n\n**The always-SFH sample conditions on an endogenous outcome.** The always-SFH sample excludes properties that were themselves eventually redeveloped within 10m of a ≥6-unit permit during the study period. If infill pressure causes adjacent properties to sell and redevelop, this exclusion removes potentially affected properties. The always-SFH estimates should therefore be interpreted as the effect on properties that did not experience redevelopment pressure — a well-defined and policy-relevant group, but not a random subset. The bias direction is ambiguous but likely toward a more null result.\n\n## Conclusion\n\nUsing year-over-year appreciation as the outcome, there is no evidence that multi-unit infill construction reduces neighbouring property values in Edmonton's mature neighbourhoods. The always-SFH estimates are near zero across both the ≥6-unit and ≥2-unit thresholds, and the all-residential estimates are near zero or slightly positive. The event study shows flat pre-trends and no post-treatment decline for stable single-family homes across the full post-treatment window. The all-residential sample does show a large positive spike at $t = 0$, almost certainly driven by properties approaching redevelopment being reassessed at land value — but this is a selection artefact that disappears in the always-SFH sample, confirming that stable homes are unaffected. All specifications use neighbourhood × year fixed effects, comparing treated and control properties within the same neighbourhood and year.\n\nThis is consistent with the [preliminary post](../../2025/property-value-preliminary/) and with a growing literature finding that upzoning and infill construction do not harm existing homeowners. The fear that new apartments will hurt house prices is not supported by Edmonton's own data. It should not be a reason to restrict where housing can be built.", + "markdown": "---\ntitle: \"Infill construction and property values in Edmonton\"\ndate: \"2026-03-08\"\nauthor: \"Jacob Dawang\"\ncategories: [housing, edmonton, zoning, property value]\ndescription: \"Using a first-difference event study design, I find no evidence that nearby multi-unit infill construction reduces property appreciation rates in Edmonton's mature neighbourhoods — and some evidence it slightly accelerates them.\"\nlink-external-newwindow: true\nlink-external-icon: false\ndraft: true\nexecute: \n cache: refresh\n---\n\nIn a [previous post](../../2025/property-value-preliminary/), I showed some descriptive evidence that properties near new multi-unit buildings don't appreciate less than properties farther away. That analysis was intentionally preliminary: comparing group medians year-by-year doesn't account for the fact that infill tends to cluster in specific neighbourhoods, on specific lot types, and near properties that may already be on different value trajectories.\n\nThis post applies more rigorous methods to the same question. Using a first-difference event study design, I control for all time-invariant differences across properties (location, lot size, age, neighbourhood character) and for city-wide appreciation trends.\n\nThe answer is the same as the preliminary post: **there is no evidence that multi-unit infill construction reduces nearby property values** — and across every specification, the estimates point in the opposite direction.\n\n## Data\n\nAll data are from Edmonton's open data portal.\n\n- **Historical property assessment data**, 2015–2026. I filter for residential properties (`mill_class_1 == \"RESIDENTIAL\"`) with positive assessed values. Data for 2015–2024 come from a combined historical RDS; 2025 is a separate GeoJSON; 2026 requires joining a property-information shapefile (geometries) with a separate assessment CSV.\n- **General building permit data**, 2009–2025. Filtered using the same criteria as the preliminary post: permits adding ≥1 unit, excluding excavation-only permits.\n- **Mature neighbourhood boundaries** (2024 vintage).\n\nThe treatment variable follows the preliminary post: a **multi-unit building permit** is one for ≥6 units, excluding new single-family homes, backyard houses, additions/conversions, and duplex-to-fourplex permits. A property is *treated* in assessment year $t$ if such a permit was issued within 50m in year $t - 1$, giving time for the building's presence to be reflected in assessed value.\n\nThe sample is restricted to mature neighbourhoods (excluding Downtown), where infill has been most active.\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\n\n::: {.cell}\n\n:::\n\n\n## Methods\n\nThe preliminary post compared median property value changes between a \"treated\" group (nearby multi-unit permit) and a \"control\" group. The limitation is that treated and control properties may differ systematically: infill tends to cluster in specific neighbourhoods, on certain street types, and near properties that may already be on different value trajectories.\n\nA first-difference (FD) approach addresses this by using each property's *year-over-year change in log assessed value* as the outcome. Time-invariant differences between properties — location, lot size, year built — cancel out in differencing, because they affect value levels equally in every year. A neighbourhood × year fixed effect absorbs both city-wide appreciation trends and neighbourhood-specific appreciation dynamics, comparing treated and control properties *within the same neighbourhood in the same year*. This removes bias from infill clustering in already-appreciating areas. The parallel trends assumption is weaker than in a levels regression: it requires only that treated and control properties within the same neighbourhood would have appreciated at similar *rates* absent treatment, not that they were on parallel value *levels*.\n\nThe event study estimates separate effects at each point in time relative to the first nearby permit: $t = -4, -3, -2, -1$ (pre-treatment), and $t = 0, +1, +2, +3, +4$ (post-treatment). If the parallel trends assumption holds — i.e., treated and control properties in the same neighbourhood would have followed similar appreciation rate trajectories absent treatment — the pre-treatment coefficients should be near zero. Flat pre-trends are not proof of causality, but they are necessary evidence for it.\n\nI use the Sun-Abraham (2021) estimator (`sunab()` in the `fixest` package), which is robust to heterogeneous treatment effects across cohorts — important here because properties receive their first nearby permit in different years throughout 2015–2025.\n\n## Results\n\nEach analysis below is shown for two samples side by side. The **all residential** sample covers all residential properties in mature neighbourhoods. The **always-SFH** sample excludes any property that ever had a ≥6-unit permit issued within 10m of itself during the study period — removing properties approaching redevelopment, which tend to be assessed near land value and cluster near new infill. The always-SFH sample most directly answers the policy question: *does building apartments next door hurt my house's value?*\n\n\n::: {#tbl-fd .cell tbl-cap='First-difference estimates: effect of nearby multi-unit permit on year-over-year log assessed value change. All models use neighbourhood × year fixed effects.'}\n::: {.cell-output-display}\n\n```{=html}\n\n\n \n\n \n\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
All residential\n(≥6 units)Always-SFH\n(≥6 units)All residential\n(≥2 units)Always-SFH\n(≥2 units)
Standard errors clustered by property. 95% confidence intervals in brackets.
Multi-unit permit within 50m (≥6 units)0.01160.0052
[0.0078, 0.0154][0.0028, 0.0076]
Multi-unit permit within 50m (≥2 units)0.03480.0340
[0.0319, 0.0376][0.0312, 0.0368]
Observations1,381,3151,369,0911,381,3151,369,091
Neighbourhood × year FEXXXX
\n
\n\n```\n\n:::\n:::\n\n\nThe always-SFH estimate for the main specification (≥6 units) is +0.005 (95% CI \\[0.003, 0.008\\]) — stable single-family homes near new apartment buildings appreciate *faster* than comparable properties in the same neighbourhood in the same year, not slower. The all-residential estimate is also positive (+0.012, 95% CI \\[0.008, 0.015\\]). The ≥2-unit estimates are much larger (+0.034–0.035). These likely reflect property-level selection: duplexes and fourplexes tend to be built on the most desirable streets *within* a neighbourhood, so properties within 50m of ≥2-unit permits are positively selected on within-neighbourhood appreciation. The neighbourhood × year FE removes between-neighbourhood sorting but not this finer-grained street-level selection. The ≥6-unit specification is less subject to this concern and remains the primary estimate.\n\nThe first-difference event studies (@fig-es-fd-main and @fig-es-fd-sfh) test whether appreciation *rates* were diverging before treatment. The always-SFH pre-trends are flat and post-treatment estimates are near zero or mildly positive throughout — consistent with no negative effect on stable single-family homes. The all-residential event study tells a more revealing story: there is a large positive spike at $t = 0$, which then reverts toward the aggregate estimate. This spike is almost certainly driven by properties approaching redevelopment in the all-residential sample: when a multi-unit permit appears nearby, properties that are themselves candidates for demolition see an immediate reassessment of their land value. See @tbl-es-fd-sample for treated-observation counts by cohort and relative year.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![First-difference event study: all residential properties](index_files/figure-html/fig-es-fd-main-1.png){#fig-es-fd-main width=672}\n:::\n:::\n\n\n\n::: {.cell}\n::: {.cell-output-display}\n![First-difference event study: always-SFH properties](index_files/figure-html/fig-es-fd-sfh-1.png){#fig-es-fd-sfh width=672}\n:::\n:::\n\n\n\n::: {#tbl-es-fd-sample .cell tbl-cap='First-difference event study: treated observations per cohort and relative year'}\n::: {.cell-output-display}\n\n```{=html}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n
Cohort\n
Pre-treatment (relative year)
\n
\n
Post-treatment (relative year)
\n
-8-7-6-5-4-3-2-10+1+2+3+4+5+6+7+8
All residential
20159494949494949494
2016303030303030303030
2017554040404040404040
20181414142121212121212121
201977777777777
20202424242527272727272727
2021123123124124127127127127127127127
2022133134134137137139139149149149149
2023287292296298300304305307313312313
2024324325335336343345351351351361361
2025882900914927933943953965971978
2026196219892024204220532079208921072126
Always-SFH
20152222222222222222
2016303030303030303030
20175555555555
20181414141414141414141414
201977777777777
20202323232426262626262626
2021120120121121124124124124124124124
2022130131131133133135135135135135135
2023273278282284286290293293295294295
2024297298307308315317323323323333333
2025806824838851857867877888890897
2026171017381771179018011827184218551867
\n
\n```\n\n:::\n:::\n\n\n@fig-es-fd-sfh-robust repeats the always-SFH FD event study restricted to cohorts 2017 and later — the earliest cohort with at least one pre-treatment FD observation. The result is unchanged: pre-treatment estimates are flat, and there is no post-treatment decline at any point in the time horizon.\n\n\n::: {.cell}\n::: {.cell-output-display}\n![First-difference event study: always-SFH, cohorts 2017 and later only (cohorts 2015–2016 excluded — no pre-treatment data in FD sample)](index_files/figure-html/fig-es-fd-sfh-robust-1.png){#fig-es-fd-sfh-robust width=672}\n:::\n:::\n\n\n## Caveats\n\n**Parallel trends is untestable.** Flat pre-trends are necessary but not sufficient evidence for a causal interpretation. A time-varying confounder that begins exactly when the permit is issued — say, a developer specifically targeting blocks that are about to appreciate for unrelated reasons — could still bias the estimates. The flat pre-trends make this story less plausible, but it cannot be ruled out.\n\n**Developer selection likely biases toward finding a positive effect.** If developers preferentially site multi-unit builds near properties that are already appreciating (e.g., near amenities, on major streets), the \"treated\" group would be expected to appreciate faster even without the infill. The neighbourhood × year FE controls for neighbourhood-level appreciation trends, but within-neighbourhood street-level selection may remain — particularly for the ≥2-unit threshold. The positive estimates for the ≥6-unit specification should therefore be interpreted as an upper bound on the causal effect: the true effect is at most mildly positive, and could be zero.\n\n**Assessed value is not sale price.** Edmonton's assessment data reflects the city's model of market value, not observed transactions. City-wide assessment methodology changes are absorbed by year fixed effects, but property-specific reassessment events are not. Using only properties where the same assessment method applies across all years would be a useful robustness check.\n\n**One-year lag.** The treatment indicator uses permits issued in year $t-1$ to predict assessments in year $t$. Construction timelines vary — larger buildings may take two or more years to complete — so some effects may be lagged further than the specification captures. The event study, which shows no negative effect even 4+ years post-permit, addresses this concern.\n\n**The always-SFH sample conditions on an endogenous outcome.** The always-SFH sample excludes properties that were themselves eventually redeveloped within 10m of a ≥6-unit permit during the study period. If infill pressure causes adjacent properties to sell and redevelop, this exclusion removes potentially affected properties. The always-SFH estimates should therefore be interpreted as the effect on properties that did not experience redevelopment pressure — a well-defined and policy-relevant group, but not a random subset. The bias direction is ambiguous but likely toward a more null result.\n\n## Conclusion\n\nUsing year-over-year appreciation as the outcome, there is no evidence that multi-unit infill construction reduces neighbouring property values in Edmonton's mature neighbourhoods — and consistent evidence that it does not. The always-SFH estimate for the primary specification (≥6 units, neighbourhood × year FE) is +0.005 \\[0.003, 0.008\\]: stable single-family homes near new apartment buildings appreciate slightly *faster* than comparable properties in the same neighbourhood in the same year. The all-residential estimate is also positive (+0.012). The event study shows flat pre-trends and no post-treatment decline for stable single-family homes. The all-residential sample does show a large positive spike at $t = 0$, almost certainly driven by properties approaching redevelopment being reassessed at land value — but this is a selection artefact, not a causal effect on stable homes.\n\nThis is consistent with the [preliminary post](../../2025/property-value-preliminary/) and with a growing literature finding that upzoning and infill construction do not harm existing homeowners. The fear that new apartments will hurt house prices is not supported by Edmonton's own data. It should not be a reason to restrict where housing can be built.", "supporting": [], "filters": [ "rmarkdown/pagebreak.lua" diff --git a/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-main-1.png b/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-main-1.png index 3b51b57..189466a 100644 Binary files a/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-main-1.png and b/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-main-1.png differ diff --git a/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-sfh-1.png b/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-sfh-1.png index 89ff0a2..6c56362 100644 Binary files a/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-sfh-1.png and b/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-sfh-1.png differ diff --git a/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-sfh-robust-1.png b/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-sfh-robust-1.png index 9c70d1a..a424f16 100644 Binary files a/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-sfh-robust-1.png and b/_freeze/blog/2026/property-values/index/figure-html/fig-es-fd-sfh-robust-1.png differ diff --git a/blog/2026/property-values/index.qmd b/blog/2026/property-values/index.qmd index d60fbb4..7c1f4c7 100644 --- a/blog/2026/property-values/index.qmd +++ b/blog/2026/property-values/index.qmd @@ -6,7 +6,7 @@ categories: [housing, edmonton, zoning, property value] description: "Using a first-difference event study design, I find no evidence that nearby multi-unit infill construction reduces property appreciation rates in Edmonton's mature neighbourhoods — and some evidence it slightly accelerates them." link-external-newwindow: true link-external-icon: false -draft: false +draft: true execute: cache: refresh --- @@ -21,9 +21,9 @@ The answer is the same as the preliminary post: **there is no evidence that mult All data are from Edmonton's open data portal. -- **Historical property assessment data**, 2015–2026. I filter for residential properties (`mill_class_1 == "RESIDENTIAL"`) with positive assessed values. Data for 2015–2024 come from a combined historical RDS; 2025 is a separate GeoJSON; 2026 requires joining a property-information shapefile (geometries) with a separate assessment CSV. -- **General building permit data**, 2009–2025. Filtered using the same criteria as the preliminary post: permits adding ≥1 unit, excluding excavation-only permits. -- **Mature neighbourhood boundaries** (2024 vintage). +- **Historical property assessment data**, 2015–2026. I filter for residential properties (`mill_class_1 == "RESIDENTIAL"`) with positive assessed values. Data for 2015–2024 come from a combined historical RDS; 2025 is a separate GeoJSON; 2026 requires joining a property-information shapefile (geometries) with a separate assessment CSV. +- **General building permit data**, 2009–2025. Filtered using the same criteria as the preliminary post: permits adding ≥1 unit, excluding excavation-only permits. +- **Mature neighbourhood boundaries** (2024 vintage). The treatment variable follows the preliminary post: a **multi-unit building permit** is one for ≥6 units, excluding new single-family homes, backyard houses, additions/conversions, and duplex-to-fourplex permits. A property is *treated* in assessment year $t$ if such a permit was issued within 50m in year $t - 1$, giving time for the building's presence to be reflected in assessed value. @@ -33,7 +33,6 @@ The sample is restricted to mature neighbourhoods (excluding Downtown), where in #| label: libraries #| message: false #| cache: false - library(tidyverse) library(sf) library(gt) @@ -94,15 +93,19 @@ assessment_values_2026 <- read_csv( assessment_2026 <- property_info_2026 %>% inner_join( - assessment_values_2026 %>% select(account_number, assessed_value, mill_class_1), + assessment_values_2026 %>% + select(account_number, assessed_value, mill_class_1), by = "account_number" ) %>% mutate(assessment_year = 2026L) # Combine all years — keep only columns needed for the analysis analysis_cols <- c( - "account_number", "assessment_year", "assessed_value", - "mill_class_1", "neighbourhood_name" + "account_number", + "assessment_year", + "assessed_value", + "mill_class_1", + "neighbourhood_name" ) historical <- bind_rows( historical %>% select(all_of(analysis_cols)),