SPB Git

spb/wp5_uqo

Public

UQO Working Paper No. 5 — Airbnb, residential rents and housing market pressure.

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

History
NameLast commitUpdated
data Initial commit: restructured UQO WP5 (Airbnb & residential rents)
docs révision scientifique complète (editorial board, 2026-10-17)
figures révision scientifique complète (editorial board, 2026-10-17)
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 révision scientifique complète (editorial board, 2026-10-17)
.gitignore harmonisation standard UQO WP (2026-10-17)
README.md révision scientifique complète (editorial board, 2026-10-17)
requirements.txt Initial commit: restructured UQO WP5 (Airbnb & residential rents)
README.md source

# 🏠 Airbnb, Residential Rents, and Housing Market Pressure

UQO Working Paper No. 5 — A Hedonic and Spatial Econometric Analysis

Paper Python Data Estimation Reproducible Institution Author

TL;DR — Using a 2026 cross-section of 3,456 Airbnb listings and 8,303 residential rental listings in Quebec, the paper measures the conditional association between nearby short-term-rental activity and monthly asking rents. With city fixed effects, each additional Airbnb listing within 500 m is associated with ≈ +0.4 % rent (0.3–0.5 % across specifications), decaying per listing with distance, larger at the top of the rent distribution, and unchanged in SAR/SEM models (total impact 0.40 %). Two results qualify this: Conley and FSA-clustered standard errors are ≈ 3× the HC1 errors (t from 17 to ≈ 5.5), and with postal-code-neighbourhood (FSA) fixed effects the coefficient falls to 0.08 % and is not distinguishable from zero under spatial inference. The association is predominantly between neighbourhoods — consistent with STR supply sorting into high-rent neighbourhoods, not with a within-neighbourhood causal effect. Spatially blocked cross-validation erases the apparent advantage of tree-based ML models. Cross-sectional associations, not causal effects.


# 📌 Status

Item Value
Version 1.1 (October 2026) — revised 2026-10-17 by the editorial-board review (docs/REVIEW-REPORT.md, docs/CHANGELOG-REVISION.md); v1.0 May 2026, cover page harmonised October 2026
SSRN Abstract ID 7626658 (preliminary upload 2026-10-17; v1.1 to be uploaded)
Journal not yet submitted
Code & data steps 04–12 and the paper fully reproducible from the committed parquets (< 1 min total); raw scraped files not redistributed

# 🎯 What this paper does

Peer-to-peer platforms can divert dwellings from the long-term rental stock and raise rents nearby. Quasi-experimental evidence exists for Berlin, Los Angeles, Barcelona or Boston, but Canadian evidence is descriptive. For every rental listing the paper builds Airbnb exposure measures within 250 m, 500 m, 1 km and 2 km buffers (Haversine distances) — count, density, mean nightly price, entire-home share — and estimates

text
log(rent_i) = α + β · airbnb_count_500m_i + X_i'γ + building-type + city FE + ε_i      (Model 1c)
log(rent_i) = α + β^F · airbnb_count_500m_i + X_i'γ + building-type + FSA FE + ε_i     (Model F2)

with HC1, city-clustered, FSA-clustered and Conley spatial HAC standard errors (1–10 km cutoffs); SAR/SEM models by Kelejian–Prucha GMM with LeSage–Pace direct/indirect/total impacts; quantile regressions; a hedonic model of Airbnb nightly prices (full sample and plausibly priced subsample); city-level regressions; and an ML benchmark evaluated under random and spatially blocked (FSA) cross-validation. The discussion benchmarks magnitudes against the quasi-experimental literature in standardised terms and draws implications for Quebec's registration regime and Montreal's zoning rules.

# 🏆 Headline results

