SPB Git forge

spb/wp22_uqo

Public
6commits 1branches 0releases
142.4 MBsize
maindefault branch
4 h agolast push
TeX 55.1% Python 44.2%
6.9 KB · 111 lines markdown
Rendered Raw Blame History
1<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca ; generated by scripts/06_provenance_report.py -->2# Provenance report — WP22 SHARP-HPI (generated 2026-10-21)34## 1. Source and snapshot5- Production database: `M3U96a:~/apps/vrai-prix/data/vraiprix.db (production, read via .backup)` (Vrai Prix, www.vrai-prix.com), read through `sqlite3 .backup` on 2026-10-21T00:30.6- Snapshot file `data/raw/vraiprix-20261021.db`, SHA-256 `2816d8ddbee66faf7f8961fabf0460583249e911dab52014e633be14b9d34461` (verified at every extraction).7- Tables: `transactions` 769,995 rows (2021-01-04 → 2026-10-07); `units` 3,747,008 assessment-roll units, of which 613,153 distinct units are matched to a sale; `market_index` 268 rows (the site's own median $/m² series, not used).8- Upstream: deeds of sale published by the Quebec land registry and redistributed by the Journal de Québec / Journal de Montréal "Transactions immobilières" feed (`api.qub.ca`), ingested daily by Vrai Prix (`scripts/ingest-jdm.mjs`); assessment roll = MAMH open data (current triennial roll per municipality). No credentials were used or copied; the production file was never opened for writing.910## 2. Dates11The table carries **one date per transaction** (the deed date as published by the feed). Deed signing, registration and feed publication cannot be separated. Four earlier extractions of the same table measure the publication delay:1213| vintage | vintage_rows | vintage_last_date | vintage_max_lag_days | final_rows_dated_le_last | share_present | deleted_since_vintage | amount_revised |14|---|---|---|---|---|---|---|---|15| 2026-08-06 | 745119 | 2026-07-27 | 10 | 745227 | 1.000 | 0 | 0 |16| 2026-08-09 | 745119 | 2026-07-27 | 13 | 745227 | 1.000 | 0 | 0 |17| 2026-10-10 | 766596 | 2026-09-29 | 11 | 766682 | 1.000 | 0 | 0 |18| 2026-10-17 | 769333 | 2026-10-06 | 11 | 769678 | 1.000 | 0 | 0 |1920Interpretation: in every vintage, more than 99.95 % of the transactions that the final snapshot dates on or before the vintage's last observed date were already present; no row was deleted and no price revised between vintages. The feed therefore publishes with a lag of about 10–13 days and **does not backfill** older months. Real-time simulations use a 10-day publication delay and a partial final month (results/vintages/arrival_profile_by_lag.csv).2122## 3. Coverage23Monthly volumes (results/profile/coverage_month_type.csv): first month 2021-01 = 2,478 sales, 2021-02 = 9,887, 2021-04 = 15,613 (feed start-up); 2022–2025 average 10,557 per month; last month 2026-10 = 2,722 (2026-10-07 = last date, **partial month**). No sale below $50,000 is collected by the provider (a hard floor visible in every year), which is a selection on price. 2026 monthly volumes run 8–14 % below the same month of 2025.2425Municipality coverage (sales matched to the roll, 2021–2026):2627| band | municipalities | transactions |28|---|---|---|29| 0-9 | 25 | 152 |30| 10-24 | 72 | 1328 |31| 25-49 | 141 | 5303 |32| 50-99 | 223 | 16760 |33| 100-249 | 304 | 49238 |34| 250-499 | 150 | 52304 |35| 500-999 | 75 | 53475 |36| 1000-4999 | 99 | 195777 |37| 5000+ | 20 | 355639 |3839## 4. Geography40Spatial join of every sale to the MRNF SDA V2026-07 municipal polygons: | join_method | n |41|---|---|42| within | 769995 |4344Agreement between the roll's municipality code and the spatial join: 99.9573% of 729,976 matched sales. Series are on 2026 boundaries (municipalities constituted or merged 2022–2026 are listed in results/geo/mamh_constituted_since_2021.csv).4546## 5. Completeness by year (share of rows with a non-missing value)4748| year | n | id_provinc | floor_area | year_built | building_type | cubf | nb_logements | lien_physique | genre_construction | superficie_terrain_m2 | nb_etages | valeur_terrain |49|---|---|---|---|---|---|---|---|---|---|---|---|---|50| 2021 | 165541 | 0.988 | 0.796 | 0.698 | 0.128 | 0.931 | 0.901 | 0.899 | 0.863 | 0.930 | 0.908 | 0.914 |51| 2022 | 137662 | 0.988 | 0.816 | 0.770 | 0.514 | 0.927 | 0.895 | 0.894 | 0.856 | 0.926 | 0.901 | 0.911 |52| 2023 | 108429 | 0.991 | 0.865 | 0.864 | 0.825 | 0.939 | 0.907 | 0.905 | 0.870 | 0.938 | 0.912 | 0.922 |53| 2024 | 123157 | 0.994 | 0.888 | 0.889 | 0.852 | 0.945 | 0.912 | 0.909 | 0.874 | 0.944 | 0.916 | 0.927 |54| 2025 | 137509 | 0.995 | 0.882 | 0.884 | 0.848 | 0.970 | 0.916 | 0.912 | 0.878 | 0.969 | 0.920 | 0.953 |55| 2026 | 97697 | 0.993 | 0.852 | 0.853 | 0.818 | 0.989 | 0.924 | 0.922 | 0.888 | 0.987 | 0.929 | 0.972 |5657`building_type` (provider) is backfilled over time and is never used. Provider characteristics equal the roll's for matched sales (year built 99.2%, floor area 94.1%, lot area 98.1%); the provider's `valeur_role` is the assessment in force at the sale date (equal to the current roll value for 27.7% of sales, to the previous roll value for 42.4%).5859## 6. Exclusion ledger (first matching rule; headline population = house / condo / plex with roll characteristics)6061| exclude_reason_headline | n | share_of_raw |62|---|---|---|63| (retained — headline sample) | 632006 | 0.821 |64| class_not_in_headline | 38280 | 0.050 |65| assessment_ratio_outlier | 23653 | 0.031 |66| land | 18798 | 0.024 |67| non_residential | 15520 | 0.020 |68| same_parcel_same_date_diff_price | 14709 | 0.019 |69| no_roll_characteristics | 11533 | 0.015 |70| shared_parcel | 6981 | 0.009 |71| built_after_sale | 4996 | 0.006 |72| multi_parcel_candidate | 2663 | 0.003 |73| exact_duplicate | 824 | 0.001 |74| price_above_cap | 32 | 0.000 |7576Flags counted independently (overlaps allowed):7778| flag | n | share_of_raw |79|---|---|---|80| exact_duplicate | 824 | 0.001 |81| same_parcel_same_date_diff_price | 14857 | 0.019 |82| built_after_sale | 5013 | 0.007 |83| new_construction | 17087 | 0.022 |84| roll_is_land | 19606 | 0.025 |85| roll_non_residential | 16573 | 0.022 |86| shared_parcel | 20771 | 0.027 |87| multi_parcel_candidate | 4043 | 0.005 |88| price_above_cap | 47 | 0.000 |89| assessment_ratio_outlier | 42826 | 0.056 |90| type_conflict | 33316 | 0.043 |91| floor_area_missing | 74879 | 0.097 |92| year_built_missing | 71557 | 0.093 |93| roll_matched | 729976 | 0.948 |9495Headline share by year:9697| year | excluded | headline | share_headline |98|---|---|---|---|99| 2021 | 33723 | 131818 | 0.796 |100| 2022 | 28544 | 109118 | 0.793 |101| 2023 | 19276 | 89153 | 0.822 |102| 2024 | 20774 | 102383 | 0.831 |103| 2025 | 21492 | 116017 | 0.844 |104| 2026 | 14180 | 83517 | 0.855 |105106## 7. Known selection issues107- Price floor $50,000 (provider): low-price rural sales are missing; indexes for such markets start from a truncated distribution.108- Current-roll characteristics: renovations after the sale are invisible; new constructions of 2025–2026 may still be coded as vacant land in the roll and are then excluded (`built_after_sale` does not fire, `land` does), lowering new-build coverage at the end of the sample.109- No arm's-length indicator: non-market transfers are screened only through the assessment-ratio rule and the robust likelihoods.110- `indéterminé` provider type (14 % of rows): classified from the roll when possible; otherwise excluded.111