SPB Git

spb/wp10_uqo

Public

UQO Working Paper No. 10 — The assessment gap in Quebec: vertical and horizontal inequity in municipal property assessment.

This looks like a research repository (LaTeX, bibliography, figures). Preview Research Mode· enable it with research: true on the API.

History
NameLast commitUpdated
data WP10 — The Assessment Gap in Quebec: full research project
docs révision scientifique complète (editorial board, 2026-10-17)
figures WP10 — The Assessment Gap in Quebec: full research project
paper révision scientifique complète (editorial board, 2026-10-17)
results révision scientifique complète (editorial board, 2026-10-17)
scripts révision scientifique complète (editorial board, 2026-10-17)
src WP10 — The Assessment Gap in Quebec: full research project
.gitignore harmonisation standard UQO WP (2026-10-17)
README.md révision scientifique complète (editorial board, 2026-10-17)
requirements.txt WP10 — The Assessment Gap in Quebec: full research project
README.md source

# ⚖️ The Assessment Gap in Quebec

UQO Working Paper No. 10 — Vertical and Horizontal Inequity in Municipal Property Valuation: Evidence from 522,769 Sales Matched to the Assessment Roll

Paper Python Data Estimation Reproducible Institution Author Contact

TL;DR — Matching 522,769 Quebec residential sales (2021–2026) to the triennial assessment rolls that tax them, this paper delivers the first province-wide ratio study of assessment equity for a Canadian province. Its central finding is that the measured regressivity hinges on the treatment of extreme assessment ratios. Under a lenient 1/99 trim the within-market elasticity of the assessment ratio w.r.t. price is −0.34 (Cheng FE) and −0.08 under Clapp's rank IV, and 95% of municipalities fail the IAAO vertical-equity band. Under the IAAO outlier rule (1.5 × IQR within cell, 9% of sales, 53% of the bottom price decile) the elasticity is −0.09 (IV: −0.01, n.s.), the province-wide PRB is +0.02, the COD is 17, the ten largest cities post CODs of 9–12 and three quarters of municipalities comply. Proportionality holds across the upper 80% of each market's price distribution under either treatment. Invariant to the rule: condos are assessed proportionally, single-family/plex/old/land-heavy/small-market dwellings are (mildly) regressive, and within-municipality PRB widened in 2021–2022. The bottom decile overpays 6–65% depending on the treatment; the top decile underpays 3–5%.


# 📌 Status

Item Value
Version 1.1 (October 2026) — revised 2026-10-17 by the editorial-board review (see docs/)
SSRN not yet submitted
Journal not yet submitted — target Regional Science and Urban Economics (fallback National Tax Journal); anonymous PDF in Recherche-UQO/_soumissions/revues/assessment-gap-quebec/
Code & data reproducible from scripts/ (see Quick start); raw parquet snapshot not redistributed

# 📖 Table of contents

  1. Status
  2. What this paper does
  3. Headline results
  4. Repository layout
  5. Quick start
  6. The pipeline, step by step
  7. Data
  8. Methodology
  9. Figures & tables inventory
  10. Limitations
  11. Citation
  12. Author & contact

# 🎯 What this paper does

Quebec taxes every dwelling in proportion to its assessed value, redrawn on a triennial roll whose values must, by statute (art. 46 LFM), reflect market conditions at a single reference date. If assessments are regressive — cheap homes overvalued relative to expensive ones — the effective tax rate falls with wealth, silently. This project measures that gap at province scale:

text
ln AV_i = α_c(i) + β · ln SP_i + ε_i      (c = municipality × roll × sale-year)
  • γ = β − 1 is the elasticity of the assessment ratio w.r.t. price (γ < 0 ⇒ regressive), identified within 2,884 market-timing cells;
  • the Clapp (1990) rank IV purges the attenuation bias that pushes naïve ratio studies toward spurious regressivity;
  • the full IAAO ratio-study battery (median ratio, COD, PRD, PRB) with bootstrap CIs is computed for every municipality with ≥ 100 usable sales;
  • the Kochin–Parks reverse-regression bound and the Clapp first stage make the measurement-error problem explicit (Appendix A);
  • every statistic is re-computed under five outlier-trimming rules (baseline 1/99 by vintage, 3 × IQR, 1.5 × IQR = IAAO Appendix B, 2.5/97.5 and 5/95 within cell);
  • piecewise-linear and quantile profiles, subgroup elasticities (baseline and trimmed), horizontal-dispersion regressions and an intra-municipal tax-shift calculation under three sorting variables and two benchmarks complete the audit.

# 🏆 Headline results

