# The Hidden Dynamics of Used-Car Markets: Price Discovery, Inventory Liquidity, and Strategic Dealer Behavior **UQO Working Paper No. 36** — *Evidence from a Daily Panel of 273,265 Quebec Listings* ![Paper](https://img.shields.io/badge/paper-PDF-NavyBlue) ![Python](https://img.shields.io/badge/Python-3.12-3776ab) ![Data](https://img.shields.io/badge/data-Auto--Ka%20snapshot%202026--11--01-ff5a2a) ![Reproducible](https://img.shields.io/badge/reproducible-make%20all-green) ![UQO](https://img.shields.io/badge/UQO-DSA-blue) ![Author](https://img.shields.io/badge/author-S.--P.%20Boucher-lightgrey) ## TL;DR - Daily panel of every used-vehicle listing on 131 Quebec dealer websites, 2 full-inventory portals and 5 dealer groups, 12 Aug–1 Nov 2026 (273,265 listings, 428,484 price-log rows, 586 crawl cycles), from the aggregator Auto-Ka. - Depreciation of asking prices is strongly nonlinear in age and mileage (H1 supported); regional quality-adjusted premia are a precisely estimated null (joint p = 0.53). - 20 % of listings get a sustained markdown (median 2.8 %); the markdown hazard rises over three weeks; overpriced vehicles are cut sooner and more deeply. - Competitor price cuts co-move the same day (+0.9 pp vs a 1.4 % base rate) with no lagged response; placebo null — association, not causation. - Listing exit ≠ sale: 94 % of exits coincide across two sources within a week, but ≥ 10 % are followed by a relisting. - A five-component Automobile Market Liquidity Index (AMLI) explains 56 % of common variation and its non-exit components predict next-week exits; deep markdowns load as illiquidity. No external forecasting claim. ## Status Version 1.0, November 2026. Not yet submitted (SSRN: not yet submitted). Preregistered plan: `research/analysis_plan.md` (amendments in `DECISIONS.md`). ## What this paper does Audits an aggregator database, builds a reproducible listing-day panel with auditable exclusions, estimates hedonic, hazard, event-study and prediction models under a preregistered plan, validates listing exit as a sale proxy, and constructs and internally validates a market-level liquidity index. ## Headline results | Hypothesis | Result | Evidence | |---|---|---| | H1 nonlinear depreciation | Supported (χ²(12)=664; CV RMSE −2.8 %) | `results/hedonic/` | | H2 markdown hazard ↑ listing age | Supported (χ²(8)=170); competition/relative-price effects significant in Cox, imprecise in cloglog | `results/hazards/` | | H3 competitor response | Same-day co-movement only; no lagged response; placebo null | `results/competition/` | | H4 regional premia | Null (p = 0.53; all |premia| < 4 %) | `results/hedonic/region_premia_A4.csv` | | H5 relative price → exit | Not supported (p = 0.42/0.54); exit validated across sources (94 % within 7 d) | `results/hazards/`, `results/validation/` | | H6 AMLI | PCA 56 %; held-out slope 0.97 pp [0.69, 1.24]; no external test possible | `results/amli/` | ## Repository layout ``` paper/ main.tex, sections/, appendix/, tables/, figures/, references.bib, main.pdf src/ucml/ ingest, pricepaths, cleaning, features, hedonic, hazards, competition, prediction, amli, validation, robustness, descriptives, figures, tables, plotstyle, synthetic scripts/ 01_ingest … 13_tables (numbered pipeline) tests/ pytest suite (synthetic fixture, no restricted data) research/ questions.md, analysis_plan.md (preregistration) literature/ references.bib (172 verified), evidence_matrix.csv, novelty_memo.md, search_protocol.md reports/ data_access_audit.md, external_benchmarks_inventory.md data/ raw/ (restricted, not committed), interim/, processed/, synthetic/ results/ machine-readable outputs per model STATUS.md DECISIONS.md EXPERIMENTS.md CLAIMS_LEDGER.csv REPRODUCE.md ``` ## Quick start ```bash make env && make test make all # data → models → tables → figures → paper (≈45 min; needs the restricted snapshot) cd paper && make # PDF only ``` ## Data Owner-authorised read-only snapshot of the Auto-Ka production database (SQLite, 1.35 GB, SHA-256 in `data/raw/*.sha256`), user table dropped before transfer; VINs, URLs, free text and exact coordinates restricted to `data/raw` and `data/interim`. Not redistributed. See `reports/data_access_audit.md`. ## Methodology Hedonic splines with make–model(–trim) and dealer FE (pyfixest); discrete-time cloglog and Cox hazards with dealer-clustered SEs (statsmodels, lifelines); linear-probability event study with market×week and model-year×week FE and a within-make–model placebo; LightGBM/logistic prediction with chronological, dealer and region holdouts; five-component AMLI with equal/PCA/supervised weights, dealer block bootstrap and held-out-component validation. ## Figures & tables inventory Figures 1–10 (`figures/`, vector PDF + PNG): coverage, depreciation surface, durations/cuts, price paths, hazards, event study, regional map, AMLI series, AMLI validation, prediction. Tables 1–9 (`paper/tables/`): sources, sample construction, descriptives, hedonic (+tests), hazards, competition (+region premia), AMLI, prediction, robustness. ## Limitations Asking prices, not transactions; exit = observed disappearance (≥ 10 % relistings); 81-day window; registry is not a random sample of dealers; H3 is association only; AMLI validated internally only. ## Citation ```bibtex @techreport{boucher2026usedcars, author = {Boucher, Simon-Pierre}, title = {The Hidden Dynamics of Used-Car Markets: Price Discovery, Inventory Liquidity, and Strategic Dealer Behavior}, institution = {Université du Québec en Outaouais, Département des sciences administratives}, type = {UQO Working Paper}, number = {36}, year = {2026}, month = {November} } ``` ## Author & contact Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca ## Notes Built under the autonomous research protocol of 2026-11-01 (mandate in `docs/MANDATE.md`); all substantive claims are traced in `CLAIMS_LEDGER.csv`.