# 🏠 The Endogenous Housing Liquidity Premium **UQO Working Paper No. 19** β€” *Search Frictions, Seller Urgency, and Price Discovery* [![Paper](https://img.shields.io/badge/paper-PDF%20(60%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf) [![Python](https://img.shields.io/badge/python-3.11%2B-3776AB?logo=python&logoColor=white)](requirements.txt) [![Data](https://img.shields.io/badge/data-none%20Β·%20model--generated-4051b5)](data/raw/README.md) [![Reproducible](https://img.shields.io/badge/reproducible-end--to--end%20pipeline-2e7d32)](Makefile) [![Institution](https://img.shields.io/badge/UQO-D%C3%A9pt.%20des%20sciences%20administratives-16365c)](https://uqo.ca) [![Author](https://img.shields.io/badge/author-Simon--Pierre%20Boucher-16365c)](mailto:simon-pierre.boucher@uqo.ca) > **TL;DR** β€” A continuous-time search model of a local housing market with free entry of buyers, a continuous distribution of > seller carrying costs (urgency), Nash bargaining, withdrawals, and a financing-contingency extension (cash vs mortgage buyers). > Eight propositions (urgency discount, arrival rate with an exact Pareto counterexample, free entry, liquidity shocks without > fundamentals, dispersion, sale selection in price indices with a distribution-dependent sign, the cash–mortgage gap in three > terms, posted prices) and twelve pre-registered numerical experiments. Baseline: 2.2 months on market, 5.6 % urgency discount, > 3.5 % price dispersion among identical houses; halving matching efficiency lowers prices 4.8 % and raises time on market to > 3.4 months; the composition (selection) term of the observed index is ≀ 0.15 log-% against 2–10 % within-type effects. > Theoretical paper: **no data are used**. --- ## πŸ“Œ Status | Item | Value | |---|---| | Version | 1.0 (October 2026) | | SSRN | not yet submitted | | Journal | β€” | | Code & data | fully reproducible from `config/baseline.yaml` (see Quick start); no data | ## 🎯 What this paper does The paper asks how market tightness, heterogeneous seller reservation values, financing frictions, time-on-market costs and bargaining power jointly determine an endogenous housing liquidity discount, transaction prices, sale hazards and price dispersion, and under which conditions a liquidity shock propagates when housing-service values are unchanged. Sellers of type $c$ (carrying cost) solve ``` (r+Ξ΄) V(c) = βˆ’c + Ξ΄ w0 + Ξ›_s Ξ² H(V(c)+U), H(v) = E[(wβˆ’v)^+], Ξ›_s = Ο† A ΞΈ^Ξ± ``` with free entry of buyers ($U=k$), sale hazard $Ξ·(c)=Ξ›_s[1βˆ’G(V(c)+U)]$, Nash price $p=(1βˆ’Ξ²)Vβˆ’Ξ²U+Ξ²w$, and stocks $n(c)=s f(c)/(Ξ·(c)+Ξ΄)$. The urgency discount is $D(c)=1βˆ’\bar p(c)/\bar p(c_L)$; the Walrasian free-entry price $p^*$ solves $H(p^*)=rk$. ## πŸ† Headline results | Object | Value (baseline, model-generated) | |---|---| | Tightness ΞΈ*, contact rates Ξ›_s / Ξ›_b | 4.39 buyers per listing; 8.0 / 1.8 per year | | Time on market of sales; buyer search | 2.2 months; 10.8 months | | Urgency discount, most urgent / transaction-weighted | 5.6 % / 2.0 % | | Price s.d. among identical houses; between-type share | 3.5 %; 13 % | | Halving matching efficiency (GE vs PE) | price βˆ’4.8 % vs βˆ’4.3 %; TOM 3.4 vs 3.2 months; ΞΈ 3.73 | | Entry amplification d ln Ξ›_s / d ln Ο† | 1.10 | | Transition, permanent βˆ’20 % A | price βˆ’1.46 % on impact; sales βˆ’13 % β†’ βˆ’1.4 %; inventory +13 % (half-life 1.9 months) | | Index composition term (selection) | ≀ 0.15 log-%; dampens for truncated normal/Weibull, amplifies for exponential/Pareto | | Cash–mortgage gap (extension) | 1.73 % = 0.49 (delay-bargaining) + 1.61 (outside option) βˆ’ 0.37 (selection); 1.1 % patient β†’ 3.0 % urgent | | Welfare-maximising Ξ² (flow criterion) | 0.55 (Hosios 0.50); planner gain 0.30 % | ## πŸ—‚ Repository layout ``` endogenous-housing-liquidity-premium/ (spbgit: wp19_uqo.git) β”œβ”€β”€ CLAUDE.md # research brief and execution protocol β”œβ”€β”€ config/baseline.yaml # the only input: parameters with units and justifications β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ model.py # distributions (truncnorm, exponential, Pareto, Weibull), type grid, Params β”‚ β”œβ”€β”€ solver.py # seller block, free-entry equilibrium, posted prices, financing extension, planner, transition β”‚ β”œβ”€β”€ simulation.py # the 12 pre-registered experiments β†’ results/processed, results/raw (hypothesis + env + hash) β”‚ β”œβ”€β”€ diagnostics.py # Monte Carlo cross-check, residuals, bounds β†’ results/logs/validation.json β”‚ β”œβ”€β”€ calibration.py # illustrative-parameterisation report (no data) β”‚ β”œβ”€β”€ plotting.py # 14 figures (PDF + PNG) β†’ results/figures, paper/figures β”‚ β”œβ”€β”€ tables.py # 23 LaTeX fragments + numbers.tex macros β†’ results/tables, paper/tables β”‚ └── literature.py # merges the verified literature parts, cross-checks Crossref JSON, writes references.bib β”œβ”€β”€ tests/ # 24 pytest tests (closed forms, propositions, boundary cases, equilibrium, convergence) β”œβ”€β”€ research/ # wp_style_audit, literature_matrix.csv (132 refs), literature_review, novelty_matrix, β”‚ # model_specification, proofs, validation, results_audit, limitations, progress, verification/ β”œβ”€β”€ results/{raw,processed,figures,tables,logs}/ β”œβ”€β”€ data/raw/README.md # no data └── paper/ # main.tex + sections/ + appendix/ + tables/ + figures/ + references.bib β†’ main.pdf ``` ## πŸš€ Quick start ```bash python3 -m pip install -r requirements.txt make test # pytest (24 tests, ~20 s) make simulate # 12 experiments (~6 min on an Apple-silicon laptop) make diagnostics # Monte Carlo validation (~3 min) make tables # LaTeX fragments + numbers.tex make figures # 14 figures make paper # cd paper && latexmk β†’ main.pdf ``` `python -m src.simulation --exp 3,9` runs a subset. Every result file carries the configuration hash (`0a165f317815d76c`), seed (20261020), software versions and the pre-registered hypothesis. ## πŸ—ƒ Data None. The parameterisation is illustrative (Table 1 of the paper, `config/baseline.yaml`); see `data/raw/README.md`. ## πŸ”¬ Methodology 1. Seller value by Brent's method on the strictly decreasing Ξ¦(V) (`solver.seller_value`). 2. Free-entry tightness by sign scan + Brent, multiplicity reported (`solver.solve_equilibrium`). 3. Posted prices (`solve_equilibrium_posted`), financing extension as a 3-equation root (`solve_equilibrium_financing`), planner's flow optimum (`planner_optimum`), transition by backward HJB / forward KFE / pointwise free entry (`transition`). 4. Experiments E1–E12 (`simulation.py`), Monte Carlo validation (`diagnostics.py`), figures and tables from stored CSVs only. ## πŸ–Ό Figures & tables inventory | Figure | Content | |---|---| | `fig01_equilibrium_matching` | free-entry residual and matching rates | | `fig02_urgency_reservation_price`, `fig03_urgency_sale_hazard` | urgency gradients for five arrival rates | | `fig04_liquidity_discount_vs_arrivals` | discount, price and Ξ“ sign change | | `fig05_financing_counterfactual` | cash–mortgage gap decomposition, Ο†_m and delay | | `fig06_volume_vs_price`, `fig07_tom_survival`, `fig08_seller_type_price_distributions` | comovement, survival, mixture density | | `fig09_observed_vs_latent_index` | index decomposition by G family and the h_GΒ·M sign condition | | `fig10_shock_impulse_responses` | transition paths | | `fig11_welfare_friction_contours`, `fig12_sensitivity_tornado`, `fig13_numerical_convergence`, `fig14_posted_vs_nash` | welfare, sensitivity, convergence, protocols | Tables: `tab01_parameters`, `tab02_baseline_moments`, `tab02b_baseline_types`, `tab03_comparative_statics`, `tab04a–e` (financing), `tab05`, `tab05b` (heterogeneity), `tab06`, `tab06b` (selection, dynamics), `tab07`, `tab07b–f` (robustness, convergence, entry, uniqueness), `tab08`, `tab08b` (welfare, planner), `tab09_protocols`, `numbers.tex` (macros). ## ⚠️ Limitations Theoretical, stationary, local; permanent nonnegative urgency; complete information; buyers never exit (financing extension inadmissible for Ο†_m ≀ 0.6); flow welfare criterion; unanticipated shocks with instantaneous entry; no data. See `research/limitations.md` and Section 10 of the paper. ## πŸ“– Citation ```bibtex @techreport{boucher2026liquidity, author = {Boucher, Simon-Pierre}, title = {The Endogenous Housing Liquidity Premium: Search Frictions, Seller Urgency, and Price Discovery}, institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives}, type = {UQO Working Paper}, number = {19}, year = {2026}, month = {October} } ``` ## πŸ‘€ Author & contact Simon-Pierre Boucher β€” simon-pierre.boucher@uqo.ca β€” DΓ©partement des sciences administratives, UniversitΓ© du QuΓ©bec en Outaouais. ## πŸ“ Notes - Deviations from the series standard: theoretical paper (no Data section; a numerical-solution section instead); extended amsthm environments; `src/*.py` + `Makefile` + `config/` instead of numbered `scripts/`; `research/` directory kept in git. - Pushed to spbgit `wp19_uqo.git` on 2026-10-20 (`origin`, branch `main`). - Process record: `research/progress.md`; novelty audit: `research/novelty_matrix.csv`; claim audit: `research/results_audit.md`.