Object Baseline (1/99 trim by vintage) IAAO-trimmed (1.5 × IQR within cell)
Sales 522,769 471,148 (9.2% dropped; 53% of bottom price decile)
Cheng elasticity, cell FE: γ = β − 1 −0.344 (0.029) −0.088 (0.013)
Clapp rank-IV γ −0.083 (0.021) −0.013 (0.009), n.s.
Kochin–Parks bracket [β_F, 1/β_R] [0.656, 1.137] — contains 1 —
Province-wide COD / PRD / PRB 28.5 / 1.072 / −0.029 17.0 / 1.004 / +0.025
Municipalities (≥100 sales): COD > 15 99% of 261 30% of 241
Municipalities: PRB < −0.05 / < −0.10 95% / 84% 24% / 5%
Piecewise β by within-market price quintile (Q1 … Q5) 0.07, 0.89, 0.71, 1.00, 0.95 Q1 0.87, Q5 0.95
Quantile β(τ), τ = .10 → .90 (conditional ln AV) 0.87 → 0.49 —
Ten largest cities: COD / PRB 16.9–30.5 / −0.39 to +0.07 9.2–12.3 / −0.056 to +0.027
Within-municipality median PRB, 2021–22 vs 2024–26 ≈ −0.2 every year (no gradient) −0.04 vs ≈ 0
Excess tax, bottom ↔ top decile (sorted on price, median) +65% ↔ −5% +6.6% ↔ −3.2%
Excess tax, sorted on IAAO blended proxy +5.6% ↔ −0.2% —

Sub-group anatomy (baseline → trimmed γ_FE): condos −0.12 → 0.00; single-family −0.45 → −0.12; plex −0.49 → −0.12; land share > 0.4: −0.50 → −0.14; age > 60 y: −0.43 → −0.14; munis > 10k sales (8 clusters): −0.27 → −0.05. Montréal is the least regressive large city (γ_FE −0.18 → −0.03), not an exception.

# 🗂 Repository layout

text
wp10_uqo/
├── data/
│   ├── raw/                  # matched sales–roll snapshot (see data/raw/README.md)
│   └── processed/            # analysis.parquet (built by step 01)
├── src/wp10/                 # reusable package
│   ├── config.py             # paths, thresholds, constants
│   ├── sample.py             # sample construction & variable definitions
│   ├── iaao.py               # COD / PRD / PRB + bootstrap CIs
│   ├── models.py             # Cheng FE, Clapp IV, quantiles, horizontal, tax shift
│   └── plotstyle.py          # journal-calibre matplotlib style (validated palette)
├── scripts/                  # the pipeline, in order
│   ├── 01_build_sample.py
│   ├── 02_iaao_stats.py
│   ├── 03_estimate_regressions.py
│   ├── 04_make_figures.py
│   ├── 05_make_tables.py
│   └── 06_revision_analyses.py   # bounds, trimming grid, spline, alt. tax shift (2026-10-17)
├── results/
│   ├── reproduced/           # every CSV the scripts emit (rev_*.csv from step 06)
│   └── tables/               # 18 LaTeX tables input by the paper
├── figures/                  # 10 publication figures (PNG, 300 dpi)
├── docs/                     # REVIEW-REPORT.md, CHANGELOG-REVISION.md, pre-revision PDF
└── paper/                    # main.tex + sections/ + appendix/ + references.bib → main.pdf

# 🚀 Quick start

bash
cd wp10_uqo
python3 -m pip install -r requirements.txt

# place the parquet snapshot in data/raw/ (see data/raw/README.md), then:
python3 scripts/01_build_sample.py         # 745,119 → 522,769 sales
python3 scripts/02_iaao_stats.py           # IAAO diagnostics + bootstrap
python3 scripts/03_estimate_regressions.py # FE / IV / quantile / heterogeneity / tax shift
python3 scripts/04_make_figures.py         # 10 figures
python3 scripts/06_revision_analyses.py    # bounds, trimming grid, spline, tax-shift variants (~40 s)
python3 scripts/05_make_tables.py          # 18 LaTeX tables

cd paper && make                           # compile main.pdf (latexmk)

Total runtime ≈ 6 minutes on an Apple-silicon laptop; peak RAM ≈ 6 GB.

# 🗃 Data

745,119 residential-market transactions (Jan 2021 – Jul 2026) matched at the parcel level to the assessment roll in force at the sale date (median match distance 0.6 m; every retained sale reproduces the roll value exactly). From the roll: total/land/building assessed values, lot & floor areas, year built, unit count, CUBF use code, roll vintage and the statutory market-condition date. Sample cascade (details in the paper, §4): residential CUBF → match quality → valid AV/SP → 1/99% ratio trim within roll vintage → cells ≥ 20 sales ⇒ 522,769 sales, 625 municipalities, 2,884 cells.

