SPB Git

Repository Public

MethodologieClient.tsx 38.3 KB 376 lines tsx

1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2"use client";3import Link from "next/link";4import { useLang } from "@/components/LangContext";56type Row = [string, string];7interface Section {8  num: string;9  title: string;10  paras: string[];11  table?: { head: [string, string, string]; rows: [string, string, string][] };12  kv?: Row[];13}1415const FR: Section[] = [16  {17    num: "01",18    title: "Données sources",19    paras: [20      "Deux corpus publics forment la fondation de Vrai-Prix. Premièrement, les rôles d'évaluation foncière géoréférencés du Québec, publiés en données ouvertes par le ministère des Affaires municipales et de l'Habitation (MAMH) : six millésimes complets (2021 à 2026), de 3 626 120 à 3 747 008 unités d'évaluation par millésime, soit 22,15 millions d'observations unité-année. Chaque unité porte sa géométrie ponctuelle (NAD83, EPSG:4269), son matricule, son usage (code CUBF), ses caractéristiques de bâtiment et de terrain, et ses valeurs au rôle.",21      "Deuxièmement, 745 119 transactions immobilières publiées entre janvier 2021 et juillet 2026, couvrant 1 100 municipalités, chacune géolocalisée et documentée (prix, date, type, année de construction, aire d'étages, valeurs au rôle).",22    ],23    kv: [24      ["Millésimes de rôle", "2021 · 2022 · 2023 · 2024 · 2025 · 2026"],25      ["Unités d'évaluation (2026)", "3 747 008"],26      ["Observations unité-année", "22 150 285"],27      ["Transactions", "745 119 (2021-01 → 2026-07)"],28      ["Municipalités couvertes", "1 100"],29      ["Système de référence", "NAD83 (EPSG:4269), projeté EPSG:32198"],30    ],31  },32  {33    num: "02",34    title: "Fusion spatiale transaction ↔ unité d'évaluation",35    paras: [36      "Chaque transaction est appariée à son unité d'évaluation par coordonnées XY, dans le rôle de l'année de la transaction. L'appariement se fait en deux passes, en coordonnées projetées Québec Lambert (EPSG:32198).",37      "Passe A — spatiale : parmi les 25 plus proches voisins dans un rayon de 200 m, chaque candidat reçoit un score : +100 si la valeur au rôle est identique à celle portée par la transaction, +60 si la valeur du rôle antérieur concorde, +30 si l'année de construction concorde, +30 si l'aire d'étages concorde à ±0,6 m², moins 0,5 point par mètre de distance. Le meilleur score gagne.",38      "Passe B — jointure par valeur : les tours à condos placent des centaines d'unités sur le même point ; la géométrie seule ne suffit pas. Pour toute transaction sans concordance exacte de valeur en passe A, on cherche l'unité de valeur au rôle strictement identique dans un rayon de 500 m. En dernier recours, les millésimes adjacents (année ±1) sont essayés — les rôles triennaux étant déposés à des années différentes selon les municipalités.",39      "Résultat : 99,88 % des transactions appariées, 82,2 % avec concordance exacte de la valeur au rôle, distance médiane de 0,6 m (p90 = 12 m). Ce lien est vérifiable transaction par transaction.",40    ],41  },42  {43    num: "03",44    title: "Modèle hédonique de masse",45    paras: [46      "Le cœur du système est un modèle de gradient boosting (LightGBM) entraîné à prédire le logarithme du prix de vente. L'échantillon d'entraînement compte 689 231 transactions, après exclusion des ventes non représentatives du marché : appariement incertain, prix hors de 50 000 $ à 20 M$, ratio prix/évaluation hors de l'intervalle [0,3 ; 4].",47      "Dix-huit variables décrivent chaque propriété au moment de la vente : aire d'étages, superficie et frontage du terrain, nombre d'étages, de logements, de locaux non résidentiels et de chambres locatives, âge du bâtiment, usage CUBF (et sa famille), lien physique, genre de construction, municipalité et région (variables catégorielles), latitude, longitude, temps continu (mois écoulés) et mois de l'année, plus les valeurs au rôle (terrain, bâtiment, total, croissance vs rôle antérieur, part du terrain).",48      "Hyperparamètres : 255 feuilles, taux d'apprentissage 0,05, sous-échantillonnage 85 %, arrêt précoce sur ensemble de validation (~825 itérations retenues). La rétro-transformation du logarithme applique le facteur de correction de Duan (smearing, 1,04). Deux modèles de régression quantile (α = 0,10 et 0,90), entraînés sur les mêmes variables, produisent la fourchette P10-P90 propre à chaque propriété. Un second modèle « hédonique pur », sans les valeurs au rôle, sert de contrôle.",49      "Le modèle final est appliqué aux 3,75 millions d'unités de chaque millésime (temps fixé à la mi-année), produisant 22 millions d'estimations historisées 2021-2026.",50    ],51  },52  {53    num: "04",54    title: "Validation — norme IAAO",55    paras: [56      "La validation suit la norme de l'International Association of Assessing Officers (IAAO) sur les études de ratios : ratio médian (estimation/prix), coefficient de dispersion (COD), différentiel lié au prix (PRD) et coefficient de biais lié au prix (PRB). Deux protocoles : un ensemble aléatoire réservé de 15 % (102 943 ventes jamais vues) et un test temporel strict (entraînement sans 2026, test sur les 68 364 ventes de 2026).",57      "Le COD provincial (22,7) dépasse la cible urbaine IAAO (≤ 15) — attendu pour un modèle unique couvrant aussi les marchés ruraux minces ; le segment condo (11,9) y satisfait pleinement. Le ratio médian de 0,995 indique l'absence de biais systématique.",58    ],59    table: {60      head: ["Métrique", "Holdout aléatoire", "Test temporel 2026"],61      rows: [62        ["Erreur médiane (MdAPE)", "11,0 %", "14,0 %"],63        ["± 20 % du prix réel", "72,1 %", "66,7 %"],64        ["R² (log)", "0,789", "0,743"],65        ["Ratio médian (cible 0,90-1,10)", "0,995", "0,961"],66        ["COD (cible ≤ 15-20)", "22,7 (condos 11,9)", "23,7"],67        ["PRD (cible 0,98-1,03)", "1,092", "1,075"],68        ["PRB (cible ±0,05)", "−0,104", "−0,082"],69      ],70    },71  },72  {73    num: "05",74    title: "Moteur d'estimation en ligne",75    paras: [76      "Au moment de la consultation, l'estimation affichée combine deux sources indépendantes. (1) L'estimation du modèle hédonique, pré-calculée pour la propriété. (2) Une estimation par comparables : les ventes candidates sont cherchées dans un rayon adaptatif (2,2 km, élargi jusqu'à ~28 km si le marché est mince, minimum 30 candidates sur 30-36 mois), filtrées par famille de type et par aire d'étages (±20 %, relâché à ±40 % puis abandonné sous 6 candidates).",77      "Chaque comparable est ajusté, en dollars affichés : ajustement de marché (indice mensuel, section 06), ajustement de superficie (50 % du $/m² du comparable par m² d'écart, plafonné à ±25 % du prix), ajustement d'âge (0,5 % du prix par année d'écart, plafonné à ±10 %). Le poids de chaque comparable est le produit de trois gaussiennes : distance (σ = 1 500 m), récence (σ = 24 mois) et similarité de superficie (σ = 25 %). L'estimation comparables est la médiane pondérée des prix ajustés (12 meilleures retenues).",78      "Combinaison : 65 % modèle + 35 % comparables lorsque les deux existent (≥ 3 comparables) ; sinon la source disponible seule. La fourchette affichée est l'intervalle P10-P90 du modèle, recentré sur l'estimation finale.",79      "L'indice de confiance (0-100, niveaux A ≥ 75, B ≥ 60, C ≥ 45, D < 45) agrège : le nombre de comparables (+2,5/comparable, max 25), leur dispersion (jusqu'à +20 quand la déviation médiane est faible), la présence du modèle (+15) et une pénalité de largeur de fourchette au-delà de 30 %. Aucune estimation n'est affichée sans son niveau de confiance.",80    ],81  },82  {83    num: "06",84    title: "Indice de marché mensuel",85    paras: [86      "L'ajustement temporel des comparables repose sur un indice mensuel par type de propriété : médiane du prix au mètre carré des ventes du mois (minimum 5 ventes), lissée par médiane mobile centrée de 3 mois, normalisée au dernier mois observé. Une vente de janvier 2024 comparée en août 2026 est ainsi ramenée aux conditions de marché actuelles avant tout autre ajustement.",87    ],88  },89  {90    num: "07",91    title: "Limites connues",92    paras: [93      "L'honnêteté méthodologique exige de nommer ce que le système ne voit pas. Les rénovations intérieures, garages, piscines et l'état d'entretien n'apparaissent pas dans les données ouvertes du rôle. Dans les marchés ruraux minces, la dispersion dépasse les cibles IAAO urbaines — l'indice de confiance le reflète. Les unités d'une même tour à condos partagent un point géographique : sans numéro d'appartement, la recherche peut retourner une unité voisine. Les valeurs au rôle utilisées comme variables sont établies 18 à 24 mois avant leur entrée en vigueur. Enfin, une estimation statistique, aussi rigoureuse soit-elle, ne remplace pas l'évaluation d'un évaluateur agréé (OEAQ) ni l'analyse d'un courtier pour une mise en vente.",94    ],95  },96  {97    num: "08",98    title: "Méthode du coût — onglet Coût",99    paras: [100      "L'onglet Coût applique la troisième approche de l'évaluation : V = valeur du terrain + coût de remplacement à neuf (RCN) − dépréciation. Il s'agit d'un coût de REMPLACEMENT (composantes modernes équivalentes : mur 2 × 6 R24, comble R50, poutrelles ajourées), pas d'un coût de reproduction à l'identique. La formule n'est jamais masquée et chaque nombre est retraçable : source → observation → conversion d'unité → prix canonique → formule → résultat.",101      "Sources. Main-d'œuvre : grilles publiques « Coût horaire de la main-d'œuvre » de l'APCHQ (fondées sur les conventions collectives CCQ, secteur résidentiel léger, compagnon) — coût EMPLOYEUR complet (taux + vacances 13 % + avantages sociaux + AE, RQAP, FSS, CCQ, CNESST…), jamais le seul salaire ; le connecteur CCQ tourne en détection de changement. Indices : Statistique Canada 18-10-0289-01 (indices des prix de la construction de bâtiments, Montréal et Québec, résidentiel et divisions), trimestriel, pour actualiser les observations anciennes (Cost_t1 = Cost_t0 × Index_t1 / Index_t0). Matériaux : observations de prix publiques chez Canac, BMR et Patrick Morin (URL et date conservées, prix régulier préféré au prix promotionnel, médiane robuste multi-source, aberrations marquées mais jamais effacées). Articles sans observation détaillant (béton livré, fermes, fenêtres sur mesure, armoires…) : prix de référence interne étiqueté « hypothèse », qui abaisse la couverture observée et la confiance. Benchmarks : Altus Group (Canadian Cost Guide) par import manuel après téléchargement légal ; RSMeans par import licencié seulement. L'interface ne déclenche jamais de collecte : la synchronisation des sources tourne la nuit, hors du chemin de l'utilisateur.",102      "Assemblages et quantités. Un assemblage (≈ 100 au catalogue : fondations, structure, enveloppe, toiture, ouvertures, finitions, cuisine, salle de bain, plomberie, CVCA, électricité, extérieur) réunit des articles (quantité par unité × (1 + pertes) × prix), des heures de métier (× coût employeur) et de l'équipement. Le moteur de géométrie dérive les quantités à partir de la description du bâtiment avec des hypothèses de prise de quantités affichées dans chaque formule : rapport de forme 1,5, hauteur d'étage 9 pi, montants à 16 po c/c, 1 fenêtre de 10 pi² par 90 pi² de plancher (≈ 11 % vitré), 0,09 pi lin de cloison par pi², toit = empreinte × facteur de pente × 1,10 de débords, excavation = (empreinte + 3 pi × périmètre) × profondeur. Chaque quantité peut être remplacée (source « saisi ») et chaque assemblage exclu.",103      "Coûts directs, indirects, frais généraux, profit, contingence. Direct = Σ(matériaux × facteur matériaux + main-d'œuvre × facteur main-d'œuvre + équipement × facteur équipement). Indirects = direct × Σ pourcentages (plans 3 %, permis 0,8 %, inspection 0,5 %, assurances 1,5 %, mobilisation 1,5 %, gestion 3 %, financement 2 %, administration 1 % — hypothèses documentées, modifiables). Frais généraux = (direct + indirects) × 7 % ; profit = (direct + indirects + frais généraux) × 8 % ; contingence = (direct + indirects) × 3 % — trois notions distinctes, jamais fusionnées. RCN = direct + indirects + frais généraux + profit + contingence.",104      "Localisation. Les conventions collectives de l'industrie (Loi R-20) fixent des taux uniformes au Québec : facteur main-d'œuvre 1,00 partout sauf régions éloignées (Abitibi, Côte-Nord, Gaspésie, Nord-du-Québec — primes et hébergement). Les facteurs matériaux et équipement (1,00 à Montréal, jusqu'à 1,20 au Nord-du-Québec) traduisent le transport et la disponibilité : hypothèses documentées, résolues par municipalité, puis par centre le plus proche, puis « rural ».",105      "Dépréciation. Physique : méthode âge-vie (âge effectif ÷ vie économique, plafonnée à 90 %) ou, en mode avancé, composante par composante — chaque groupe (structure 75 ans, toiture 22, enveloppe 40, ouvertures 30, intérieur 25, cuisine 20, salles de bain 22, mécanique 22, électricité 35, site 25) porte sa vie et sa condition ; les règles condition → âge effectif (neuf 0 %, excellent 10 %, rénové 12 %, très bon 20 %, bon 35 %, moyen 55 %, sous la moyenne 70 %, mauvais 85 % de la vie) sont des hypothèses stockées en base et modifiables. Fonctionnelle : déficiences saisies, curables (coût de correction) ou incurables (perte de valeur). Externe : montant saisi, 0 $ par défaut — jamais calculée sans preuve.",106      "Terrain. En mode propriété, la valeur du terrain au rôle 2026 (MAMH) est préremplie et identifiée comme telle ; vous pouvez la conserver, la remplacer (comparables de terrains, technique résiduelle) ou la retirer. La valeur au rôle n'est pas la valeur marchande du terrain : elle est fixée 18 à 24 mois avant l'entrée en vigueur du rôle.",107      "Fourchette et confiance. Chaque ligne porte un écart-type (dispersion des prix observés ou ±8 % observé / ±15 % référence / ±20 % hypothèse, heures ±15 %, incertitude de quantité selon sa source) ; les lignes se combinent en racine des carrés, plus une composante systématique (localisation 2-4 %, modèle d'assemblages 5 %) ; P10/P90 = RCN ± 1,28 σ. L'indice de confiance (0-100, A ≥ 80, B ≥ 65, C ≥ 50, D) additionne fraîcheur des observations (20), couverture observée des matériaux (20), localisation (15), main-d'œuvre officielle (15), benchmarks (10) et complétude des caractéristiques du bâtiment (20). Un benchmark hors plage est signalé, jamais utilisé pour recaler le moteur.",108      "Annonces à vendre. Pour une propriété réellement à vendre (onglet À vendre), l'analyse IA du bâtiment lit les photos et le texte de l'annonce pour en déduire les composantes visibles (structure, revêtements, toiture, fenêtres, finitions, état) ; chaque inférence porte sa confiance et sa provenance, peut être corrigée à la main, puis est chiffrée par le même moteur déterministe. Le modèle ne produit jamais de montant : il décrit, le moteur chiffre.",109      "Reproductibilité et limites. Chaque estimation enregistre sa version de méthode, de base de coûts et d'assemblages, la date des prix et un instantané des prix et taux utilisés : elle se reconstruit à l'identique. Limites : hypothèses de quantités génériques (pas de plans), prix de référence pour une partie des articles, dépréciation dépendante de la condition saisie, condos limités à l'unité (parties communes exclues). Les trois lectures de la valeur (hédonique, comparables, coût) sont comparées, jamais moyennées.",110    ],111    kv: [112      ["Formule", "V = terrain + RCN − (D_phys + D_fonct + D_ext)"],113      ["Main-d'œuvre", "APCHQ (coût employeur complet) · CCQ"],114      ["Indices", "StatCan 18-10-0289-01 (trimestriel)"],115      ["Matériaux", "Canac · BMR · Patrick Morin (+ références étiquetées)"],116      ["Assemblages", "≈ 100, ≈ 550 composants, ≈ 180 articles"],117      ["Confiance", "20 + 20 + 15 + 15 + 10 + 20 = 100"],118    ],119  },120  {121    num: "09",122    title: "La mesure à l'épreuve du marché — propriétés à vendre",123    paras: [124      "L'onglet À vendre confronte le moteur à la réalité du marché : plus de 70 000 propriétés réellement en vente au Québec (base Immo-Ka, rafraîchie chaque nuit) sont jumelées spatialement à leur unité du rôle d'évaluation (bbox lat/lng, départage par type, superficie et année ; distance médiane ≈ 14 m), puis évaluées par le moteur exactement comme une fiche ordinaire. La page /stats/marche publie le résultat : ratio médian estimation / prix demandé, erreur absolue médiane (MdAPE), calibration de l'indice de confiance A-D, performance par type, région et tranche de prix.",125      "Le duel des méthodes. Chaque annonce est aussi évaluée par les approches classiques — méthode du coût calibrée (terrain au marché + coût unitaire net du bâtiment, calibrés sur les ventes des 18 derniers mois grâce à la composition de la valeur au rôle), rôle indexé (IAAO) et hédonique — et par un ensemble médian. L'hybride 65/35 reste la mesure principale ; l'écart entre les lectures est une information, pas un défaut.",126      "L'atelier d'évaluation. Sur chaque fiche, vous pouvez refaire l'évaluation vous-même : bassin de ventes réelles (et d'annonces actives) autour du sujet, choix des comparables, grille d'ajustements en dollars pré-remplie par le moteur (marché, superficie, âge) et complétée à volonté, pondération, réconciliation (médiane, moyenne, pondérées), puis confrontation avec la mesure Vrai-Prix, le prix demandé et le rôle. Vos choix restent sur votre appareil.",127      "Ce que l'écart mesure vraiment. Le prix demandé n'est pas la valeur marchande : l'écart entre la mesure et le prix affiché additionne l'erreur du modèle ET la stratégie de mise en marché du vendeur. Seule la vente conclue tranche — c'est pourquoi le corpus d'apprentissage reste les 745 000 transactions réelles, et non les annonces.",128    ],129    kv: [130      ["Annonces mesurées", "≈ 66 000 sur ≈ 71 000 actives"],131      ["Jumelage", "spatial ≤ 75 m (repli 250 m), distance médiane ≈ 14 m"],132      ["Mesure principale", "hybride 65 % modèle · 35 % comparables"],133      ["Rafraîchissement", "quotidien (snapshot Immo-Ka + ré-évaluation)"],134    ],135  },136];137138const EN: Section[] = [139  {140    num: "01",141    title: "Source data",142    paras: [143      "Two public corpora form the foundation of Vrai-Prix. First, Québec's georeferenced property assessment rolls, published as open data by the MAMH: six complete vintages (2021-2026), 3.63M to 3.75M assessment units each — 22.15 million unit-year observations, each with point geometry (NAD83), roll number, CUBF use code, building and lot characteristics, and assessed values.",144      "Second, 745,119 real-estate transactions published between January 2021 and July 2026 across 1,100 municipalities, each geolocated and documented (price, date, type, year built, floor area, assessed values).",145    ],146    kv: [147      ["Roll vintages", "2021 · 2022 · 2023 · 2024 · 2025 · 2026"],148      ["Assessment units (2026)", "3,747,008"],149      ["Unit-year observations", "22,150,285"],150      ["Transactions", "745,119 (2021-01 → 2026-07)"],151      ["Municipalities", "1,100"],152      ["Reference system", "NAD83 (EPSG:4269), projected EPSG:32198"],153    ],154  },155  {156    num: "02",157    title: "Spatial merge: transaction ↔ assessment unit",158    paras: [159      "Each transaction is matched to its assessment unit by XY coordinates in the roll of its own year, in two passes using Québec Lambert (EPSG:32198) coordinates.",160      "Pass A — spatial: among the 25 nearest neighbours within 200 m, each candidate is scored: +100 for an identical assessed value, +60 for a matching previous-roll value, +30 for a matching year built, +30 for a floor area within ±0.6 m², minus 0.5 point per metre of distance.",161      "Pass B — value join: condo towers stack hundreds of units on one point, so geometry alone is insufficient. For transactions without an exact value match in pass A, we search for the unit with a strictly identical assessed value within 500 m. As a last resort, adjacent vintages (±1 year) are tried, since triennial rolls are deposited in different years across municipalities.",162      "Result: 99.88% of transactions matched, 82.2% with an exact assessed-value match, median distance 0.6 m (p90 = 12 m). The link is verifiable transaction by transaction.",163    ],164  },165  {166    num: "03",167    title: "Mass-appraisal hedonic model",168    paras: [169      "The core is a gradient-boosting model (LightGBM) trained to predict the log of sale price on 689,231 transactions, after excluding non-market sales (uncertain match, price outside $50k-$20M, price/assessment ratio outside [0.3, 4]).",170      "Eighteen variables describe each property at sale time: floor area, lot area and frontage, storeys, dwellings, non-residential units, rental rooms, building age, CUBF use (and family), physical link, construction style, municipality and region (categorical), latitude, longitude, continuous time and month of year, plus assessed values (land, building, total, growth vs previous roll, land share).",171      "Hyperparameters: 255 leaves, learning rate 0.05, 85% subsampling, early stopping (~825 iterations). The log back-transform applies Duan's smearing factor (1.04). Two quantile models (α = 0.10, 0.90) produce each property's P10-P90 range; a value-free 'pure hedonic' variant serves as control.",172      "The final model is applied to all 3.75M units of every vintage (time set to mid-year), producing 22 million historical estimates 2021-2026.",173    ],174  },175  {176    num: "04",177    title: "Validation — IAAO standard",178    paras: [179      "Validation follows the IAAO Standard on Ratio Studies: median ratio, coefficient of dispersion (COD), price-related differential (PRD) and price-related bias (PRB). Two protocols: a 15% random holdout (102,943 unseen sales) and a strict temporal test (trained without 2026, tested on 68,364 sales of 2026).",180      "The province-wide COD (22.7) exceeds the urban IAAO target (≤ 15) — expected for a single model that also covers thin rural markets; the condo segment (11.9) fully meets it. The 0.995 median ratio shows no systematic bias.",181    ],182    table: {183      head: ["Metric", "Random holdout", "Temporal test 2026"],184      rows: [185        ["Median error (MdAPE)", "11.0%", "14.0%"],186        ["Within ±20% of price", "72.1%", "66.7%"],187        ["R² (log)", "0.789", "0.743"],188        ["Median ratio (target 0.90-1.10)", "0.995", "0.961"],189        ["COD (target ≤ 15-20)", "22.7 (condos 11.9)", "23.7"],190        ["PRD (target 0.98-1.03)", "1.092", "1.075"],191        ["PRB (target ±0.05)", "−0.104", "−0.082"],192      ],193    },194  },195  {196    num: "05",197    title: "Online estimation engine",198    paras: [199      "At consultation time, the displayed estimate blends two independent sources. (1) The precomputed hedonic estimate. (2) A comparables estimate: candidate sales are fetched in an adaptive radius (2.2 km, widened up to ~28 km in thin markets, minimum 30 candidates over 30-36 months), filtered by type family and floor area (±20%, relaxed to ±40%, dropped below 6 candidates).",200      "Each comparable is adjusted, in displayed dollars: market adjustment (monthly index, section 06), area adjustment (50% of the comp's $/m² per m² of difference, capped at ±25%), age adjustment (0.5%/year, capped at ±10%). Weights are the product of three Gaussians: distance (σ = 1,500 m), recency (σ = 24 months) and area similarity (σ = 25%). The comparables estimate is the weighted median of adjusted prices (best 12 kept).",201      "Blend: 65% model + 35% comparables when both exist (≥ 3 comps); otherwise the available source alone. The displayed range is the model's P10-P90 interval re-centred on the final estimate.",202      "The confidence index (0-100; A ≥ 75, B ≥ 60, C ≥ 45, D < 45) aggregates comp count (+2.5 each, max 25), comp dispersion (up to +20), model availability (+15) and a penalty for range width beyond 30%. No estimate is ever shown without its confidence level.",203    ],204  },205  {206    num: "06",207    title: "Monthly market index",208    paras: [209      "Time adjustment relies on a monthly index per property type: the median price per square metre of that month's sales (minimum 5), smoothed with a centred 3-month rolling median, normalized to the latest observed month.",210    ],211  },212  {213    num: "07",214    title: "Known limitations",215    paras: [216      "Methodological honesty requires naming what the system cannot see. Interior renovations, garages, pools and upkeep do not appear in open roll data. In thin rural markets, dispersion exceeds urban IAAO targets — the confidence index reflects it. Units in the same condo tower share one geographic point: without an apartment number, search may return a neighbouring unit. Assessed values used as features are set 18-24 months before taking effect. Finally, a statistical estimate, however rigorous, does not replace a chartered appraiser's evaluation (OEAQ) or a broker's analysis for a listing.",217    ],218  },219  {220    num: "08",221    title: "Cost approach — Cost tab",222    paras: [223      "The Cost tab applies the third appraisal approach: V = land value + replacement cost new (RCN) − depreciation. It is a REPLACEMENT cost (modern equivalent components: 2 × 6 R24 wall, R50 attic, I-joists), not an identical reproduction cost. The formula is never hidden and every number is traceable: source → observation → unit conversion → canonical price → formula → result.",224      "Sources. Labour: APCHQ public 'hourly labour cost' grids (based on CCQ collective agreements, light residential sector, journeyperson) — full EMPLOYER cost (wage + 13 % vacation + benefits + EI, QPIP, HSF, CCQ, CNESST…), never the bare wage; the CCQ connector runs in change-detection mode. Indexes: Statistics Canada 18-10-0289-01 (building construction price indexes, Montréal and Québec, residential and divisions), quarterly, to update older observations (Cost_t1 = Cost_t0 × Index_t1 / Index_t0). Materials: public price observations at Canac, BMR and Patrick Morin (URL and date kept, regular price preferred over sale price, robust multi-source median, outliers flagged but never deleted). Items without a retail observation (delivered concrete, trusses, custom windows, cabinets…): internal reference price labelled 'assumption', which lowers observed coverage and confidence. Benchmarks: Altus Group (Canadian Cost Guide) via manual import after legal download; RSMeans via licensed import only. The interface never triggers a crawl: source synchronisation runs overnight, outside the user path.",225      "Assemblies and quantities. An assembly (≈ 100 in the catalogue: foundations, structure, envelope, roofing, openings, finishes, kitchen, bathroom, plumbing, HVAC, electrical, exterior) combines items (quantity per unit × (1 + waste) × price), trade hours (× employer cost) and equipment. The geometry engine derives quantities from the building description with take-off assumptions shown in every formula: aspect ratio 1.5, 9 ft storey height, studs 16 in o.c., one 10 sq ft window per 90 sq ft of floor (≈ 11 % glazed), 0.09 lin ft of partition per sq ft, roof = footprint × slope factor × 1.10 overhangs, excavation = (footprint + 3 ft × perimeter) × depth. Any quantity can be replaced (source 'entered') and any assembly excluded.",226      "Direct, indirect, overhead, profit, contingency. Direct = Σ(materials × material factor + labour × labour factor + equipment × equipment factor). Indirects = direct × Σ percentages (plans 3 %, permits 0.8 %, inspection 0.5 %, insurance 1.5 %, mobilization 1.5 %, site management 3 %, financing 2 %, administration 1 % — documented, editable assumptions). Overhead = (direct + indirects) × 7 %; profit = (direct + indirects + overhead) × 8 %; contingency = (direct + indirects) × 3 % — three distinct notions, never merged. RCN = direct + indirects + overhead + profit + contingency.",227      "Location. Industry collective agreements (Act R-20) set uniform wages across Québec: labour factor 1.00 everywhere except remote regions (Abitibi, North Shore, Gaspésie, Northern Québec — premiums and lodging). Material and equipment factors (1.00 in Montréal, up to 1.20 in Northern Québec) reflect transport and availability: documented assumptions, resolved by municipality, then nearest centre, then 'rural'.",228      "Depreciation. Physical: age-life method (effective age ÷ economic life, capped at 90 %) or, in advanced mode, component by component — each group (structure 75 yrs, roof 22, envelope 40, openings 30, interior 25, kitchen 20, bathrooms 22, mechanical 22, electrical 35, site 25) carries its own life and condition; condition → effective-age rules (new 0 %, excellent 10 %, renovated 12 %, very good 20 %, good 35 %, average 55 %, below average 70 %, poor 85 % of life) are assumptions stored in the database and editable. Functional: entered deficiencies, curable (cost to cure) or incurable (value loss). External: entered amount, 0 $ by default — never computed without evidence.",229      "Land. In property mode, the 2026 roll land value (MAMH) is prefilled and identified as such; you may keep, replace (land comparables, residual technique) or remove it. The roll value is not the land's market value: it is set 18 to 24 months before the roll takes effect.",230      "Range and confidence. Every line carries a standard deviation (observed price dispersion or ±8 % observed / ±15 % reference / ±20 % assumption, hours ±15 %, quantity uncertainty by source); lines combine in root-sum-square, plus a systematic component (location 2-4 %, assembly model 5 %); P10/P90 = RCN ± 1.28 σ. The confidence index (0-100, A ≥ 80, B ≥ 65, C ≥ 50, D) adds observation freshness (20), observed material coverage (20), location (15), official labour (15), benchmarks (10) and building-attribute completeness (20). An out-of-range benchmark is flagged, never used to recalibrate the engine.",231      "Listings for sale. For a property actually for sale (For-sale tab), the AI building analysis reads the photos and the listing text to infer the visible components (structure, claddings, roofing, windows, finishes, condition); every inference carries its confidence and provenance, can be corrected by hand, then is costed by the same deterministic engine. The model never produces an amount: it describes, the engine prices.",232      "Reproducibility and limits. Every estimate records its method, cost-database and assembly versions, the price date and a snapshot of the prices and rates used: it can be rebuilt identically. Limits: generic quantity assumptions (no plans), reference prices for part of the items, depreciation dependent on entered condition, condos limited to the unit (common areas excluded). The three readings of value (hedonic, comparables, cost) are compared, never averaged.",233    ],234    kv: [235      ["Formula", "V = land + RCN − (D_phys + D_func + D_ext)"],236      ["Labour", "APCHQ (full employer cost) · CCQ"],237      ["Indexes", "StatCan 18-10-0289-01 (quarterly)"],238      ["Materials", "Canac · BMR · Patrick Morin (+ labelled references)"],239      ["Assemblies", "≈ 100, ≈ 550 components, ≈ 180 items"],240      ["Confidence", "20 + 20 + 15 + 15 + 10 + 20 = 100"],241    ],242  },243  {244    num: "09",245    title: "The measure put to the market test — properties for sale",246    paras: [247      "The For-sale tab confronts the engine with market reality: over 70,000 properties actually for sale in Québec (Immo-Ka database, refreshed nightly) are spatially matched to their assessment-roll unit (lat/lng bbox, tie-broken by type, floor area and year; median distance ≈ 14 m), then valued by the engine exactly like an ordinary sheet. The /stats/marche page publishes the outcome: median estimate / asking-price ratio, median absolute error (MdAPE), A-D confidence calibration, performance by type, region and price bracket.",248      "The method duel. Each listing is also appraised with the classic approaches — calibrated cost approach (market land + net unit building cost, calibrated on the last 18 months of sales using each building's value composition in the roll), indexed roll (IAAO) and hedonic — and by a median ensemble. The 65/35 hybrid remains the main measure; the gap between readings is information, not a defect.",249      "The valuation workshop. On every sheet you can redo the valuation yourself: a pool of real sales (and active listings) around the subject, your choice of comparables, a dollar adjustment grid prefilled by the engine (market, area, age) and extended at will, weights, reconciliation (median, mean, weighted), then a confrontation with the Vrai-Prix measure, the asking price and the roll. Your choices stay on your device.",250      "What the gap really measures. The asking price is not market value: the gap between the measure and the displayed price adds the model's error AND the seller's marketing strategy. Only the closed sale settles it — which is why the training corpus remains the 745,000 real transactions, not the listings.",251    ],252    kv: [253      ["Listings measured", "≈ 66,000 of ≈ 71,000 active"],254      ["Matching", "spatial ≤ 75 m (fallback 250 m), median distance ≈ 14 m"],255      ["Main measure", "hybrid 65 % model · 35 % comparables"],256      ["Refresh", "daily (Immo-Ka snapshot + re-valuation)"],257    ],258  },259];260261export default function MethodologieClient() {262  const { lang } = useLang();263  const fr = lang === "fr";264  const sections = fr ? FR : EN;265  return (266    <div className="py-10">267      <nav className="vp-mono mb-8 flex items-center gap-2 text-[11.5px] uppercase tracking-[0.06em] text-ink-3">268        <Link href="/" className="border-b-[1.5px] border-transparent hover:border-green hover:text-green">269          Vrai-Prix270        </Link>271        <span>/</span>272        <span>{fr ? "Méthodologie" : "Methodology"}</span>273      </nav>274      <span className="kicker">{fr ? "Le calcul, en entier" : "The math, in full"}</span>275      <h1 className="vp-display mt-3 max-w-3xl text-[clamp(32px,5.5vw,58px)] font-bold uppercase leading-[0.98] tracking-[-0.03em]">276        {fr ? (277          <>278            Voici exactement279            <br />280            <span className="hl">comment le prix est calculé</span>281          </>282        ) : (283          <>284            Here is exactly285            <br />286            <span className="hl">how the price is computed</span>287          </>288        )}289      </h1>290      <p className="mt-4 max-w-2xl text-[15.5px] leading-relaxed text-ink-2">291        {fr292          ? "Notre différenciateur est la transparence totale. Cette page documente chaque étape — données, fusion, modèle, validation, moteur — au niveau de détail d'un rapport technique."293          : "Our differentiator is total transparency. This page documents every step — data, merge, model, validation, engine — at technical-report depth."}294      </p>295296      {/* la chaîne de calcul, d'un coup d'œil */}297      <ol className="mt-9 grid gap-x-6 gap-y-4 border-y border-[var(--line)] py-5 sm:grid-cols-3 lg:grid-cols-6">298        {(fr299          ? ["Propriété identifiée", "Rôle d'évaluation récupéré", "Ventes comparables sélectionnées", "Caractéristiques ajustées", "Estimation calculée", "Intervalle de confiance produit"]300          : ["Property identified", "Assessment roll retrieved", "Comparable sales selected", "Characteristics adjusted", "Estimate computed", "Confidence interval produced"]301        ).map((step, i, arr) => (302          <li key={step} className="relative flex items-start gap-2.5 lg:block">303            <span className={`vp-mono text-[11px] font-bold ${i === arr.length - 1 ? "text-accent" : "text-ink-3"}`}>304              0{i + 1}305            </span>306            <p className="vp-display text-[13px] font-bold uppercase leading-tight tracking-[-0.01em] lg:mt-1.5">307              {step}308              {i < arr.length - 1 && <span className="ml-1.5 text-ink-3" aria-hidden="true">→</span>}309            </p>310          </li>311        ))}312      </ol>313314      <div className="mt-12 space-y-12">315        {sections.map((sct) => (316          <section key={sct.num} className="sec grid gap-x-10 gap-y-3 lg:grid-cols-[110px_1fr]">317            <span className="vp-display text-[clamp(26px,3vw,36px)] font-bold leading-none text-accent lg:pt-1">318              {sct.num}319            </span>320            <div>321              <h2 className="vp-display text-[clamp(19px,2.4vw,24px)] font-bold uppercase tracking-[-0.02em]">322                {sct.title}323              </h2>324              <div className="mt-4 space-y-3.5">325                {sct.paras.map((p, i) => (326                  <p key={i} className="max-w-3xl text-[14.5px] leading-relaxed text-ink-2">327                    {p}328                  </p>329                ))}330              </div>331              {sct.kv && (332                <div className="mt-5 grid grid-cols-2 gap-x-6 gap-y-2 sm:grid-cols-3">333                  {sct.kv.map(([k, v]) => (334                    <div key={k} className="kv-cell">335                      <p className="k">{k}</p>336                      <p className="v">{v}</p>337                    </div>338                  ))}339                </div>340              )}341              {sct.table && (342                <div className="src-wrap mt-6 max-w-3xl">343                  <table className="src-table">344                    <thead>345                      <tr>346                        {sct.table.head.map((h) => (347                          <th key={h}>{h}</th>348                        ))}349                      </tr>350                    </thead>351                    <tbody>352                      {sct.table.rows.map(([a, b, c]) => (353                        <tr key={a}>354                          <td className="font-semibold">{a}</td>355                          <td className="vp-mono text-[12.5px]">{b}</td>356                          <td className="vp-mono text-[12.5px]">{c}</td>357                        </tr>358                      ))}359                    </tbody>360                  </table>361                </div>362              )}363            </div>364          </section>365        ))}366      </div>367368      <p className="vp-mono mt-8 text-[11px] uppercase tracking-[0.06em] text-ink-3">369        {fr370          ? "Sources : rôles d'évaluation foncière du Québec (MAMH, données ouvertes) · IAAO Standard on Ratio Studies · IAAO Standard on AVMs"371          : "Sources: Québec property assessment rolls (MAMH, open data) · IAAO Standard on Ratio Studies · IAAO Standard on AVMs"}372      </p>373    </div>374  );375}376
Files main
Menu

Theme