# Finding Evidence
1 City FE: each additional Airbnb listing within 500 m ⇒ ≈ +0.4 % rent (β = 0.0039; 1 SD of exposure ≈ +5.5 %) Table 4 (1c) · §5.1
2 FSA (neighbourhood) FE: β falls to 0.0008; 0.0003 with size control; log(1+count) and 250 m count insignificant; any Airbnb nearby ⇒ −2.8 % within FSA Table 5 · §5.2
3 Spatial inference: Conley / FSA-cluster SE = 0.0007 vs HC1 0.0002 (t 17 → 5–6 with city FE; 2.3 → 1.1–2.0 with FSA FE); city-clustering (Montreal = 59 % of sample) unreliable Table 6 · §5.3
4 Spatial dependence: ρ̂ = 0.134***, λ̂ = 0.544; SAR total impact 0.0040 (direct 0.0034, indirect 0.0005) = OLS Tables 7–8 · §5.4
5 Per-listing coefficient decays with radius (0.93 % at 250 m → 0.06 % at 2 km) while the mean-exposure association accumulates (2.2 % → 5.0 %); quantiles 0.0034–0.0047, rising at τ = 0.90 Tables 9, 14 · Figs 5, 8
6 Spatially blocked CV: RF/GBM R² 0.65 (random folds) → 0.43/0.41 (FSA folds), below OLS (0.47) — the ML advantage is neighbourhood interpolation Table 13 · §5.8
7 Airbnb price field is bimodal (26.5 % of listings > $1,000 "per night"); on the plausibly priced subsample the superhost "discount" disappears and the usual entire-home/size premia reappear; no city-rent premium (θ ≈ 0) Table 10 · Fig. 4 · §3.1, §5.6
8 City-FE estimate robust to clustering, size control, log form, ring decomposition, trimming, leave-one-city-out (0.0038–0.0040) Tables 15–17 · Figs 9–10

# 🗂 Repository layout

text
wp5_uqo/
├── README.md
├── requirements.txt                # pinned dependencies
├── docs/                           # REVIEW-REPORT.md · CHANGELOG-REVISION.md (2026-10-17) · AUDIT.md · CHANGES.md ·
│                                   # PAPER_REVIEW.md · UPGRADE_REPORT.md (2026-08-05) · main_pre-revision-20261017.pdf
├── data/
│   ├── raw/                        # airbnb.csv + rent.json — NOT distributed (see data/raw/README.md)
│   └── processed/                  # 5 verified parquet datasets (committed)
├── src/
│   ├── config.py                   # all paths & constants
│   ├── geo.py                      # vectorised Haversine matrix
│   ├── latex_tables.py             # table builder + readable variable labels
│   └── plotting.py                 # publication matplotlib styles
├── scripts/                        # 01 → 12 numbered pipeline
├── figures/                        # 17 publication PDF figures
├── results/tables/                 # 18 LaTeX fragments + CSV/JSON records
├── results/logs/                   # data-inspection log · pipeline run log
└── paper/                          # main.tex + sections/ + appendix/ + references.bib → main.pdf

# 🚀 Quick start

bash
python3 -m pip install -r requirements.txt

# steps 01–03 need data/raw/ (not distributed); steps 04–12 run from the committed parquets
for s in scripts/0{4..9}_*.py scripts/1{0,1,2}_*.py; do python3 "$s"; done

cd paper && make                    # latexmk → main.pdf (59 pages)
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 4 tables (incl. exposure summary, correlation) + 8 figures ⚡
06 06_hedonic_models.py Models 1–3 → 3 tables (Model 2 with restricted-sample columns) ⚡
07 07_spatial_models.py SAR/SEM (projected-coordinate KNN) + LeSage–Pace impacts + buffer robustness ⚡
08 08_quantile_models.py quantile table + coefficient path ⚡
09 09_ml_robustness.py ML comparison + SHAP figures + random vs FSA-blocked CV ~30 s
10 10_robustness_tables_figures.py outlier/subsample tables + 3 figures ⚡
11 11_extended_robustness.py clustered SEs · size · log form · ring · leave-one-out ⚡
12 12_neighbourhood_fe_inference.py FSA fixed effects · Conley / cluster SE comparison ~20 s

⚡ = under 5 s on Apple Silicon. Fully deterministic (seed 42).

# 🗃 Data

Dataset Source Raw → Clean Key fields
Airbnb listings Airbnb (scraped, early 2026) 5,000 → 3,456 (price missing for 30.9 %) displayed price (bimodal, see §3.1), lat/lon, property type, rating, reviews, superhost, capacity, amenities
Rental listings Realtor.ca (scraped 2026-01-08) 8,356 → 8,303 monthly asking rent, lat/lon, bedrooms, bathrooms, building type, size, postal code → FSA

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, plus city-level aggregates. 333 FSAs (289 non-singleton), 253 municipalities (Montreal 59 %). Raw files are not distributed (data/raw/README.md); the committed parquets make steps 04–12 and the paper reproducible.

