UQO Working Paper No. 5 — Airbnb, residential rents and housing market pressure.
1<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->2# CHANGELOG-REVISION — UQO WP 5, editorial-board revision (2026-10-17), v1.0 → v1.134Pre-revision state: git tag `pre-revision-20261017`; `docs/main_pre-revision-20261017.pdf` (51 pages). All original files preserved in git history; every number below was regenerated by the scripts in `scripts/` (run log: `results/logs/pipeline_run_20261017.txt`).56## 1. Major corrections (where · before → after · why · evidence)78| # | Where | Before (v1.0) | After (v1.1) | Why / evidence |9|---|---|---|---|---|10| 1 | Abstract, §1, §3, §8 | "approximately 5,000 Airbnb listings" | 3,456 listings analysed (5,000 scraped, 1,544 without price) | `airbnb_clean.parquet` has 3,456 rows; inspection log: 30.9 % null prices |11| 2 | **New §5.2, Table 5** | city FE only (β = 0.0039) | FSA FE: β = 0.0008 (HC1 0.0004), N = 7,883, 289 FSAs; 250 m: 0.0008 (0.0009); any-Airbnb −0.0279*** + count 0.0010; log(1+count) 0.0022 (0.0053); + size 0.0003 (0.0006) | `scripts/12`, `results/tables/neighbourhood_fe.{tex,json}`; within-FSA variance share of the count = 26 % |12| 3 | **New §5.3, Table 6** | HC1 (0.0002) + one city-cluster column (0.0001) | City FE: HC1 0.0002 / cluster-city 0.0001 (187 cl.) / cluster-FSA 0.0007 (318) / Conley 1–10 km 0.0007; FSA FE: 0.0004 / 0.0004 / 0.0007 / 0.0007–0.0004 | `scripts/12`, `inference_comparison.tex`; city clustering unreliable (Montreal 59 %) |13| 4 | §4.4, §5.4, Table 7, App. B | KNN on raw degrees; ρ̂ = 0.1367 (0.0199), λ̂ = 0.5393, SAR β 0.0034 (0.0002), SEM β 0.0038 (0.0004), pseudo-R² 0.5503/0.4972; SAR SE classical | KNN on projected km; SAR White-robust SE; ρ̂ = 0.1340 (0.0222), λ̂ = 0.5437, SAR β 0.0034 (0.0002), SEM β 0.0039 (0.0004), pseudo-R² 0.5508/0.4973 | anisotropy of degree coordinates at 45–47° N (cos φ ≈ 0.69); `scripts/07` `project_km()` |14| 5 | **New Table 8** | SAR coefficient read as "mildly attenuated" marginal effect | LeSage–Pace impacts: direct 0.0034 (0.0002), indirect 0.0005 (0.0001), total 0.0040 (0.0002); n⁻¹tr[(I−ρW)⁻¹] = 1.0026 | `scripts/07` `lesage_pace_impacts()`; `spatial_impacts.tex` |15| 6 | §4.3, §5.6, Table 10 | (2c) reported mean_rent_city = 0.0307 (0.1039) with city FE | regressor dropped in FE columns (perfectly collinear; v1.0 value was a pseudo-inverse artefact); other (2c) coefficients unchanged | `scripts/06`; statsmodels pinv behaviour |16| 7 | §3.1, §5.6, Table 10, Fig. 4 | superhost "discount" (−0.35***/−0.28***) interpreted as Quebec composition effect; R² 0.03/0.14 | price field bimodal (26.5 % > $1,000); restricted sample ≤ $1,000 (N = 1,699): superhost 0.014/0.042 n.s., entire home 0.137*** (FE), amenities 0.003***, R² 0.21/0.30; θ = 0.003 (0.052) | `scripts/05` log-price histogram; `scripts/06` columns (2d)–(2e) |17| 8 | §6.3, Table 15 | "(4) Houses" = 0.006699*** (0.001995), N = 789 (substring match caught "Row / Townhouse") | exact `building_type == "House"`: 0.005857** (0.002348), N = 741 | `scripts/10` |18| 9 | §6.5, Table 17 | "clustering by city (153 clusters)" | 252 clusters (row added to table) | `scripts/11` prints `city clusters = 252` |19| 10 | §5.8, **new Table 13** | random 80/20 split only (RF test R² 0.71) | 5-fold CV: random RF 0.647 / GBM 0.654 / OLS 0.477; FSA-blocked RF 0.431 / GBM 0.414 / OLS 0.467 (181 FSA groups); ML sample N = 4,370 stated | `scripts/09` `cross_validate_blocks()`; `ml_spatial_cv.tex` |20| 11 | §1, §7.1, §8 | Duso et al. "7–13 euros per month per listing"; "strikingly close … mutual corroboration" | Duso et al. (2024) published abstract: each additional *commercial* listing displaces 0.23–0.37 units and raises rent/m² by 1.3–2.4 %; comparison rewritten in standardised terms (city-FE estimates exceed quasi-experimental magnitudes; FSA-FE estimates of the same order or smaller) | abstract verified (fis.leuphana.de record of RSUE 106, 104007) |21| 12 | §2.1, §7.1 | Koster et al.: prices and rents "around 2 %" | about 3 % (published JUE abstract; 2 % was the 2018 WP) | Semantic Scholar record of DOI 10.1016/j.jue.2021.103356 |22| 13 | §2.1 | Garcia-López et al.: "rents 1.9 %, transaction prices 4.6–7 % in high-activity areas" | rents +1.9 %, transaction +4.6 %, posted +3.7 % on average; rents +7 % in top-decile neighbourhoods | UAB WP / UCL record |23| 14 | §2.2 | Combs et al.: "roughly 31,000 housing units removed" | "between 17,000 and 43,000 entire homes … unlikely to house a permanent resident" | CJUR abstract |24| 15 | §5.1 | bedrooms "11–13 %", bathrooms "23–30 %" | 12–14 %, 26–30 % (100(e^β−1), columns 1b–1d) | Table 4 |25| 16 | §4.4 / Table 7 note | spatial-table OLS presented as Model 1c | note: 15-city FE; "differs slightly from column (1c)" | `scripts/07` top-15 cities |26| 17 | §1 | "over 11 million visitors", "vacancy rates historically low" (uncited) | softened to qualitative statements | no verifiable source in repo |27| 18 | §7.3 | Montreal "limits on nights per year … prohibitions on non-owner-occupied STRs in certain boroughs" | provincial Tourist Accommodation Act (2022), 2023 platform-liability amendment, Montreal summer window (10 June–10 Sept, since 2025) and borough bans; footnoted official source; January 2026 scrape outside the window | quebec.ca / City of Montréal pages (2026-10-17) |28| 19 | §5 / §6 | Figure `coefficient_buffer_comparison.pdf` included twice | once (§6.1) | — |29| 20 | Appendix C | "available upon request" (×4) | correlation table included (Table A3); other outputs referenced to scripts | `correlation_matrix.tex` regenerated with labels |30| 21 | All tables | raw variable names (`airbnb\_count\_500m`) | readable labels (`src/latex_tables.LABELS`); dep-var row as multicolumn | presentation |31| 22 | Table 2 | no size row; no superhost/entire-home rows | interior size (N 3,699, mean 956, median 880; implausible extremes noted); superhost 0.53; entire-home 0.47 | `scripts/05` (column name `size_sqft` → `size_interior_sqft`) |32| 23 | **New Table 1** | exposure statistics in prose ("mean ≈ 8") | mean 7.92, SD 14.20, median 1, P90 30, max 84, 44.1 % zeros at 500 m (and 250 m/1 km/2 km) | `exposure_summary.tex` |33| 24 | main.tex | version 1.0, May 2026; JEL R21, R31, L83, C21 | version 1.1, October 2026; JEL + R52; keywords harmonised ("hedonic price function", "neighbourhood fixed effects"); `\theHequation` etc. (hyperref duplicate-destination warnings removed) | HARMONISATION.md |3435Unchanged numbers (verified identical after re-run): Table 4 (1a–1e), Table 9 (quantiles), Table 11 (city-level), Table 12 (ML hold-out), Table 14 (buffers), Table 16 (outliers), Table 17 columns R1–R5, leave-one-city-out range 0.0038–0.0040.3637## 2. References added (12, all verified — see REVIEW-REPORT §4 for DOIs)3839lee2016airbnb · calderwang2021distributional · conley1999gmm · kelejian2007hac · cameron2015practitioner · bishop2020best · kuminoff2014capitalization · oster2019unobservable · almagro2025location · hidalgo2024effect · fotheringham1991modifiable · cocola2021airbnb.40Corrected: garcia2020airbnb, ke2017sharing, parmeter2010applied → parmeter2007nonparametric (+ DOIs on 16 existing entries). Removed: agyeman2020airbnb (unverifiable). Total 56 → 67.4142## 3. Reanalyses executed (script · runtime on Apple Silicon · output)4344| Script | Change | Runtime | Output |45|---|---|---|---|46| `05_descriptive_analysis.py` | size row; superhost/entire-home shares; labelled correlation table; exposure summary table; log-price histogram | 2 s | `summary_stats_*.tex`, `correlation_matrix.tex`, `exposure_summary.{tex,csv}`, `figures/dist_airbnb_logprice.pdf` |47| `06_hedonic_models.py` | Model 2: (2c) without collinear regressor; (2d)–(2e) restricted sample; readable labels | 1 s | `hedonic_airbnb_pricing.tex`, `hedonic_rent_baseline.tex`, `city_level_interaction.tex` |48| `07_spatial_models.py` | projected-km KNN; SAR `robust="white"`; LeSage–Pace impacts (exact trace + 2,000-draw simulation); JSON record | 3 s | `spatial_models.tex`, `spatial_impacts.tex`, `spatial_models.json`, `buffer_robustness.tex` |49| `08_quantile_models.py` | labels; figure title without causal wording | 2 s | `quantile_regression.tex`, `figures/quantile_coefficients.pdf` |50| `09_ml_robustness.py` | random vs FSA-blocked 5-fold CV | 28 s | `ml_spatial_cv.{tex,csv}` (+ unchanged hold-out outputs) |51| `10_robustness_tables_figures.py` | exact building-type matches | 2 s | `robustness_subsamples.tex` (+ unchanged outlier table, figures) |52| `11_extended_robustness.py` | cluster count row | 2 s | `extended_robustness.tex` |53| **`12_neighbourhood_fe_inference.py` (new)** | FSA FE (F1–F6); HC1 / cluster / Conley SE comparison | ~20 s | `neighbourhood_fe.{tex,json}`, `inference_comparison.tex` |5455Steps 01–04 not re-run (raw data absent; merged parquets verified identical on 2026-08-05, `docs/AUDIT.md` §8).5657## 4. Text and structure5859- Abstract rewritten (two-layer result). §1 rewritten (identification made measurable; contributions reframed). §2: new identification/spatial-inference paragraphs; corrected magnitudes; new §2.5 title. §3: new §3.1 price caveat, exposure table, FSA description, buffer-overlap paragraph, limitations rewritten. §4: new §4.2 (FSA FE, hurdle, log), formal W, reduced form and impacts (Eq. 9), identification §4.8, standard errors §4.9. §5: new §5.2–5.4, §5.8 spatial CV; Model 2 rewritten. §6: interpretation of accumulation with radius; ring reading. §7: §7.1 rewritten; new §7.2 between/within; §7.3–7.4 toned down and updated; limitations by type; future work. §8 rewritten. Appendices: variable table (+fsa, any, ring), attrition; projection, impacts, Conley formulas; correlation table.60- Removed: duplicate figure; "available upon request"; promotional wording ("strikingly close", "remarkably stable", "compelling setting").6162## 5. Not modified for lack of data6364Room type and host identity (not scraped); nightly vs total-stay price disambiguation (no stay-length field); census-tract FE (no boundary files downloaded per protocol); panel variation; contract rents.6566## 6. Build6768`cd paper && make`: 0 errors, 0 undefined references/citations, 0 BibTeX warnings, 59 pages, 1 overfull hbox of 0.98 pt (text line), no table overfull > 10 pt. Page 1: "Working Paper No. 5", title, author, "October 2026", "Version 1.1"; page 2: Abstract, Keywords, JEL.69