Ch. 39 livré et validé (compilation isolée, tests, fusion des registres)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
17 changed files +426 −31
modified
analysis/python/figures/ch37_figures.py
+5 −5
@@ -51,8 +51,7 @@ def fig_apprentissage(res): | ||
| 51 | 51 | ax.plot(it, cc["validation"], color=palette.cat[i], lw=1.6, label=f"validation croisée, profondeur {d}") |
| 52 | 52 | ax.plot(it, cc["entrainement"], color=palette.cat[i], lw=1.0, ls="--", alpha=0.85) |
| 53 | 53 | ax.plot([cc["optimum"]], [cc["rmse_min"]], marker="o", ms=4, color=palette.cat[i]) |
| 54 | − ax.axhline(ref, color=palette.ink2, lw=0.9, ls=":") | |
| 55 | − ax.text(30, ref - 0.004, f"hédonique de référence (validation croisée) : {ref:.4f}".replace(".", ","), ha="left", va="top", fontsize=7.5, color=palette.ink2) | |
| 54 | + ax.axhline(ref, color=palette.ink2, lw=0.9, ls=":", label=f"hédonique de référence (validation croisée) : {ref:.4f}".replace(".", ",")) | |
| 56 | 55 | ax.plot([], [], color=palette.ink2, lw=1.0, ls="--", label="erreur d'entraînement (tiretés)") |
| 57 | 56 | ax.set_xlabel("Nombre d'arbres (itérations du boosting, ν = 0,03)"); ax.set_ylabel("Racine de l'erreur quadratique moyenne (log du prix)") |
| 58 | 57 | ax.set_ylim(0.0, 0.20); ax.set_xlim(0, 1200); ax.legend(loc="upper right", ncol=1) |
@@ -70,10 +69,11 @@ def fig_erreurs(res): | ||
| 70 | 69 | medianprops=dict(color=palette.ink, lw=1.2), whiskerprops=dict(color=palette.ink2, lw=0.8), capprops=dict(color=palette.ink2, lw=0.8)) |
| 71 | 70 | for patch, nom in zip(bp["boxes"], noms): patch.set_facecolor(COUL[nom]); patch.set_alpha(0.55); patch.set_edgecolor(palette.ink2) |
| 72 | 71 | ax.axhline(0, color=palette.ink2, lw=0.8, ls=":") |
| 73 | − ax.set_xticks(range(1, len(noms) + 1)) | |
| 74 | − ax.set_xticklabels([f"{COURT[n]}\nCOD {comp['metriques'][n][sch]['COD']:.1f}".replace(".", ",") for n in noms], rotation=45, ha="right", fontsize=7) | |
| 72 | + ax.set_xticks(range(1, len(noms) + 1)); ax.set_xticklabels([COURT[n] for n in noms], rotation=30, ha="right", fontsize=7.2) | |
| 75 | 73 | ax.set_title(titres[sch], fontsize=8.5) |
| 76 | − axes[0].set_ylabel("Erreur de prédiction hors échantillon (%)"); axes[0].set_ylim(-45, 45) | |
| 74 | + for i, nom in enumerate(noms): | |
| 75 | + ax.text(i + 1, -47, f"COD {comp['metriques'][nom][sch]['COD']:.1f}".replace(".", ","), ha="center", va="bottom", fontsize=6.4, color=palette.ink2, rotation=90) | |
| 76 | + axes[0].set_ylabel("Erreur de prédiction hors échantillon (%)"); axes[0].set_ylim(-48, 45) | |
| 77 | 77 | savefig(fig, "ch37/ch37-fig-erreurs.pdf") |
| 78 | 78 | |
| 79 | 79 | def fig_predit_observe(res): |
modified
analysis/python/figures/ch45_figures.py
+5 −5
@@ -62,7 +62,7 @@ def fig_cascade(D): | ||
| 62 | 62 | ax.plot([x[i] - 0.3 - w / 2, x[i] + w / 2], [r["prix_vente"]] * 2, color=palette.ink2, lw=0.5, ls=":") |
| 63 | 63 | ax.text(x[i] + 0.3, r["prix_ajuste"] + 5000, fmt_d(r["prix_ajuste"]), ha="center", fontsize=6.3) |
| 64 | 64 | ax.text(x[i] - 0.3, r["prix_vente"] + 5000, fmt_d(r["prix_vente"]), ha="center", fontsize=6.3, color=palette.ink2) |
| 65 | − ax.axhline(D["V_comp"], color=palette.ink, lw=1.0, ls="--"); ax.text(len(a) - 0.55, D["V_comp"] - 11000, f"valeur pondérée {fmt_d(D['V_comp'])}", ha="right", fontsize=7) | |
| 65 | + ax.axhline(D["V_comp"], color=palette.ink, lw=1.0, ls="--"); ax.text(1.0, D["V_comp"] + 4000, f"valeur pondérée {fmt_d(D['V_comp'])}", ha="center", fontsize=7) | |
| 66 | 66 | ax.axhline(D["V_hed"], color=palette.ink2, lw=0.8, ls=":"); ax.text(len(a) - 0.55, D["V_hed"] + 4000, f"prédiction hédonique {fmt_d(D['V_hed'])}", ha="right", fontsize=7, color=palette.ink2) |
| 67 | 67 | ax.set_xticks(x); ax.set_xticklabels([f"{r['id_vente']}\nbrut {r['ajust_brut_pct']*100:.1f} %\npoids {D['poids17'][i]:.3f}".replace(".", ",") for i, (_, r) in enumerate(a.iterrows())], fontsize=7) |
| 68 | 68 | ax.set_ylim(440000, 770000); ax.yaxis.set_major_formatter(FuncFormatter(fmt_k)) |
@@ -105,7 +105,7 @@ def fig_depreciation(D): | ||
| 105 | 105 | (b) décomposition de la valeur par le coût : terrain + coût neuf − dépréciation.""" |
| 106 | 106 | f = D["fiche"].copy(); f["dep"] = f["ratio"] * f["cout_neuf"] |
| 107 | 107 | f = f.sort_values("dep", ascending=True) |
| 108 | − fig, axes = plt.subplots(1, 2, figsize=(LARGEUR, 4.0), gridspec_kw={"width_ratios": [1.45, 1]}) | |
| 108 | + fig, axes = plt.subplots(1, 2, figsize=(LARGEUR, 4.0), gridspec_kw={"width_ratios": [1.3, 1]}) | |
| 109 | 109 | ax = axes[0] |
| 110 | 110 | y = np.arange(len(f)) |
| 111 | 111 | ax.barh(y, f["cout_neuf"], color=palette.cat[0], alpha=0.25, label="coût neuf de la composante") |
@@ -114,14 +114,14 @@ def fig_depreciation(D): | ||
| 114 | 114 | ax.xaxis.set_major_formatter(FuncFormatter(fmt_k)); ax.legend(loc="lower right", fontsize=6.5, frameon=False) |
| 115 | 115 | ax.set_title(f"(a) Ventilée : {fmt_d(D['dv11']['total'])} ({D['dv11']['taux']*100:.1f} % du coût neuf)".replace(".", ","), loc="left", fontsize=8) |
| 116 | 116 | ax = axes[1] |
| 117 | − cats = ["Terrain", "Coût\nneuf", "Dépréc.\nextraite", "Carence\nsalle d'eau", "Valeur\npar le coût"] | |
| 117 | + cats = ["Terrain", "Coût\nneuf", "Dépr.\nextraite", "Carence\nfonct.", "Valeur\ncoût"] | |
| 118 | 118 | vals = [D["V_L"], D["CN"], -D["D_ext"], -D["D_fonc"], D["V_cout"]] |
| 119 | 119 | bottoms = [0, D["V_L"], D["V_L"] + D["CN"] - D["D_ext"], D["V_L"] + D["CN"] - D["D_ext"] - D["D_fonc"], 0] |
| 120 | 120 | cols = [palette.cat[2], palette.cat[0], palette.cat[1], palette.cat[1], palette.ink] |
| 121 | 121 | ax.bar(cats, [abs(v) for v in vals], bottom=bottoms, color=cols, edgecolor="white", lw=0.5) |
| 122 | 122 | for i, (v, b) in enumerate(zip(vals, bottoms)): |
| 123 | 123 | if v < 0: |
| 124 | − ax.text(i, b + abs(v) / 2 if i == 2 else b - 12000, ("−" + fmt_d(abs(v))), ha="center", va="center", fontsize=6.3, color=palette.ink if i == 3 else "white") | |
| 124 | + ax.text(i, b + abs(v) / 2 if i == 2 else b - 16000, ("−" + fmt_d(abs(v))), ha="center", va="center", fontsize=6.0, color=palette.ink if i == 3 else "white") | |
| 125 | 125 | else: |
| 126 | 126 | ax.text(i, b + abs(v) + 8000, fmt_d(abs(v)), ha="center", fontsize=6.5) |
| 127 | 127 | ax.axhline(D["V_L"] + D["CN"], color=palette.ink2, lw=0.7, ls=":"); ax.text(0.0, D["V_L"] + D["CN"] + 30000, f"terrain + coût neuf\n{fmt_d(D['V_L'] + D['CN'])}", fontsize=6.5, ha="left", color=palette.ink2) |
@@ -150,7 +150,7 @@ def fig_financement(D): | ||
| 150 | 150 | ax.plot(ren["hausse_pb"], ren["paiement"], marker="o", color=palette.cat[1], lw=1.6, label="paiement mensuel") |
| 151 | 151 | for _, r in ren.iterrows(): |
| 152 | 152 | ax.annotate(f"{r['paiement']:,.0f} $\n({r['hausse_paiement_pct']*100:+.1f} %)".replace(",", " ").replace(".", ","), (r["hausse_pb"], r["paiement"]), textcoords="offset points", xytext=(0, 8), ha="center", fontsize=6.5) |
| 153 | − ax.axhline(F["minimale"]["paiement_mqr"], color=palette.cat[0], lw=0.9, ls="--"); ax.text(0, F["minimale"]["paiement_mqr"] + 25, "paiement au taux admissible initial (6,12 %)", fontsize=6.5, ha="left", color=palette.cat[0]) | |
| 153 | + ax.axhline(F["minimale"]["paiement_mqr"], color=palette.cat[0], lw=0.9, ls="--"); ax.text(0, F["minimale"]["paiement_mqr"] - 70, "paiement au taux admissible initial (6,12 %)", fontsize=6.5, ha="left", color=palette.cat[0]) | |
| 154 | 154 | ax.set_xlabel("Hausse du taux au renouvellement (points de base)"); ax.set_ylabel("Paiement mensuel ($)"); ax.set_ylim(2900, 4450) |
| 155 | 155 | ax.set_xticks(ren["hausse_pb"]); ax.set_title(f"(b) Solde à 60 mois {fmt_d(F['minimale']['solde_terme'])}, 20 ans restants", loc="left", fontsize=8) |
| 156 | 156 | fig.tight_layout(w_pad=1.5) |
modified
assets/figures/ch45/ch45-fig-carte-comparables.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch45/ch45-fig-depreciation.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch45/ch45-fig-financement.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch45/ch45-fig-fourchettes.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch45/ch45-fig-grille-cascade.pdf
+0 −0
Binary file not shown.
deleted
manuscript/_wrap_ch37.tex
+0 −12
@@ -1,12 +0,0 @@ | ||
| 1 | −\providecommand{\BUILDVARIANT}{uqo}\providecommand{\BUILDMEDIA}{numerique} | |
| 2 | −\documentclass[10pt,twoside,openright]{book} | |
| 3 | −\newif\ifLogoAutorise\LogoAutorisefalse\def\PALETTE{uqo} | |
| 4 | −\usepackage{traite-qc} | |
| 5 | −\input{../manuscript/frontmatter/metadata.tex} | |
| 6 | −\input{/Users/simon-pierreboucher/Desktop/UQO/Traite-Evaluation-QC/build/ch37/_labels.tex} | |
| 7 | −\begin{document} | |
| 8 | −\setcounter{chapter}{36} | |
| 9 | −\input{chapters/ch37.tex} | |
| 10 | −\appendix\chapter{Solutions du chapitre}\input{../solutions/ch37.tex} | |
| 11 | −\printbibliography | |
| 12 | −\end{document} | |
modified
manuscript/appendices/_inventaire.tex
+192 −2
@@ -10,36 +10,215 @@ module & \texttt{analysis/python/traite/cas4.py} & Cas 4 — portefeuille multir | ||
| 10 | 10 | module & \texttt{analysis/python/traite/comparables.py} & Méthode de comparaison : grille d'ajustements, ajustements séquentiels, ventes appariées, réconciliation. \\ |
| 11 | 11 | module & \texttt{analysis/python/traite/cout.py} & Méthode du coût : coût neuf, dépréciation (physique, fonctionnelle, externe), extraction de marché. \\ |
| 12 | 12 | module & \texttt{analysis/python/traite/finance.py} & Mathématiques financières de l'évaluation immobilière (conventions déclarées). \\ |
| 13 | +module & \texttt{analysis/python/traite/geo.py} & Outils géospatiaux génériques du traité (chapitre 38 ; réutilisables aux chapitres 43 et 48). \\ | |
| 13 | 14 | module & \texttt{analysis/python/traite/hedonique.py} & Outils économétriques : hédonique semi-log, indices (dummies temporelles, ventes répétées BMN / Case–Shiller), \\ |
| 15 | +module & \texttt{analysis/python/traite/panel.py} & Données de panel et identification causale (chapitre 36) : transformation within, erreurs-types en grappes (CR \\ | |
| 14 | 16 | module & \texttt{analysis/python/traite/style.py} & Style graphique du traité (Matplotlib). Palette validée : styles/palette.json. \\ |
| 15 | 17 | module & \texttt{analysis/python/traite/synth.py} & Génération des quatre dossiers de cas SYNTHÉTIQUES du traité. \\ |
| 18 | +calcul & \texttt{analysis/python/cases/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ÉT \\ | |
| 19 | +calcul & \texttt{analysis/python/cases/ch02\_droits.py} & Chapitre 2 — Droits immobiliers et bases de valeur : calculs de l'exemple intégral sur le cas 3 (12 logements, \\ | |
| 20 | +calcul & \texttt{analysis/python/cases/ch03\_cycles.py} & Chapitre 3 — Offre, demande et cycles : calculs de l'exemple intégral et des tableaux. \\ | |
| 21 | +calcul & \texttt{analysis/python/cases/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 le \\ | |
| 22 | +calcul & \texttt{analysis/python/cases/ch05\_rente.py} & Chapitre 5 — Économie urbaine et rente foncière : calculs de l'exemple intégral et des encadrés. \\ | |
| 23 | +calcul & \texttt{analysis/python/cases/ch06\_demembrements.py} & Chapitre 6 — Code civil et droit immobilier : effets des modalités et démembrements du droit de propriété sur \\ | |
| 24 | +calcul & \texttt{analysis/python/cases/ch07\_servitudes\_copro.py} & Chapitre 7 — Cadastre, titres, servitudes et copropriété : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 202 \\ | |
| 25 | +calcul & \texttt{analysis/python/cases/ch08\_zonage.py} & Chapitre 8 — Zonage et urbanisme : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral. \\ | |
| 26 | +calcul & \texttt{analysis/python/cases/ch09\_ratios.py} & Chapitre 9 — Évaluation foncière municipale et contestation (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031). \\ | |
| 27 | +calcul & \texttt{analysis/python/cases/ch10\_controle\_rapport.py} & Chapitre 10 — contrôle automatique de la présence des douze éléments du contenu minimal d'un rapport écrit \\ | |
| 28 | +calcul & \texttt{analysis/python/cases/ch10\_matrice\_normes.py} & Chapitre 10 — statistiques descriptives de la matrice des dispositions normatives du domaine C \\ | |
| 29 | +calcul & \texttt{analysis/python/cases/ch11\_inspection.py} & Chapitre 11 — inspection synthétique du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) : fiche d'état par \\ | |
| 30 | +calcul & \texttt{analysis/python/cases/ch12\_mesurage.py} & Chapitre 12 — Mesurage, superficies et plans : calculs du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). \\ | |
| 31 | +calcul & \texttt{analysis/python/cases/ch13\_sources.py} & Chapitre 13 — Transactions, inscriptions, loyers et coûts : lecture et description des fichiers RÉELS de data/ \\ | |
| 32 | +calcul & \texttt{analysis/python/cases/ch14\_nettoyage.py} & Chapitre 14 — Nettoyage, géocodage et qualité des données (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES). \\ | |
| 33 | +calcul & \texttt{analysis/python/cases/ch15\_segmentation.py} & Chapitre 15 — Études de marché et segmentation. Calculs de l'exemple intégral et des tableaux du chapitre. \\ | |
| 16 | 34 | calcul & \texttt{analysis/python/cases/ch16\_selection.py} & Chapitre 16 — sélection des comparables pour le sujet du cas 1 (Gatineau, données synthétiques). \\ |
| 35 | +calcul & \texttt{analysis/python/cases/ch17\_ajustements.py} & Chapitre 17 — ajustements qualitatifs et quantitatifs des cinq comparables du cas 1 (Gatineau, données synthét \\ | |
| 36 | +calcul & \texttt{analysis/python/cases/ch18\_hedonique.py} & Chapitre 18 — Modèles hédoniques : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUE \\ | |
| 37 | +calcul & \texttt{analysis/python/cases/ch19\_spatial.py} & Chapitre 19 — modèles spatiaux et temporels sur le cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 38 | +calcul & \texttt{analysis/python/cases/ch20\_reconciliation.py} & Chapitre 20 — réconciliation et incertitude : combinaison des indications du cas 1 (Gatineau, données synthéti \\ | |
| 17 | 39 | calcul & \texttt{analysis/python/cases/ch21\_cout\_neuf.py} & Chapitre 21 — coût neuf (remplacement) du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) et indexation IPCB ( \\ |
| 40 | +calcul & \texttt{analysis/python/cases/ch22\_metre.py} & Chapitre 22 — métré et quantités du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). \\ | |
| 41 | +calcul & \texttt{analysis/python/cases/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ÉTI \\ | |
| 42 | +calcul & \texttt{analysis/python/cases/ch24\_depreciation.py} & Chapitre 24 — dépréciation et désuétudes du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). \\ | |
| 43 | +calcul & \texttt{analysis/python/cases/ch25\_terrain.py} & Chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 44 | +calcul & \texttt{analysis/python/cases/ch26\_etat\_locatif.py} & Chapitre 26 — Baux et loyers : calculs de l'exemple intégral (cas 3, 12 logements à Montréal ; cas 2, triplex \\ | |
| 45 | +calcul & \texttt{analysis/python/cases/ch27\_revenus.py} & Chapitre 27 — Revenus potentiels, vacance et pertes : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (t \\ | |
| 46 | +calcul & \texttt{analysis/python/cases/ch28\_depenses.py} & Chapitre 28 — Dépenses, réserves, CAPEX et RNE : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (triple \\ | |
| 18 | 47 | calcul & \texttt{analysis/python/cases/ch29\_capitalisation.py} & Chapitre 29 — Capitalisation directe : calculs du cas 3 (12 logements, Rosemont ; DONNÉES SYNTHÉTIQUES). \\ |
| 19 | 48 | calcul & \texttt{analysis/python/cases/ch30\_dcf.py} & Chapitre 30 — Flux actualisés et valeur terminale : exemple intégral du cas 3 (12 logements, Montréal, \\ |
| 49 | +calcul & \texttt{analysis/python/cases/ch31\_financement.py} & Chapitre 31 — Financement, levier, RCD et RPV : calculs du chapitre (cas 3, 12 logements, Montréal, \\ | |
| 50 | +calcul & \texttt{analysis/python/cases/ch32\_plex.py} & Chapitre 32 — Duplex à quintuplex : calculs de l'exemple intégral (cas 2, triplex de Limoilou, données SYNTHÉT \\ | |
| 51 | +calcul & \texttt{analysis/python/cases/ch33\_six\_logements.py} & Chapitre 33 — Immeubles de six logements et plus : tous les chiffres cités dans manuscript/chapters/ch33.tex \\ | |
| 52 | +calcul & \texttt{analysis/python/cases/ch34\_tal.py} & Chapitre 34 — TAL, encadrement locatif et scénarios : calculs du chapitre (cas 3, 12 logements, Montréal, \\ | |
| 53 | +calcul & \texttt{analysis/python/cases/ch35\_indices.py} & Chapitre 35 — Indices immobiliers et ventes répétées : exemple intégral sur le cas 1 (Gatineau, DONNÉES SYNTHÉ \\ | |
| 54 | +calcul & \texttt{analysis/python/cases/ch36\_panel.py} & Chapitre 36 — Données de panel et identification causale : choc simulé sur les séries de RNE du cas 4 \\ | |
| 55 | +calcul & \texttt{analysis/python/cases/ch37\_ml.py} & Chapitre 37 — Apprentissage automatique et explicabilité : exemple intégral sur les 600 ventes du cas 1 \\ | |
| 56 | +calcul & \texttt{analysis/python/cases/ch38\_sig.py} & Chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUES, graine 2 \\ | |
| 57 | +calcul & \texttt{analysis/python/cases/ch39\_bayes.py} & Chapitre 39 — Modèles bayésiens et intervalles : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉ \\ | |
| 58 | +calcul & \texttt{analysis/python/cases/ch40\_montecarlo.py} & Chapitre 40 — Monte-Carlo et stress tests (DONNÉES SYNTHÉTIQUES : cas 3, 12 logements à Montréal ; cas 4, port \\ | |
| 59 | +calcul & \texttt{analysis/python/cases/ch41\_phmu.py} & Chapitre 41 — Plus haute et meilleure utilisation, terrains et développement : calculs de l'exemple intégral. \\ | |
| 60 | +calcul & \texttt{analysis/python/cases/ch42\_copro.py} & Chapitre 42 — Copropriétés et conversions : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 61 | +calcul & \texttt{analysis/python/cases/ch43\_risques.py} & Chapitre 43 — Risques environnementaux et sinistres : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral. \\ | |
| 62 | +calcul & \texttt{analysis/python/cases/ch44\_renovation.py} & Chapitre 44 — rénovation et efficacité énergétique : analyse coût-bénéfice de deux mesures sur le sujet du cas \\ | |
| 63 | +calcul & \texttt{analysis/python/cases/ch45\_dossier.py} & Chapitre 45 — Cas 1 : maison unifamiliale à Gatineau (DONNÉES SYNTHÉTIQUES, propriété fictive) — dossier compl \\ | |
| 64 | +calcul & \texttt{analysis/python/cases/ch46\_dossier.py} & Chapitre 46 — Cas 2 : triplex à Québec (Limoilou), dossier complet (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 20 | 65 | calcul & \texttt{analysis/python/cases/ch47\_dossier.py} & Chapitre 47 — Cas 3 : immeuble de 12 logements à Montréal (DONNÉES SYNTHÉTIQUES, immeuble fictif). \\ |
| 66 | +calcul & \texttt{analysis/python/cases/ch48\_portefeuille.py} & Chapitre 48 — Cas 4 : portefeuille multirésidentiel interrégional (DONNÉES SYNTHÉTIQUES, 48 immeubles fictifs, \\ | |
| 21 | 67 | calcul & \texttt{analysis/python/cases/generate\_all.py} & Régénère tous les jeux synthétiques (graine fixée). Usage : python3 -m analysis.python.cases.generate\_all (de \\ |
| 22 | 68 | calcul & \texttt{analysis/python/cases/make\_spreadsheets.py} & Classeurs Excel du traité (openpyxl, formules vivantes) : spreadsheets/ \\ |
| 69 | +figure & \texttt{analysis/python/figures/ch01\_figures.py} & Figures du chapitre 1 (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031 ; simulations étiquetées). \\ | |
| 70 | +figure & \texttt{analysis/python/figures/ch02\_decomposition.py} & Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) revenu net d'exploitation projeté avec les baux en place (dro \\ | |
| 71 | +figure & \texttt{analysis/python/figures/ch02\_ecart\_logements.py} & Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) ratio loyer contractuel / loyer de marché selon l'ancienneté \\ | |
| 72 | +figure & \texttt{analysis/python/figures/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 : V80691 \\ | |
| 73 | +figure & \texttt{analysis/python/figures/ch03\_cycle.py} & Figures ch03 — Simulation d'un cycle stock-flux (SYNTHÉTIQUE, analysis/python/cases/ch03\_cycles.py, paramètre \\ | |
| 74 | +figure & \texttt{analysis/python/figures/ch03\_mises\_chantier.py} & Figure ch03 — Mises en chantier au Québec, données RÉELLES : Statistique Canada (SCHL), tableau 34-10-0135-01, \\ | |
| 75 | +figure & \texttt{analysis/python/figures/ch03\_quadrants.py} & Figure ch03 — Modèle des quatre quadrants (DiPasquale–Wheaton) tracé à partir des paramètres pédagogiques du m \\ | |
| 76 | +figure & \texttt{analysis/python/figures/ch04\_carte.py} & Figure ch04 — carte schématique des six RMR du Québec : position des centres (coordonnées de la Base de donnée \\ | |
| 77 | +figure & \texttt{analysis/python/figures/ch04\_ipln.py} & Figure ch04 — Indice des prix des logements neufs (IPLN), total maison et terrain, déc. 2016 = 100, janvier 20 \\ | |
| 78 | +figure & \texttt{analysis/python/figures/ch04\_mutations.py} & Figure ch04 — taux effectif des droits sur les mutations immobilières (droit / base d'imposition) selon la bas \\ | |
| 79 | +figure & \texttt{analysis/python/figures/ch04\_parc.py} & Figure ch04 — structure du parc de logements : ménages privés selon le type de construction, Québec et Canada \\ | |
| 80 | +figure & \texttt{analysis/python/figures/ch04\_schl.py} & Figure ch04 — marché locatif par RMR : taux d'inoccupation (octobre 2024 et 2025) et loyer moyen des logements \\ | |
| 81 | +figure & \texttt{analysis/python/figures/ch04\_taux.py} & Figure ch04 — taux d'intérêt 2000-2026 : taux hypothécaire conventionnel 5 ans affiché (V80691335, hebdomadair \\ | |
| 82 | +figure & \texttt{analysis/python/figures/ch05\_capitalisation.py} & Figure ch05 — sensibilité de la capitalisation d'un écart de taxe foncière : perte de valeur (en \% de la vale \\ | |
| 83 | +figure & \texttt{analysis/python/figures/ch05\_cas1\_distance.py} & Figure ch05 — prix par mètre carré habitable et distance au centre, cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, gra \\ | |
| 84 | +figure & \texttt{analysis/python/figures/ch05\_gradient.py} & Figure ch05 — gradients du modèle monocentrique simulé (PARAMÈTRES PÉDAGOGIQUES DÉCLARÉS dans ch05\_rente.PARA \\ | |
| 85 | +figure & \texttt{analysis/python/figures/ch05\_rmr.py} & Figure ch05 — valeur par logement par RMR du portefeuille du cas 4 (DONNÉES SYNTHÉTIQUES, graine 20261031) et \\ | |
| 86 | +figure & \texttt{analysis/python/figures/ch05\_surface.py} & Figure ch05 — surface de rente bicentrique simulée (courbes de niveau) : enveloppe de deux surfaces d'enchère \\ | |
| 87 | +figure & \texttt{analysis/python/figures/ch06\_emphyteose.py} & Figure ch06 — emphytéose sur un immeuble locatif dont le RNE est celui du cas 3 (DONNÉES SYNTHÉTIQUES, hypothè \\ | |
| 88 | +figure & \texttt{analysis/python/figures/ch06\_usufruit.py} & Figure ch06 — usufruit viager sur la maison du cas 1 (DONNÉES SYNTHÉTIQUES, table de mortalité synthétique) : \\ | |
| 89 | +figure & \texttt{analysis/python/figures/ch07\_charges.py} & Figure ch07 — répartition des charges communes annuelles entre les huit fractions (DONNÉES SYNTHÉTIQUES). \\ | |
| 90 | +figure & \texttt{analysis/python/figures/ch07\_fonds.py} & Figure ch07 — trajectoire du fonds de prévoyance sur 25 ans selon trois cotisations (DONNÉES SYNTHÉTIQUES). \\ | |
| 91 | +figure & \texttt{analysis/python/figures/ch07\_paires.py} & Figure ch07 — ventes appariées : prix sans et avec servitude de passage pour 12 paires (DONNÉES SYNTHÉTIQUES, \\ | |
| 92 | +figure & \texttt{analysis/python/figures/ch07\_sensibilite.py} & Figure ch07 — sensibilité de la cotisation de seuil A* à l'inflation des coûts et au rendement du fonds (DONNÉ \\ | |
| 93 | +figure & \texttt{analysis/python/figures/ch08\_carte\_zones.py} & Figure ch08 — carte synthétique des zones de « Val-Fictif » (DONNÉES SYNTHÉTIQUES) : 400 lots, cinq zones, \\ | |
| 94 | +figure & \texttt{analysis/python/figures/ch08\_option\_sensibilite.py} & Figure ch08 — sensibilité des effets de valeur du zonage (DONNÉES SYNTHÉTIQUES / hypothèses déclarées) : \\ | |
| 95 | +figure & \texttt{analysis/python/figures/ch08\_rezonage\_paires.py} & Figure ch08 — effet d'un rezonage mesuré par ventes appariées et par doubles différences (DONNÉES SYNTHÉTIQUES \\ | |
| 96 | +figure & \texttt{analysis/python/figures/ch09\_ratios.py} & Figures du chapitre 9 (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031) : \\ | |
| 97 | +figure & \texttt{analysis/python/figures/ch10\_figures.py} & Chapitre 10 — figures Matplotlib : \\ | |
| 98 | +figure & \texttt{analysis/python/figures/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, c \\ | |
| 99 | +figure & \texttt{analysis/python/figures/ch11\_frise\_pathologies.py} & Figure ch11 — frise INDICATIVE des pathologies et matériaux à risque selon la période de construction (Québec) \\ | |
| 100 | +figure & \texttt{analysis/python/figures/ch11\_matrice\_age\_effectif.py} & Figure ch11 — matrice état × âge chronologique → âge effectif (convention déclarée de l'ouvrage, chapitre 11). \\ | |
| 101 | +figure & \texttt{analysis/python/figures/ch12\_figures.py} & Figures du chapitre 12 (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) : \\ | |
| 102 | +figure & \texttt{analysis/python/figures/ch13\_biais\_datation.py} & Figure ch13 — biais relatif de l'ajustement de conditions du marché lorsqu'une vente est datée à l'acte notari \\ | |
| 103 | +figure & \texttt{analysis/python/figures/ch13\_indices.py} & Figure ch13 — trois indices souvent confondus, données RÉELLES de data/raw, rebasés T1 2017 = 100 : \\ | |
| 104 | +figure & \texttt{analysis/python/figures/ch13\_rfu.py} & Figure ch13 — composition de l'évaluation imposable uniformisée 2026 (MAMH, richesse foncière uniformisée, CC \\ | |
| 105 | +figure & \texttt{analysis/python/figures/ch13\_schl.py} & Figure ch13 — SCHL, Enquête sur les logements locatifs d'octobre 2025 (données RÉELLES, fichier rmr-quebec-202 \\ | |
| 106 | +figure & \texttt{analysis/python/figures/ch14\_figures.py} & Chapitre 14 — figures (données SYNTHÉTIQUES, graine 20261031). Idempotent. \\ | |
| 107 | +figure & \texttt{analysis/python/figures/ch15\_figures.py} & Figures du chapitre 15 — Études de marché et segmentation. Produit dans assets/figures/ch15/ : \\ | |
| 108 | +figure & \texttt{analysis/python/figures/ch17\_figures.py} & Chapitre 17 — figures : cascade d'ajustements (G0404), dispersion des paires, prix bruts vs ajustés, tornade d \\ | |
| 109 | +figure & \texttt{analysis/python/figures/ch18\_figures.py} & Figures du chapitre 18 — Modèles hédoniques (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 110 | +figure & \texttt{analysis/python/figures/ch19\_figures.py} & Figures du chapitre 19 — modèles spatiaux et temporels (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031 \\ | |
| 111 | +figure & \texttt{analysis/python/figures/ch20\_figures.py} & Chapitre 20 — figures : densités bootstrap et énumération exhaustive ; résidus des candidats et élargissement \\ | |
| 23 | 112 | figure & \texttt{analysis/python/figures/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 2 \\ |
| 24 | 113 | figure & \texttt{analysis/python/figures/ch21\_ipcb.py} & Figure ch21 — IPCB Montréal (Statistique Canada, tableau 18-10-0289-01, base 2023 = 100), données RÉELLES lues \\ |
| 25 | 114 | figure & \texttt{analysis/python/figures/ch21\_sensibilite.py} & Figure ch21 — sensibilité du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTIQUES) : (a) grille taux d'indirects \\ |
| 115 | +figure & \texttt{analysis/python/figures/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 \\ | |
| 116 | +figure & \texttt{analysis/python/figures/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 mesure \\ | |
| 117 | +figure & \texttt{analysis/python/figures/ch23\_ipcb\_divisions.py} & Figure ch23 — IPCB Montréal, maison individuelle, par division de travaux (Statistique Canada 18-10-0289-01), \\ | |
| 118 | +figure & \texttt{analysis/python/figures/ch23\_ipcb\_types.py} & Figure ch23 — IPCB (Statistique Canada 18-10-0289-01, 2023 = 100), données RÉELLES lues dans data/raw : \\ | |
| 119 | +figure & \texttt{analysis/python/figures/ch23\_sensibilite.py} & Figure ch23 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1 ; taux documenté Banque du Canada V80691335) : \\ | |
| 120 | +figure & \texttt{analysis/python/figures/ch23\_structure.py} & Figure ch23 — cascade de formation du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, graine 20261031) : \\ | |
| 121 | +figure & \texttt{analysis/python/figures/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 composant \\ | |
| 122 | +figure & \texttt{analysis/python/figures/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 20 \\ | |
| 123 | +figure & \texttt{analysis/python/figures/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) \\ | |
| 124 | +figure & \texttt{analysis/python/figures/ch24\_sensibilite.py} & Figure ch24 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) : (a) taux de dépréciation âge-vie mo \\ | |
| 125 | +figure & \texttt{analysis/python/figures/ch25\_figures.py} & Figures du chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 126 | +figure & \texttt{analysis/python/figures/ch26\_figures.py} & Chapitre 26 — figures (4) : loyer contractuel vs loyer de marché par logement (cas 3), distribution de l'ancie \\ | |
| 127 | +figure & \texttt{analysis/python/figures/ch27\_figures.py} & Chapitre 27 — figures (4) : \\ | |
| 128 | +figure & \texttt{analysis/python/figures/ch28\_figures.py} & Chapitre 28 — figures (5) : cascade RBP → RNE (cas 3) ; structure des dépenses en \% du RBE (cas 3 vs cas 2) ; \\ | |
| 26 | 129 | figure & \texttt{analysis/python/figures/ch29\_figures.py} & Chapitre 29 — figures (5) : taux extraits (histogramme), taux vs état/taille (nuage), surface V(RNE, R) (carte \\ |
| 27 | 130 | figure & \texttt{analysis/python/figures/ch30\_flux.py} & Ch. 30, figure « flux » : RNE, CAPEX et flux net avant dette (barres) du cas 3 (DONNÉES SYNTHÉTIQUES), puis va \\ |
| 28 | 131 | figure & \texttt{analysis/python/figures/ch30\_gdc.py} & Ch. 30, figure « gdc » (DONNÉES RÉELLES, Banque du Canada, API Valet, téléchargées le 2026-10-31) : rendements \\ |
| 29 | 132 | figure & \texttt{analysis/python/figures/ch30\_loyers.py} & Ch. 30, figure « loyers » : trajectoire du revenu brut potentiel contractuel (indexé au taux TAL + relocation \\ |
| 30 | 133 | figure & \texttt{analysis/python/figures/ch30\_surface.py} & Ch. 30, figure « surface » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) selon le taux d'actualisation r (ligne \\ |
| 31 | 134 | figure & \texttt{analysis/python/figures/ch30\_tornade.py} & Ch. 30, figure « tornade » : variation de la valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour un choc bas/haut \\ |
| 135 | +figure & \texttt{analysis/python/figures/ch31\_levier.py} & Ch. 31, figure « levier » (DONNÉES SYNTHÉTIQUES, cas 3) : TRI des fonds propres sur dix ans et rendement coura \\ | |
| 136 | +figure & \texttt{analysis/python/figures/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 9 \\ | |
| 137 | +figure & \texttt{analysis/python/figures/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 \ \\ | |
| 138 | +figure & \texttt{analysis/python/figures/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 \\ | |
| 139 | +figure & \texttt{analysis/python/figures/ch32\_figures.py} & Figures du chapitre 32 — Duplex à quintuplex (données SYNTHÉTIQUES du cas 2, sauf la figure des médianes APCIQ \\ | |
| 140 | +figure & \texttt{analysis/python/figures/ch33\_figures.py} & Chapitre 33 — figures (4) : (1) SCHL, île de Montréal, loyers et inoccupation par taille d'immeuble et par ann \\ | |
| 141 | +figure & \texttt{analysis/python/figures/ch34\_calcul\_tal.py} & Ch. 34, figure « exemple de calcul TAL » : composantes de l'augmentation mensuelle du logement 103 du cas 3 (D \\ | |
| 142 | +figure & \texttt{analysis/python/figures/ch34\_ipc\_base.py} & Ch. 34, figure « IPC et pourcentage de base » (DONNÉES RÉELLES : Statistique Canada, tableau 18-10-0004-01, IP \\ | |
| 143 | +figure & \texttt{analysis/python/figures/ch34\_rotation.py} & Ch. 34, figure « rotation espérée » : (gauche) rapport espéré loyer contractuel / loyer de marché d'un logemen \\ | |
| 144 | +figure & \texttt{analysis/python/figures/ch34\_trajectoires.py} & Ch. 34, figure « trajectoires RBP » : revenu brut potentiel contractuel du cas 3 (DONNÉES SYNTHÉTIQUES) selon \\ | |
| 145 | +figure & \texttt{analysis/python/figures/ch34\_valeur\_scenarios.py} & Ch. 34, figure « valeur par scénario » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour la grille rotation (5 \\ | |
| 146 | +figure & \texttt{analysis/python/figures/ch35\_figures.py} & Figures du chapitre 35 — Indices immobiliers et ventes répétées. \\ | |
| 147 | +figure & \texttt{analysis/python/figures/ch36\_figures.py} & Figures du chapitre 36 — données de panel et identification causale (cas 4, DONNÉES SYNTHÉTIQUES, graine 20261 \\ | |
| 148 | +figure & \texttt{analysis/python/figures/ch37\_figures.py} & Figures du chapitre 37 — Apprentissage automatique et explicabilité (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, gr \\ | |
| 149 | +figure & \texttt{analysis/python/figures/ch38\_figures.py} & Figures du chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUE \\ | |
| 150 | +figure & \texttt{analysis/python/figures/ch39\_figures.py} & Figures du chapitre 39 — Modèles bayésiens et intervalles (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261 \\ | |
| 151 | +figure & \texttt{analysis/python/figures/ch40\_figures.py} & Chapitre 40 — figures (DONNÉES SYNTHÉTIQUES : cas 3 et cas 4, graine 20261031). \\ | |
| 152 | +figure & \texttt{analysis/python/figures/ch41\_figures.py} & Figures du chapitre 41 (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypothèses déclarées dans ch41\_phmu.p \\ | |
| 153 | +figure & \texttt{analysis/python/figures/ch42\_bloc\_piece.py} & Figure ch42 — valeur de conversion (somme des fractions nette des coûts, des frais, du portage et des délais) \\ | |
| 154 | +figure & \texttt{analysis/python/figures/ch42\_cotisation\_speciale.py} & Figure ch42 — charges annuelles normalisées des huit fractions (ch. 7) et part de chacune dans une cotisation \\ | |
| 155 | +figure & \texttt{analysis/python/figures/ch42\_grille.py} & Figure ch42 — grille de comparaison de la fraction F4 : prix observé, prix ajusté et décomposition des ajustem \\ | |
| 156 | +figure & \texttt{analysis/python/figures/ch42\_medianes.py} & Figure ch42 — prix médians Centris des copropriétés et des unifamiliales par territoire, T3 2026 (DONNÉES RÉEL \\ | |
| 157 | +figure & \texttt{analysis/python/figures/ch43\_carte\_cas4.py} & Figure ch43 — carte schématique des 48 immeubles du cas 4 (DONNÉES SYNTHÉTIQUES, coordonnées fictives autour d \\ | |
| 158 | +figure & \texttt{analysis/python/figures/ch43\_carte\_riverain.py} & Figure ch43 — municipalité fictive de Rivière-Fictive (DONNÉES SYNTHÉTIQUES) : 625 lots, classes d'exposition \\ | |
| 159 | +figure & \texttt{analysis/python/figures/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É \\ | |
| 160 | +figure & \texttt{analysis/python/figures/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É \\ | |
| 161 | +figure & \texttt{analysis/python/figures/ch43\_placebos.py} & Figure ch43 — inférence de randomisation exacte pour le DiD du cas 4 (DONNÉES SYNTHÉTIQUES) : distribution des \\ | |
| 162 | +figure & \texttt{analysis/python/figures/ch44\_capitalisation.py} & Figure ch44 — (a) quatre lectures de ce que la thermopompe « vaut » pour le sujet du cas 1 : coût installé, co \\ | |
| 163 | +figure & \texttt{analysis/python/figures/ch44\_flux.py} & Figure ch44 — flux annuels des deux mesures énergétiques du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, hypothèses d \\ | |
| 164 | +figure & \texttt{analysis/python/figures/ch44\_heatmap\_van.py} & Figure ch44 — VAN des deux mesures selon le taux d'actualisation et la croissance du prix de l'électricité \\ | |
| 165 | +figure & \texttt{analysis/python/figures/ch44\_prime\_verte.py} & Figure ch44 — la « prime verte » dans la littérature : fourchettes publiées par étude (valeurs vérifiées, voir \\ | |
| 166 | +figure & \texttt{analysis/python/figures/ch45\_figures.py} & Chapitre 45 — figures du dossier (cas 1, DONNÉES SYNTHÉTIQUES) : carte des comparables, cascade des ajustement \\ | |
| 167 | +figure & \texttt{analysis/python/figures/ch46\_figures.py} & Chapitre 46 — figures du dossier « triplex à Québec » (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 32 | 168 | figure & \texttt{analysis/python/figures/ch47\_dossier\_figures.py} & Chapitre 47 — figures du dossier « 12 logements à Montréal » (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ |
| 169 | +figure & \texttt{analysis/python/figures/ch48\_portefeuille\_figures.py} & Chapitre 48 — figures du dossier « portefeuille multirésidentiel interrégional » (DONNÉES SYNTHÉTIQUES, graine \\ | |
| 33 | 170 | figure & \texttt{analysis/python/figures/run\_all.py} & Exécute tous les scripts de figures (analysis/python/figures/chNN\_*.py) et les scripts R (analysis/r/chNN\_*. \\ |
| 34 | 171 | test & \texttt{analysis/python/tests/conftest.py} & \\ |
| 35 | 172 | test & \texttt{analysis/python/tests/test\_cas1.py} & \\ |
| 36 | 173 | test & \texttt{analysis/python/tests/test\_cas2\_cas4.py} & \\ |
| 37 | 174 | test & \texttt{analysis/python/tests/test\_cas3.py} & \\ |
| 175 | +test & \texttt{analysis/python/tests/test\_ch01.py} & Chapitre 1 — vérification des identités et des chiffres cités dans le texte et les solutions (données synthéti \\ | |
| 176 | +test & \texttt{analysis/python/tests/test\_ch02.py} & Chapitre 2 — Droits immobiliers et bases de valeur : identités (additivité, Gordon, annuité) et valeurs citées \\ | |
| 177 | +test & \texttt{analysis/python/tests/test\_ch03.py} & Tests du chapitre 3 — Offre, demande et cycles. \\ | |
| 178 | +test & \texttt{analysis/python/tests/test\_ch04.py} & Tests du chapitre 4 — marchés résidentiels québécois : lecture des données réelles (Recensement 2021, 17-10-01 \\ | |
| 179 | +test & \texttt{analysis/python/tests/test\_ch05.py} & Tests du chapitre 5 — modèle monocentrique simulé, gradient prix/distance du cas 1, décomposition du cas 4, \\ | |
| 180 | +test & \texttt{analysis/python/tests/test\_ch06.py} & Tests du chapitre 6 — démembrements et modalités du droit de propriété (DONNÉES SYNTHÉTIQUES, hypothèses décla \\ | |
| 181 | +test & \texttt{analysis/python/tests/test\_ch07.py} & Tests du chapitre 7 — servitude par ventes appariées, quotes-parts et charges de copropriété, fonds de prévoya \\ | |
| 182 | +test & \texttt{analysis/python/tests/test\_ch08.py} & Tests du chapitre 8 — zonage et urbanisme (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 183 | +test & \texttt{analysis/python/tests/test\_ch09.py} & Tests du chapitre 9 — étude de ratios (COD, PRD, PRB, proportion médiane, facteur comparatif), dossiers de con \\ | |
| 184 | +test & \texttt{analysis/python/tests/test\_ch10.py} & Chapitre 10 — vérification des chiffres cités dans le texte, les tableaux et les solutions. \\ | |
| 185 | +test & \texttt{analysis/python/tests/test\_ch11.py} & Tests du chapitre 11 — inspection synthétique du sujet du cas 1, convention d'âge effectif, dépréciation venti \\ | |
| 186 | +test & \texttt{analysis/python/tests/test\_ch12.py} & Tests du chapitre 12 — mesurage, superficies, propagation d'erreur (cas 1, données synthétiques). \\ | |
| 187 | +test & \texttt{analysis/python/tests/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-000 \\ | |
| 188 | +test & \texttt{analysis/python/tests/test\_ch14.py} & Chapitre 14 — Nettoyage, géocodage et qualité des données : reproductibilité du jeu brut, identités des diagno \\ | |
| 189 | +test & \texttt{analysis/python/tests/test\_ch15.py} & Chapitre 15 — Études de marché et segmentation : vérification des identités et des chiffres cités dans le text \\ | |
| 38 | 190 | test & \texttt{analysis/python/tests/test\_ch16.py} & Chapitre 16 — vérification des chiffres cités dans le texte et les solutions. \\ |
| 191 | +test & \texttt{analysis/python/tests/test\_ch17.py} & Chapitre 17 — vérification des identités et des chiffres cités dans le texte et les solutions (tolérances décl \\ | |
| 192 | +test & \texttt{analysis/python/tests/test\_ch18.py} & Chapitre 18 — Modèles hédoniques : vérification des chiffres cités dans le texte, les tableaux et les solution \\ | |
| 193 | +test & \texttt{analysis/python/tests/test\_ch19.py} & Chapitre 19 — tests des fonctions spatiales ajoutées à traite.hedonique et des chiffres cités dans le texte et \\ | |
| 194 | +test & \texttt{analysis/python/tests/test\_ch20.py} & Chapitre 20 — réconciliation et incertitude : identités, chiffres cités dans le texte et dans les solutions (t \\ | |
| 39 | 195 | test & \texttt{analysis/python/tests/test\_ch21.py} & Tests du chapitre 21 — coût neuf du sujet du cas 1, IPCB Montréal, sensibilité et exercices. \\ |
| 196 | +test & \texttt{analysis/python/tests/test\_ch22.py} & Tests du chapitre 22 — métré et quantités du sujet du cas 1. \\ | |
| 197 | +test & \texttt{analysis/python/tests/test\_ch23.py} & Tests du chapitre 23 — coûts directs et indirects : structure du devis du cas 1, financement intérimaire (trai \\ | |
| 198 | +test & \texttt{analysis/python/tests/test\_ch24.py} & Tests du chapitre 24 — dépréciation et désuétudes du sujet du cas 1, extraction de marché, profils et exercice \\ | |
| 199 | +test & \texttt{analysis/python/tests/test\_ch25.py} & Tests du chapitre 25 — Évaluation du terrain : jeu synthétique de terrains (graine 20261031), modèle hédonique \\ | |
| 200 | +test & \texttt{analysis/python/tests/test\_ch26.py} & Tests du chapitre 26 — baux et loyers (cas 3 et cas 2, données synthétiques). \\ | |
| 201 | +test & \texttt{analysis/python/tests/test\_ch27.py} & Tests du chapitre 27 — revenus potentiels, vacance et pertes (cas 3 et cas 2, données synthétiques ; tableaux \\ | |
| 202 | +test & \texttt{analysis/python/tests/test\_ch28.py} & Tests du chapitre 28 — dépenses, réserves, CAPEX et RNE (cas 3 et cas 2, données synthétiques). \\ | |
| 40 | 203 | test & \texttt{analysis/python/tests/test\_ch29.py} & Tests du chapitre 29 — capitalisation directe (cas 3, données synthétiques). \\ |
| 41 | 204 | test & \texttt{analysis/python/tests/test\_ch30.py} & Tests du chapitre 30 — flux actualisés et valeur terminale (cas 3, données synthétiques). \\ |
| 205 | +test & \texttt{analysis/python/tests/test\_ch31.py} & Tests du chapitre 31 — financement, levier, RCD et RPV (cas 3, données synthétiques ; repères BdC réels). \\ | |
| 206 | +test & \texttt{analysis/python/tests/test\_ch32.py} & Tests du chapitre 32 — Duplex à quintuplex : identités, cohérence avec traite.cas2 (partagé avec les ch. 26, 2 \\ | |
| 207 | +test & \texttt{analysis/python/tests/test\_ch33.py} & Tests du chapitre 33 (immeubles de six logements et plus) : identités, cohérence avec traite.cas3/cas4 et le c \\ | |
| 208 | +test & \texttt{analysis/python/tests/test\_ch34.py} & Tests du chapitre 34 — TAL, encadrement locatif et scénarios (cas 3, données synthétiques ; IPC Québec réel). \\ | |
| 209 | +test & \texttt{analysis/python/tests/test\_ch35.py} & Chapitre 35 — Indices immobiliers et ventes répétées : identités et valeurs citées dans le texte, les tableaux \\ | |
| 210 | +test & \texttt{analysis/python/tests/test\_ch36.py} & Chapitre 36 — tests des fonctions de traite.panel (récupération d'effets connus sur données simulées) et des c \\ | |
| 211 | +test & \texttt{analysis/python/tests/test\_ch37.py} & Chapitre 37 — Apprentissage automatique et explicabilité : reproductibilité et bornes de performance des chiff \\ | |
| 212 | +test & \texttt{analysis/python/tests/test\_ch38.py} & Chapitre 38 — tests des fonctions de traite.geo et des chiffres cités dans manuscript/chapters/ch38.tex et sol \\ | |
| 213 | +test & \texttt{analysis/python/tests/test\_ch39.py} & Chapitre 39 — Modèles bayésiens et intervalles : vérification des identités, des diagnostics et des chiffres c \\ | |
| 214 | +test & \texttt{analysis/python/tests/test\_ch40.py} & Tests du chapitre 40 (Monte-Carlo et stress tests — données synthétiques, cas 3 et cas 4) : égalité stricte av \\ | |
| 215 | +test & \texttt{analysis/python/tests/test\_ch41.py} & Tests du chapitre 41 — PHMU, terrains et développement (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypoth \\ | |
| 216 | +test & \texttt{analysis/python/tests/test\_ch42.py} & Tests du chapitre 42 — fraction de copropriété (grille, réconciliation), cotisation spéciale, copropriété loca \\ | |
| 217 | +test & \texttt{analysis/python/tests/test\_ch43.py} & Tests du chapitre 43 — risques environnementaux et sinistres (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | |
| 218 | +test & \texttt{analysis/python/tests/test\_ch44.py} & Tests du chapitre 44 — rénovation et efficacité énergétique (sujet du cas 1, DONNÉES SYNTHÉTIQUES). \\ | |
| 219 | +test & \texttt{analysis/python/tests/test\_ch46.py} & Tests du chapitre 46 — Cas 2 : triplex à Québec (dossier complet, données SYNTHÉTIQUES). \\ | |
| 42 | 220 | test & \texttt{analysis/python/tests/test\_ch47.py} & Tests du chapitre 47 (cas 3, 12 logements à Montréal — données synthétiques) : identités, valeurs citées dans \\ |
| 221 | +test & \texttt{analysis/python/tests/test\_ch48.py} & Tests du chapitre 48 (cas 4, portefeuille interrégional — données synthétiques) : identités du sommaire, cohér \\ | |
| 43 | 222 | test & \texttt{analysis/python/tests/test\_comparables.py} & \\ |
| 44 | 223 | test & \texttt{analysis/python/tests/test\_cout.py} & \\ |
| 45 | 224 | test & \texttt{analysis/python/tests/test\_finance.py} & \\ |
@@ -51,6 +230,7 @@ outil & \texttt{tools/make\_labels.py} & Écrit un fichier d'étiquettes (newlab | ||
| 51 | 230 | outil & \texttt{tools/make\_release.py} & Assemble release/ : PDF, sources LaTeX, données, figures, scripts, classeurs, corrigés, rapport de validation. \\ |
| 52 | 231 | outil & \texttt{tools/merge\_sources.py} & Fusionne sources/registry-*.csv → sources/registry.csv, sources/normes-*.csv → sources/normes-matrice.csv, \\ |
| 53 | 232 | outil & \texttt{tools/compile\_chapter.sh} & !/usr/bin/env bash \\ |
| 233 | +outil & \texttt{tools/valider\_chapitre.sh} & !/usr/bin/env bash \\ | |
| 54 | 234 | \end{longtable} |
| 55 | 235 | |
| 56 | 236 | \begin{longtable}{lr} |
@@ -58,12 +238,17 @@ outil & \texttt{tools/compile\_chapter.sh} & !/usr/bin/env bash \\ | ||
| 58 | 238 | \toprule Fichier & Taille \\ \midrule \endfirsthead |
| 59 | 239 | \toprule Fichier & Taille \\ \midrule \endhead |
| 60 | 240 | \bottomrule \endfoot |
| 61 | −\texttt{data/synthetic/README.md} & 15 ko \\ | |
| 241 | +\texttt{data/synthetic/README-brut.md} & 5 ko \\ | |
| 242 | +\texttt{data/synthetic/README.md} & 18 ko \\ | |
| 62 | 243 | \texttt{data/synthetic/calibration.json} & 93 ko \\ |
| 63 | 244 | \texttt{data/synthetic/calibration\_journal.csv} & 6 ko \\ |
| 245 | +\texttt{data/synthetic/cas1\_gatineau\_anomalies\_injectees.csv} & 6 ko \\ | |
| 64 | 246 | \texttt{data/synthetic/cas1\_gatineau\_couts.csv} & 2 ko \\ |
| 247 | +\texttt{data/synthetic/cas1\_gatineau\_journal\_exclusions.csv} & 22 ko \\ | |
| 248 | +\texttt{data/synthetic/cas1\_gatineau\_role\_extrait.csv} & 44 ko \\ | |
| 65 | 249 | \texttt{data/synthetic/cas1\_gatineau\_sujet.json} & 1 ko \\ |
| 66 | 250 | \texttt{data/synthetic/cas1\_gatineau\_ventes.csv} & 65 ko \\ |
| 251 | +\texttt{data/synthetic/cas1\_gatineau\_ventes\_brut.csv} & 111 ko \\ | |
| 67 | 252 | \texttt{data/synthetic/cas2\_quebec\_depenses.csv} & 0 ko \\ |
| 68 | 253 | \texttt{data/synthetic/cas2\_quebec\_loyers.csv} & 0 ko \\ |
| 69 | 254 | \texttt{data/synthetic/cas2\_quebec\_sujet.json} & 0 ko \\ |
@@ -75,6 +260,11 @@ outil & \texttt{tools/compile\_chapter.sh} & !/usr/bin/env bash \\ | ||
| 75 | 260 | \texttt{data/synthetic/cas3\_montreal\_sujet.json} & 0 ko \\ |
| 76 | 261 | \texttt{data/synthetic/cas4\_portefeuille.csv} & 6 ko \\ |
| 77 | 262 | \texttt{data/synthetic/cas4\_portefeuille\_series.csv} & 33 ko \\ |
| 263 | +\texttt{data/synthetic/ch08\_zonage\_lots.csv} & 15 ko \\ | |
| 264 | +\texttt{data/synthetic/ch08\_zonage\_ventes.csv} & 32 ko \\ | |
| 265 | +\texttt{data/synthetic/ch25\_terrains\_ventes.csv} & 20 ko \\ | |
| 266 | +\texttt{data/synthetic/ch43\_riverain\_lots.csv} & 27 ko \\ | |
| 267 | +\texttt{data/synthetic/ch43\_riverain\_ventes.csv} & 79 ko \\ | |
| 78 | 268 | \end{longtable} |
| 79 | 269 | |
| 80 | 270 | \begin{itemize} |
@@ -82,4 +272,4 @@ outil & \texttt{tools/compile\_chapter.sh} & !/usr/bin/env bash \\ | ||
| 82 | 272 | \item \texttt{spreadsheets/cas1\_grille\_comparaison.xlsx} |
| 83 | 273 | \item \texttt{spreadsheets/cas3\_dcf\_12\_logements.xlsx} |
| 84 | 274 | \end{itemize} |
| 85 | −\noindent Figures PDF générées : 24. | |
| \ No newline at end of file | ||
| 275 | +\noindent Figures PDF générées : 219. | |
| \ No newline at end of file | ||
modified
manuscript/appendices/scripts-classeurs.tex
+14 −1
@@ -1,2 +1,15 @@ | ||
| 1 | 1 | \chapter{Scripts, données et classeurs}\label{app:scripts-classeurs} |
| 2 | −\stubchapter | |
| 2 | + | |
| 3 | +Cette annexe inventorie les artefacts informatiques qui accompagnent l'ouvrage et qui permettent de reproduire chaque chiffre, chaque tableau et chaque figure. Le dépôt est organisé selon les conventions décrites dans \texttt{CONVENTIONS.md} ; l'inventaire ci-dessous est généré automatiquement par \texttt{tools/inventaire.py} à partir de l'état du dépôt, de sorte qu'il reflète toujours les fichiers réellement présents. | |
| 4 | + | |
| 5 | +\section{Organisation du dépôt} | |
| 6 | +Le manuscrit LuaLaTeX se trouve dans \texttt{manuscript/} (un fichier par chapitre dans \texttt{chapters/}, les annexes dans \texttt{appendices/}, les pages liminaires dans \texttt{frontmatter/}) et s'appuie sur le style \texttt{styles/traite-qc.sty}. Les figures vectorielles sont dans \texttt{assets/figures/chNN/}, chacune produite par un script de \texttt{analysis/python/figures/} ou dessinée en TikZ dans le chapitre. Les données brutes publiques, jamais modifiées, sont dans \texttt{data/raw/} avec leur inventaire (\texttt{SOURCES.md} : URL exacte, licence, date de téléchargement) ; les jeux synthétiques, identifiés comme tels, dans \texttt{data/synthetic/} avec leurs lois de génération (\texttt{README.md}) et le journal de calibration (\texttt{calibration\_journal.csv}). La bibliothèque commune \texttt{analysis/python/traite/} regroupe les fonctions financières, la méthode du coût, la comparaison, l'économétrie hédonique et spatiale, les panels, la géomatique et les quatre dossiers de cas ; chaque fonction est couverte par un test de \texttt{analysis/python/tests/}. Les registres de vérification (\texttt{verification/}) relient chaque affirmation, chaque calcul et chaque figure à sa source ou à son script. | |
| 7 | + | |
| 8 | +\section{Reproduire l'ouvrage} | |
| 9 | +Depuis la racine du dépôt : \texttt{make data} régénère les jeux synthétiques (graines fixées) ; \texttt{make figures} exécute tous les scripts de figures ; \texttt{make test} lance les tests unitaires et les vérifications du manuscrit ; \texttt{make pdf} compile le livre (LuaLaTeX, biber, makeindex) ; \texttt{make chapter CH=16} compile un chapitre isolé. Les prérequis sont énumérés dans \texttt{README.md}. Aucune donnée réelle sous licence restrictive n'est redistribuée ; les chiffres d'industrie (APCIQ, CBRE, Altus, JLR) sont cités avec attribution, jamais reproduits en tableau. | |
| 10 | + | |
| 11 | +\section{Classeurs Excel} | |
| 12 | +Trois classeurs à formules vivantes, produits par \texttt{analysis/python/cases/make\_spreadsheets.py}, reproduisent les identités du livre : la grille d'ajustements du cas 1 (chapitres 16 et 17), le dossier du cas 3 (état locatif, dépenses normalisées, revenu net, capitalisation, flux actualisés, financement ; chapitres 28 à 31 et 47) et un calculateur d'hypothèque canadienne à composition semestrielle avec tableau d'amortissement (chapitre 31). Les cellules de contrôle rappellent les valeurs calculées par la bibliothèque Python, de sorte qu'un écart signale une divergence de convention. | |
| 13 | + | |
| 14 | +\section{Inventaire} | |
| 15 | +\input{../manuscript/appendices/_inventaire.tex} | |
modified
manuscript/chapters/ch39.tex
+1 −2
@@ -372,10 +372,9 @@ $\beta_{\text{qualité}}$ & 0.0613 & 0.0041 & 0.0533 & 0.0695 & 0.0611 & 0.0042 | ||
| 372 | 372 | $\beta_{\text{dist}}$ & -0.0052 & 0.0028 & -0.0106 & 0.0004 & -0.0036 & 0.0027 & -0.0060 \\ |
| 373 | 373 | \midrule |
| 374 | 374 | \multicolumn{8}{@{}l}{$B_s$ (médiane de $\sigma^2$, $\tau^2$) : Hull 0,999 ; Gatineau 0,999 ; Aylmer 0,998 ; Buckingham 0,995 ; Masson-Angers 0,995} \\ |
| 375 | −\multicolumn{8}{@{}l}{Gat : Gatineau ; Ayl : Aylmer ; Buck : Buckingham ; MA : Masson-Angers} \\ | |
| 376 | 375 | \bottomrule |
| 377 | 376 | \end{tabular} |
| 378 | −\tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py}}. A priori : plats sur $\boldsymbol\beta$ et $\alpha_0$, $1/\sigma^2$ sur $\sigma^2$, uniforme sur $\tau$ ; les autres coefficients sont dans le script.} | |
| 377 | +\tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py}}. A priori : plats sur $\boldsymbol\beta$ et $\alpha_0$, $1/\sigma^2$ sur $\sigma^2$, uniforme sur $\tau$ ; les autres coefficients sont dans le script. Gat : Gatineau ; Ayl : Aylmer ; Buck : Buckingham ; MA : Masson-Angers.} | |
| 379 | 378 | \end{table} |
| 380 | 379 | |
| 381 | 380 | \begin{table}[htbp] |
modified
manuscript/chapters/ch46.tex
+1 −1
@@ -313,7 +313,7 @@ Maizerets (vs Limoilou) & -0.08715 & 0.02250 & -3.87 & sans objet \\ | ||
| 313 | 313 | |
| 314 | 314 | \subsection{La grille d'ajustements en dollars par logement} |
| 315 | 315 | |
| 316 | −La grille suit l'ordre conventionnel de l'ouvrage, exposé au \cref{ch:17} : d'abord l'ajustement de conditions du marché, en proportion du prix, qui ramène chaque vente à la date d'évaluation au taux annuel de \pct{7.45} extrait de la régression, par la fonction \texttt{ajustement\_temps\_taux} ; puis les ajustements d'attributs, additifs, exprimés en dollars par logement sur la base ajustée du temps, chacun étant la différence entre le prix prédit pour la caractéristique du sujet et celui prédit pour la caractéristique du comparable : | |
| 316 | +La grille suit l'ordre conventionnel de l'ouvrage, exposé au \cref{ch:17} : d'abord l'ajustement de conditions du marché, en proportion du prix, qui ramène chaque vente à la date d'évaluation au taux annuel de \pct{7.45} extrait de la régression (fonction \texttt{ajustement\_temps\_taux} de la bibliothèque) ; puis les ajustements d'attributs, additifs, exprimés en dollars par logement sur la base ajustée du temps, chacun étant la différence entre le prix prédit pour la caractéristique du sujet et celui prédit pour la caractéristique du comparable : | |
| 317 | 317 | \begin{equation}\label{eq:46:ajuste} |
| 318 | 318 | \begin{split} |
| 319 | 319 | P^{\text{aj}}_j &= P^{t}_j + \sum_{k} A_{jk}, \qquad P^{t}_j = P_j\,(1 + g)^{m_j/12}, \\ |
modified
manuscript/chapters/ch48.tex
+1 −1
@@ -538,7 +538,7 @@ Avant de simuler, on peut démontrer ce que la simulation va montrer. La mesure | ||
| 538 | 538 | \end{equation} |
| 539 | 539 | où $V_0$ est la valeur de référence et $q_{0{,}05}$ le quantile à \pct{5} de la valeur simulée. La VaR n'est pas, en général, une mesure de risque cohérente au sens d'Artzner, Delbaen, Eber et Heath (1999)\footnote{Artzner, P., Delbaen, F., Eber, J.-M. et Heath, D. (1999), « Coherent Measures of Risk », \emph{Mathematical Finance}, 9(3), 203-228 ; DOI 10.1111/1467-9965.00068 (vérifié Crossref le 31~octobre 2026 ; \texttt{references/lib-ch48.bib}).} : elle peut violer la sous-additivité pour des distributions très asymétriques ou à queues épaisses. Dans le cadre gaussien de la \cref{eq:48:lnv}, en revanche, la sous-additivité est garantie, et elle se démontre en deux lignes. |
| 540 | 540 | |
| 541 | −\begin{proposition}\label{prop:48:diversification} | |
| 541 | +\begin{proposition}{Sous-additivité de l'écart-type et de la valeur à risque dans le cadre gaussien}{48:diversification} | |
| 542 | 542 | Soit $X_i$, $i = 1, \dots, n$, des variables aléatoires gaussiennes d'écarts-types $\sigma_i$ et de corrélations $\rho_{ij}$, et $X_P = \sum_i w_i X_i$ avec $w_i \geq 0$. Alors $\sigma_P \leq \sum_i w_i \sigma_i$, avec égalité si et seulement si $\rho_{ij} = 1$ pour toute paire de poids non nuls ; et, pour tout niveau $\alpha \geq \tfrac12$, $\operatorname{VaR}_\alpha(X_P) \leq \sum_i w_i \operatorname{VaR}_\alpha(X_i)$. |
| 543 | 543 | \end{proposition} |
| 544 | 544 | \begin{proof} |
modified
sources/registry.csv
+3 −0
@@ -432,4 +432,7 @@ SRC-44-006,API bibliographique,"Semantic Scholar Graph API : résumés de Aydin, | ||
| 432 | 432 | SRC-44-007,article,"Meta-Analysis of Price Premiums in Housing with Energy Performance Certificates (EPC), Sustainability 11(22) 6303",Cespedes-Lopez et al.,2019,https://www.mdpi.com/2071-1050/11/22/6303/htm,2026-10-31,verifie,ch44,"Texte intégral extrait (Tavily) : 66 documents, 173 registres ; 4,20 % ; 5,36 / 4,81 / 2,32 % ; Amérique −2,49 à 14,3 % ; méta-analyses antérieures 7,6 / 4,3 / 3,5-4,5 % ; résumé Crossref concordant" |
| 433 | 433 | SRC-44-008,document de travail,Doing Well by Doing Good? Green Office Buildings (version de travail en libre accès),Eichholtz,Kok & Quigley (UC Berkeley),2009,https://eml.berkeley.edu/~webfac/auerbach/quigley.pdf,2026-10-31,verifie,ch44 |
| 434 | 434 | SRC-44-009,page web,"Rénoclimat ; Rénoclimat — Nouveautés ; Novoclimat ; Fin de Chauffez vert ; LogisVert ; RNCan Initiative canadienne pour des maisons plus vertes (références du lot B, non reconsultées)",Québec.ca / Hydro-Québec / RNCan,2026-10,https://www.quebec.ca/habitation-territoire/chauffage-consommation-energie/aide-financiere-renovation-ecoenergetique/renoclimat,2026-10-31,verifie,ch44,"Vérifiées le 2026-10-31 dans le lot B (sources/notes-B.md §44.2, clés renoclimat, renoclimatnouveautes, novoclimat, chauffezvertfin, logisvert, rncansubvention, rncaninitiative) ; non reconsultées par le rédacteur du ch. 44" |
| 435 | +SRC-46-001,page_web,Reprise de logement (délais de l'avis selon la durée du bail ; réponse du locataire ; demande au Tribunal),Tribunal administratif du logement,Page consultée le 2026-10-31,https://www.tal.gouv.qc.ca/fr/droit-du-locateur-de-mettre-fin-au-bail/reprise-de-logement,2026-10-31,verifie,ch46 (§46.3 ; tab. calendrier),NOUVELLE SOURCE (clé talReprise2026 dans lib-ch46.bib ; non citée par \parencite tant que non fusionnée). Vérifié par extraction du 2026-10-31 : bail > 6 mois → avis au moins 6 mois avant la fin ; bail ≤ 6 mois → 1 mois ; durée indéterminée → 6 mois avant la date prévue ; locataire : 1 mois (silence = refus) ; locateur : demande au TAL dans le mois ; preuve de l'intention réelle. Lève le point non vérifié CLM-32-012 du ch. 32. | |
| 435 | 436 | # Aucune nouvelle source : le chapitre 47 ne cite que des clés déjà présentes dans references/library.bib (voir ch47.md).,,,,,,,,, |
| 437 | +SRC-48-001,article,"Portfolio Selection (The Journal of Finance, 7(1), 77-91)",Markowitz H.,1952,https://doi.org/10.2307/2975974,2026-10-31,verifie,48,"Notice Crossref lue le 2026-10-31 (titre, auteur, revue, volume 7, numéro 1, page de début 77, année 1952) ; pagination 77-91 selon la revue ; entrée markowitz1952 dans references/lib-ch48.bib ; cité en note de bas de page (§48.8), non par clé" | |
| 438 | +SRC-48-002,article,"Coherent Measures of Risk (Mathematical Finance, 9(3), 203-228)","Artzner P., Delbaen F., Eber J.-M., Heath D.",1999,https://doi.org/10.1111/1467-9965.00068,2026-10-31,verifie,48,"Notice Crossref lue le 2026-10-31 (titre, 4 auteurs, revue, volume 9, numéro 3, pages 203-228, année 1999) ; entrée artznerDelbaenEberHeath1999 dans references/lib-ch48.bib ; cité en note de bas de page (§48.7), non par clé" | |
added
verification/chapters/ch46-registry.csv
+19 −0
@@ -0,0 +1,19 @@ | ||
| 1 | +id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes | |
| 2 | +SRC-46-001,page_web,Reprise de logement (délais de l'avis selon la durée du bail ; réponse du locataire ; demande au Tribunal),Tribunal administratif du logement,Page consultée le 2026-10-31,https://www.tal.gouv.qc.ca/fr/droit-du-locateur-de-mettre-fin-au-bail/reprise-de-logement,2026-10-31,verifie,ch46 (§46.3 ; tab. calendrier),"NOUVELLE SOURCE (clé talReprise2026 dans lib-ch46.bib ; non citée par \parencite tant que non fusionnée). Vérifié par extraction du 2026-10-31 : bail > 6 mois → avis au moins 6 mois avant la fin ; bail ≤ 6 mois → 1 mois ; durée indéterminée → 6 mois avant la date prévue ; locataire : 1 mois (silence = refus) ; locateur : demande au TAL dans le mois ; preuve de l'intention réelle. Lève le point non vérifié CLM-32-012 du ch. 32." | |
| 3 | +SRC-A-023,page_web,Droits sur mutation immobilière — tranches 2026 (0,5 % ≤ 62 900 $ ; 1 % ≤ 315 000 $ ; 1,5 % ≤ 500 000 $ ; 2,5 % ≤ 750 000 $ ; 3 % au-delà),Ville de Québec,Page consultée le 2026-10-31 (extraction du texte),https://www.ville.quebec.qc.ca/citoyens/taxes_evaluation/droits_mutation_immobiliere.aspx,2026-10-31,verifie,ch46 (§46.2 ; §46.9),"RATTACHEMENT : le barème 2026 a été relu intégralement le 2026-10-31 (tranches et taux confirmés) → statut passe de partiellement_verifie à verifie pour les tranches ; le facteur comparatif 1,08 (2026) n'apparaissait pas dans le texte extrait (tableau non capturé) et reste partiellement vérifié." | |
| 4 | +SRC-B-025,page_web,Taux de taxes (Ville de Québec) — exercice 2026,Ville de Québec,R.V.Q. 3492 ; consulté 2026-10-31,https://www.ville.quebec.qc.ca/apropos/profil-financier/taux-taxation.aspx,2026-10-31,verifie,ch46 (§46.2 ; §46.5),"RATTACHEMENT : 0,7464 $/100 $ (1-5 log.) + 386 $ + 195 $ par logement → taxe municipale normalisée 5 437,68 $." | |
| 5 | +SRC-E-026,communique,Taxe scolaire 2026-2027 — taux 0,07899 $/100 $,CSS des Hautes-Rivières (source secondaire),2026,—,2026-10-31,partiellement_verifie,ch46 (§46.5),"RATTACHEMENT : taxe scolaire normalisée (495 000 − 25 000) × 0,07899 % = 371,25 $ ; exemption des premiers 25 000 $ (notes-E)." | |
| 6 | +SRC-E-003,rapport,Baromètre FSMI du marché résidentiel — RMR de Québec — 3e trimestre 2026,APCIQ,2026-10,https://com.apciq.ca/sam/pdf/bar/2026/202603-bar-quebec.pdf,2026-10-31,verifie,ch46 (§46.4),"RATTACHEMENT : plex secteur La Cité–Basse-Ville et Limoilou 647 500 $ (+13 %) ; 107 ventes (−14 %)." | |
| 7 | +SRC-E-001,communique,Statistiques de ventes résidentielles Centris — 3e trimestre 2026,APCIQ,2026-10-14,https://apciqca-152af.kxcdn.com/wp-content/uploads/sites/4/2026/10/CP-trimestriel-2026-T3-fr-2.pdf,2026-10-31,verifie,ch46 (§46.4),"RATTACHEMENT : plex RMR Québec 600 000 $ (+17 %), agglomération 618 500 $ ; délai de vente médian des plex 30 jours." | |
| 8 | +SRC-E-007,rapport,Rapport sur le marché locatif — données d'octobre 2025,SCHL,2025-12-11,https://www.cmhc-schl.gc.ca/fr/professionnels/marche-du-logement-donnees-et-recherche/marches-de-lhabitation/rapports-sur-le-marche-locatif,2026-10-31,verifie,ch46 (§46.3 ; §46.4 ; §46.5),"RATTACHEMENT : inoccupation RMR Québec 2,4 % (0,9 %) ; loyers 1 107 / 1 277 / 1 475 / 1 227 $ ; +6,1 % (2 ch.) ; rotation 13,0 % (éq. va-ecart)." | |
| 9 | +SRC-E-008,page_web,Données sur l'habitation — marché locatif de l'agglomération de Québec (d'après SCHL),Ville de Québec,2026 (données oct. 2025),https://www.ville.quebec.qc.ca/apropos/planification-orientations/habitation/donnees/index.aspx,2026-10-31,partiellement_verifie,ch46 (§46.4),"RATTACHEMENT : zone Basse-Ville loyer 1 139 $ (+5,3 %), inoccupation 2,7 % ; appartenance de Limoilou à la zone non confirmée." | |
| 10 | +SRC-E-066,rapport,Rapport mensuel sur le marché immobilier au Québec — août 2026,JLR (Equifax),2026-09,https://solutions.jlr.ca/hubfs/Etudes_et_rapports/2026-08_Rapport_Mensuel.pdf?hsLang=fr,2026-10-31,partiellement_verifie,ch46 (§46.4),"RATTACHEMENT : plex RMR Québec 590 000 $ (+17 %) ; fiche RMR de Québec à confirmer (comme au ch. 32)." | |
| 11 | +SRC-E-059,article,Nouveau rôle d'évaluation : hausse de 23 % à Québec,Noovo Info,2024-09-05,https://www.noovo.info/nouvelle/nouveau-role-devaluation-hausse-de-23-mais-pas-dimpact-sur-le-compte-de-taxes-a-quebec.html,2026-10-31,partiellement_verifie,ch46 (§46.2 ; §46.10),"RATTACHEMENT : variation moyenne du rôle 2025-2027 +23,5 % ; variation des plex non publiée." | |
| 12 | +SRC-E-045,rapport,Canadian Cap Rates & Investment Insights — Q3 2026,CBRE Canada,2026-10-21,https://www.cbre.ca/insights/reports/canada-cap-rates-investment-insights-q3-2026,2026-10-31,verifie,ch46 (§46.4 ; §46.7),"RATTACHEMENT : Québec, multirésidentiel basse hauteur B 5,00-6,00 % ; sert à la lecture de la prime d'occupation (R* illustratif)." | |
| 13 | +SRC-E-012,serie,Taux d'intérêt des prêts hypothécaires résidentiels — fonds avancés,Banque du Canada,août 2026,https://www.bankofcanada.ca/valet/observations/group/A4_RATES_MORTGAGES/csv,2026-10-31,verifie,ch46 (§46.4 ; §46.9),"RATTACHEMENT : assuré fixe ≥ 5 ans 4,12 % ; non assuré 4,58 %." | |
| 14 | +SRC-E-017,tableau,Indices des prix de la construction de bâtiments (2023 = 100) — tableau 18-10-0289-01,Statistique Canada,T3 2026 (diffusion 2026-10-29),https://www150.statcan.gc.ca/t1/tbl1/fr/tv.action?pid=1810028901,2026-10-31,verifie,ch46 (§46.8),"RATTACHEMENT : Montréal, appartements < 5 étages 118,5 vs maison individuelle 116,5 (T3 2026) → ratio 1,017 appliqué au coût unitaire du cas 1 (valeurs du tab. 21 IPCB du ch. 21)." | |
| 15 | +SRC-C-038,guide,Delivering the Boldest Mortgage Reforms in Decades,Ministère des Finances Canada,2024-09-24 (en vigueur 2024-12-15),https://www.canada.ca/en/department-finance/news/2024/09/delivering-the-boldest-mortgage-reforms-in-decades.html,2026-10-31,verifie,ch46 (§46.9),"RATTACHEMENT : mise de fonds 5 %/10 %, plafond 1,5 M$, 30 ans premiers acheteurs." | |
| 16 | +SRC-C-035,page_web,Taux admissible minimal pour les prêts hypothécaires non assurés,BSIF,Page modifiée le 2026-01-29,https://www.osfi-bsif.gc.ca/en/supervision/financial-institutions/banks/minimum-qualifying-rate-uninsured-mortgages,2026-10-31,verifie,ch46 (§46.9),"RATTACHEMENT : max(contrat + 2 %, 5,25 %) appliqué par analogie au prêt assuré (déclaré)." | |
| 17 | +SRC-C-001,norme,Normes de pratique professionnelle des évaluateurs agréés (NPP),OEAQ,édition en vigueur (notes-C §1-2),—,2026-10-31,verifie,ch46 (§46.1 ; §46.11),"RATTACHEMENT : définition de la valeur marchande ; règle 2.3 (12 éléments) ; règle 2.4 (inspection) ; consultation distincte de l'acte d'évaluation." | |
| 18 | +SRC-A-001,loi,Code civil du Québec (RLRQ c. CCQ-1991),Québec (LégisQuébec),à jour au 2026-10-15,https://www.legisquebec.gouv.qc.ca/fr/document/lc/CCQ-1991,2026-10-31,verifie,ch46 (§46.1 ; §46.3),"RATTACHEMENT : art. 947, 1896, 1904, 1936-1937, 1941-1947, 1950, 1957-1963, 1959.1, 1965, 1968 ; le texte de l'art. 1960 n'a pas été relu sur LégisQuébec (HTTP 403 par script le 2026-10-31) : délais confirmés par la page du TAL (SRC-46-001)." | |
| 19 | +SRC-A-040,page_web,Loi 31 (2024 c. 2) et Loi 65 (2024 c. 23) — pages d'information,Gouvernement du Québec,consultées le 2026-10-31,https://www.quebec.ca/habitation-territoire/location/besoin-logement,2026-10-31,verifie,ch46 (§46.3),"RATTACHEMENT : moratoire sur les évictions (art. 1959) jusqu'au 6 juin 2027 ; 65 ans / 125 % (1959.1) ; la reprise (1957) n'est pas visée." | |
added
verification/chapters/ch48-registry.csv
+3 −0
@@ -0,0 +1,3 @@ | ||
| 1 | +id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes | |
| 2 | +SRC-48-001,article,"Portfolio Selection (The Journal of Finance, 7(1), 77-91)",Markowitz H.,1952,https://doi.org/10.2307/2975974,2026-10-31,verifie,48,"Notice Crossref lue le 2026-10-31 (titre, auteur, revue, volume 7, numéro 1, page de début 77, année 1952) ; pagination 77-91 selon la revue ; entrée markowitz1952 dans references/lib-ch48.bib ; cité en note de bas de page (§48.8), non par clé" | |
| 3 | +SRC-48-002,article,"Coherent Measures of Risk (Mathematical Finance, 9(3), 203-228)","Artzner P., Delbaen F., Eber J.-M., Heath D.",1999,https://doi.org/10.1111/1467-9965.00068,2026-10-31,verifie,48,"Notice Crossref lue le 2026-10-31 (titre, 4 auteurs, revue, volume 9, numéro 3, pages 203-228, année 1999) ; entrée artznerDelbaenEberHeath1999 dans references/lib-ch48.bib ; cité en note de bas de page (§48.7), non par clé" | |
modified
verification/inventaire.md
+182 −2
@@ -1,4 +1,4 @@ | ||
| 1 | −# Inventaire (48 scripts, 17 fichiers de données, 3 classeurs, 24 figures) | |
| 1 | +# Inventaire (228 scripts, 27 fichiers de données, 3 classeurs, 219 figures) | |
| 2 | 2 | |
| 3 | 3 | - module `analysis/python/traite/cas1.py` — Cas 1 — maison unifamiliale à Gatineau (données synthétiques) : calculs PARTAGÉS par les chapitres 9, 14, 16-2 |
| 4 | 4 | - module `analysis/python/traite/cas2.py` — Cas 2 — triplex à Québec, Limoilou (données synthétiques) : calculs PARTAGÉS par les chapitres 26, 27, 32 et 4 |
@@ -7,36 +7,215 @@ | ||
| 7 | 7 | - module `analysis/python/traite/comparables.py` — Méthode de comparaison : grille d'ajustements, ajustements séquentiels, ventes appariées, réconciliation. |
| 8 | 8 | - module `analysis/python/traite/cout.py` — Méthode du coût : coût neuf, dépréciation (physique, fonctionnelle, externe), extraction de marché. |
| 9 | 9 | - module `analysis/python/traite/finance.py` — Mathématiques financières de l'évaluation immobilière (conventions déclarées). |
| 10 | +- module `analysis/python/traite/geo.py` — Outils géospatiaux génériques du traité (chapitre 38 ; réutilisables aux chapitres 43 et 48). | |
| 10 | 11 | - module `analysis/python/traite/hedonique.py` — Outils économétriques : hédonique semi-log, indices (dummies temporelles, ventes répétées BMN / Case–Shiller), |
| 12 | +- module `analysis/python/traite/panel.py` — Données de panel et identification causale (chapitre 36) : transformation within, erreurs-types en grappes (CR | |
| 11 | 13 | - module `analysis/python/traite/style.py` — Style graphique du traité (Matplotlib). Palette validée : styles/palette.json. |
| 12 | 14 | - module `analysis/python/traite/synth.py` — Génération des quatre dossiers de cas SYNTHÉTIQUES du traité. |
| 15 | +- calcul `analysis/python/cases/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ÉT | |
| 16 | +- calcul `analysis/python/cases/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/python/cases/ch03\_cycles.py` — Chapitre 3 — Offre, demande et cycles : calculs de l'exemple intégral et des tableaux. | |
| 18 | +- calcul `analysis/python/cases/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 le | |
| 19 | +- calcul `analysis/python/cases/ch05\_rente.py` — Chapitre 5 — Économie urbaine et rente foncière : calculs de l'exemple intégral et des encadrés. | |
| 20 | +- calcul `analysis/python/cases/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/python/cases/ch07\_servitudes\_copro.py` — Chapitre 7 — Cadastre, titres, servitudes et copropriété : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 202 | |
| 22 | +- calcul `analysis/python/cases/ch08\_zonage.py` — Chapitre 8 — Zonage et urbanisme : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral. | |
| 23 | +- calcul `analysis/python/cases/ch09\_ratios.py` — Chapitre 9 — Évaluation foncière municipale et contestation (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031). | |
| 24 | +- calcul `analysis/python/cases/ch10\_controle\_rapport.py` — Chapitre 10 — contrôle automatique de la présence des douze éléments du contenu minimal d'un rapport écrit | |
| 25 | +- calcul `analysis/python/cases/ch10\_matrice\_normes.py` — Chapitre 10 — statistiques descriptives de la matrice des dispositions normatives du domaine C | |
| 26 | +- calcul `analysis/python/cases/ch11\_inspection.py` — Chapitre 11 — inspection synthétique du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) : fiche d'état par | |
| 27 | +- calcul `analysis/python/cases/ch12\_mesurage.py` — Chapitre 12 — Mesurage, superficies et plans : calculs du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). | |
| 28 | +- calcul `analysis/python/cases/ch13\_sources.py` — Chapitre 13 — Transactions, inscriptions, loyers et coûts : lecture et description des fichiers RÉELS de data/ | |
| 29 | +- calcul `analysis/python/cases/ch14\_nettoyage.py` — Chapitre 14 — Nettoyage, géocodage et qualité des données (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES). | |
| 30 | +- calcul `analysis/python/cases/ch15\_segmentation.py` — Chapitre 15 — Études de marché et segmentation. Calculs de l'exemple intégral et des tableaux du chapitre. | |
| 13 | 31 | - calcul `analysis/python/cases/ch16\_selection.py` — Chapitre 16 — sélection des comparables pour le sujet du cas 1 (Gatineau, données synthétiques). |
| 32 | +- calcul `analysis/python/cases/ch17\_ajustements.py` — Chapitre 17 — ajustements qualitatifs et quantitatifs des cinq comparables du cas 1 (Gatineau, données synthét | |
| 33 | +- calcul `analysis/python/cases/ch18\_hedonique.py` — Chapitre 18 — Modèles hédoniques : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUE | |
| 34 | +- calcul `analysis/python/cases/ch19\_spatial.py` — Chapitre 19 — modèles spatiaux et temporels sur le cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 35 | +- calcul `analysis/python/cases/ch20\_reconciliation.py` — Chapitre 20 — réconciliation et incertitude : combinaison des indications du cas 1 (Gatineau, données synthéti | |
| 14 | 36 | - calcul `analysis/python/cases/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/python/cases/ch22\_metre.py` — Chapitre 22 — métré et quantités du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). | |
| 38 | +- calcul `analysis/python/cases/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ÉTI | |
| 39 | +- calcul `analysis/python/cases/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/python/cases/ch25\_terrain.py` — Chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 41 | +- calcul `analysis/python/cases/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/python/cases/ch27\_revenus.py` — Chapitre 27 — Revenus potentiels, vacance et pertes : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (t | |
| 43 | +- calcul `analysis/python/cases/ch28\_depenses.py` — Chapitre 28 — Dépenses, réserves, CAPEX et RNE : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (triple | |
| 15 | 44 | - calcul `analysis/python/cases/ch29\_capitalisation.py` — Chapitre 29 — Capitalisation directe : calculs du cas 3 (12 logements, Rosemont ; DONNÉES SYNTHÉTIQUES). |
| 16 | 45 | - calcul `analysis/python/cases/ch30\_dcf.py` — Chapitre 30 — Flux actualisés et valeur terminale : exemple intégral du cas 3 (12 logements, Montréal, |
| 46 | +- calcul `analysis/python/cases/ch31\_financement.py` — Chapitre 31 — Financement, levier, RCD et RPV : calculs du chapitre (cas 3, 12 logements, Montréal, | |
| 47 | +- calcul `analysis/python/cases/ch32\_plex.py` — Chapitre 32 — Duplex à quintuplex : calculs de l'exemple intégral (cas 2, triplex de Limoilou, données SYNTHÉT | |
| 48 | +- calcul `analysis/python/cases/ch33\_six\_logements.py` — Chapitre 33 — Immeubles de six logements et plus : tous les chiffres cités dans manuscript/chapters/ch33.tex | |
| 49 | +- calcul `analysis/python/cases/ch34\_tal.py` — Chapitre 34 — TAL, encadrement locatif et scénarios : calculs du chapitre (cas 3, 12 logements, Montréal, | |
| 50 | +- calcul `analysis/python/cases/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/python/cases/ch36\_panel.py` — Chapitre 36 — Données de panel et identification causale : choc simulé sur les séries de RNE du cas 4 | |
| 52 | +- calcul `analysis/python/cases/ch37\_ml.py` — Chapitre 37 — Apprentissage automatique et explicabilité : exemple intégral sur les 600 ventes du cas 1 | |
| 53 | +- calcul `analysis/python/cases/ch38\_sig.py` — Chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUES, graine 2 | |
| 54 | +- calcul `analysis/python/cases/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/python/cases/ch40\_montecarlo.py` — Chapitre 40 — Monte-Carlo et stress tests (DONNÉES SYNTHÉTIQUES : cas 3, 12 logements à Montréal ; cas 4, port | |
| 56 | +- calcul `analysis/python/cases/ch41\_phmu.py` — Chapitre 41 — Plus haute et meilleure utilisation, terrains et développement : calculs de l'exemple intégral. | |
| 57 | +- calcul `analysis/python/cases/ch42\_copro.py` — Chapitre 42 — Copropriétés et conversions : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 58 | +- calcul `analysis/python/cases/ch43\_risques.py` — Chapitre 43 — Risques environnementaux et sinistres : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral. | |
| 59 | +- calcul `analysis/python/cases/ch44\_renovation.py` — Chapitre 44 — rénovation et efficacité énergétique : analyse coût-bénéfice de deux mesures sur le sujet du cas | |
| 60 | +- calcul `analysis/python/cases/ch45\_dossier.py` — Chapitre 45 — Cas 1 : maison unifamiliale à Gatineau (DONNÉES SYNTHÉTIQUES, propriété fictive) — dossier compl | |
| 61 | +- calcul `analysis/python/cases/ch46\_dossier.py` — Chapitre 46 — Cas 2 : triplex à Québec (Limoilou), dossier complet (DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 17 | 62 | - calcul `analysis/python/cases/ch47\_dossier.py` — Chapitre 47 — Cas 3 : immeuble de 12 logements à Montréal (DONNÉES SYNTHÉTIQUES, immeuble fictif). |
| 63 | +- calcul `analysis/python/cases/ch48\_portefeuille.py` — Chapitre 48 — Cas 4 : portefeuille multirésidentiel interrégional (DONNÉES SYNTHÉTIQUES, 48 immeubles fictifs, | |
| 18 | 64 | - calcul `analysis/python/cases/generate\_all.py` — Régénère tous les jeux synthétiques (graine fixée). Usage : python3 -m analysis.python.cases.generate\_all (de |
| 19 | 65 | - calcul `analysis/python/cases/make\_spreadsheets.py` — Classeurs Excel du traité (openpyxl, formules vivantes) : spreadsheets/ |
| 66 | +- figure `analysis/python/figures/ch01\_figures.py` — Figures du chapitre 1 (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031 ; simulations étiquetées). | |
| 67 | +- figure `analysis/python/figures/ch02\_decomposition.py` — Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) revenu net d'exploitation projeté avec les baux en place (dro | |
| 68 | +- figure `analysis/python/figures/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/python/figures/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 : V80691 | |
| 70 | +- figure `analysis/python/figures/ch03\_cycle.py` — Figures ch03 — Simulation d'un cycle stock-flux (SYNTHÉTIQUE, analysis/python/cases/ch03\_cycles.py, paramètre | |
| 71 | +- figure `analysis/python/figures/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/python/figures/ch03\_quadrants.py` — Figure ch03 — Modèle des quatre quadrants (DiPasquale–Wheaton) tracé à partir des paramètres pédagogiques du m | |
| 73 | +- figure `analysis/python/figures/ch04\_carte.py` — Figure ch04 — carte schématique des six RMR du Québec : position des centres (coordonnées de la Base de donnée | |
| 74 | +- figure `analysis/python/figures/ch04\_ipln.py` — Figure ch04 — Indice des prix des logements neufs (IPLN), total maison et terrain, déc. 2016 = 100, janvier 20 | |
| 75 | +- figure `analysis/python/figures/ch04\_mutations.py` — Figure ch04 — taux effectif des droits sur les mutations immobilières (droit / base d'imposition) selon la bas | |
| 76 | +- figure `analysis/python/figures/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/python/figures/ch04\_schl.py` — Figure ch04 — marché locatif par RMR : taux d'inoccupation (octobre 2024 et 2025) et loyer moyen des logements | |
| 78 | +- figure `analysis/python/figures/ch04\_taux.py` — Figure ch04 — taux d'intérêt 2000-2026 : taux hypothécaire conventionnel 5 ans affiché (V80691335, hebdomadair | |
| 79 | +- figure `analysis/python/figures/ch05\_capitalisation.py` — Figure ch05 — sensibilité de la capitalisation d'un écart de taxe foncière : perte de valeur (en \% de la vale | |
| 80 | +- figure `analysis/python/figures/ch05\_cas1\_distance.py` — Figure ch05 — prix par mètre carré habitable et distance au centre, cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, gra | |
| 81 | +- figure `analysis/python/figures/ch05\_gradient.py` — Figure ch05 — gradients du modèle monocentrique simulé (PARAMÈTRES PÉDAGOGIQUES DÉCLARÉS dans ch05\_rente.PARA | |
| 82 | +- figure `analysis/python/figures/ch05\_rmr.py` — Figure ch05 — valeur par logement par RMR du portefeuille du cas 4 (DONNÉES SYNTHÉTIQUES, graine 20261031) et | |
| 83 | +- figure `analysis/python/figures/ch05\_surface.py` — Figure ch05 — surface de rente bicentrique simulée (courbes de niveau) : enveloppe de deux surfaces d'enchère | |
| 84 | +- figure `analysis/python/figures/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/python/figures/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/python/figures/ch07\_charges.py` — Figure ch07 — répartition des charges communes annuelles entre les huit fractions (DONNÉES SYNTHÉTIQUES). | |
| 87 | +- figure `analysis/python/figures/ch07\_fonds.py` — Figure ch07 — trajectoire du fonds de prévoyance sur 25 ans selon trois cotisations (DONNÉES SYNTHÉTIQUES). | |
| 88 | +- figure `analysis/python/figures/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/python/figures/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/python/figures/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/python/figures/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/python/figures/ch08\_rezonage\_paires.py` — Figure ch08 — effet d'un rezonage mesuré par ventes appariées et par doubles différences (DONNÉES SYNTHÉTIQUES | |
| 93 | +- figure `analysis/python/figures/ch09\_ratios.py` — Figures du chapitre 9 (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031) : | |
| 94 | +- figure `analysis/python/figures/ch10\_figures.py` — Chapitre 10 — figures Matplotlib : | |
| 95 | +- figure `analysis/python/figures/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, c | |
| 96 | +- figure `analysis/python/figures/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/python/figures/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/python/figures/ch12\_figures.py` — Figures du chapitre 12 (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) : | |
| 99 | +- figure `analysis/python/figures/ch13\_biais\_datation.py` — Figure ch13 — biais relatif de l'ajustement de conditions du marché lorsqu'une vente est datée à l'acte notari | |
| 100 | +- figure `analysis/python/figures/ch13\_indices.py` — Figure ch13 — trois indices souvent confondus, données RÉELLES de data/raw, rebasés T1 2017 = 100 : | |
| 101 | +- figure `analysis/python/figures/ch13\_rfu.py` — Figure ch13 — composition de l'évaluation imposable uniformisée 2026 (MAMH, richesse foncière uniformisée, CC | |
| 102 | +- figure `analysis/python/figures/ch13\_schl.py` — Figure ch13 — SCHL, Enquête sur les logements locatifs d'octobre 2025 (données RÉELLES, fichier rmr-quebec-202 | |
| 103 | +- figure `analysis/python/figures/ch14\_figures.py` — Chapitre 14 — figures (données SYNTHÉTIQUES, graine 20261031). Idempotent. | |
| 104 | +- figure `analysis/python/figures/ch15\_figures.py` — Figures du chapitre 15 — Études de marché et segmentation. Produit dans assets/figures/ch15/ : | |
| 105 | +- figure `analysis/python/figures/ch17\_figures.py` — Chapitre 17 — figures : cascade d'ajustements (G0404), dispersion des paires, prix bruts vs ajustés, tornade d | |
| 106 | +- figure `analysis/python/figures/ch18\_figures.py` — Figures du chapitre 18 — Modèles hédoniques (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 107 | +- figure `analysis/python/figures/ch19\_figures.py` — Figures du chapitre 19 — modèles spatiaux et temporels (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031 | |
| 108 | +- figure `analysis/python/figures/ch20\_figures.py` — Chapitre 20 — figures : densités bootstrap et énumération exhaustive ; résidus des candidats et élargissement | |
| 20 | 109 | - figure `analysis/python/figures/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 2 |
| 21 | 110 | - figure `analysis/python/figures/ch21\_ipcb.py` — Figure ch21 — IPCB Montréal (Statistique Canada, tableau 18-10-0289-01, base 2023 = 100), données RÉELLES lues |
| 22 | 111 | - figure `analysis/python/figures/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/python/figures/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/python/figures/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 mesure | |
| 114 | +- figure `analysis/python/figures/ch23\_ipcb\_divisions.py` — Figure ch23 — IPCB Montréal, maison individuelle, par division de travaux (Statistique Canada 18-10-0289-01), | |
| 115 | +- figure `analysis/python/figures/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/python/figures/ch23\_sensibilite.py` — Figure ch23 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1 ; taux documenté Banque du Canada V80691335) : | |
| 117 | +- figure `analysis/python/figures/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/python/figures/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 composant | |
| 119 | +- figure `analysis/python/figures/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 20 | |
| 120 | +- figure `analysis/python/figures/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/python/figures/ch24\_sensibilite.py` — Figure ch24 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) : (a) taux de dépréciation âge-vie mo | |
| 122 | +- figure `analysis/python/figures/ch25\_figures.py` — Figures du chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 123 | +- figure `analysis/python/figures/ch26\_figures.py` — Chapitre 26 — figures (4) : loyer contractuel vs loyer de marché par logement (cas 3), distribution de l'ancie | |
| 124 | +- figure `analysis/python/figures/ch27\_figures.py` — Chapitre 27 — figures (4) : | |
| 125 | +- figure `analysis/python/figures/ch28\_figures.py` — Chapitre 28 — figures (5) : cascade RBP → RNE (cas 3) ; structure des dépenses en \% du RBE (cas 3 vs cas 2) ; | |
| 23 | 126 | - figure `analysis/python/figures/ch29\_figures.py` — Chapitre 29 — figures (5) : taux extraits (histogramme), taux vs état/taille (nuage), surface V(RNE, R) (carte |
| 24 | 127 | - figure `analysis/python/figures/ch30\_flux.py` — Ch. 30, figure « flux » : RNE, CAPEX et flux net avant dette (barres) du cas 3 (DONNÉES SYNTHÉTIQUES), puis va |
| 25 | 128 | - figure `analysis/python/figures/ch30\_gdc.py` — Ch. 30, figure « gdc » (DONNÉES RÉELLES, Banque du Canada, API Valet, téléchargées le 2026-10-31) : rendements |
| 26 | 129 | - figure `analysis/python/figures/ch30\_loyers.py` — Ch. 30, figure « loyers » : trajectoire du revenu brut potentiel contractuel (indexé au taux TAL + relocation |
| 27 | 130 | - figure `analysis/python/figures/ch30\_surface.py` — Ch. 30, figure « surface » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) selon le taux d'actualisation r (ligne |
| 28 | 131 | - figure `analysis/python/figures/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/python/figures/ch31\_levier.py` — Ch. 31, figure « levier » (DONNÉES SYNTHÉTIQUES, cas 3) : TRI des fonds propres sur dix ans et rendement coura | |
| 133 | +- figure `analysis/python/figures/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 9 | |
| 134 | +- figure `analysis/python/figures/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/python/figures/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/python/figures/ch32\_figures.py` — Figures du chapitre 32 — Duplex à quintuplex (données SYNTHÉTIQUES du cas 2, sauf la figure des médianes APCIQ | |
| 137 | +- figure `analysis/python/figures/ch33\_figures.py` — Chapitre 33 — figures (4) : (1) SCHL, île de Montréal, loyers et inoccupation par taille d'immeuble et par ann | |
| 138 | +- figure `analysis/python/figures/ch34\_calcul\_tal.py` — Ch. 34, figure « exemple de calcul TAL » : composantes de l'augmentation mensuelle du logement 103 du cas 3 (D | |
| 139 | +- figure `analysis/python/figures/ch34\_ipc\_base.py` — Ch. 34, figure « IPC et pourcentage de base » (DONNÉES RÉELLES : Statistique Canada, tableau 18-10-0004-01, IP | |
| 140 | +- figure `analysis/python/figures/ch34\_rotation.py` — Ch. 34, figure « rotation espérée » : (gauche) rapport espéré loyer contractuel / loyer de marché d'un logemen | |
| 141 | +- figure `analysis/python/figures/ch34\_trajectoires.py` — Ch. 34, figure « trajectoires RBP » : revenu brut potentiel contractuel du cas 3 (DONNÉES SYNTHÉTIQUES) selon | |
| 142 | +- figure `analysis/python/figures/ch34\_valeur\_scenarios.py` — Ch. 34, figure « valeur par scénario » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour la grille rotation (5 | |
| 143 | +- figure `analysis/python/figures/ch35\_figures.py` — Figures du chapitre 35 — Indices immobiliers et ventes répétées. | |
| 144 | +- figure `analysis/python/figures/ch36\_figures.py` — Figures du chapitre 36 — données de panel et identification causale (cas 4, DONNÉES SYNTHÉTIQUES, graine 20261 | |
| 145 | +- figure `analysis/python/figures/ch37\_figures.py` — Figures du chapitre 37 — Apprentissage automatique et explicabilité (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, gr | |
| 146 | +- figure `analysis/python/figures/ch38\_figures.py` — Figures du chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUE | |
| 147 | +- figure `analysis/python/figures/ch39\_figures.py` — Figures du chapitre 39 — Modèles bayésiens et intervalles (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261 | |
| 148 | +- figure `analysis/python/figures/ch40\_figures.py` — Chapitre 40 — figures (DONNÉES SYNTHÉTIQUES : cas 3 et cas 4, graine 20261031). | |
| 149 | +- figure `analysis/python/figures/ch41\_figures.py` — Figures du chapitre 41 (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypothèses déclarées dans ch41\_phmu.p | |
| 150 | +- figure `analysis/python/figures/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/python/figures/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/python/figures/ch42\_grille.py` — Figure ch42 — grille de comparaison de la fraction F4 : prix observé, prix ajusté et décomposition des ajustem | |
| 153 | +- figure `analysis/python/figures/ch42\_medianes.py` — Figure ch42 — prix médians Centris des copropriétés et des unifamiliales par territoire, T3 2026 (DONNÉES RÉEL | |
| 154 | +- figure `analysis/python/figures/ch43\_carte\_cas4.py` — Figure ch43 — carte schématique des 48 immeubles du cas 4 (DONNÉES SYNTHÉTIQUES, coordonnées fictives autour d | |
| 155 | +- figure `analysis/python/figures/ch43\_carte\_riverain.py` — Figure ch43 — municipalité fictive de Rivière-Fictive (DONNÉES SYNTHÉTIQUES) : 625 lots, classes d'exposition | |
| 156 | +- figure `analysis/python/figures/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/python/figures/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/python/figures/ch43\_placebos.py` — Figure ch43 — inférence de randomisation exacte pour le DiD du cas 4 (DONNÉES SYNTHÉTIQUES) : distribution des | |
| 159 | +- figure `analysis/python/figures/ch44\_capitalisation.py` — Figure ch44 — (a) quatre lectures de ce que la thermopompe « vaut » pour le sujet du cas 1 : coût installé, co | |
| 160 | +- figure `analysis/python/figures/ch44\_flux.py` — Figure ch44 — flux annuels des deux mesures énergétiques du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, hypothèses d | |
| 161 | +- figure `analysis/python/figures/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/python/figures/ch44\_prime\_verte.py` — Figure ch44 — la « prime verte » dans la littérature : fourchettes publiées par étude (valeurs vérifiées, voir | |
| 163 | +- figure `analysis/python/figures/ch45\_figures.py` — Chapitre 45 — figures du dossier (cas 1, DONNÉES SYNTHÉTIQUES) : carte des comparables, cascade des ajustement | |
| 164 | +- figure `analysis/python/figures/ch46\_figures.py` — Chapitre 46 — figures du dossier « triplex à Québec » (DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 29 | 165 | - figure `analysis/python/figures/ch47\_dossier\_figures.py` — Chapitre 47 — figures du dossier « 12 logements à Montréal » (DONNÉES SYNTHÉTIQUES, graine 20261031). |
| 166 | +- figure `analysis/python/figures/ch48\_portefeuille\_figures.py` — Chapitre 48 — figures du dossier « portefeuille multirésidentiel interrégional » (DONNÉES SYNTHÉTIQUES, graine | |
| 30 | 167 | - figure `analysis/python/figures/run\_all.py` — Exécute tous les scripts de figures (analysis/python/figures/chNN\_*.py) et les scripts R (analysis/r/chNN\_*. |
| 31 | 168 | - test `analysis/python/tests/conftest.py` — |
| 32 | 169 | - test `analysis/python/tests/test\_cas1.py` — |
| 33 | 170 | - test `analysis/python/tests/test\_cas2\_cas4.py` — |
| 34 | 171 | - test `analysis/python/tests/test\_cas3.py` — |
| 172 | +- test `analysis/python/tests/test\_ch01.py` — Chapitre 1 — vérification des identités et des chiffres cités dans le texte et les solutions (données synthéti | |
| 173 | +- test `analysis/python/tests/test\_ch02.py` — Chapitre 2 — Droits immobiliers et bases de valeur : identités (additivité, Gordon, annuité) et valeurs citées | |
| 174 | +- test `analysis/python/tests/test\_ch03.py` — Tests du chapitre 3 — Offre, demande et cycles. | |
| 175 | +- test `analysis/python/tests/test\_ch04.py` — Tests du chapitre 4 — marchés résidentiels québécois : lecture des données réelles (Recensement 2021, 17-10-01 | |
| 176 | +- test `analysis/python/tests/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/python/tests/test\_ch06.py` — Tests du chapitre 6 — démembrements et modalités du droit de propriété (DONNÉES SYNTHÉTIQUES, hypothèses décla | |
| 178 | +- test `analysis/python/tests/test\_ch07.py` — Tests du chapitre 7 — servitude par ventes appariées, quotes-parts et charges de copropriété, fonds de prévoya | |
| 179 | +- test `analysis/python/tests/test\_ch08.py` — Tests du chapitre 8 — zonage et urbanisme (DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 180 | +- test `analysis/python/tests/test\_ch09.py` — Tests du chapitre 9 — étude de ratios (COD, PRD, PRB, proportion médiane, facteur comparatif), dossiers de con | |
| 181 | +- test `analysis/python/tests/test\_ch10.py` — Chapitre 10 — vérification des chiffres cités dans le texte, les tableaux et les solutions. | |
| 182 | +- test `analysis/python/tests/test\_ch11.py` — Tests du chapitre 11 — inspection synthétique du sujet du cas 1, convention d'âge effectif, dépréciation venti | |
| 183 | +- test `analysis/python/tests/test\_ch12.py` — Tests du chapitre 12 — mesurage, superficies, propagation d'erreur (cas 1, données synthétiques). | |
| 184 | +- test `analysis/python/tests/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-000 | |
| 185 | +- test `analysis/python/tests/test\_ch14.py` — Chapitre 14 — Nettoyage, géocodage et qualité des données : reproductibilité du jeu brut, identités des diagno | |
| 186 | +- test `analysis/python/tests/test\_ch15.py` — Chapitre 15 — Études de marché et segmentation : vérification des identités et des chiffres cités dans le text | |
| 35 | 187 | - test `analysis/python/tests/test\_ch16.py` — Chapitre 16 — vérification des chiffres cités dans le texte et les solutions. |
| 188 | +- test `analysis/python/tests/test\_ch17.py` — Chapitre 17 — vérification des identités et des chiffres cités dans le texte et les solutions (tolérances décl | |
| 189 | +- test `analysis/python/tests/test\_ch18.py` — Chapitre 18 — Modèles hédoniques : vérification des chiffres cités dans le texte, les tableaux et les solution | |
| 190 | +- test `analysis/python/tests/test\_ch19.py` — Chapitre 19 — tests des fonctions spatiales ajoutées à traite.hedonique et des chiffres cités dans le texte et | |
| 191 | +- test `analysis/python/tests/test\_ch20.py` — Chapitre 20 — réconciliation et incertitude : identités, chiffres cités dans le texte et dans les solutions (t | |
| 36 | 192 | - test `analysis/python/tests/test\_ch21.py` — Tests du chapitre 21 — coût neuf du sujet du cas 1, IPCB Montréal, sensibilité et exercices. |
| 193 | +- test `analysis/python/tests/test\_ch22.py` — Tests du chapitre 22 — métré et quantités du sujet du cas 1. | |
| 194 | +- test `analysis/python/tests/test\_ch23.py` — Tests du chapitre 23 — coûts directs et indirects : structure du devis du cas 1, financement intérimaire (trai | |
| 195 | +- test `analysis/python/tests/test\_ch24.py` — Tests du chapitre 24 — dépréciation et désuétudes du sujet du cas 1, extraction de marché, profils et exercice | |
| 196 | +- test `analysis/python/tests/test\_ch25.py` — Tests du chapitre 25 — Évaluation du terrain : jeu synthétique de terrains (graine 20261031), modèle hédonique | |
| 197 | +- test `analysis/python/tests/test\_ch26.py` — Tests du chapitre 26 — baux et loyers (cas 3 et cas 2, données synthétiques). | |
| 198 | +- test `analysis/python/tests/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/python/tests/test\_ch28.py` — Tests du chapitre 28 — dépenses, réserves, CAPEX et RNE (cas 3 et cas 2, données synthétiques). | |
| 37 | 200 | - test `analysis/python/tests/test\_ch29.py` — Tests du chapitre 29 — capitalisation directe (cas 3, données synthétiques). |
| 38 | 201 | - test `analysis/python/tests/test\_ch30.py` — Tests du chapitre 30 — flux actualisés et valeur terminale (cas 3, données synthétiques). |
| 202 | +- test `analysis/python/tests/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/python/tests/test\_ch32.py` — Tests du chapitre 32 — Duplex à quintuplex : identités, cohérence avec traite.cas2 (partagé avec les ch. 26, 2 | |
| 204 | +- test `analysis/python/tests/test\_ch33.py` — Tests du chapitre 33 (immeubles de six logements et plus) : identités, cohérence avec traite.cas3/cas4 et le c | |
| 205 | +- test `analysis/python/tests/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/python/tests/test\_ch35.py` — Chapitre 35 — Indices immobiliers et ventes répétées : identités et valeurs citées dans le texte, les tableaux | |
| 207 | +- test `analysis/python/tests/test\_ch36.py` — Chapitre 36 — tests des fonctions de traite.panel (récupération d'effets connus sur données simulées) et des c | |
| 208 | +- test `analysis/python/tests/test\_ch37.py` — Chapitre 37 — Apprentissage automatique et explicabilité : reproductibilité et bornes de performance des chiff | |
| 209 | +- test `analysis/python/tests/test\_ch38.py` — Chapitre 38 — tests des fonctions de traite.geo et des chiffres cités dans manuscript/chapters/ch38.tex et sol | |
| 210 | +- test `analysis/python/tests/test\_ch39.py` — Chapitre 39 — Modèles bayésiens et intervalles : vérification des identités, des diagnostics et des chiffres c | |
| 211 | +- test `analysis/python/tests/test\_ch40.py` — Tests du chapitre 40 (Monte-Carlo et stress tests — données synthétiques, cas 3 et cas 4) : égalité stricte av | |
| 212 | +- test `analysis/python/tests/test\_ch41.py` — Tests du chapitre 41 — PHMU, terrains et développement (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypoth | |
| 213 | +- test `analysis/python/tests/test\_ch42.py` — Tests du chapitre 42 — fraction de copropriété (grille, réconciliation), cotisation spéciale, copropriété loca | |
| 214 | +- test `analysis/python/tests/test\_ch43.py` — Tests du chapitre 43 — risques environnementaux et sinistres (DONNÉES SYNTHÉTIQUES, graine 20261031). | |
| 215 | +- test `analysis/python/tests/test\_ch44.py` — Tests du chapitre 44 — rénovation et efficacité énergétique (sujet du cas 1, DONNÉES SYNTHÉTIQUES). | |
| 216 | +- test `analysis/python/tests/test\_ch46.py` — Tests du chapitre 46 — Cas 2 : triplex à Québec (dossier complet, données SYNTHÉTIQUES). | |
| 39 | 217 | - test `analysis/python/tests/test\_ch47.py` — Tests du chapitre 47 (cas 3, 12 logements à Montréal — données synthétiques) : identités, valeurs citées dans |
| 218 | +- test `analysis/python/tests/test\_ch48.py` — Tests du chapitre 48 (cas 4, portefeuille interrégional — données synthétiques) : identités du sommaire, cohér | |
| 40 | 219 | - test `analysis/python/tests/test\_comparables.py` — |
| 41 | 220 | - test `analysis/python/tests/test\_cout.py` — |
| 42 | 221 | - test `analysis/python/tests/test\_finance.py` — |
@@ -47,4 +226,5 @@ | ||
| 47 | 226 | - outil `tools/make\_labels.py` — Écrit un fichier d'étiquettes (newlabel) pour tous les chapitres et annexes, afin que cref{ch:NN} / cref{app:x |
| 48 | 227 | - outil `tools/make\_release.py` — Assemble release/ : PDF, sources LaTeX, données, figures, scripts, classeurs, corrigés, rapport de validation. |
| 49 | 228 | - outil `tools/merge\_sources.py` — Fusionne sources/registry-*.csv → sources/registry.csv, sources/normes-*.csv → sources/normes-matrice.csv, |
| 50 | −- outil `tools/compile\_chapter.sh` — !/usr/bin/env bash | |
| \ No newline at end of file | ||
| 229 | +- outil `tools/compile\_chapter.sh` — !/usr/bin/env bash | |
| 230 | +- outil `tools/valider\_chapitre.sh` — !/usr/bin/env bash | |
| \ No newline at end of file | ||
| 51 | 231 | |