# 🔬 Methodology

  1. Hedonic rent models 1a–1e — OLS, HC1 SE, building-type and city fixed effects; density and entire-home share variants (scripts/06).
  2. Neighbourhood (FSA) fixed effects F1–F6 — within transformation, 250 m / 500 m counts, extensive + intensive margin, log(1+count), size (scripts/12).
  3. Inference — HC1, cluster-city, cluster-FSA, Conley spatial HAC (Bartlett kernel, 1/2/5/10 km) (scripts/12).
  4. Spatial models — SAR (GM_Lag, White SE) and SEM (GM_Error), KNN k = 5 on projected km coordinates; LeSage–Pace direct/indirect/total impacts with simulated SEs (scripts/07).
  5. Quantile regressions — τ ∈ {0.10, 0.25, 0.50, 0.75, 0.90} plus a fine grid (scripts/08).
  6. Airbnb pricing models 2a–2e — log nightly price on city mean log rent and listing controls; city FE absorb the city rent; restricted sample ≤ $1,000 (scripts/06).
  7. Machine-learning benchmark — OLS / LASSO / Elastic Net / RF / GBM, 80/20 split, SHAP, random vs FSA-blocked 5-fold CV (scripts/09).
  8. Robustness — buffer radii, alternative exposures, subsamples, trimming, city-clustered SEs, size, log(1+count), ring decomposition, leave-one-city-out (scripts/07, 10, 11).

# 🖼 Figures & tables inventory

Figure Content
map_airbnb, map_rent Spatial distribution of the two samples
dist_airbnb_price, dist_airbnb_logprice, dist_rent Price and rent distributions (log-scale figure documents the bimodal price field)
airbnb_by_city, rent_by_city City-level profiles (generated, not in the paper)
scatter_airbnb_rent, rent_by_airbnb_bins, rent_airbnb_heatmap Exposure–rent relationships (generated, not in the paper)
coefficient_buffer_comparison β across buffer radii (spatial decay)
quantile_coefficients β(τ) path
ml_predicted_vs_actual, feature_importance, shap_summary ML benchmark and attribution
coefficient_robustness, leave_one_city_out Robustness programme

Tables (results/tables/*.tex, 18 fragments): exposure summary, summary statistics (2), hedonic rent models, neighbourhood FE, inference comparison, spatial models, spatial impacts, quantile regressions, Airbnb pricing, city-level regressions, ML comparison, random vs spatial CV, buffer robustness, subsample and trimming checks, extended robustness, correlation matrix. JSON records: spatial_models.json, neighbourhood_fe.json.

# ⚠️ Limitations

  • Cross-sectional listing data (asking rents and displayed nightly prices), no panel or quasi-experimental variation: estimates are conditional associations; the city-FE estimate is an upper bound on any causal within-neighbourhood effect.
  • The Airbnb price field partly records total-stay prices (second mode above $1,000): the full-sample pricing model is unreliable; the count-based rent results are unaffected.
  • No room type or host identifiers (entire-home status is a property-type proxy; commercial operation unmeasured).
  • Scraped winter samples are not census-complete; Realtor.ca over-represents agent-listed, higher-priced units; coverage concentrated in Montreal.
  • Quantile regressions use coarse city groups and non-spatial SEs; quantile and spatial models with FSA FE not estimated.

# 📝 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       = {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

  • Revision 2026-10-17 (v1.1): full scientific review by the editorial-board protocol (Recherche-UQO/REVISION-MASTER-PROMPT.md). Report: docs/REVIEW-REPORT.md; audit trail of every change (old → new numbers, reasons, evidence): docs/CHANGELOG-REVISION.md. Pre-revision PDF: docs/main_pre-revision-20261017.pdf (git tag pre-revision-20261017). Headline interpretation changed: the Airbnb–rent association is predominantly between neighbourhoods (FSA FE, Conley SE); Model 2 superhost "discount" and the Berlin/LA magnitude comparisons of v1.0 were corrected.
  • Format follows Recherche-UQO/HARMONISATION.md (2026-10-17): template title page, natbib + aer bibliography style, docs/ for reports.
  • The original flat May 2026 project (immo-wp5-spb-20260519) is archived in Recherche-UQO/_archives/versions-mai-2026/airbnb-rents-housing-pressure--immo-wp5-20260519/; docs/AUDIT.md §8 and docs/CHANGES.md document the 2026-08-05 rebuild.
  • Build verified 2026-10-17: 0 errors, 0 undefined references, 67 references rendered (all DOI/Crossref-verified).

Clone wp5_uqo

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

ZIP tar.gz snapshot of main
Files · main
Menu

Theme