spb/traite-evaluation-qc
Public
1# Inventaire (229 scripts, 27 fichiers de données, 3 classeurs, 219 figures)23- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas1.py` — Cas 1 — maison unifamiliale à Gatineau (données synthétiques) : calculs PARTAGÉS par les chapitres 9, 14, 16-24- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas2.py` — Cas 2 — triplex à Québec, Limoilou (données synthétiques) : calculs PARTAGÉS par les chapitres 26, 27, 32 et 45- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas3.py` — Cas 3 — immeuble de 12 logements à Montréal (données synthétiques) : calculs PARTAGÉS par les chapitres 26-31,6- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas4.py` — Cas 4 — portefeuille multirésidentiel interrégional (données synthétiques) : calculs PARTAGÉS par les chapitre7- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}comparables.py` — Méthode de comparaison : grille d'ajustements, ajustements séquentiels, ventes appariées, réconciliation.8- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cout.py` — Méthode du coût : coût neuf, dépréciation (physique, fonctionnelle, externe), extraction de marché.9- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}finance.py` — Mathématiques financières de l'évaluation immobilière (conventions déclarées).10- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}geo.py` — Outils géospatiaux génériques du traité (chapitre 38 ; réutilisables aux chapitres 43 et 48).11- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}hedonique.py` — Outils économétriques : hédonique semi-log, indices (dummies temporelles, ventes répétées BMN / Case–Shiller),12- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}panel.py` — Données de panel et identification causale (chapitre 36) : transformation within, erreurs-types en grappes (CR13- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}style.py` — Style graphique du traité (Matplotlib). Palette validée : styles/palette.json.14- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}synth.py` — Génération des quatre dossiers de cas SYNTHÉTIQUES du traité.15- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch01\_valeur\_prix.py` — Chapitre 1 — Théorie de la valeur et prix immobiliers : tous les chiffres cités dans le texte (DONNÉES SYNTHÉT16- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch02\_droits.py` — Chapitre 2 — Droits immobiliers et bases de valeur : calculs de l'exemple intégral sur le cas 3 (12 logements,17- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch03\_cycles.py` — Chapitre 3 — Offre, demande et cycles : calculs de l'exemple intégral et des tableaux.18- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch04\_marches.py` — Chapitre 4 — Marchés résidentiels québécois : lecture des DONNÉES RÉELLES de data/raw et calculs cités dans le19- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch05\_rente.py` — Chapitre 5 — Économie urbaine et rente foncière : calculs de l'exemple intégral et des encadrés.20- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch06\_demembrements.py` — Chapitre 6 — Code civil et droit immobilier : effets des modalités et démembrements du droit de propriété sur 21- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch07\_servitudes\_copro.py` — Chapitre 7 — Cadastre, titres, servitudes et copropriété : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 20222- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch08\_zonage.py` — Chapitre 8 — Zonage et urbanisme : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral.23- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch09\_ratios.py` — Chapitre 9 — Évaluation foncière municipale et contestation (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031).24- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch10\_controle\_rapport.py` — Chapitre 10 — contrôle automatique de la présence des douze éléments du contenu minimal d'un rapport écrit25- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch10\_matrice\_normes.py` — Chapitre 10 — statistiques descriptives de la matrice des dispositions normatives du domaine C26- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch11\_inspection.py` — Chapitre 11 — inspection synthétique du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) : fiche d'état par27- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch12\_mesurage.py` — Chapitre 12 — Mesurage, superficies et plans : calculs du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES).28- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch13\_sources.py` — Chapitre 13 — Transactions, inscriptions, loyers et coûts : lecture et description des fichiers RÉELS de data/29- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch14\_nettoyage.py` — Chapitre 14 — Nettoyage, géocodage et qualité des données (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES).30- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch15\_segmentation.py` — Chapitre 15 — Études de marché et segmentation. Calculs de l'exemple intégral et des tableaux du chapitre.31- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch16\_selection.py` — Chapitre 16 — sélection des comparables pour le sujet du cas 1 (Gatineau, données synthétiques).32- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch17\_ajustements.py` — Chapitre 17 — ajustements qualitatifs et quantitatifs des cinq comparables du cas 1 (Gatineau, données synthét33- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch18\_hedonique.py` — Chapitre 18 — Modèles hédoniques : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUE34- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch19\_spatial.py` — Chapitre 19 — modèles spatiaux et temporels sur le cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031).35- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch20\_reconciliation.py` — Chapitre 20 — réconciliation et incertitude : combinaison des indications du cas 1 (Gatineau, données synthéti36- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch21\_cout\_neuf.py` — Chapitre 21 — coût neuf (remplacement) du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) et indexation IPCB (37- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch22\_metre.py` — Chapitre 22 — métré et quantités du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES).38- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch23\_structure\_couts.py` — Chapitre 23 — coûts directs et indirects : structure complète du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTI39- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch24\_depreciation.py` — Chapitre 24 — dépréciation et désuétudes du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES).40- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch25\_terrain.py` — Chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031).41- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch26\_etat\_locatif.py` — Chapitre 26 — Baux et loyers : calculs de l'exemple intégral (cas 3, 12 logements à Montréal ; cas 2, triplex 42- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch27\_revenus.py` — Chapitre 27 — Revenus potentiels, vacance et pertes : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (t43- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch28\_depenses.py` — Chapitre 28 — Dépenses, réserves, CAPEX et RNE : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (triple44- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch29\_capitalisation.py` — Chapitre 29 — Capitalisation directe : calculs du cas 3 (12 logements, Rosemont ; DONNÉES SYNTHÉTIQUES).45- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch30\_dcf.py` — Chapitre 30 — Flux actualisés et valeur terminale : exemple intégral du cas 3 (12 logements, Montréal,46- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch31\_financement.py` — Chapitre 31 — Financement, levier, RCD et RPV : calculs du chapitre (cas 3, 12 logements, Montréal,47- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch32\_plex.py` — Chapitre 32 — Duplex à quintuplex : calculs de l'exemple intégral (cas 2, triplex de Limoilou, données SYNTHÉT48- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch33\_six\_logements.py` — Chapitre 33 — Immeubles de six logements et plus : tous les chiffres cités dans manuscript/chapters/ch33.tex49- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch34\_tal.py` — Chapitre 34 — TAL, encadrement locatif et scénarios : calculs du chapitre (cas 3, 12 logements, Montréal,50- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch35\_indices.py` — Chapitre 35 — Indices immobiliers et ventes répétées : exemple intégral sur le cas 1 (Gatineau, DONNÉES SYNTHÉ51- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch36\_panel.py` — Chapitre 36 — Données de panel et identification causale : choc simulé sur les séries de RNE du cas 452- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch37\_ml.py` — Chapitre 37 — Apprentissage automatique et explicabilité : exemple intégral sur les 600 ventes du cas 153- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch38\_sig.py` — Chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUES, graine 254- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch39\_bayes.py` — Chapitre 39 — Modèles bayésiens et intervalles : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉ55- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch40\_montecarlo.py` — Chapitre 40 — Monte-Carlo et stress tests (DONNÉES SYNTHÉTIQUES : cas 3, 12 logements à Montréal ; cas 4, port56- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch41\_phmu.py` — Chapitre 41 — Plus haute et meilleure utilisation, terrains et développement : calculs de l'exemple intégral.57- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch42\_copro.py` — Chapitre 42 — Copropriétés et conversions : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 20261031).58- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch43\_risques.py` — Chapitre 43 — Risques environnementaux et sinistres : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral.59- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch44\_renovation.py` — Chapitre 44 — rénovation et efficacité énergétique : analyse coût-bénéfice de deux mesures sur le sujet du cas60- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch45\_dossier.py` — Chapitre 45 — Cas 1 : maison unifamiliale à Gatineau (DONNÉES SYNTHÉTIQUES, propriété fictive) — dossier compl61- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch46\_dossier.py` — Chapitre 46 — Cas 2 : triplex à Québec (Limoilou), dossier complet (DONNÉES SYNTHÉTIQUES, graine 20261031).62- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch47\_dossier.py` — Chapitre 47 — Cas 3 : immeuble de 12 logements à Montréal (DONNÉES SYNTHÉTIQUES, immeuble fictif).63- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch48\_portefeuille.py` — Chapitre 48 — Cas 4 : portefeuille multirésidentiel interrégional (DONNÉES SYNTHÉTIQUES, 48 immeubles fictifs,64- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}generate\_all.py` — Régénère tous les jeux synthétiques (graine fixée). Usage : python3 -m analysis.python.cases.generate\_all (de65- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}make\_spreadsheets.py` — Classeurs Excel du traité (openpyxl, formules vivantes) : spreadsheets/66- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch01\_figures.py` — Figures du chapitre 1 (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031 ; simulations étiquetées).67- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch02\_decomposition.py` — Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) revenu net d'exploitation projeté avec les baux en place (dro68- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch02\_ecart\_logements.py` — Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) ratio loyer contractuel / loyer de marché selon l'ancienneté 69- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_cout\_usage.py` — Figure ch03 — Coût d'usage du logement au Québec, 2001-2026, données RÉELLES (Banque du Canada, Valet : V8069170- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_cycle.py` — Figures ch03 — Simulation d'un cycle stock-flux (SYNTHÉTIQUE, analysis/python/cases/ch03\_cycles.py, paramètre71- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_mises\_chantier.py` — Figure ch03 — Mises en chantier au Québec, données RÉELLES : Statistique Canada (SCHL), tableau 34-10-0135-01,72- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_quadrants.py` — Figure ch03 — Modèle des quatre quadrants (DiPasquale–Wheaton) tracé à partir des paramètres pédagogiques du m73- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_carte.py` — Figure ch04 — carte schématique des six RMR du Québec : position des centres (coordonnées de la Base de donnée74- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_ipln.py` — Figure ch04 — Indice des prix des logements neufs (IPLN), total maison et terrain, déc. 2016 = 100, janvier 2075- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_mutations.py` — Figure ch04 — taux effectif des droits sur les mutations immobilières (droit / base d'imposition) selon la bas76- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_parc.py` — Figure ch04 — structure du parc de logements : ménages privés selon le type de construction, Québec et Canada 77- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_schl.py` — Figure ch04 — marché locatif par RMR : taux d'inoccupation (octobre 2024 et 2025) et loyer moyen des logements78- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_taux.py` — Figure ch04 — taux d'intérêt 2000-2026 : taux hypothécaire conventionnel 5 ans affiché (V80691335, hebdomadair79- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_capitalisation.py` — Figure ch05 — sensibilité de la capitalisation d'un écart de taxe foncière : perte de valeur (en \% de la vale80- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_cas1\_distance.py` — Figure ch05 — prix par mètre carré habitable et distance au centre, cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, gra81- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_gradient.py` — Figure ch05 — gradients du modèle monocentrique simulé (PARAMÈTRES PÉDAGOGIQUES DÉCLARÉS dans ch05\_rente.PARA82- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_rmr.py` — Figure ch05 — valeur par logement par RMR du portefeuille du cas 4 (DONNÉES SYNTHÉTIQUES, graine 20261031) et83- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_surface.py` — Figure ch05 — surface de rente bicentrique simulée (courbes de niveau) : enveloppe de deux surfaces d'enchère84- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch06\_emphyteose.py` — Figure ch06 — emphytéose sur un immeuble locatif dont le RNE est celui du cas 3 (DONNÉES SYNTHÉTIQUES, hypothè85- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch06\_usufruit.py` — Figure ch06 — usufruit viager sur la maison du cas 1 (DONNÉES SYNTHÉTIQUES, table de mortalité synthétique) :86- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_charges.py` — Figure ch07 — répartition des charges communes annuelles entre les huit fractions (DONNÉES SYNTHÉTIQUES).87- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_fonds.py` — Figure ch07 — trajectoire du fonds de prévoyance sur 25 ans selon trois cotisations (DONNÉES SYNTHÉTIQUES).88- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_paires.py` — Figure ch07 — ventes appariées : prix sans et avec servitude de passage pour 12 paires (DONNÉES SYNTHÉTIQUES, 89- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_sensibilite.py` — Figure ch07 — sensibilité de la cotisation de seuil A* à l'inflation des coûts et au rendement du fonds (DONNÉ90- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_carte\_zones.py` — Figure ch08 — carte synthétique des zones de « Val-Fictif » (DONNÉES SYNTHÉTIQUES) : 400 lots, cinq zones,91- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_option\_sensibilite.py` — Figure ch08 — sensibilité des effets de valeur du zonage (DONNÉES SYNTHÉTIQUES / hypothèses déclarées) :92- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_rezonage\_paires.py` — Figure ch08 — effet d'un rezonage mesuré par ventes appariées et par doubles différences (DONNÉES SYNTHÉTIQUES93- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch09\_ratios.py` — Figures du chapitre 9 (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031) :94- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch10\_figures.py` — Chapitre 10 — figures Matplotlib :95- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_fiche\_etat.py` — Figures ch11 — (1) fiche d'état du sujet du cas 1 : fraction de vie utile consommée a\_eff/L par composante, c96- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_frise\_pathologies.py` — Figure ch11 — frise INDICATIVE des pathologies et matériaux à risque selon la période de construction (Québec)97- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_matrice\_age\_effectif.py` — Figure ch11 — matrice état × âge chronologique → âge effectif (convention déclarée de l'ouvrage, chapitre 11).98- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch12\_figures.py` — Figures du chapitre 12 (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) :99- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_biais\_datation.py` — Figure ch13 — biais relatif de l'ajustement de conditions du marché lorsqu'une vente est datée à l'acte notari100- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_indices.py` — Figure ch13 — trois indices souvent confondus, données RÉELLES de data/raw, rebasés T1 2017 = 100 :101- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_rfu.py` — Figure ch13 — composition de l'évaluation imposable uniformisée 2026 (MAMH, richesse foncière uniformisée, CC 102- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_schl.py` — Figure ch13 — SCHL, Enquête sur les logements locatifs d'octobre 2025 (données RÉELLES, fichier rmr-quebec-202103- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch14\_figures.py` — Chapitre 14 — figures (données SYNTHÉTIQUES, graine 20261031). Idempotent.104- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch15\_figures.py` — Figures du chapitre 15 — Études de marché et segmentation. Produit dans assets/figures/ch15/ :105- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch17\_figures.py` — Chapitre 17 — figures : cascade d'ajustements (G0404), dispersion des paires, prix bruts vs ajustés, tornade d106- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch18\_figures.py` — Figures du chapitre 18 — Modèles hédoniques (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031).107- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch19\_figures.py` — Figures du chapitre 19 — modèles spatiaux et temporels (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031108- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch20\_figures.py` — Chapitre 20 — figures : densités bootstrap et énumération exhaustive ; résidus des candidats et élargissement 109- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_decomposition.py` — Figure ch21 — décomposition du coût neuf du sujet du cas 1 par corps de métier (DONNÉES SYNTHÉTIQUES, graine 2110- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_ipcb.py` — Figure ch21 — IPCB Montréal (Statistique Canada, tableau 18-10-0289-01, base 2023 = 100), données RÉELLES lues111- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_sensibilite.py` — Figure ch21 — sensibilité du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTIQUES) : (a) grille taux d'indirects 112- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch22\_ecarts.py` — Figure ch22 — métré de contrôle du sujet du cas 1 : écart relatif entre la quantité recalculée depuis le plan 113- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch22\_repartition.py` — Figure ch22 — répartition du devis du sujet du cas 1 par corps de métier et par type d'unité de mesure114- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_ipcb\_divisions.py` — Figure ch23 — IPCB Montréal, maison individuelle, par division de travaux (Statistique Canada 18-10-0289-01), 115- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_ipcb\_types.py` — Figure ch23 — IPCB (Statistique Canada 18-10-0289-01, 2023 = 100), données RÉELLES lues dans data/raw :116- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_sensibilite.py` — Figure ch23 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1 ; taux documenté Banque du Canada V80691335) :117- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_structure.py` — Figure ch23 — cascade de formation du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, graine 20261031) :118- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_composantes.py` — Figure ch24 — composantes de courte durée du sujet du cas 1 : coût neuf et dépréciation ventilée par composant119- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_courbes.py` — Figure ch24 — courbes de dépréciation du bâtiment en fonction de l'âge (DONNÉES SYNTHÉTIQUES, cas 1, graine 20120- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_decomposition.py` — Figure ch24 — décomposition de la valeur par le coût du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, graine 20261031)121- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_sensibilite.py` — Figure ch24 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) : (a) taux de dépréciation âge-vie mo122- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch25\_figures.py` — Figures du chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031).123- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch26\_figures.py` — Chapitre 26 — figures (4) : loyer contractuel vs loyer de marché par logement (cas 3), distribution de l'ancie124- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch27\_figures.py` — Chapitre 27 — figures (4) :125- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch28\_figures.py` — Chapitre 28 — figures (5) : cascade RBP → RNE (cas 3) ; structure des dépenses en \% du RBE (cas 3 vs cas 2) ;126- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch29\_figures.py` — Chapitre 29 — figures (5) : taux extraits (histogramme), taux vs état/taille (nuage), surface V(RNE, R) (carte127- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_flux.py` — Ch. 30, figure « flux » : RNE, CAPEX et flux net avant dette (barres) du cas 3 (DONNÉES SYNTHÉTIQUES), puis va128- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_gdc.py` — Ch. 30, figure « gdc » (DONNÉES RÉELLES, Banque du Canada, API Valet, téléchargées le 2026-10-31) : rendements129- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_loyers.py` — Ch. 30, figure « loyers » : trajectoire du revenu brut potentiel contractuel (indexé au taux TAL + relocation 130- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_surface.py` — Ch. 30, figure « surface » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) selon le taux d'actualisation r (ligne131- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_tornade.py` — Ch. 30, figure « tornade » : variation de la valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour un choc bas/haut 132- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_levier.py` — Ch. 31, figure « levier » (DONNÉES SYNTHÉTIQUES, cas 3) : TRI des fonds propres sur dix ans et rendement coura133- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_service\_dette.py` — Ch. 31, figure « service-dette » (DONNÉES SYNTHÉTIQUES, cas 3) : service de la dette annuel du prêt de 1 475 9134- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_solde.py` — Ch. 31, figure « solde » (DONNÉES SYNTHÉTIQUES, cas 3) : trajectoire du solde du prêt de 1 475 959 \$ à 4,12 \135- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_taux\_bdc.py` — Ch. 31, figure « taux-bdc » (DONNÉES RÉELLES, Banque du Canada, API Valet, téléchargées le 2026-10-31) : taux 136- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch32\_figures.py` — Figures du chapitre 32 — Duplex à quintuplex (données SYNTHÉTIQUES du cas 2, sauf la figure des médianes APCIQ137- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch33\_figures.py` — Chapitre 33 — figures (4) : (1) SCHL, île de Montréal, loyers et inoccupation par taille d'immeuble et par ann138- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_calcul\_tal.py` — Ch. 34, figure « exemple de calcul TAL » : composantes de l'augmentation mensuelle du logement 103 du cas 3 (D139- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_ipc\_base.py` — Ch. 34, figure « IPC et pourcentage de base » (DONNÉES RÉELLES : Statistique Canada, tableau 18-10-0004-01, IP140- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_rotation.py` — Ch. 34, figure « rotation espérée » : (gauche) rapport espéré loyer contractuel / loyer de marché d'un logemen141- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_trajectoires.py` — Ch. 34, figure « trajectoires RBP » : revenu brut potentiel contractuel du cas 3 (DONNÉES SYNTHÉTIQUES) selon 142- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_valeur\_scenarios.py` — Ch. 34, figure « valeur par scénario » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour la grille rotation (5143- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch35\_figures.py` — Figures du chapitre 35 — Indices immobiliers et ventes répétées.144- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch36\_figures.py` — Figures du chapitre 36 — données de panel et identification causale (cas 4, DONNÉES SYNTHÉTIQUES, graine 20261145- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch37\_figures.py` — Figures du chapitre 37 — Apprentissage automatique et explicabilité (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, gr146- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch38\_figures.py` — Figures du chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUE147- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch39\_figures.py` — Figures du chapitre 39 — Modèles bayésiens et intervalles (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261148- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch40\_figures.py` — Chapitre 40 — figures (DONNÉES SYNTHÉTIQUES : cas 3 et cas 4, graine 20261031).149- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch41\_figures.py` — Figures du chapitre 41 (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypothèses déclarées dans ch41\_phmu.p150- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_bloc\_piece.py` — Figure ch42 — valeur de conversion (somme des fractions nette des coûts, des frais, du portage et des délais) 151- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_cotisation\_speciale.py` — Figure ch42 — charges annuelles normalisées des huit fractions (ch. 7) et part de chacune dans une cotisation 152- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_grille.py` — Figure ch42 — grille de comparaison de la fraction F4 : prix observé, prix ajusté et décomposition des ajustem153- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_medianes.py` — Figure ch42 — prix médians Centris des copropriétés et des unifamiliales par territoire, T3 2026 (DONNÉES RÉEL154- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_carte\_cas4.py` — Figure ch43 — carte schématique des 48 immeubles du cas 4 (DONNÉES SYNTHÉTIQUES, coordonnées fictives autour d155- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_carte\_riverain.py` — Figure ch43 — municipalité fictive de Rivière-Fictive (DONNÉES SYNTHÉTIQUES) : 625 lots, classes d'exposition 156- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_did\_cas4.py` — Figure ch43 — doubles différences sur les séries de RNE du cas 4 avec choc d'inondation injecté en 2019 (DONNÉ157- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_effets\_methodes.py` — Figure ch43 — décote d'une zone inondable mesurée par quatre méthodes sur les ventes de Rivière-Fictive (DONNÉ158- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_placebos.py` — Figure ch43 — inférence de randomisation exacte pour le DiD du cas 4 (DONNÉES SYNTHÉTIQUES) : distribution des159- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_capitalisation.py` — Figure ch44 — (a) quatre lectures de ce que la thermopompe « vaut » pour le sujet du cas 1 : coût installé, co160- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_flux.py` — Figure ch44 — flux annuels des deux mesures énergétiques du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, hypothèses d161- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_heatmap\_van.py` — Figure ch44 — VAN des deux mesures selon le taux d'actualisation et la croissance du prix de l'électricité162- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_prime\_verte.py` — Figure ch44 — la « prime verte » dans la littérature : fourchettes publiées par étude (valeurs vérifiées, voir163- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch45\_figures.py` — Chapitre 45 — figures du dossier (cas 1, DONNÉES SYNTHÉTIQUES) : carte des comparables, cascade des ajustement164- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch46\_figures.py` — Chapitre 46 — figures du dossier « triplex à Québec » (DONNÉES SYNTHÉTIQUES, graine 20261031).165- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch47\_dossier\_figures.py` — Chapitre 47 — figures du dossier « 12 logements à Montréal » (DONNÉES SYNTHÉTIQUES, graine 20261031).166- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch48\_portefeuille\_figures.py` — Chapitre 48 — figures du dossier « portefeuille multirésidentiel interrégional » (DONNÉES SYNTHÉTIQUES, graine167- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}run\_all.py` — Exécute tous les scripts de figures (analysis/python/figures/chNN\_*.py) et les scripts R (analysis/r/chNN\_*.168- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}conftest.py` — 169- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cas1.py` — 170- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cas2\_cas4.py` — 171- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cas3.py` — 172- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch01.py` — Chapitre 1 — vérification des identités et des chiffres cités dans le texte et les solutions (données synthéti173- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch02.py` — Chapitre 2 — Droits immobiliers et bases de valeur : identités (additivité, Gordon, annuité) et valeurs citées174- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch03.py` — Tests du chapitre 3 — Offre, demande et cycles.175- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch04.py` — Tests du chapitre 4 — marchés résidentiels québécois : lecture des données réelles (Recensement 2021, 17-10-01176- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch05.py` — Tests du chapitre 5 — modèle monocentrique simulé, gradient prix/distance du cas 1, décomposition du cas 4,177- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch06.py` — Tests du chapitre 6 — démembrements et modalités du droit de propriété (DONNÉES SYNTHÉTIQUES, hypothèses décla178- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch07.py` — Tests du chapitre 7 — servitude par ventes appariées, quotes-parts et charges de copropriété, fonds de prévoya179- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch08.py` — Tests du chapitre 8 — zonage et urbanisme (DONNÉES SYNTHÉTIQUES, graine 20261031).180- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch09.py` — Tests du chapitre 9 — étude de ratios (COD, PRD, PRB, proportion médiane, facteur comparatif), dossiers de con181- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch10.py` — Chapitre 10 — vérification des chiffres cités dans le texte, les tableaux et les solutions.182- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch11.py` — Tests du chapitre 11 — inspection synthétique du sujet du cas 1, convention d'âge effectif, dépréciation venti183- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch12.py` — Tests du chapitre 12 — mesurage, superficies, propagation d'erreur (cas 1, données synthétiques).184- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch13.py` — Tests du chapitre 13 — lecture des fichiers RÉELS de data/raw (StatCan 18-10-0289-01, 18-10-0205-01, 18-10-000185- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch14.py` — Chapitre 14 — Nettoyage, géocodage et qualité des données : reproductibilité du jeu brut, identités des diagno186- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch15.py` — Chapitre 15 — Études de marché et segmentation : vérification des identités et des chiffres cités dans le text187- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch16.py` — Chapitre 16 — vérification des chiffres cités dans le texte et les solutions.188- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch17.py` — Chapitre 17 — vérification des identités et des chiffres cités dans le texte et les solutions (tolérances décl189- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch18.py` — Chapitre 18 — Modèles hédoniques : vérification des chiffres cités dans le texte, les tableaux et les solution190- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch19.py` — Chapitre 19 — tests des fonctions spatiales ajoutées à traite.hedonique et des chiffres cités dans le texte et191- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch20.py` — Chapitre 20 — réconciliation et incertitude : identités, chiffres cités dans le texte et dans les solutions (t192- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch21.py` — Tests du chapitre 21 — coût neuf du sujet du cas 1, IPCB Montréal, sensibilité et exercices.193- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch22.py` — Tests du chapitre 22 — métré et quantités du sujet du cas 1.194- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch23.py` — Tests du chapitre 23 — coûts directs et indirects : structure du devis du cas 1, financement intérimaire (trai195- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch24.py` — Tests du chapitre 24 — dépréciation et désuétudes du sujet du cas 1, extraction de marché, profils et exercice196- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch25.py` — Tests du chapitre 25 — Évaluation du terrain : jeu synthétique de terrains (graine 20261031), modèle hédonique197- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch26.py` — Tests du chapitre 26 — baux et loyers (cas 3 et cas 2, données synthétiques).198- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch27.py` — Tests du chapitre 27 — revenus potentiels, vacance et pertes (cas 3 et cas 2, données synthétiques ; tableaux 199- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch28.py` — Tests du chapitre 28 — dépenses, réserves, CAPEX et RNE (cas 3 et cas 2, données synthétiques).200- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch29.py` — Tests du chapitre 29 — capitalisation directe (cas 3, données synthétiques).201- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch30.py` — Tests du chapitre 30 — flux actualisés et valeur terminale (cas 3, données synthétiques).202- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch31.py` — Tests du chapitre 31 — financement, levier, RCD et RPV (cas 3, données synthétiques ; repères BdC réels).203- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch32.py` — Tests du chapitre 32 — Duplex à quintuplex : identités, cohérence avec traite.cas2 (partagé avec les ch. 26, 2204- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch33.py` — Tests du chapitre 33 (immeubles de six logements et plus) : identités, cohérence avec traite.cas3/cas4 et le c205- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch34.py` — Tests du chapitre 34 — TAL, encadrement locatif et scénarios (cas 3, données synthétiques ; IPC Québec réel).206- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch35.py` — Chapitre 35 — Indices immobiliers et ventes répétées : identités et valeurs citées dans le texte, les tableaux207- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch36.py` — Chapitre 36 — tests des fonctions de traite.panel (récupération d'effets connus sur données simulées) et des c208- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch37.py` — Chapitre 37 — Apprentissage automatique et explicabilité : reproductibilité et bornes de performance des chiff209- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch38.py` — Chapitre 38 — tests des fonctions de traite.geo et des chiffres cités dans manuscript/chapters/ch38.tex et sol210- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch39.py` — Chapitre 39 — Modèles bayésiens et intervalles : vérification des identités, des diagnostics et des chiffres c211- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch40.py` — Tests du chapitre 40 (Monte-Carlo et stress tests — données synthétiques, cas 3 et cas 4) : égalité stricte av212- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch41.py` — Tests du chapitre 41 — PHMU, terrains et développement (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypoth213- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch42.py` — Tests du chapitre 42 — fraction de copropriété (grille, réconciliation), cotisation spéciale, copropriété loca214- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch43.py` — Tests du chapitre 43 — risques environnementaux et sinistres (DONNÉES SYNTHÉTIQUES, graine 20261031).215- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch44.py` — Tests du chapitre 44 — rénovation et efficacité énergétique (sujet du cas 1, DONNÉES SYNTHÉTIQUES).216- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch45.py` — Tests du chapitre 45 (cas 1, maison unifamiliale à Gatineau — DONNÉES SYNTHÉTIQUES) : le dossier ne doit repre217- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch46.py` — Tests du chapitre 46 — Cas 2 : triplex à Québec (dossier complet, données SYNTHÉTIQUES).218- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch47.py` — Tests du chapitre 47 (cas 3, 12 logements à Montréal — données synthétiques) : identités, valeurs citées dans 219- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch48.py` — Tests du chapitre 48 (cas 4, portefeuille interrégional — données synthétiques) : identités du sommaire, cohér220- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_comparables.py` — 221- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cout.py` — 222- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_finance.py` — 223- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_hedonique.py` — 224- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_synth.py` — 225- outil `tools/\allowbreak{}check\_manuscript.py` — Vérifications du manuscrit : stubs restants, figures manquantes, scripts des figures,226- outil `tools/\allowbreak{}inventaire.py` — Inventaire des scripts, tests, données, figures et classeurs → manuscript/appendices/\_inventaire.tex (longtab227- outil `tools/\allowbreak{}make\_labels.py` — Écrit un fichier d'étiquettes (newlabel) pour tous les chapitres et annexes, afin que cref\{ch:NN\} / cref\{ap228- outil `tools/\allowbreak{}make\_release.py` — Assemble release/ : PDF, sources LaTeX, données, figures, scripts, classeurs, corrigés, rapport de validation.229- outil `tools/\allowbreak{}merge\_sources.py` — Fusionne sources/registry-*.csv → sources/registry.csv, sources/normes-*.csv → sources/normes-matrice.csv,230- outil `tools/\allowbreak{}compile\_chapter.sh` — !/usr/bin/env bash231- outil `tools/\allowbreak{}valider\_chapitre.sh` — !/usr/bin/env bash