SPB Git forge

spb/wp22_uqo

Public
6commits 1branches 0releases
142.4 MBsize
maindefault branch
3 h agolast push
TeX 55.1% Python 44.2%
6.9 KB

# Provenance report — WP22 SHARP-HPI (generated 2026-10-21)

# 1. Source and snapshot

  • 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.
  • Snapshot file data/raw/vraiprix-20261021.db, SHA-256 2816d8ddbee66faf7f8961fabf0460583249e911dab52014e633be14b9d34461 (verified at every extraction).
  • 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).
  • 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.

# 2. Dates

The 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:

vintage vintage_rows vintage_last_date vintage_max_lag_days final_rows_dated_le_last share_present deleted_since_vintage amount_revised
2026-08-06 745119 2026-07-27 10 745227 1.000 0 0
2026-08-09 745119 2026-07-27 13 745227 1.000 0 0
2026-10-10 766596 2026-09-29 11 766682 1.000 0 0
2026-10-17 769333 2026-10-06 11 769678 1.000 0 0

Interpretation: 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).

# 3. Coverage

Monthly 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.

Municipality coverage (sales matched to the roll, 2021–2026):

band municipalities transactions
0-9 25 152
10-24 72 1328
25-49 141 5303
50-99 223 16760
100-249 304 49238
250-499 150 52304
500-999 75 53475
1000-4999 99 195777
5000+ 20 355639

# 4. Geography

Spatial join of every sale to the MRNF SDA V2026-07 municipal polygons: | join_method | n | |---|---| | within | 769995 |

Agreement 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).

# 5. Completeness by year (share of rows with a non-missing value)

year n id_provinc floor_area year_built building_type cubf nb_logements lien_physique genre_construction superficie_terrain_m2 nb_etages valeur_terrain
2021 165541 0.988 0.796 0.698 0.128 0.931 0.901 0.899 0.863 0.930 0.908 0.914
2022 137662 0.988 0.816 0.770 0.514 0.927 0.895 0.894 0.856 0.926 0.901 0.911
2023 108429 0.991 0.865 0.864 0.825 0.939 0.907 0.905 0.870 0.938 0.912 0.922
2024 123157 0.994 0.888 0.889 0.852 0.945 0.912 0.909 0.874 0.944 0.916 0.927
2025 137509 0.995 0.882 0.884 0.848 0.970 0.916 0.912 0.878 0.969 0.920 0.953
2026 97697 0.993 0.852 0.853 0.818 0.989 0.924 0.922 0.888 0.987 0.929 0.972

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%).

# 6. Exclusion ledger (first matching rule; headline population = house / condo / plex with roll characteristics)

exclude_reason_headline n share_of_raw
(retained — headline sample) 632006 0.821
class_not_in_headline 38280 0.050
assessment_ratio_outlier 23653 0.031
land 18798 0.024
non_residential 15520 0.020
same_parcel_same_date_diff_price 14709 0.019
no_roll_characteristics 11533 0.015
shared_parcel 6981 0.009
built_after_sale 4996 0.006
multi_parcel_candidate 2663 0.003
exact_duplicate 824 0.001
price_above_cap 32 0.000

Flags counted independently (overlaps allowed):

flag n share_of_raw
exact_duplicate 824 0.001
same_parcel_same_date_diff_price 14857 0.019
built_after_sale 5013 0.007
new_construction 17087 0.022
roll_is_land 19606 0.025
roll_non_residential 16573 0.022
shared_parcel 20771 0.027
multi_parcel_candidate 4043 0.005
price_above_cap 47 0.000
assessment_ratio_outlier 42826 0.056
type_conflict 33316 0.043
floor_area_missing 74879 0.097
year_built_missing 71557 0.093
roll_matched 729976 0.948

Headline share by year:

year excluded headline share_headline
2021 33723 131818 0.796
2022 28544 109118 0.793
2023 19276 89153 0.822
2024 20774 102383 0.831
2025 21492 116017 0.844
2026 14180 83517 0.855

# 7. Known selection issues

  • Price floor $50,000 (provider): low-price rural sales are missing; indexes for such markets start from a truncated distribution.
  • 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.
  • No arm's-length indicator: non-market transfers are screened only through the assessment-ratio rule and the robust likelihoods.
  • indéterminé provider type (14 % of rows): classified from the roll when possible; otherwise excluded.