# 🔬 Methodology

  1. IAAO diagnostics (Standard on Ratio Studies, 2013) within municipality × sale-year blocks, aggregated by median — COD, PRD, PRB with percentile-bootstrap CIs (src/wp10/iaao.py).
  2. Cheng (1974) log-log regression with 2,884 absorbed fixed effects (linearmodels AbsorbingLS), SEs clustered on 625 municipalities.
  3. Clapp (1990) rank IV — Z ∈ {−1,0,+1} from within-cell rank agreement of ln AV and ln SP, 2SLS on demeaned data (IV2SLS) — the conservative bound.
  4. Quantile regressions on within-cell demeaned data (τ = .10….90).
  5. Heterogeneity: separate FE estimates by class, age, land share, roll lag, municipality size, sale year.
  6. Horizontal inequity: |ln r − cell median| regressed on characteristics.
  7. Tax shift: r / benchmark − 1 by within-cell decile of a sorting variable (sale price, IAAO blended proxy, assessed value), cell-median or revenue-neutral aggregate benchmark — statutory incidence under the residual-category rate.
  8. Revision analyses (scripts/06_revision_analyses.py): Kochin–Parks reverse bound and implied noise shares, Clapp first stage, piecewise-linear (Sunderman) profile, five outlier rules × full battery, trimmed heterogeneity and city diagnostics, PRB by lag band/year within municipalities, time-adjusted CODs.

# 🖼 Figures & tables inventory

Figure Content
fig_ratio_dist ratio distribution + by roll lag (Panels A/B)
fig_time median ratio by month × roll vintage (staleness drift)
fig_binscatter within-cell ln ratio vs ln price, 20 bins — the core fact
fig_quantile β(τ) profile with FE/IV benchmarks
fig_heterogeneity forest plot of subgroup γ
fig_prb_muni, fig_cod municipal PRB / COD distributions vs IAAO bands
fig_map province map of municipal PRB (Montréal exception)
fig_taxshift excess tax burden by local price decile
fig_robustness γ_FE vs γ_IV across 10 sample variants

Tables (results/tables/*.tex): summary stats, IAAO province-wide, ten largest markets, vertical regressions, quantiles, heterogeneity, horizontal, tax shift, robustness, Paglin–Fogarty, plus the revision tables rev_trim_grid, rev_spline, rev_taxshift_alt, rev_het_trimmed, rev_cities, rev_cod, rev_prb_blocks, rev_bounds (Appendix A). Figures are drawn on the baseline sample; the trimmed counterparts are tabulated.

# ⚠️ Limitations

  • No arm's-length flag in Quebec transaction records: 9% of sales have ratios the IAAO rule classifies as outliers, concentrated in the bottom price decile; whether they are over-assessed dwellings or nominal transfers cannot be settled, so results are reported as bounds (baseline = upper bound, IAAO-trimmed = lower bound).
  • Sales < $50k absent from the source registry.
  • 2021–2026 is an unusually turbulent market — level statistics are period-specific.
  • No appeals, renovations, owner demographics or phase-in (étalement) resolutions observed; tax-shift figures are statutory, not economic, incidence.
  • Cluster-robust SEs rest on 8 clusters for the >10k-sales band and on one municipality (HC-robust) for the city-level estimates.

# 📝 Citation

bibtex
@techreport{boucher2026assessmentgap,
  author      = {Boucher, Simon-Pierre},
  title       = {The Assessment Gap in Quebec: Vertical and Horizontal Inequity
                 in Municipal Property Valuation},
  institution = {Universit\'e du Qu\'ebec en Outaouais,
                 D\'epartement des sciences administratives},
  type        = {Working Paper},
  number      = {10},
  year        = {2026},
  month       = {October},
  note        = {Version 1.1}
}

# 👤 Author & contact

Simon-Pierre Boucher — Département des sciences administratives, Université du Québec en Outaouais (UQO), Gatineau, QC. 📧 simon-pierre.boucher@uqo.ca

# 🗒 Notes

  • Numbering: UQO Working Paper No. 10. (A June 2026 VQuant methodology paper also carried the label "WP 10"; it is now WP 13.)
  • Cover page, metadata and layout follow Recherche-UQO/HARMONISATION.md (2026-10-17).
  • Scientific revision 2026-10-17 (v1.0 → v1.1): editorial-board review report in docs/REVIEW-REPORT.md, audit trail in docs/CHANGELOG-REVISION.md; pre-revision PDF preserved as docs/main_pre-revision-20261017.pdf (git tag pre-revision-20261017). Headline conclusions changed: regressivity is now reported as bounds that depend on the outlier rule; the "Montréal exception" and the "staleness doubles inequity" claims of v1.0 were withdrawn after re-analysis.
  • Figures are read by the paper from figures/ (not paper/figures/), a deviation from the standard layout kept to avoid duplicating 10 PNG files.

Clone wp10_uqo

Anonymous clone and fetch. Pushing requires the owner's personal access token.

ZIP tar.gz snapshot of main
Files · main
Menu

Theme