# π Airbnb, Residential Rents & Housing Market Pressure
### *A Hedonic and Spatial Econometric Analysis*
**UQO Working Paper No. 5**
[](mailto:contact@spboucher.ai)
[](https://uqo.ca)
[](mailto:contact@spboucher.ai)
**β The paper at a glance β**
[](paper/main.pdf)
[-blueviolet?style=flat-square)]()
[]()
[-e63946?style=flat-square)]()
[]()
[]()
[]()
**β Methods β**
[]()
[-8A2BE2?style=flat-square)]()
[]()
[]()
[]()
**β Stack β**
[](https://www.python.org/)
[](https://pandas.pydata.org/)
[](https://www.statsmodels.org/)
[](https://scikit-learn.org/)
[](https://pysal.org/)
[](https://shap.readthedocs.io/)
[](https://www.latex-project.org/)
**β Quality β**
[]()
[]()
[]()
[]()
---
## π§ Navigation
| | | |
|---|---|---|
| [π The Paper](#-the-paper) | [π Abstract](#-abstract) | [π Inside the Paper](#-inside-the-paper--section-by-section) |
| [π Headline Results](#-headline-results) | [π Repository Map](#-repository-map) | [πΎ Data](#-data) |
| [βοΈ Pipeline](#οΈ-analysis-pipeline) | [π Models](#-econometric-models) | [π‘οΈ Robustness](#οΈ-robustness-programme) |
| [π Reproduce](#-reproducing-everything) | [π§° Environment](#-environment--dependencies) | [β
Provenance](#-verification--provenance) |
| [π Citation](#-citation) | [π¬ Contact](#-contact) | |
---
## π The Paper
> ### **Airbnb, Residential Rents, and Housing Market Pressure:**
> ### **A Hedonic and Spatial Econometric Analysis**
>
> **Simon-Pierre Boucher** β UniversitΓ© du QuΓ©bec en Outaouais
> *UQO Working Paper No. 5 Β· May 2026 Β· 51 pages Β· 56 references*
>
> [](paper/main.pdf)
## π Abstract
> This paper investigates the relationship between **Airbnb short-term rental activity** and **residential rents** in Quebec, Canada. Using cross-sectional microdata comprising ~5,000 Airbnb listings and ~8,300 rental listings, we employ a **hedonic pricing framework** augmented with **spatial econometric techniques** to quantify the conditional association between nearby Airbnb presence and monthly rents. For each rental listing we construct Airbnb exposure measures within **250 m, 500 m, 1 km, and 2 km buffers** using Haversine distances. Baseline estimates indicate that an additional Airbnb listing within 500 m is associated with a statistically significant increase in monthly rent of approximately **0.3β0.5%**, controlling for dwelling characteristics, building type, and city fixed effects. **Quantile regressions** reveal that the association is stronger at the upper tail of the rent distribution. A complementary hedonic model of Airbnb nightly prices indicates that short-term rental pricing is driven primarily by listing characteristics. Robustness checks β alternative buffer radii, subsample analyses, and machine-learning benchmarks β confirm the stability of the rentβexposure association. We discuss policy implications for housing affordability and short-term rental regulation, while cautioning that **cross-sectional associations should not be interpreted as causal effects**.
>
> **Keywords:** Airbnb Β· short-term rentals Β· housing rents Β· hedonic pricing Β· spatial econometrics Β· housing affordability Β· Quebec
> **JEL:** R21 Β· R31 Β· L83 Β· C21
---
## π Inside the Paper β Section by Section
| Β§ | Section | What it delivers | Key exhibits |
|:-:|---|---|---|
| **1** | π¬ **Introduction** | Motivation, the P2P-platform housing channel, the Canadian evidence gap, magnitude preview vs. Berlin/LA quasi-experiments, three contributions | β |
| **2** | π **Literature Review** | 10 thematic subsections: correlational β quasi-experimental STR evidence, Canadian & Quebec studies, P2P economics, STR pricing, hedonic theory, spatial econometrics, quantile methods, ML in housing, tourism gentrification & regulation, gap statement | 56 refs |
| **3** | πΎ **Data** | Two scraped microdatasets, cleaning protocol, **Haversine spatial buffer merge** (6 exposure metrics Γ 4 radii), summary statistics, geography | Tables 1β2 Β· Figures 1β3 |
| **4** | π **Methodology** | Six models: hedonic rent (1aβ1e), Airbnb pricing (2aβ2c), city-level (3), SAR/SEM via KelejianβPrucha GMM (4), quantile (5), ML benchmark (6); identification & endogeneity discussion | Equations 1β6 |
| **5** | π **Results** | Ξ² = 0.0039*** per nearby listing; spatial dependence (ΟΜ = 0.137***, Ξ»Μ = 0.539); quantile gradient .0037β.0047; superhost *discount*; RF test RΒ² = 0.71 | Tables 3β9 Β· Figures 4β7 |
| **6** | π‘οΈ **Robustness** | Buffer decay, alternative exposures, subsamples, trimming, **city-clustered SEs**, size control, log form, **ring decomposition**, **leave-one-city-out** | Tables 10β12 Β· Figures 8β10 |
| **7** | π¬ **Discussion** | Magnitudes benchmarked against Berlin ($6β10 β 7β13 β¬/listing), LA & Boston; two candid disagreements with the literature; policy for CITQ/Montreal zoning; 7 limitations; future work | β |
| **8** | π― **Conclusion** | Five findings, cross-design corroboration, no overselling | β |
| **AβC** | π **Appendices** | Variable dictionary, city-name standardisation, sample attrition Β· Haversine & KNN-weights formulas, estimator details Β· supplementary robustness | Tables A1βA2 |
---
## π Headline Results
[]()
[-f4a261?style=for-the-badge)]()
[=0.0047-e9c46a?style=for-the-badge)]()
[-2a9d8f?style=for-the-badge)]()
[]()
[-6d597a?style=for-the-badge)]()
| # | Finding | Evidence |
|:-:|---|---|
| 1 | Each additional Airbnb listing within **500 m** β **β +0.4%** monthly rent (0.3β0.5% across specs) β β **$6β10/month** at the median rent, the same order as Berlin's quasi-experimental 7β13 β¬/listing | Table 3 (1c) Β· Β§7.1 |
| 2 | Per-listing association **decays monotonically with distance** | Table 10 Β· Fig. 4 |
| 3 | Significant at **every quantile**, rising to **0.0047 at Ο = 0.90** (~25% above OLS) | Table 7 Β· Fig. 5 |
| 4 | **Spatial dependence is substantial** and the coefficient survives GMM spatial models with mild attenuation (0.0034) | Table 6 |
| 5 | Airbnb nightly prices driven by **listing characteristics**; superhost enters with a *discount* (vs. premia in prior work β discussed, not hidden) | Table 4 Β· Β§7.1 |
| 6 | Robust to **city-clustered SEs** (tighter than HC1), size control, log(1+count), ring decomposition, trimming, and dropping any of the 8 largest cities | Table 12 Β· Fig. 9 |
---
## π Repository Map
```
wp5_uqo/
βββ π README.md β you are here
βββ π AUDIT.md β forensic audit of the original project
βββ π CHANGES.md β restructuring & rewrite log
βββ π§ͺ PAPER_REVIEW.md β pre-upgrade critical assessment
βββ π UPGRADE_REPORT.md β literature expansion report (per-ref justification)
βββ π¦ requirements.txt β pinned dependencies
β
βββ data/
β βββ raw/ β airbnb.csv + rent.json (NOT distributed β README)
β βββ processed/ β 5 verified parquet datasets (committed)
β
βββ src/ β shared modules
β βββ config.py β all paths & constants
β βββ geo.py β vectorised Haversine matrix
β βββ latex_tables.py β stargazer-style table builder
β βββ plotting.py β publication matplotlib styles
β
βββ scripts/ β 01 β 11 numbered pipeline
βββ figures/ β 16 publication PDF figures
βββ results/tables/ β 13 LaTeX fragments + 4 CSVs
βββ results/logs/ β data-inspection log
β
βββ paper/ β LaTeX β π main.pdf (51 pages)
βββ main.tex Β· references.bib (56 entries) Β· Makefile
βββ sections/ (titlepage + 8 sections)
βββ appendix/ (data Β· methods Β· robustness)
```
---
## πΎ Data
[]()
[]()
[]()
[]()
| Dataset | Source | Raw β Clean | Key fields |
|---|---|---|---|
| ποΈ Airbnb listings | Airbnb (scraped) | ~5,000 β **3,456** | nightly price, lat/lon, property type, rating, reviews, superhost |
| π’ Rental listings | Realtor.ca (scraped) | 8,356 β **8,303** | monthly rent, lat/lon, bedrooms, bathrooms, building type, size |
**Spatial merge** β for every rental listing Γ radius *r* β {250 m, 500 m, 1 km, 2 km}, six metrics computed against all Airbnb listings via chunked vectorised Haversine distances: `count` Β· `density` Β· `mean_price` Β· `share_entire_home` Β· `mean_rating` Β· `superhost_share`, plus city-level aggregates.
> π Raw files are **not distributed** (`data/raw/README.md`). The committed parquets make steps 04β11 and the paper fully reproducible without them.
---
## βοΈ Analysis Pipeline
| Step | Script | Produces | β± |
|:-:|---|---|:-:|
| 01 | `01_inspect_raw_data.py` | data dictionary log | β‘ |
| 02 | `02_clean_airbnb.py` | `airbnb_clean.parquet` | β‘ |
| 03 | `03_clean_rent.py` | `rent_clean.parquet` | β‘ |
| 04 | `04_merge_data.py` | 3 merged parquets (buffer merge) | ~1 min |
| 05 | `05_descriptive_analysis.py` | 3 tables + 7 figures | β‘ |
| 06 | `06_hedonic_models.py` | Models 1β3 β 3 tables | β‘ |
| 07 | `07_spatial_models.py` | SAR/SEM + buffer robustness | ~1 min |
| 08 | `08_quantile_models.py` | quantile table + coefficient path | ~1 min |
| 09 | `09_ml_robustness.py` | ML comparison + SHAP figures | ~2 min |
| 10 | `10_robustness_tables_figures.py` | outlier/subsample tables + 3 figures | β‘ |
| 11 | `11_extended_robustness.py` | clustered SEs Β· ring Β· leave-one-out | ~1 min |
β‘ = under 15 s on Apple Silicon. Everything reads/writes through `src/config.py`; fully deterministic (seed 42).
---
## π Econometric Models
| Model | Specification | Estimator |
|:-:|---|---|
| **1aβ1e** | `log_rent ~ airbnb_count_500m + X + building type [+ city FE]`; variants: density, entire-home share | OLS Β· HC1 |
| **2aβ2c** | `log_price ~ mean_rent_city + listing controls [+ city FE]` | OLS Β· HC1 |
| **3** | city-level forward & reverse regressions (153 cities) | OLS Β· HC1 |
| **4** | SAR & SEM, KNN(k=5) row-standardised weights | GMM β `GM_Lag` / `GM_Error` (KelejianβPrucha) |
| **5** | quantile regressions, Ο β {.10, .25, .50, .75, .90} + fine grid | IRLS (statsmodels) |
| **6** | OLS / LASSO / ENet / RF / GBM, 80/20 split, SHAP attribution | scikit-learn |
---
## π‘οΈ Robustness Programme
[]()
[]()
[]()
[]()
[]()
[]()
[-2a9d8f?style=flat-square)]()
[]()
[]()
The Airbnb coefficient stays **positive and significant at 1%** in every single check; the leave-one-city-out range is 0.0038β0.0040 β excluding Montreal (half the sample) barely moves it.
---
## π Reproducing Everything
```bash
git clone https://github.com/spboucher-ai/wp5_uqo.git && cd wp5_uqo
python3 -m pip install -r requirements.txt
# full pipeline (steps 01β03 optional: need data/raw/)
for s in scripts/0{4..9}_*.py scripts/1{0,1}_*.py; do python3 "$s"; done
cd paper && latexmk # β paper/main.pdf (51 pages)
```
---
## π§° Environment & Dependencies
Verified on **macOS (Apple Silicon) Β· Python 3.14.4 Β· TeX Live 2025**.
| Package | Pinned | Role |
|---|:-:|---|
| pandas / pyarrow | 3.0.2 / 24.0.0 | wrangling, parquet I/O |
| numpy / scipy | 2.4.4 / 1.17.1 | Haversine, KD-tree |
| statsmodels | 0.14.6 | OLS (HC1/cluster), quantile regression |
| libpysal / spreg | 4.14.1 / 1.9.0 | KNN weights, SAR/SEM (GMM) |
| scikit-learn | 1.6.1 | LASSO, ENet, RF, GBM |
| shap | 0.48.0 | SHAP values |
| matplotlib | 3.10.9 | all figures |
---
## β
Verification & Provenance
Rebuilt on **2026-08-05** from the original project (kept untouched as backup) under a strict *no-result-changes* policy:
- β
3/3 merged parquets **value-identical** to the originals
- β
**14/16 tables byte-identical** (2 residual float-level diffs documented in [`AUDIT.md`](AUDIT.md) Β§8)
- β
All figures regenerated, including 5 missing from the original (which broke its LaTeX build)
- β
Every textβtable inconsistency corrected *in the prose only* β itemised in [`CHANGES.md`](CHANGES.md)
- β
All 32 references added in the scholarly upgrade **verified via Crossref/JMLR** (DOIs) β per-reference justification in [`UPGRADE_REPORT.md`](UPGRADE_REPORT.md)
---
## π Citation
```bibtex
@techreport{boucher2026airbnb,
author = {Boucher, Simon-Pierre},
title = {Airbnb, Residential Rents, and Housing Market Pressure:
A Hedonic and Spatial Econometric Analysis},
institution = {Universit\'e du Qu\'ebec en Outaouais,
D\'epartement des sciences administratives},
type = {Working Paper},
number = {5},
year = {2026},
month = {May},
address = {Gatineau, QC, Canada}
}
```
---
## π¬ Contact
**Simon-Pierre Boucher**
DΓ©partement des sciences administratives Β· UniversitΓ© du QuΓ©bec en Outaouais
283, boulevard Alexandre-TachΓ©, Gatineau (QuΓ©bec) J9A 1L8, Canada
[](mailto:contact@spboucher.ai)
[](mailto:simon-pierre.boucher@uqo.ca)
Issues and PRs welcome β please do not request the raw scraped data, which cannot be redistributed.
Β© 2026 Simon-Pierre Boucher β UQO Working Paper No. 5 Β· Code and manuscript for academic use.