# 🏠 Airbnb, Residential Rents & Housing Market Pressure ### *A Hedonic and Spatial Econometric Analysis* **UQO Working Paper No. 5**
[![Author](https://img.shields.io/badge/Author-Simon--Pierre%20Boucher-1f6feb?style=for-the-badge)](mailto:contact@spboucher.ai) [![Institution](https://img.shields.io/badge/UQO-Sciences%20administratives-00457C?style=for-the-badge)](https://uqo.ca) [![Contact](https://img.shields.io/badge/βœ‰οΈ-contact%40spboucher.ai-EA4335?style=for-the-badge)](mailto:contact@spboucher.ai)
**β€” The paper at a glance β€”** [![PDF](https://img.shields.io/badge/πŸ“„_PDF-51_pages-success?style=flat-square)](paper/main.pdf) [![References](https://img.shields.io/badge/πŸ“š_References-56_(all_DOI--verified)-blueviolet?style=flat-square)]() [![Sample](https://img.shields.io/badge/🏘️_Sample-8,303_rentals_Β·_3,456_Airbnb-informational?style=flat-square)]() [![Headline](https://img.shields.io/badge/Ξ²-%2B0.4%25_rent_per_listing_(500m)-e63946?style=flat-square)]() [![Tables](https://img.shields.io/badge/πŸ“Š-13_tables-teal?style=flat-square)]() [![Figures](https://img.shields.io/badge/πŸ“ˆ-16_figures-teal?style=flat-square)]() [![Build](https://img.shields.io/badge/latexmk-0_unresolved_refs-brightgreen?style=flat-square)]() **β€” Methods β€”** [![OLS](https://img.shields.io/badge/Hedonic-OLS_Β·_HC1_Β·_city_FE-orange?style=flat-square)]() [![Spatial](https://img.shields.io/badge/Spatial-SAR_Β·_SEM_Β·_GMM_(spreg)-8A2BE2?style=flat-square)]() [![Quantile](https://img.shields.io/badge/Quantile-Ο„_∈_{.10….90}-c44536?style=flat-square)]() [![ML](https://img.shields.io/badge/ML-LASSO_Β·_ENet_Β·_RF_Β·_GBM_Β·_SHAP-F7931E?style=flat-square)]() [![Geo](https://img.shields.io/badge/Geospatial-Haversine_buffers_250mβ†’2km-2a9d8f?style=flat-square)]() **β€” Stack β€”** [![Python](https://img.shields.io/badge/Python-3.14-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/) [![pandas](https://img.shields.io/badge/pandas-3.0.2-150458?style=flat-square&logo=pandas&logoColor=white)](https://pandas.pydata.org/) [![statsmodels](https://img.shields.io/badge/statsmodels-0.14.6-4051B5?style=flat-square)](https://www.statsmodels.org/) [![scikit-learn](https://img.shields.io/badge/scikit--learn-1.6.1-F7931E?style=flat-square&logo=scikitlearn&logoColor=white)](https://scikit-learn.org/) [![PySAL](https://img.shields.io/badge/PySAL%2Fspreg-1.9.0-8A2BE2?style=flat-square)](https://pysal.org/) [![SHAP](https://img.shields.io/badge/SHAP-0.48.0-FF4081?style=flat-square)](https://shap.readthedocs.io/) [![LaTeX](https://img.shields.io/badge/LaTeX-latexmk-008080?style=flat-square&logo=latex&logoColor=white)](https://www.latex-project.org/) **β€” Quality β€”** [![Reproducible](https://img.shields.io/badge/pipeline-100%25_reproducible-brightgreen?style=flat-square)]() [![Verified](https://img.shields.io/badge/tables-14%2F16_byte--identical_to_originals-brightgreen?style=flat-square)]() [![Deterministic](https://img.shields.io/badge/seed-42_Β·_deterministic-lightgrey?style=flat-square)]() [![Status](https://img.shields.io/badge/status-working_paper_v1.0-blue?style=flat-square)]()
--- ## 🧭 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* > > [![Read](https://img.shields.io/badge/β–Ά_READ_THE_PAPER-paper%2Fmain.pdf-b31b1b?style=for-the-badge)](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
[![F1](https://img.shields.io/badge/1-%2B0.4%25_rent_per_Airbnb_listing_within_500m-e63946?style=for-the-badge)]() [![F2](https://img.shields.io/badge/2-Spatial_decay:_0.93%25_β†’_0.06%25_(250m_β†’_2km)-f4a261?style=for-the-badge)]() [![F3](https://img.shields.io/badge/3-Strongest_at_the_top:_Ξ²(Ο„=.90)=0.0047-e9c46a?style=for-the-badge)]() [![F4](https://img.shields.io/badge/4-Survives_SAR%2FSEM_(ρ̂=0.137***)-2a9d8f?style=for-the-badge)]() [![F5](https://img.shields.io/badge/5-No_city--rent_premium_in_nightly_prices-264653?style=for-the-badge)]() [![F6](https://img.shields.io/badge/6-Stable_in_leave--one--city--out_(incl._Montreal)-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
[![Airbnb](https://img.shields.io/badge/Airbnb-3,456_cleaned_listings-FF5A5F?style=flat-square&logo=airbnb&logoColor=white)]() [![Realtor](https://img.shields.io/badge/Realtor.ca-8,303_cleaned_rentals-006AFF?style=flat-square)]() [![Merge](https://img.shields.io/badge/Spatial_merge-24_exposure_variables-2a9d8f?style=flat-square)]() [![Coverage](https://img.shields.io/badge/Coverage-Province_of_Quebec-1d3557?style=flat-square)]()
| 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
[![R1](https://img.shields.io/badge/β˜‘-4_buffer_radii-2a9d8f?style=flat-square)]() [![R2](https://img.shields.io/badge/β˜‘-alternative_exposures-2a9d8f?style=flat-square)]() [![R3](https://img.shields.io/badge/β˜‘-4_subsamples-2a9d8f?style=flat-square)]() [![R4](https://img.shields.io/badge/β˜‘-outlier_trims-2a9d8f?style=flat-square)]() [![R5](https://img.shields.io/badge/β˜‘-city--clustered_SEs-2a9d8f?style=flat-square)]() [![R6](https://img.shields.io/badge/β˜‘-size_control-2a9d8f?style=flat-square)]() [![R7](https://img.shields.io/badge/β˜‘-log(1%2Bcount)-2a9d8f?style=flat-square)]() [![R8](https://img.shields.io/badge/β˜‘-ring_decomposition-2a9d8f?style=flat-square)]() [![R9](https://img.shields.io/badge/β˜‘-leave--one--city--out-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 [![Email](https://img.shields.io/badge/βœ‰οΈ_contact@spboucher.ai-primary-EA4335?style=for-the-badge)](mailto:contact@spboucher.ai) [![UQO](https://img.shields.io/badge/πŸ›οΈ_simon--pierre.boucher@uqo.ca-00457C?style=for-the-badge)](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.