1# Data windows and splits. Dates are chosen from the actual coverage of the Vrai Prix snapshot2# (registered sales 2021-01-04 .. 2026-10-07, snapshot taken 2026-10-21) — see data/raw/README.md.3snapshot:4 source: "WP22 processed layer of vraiprix-20261021.db (sha256 2816d8dd… pinned in the WP22 repo)"5 transactions_parquet: "data/raw/wp22_clean_transactions.parquet"6 units_stock_parquet: "data/raw/wp22_raw_units_stock.parquet"7 market_index_parquet: "data/raw/wp22_raw_market_index.parquet"8sample:9 property_classes: [house, condo, plex] # headline residential classes10 price_min: 5000011 price_max: 500000012 require_roll_match: true13 require_coordinates: true14splits:15 train: {start: "2021-01-01", end: "2024-06-30"}16 validation: {start: "2024-07-01", end: "2025-03-31"}17 test: {start: "2025-04-01", end: "2025-12-31"}18 holdout: {start: "2026-01-01", end: "2026-10-07"} # final untouched temporal holdout, evaluated once19 prospective: {note: "sales registered in the live DB after the protocol freeze (fetched by scripts/60_fetch_prospective.py); ids absent from the snapshot"}20spatial_holdout:21 # entire regions withheld from training in the spatial-generalisation experiment22 regions: ["Outaouais", "Abitibi-Témiscamingue", "Bas-Saint-Laurent"]23comparables:24 radius_km: [1.0, 3.0, 10.0] # expanding search25 lookback_days: 54026 max_comps: 1227 min_comps: 328 same_class_required: true29llm_eval_subsample:30 # LLM arms are evaluated on stratified random subsamples (cost); baselines on the full partitions31 validation_n: 24032 test_n: 60033 holdout_n: 30034 strata: [region_group, property_class, price_tercile]35seed: 2026102736