Annexe scripts/classeurs + inventaire automatique ; ch. 39-44 validés
12 changed files +726 −491
modified
analysis/python/figures/ch45_figures.py
+1 −1
@@ -124,7 +124,7 @@ def fig_depreciation(D): | |||||
| 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") | 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 | else: | 125 | else: | ||
| 126 | ax.text(i, b + abs(v) + 8000, fmt_d(abs(v)), ha="center", fontsize=6.5) | 126 | ax.text(i, b + abs(v) + 8000, fmt_d(abs(v)), ha="center", fontsize=6.5) | ||
| 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) | 127 | + ax.axhline(D["V_L"] + D["CN"], color=palette.ink2, lw=0.7, ls=":"); ax.text(4.4, D["V_L"] + D["CN"] + 30000, f"terrain + coût neuf\n{fmt_d(D['V_L'] + D['CN'])}", fontsize=6.5, ha="right", color=palette.ink2) | ||
| 128 | ax.yaxis.set_major_formatter(FuncFormatter(fmt_k)); ax.tick_params(axis="x", labelsize=6.3); ax.set_ylim(0, 790000) | 128 | ax.yaxis.set_major_formatter(FuncFormatter(fmt_k)); ax.tick_params(axis="x", labelsize=6.3); ax.set_ylim(0, 790000) | ||
| 129 | ax.set_title(f"(b) Extraction : {D['taux_tot']*100:.2f} % → {fmt_d(D['V_cout_arrondie'])}".replace(".", ","), loc="left", fontsize=8) | 129 | ax.set_title(f"(b) Extraction : {D['taux_tot']*100:.2f} % → {fmt_d(D['V_cout_arrondie'])}".replace(".", ","), loc="left", fontsize=8) | ||
| 130 | fig.tight_layout(w_pad=1.5) | 130 | fig.tight_layout(w_pad=1.5) | ||
added
analysis/python/tests/test_ch45.py
+162 −0
@@ -0,0 +1,162 @@ | |||||
| 1 | +"""Tests du chapitre 45 (cas 1, maison unifamiliale à Gatineau — DONNÉES SYNTHÉTIQUES) : le dossier ne doit reprendre aucun chiffre | ||||
| 2 | +différent des chapitres de méthode (ch. 9, 11, 12, 16, 17, 18, 20, 21, 24, 25) ; identités du financement de l'acheteur ; | ||||
| 3 | +chiffres cités dans le texte et les solutions. Tolérances déclarées : montants cités au dollar ±1 $ ; taux ±1e-6 ; identités ±1e-6.""" | ||||
| 4 | +import sys, pathlib, math | ||||
| 5 | +import numpy as np, pytest | ||||
| 6 | +sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1] / "cases")) | ||||
| 7 | +from traite import finance as fin, cas1 | ||||
| 8 | +import ch45_dossier as ch | ||||
| 9 | +import ch17_ajustements as c17 | ||||
| 10 | +import ch20_reconciliation as c20 | ||||
| 11 | +import ch24_depreciation as c24 | ||||
| 12 | +import ch12_mesurage as c12 | ||||
| 13 | +import ch09_ratios as c09 | ||||
| 14 | + | ||||
| 15 | + | ||||
| 16 | +@pytest.fixture(scope="module") | ||||
| 17 | +def D(): | ||||
| 18 | + return ch.dossier() | ||||
| 19 | + | ||||
| 20 | + | ||||
| 21 | +@pytest.fixture(scope="module") | ||||
| 22 | +def E(D): | ||||
| 23 | + return ch.exercices(D) | ||||
| 24 | + | ||||
| 25 | + | ||||
| 26 | +# ----------------------------------------------------------------------------- héritages : égalité stricte avec les chapitres de méthode | ||||
| 27 | +def test_selection_ch16(D): | ||||
| 28 | + assert D["etapes16"] == {"candidats_total": 600, "apres_delai": 236, "apres_rayon": 40, "apres_type": 27, "apres_superficie": 16} | ||||
| 29 | + assert list(D["comparables"]["id_vente"]) == ["G0574", "G0404", "G0468", "G0477", "G0575"] | ||||
| 30 | + assert D["indication_brute16"] == pytest.approx(551_029, abs=1) | ||||
| 31 | + | ||||
| 32 | + | ||||
| 33 | +def test_grille_ch17(D): | ||||
| 34 | + b = c17.base(); rec = c17.reconcilier(b) | ||||
| 35 | + assert np.allclose(D["adj17"]["prix_ajuste"].values, b["adj"]["prix_ajuste"].values) | ||||
| 36 | + assert D["adj17"]["prix_ajuste"].round(0).tolist() == [640247, 541222, 572793, 568853, 584862] | ||||
| 37 | + assert np.allclose(D["poids17"], rec["poids_inverse_brut"]) and np.round(D["poids17"], 3).tolist() == [0.179, 0.327, 0.202, 0.159, 0.133] | ||||
| 38 | + assert D["V_comp"] == pytest.approx(rec["inverse_brut"]["valeur_ponderee"]) and D["V_comp"] == pytest.approx(575_565, abs=1) | ||||
| 39 | + assert D["rec17"]["egal"]["valeur_ponderee"] == pytest.approx(581_595, abs=1) and D["rec17"]["egal"]["mediane"] == pytest.approx(572_793, abs=1) | ||||
| 40 | + | ||||
| 41 | + | ||||
| 42 | +def test_hedonique_ch18(D): | ||||
| 43 | + t = cas1.tout() | ||||
| 44 | + assert D["V_hed"] == pytest.approx(t["prediction_hedonique"]) and D["V_hed"] == pytest.approx(637_953, abs=1) | ||||
| 45 | + assert D["ip95"][0] == pytest.approx(539_682, abs=1) and D["ip95"][1] == pytest.approx(749_087, abs=1) | ||||
| 46 | + assert D["ip80"][0] == pytest.approx(571_192, abs=1) and D["ip80"][1] == pytest.approx(707_764, abs=1) | ||||
| 47 | + assert D["ic95_valeur"][0] == pytest.approx(625_586, abs=5) and D["ic95_valeur"][1] == pytest.approx(650_596, abs=5) | ||||
| 48 | + assert D["pred18"]["facteur_duan"] == pytest.approx(1.00335, abs=1e-5) | ||||
| 49 | + | ||||
| 50 | + | ||||
| 51 | +def test_cout_ch21_ch24_ch25(D): | ||||
| 52 | + assert D["cn"]["total"] == pytest.approx(397_567.33, abs=0.01) and D["cn"]["direct"] == pytest.approx(298_826.17, abs=0.01) | ||||
| 53 | + assert D["cn"]["indirects"] == pytest.approx(62_598.68, abs=0.01) and D["cn"]["incitatif"] == pytest.approx(36_142.49, abs=0.01) | ||||
| 54 | + assert D["V_L"] == 277_000 and D["D_ext"] == pytest.approx(87_461.05, abs=0.01) and D["taux_ext"] == pytest.approx(0.22, abs=1e-6) | ||||
| 55 | + assert D["D_fonc"] == pytest.approx(7_605.31, abs=0.01) and D["D_tot"] == pytest.approx(95_066.36, abs=0.01) and D["taux_tot"] == pytest.approx(0.2391, abs=5e-5) | ||||
| 56 | + assert D["V_cout"] == pytest.approx(579_500.97, abs=0.01) and D["V_cout_arrondie"] == 580_000 | ||||
| 57 | + assert D["V_cout"] == pytest.approx(D["V_L"] + D["CN"] - D["D_ext"] - D["D_fonc"]) | ||||
| 58 | + assert D["V_ventilee"] == pytest.approx(445_872.14, abs=0.01) | ||||
| 59 | + assert D["comp25"]["reconciliation"]["valeur_ponderee"] == pytest.approx(267_388, abs=1) | ||||
| 60 | + assert D["comp25"]["prediction_hedonique"] == pytest.approx(253_412, abs=1) | ||||
| 61 | + assert D["extr25"]["mediane"] == pytest.approx(276_954, abs=1) and D["extr25"]["n"] == 13 and D["extr25"]["retenue"] == 277_000 | ||||
| 62 | + | ||||
| 63 | + | ||||
| 64 | +def test_inspection_ch11_mesurage_ch12(D): | ||||
| 65 | + dv = D["dv11"] | ||||
| 66 | + assert dv["age_effectif_structure"] == pytest.approx(29, abs=1e-9) and dv["curable"] == pytest.approx(10_479.98, abs=0.01) | ||||
| 67 | + assert dv["total"] == pytest.approx(221_089.88, abs=0.01) and dv["taux"] == pytest.approx(0.5561, abs=5e-5) | ||||
| 68 | + s = D["sup12"] | ||||
| 69 | + assert s["aire_sol_m2"] == pytest.approx(95.04) and s["aire_etages_m2"] == pytest.approx(190.08) and s["habitable_m2"] == 165.0 | ||||
| 70 | + assert s["nette_m2"] == pytest.approx(159.9, abs=0.05) and s["lot_m2"] == pytest.approx(620, abs=0.05) and s["garage_m2"] == pytest.approx(22.33, abs=0.01) | ||||
| 71 | + assert len(D["fiche"]) == 20 | ||||
| 72 | + | ||||
| 73 | + | ||||
| 74 | +def test_role_taxes_ch09(D): | ||||
| 75 | + assert D["role"] == 468_000 and D["valeur_reelle_2024"] == 573_000 | ||||
| 76 | + assert D["PM_fictif"] == pytest.approx(0.9244, abs=5e-5) and D["F_fictif"] == pytest.approx(1.0818, abs=5e-5) | ||||
| 77 | + assert D["taxes"]["total"] == pytest.approx(4_076.01, abs=0.01) | ||||
| 78 | + assert D["ratio_sujet_role"] == pytest.approx(0.8168, abs=5e-5) | ||||
| 79 | + | ||||
| 80 | + | ||||
| 81 | +def test_reconciliation_ch20(D): | ||||
| 82 | + r = c20.tout(); cb = r["combinaison"] | ||||
| 83 | + assert D["conclusion"] == cb["conclusion"] == 605_000 and tuple(D["fourchette"]) == (575_000, 640_000) | ||||
| 84 | + assert D["V_raisonnee"] == pytest.approx(604_229.92, abs=0.01) | ||||
| 85 | + assert D["V_raisonnee"] == pytest.approx(0.40 * D["V_comp"] + 0.45 * D["V_hed"] + 0.15 * D["V_cout"]) | ||||
| 86 | + assert D["indications"]["cout"] == pytest.approx(D["V_cout"]) | ||||
| 87 | + assert D["ecarts_types20"]["comparaison"] == pytest.approx(18_385, abs=1) and D["ecarts_types20"]["hedonique"] == pytest.approx(11_462, abs=1) | ||||
| 88 | + assert D["ecarts_types20"]["cout"] == pytest.approx(23_695, abs=1) and D["sd_conclusion"] == pytest.approx(10_450, abs=1) | ||||
| 89 | + assert tuple(D["bande90"]) == (590_000, 625_000) and D["verite"]["V_true"] == pytest.approx(641_159, abs=1) | ||||
| 90 | + assert D["residu_moyen_retenus"] == pytest.approx(-0.0853, abs=5e-5) and D["V_16"] == pytest.approx(604_689, abs=1) | ||||
| 91 | + | ||||
| 92 | + | ||||
| 93 | +# ----------------------------------------------------------------------------- droits de mutation et financement (propres au ch. 45) | ||||
| 94 | +def test_mutation(D): | ||||
| 95 | + assert D["base_mutation"] == 605_000 # 605 000 > 468 000 × 1,02 | ||||
| 96 | + attendu = 62_900 * 0.005 + (315_000 - 62_900) * 0.01 + (500_000 - 315_000) * 0.015 + (605_000 - 500_000) * 0.03 | ||||
| 97 | + assert D["droits_mutation"] == pytest.approx(attendu) and D["droits_mutation"] == pytest.approx(8_760.50, abs=0.01) | ||||
| 98 | + assert D["droits_mutation_general"] == pytest.approx(7_185.50, abs=0.01) | ||||
| 99 | + | ||||
| 100 | + | ||||
| 101 | +def test_mise_de_fonds_et_prime(): | ||||
| 102 | + assert ch.mise_de_fonds_minimale(605_000) == pytest.approx(35_500) and ch.mise_de_fonds_minimale(500_000) == pytest.approx(25_000) | ||||
| 103 | + assert ch.mise_de_fonds_minimale(1_000_000) == pytest.approx(75_000) | ||||
| 104 | + with pytest.raises(ValueError): | ||||
| 105 | + ch.mise_de_fonds_minimale(1_500_000) | ||||
| 106 | + assert ch.taux_prime(0.80) == 0 and ch.taux_prime(0.8001) == 0.024 and ch.taux_prime(0.90) == 0.031 and ch.taux_prime(0.9413) == 0.04 | ||||
| 107 | + with pytest.raises(ValueError): | ||||
| 108 | + ch.taux_prime(0.96) | ||||
| 109 | + | ||||
| 110 | + | ||||
| 111 | +def test_financement_minimal(D): | ||||
| 112 | + f = D["financement"]["minimale"]; h = f["hypotheque"] | ||||
| 113 | + assert f["mise"] == 35_500 and f["pret_base"] == 569_500 and f["rpv"] == pytest.approx(569_500 / 605_000) | ||||
| 114 | + assert f["taux_prime"] == 0.04 and f["prime"] == pytest.approx(22_780) and f["pret"] == pytest.approx(592_280) | ||||
| 115 | + assert f["taux"] == 0.0412 and f["amortissement_mois"] == 300 | ||||
| 116 | + # paiement : taux mensuel équivalent à une composition semestrielle (Loi sur l'intérêt, art. 6) | ||||
| 117 | + r = (1 + 0.0412 / 2) ** (1 / 6) - 1 | ||||
| 118 | + assert h.taux_periodique == pytest.approx(r) and r == pytest.approx(fin.taux_mensuel_canadien(0.0412)) | ||||
| 119 | + assert f["paiement"] == pytest.approx(592_280 * r / (1 - (1 + r) ** -300)) and f["paiement"] == pytest.approx(3_154.16, abs=0.01) | ||||
| 120 | + assert f["service_dette"] == pytest.approx(12 * f["paiement"]) and f["constante"] == pytest.approx(f["service_dette"] / f["pret"]) | ||||
| 121 | + # solde après 60 paiements = valeur actualisée des 240 paiements restants ; intérêts + capital de l'an 1 = 12 paiements | ||||
| 122 | + assert f["solde_terme"] == pytest.approx(f["paiement"] * (1 - (1 + r) ** -240) / r) and f["solde_terme"] == pytest.approx(516_675.31, abs=0.01) | ||||
| 123 | + assert f["interets_an1"] + f["capital_an1"] == pytest.approx(12 * f["paiement"], abs=1e-6) | ||||
| 124 | + assert f["mqr"] == pytest.approx(0.0612) and f["paiement_mqr"] == pytest.approx(3_831.80, abs=0.01) | ||||
| 125 | + assert f["revenu_min_abd"] == pytest.approx((12 * f["paiement_mqr"] + 4_076.01 + 2_400) / 0.39, abs=0.05) | ||||
| 126 | + assert f["revenu_min_atd"] == pytest.approx((12 * f["paiement_mqr"] + 4_076.01 + 2_400 + 6_000) / 0.44, abs=0.05) | ||||
| 127 | + assert f["contrainte_revenu"] == "ABD" and f["liquidites"] == pytest.approx(35_500 + 8_760.50 + 2_050.20, abs=0.01) | ||||
| 128 | + | ||||
| 129 | + | ||||
| 130 | +def test_financement_variantes(D): | ||||
| 131 | + F = D["financement"] | ||||
| 132 | + assert F["10 %"]["prime"] == pytest.approx(16_879.50) and F["10 %"]["paiement"] == pytest.approx(2_989.60, abs=0.01) | ||||
| 133 | + assert F["20 %"]["assure"] is False and F["20 %"]["prime"] == 0 and F["20 %"]["taux"] == 0.0458 and F["20 %"]["mqr"] == pytest.approx(0.0658) | ||||
| 134 | + assert F["20 %"]["paiement"] == pytest.approx(2_700.38, abs=0.01) and F["20 %"]["contrainte_revenu"] == "ATD" | ||||
| 135 | + assert F["minimale 30 ans"]["paiement"] == pytest.approx(2_856.76, abs=0.01) | ||||
| 136 | + # le paiement décroît avec la mise de fonds et avec l'amortissement | ||||
| 137 | + assert F["minimale"]["paiement"] > F["10 %"]["paiement"] > F["20 %"]["paiement"] and F["minimale 30 ans"]["paiement"] < F["minimale"]["paiement"] | ||||
| 138 | + | ||||
| 139 | + | ||||
| 140 | +def test_renouvellement(D): | ||||
| 141 | + r = D["renouvellement"].set_index("hausse_pb") | ||||
| 142 | + assert r.loc[0, "paiement"] == pytest.approx(D["financement"]["minimale"]["paiement"], abs=1e-6) # même taux → même paiement | ||||
| 143 | + assert r.loc[200, "paiement"] == pytest.approx(3_714.57, abs=0.01) and r.loc[200, "hausse_paiement_pct"] == pytest.approx(0.1777, abs=5e-5) | ||||
| 144 | + assert r.loc[300, "paiement"] == pytest.approx(4_010.94, abs=0.01) | ||||
| 145 | + | ||||
| 146 | + | ||||
| 147 | +def test_valeur_emprunt(D): | ||||
| 148 | + v = D["valeur_emprunt"] | ||||
| 149 | + assert v[575_000.0]["pret_max"] == pytest.approx(546_250) and v[575_000.0]["mise_requise"] == pytest.approx(58_750) and v[575_000.0]["mise_supplementaire"] == pytest.approx(23_250) | ||||
| 150 | + assert v[640_000.0]["base"] == 605_000 and v[640_000.0]["mise_supplementaire"] == 0 | ||||
| 151 | + | ||||
| 152 | + | ||||
| 153 | +# ----------------------------------------------------------------------------- exercices | ||||
| 154 | +def test_exercices(E, D): | ||||
| 155 | + assert E["ex1"]["par_m2_hab"] == pytest.approx(3_666.67, abs=0.01) and E["ex1"]["par_pi2_hab"] == pytest.approx(340.64, abs=0.01) | ||||
| 156 | + assert E["ex1"]["ecart_pct"] == pytest.approx(0.0979, abs=5e-5) | ||||
| 157 | + assert E["ex2"][575_000.0]["droits"] == pytest.approx(7_860.50) and E["ex2"][640_000.0]["droits"] == pytest.approx(9_810.50) | ||||
| 158 | + assert E["ex2"][640_000.0]["mise"] == pytest.approx(39_000) and E["ex2"][640_000.0]["liquidites"] == pytest.approx(50_974.10, abs=0.01) | ||||
| 159 | + assert E["ex6"][240_000.0]["V_cout"] == pytest.approx(542_500.97, abs=0.01) and E["ex6"][240_000.0]["arrondie"] == 600_000 | ||||
| 160 | + assert E["ex6"][285_000.0]["arrondie"] == 605_000 and E["ex6"][240_000.0]["fourchette"] == (540_000, 640_000) | ||||
| 161 | + assert E["ex7"]["esperance_p80"] == pytest.approx(603_200) and E["ex7"]["paiement_nonH"] == pytest.approx(3_109.30, abs=0.01) | ||||
| 162 | + assert E["ex7"]["pret_nonH"] == pytest.approx((596_000 - 34_600) * 1.04) | ||||
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.
modified
manuscript/appendices/_inventaire.tex
+259 −256
@@ -1,236 +1,238 @@ | |||||
| 1 | −\begin{longtable}{lp{48mm}p{62mm}} | 1 | +\footnotesize | ||
| 2 | +\begin{longtable}{lp{46mm}p{64mm}} | ||||
| 2 | \caption{Scripts du dépôt (modules, calculs, figures, tests, outils)}\label{tab:app:scripts}\\ | 3 | \caption{Scripts du dépôt (modules, calculs, figures, tests, outils)}\label{tab:app:scripts}\\ | ||
| 3 | \toprule Type & Fichier & Rôle \\ \midrule \endfirsthead | 4 | \toprule Type & Fichier & Rôle \\ \midrule \endfirsthead | ||
| 4 | \toprule Type & Fichier & Rôle \\ \midrule \endhead | 5 | \toprule Type & Fichier & Rôle \\ \midrule \endhead | ||
| 5 | \bottomrule \endfoot | 6 | \bottomrule \endfoot | ||
| 6 | −module & \texttt{analysis/python/traite/cas1.py} & Cas 1 — maison unifamiliale à Gatineau (données synthétiques) : calculs PARTAGÉS par les chapitres 9, 14, 16-2 \\ | 7 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas1.py} & Cas 1 — maison unifamiliale à Gatineau (données synthétiques) : calculs PARTAGÉS par les chapitres 9, 14, 16-2 \\ | ||
| 7 | −module & \texttt{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 \\ | 8 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas2.py} & Cas 2 — triplex à Québec, Limoilou (données synthétiques) : calculs PARTAGÉS par les chapitres 26, 27, 32 et 4 \\ | ||
| 8 | −module & \texttt{analysis/python/traite/cas3.py} & Cas 3 — immeuble de 12 logements à Montréal (données synthétiques) : calculs PARTAGÉS par les chapitres 26-31, \\ | 9 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas3.py} & Cas 3 — immeuble de 12 logements à Montréal (données synthétiques) : calculs PARTAGÉS par les chapitres 26-31, \\ | ||
| 9 | −module & \texttt{analysis/python/traite/cas4.py} & Cas 4 — portefeuille multirésidentiel interrégional (données synthétiques) : calculs PARTAGÉS par les chapitre \\ | 10 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas4.py} & Cas 4 — portefeuille multirésidentiel interrégional (données synthétiques) : calculs PARTAGÉS par les chapitre \\ | ||
| 10 | −module & \texttt{analysis/python/traite/comparables.py} & Méthode de comparaison : grille d'ajustements, ajustements séquentiels, ventes appariées, réconciliation. \\ | 11 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}comparables.py} & Méthode de comparaison : grille d'ajustements, ajustements séquentiels, ventes appariées, réconciliation. \\ | ||
| 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 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cout.py} & Méthode du coût : coût neuf, dépréciation (physique, fonctionnelle, externe), extraction de marché. \\ | ||
| 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/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}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). \\ | 14 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}geo.py} & Outils géospatiaux génériques du traité (chapitre 38 ; réutilisables aux chapitres 43 et 48). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}hedonique.py} & Outils économétriques : hédonique semi-log, indices (dummies temporelles, ventes répétées BMN / Case–Shiller), \\ | ||
| 15 | −module & \texttt{analysis/python/traite/panel.py} & Données de panel et identification causale (chapitre 36) : transformation within, erreurs-types en grappes (CR \\ | 16 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}panel.py} & Données de panel et identification causale (chapitre 36) : transformation within, erreurs-types en grappes (CR \\ | ||
| 16 | −module & \texttt{analysis/python/traite/style.py} & Style graphique du traité (Matplotlib). Palette validée : styles/palette.json. \\ | 17 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}style.py} & Style graphique du traité (Matplotlib). Palette validée : styles/palette.json. \\ | ||
| 17 | −module & \texttt{analysis/python/traite/synth.py} & Génération des quatre dossiers de cas SYNTHÉTIQUES du traité. \\ | 18 | +module & \texttt{analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch01\_valeur\_prix.py} & Chapitre 1 — Théorie de la valeur et prix immobiliers : tous les chiffres cités dans le texte (DONNÉES SYNTHÉ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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch02\_droits.py} & Chapitre 2 — Droits immobiliers et bases de valeur : calculs de l'exemple intégral sur le cas 3 (12 logements, \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch04\_marches.py} & Chapitre 4 — Marchés résidentiels québécois : lecture des DONNÉES RÉELLES de data/raw et calculs cités dans 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch05\_rente.py} & Chapitre 5 — Économie urbaine et rente foncière : calculs de l'exemple intégral et des encadrés. \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch06\_demembrements.py} & Chapitre 6 — Code civil et droit immobilier : effets des modalités et démembrements du droit de propriété sur \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch07\_servitudes\_copro.py} & Chapitre 7 — Cadastre, titres, servitudes et copropriété : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch09\_ratios.py} & Chapitre 9 — Évaluation foncière municipale et contestation (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch10\_controle\_rapport.py} & Chapitre 10 — contrôle automatique de la présence des douze éléments du contenu minimal d'un rapport é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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch11\_inspection.py} & Chapitre 11 — inspection synthétique du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) : fiche d'état 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch12\_mesurage.py} & Chapitre 12 — Mesurage, superficies et plans : calculs du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch13\_sources.py} & Chapitre 13 — Transactions, inscriptions, loyers et coûts : lecture et description des fichiers RÉELS de data/ \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch14\_nettoyage.py} & Chapitre 14 — Nettoyage, géocodage et qualité des données (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES). \\ | ||
| 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. \\ | 34 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch15\_segmentation.py} & Chapitre 15 — Études de marché et segmentation. Calculs de l'exemple intégral et des tableaux du chapitre. \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch16\_selection.py} & Chapitre 16 — sélection des comparables pour le sujet du cas 1 (Gatineau, données synthétiques). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch18\_hedonique.py} & Chapitre 18 — Modèles hédoniques : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉES SYNTHÉ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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch19\_spatial.py} & Chapitre 19 — modèles spatiaux et temporels sur le cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | ||
| 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 \\ | 39 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch20\_reconciliation.py} & Chapitre 20 — réconciliation et incertitude : combinaison des indications du cas 1 (Gatineau, données synthéti \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch21\_cout\_neuf.py} & Chapitre 21 — coût neuf (remplacement) du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) et indexation IPCB ( \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch22\_metre.py} & Chapitre 22 — métré et quantités du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch23\_structure\_couts.py} & Chapitre 23 — coûts directs et indirects : structure complète du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉ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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch24\_depreciation.py} & Chapitre 24 — dépréciation et désuétudes du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). \\ | ||
| 43 | −calcul & \texttt{analysis/python/cases/ch25\_terrain.py} & Chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | 44 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch26\_etat\_locatif.py} & Chapitre 26 — Baux et loyers : calculs de l'exemple intégral (cas 3, 12 logements à Montréal ; cas 2, triplex \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch27\_revenus.py} & Chapitre 27 — Revenus potentiels, vacance et pertes : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (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 \\ | 47 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch28\_depenses.py} & Chapitre 28 — Dépenses, réserves, CAPEX et RNE : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (triple \\ | ||
| 47 | −calcul & \texttt{analysis/python/cases/ch29\_capitalisation.py} & Chapitre 29 — Capitalisation directe : calculs du cas 3 (12 logements, Rosemont ; DONNÉES SYNTHÉTIQUES). \\ | 48 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch29\_capitalisation.py} & Chapitre 29 — Capitalisation directe : calculs du cas 3 (12 logements, Rosemont ; DONNÉES SYNTHÉTIQUES). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch30\_dcf.py} & Chapitre 30 — Flux actualisés et valeur terminale : exemple intégral du cas 3 (12 logements, Montréal, \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch32\_plex.py} & Chapitre 32 — Duplex à quintuplex : calculs de l'exemple intégral (cas 2, triplex de Limoilou, données SYNTHÉ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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch33\_six\_logements.py} & Chapitre 33 — Immeubles de six logements et plus : tous les chiffres cités dans manuscript/chapters/ch33.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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch34\_tal.py} & Chapitre 34 — TAL, encadrement locatif et scénarios : calculs du chapitre (cas 3, 12 logements, Montréal, \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch35\_indices.py} & Chapitre 35 — Indices immobiliers et ventes répétées : exemple intégral sur le cas 1 (Gatineau, DONNÉES SYNTHÉ \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch36\_panel.py} & Chapitre 36 — Données de panel et identification causale : choc simulé sur les séries de RNE du cas 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch38\_sig.py} & Chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUES, graine 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch39\_bayes.py} & Chapitre 39 — Modèles bayésiens et intervalles : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉ \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch40\_montecarlo.py} & Chapitre 40 — Monte-Carlo et stress tests (DONNÉES SYNTHÉTIQUES : cas 3, 12 logements à Montréal ; cas 4, 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch41\_phmu.py} & Chapitre 41 — Plus haute et meilleure utilisation, terrains et développement : calculs de l'exemple intégral. \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch43\_risques.py} & Chapitre 43 — Risques environnementaux et sinistres : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral. \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch44\_renovation.py} & Chapitre 44 — rénovation et efficacité énergétique : analyse coût-bénéfice de deux mesures sur le sujet du 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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). \\ | 65 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch46\_dossier.py} & Chapitre 46 — Cas 2 : triplex à Québec (Limoilou), dossier complet (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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, \\ | 67 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch48\_portefeuille.py} & Chapitre 48 — Cas 4 : portefeuille multirésidentiel interrégional (DONNÉES SYNTHÉTIQUES, 48 immeubles fictifs, \\ | ||
| 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 \\ | 68 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}generate\_all.py} & Régénère tous les jeux synthétiques (graine fixée). Usage : python3 -m analysis.python.cases.generate\_all (de \\ | ||
| 68 | −calcul & \texttt{analysis/python/cases/make\_spreadsheets.py} & Classeurs Excel du traité (openpyxl, formules vivantes) : spreadsheets/ \\ | 69 | +calcul & \texttt{analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch02\_decomposition.py} & Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) revenu net d'exploitation projeté avec les baux en place (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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch02\_ecart\_logements.py} & Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) ratio loyer contractuel / loyer de marché selon l'ancienneté \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_cout\_usage.py} & Figure ch03 — Coût d'usage du logement au Québec, 2001-2026, données RÉELLES (Banque du Canada, Valet : 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_cycle.py} & Figures ch03 — Simulation d'un cycle stock-flux (SYNTHÉTIQUE, analysis/python/cases/ch03\_cycles.py, paramè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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_mises\_chantier.py} & Figure ch03 — Mises en chantier au Québec, données RÉELLES : Statistique Canada (SCHL), tableau 34-10-0135-01, \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_quadrants.py} & Figure ch03 — Modèle des quatre quadrants (DiPasquale–Wheaton) tracé à partir des paramètres pédagogiques du 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_carte.py} & Figure ch04 — carte schématique des six RMR du Québec : position des centres (coordonnées de la Base de donné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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_ipln.py} & Figure ch04 — Indice des prix des logements neufs (IPLN), total maison et terrain, déc. 2016 = 100, janvier 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_mutations.py} & Figure ch04 — taux effectif des droits sur les mutations immobilières (droit / base d'imposition) selon la 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_parc.py} & Figure ch04 — structure du parc de logements : ménages privés selon le type de construction, Québec et Canada \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_schl.py} & Figure ch04 — marché locatif par RMR : taux d'inoccupation (octobre 2024 et 2025) et loyer moyen des 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_taux.py} & Figure ch04 — taux d'intérêt 2000-2026 : taux hypothécaire conventionnel 5 ans affiché (V80691335, 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_capitalisation.py} & Figure ch05 — sensibilité de la capitalisation d'un écart de taxe foncière : perte de valeur (en \% de la 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_cas1\_distance.py} & Figure ch05 — prix par mètre carré habitable et distance au centre, cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_gradient.py} & Figure ch05 — gradients du modèle monocentrique simulé (PARAMÈTRES PÉDAGOGIQUES DÉCLARÉS dans ch05\_rente.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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_rmr.py} & Figure ch05 — valeur par logement par RMR du portefeuille du cas 4 (DONNÉES SYNTHÉTIQUES, graine 20261031) 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_surface.py} & Figure ch05 — surface de rente bicentrique simulée (courbes de niveau) : enveloppe de deux surfaces d'enchè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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch06\_emphyteose.py} & Figure ch06 — emphytéose sur un immeuble locatif dont le RNE est celui du cas 3 (DONNÉES SYNTHÉTIQUES, hypothè \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch06\_usufruit.py} & Figure ch06 — usufruit viager sur la maison du cas 1 (DONNÉES SYNTHÉTIQUES, table de mortalité synthétique) : \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_fonds.py} & Figure ch07 — trajectoire du fonds de prévoyance sur 25 ans selon trois cotisations (DONNÉES SYNTHÉTIQUES). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_paires.py} & Figure ch07 — ventes appariées : prix sans et avec servitude de passage pour 12 paires (DONNÉES SYNTHÉTIQUES, \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_sensibilite.py} & Figure ch07 — sensibilité de la cotisation de seuil A* à l'inflation des coûts et au rendement du fonds (DONNÉ \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_carte\_zones.py} & Figure ch08 — carte synthétique des zones de « Val-Fictif » (DONNÉES SYNTHÉTIQUES) : 400 lots, cinq zones, \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_option\_sensibilite.py} & Figure ch08 — sensibilité des effets de valeur du zonage (DONNÉES SYNTHÉTIQUES / hypothèses déclarées) : \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_rezonage\_paires.py} & Figure ch08 — effet d'un rezonage mesuré par ventes appariées et par doubles différences (DONNÉES SYNTHÉ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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_fiche\_etat.py} & Figures ch11 — (1) fiche d'état du sujet du cas 1 : fraction de vie utile consommée a\_eff/L par composante, 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_frise\_pathologies.py} & Figure ch11 — frise INDICATIVE des pathologies et matériaux à risque selon la période de construction (Québec) \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_matrice\_age\_effectif.py} & Figure ch11 — matrice état × âge chronologique → âge effectif (convention déclarée de l'ouvrage, chapitre 11). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_biais\_datation.py} & Figure ch13 — biais relatif de l'ajustement de conditions du marché lorsqu'une vente est datée à l'acte 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_indices.py} & Figure ch13 — trois indices souvent confondus, données RÉELLES de data/raw, rebasés T1 2017 = 100 : \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_rfu.py} & Figure ch13 — composition de l'évaluation imposable uniformisée 2026 (MAMH, richesse foncière uniformisée, CC \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_schl.py} & Figure ch13 — SCHL, Enquête sur les logements locatifs d'octobre 2025 (données RÉELLES, fichier rmr-quebec-202 \\ | ||
| 106 | −figure & \texttt{analysis/python/figures/ch14\_figures.py} & Chapitre 14 — figures (données SYNTHÉTIQUES, graine 20261031). Idempotent. \\ | 107 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch18\_figures.py} & Figures du chapitre 18 — Modèles hédoniques (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch19\_figures.py} & Figures du chapitre 19 — modèles spatiaux et temporels (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 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 \\ | 112 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch20\_figures.py} & Chapitre 20 — figures : densités bootstrap et énumération exhaustive ; résidus des candidats et élargissement \\ | ||
| 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 \\ | 113 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_decomposition.py} & Figure ch21 — décomposition du coût neuf du sujet du cas 1 par corps de métier (DONNÉES SYNTHÉTIQUES, graine 2 \\ | ||
| 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 \\ | 114 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_ipcb.py} & Figure ch21 — IPCB Montréal (Statistique Canada, tableau 18-10-0289-01, base 2023 = 100), données RÉELLES lues \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_sensibilite.py} & Figure ch21 — sensibilité du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTIQUES) : (a) grille taux d'indirects \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch22\_ecarts.py} & Figure ch22 — métré de contrôle du sujet du cas 1 : écart relatif entre la quantité recalculée depuis le plan \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch22\_repartition.py} & Figure ch22 — répartition du devis du sujet du cas 1 par corps de métier et par type d'unité de 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_ipcb\_divisions.py} & Figure ch23 — IPCB Montréal, maison individuelle, par division de travaux (Statistique Canada 18-10-0289-01), \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_ipcb\_types.py} & Figure ch23 — IPCB (Statistique Canada 18-10-0289-01, 2023 = 100), données RÉELLES lues dans data/raw : \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_structure.py} & Figure ch23 — cascade de formation du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, graine 20261031) : \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_composantes.py} & Figure ch24 — composantes de courte durée du sujet du cas 1 : coût neuf et dépréciation ventilée par 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_courbes.py} & Figure ch24 — courbes de dépréciation du bâtiment en fonction de l'âge (DONNÉES SYNTHÉTIQUES, cas 1, graine 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_decomposition.py} & Figure ch24 — décomposition de la valeur par le coût du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, graine 20261031) \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_sensibilite.py} & Figure ch24 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) : (a) taux de dépréciation âge-vie 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch26\_figures.py} & Chapitre 26 — figures (4) : loyer contractuel vs loyer de marché par logement (cas 3), distribution de l'ancie \\ | ||
| 127 | −figure & \texttt{analysis/python/figures/ch27\_figures.py} & Chapitre 27 — figures (4) : \\ | 128 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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) ; \\ | 129 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch28\_figures.py} & Chapitre 28 — figures (5) : cascade RBP → RNE (cas 3) ; structure des dépenses en \% du RBE (cas 3 vs cas 2) ; \\ | ||
| 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 \\ | 130 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch29\_figures.py} & Chapitre 29 — figures (5) : taux extraits (histogramme), taux vs état/taille (nuage), surface V(RNE, R) (carte \\ | ||
| 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 \\ | 131 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_flux.py} & Ch. 30, figure « flux » : RNE, CAPEX et flux net avant dette (barres) du cas 3 (DONNÉES SYNTHÉTIQUES), puis va \\ | ||
| 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 \\ | 132 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_gdc.py} & Ch. 30, figure « gdc » (DONNÉES RÉELLES, Banque du Canada, API Valet, téléchargées le 2026-10-31) : rendements \\ | ||
| 132 | −figure & \texttt{analysis/python/figures/ch30\_loyers.py} & Ch. 30, figure « loyers » : trajectoire du revenu brut potentiel contractuel (indexé au taux TAL + relocation \\ | 133 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_loyers.py} & Ch. 30, figure « loyers » : trajectoire du revenu brut potentiel contractuel (indexé au taux TAL + relocation \\ | ||
| 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 \\ | 134 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_surface.py} & Ch. 30, figure « surface » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) selon le taux d'actualisation r (ligne \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_tornade.py} & Ch. 30, figure « tornade » : variation de la valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour un choc bas/haut \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_levier.py} & Ch. 31, figure « levier » (DONNÉES SYNTHÉTIQUES, cas 3) : TRI des fonds propres sur dix ans et rendement 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_service\_dette.py} & Ch. 31, figure « service-dette » (DONNÉES SYNTHÉTIQUES, cas 3) : service de la dette annuel du prêt de 1 475 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_solde.py} & Ch. 31, figure « solde » (DONNÉES SYNTHÉTIQUES, cas 3) : trajectoire du solde du prêt de 1 475 959 \$ à 4,12 \ \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_taux\_bdc.py} & Ch. 31, figure « taux-bdc » (DONNÉES RÉELLES, Banque du Canada, API Valet, téléchargées le 2026-10-31) : taux \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch32\_figures.py} & Figures du chapitre 32 — Duplex à quintuplex (données SYNTHÉTIQUES du cas 2, sauf la figure des médianes 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch33\_figures.py} & Chapitre 33 — figures (4) : (1) SCHL, île de Montréal, loyers et inoccupation par taille d'immeuble et par 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_calcul\_tal.py} & Ch. 34, figure « exemple de calcul TAL » : composantes de l'augmentation mensuelle du logement 103 du cas 3 (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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_ipc\_base.py} & Ch. 34, figure « IPC et pourcentage de base » (DONNÉES RÉELLES : Statistique Canada, tableau 18-10-0004-01, 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_rotation.py} & Ch. 34, figure « rotation espérée » : (gauche) rapport espéré loyer contractuel / loyer de marché d'un 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_trajectoires.py} & Ch. 34, figure « trajectoires RBP » : revenu brut potentiel contractuel du cas 3 (DONNÉES SYNTHÉTIQUES) selon \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_valeur\_scenarios.py} & Ch. 34, figure « valeur par scénario » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour la grille rotation (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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch36\_figures.py} & Figures du chapitre 36 — données de panel et identification causale (cas 4, DONNÉES SYNTHÉTIQUES, graine 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch38\_figures.py} & Figures du chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉ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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch39\_figures.py} & Figures du chapitre 39 — Modèles bayésiens et intervalles (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch41\_figures.py} & Figures du chapitre 41 (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypothèses déclarées dans ch41\_phmu.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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_bloc\_piece.py} & Figure ch42 — valeur de conversion (somme des fractions nette des coûts, des frais, du portage et des délais) \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_cotisation\_speciale.py} & Figure ch42 — charges annuelles normalisées des huit fractions (ch. 7) et part de chacune dans une cotisation \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_grille.py} & Figure ch42 — grille de comparaison de la fraction F4 : prix observé, prix ajusté et décomposition des 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_medianes.py} & Figure ch42 — prix médians Centris des copropriétés et des unifamiliales par territoire, T3 2026 (DONNÉES RÉ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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_carte\_cas4.py} & Figure ch43 — carte schématique des 48 immeubles du cas 4 (DONNÉES SYNTHÉTIQUES, coordonnées fictives autour 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_carte\_riverain.py} & Figure ch43 — municipalité fictive de Rivière-Fictive (DONNÉES SYNTHÉTIQUES) : 625 lots, classes d'exposition \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_did\_cas4.py} & Figure ch43 — doubles différences sur les séries de RNE du cas 4 avec choc d'inondation injecté en 2019 (DONNÉ \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_effets\_methodes.py} & Figure ch43 — décote d'une zone inondable mesurée par quatre méthodes sur les ventes de Rivière-Fictive (DONNÉ \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_placebos.py} & Figure ch43 — inférence de randomisation exacte pour le DiD du cas 4 (DONNÉES SYNTHÉTIQUES) : distribution 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_capitalisation.py} & Figure ch44 — (a) quatre lectures de ce que la thermopompe « vaut » pour le sujet du cas 1 : coût installé, 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_flux.py} & Figure ch44 — flux annuels des deux mesures énergétiques du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, hypothèses 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_heatmap\_van.py} & Figure ch44 — VAN des deux mesures selon le taux d'actualisation et la croissance du prix de l'électricité \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_prime\_verte.py} & Figure ch44 — la « prime verte » dans la littérature : fourchettes publiées par étude (valeurs vérifiées, 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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). \\ | 168 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch46\_figures.py} & Chapitre 46 — figures du dossier « triplex à Québec » (DONNÉES SYNTHÉTIQUES, graine 20261031). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}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 \\ | 170 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch48\_portefeuille\_figures.py} & Chapitre 48 — figures du dossier « portefeuille multirésidentiel interrégional » (DONNÉES SYNTHÉTIQUES, graine \\ | ||
| 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\_*. \\ | 171 | +figure & \texttt{analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}run\_all.py} & Exécute tous les scripts de figures (analysis/python/figures/chNN\_*.py) et les scripts R (analysis/r/chNN\_*. \\ | ||
| 171 | −test & \texttt{analysis/python/tests/conftest.py} & \\ | 172 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}conftest.py} & \\ | ||
| 172 | −test & \texttt{analysis/python/tests/test\_cas1.py} & \\ | 173 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cas1.py} & \\ | ||
| 173 | −test & \texttt{analysis/python/tests/test\_cas2\_cas4.py} & \\ | 174 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cas2\_cas4.py} & \\ | ||
| 174 | −test & \texttt{analysis/python/tests/test\_cas3.py} & \\ | 175 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch01.py} & Chapitre 1 — vérification des identités et des chiffres cités dans le texte et les solutions (données synthé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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch04.py} & Tests du chapitre 4 — marchés résidentiels québécois : lecture des données réelles (Recensement 2021, 17-10-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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch05.py} & Tests du chapitre 5 — modèle monocentrique simulé, gradient prix/distance du cas 1, décomposition du cas 4, \\ | ||
| 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch06.py} & Tests du chapitre 6 — démembrements et modalités du droit de propriété (DONNÉES SYNTHÉTIQUES, hypothèses dé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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch07.py} & Tests du chapitre 7 — servitude par ventes appariées, quotes-parts et charges de copropriété, fonds de pré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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch09.py} & Tests du chapitre 9 — étude de ratios (COD, PRD, PRB, proportion médiane, facteur comparatif), dossiers de 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch11.py} & Tests du chapitre 11 — inspection synthétique du sujet du cas 1, convention d'âge effectif, dépréciation 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch13.py} & Tests du chapitre 13 — lecture des fichiers RÉELS de data/raw (StatCan 18-10-0289-01, 18-10-0205-01, 18-10-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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch14.py} & Chapitre 14 — Nettoyage, géocodage et qualité des données : reproductibilité du jeu brut, identités des 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 \\ | 190 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch15.py} & Chapitre 15 — Études de marché et segmentation : vérification des identités et des chiffres cités dans le text \\ | ||
| 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch17.py} & Chapitre 17 — vérification des identités et des chiffres cités dans le texte et les solutions (tolérances dé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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch18.py} & Chapitre 18 — Modèles hédoniques : vérification des chiffres cités dans le texte, les tableaux et les 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch19.py} & Chapitre 19 — tests des fonctions spatiales ajoutées à traite.hedonique et des chiffres cités dans le texte 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 \\ | 195 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch20.py} & Chapitre 20 — réconciliation et incertitude : identités, chiffres cités dans le texte et dans les solutions (t \\ | ||
| 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch21.py} & Tests du chapitre 21 — coût neuf du sujet du cas 1, IPCB Montréal, sensibilité et exercices. \\ | ||
| 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch23.py} & Tests du chapitre 23 — coûts directs et indirects : structure du devis du cas 1, financement intérimaire (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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch24.py} & Tests du chapitre 24 — dépréciation et désuétudes du sujet du cas 1, extraction de marché, profils et 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch25.py} & Tests du chapitre 25 — Évaluation du terrain : jeu synthétique de terrains (graine 20261031), modèle hé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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch27.py} & Tests du chapitre 27 — revenus potentiels, vacance et pertes (cas 3 et cas 2, données synthétiques ; tableaux \\ | ||
| 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). \\ | 203 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch28.py} & Tests du chapitre 28 — dépenses, réserves, CAPEX et RNE (cas 3 et cas 2, données synthétiques). \\ | ||
| 203 | −test & \texttt{analysis/python/tests/test\_ch29.py} & Tests du chapitre 29 — capitalisation directe (cas 3, données synthétiques). \\ | 204 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch29.py} & Tests du chapitre 29 — capitalisation directe (cas 3, données synthétiques). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch31.py} & Tests du chapitre 31 — financement, levier, RCD et RPV (cas 3, données synthétiques ; repères BdC réels). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch32.py} & Tests du chapitre 32 — Duplex à quintuplex : identités, cohérence avec traite.cas2 (partagé avec les ch. 26, 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch33.py} & Tests du chapitre 33 (immeubles de six logements et plus) : identités, cohérence avec traite.cas3/cas4 et le 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch34.py} & Tests du chapitre 34 — TAL, encadrement locatif et scénarios (cas 3, données synthétiques ; IPC Québec réel). \\ | ||
| 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch35.py} & Chapitre 35 — Indices immobiliers et ventes répétées : identités et valeurs citées dans le texte, les 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch36.py} & Chapitre 36 — tests des fonctions de traite.panel (récupération d'effets connus sur données simulées) et des 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch38.py} & Chapitre 38 — tests des fonctions de traite.geo et des chiffres cités dans manuscript/chapters/ch38.tex et 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch39.py} & Chapitre 39 — Modèles bayésiens et intervalles : vérification des identités, des diagnostics et des chiffres 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch40.py} & Tests du chapitre 40 (Monte-Carlo et stress tests — données synthétiques, cas 3 et cas 4) : égalité stricte 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch41.py} & Tests du chapitre 41 — PHMU, terrains et développement (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch44.py} & Tests du chapitre 44 — rénovation et efficacité énergétique (sujet du cas 1, DONNÉES SYNTHÉTIQUES). \\ | ||
| 219 | −test & \texttt{analysis/python/tests/test\_ch46.py} & Tests du chapitre 46 — Cas 2 : triplex à Québec (dossier complet, données SYNTHÉTIQUES). \\ | 220 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch45.py} & Tests du chapitre 45 (cas 1, maison unifamiliale à Gatineau — DONNÉES SYNTHÉTIQUES) : le dossier ne doit repre \\ | ||
| 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/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch46.py} & Tests du chapitre 46 — Cas 2 : triplex à Québec (dossier complet, données SYNTHÉTIQUES). \\ | ||
| 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 \\ | 222 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch47.py} & Tests du chapitre 47 (cas 3, 12 logements à Montréal — données synthétiques) : identités, valeurs citées dans \\ | ||
| 222 | −test & \texttt{analysis/python/tests/test\_comparables.py} & \\ | 223 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch48.py} & Tests du chapitre 48 (cas 4, portefeuille interrégional — données synthétiques) : identités du sommaire, cohér \\ | ||
| 223 | −test & \texttt{analysis/python/tests/test\_cout.py} & \\ | 224 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_comparables.py} & \\ | ||
| 224 | −test & \texttt{analysis/python/tests/test\_finance.py} & \\ | 225 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cout.py} & \\ | ||
| 225 | −test & \texttt{analysis/python/tests/test\_hedonique.py} & \\ | 226 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_finance.py} & \\ | ||
| 226 | −test & \texttt{analysis/python/tests/test\_synth.py} & \\ | 227 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_hedonique.py} & \\ | ||
| 227 | −outil & \texttt{tools/check\_manuscript.py} & Vérifications du manuscrit : stubs restants, figures manquantes, scripts des figures, \\ | 228 | +test & \texttt{analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_synth.py} & \\ | ||
| 228 | −outil & \texttt{tools/inventaire.py} & Inventaire des scripts, tests, données, figures et classeurs → manuscript/appendices/\_inventaire.tex (longtab \\ | 229 | +outil & \texttt{tools/\allowbreak{}check\_manuscript.py} & Vérifications du manuscrit : stubs restants, figures manquantes, scripts des figures, \\ | ||
| 229 | −outil & \texttt{tools/make\_labels.py} & Écrit un fichier d'étiquettes (newlabel) pour tous les chapitres et annexes, afin que cref{ch:NN} / cref{app:x \\ | 230 | +outil & \texttt{tools/\allowbreak{}inventaire.py} & Inventaire des scripts, tests, données, figures et classeurs → manuscript/appendices/\_inventaire.tex (longtab \\ | ||
| 230 | −outil & \texttt{tools/make\_release.py} & Assemble release/ : PDF, sources LaTeX, données, figures, scripts, classeurs, corrigés, rapport de validation. \\ | 231 | +outil & \texttt{tools/\allowbreak{}make\_labels.py} & Écrit un fichier d'étiquettes (newlabel) pour tous les chapitres et annexes, afin que cref\{ch:NN\} / cref\{ap \\ | ||
| 231 | −outil & \texttt{tools/merge\_sources.py} & Fusionne sources/registry-*.csv → sources/registry.csv, sources/normes-*.csv → sources/normes-matrice.csv, \\ | 232 | +outil & \texttt{tools/\allowbreak{}make\_release.py} & Assemble release/ : PDF, sources LaTeX, données, figures, scripts, classeurs, corrigés, rapport de validation. \\ | ||
| 232 | −outil & \texttt{tools/compile\_chapter.sh} & !/usr/bin/env bash \\ | 233 | +outil & \texttt{tools/\allowbreak{}merge\_sources.py} & Fusionne sources/registry-*.csv → sources/registry.csv, sources/normes-*.csv → sources/normes-matrice.csv, \\ | ||
| 233 | −outil & \texttt{tools/valider\_chapitre.sh} & !/usr/bin/env bash \\ | 234 | +outil & \texttt{tools/\allowbreak{}compile\_chapter.sh} & !/usr/bin/env bash \\ | ||
| 235 | +outil & \texttt{tools/\allowbreak{}valider\_chapitre.sh} & !/usr/bin/env bash \\ | ||||
| 234 | \end{longtable} | 236 | \end{longtable} | ||
| 235 | 237 | ||||
| 236 | \begin{longtable}{lr} | 238 | \begin{longtable}{lr} | ||
@@ -238,34 +240,35 @@ outil & \texttt{tools/valider\_chapitre.sh} & !/usr/bin/env bash \\ | |||||
| 238 | \toprule Fichier & Taille \\ \midrule \endfirsthead | 240 | \toprule Fichier & Taille \\ \midrule \endfirsthead | ||
| 239 | \toprule Fichier & Taille \\ \midrule \endhead | 241 | \toprule Fichier & Taille \\ \midrule \endhead | ||
| 240 | \bottomrule \endfoot | 242 | \bottomrule \endfoot | ||
| 241 | −\texttt{data/synthetic/README-brut.md} & 5 ko \\ | 243 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}README-brut.md} & 5 ko \\ | ||
| 242 | −\texttt{data/synthetic/README.md} & 18 ko \\ | 244 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}README.md} & 18 ko \\ | ||
| 243 | −\texttt{data/synthetic/calibration.json} & 93 ko \\ | 245 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}calibration.json} & 93 ko \\ | ||
| 244 | −\texttt{data/synthetic/calibration\_journal.csv} & 6 ko \\ | 246 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}calibration\_journal.csv} & 6 ko \\ | ||
| 245 | −\texttt{data/synthetic/cas1\_gatineau\_anomalies\_injectees.csv} & 6 ko \\ | 247 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas1\_gatineau\_anomalies\_injectees.csv} & 6 ko \\ | ||
| 246 | −\texttt{data/synthetic/cas1\_gatineau\_couts.csv} & 2 ko \\ | 248 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas1\_gatineau\_couts.csv} & 2 ko \\ | ||
| 247 | −\texttt{data/synthetic/cas1\_gatineau\_journal\_exclusions.csv} & 22 ko \\ | 249 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas1\_gatineau\_journal\_exclusions.csv} & 22 ko \\ | ||
| 248 | −\texttt{data/synthetic/cas1\_gatineau\_role\_extrait.csv} & 44 ko \\ | 250 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas1\_gatineau\_role\_extrait.csv} & 44 ko \\ | ||
| 249 | −\texttt{data/synthetic/cas1\_gatineau\_sujet.json} & 1 ko \\ | 251 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas1\_gatineau\_sujet.json} & 1 ko \\ | ||
| 250 | −\texttt{data/synthetic/cas1\_gatineau\_ventes.csv} & 65 ko \\ | 252 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas1\_gatineau\_ventes.csv} & 65 ko \\ | ||
| 251 | −\texttt{data/synthetic/cas1\_gatineau\_ventes\_brut.csv} & 111 ko \\ | 253 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas1\_gatineau\_ventes\_brut.csv} & 111 ko \\ | ||
| 252 | −\texttt{data/synthetic/cas2\_quebec\_depenses.csv} & 0 ko \\ | 254 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas2\_quebec\_depenses.csv} & 0 ko \\ | ||
| 253 | −\texttt{data/synthetic/cas2\_quebec\_loyers.csv} & 0 ko \\ | 255 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas2\_quebec\_loyers.csv} & 0 ko \\ | ||
| 254 | −\texttt{data/synthetic/cas2\_quebec\_sujet.json} & 0 ko \\ | 256 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas2\_quebec\_sujet.json} & 0 ko \\ | ||
| 255 | −\texttt{data/synthetic/cas2\_quebec\_ventes\_plex.csv} & 28 ko \\ | 257 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas2\_quebec\_ventes\_plex.csv} & 28 ko \\ | ||
| 256 | −\texttt{data/synthetic/cas3\_montreal\_comparables.csv} & 4 ko \\ | 258 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas3\_montreal\_comparables.csv} & 4 ko \\ | ||
| 257 | −\texttt{data/synthetic/cas3\_montreal\_depenses.csv} & 1 ko \\ | 259 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas3\_montreal\_depenses.csv} & 1 ko \\ | ||
| 258 | −\texttt{data/synthetic/cas3\_montreal\_etat\_locatif.csv} & 1 ko \\ | 260 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas3\_montreal\_etat\_locatif.csv} & 1 ko \\ | ||
| 259 | −\texttt{data/synthetic/cas3\_montreal\_hypotheses\_dcf.json} & 1 ko \\ | 261 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas3\_montreal\_hypotheses\_dcf.json} & 1 ko \\ | ||
| 260 | −\texttt{data/synthetic/cas3\_montreal\_sujet.json} & 0 ko \\ | 262 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas3\_montreal\_sujet.json} & 0 ko \\ | ||
| 261 | −\texttt{data/synthetic/cas4\_portefeuille.csv} & 6 ko \\ | 263 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas4\_portefeuille.csv} & 6 ko \\ | ||
| 262 | −\texttt{data/synthetic/cas4\_portefeuille\_series.csv} & 33 ko \\ | 264 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}cas4\_portefeuille\_series.csv} & 33 ko \\ | ||
| 263 | −\texttt{data/synthetic/ch08\_zonage\_lots.csv} & 15 ko \\ | 265 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}ch08\_zonage\_lots.csv} & 15 ko \\ | ||
| 264 | −\texttt{data/synthetic/ch08\_zonage\_ventes.csv} & 32 ko \\ | 266 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}ch08\_zonage\_ventes.csv} & 32 ko \\ | ||
| 265 | −\texttt{data/synthetic/ch25\_terrains\_ventes.csv} & 20 ko \\ | 267 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}ch25\_terrains\_ventes.csv} & 20 ko \\ | ||
| 266 | −\texttt{data/synthetic/ch43\_riverain\_lots.csv} & 27 ko \\ | 268 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}ch43\_riverain\_lots.csv} & 27 ko \\ | ||
| 267 | −\texttt{data/synthetic/ch43\_riverain\_ventes.csv} & 79 ko \\ | 269 | +\texttt{data/\allowbreak{}synthetic/\allowbreak{}ch43\_riverain\_ventes.csv} & 79 ko \\ | ||
| 268 | \end{longtable} | 270 | \end{longtable} | ||
| 271 | +\normalsize | ||||
| 269 | 272 | ||||
| 270 | \begin{itemize} | 273 | \begin{itemize} | ||
| 271 | \item \texttt{spreadsheets/amortissement\_hypothecaire.xlsx} | 274 | \item \texttt{spreadsheets/amortissement\_hypothecaire.xlsx} | ||
modified
tools/inventaire.py
+5 −5
@@ -2,7 +2,7 @@ | |||||
| 2 | """Inventaire des scripts, tests, données, figures et classeurs → manuscript/appendices/_inventaire.tex (longtable) et verification/inventaire.md.""" | 2 | """Inventaire des scripts, tests, données, figures et classeurs → manuscript/appendices/_inventaire.tex (longtable) et verification/inventaire.md.""" | ||
| 3 | import pathlib, re | 3 | import pathlib, re | ||
| 4 | ROOT = pathlib.Path(__file__).resolve().parents[1] | 4 | ROOT = pathlib.Path(__file__).resolve().parents[1] | ||
| 5 | −def esc(s): return s.replace("\\", "").replace("_", "\\_").replace("&", "\\&").replace("%", "\\%").replace("#", "\\#").replace("$", "\\$") | 5 | +def esc(s): return s.replace("\\", "").replace("{", "\\{").replace("}", "\\}").replace("_", "\\_").replace("&", "\\&").replace("%", "\\%").replace("#", "\\#").replace("$", "\\$") | ||
| 6 | def doc(p): | 6 | def doc(p): | ||
| 7 | t = p.read_text(encoding="utf-8", errors="ignore") | 7 | t = p.read_text(encoding="utf-8", errors="ignore") | ||
| 8 | m = re.search(r'"""(.*?)"""', t, re.S) or re.search(r"^#\s*(.+)$", t, re.M) | 8 | m = re.search(r'"""(.*?)"""', t, re.S) or re.search(r"^#\s*(.+)$", t, re.M) | ||
@@ -11,13 +11,13 @@ rows = [] | |||||
| 11 | for d, kind in [("analysis/python/traite", "module"), ("analysis/python/cases", "calcul"), ("analysis/python/figures", "figure"), ("analysis/python/tests", "test"), ("analysis/r", "R"), ("tools", "outil")]: | 11 | for d, kind in [("analysis/python/traite", "module"), ("analysis/python/cases", "calcul"), ("analysis/python/figures", "figure"), ("analysis/python/tests", "test"), ("analysis/r", "R"), ("tools", "outil")]: | ||
| 12 | for p in sorted((ROOT / d).glob("*.py")) + sorted((ROOT / d).glob("*.R")) + sorted((ROOT / d).glob("*.sh")): | 12 | for p in sorted((ROOT / d).glob("*.py")) + sorted((ROOT / d).glob("*.R")) + sorted((ROOT / d).glob("*.sh")): | ||
| 13 | if p.name.startswith("__"): continue | 13 | if p.name.startswith("__"): continue | ||
| 14 | − rows.append((kind, esc(str(p.relative_to(ROOT))), doc(p)[:110])) | 14 | + rows.append((kind, esc(str(p.relative_to(ROOT))).replace("/", "/\\allowbreak{}"), doc(p)[:110])) | ||
| 15 | −data = [(esc(str(p.relative_to(ROOT))), f"{p.stat().st_size/1024:.0f} ko") for p in sorted((ROOT / "data/synthetic").glob("*")) if p.is_file()] | 15 | +data = [(esc(str(p.relative_to(ROOT))).replace("/", "/\\allowbreak{}"), f"{p.stat().st_size/1024:.0f} ko") for p in sorted((ROOT / "data/synthetic").glob("*")) if p.is_file()] | ||
| 16 | xl = [esc(str(p.relative_to(ROOT))) for p in sorted((ROOT / "spreadsheets").glob("*.xlsx"))] | 16 | xl = [esc(str(p.relative_to(ROOT))) for p in sorted((ROOT / "spreadsheets").glob("*.xlsx"))] | ||
| 17 | nfig = len(list((ROOT / "assets/figures").rglob("*.pdf"))) | 17 | nfig = len(list((ROOT / "assets/figures").rglob("*.pdf"))) | ||
| 18 | −tex = ["\\begin{longtable}{lp{48mm}p{62mm}}", "\\caption{Scripts du dépôt (modules, calculs, figures, tests, outils)}\\label{tab:app:scripts}\\\\", "\\toprule Type & Fichier & Rôle \\\\ \\midrule \\endfirsthead", "\\toprule Type & Fichier & Rôle \\\\ \\midrule \\endhead", "\\bottomrule \\endfoot"] | 18 | +tex = ["\\footnotesize", "\\begin{longtable}{lp{46mm}p{64mm}}", "\\caption{Scripts du dépôt (modules, calculs, figures, tests, outils)}\\label{tab:app:scripts}\\\\", "\\toprule Type & Fichier & Rôle \\\\ \\midrule \\endfirsthead", "\\toprule Type & Fichier & Rôle \\\\ \\midrule \\endhead", "\\bottomrule \\endfoot"] | ||
| 19 | tex += [f"{k} & \\texttt{{{f}}} & {d} \\\\" for k, f, d in rows] + ["\\end{longtable}", "", "\\begin{longtable}{lr}", "\\caption{Jeux de données synthétiques}\\label{tab:app:donnees}\\\\", "\\toprule Fichier & Taille \\\\ \\midrule \\endfirsthead", "\\toprule Fichier & Taille \\\\ \\midrule \\endhead", "\\bottomrule \\endfoot"] | 19 | tex += [f"{k} & \\texttt{{{f}}} & {d} \\\\" for k, f, d in rows] + ["\\end{longtable}", "", "\\begin{longtable}{lr}", "\\caption{Jeux de données synthétiques}\\label{tab:app:donnees}\\\\", "\\toprule Fichier & Taille \\\\ \\midrule \\endfirsthead", "\\toprule Fichier & Taille \\\\ \\midrule \\endhead", "\\bottomrule \\endfoot"] | ||
| 20 | −tex += [f"\\texttt{{{f}}} & {s} \\\\" for f, s in data] + ["\\end{longtable}", "", "\\begin{itemize}"] + [f"\\item \\texttt{{{x}}}" for x in xl] + ["\\end{itemize}", f"\\noindent Figures PDF générées : {nfig}."] | 20 | +tex += [f"\\texttt{{{f}}} & {s} \\\\" for f, s in data] + ["\\end{longtable}", "\\normalsize", "", "\\begin{itemize}"] + [f"\\item \\texttt{{{x}}}" for x in xl] + ["\\end{itemize}", f"\\noindent Figures PDF générées : {nfig}."] | ||
| 21 | (ROOT / "manuscript/appendices/_inventaire.tex").write_text("\n".join(tex), encoding="utf-8") | 21 | (ROOT / "manuscript/appendices/_inventaire.tex").write_text("\n".join(tex), encoding="utf-8") | ||
| 22 | (ROOT / "verification/inventaire.md").write_text(f"# Inventaire ({len(rows)} scripts, {len(data)} fichiers de données, {len(xl)} classeurs, {nfig} figures)\n\n" + "\n".join(f"- {k} `{f}` — {d}" for k, f, d in rows), encoding="utf-8") | 22 | (ROOT / "verification/inventaire.md").write_text(f"# Inventaire ({len(rows)} scripts, {len(data)} fichiers de données, {len(xl)} classeurs, {nfig} figures)\n\n" + "\n".join(f"- {k} `{f}` — {d}" for k, f, d in rows), encoding="utf-8") | ||
| 23 | print(f"{len(rows)} scripts, {len(data)} données, {len(xl)} classeurs, {nfig} figures") | 23 | print(f"{len(rows)} scripts, {len(data)} données, {len(xl)} classeurs, {nfig} figures") | ||
added
verification/chapters/ch46-claims.csv
+36 −0
@@ -0,0 +1,36 @@ | |||||
| 1 | +id,chapitre,affirmation,source_id,verification,date,statut,notes | ||||
| 2 | +CLM-46-001,46,"Définition OEAQ de la valeur marchande (« prix sincère le plus probable… marché libre et ouvert à la concurrence ») ; Norme 1 (acte d'évaluation) vs normes 5-6 (consultation) ; règle 2.3 (12 éléments), règle 2.4 (inspection), élément 10 (rejet motivé d'une méthode)",SRC-C-001,sources/notes-C.md §1.1 et §2.1 (structure des NPP),2026-10-31,verifie,"Citation ≤ 25 mots ; la distinction évaluation/consultation s'appuie sur la table des matières des NPP (normes 5-6 « consultation »)" | ||||
| 3 | +CLM-46-002,46,"Convergence des définitions de la valeur marchande : IVS 2025 (IVS 102) et CUSPAP 2026",SRC-C-014;SRC-C-018,sources/notes-C.md §1.2,2026-10-31,verifie,"Reprise du ch. 47" | ||||
| 4 | +CLM-46-003,46,"C.c.Q. : art. 947 (propriété), 1936-1937 (maintien dans les lieux ; l'aliénation ne permet pas de résilier le bail), 1941 (reconduction), 1942 (avis 3 à 6 mois), 1945 et 1947 (refus, fixation), 1904 (aucun dépôt), 1896 et 1950 (loyer le plus bas des 12 mois ; fixation par le nouveau locataire)",SRC-A-001,sources/notes-A.md §4,2026-10-31,verifie,"Texte refondu à jour au 15 octobre 2026" | ||||
| 5 | +CLM-46-004,46,"Fixation des loyers depuis le 1er janvier 2026 (D. 1455-2025) : six critères (art. 3), pourcentage de base 3,1 % pour 2026 ; la valeur locative de marché n'est pas un critère",SRC-A-003;SRC-A-004;SRC-A-005,sources/notes-A.md §6.2,2026-10-31,verifie, | ||||
| 6 | +CLM-46-005,46,"Reprise de logement : art. 1957 (personne physique ; ascendants/descendants au 1er degré ; parent ou allié dont il est le principal soutien ; ex-conjoint) ; art. 1958 (indivision : seulement si l'unique autre propriétaire est le conjoint) ; art. 1959.1 (65 ans ou plus, 10 ans, revenu ≤ 125 % du seuil HLM) ; art. 1968 (bonne foi, dommages punitifs) ; art. 1959 (éviction) ; art. 1965 (indemnité 3 à 24 mois, Loi 31)",SRC-A-001;SRC-A-040,sources/notes-A.md §5,2026-10-31,verifie,"Seuils 65 ans / 125 % introduits par la Loi 65 (L.Q. 2024, c. 23)" | ||||
| 7 | +CLM-46-006,46,"Délais de la reprise (art. 1960-1963 C.c.Q.) : avis au moins 6 mois avant la fin d'un bail de plus de 6 mois (1 mois si bail ≤ 6 mois ; 6 mois avant la date prévue si durée indéterminée) ; réponse du locataire dans le mois, silence = refus réputé ; demande du locateur au TAL dans le mois du refus ; preuve de l'intention réelle",SRC-46-001;SRC-A-001,"Page « Reprise de logement » du TAL, extraite le 2026-10-31 (tableau des délais) ; LégisQuébec inaccessible par script (HTTP 403)",2026-10-31,verifie,"Lève le point non vérifié CLM-32-012 du ch. 32 ; le texte officiel de l'art. 1960 reste à relire avant publication (déclaré dans limites). Application au dossier : avis au plus tard le 2026-12-31 pour le bail échéant le 2027-06-30 (calcul de l'auteur)" | ||||
| 8 | +CLM-46-007,46,"Moratoire de la Loi 65 : aucune éviction aux fins de l'art. 1959 avant le 6 juin 2027 ; ne vise pas la reprise de l'art. 1957 ; aucun avis de fin anticipée repéré au 31 octobre 2026",SRC-A-040,sources/notes-A.md §5 (L.Q. 2024, c. 23, art. 1, 2, 8, 11),2026-10-31,verifie,"À revérifier au 6 juin 2027" | ||||
| 9 | +CLM-46-008,46,"Vente d'un immeuble résidentiel de moins de 5 logements : contrat de courtage sur formulaire obligatoire (LCI art. 23) ; formulaire DV de l'OACIQ, section D2.6 (loyers, avis, dossiers TAL) ; la DV consultée (V24 06/2022) mentionne encore « 70 ans » alors que l'art. 1959.1 vise 65 ans",SRC-A-024;SRC-A-026;SRC-A-028,sources/notes-A.md §2.4,2026-10-31,verifie,"Version postérieure du formulaire non consultée" | ||||
| 10 | +CLM-46-009,46,"Loi sur le TAL, art. 51 à 54.13 : conversion en copropriété divise soumise à l'autorisation du Tribunal ; droit de préemption du locataire",SRC-A-002,sources/notes-A.md §6.1,2026-10-31,verifie, | ||||
| 11 | +CLM-46-010,46,"Zonage : usage résidentiel de 3 logements autorisé ; données ouvertes de zonage de la Ville de Québec (Données Québec, CC-BY 4.0)",SRC-B (vqzonage),references/library.bib (vqzonage, urldate 2026-10-31),2026-10-31,partiellement_verifie,"La conformité de l'immeuble FICTIF est une hypothèse du dossier ; seule l'existence du jeu de données est vérifiée" | ||||
| 12 | +CLM-46-011,46,"Rôle 2025-2027 de la Ville de Québec : déposé en septembre 2024, en vigueur le 1er janvier 2025, date de référence 1er juillet 2023 (LFM art. 46) ; variation moyenne +23,5 % (presse) ; variation des plex non publiée ; LFM art. 43 et 45.1 (valeur réelle ; réputé détenir tous les droits du locataire)",SRC-B-001;SRC-E-059;quebecrole2025;vqrole2025,sources/notes-E.md §ch. 46 ; notes-B (LFM),2026-10-31,partiellement_verifie,"Dates [O] ; variation +23,5 % [P]" | ||||
| 13 | +CLM-46-012,46,"Facteur comparatif de la Ville de Québec pour 2026 : 1,08",SRC-A-023,"references/library.bib (villeQuebecMutations, note) ; non visible dans le texte extrait de la page le 2026-10-31 (tableau non capturé)",2026-10-31,partiellement_verifie,"Sert uniquement à la base d'imposition des droits de mutation (prix > rôle × 1,08) et au ratio au rôle ajusté" | ||||
| 14 | +CLM-46-013,46,"Taxes 2026 de la Ville de Québec : 0,7464 $/100 $ (1-5 log.), 0,7697 $ (6+), tarifs 386 $/log. (aqueduc-égout) et 195 $/log. (matières résiduelles) ; taxe scolaire 2026-2027 0,07899 $/100 $ avec exemption des premiers 25 000 $",SRC-B-025;SRC-E-027;SRC-E-026,sources/notes-E.md §ch. 28 et §ch. 46 ; ch. 9 (tab. taux),2026-10-31,verifie,"Taxe scolaire : source secondaire (CSS) ; l'exemption de 25 000 $ est tirée des notes-E" | ||||
| 15 | +CLM-46-014,46,"Droits sur les mutations immobilières, Ville de Québec 2026 : 0,5 % ≤ 62 900 $ ; 1 % ≤ 315 000 $ ; 1,5 % ≤ 500 000 $ ; 2,5 % ≤ 750 000 $ ; 3 % au-delà ; base = max(prix, contrepartie, rôle × facteur) (LDMI art. 1.1, 2, 2.1)",SRC-A-023;SRC-A-021;SRC-B-033,"Page de la Ville de Québec extraite le 2026-10-31 (barème relu intégralement) ; notes-B (LDMI)",2026-10-31,verifie,"Statut de la page municipale relevé de partiellement_verifie à verifie pour les tranches" | ||||
| 16 | +CLM-46-015,46,"APCIQ T3 2026 : plex RMR Québec 600 000 $ (+17 %), agglomération 618 500 $ (+12 %), secteur La Cité–Basse-Ville et Limoilou 647 500 $ (+13 %), 107 ventes (−14 %) ; délai de vente médian des plex RMR Québec 30 jours ; offre inférieure de moitié à la moyenne historique",SRC-E-001;SRC-E-003,sources/notes-E.md §ch. 4, 15 et 46,2026-10-31,verifie,"Ventes par courtier (Centris) ; attribution APCIQ ; aucun tableau reproduit" | ||||
| 17 | +CLM-46-016,46,"JLR août 2026 : plex RMR Québec 590 000 $ (+17 %)",SRC-E-066,sources/notes-E.md §ch. 46,2026-10-31,partiellement_verifie,"Fiche RMR de Québec à confirmer (comme CLM-32-005)" | ||||
| 18 | +CLM-46-017,46,"SCHL oct. 2025 : RMR Québec inoccupation 2,4 % (0,9 % en 2024), loyers 1 107 / 1 277 / 1 475 / 1 227 $, +6,1 % (2 ch., même échantillon), rotation 13,0 % ; l'enquête couvre les immeubles de 3 logements et plus",SRC-E-007,sources/notes-E.md §ch. 4 ; ch. 26 (rotation),2026-10-31,verifie, | ||||
| 19 | +CLM-46-018,46,"Zone SCHL Basse-Ville : loyer moyen 1 139 $ (+5,3 %), inoccupation 2,7 % ; Limoilou relèverait de cette zone",SRC-E-008,sources/notes-E.md §ch. 46 (page de la Ville de Québec [P]),2026-10-31,partiellement_verifie,"Appartenance exacte de Limoilou à la zone non confirmée (déclaré dans limites)" | ||||
| 20 | +CLM-46-019,46,"CBRE T3 2026 : multirésidentiel basse hauteur catégorie B à Québec 5,00-6,00 % (stables)",SRC-E-045,sources/notes-E.md §ch. 29,2026-10-31,verifie,"Utilisé comme R* illustratif (36 % de prime à 5,00 % ; 29 % à 4,50 % : calculs de l'auteur)" | ||||
| 21 | +CLM-46-020,46,"Banque du Canada : taux directeur 2,25 % jusqu'au 28 oct. 2026 puis 2,50 % ; taux conventionnel 5 ans affiché 6,19 % ; fonds avancés août 2026 : assuré fixe ≥ 5 ans 4,12 %, non assuré 4,58 % ; obligation 5 ans 3,58 % (29 oct. 2026) ; IPC Québec +3,1 % (sept. 2026)",SRC-E-012;SRC-E-011;SRC-E-010,sources/notes-C.md §4.1 ; notes-E ; data/raw/bdc_valet,2026-10-31,verifie, | ||||
| 22 | +CLM-46-021,46,"Finances Canada (15 déc. 2024) : plafond assurable 1,5 M$ ; mise de fonds 5 % ≤ 500 000 $ et 10 % de 500 000 $ à 1,5 M$ ; amortissement 30 ans pour premiers acheteurs et constructions neuves ; 25 ans par défaut",SRC-C-038,sources/notes-C.md §4.3,2026-10-31,verifie,"Les 25 ans par défaut : pratique courante, non relue dans un texte (déclaré)" | ||||
| 23 | +CLM-46-022,46,"BSIF : taux admissible minimal des prêts non assurés = max(contrat + 2 %, 5,25 %) ; appliqué par analogie au prêt assuré du dossier",SRC-C-035,sources/notes-C.md §4.2,2026-10-31,verifie,"La règle fédérale propre aux prêts assurés n'a pas été vérifiée (déclaré dans le texte et les limites)" | ||||
| 24 | +CLM-46-023,46,"Prime d'assurance prêt hypothécaire des prêts résidentiels (barème selon le RPV, ajoutée au capital)",—,"aucun barème résidentiel vérifié au dépôt (seul le barème des immeubles collectifs, SRC-C schlaphprimes, l'est)",2026-10-31,non_verifie,"Non modélisée ; décrite comme pratique ; signalée dans limites" | ||||
| 25 | +CLM-46-024,46,"Part des loyers des logements loués admise par les prêteurs dans la qualification de l'emprunteur",—,"aucun texte public vérifié au dépôt",2026-10-31,non_verifie,"Aucun pourcentage avancé ; le dossier rapporte seulement la part du versement couverte par les loyers bruts (53,7 %)" | ||||
| 26 | +CLM-46-025,46,"Loi sur l'intérêt, art. 6 : composition semestrielle des hypothèques canadiennes",SRC-O-001,references/library.bib (loiInteret) ; annexe des conventions de calcul,2026-10-31,verifie, | ||||
| 27 | +CLM-46-026,46,"SCHL 2015, frais d'exploitation : entretien 500 $/log. ; gestion 3 % (5-6 log.) ; TAL forfait 5 % ; BAC : hausse des primes habitation (1 103 $ en 2024)",SRC-E-027(bis);SRC-E (bacprimes2025),sources/notes-E.md §ch. 28,2026-10-31,partiellement_verifie,"Barème SCHL daté (2015) ; BAC : prime moyenne habitation, aucune statistique par immeuble locatif ; servent de repères, non de normalisation" | ||||
| 28 | +CLM-46-027,46,"IPCB Montréal T3 2026 : appartements < 5 étages 118,5 ; maison individuelle 116,5 (2023 = 100)",SRC-E-017;SRC-C-048,manuscript/chapters/ch21.tex (tab. IPCB) ; tableau 18-10-0289-01,2026-10-31,verifie,"Valeurs reprises du ch. 21 (diffusion du 2026-10-29)" | ||||
| 29 | +CLM-46-028,46,"Coût unitaire de référence 2 409 $/m² habitable (cas 1, 165 m², T3 2026) ; élasticité de taille −0,10 ; fourchette Altus Montréal unifamiliale 1 668-2 314 $/m² (secondaire)",—,manuscript/chapters/ch21.tex (devis synthétique du cas 1 ; SRC-E-043 partiellement vérifié),2026-10-31,partiellement_verifie,"Le coût d'une maison transposé à un plex de 1948 est une hypothèse de contrôle déclarée" | ||||
| 30 | +CLM-46-029,46,"Hypothèses de la méthode du coût : terrain 900 $/m² (Limoilou), vie économique 90 ans, φ(état 3) = 0,5, âge effectif = 0,5 a + 0,5 φ L (convention ch. 11/24)",—,"aucune source : hypothèses pédagogiques du dossier synthétique",2026-10-31,non_verifie,"Déclarées comme telles ; méthode non pondérée ; sensibilité 700-1 100 $/m² et 80-100 ans" | ||||
| 31 | +CLM-46-030,46,"Le jeu synthétique du cas 2 est normalisé à la médiane APCIQ Limoilou à la date de référence du rôle (2024-07-01) puis indexé à 7,29 %/an ; les prix fictifs de 2026 excèdent la médiane T3 2026 publiée d'environ 15 % ; la régression auxiliaire retrouve une croissance de 7,45 %/an",—,analysis/python/traite/synth.py (cas2_quebec) ; ch46_dossier.regression_auxiliaire,2026-10-31,verifie,"Déclaré dans synthetique et limites ; comme CLM-32-026" | ||||
| 32 | +CLM-46-031,46,"Pondération 40/35/25 (prix par logement / MRB / capitalisation) pour un triplex de quartier central acheté par un occupant",—,manuscript/chapters/ch32.tex §32.4 (pondération argumentée de l'ouvrage),2026-10-31,verifie,"Jugement de l'auteur, testé : autres pondérations de −8,8 % à +6,9 %" | ||||
| 33 | +CLM-46-032,46,"Écart de +50 000 $ (+5,7 %) avec l'indication du ch. 32 (870 000 $) : grille explicite (+102 367 $ sur l'indication par logement, × 0,40 ≈ 41 000 $) et taxes 2026 (+18 577 $ sur la capitalisation, × 0,25 ≈ 4 600 $)",—,ch46_dossier.py (reconciliation ; ch32 via ch32_plex.indications),2026-10-31,verifie,"Même pondération, mêmes comparables, même MRB que le ch. 32 ; tests test_ch46.py::test_coherence_cas2_et_ch32" | ||||
| 34 | +CLM-46-033,46,"Études citées : Des Rosiers–Thériault–Villeneuve 2000 ; Thériault et al. 2003 ; Kestens et al. 2006 (marché de Québec) ; Shilling–Sirmans–Dombrow 1991 ; Hulten–Wykoff 1981 ; Isakson 1986 ; Vandell 1991 ; Kummerow–Galfalvy 2002 ; Halvorsen–Palmquist 1980 ; Kennedy 1981 ; Poterba 1984 ; Himmelberg et al. 2005 ; Geltner et al. 2014 ; Fisher–Martin 2007 ; Appraisal Institute 2026 ; Arnott 1995 ; Kholodilin 2024 ; Smith 1988 ; Diamond et al. 2019",SRC-D-001;SRC-D-003;SRC-D-009,references/library.bib (clés existantes, lot D) ; notes-D §ch. 46,2026-10-31,verifie,"Aucune nouvelle entrée scientifique" | ||||
| 35 | +CLM-46-034,46,"Âge et revenu de la locataire du rez-de-chaussée (conditions de l'art. 1959.1) ; absence d'avis et de dossier TAL déclarée par le vendeur",—,"dossier fictif : informations non disponibles",2026-10-31,non_verifie,"Limite à l'étendue du travail, déclarée au rapport (éléments 6 et 7)" | ||||
| 36 | +CLM-46-035,46,"Loyer de marché des 5½ (1 430 $) et du 4½ (1 251 $) du sujet",—,data/synthetic/cas2_quebec_loyers.csv (calibration SCHL 1 277 $ × 1,12 et × 0,98),2026-10-31,verifie,"Convention du jeu synthétique ; justification narrative (taille supérieure à la moyenne) ajoutée par l'auteur" | ||||
added
verification/chapters/ch48-claims.csv
+33 −0
@@ -0,0 +1,33 @@ | |||||
| 1 | +id,chapitre,affirmation,source_id,verification,date,statut,notes | ||||
| 2 | +CLM-48-001,48,NPP OEAQ : Norme 2 exige l'identification du client et de l'usage ; règle 2.3 : 12 éléments du rapport ; normes 5-6 : consultation distincte de l'opinion de valeur ; Code de déontologie : n'agir que pour une partie sans divulgation (art. 18-20) ; signature (art. 34),SRC-C-001;SRC-C-003,NPP lues (notes-C §1-2) ; LégisQuébec C-26 r. 123,2026-10-31,verifie,"structure des normes 1-2 / 5-6 d'après la table des matières des NPP (notes-C §2) ; utilisateur désigné : notion reprise des NPP (règle 2.3 élément 3 « but et fin ») sans citation littérale" | ||||
| 3 | +CLM-48-002,48,"IVS 2025 : la valeur marchande est une base d'évaluation distincte des bases définies par d'autres référentiels (dont la juste valeur comptable) ; l'unité d'évaluation (actifs séparés ou ensemble) est convenue dans l'étendue des travaux",SRC-C-014,IVS 2025 (IVS 101 Scope of Work ; IVS 102 Bases of Value) selon notes-C §3,2026-10-31,partiellement_verifie,"les IVS 2025 ont été téléchargées (notes-C) mais les passages précis sur l'agrégation/portefeuille n'ont pas été relus mot à mot pour ce chapitre ; aucun numéro de paragraphe cité dans le texte" | ||||
| 4 | +CLM-48-003,48,Le référentiel d'information financière d'un fonds immobilier exige la mesure des immeubles de placement à la juste valeur (notion comptable),—,non consulté (IFRS 13 / IAS 40 non dans le registre),2026-10-31,non_verifie,"énoncé général sans citation de norme comptable ; le texte le présente comme hypothèse de travail et renvoie aux vérificateurs du fonds ; à faire relire par un comptable avant publication" | ||||
| 5 | +CLM-48-004,48,"C.c.Q. art. 1937 : l'aliénation de l'immeuble ne permet pas au nouveau locateur de résilier le bail (droit du locateur évalué)",SRC-A-001,LégisQuébec à jour au 2026-10-15 (notes-A),2026-10-31,verifie, | ||||
| 6 | +CLM-48-005,48,"IAAO Standard on Mass Appraisal (2025) : évaluation de masse = modèle appliqué uniformément à un ensemble de biens, contrôlé par des statistiques de ratio ; Standard on Ratio Studies (2013) : seuils niveau 0,90-1,10 ; COD 5,0-15,0 / 5,0-20,0 pour immeubles à revenus ; PRD 0,98-1,03 ; PRB ±0,05 ; COD < 5 peut indiquer une poursuite des ventes ; tailles d'échantillon minimales recommandées",SRC-C-024;SRC-C-025,documents IAAO consultés (notes-C §3 ; ch. 9 tab. 9.x),2026-10-31,verifie,"seuils repris du ch. 9 (même source) ; la révision 2025 du Standard on Mass Appraisal n'a pas été relue in extenso ; la règle de taille d'échantillon n'est pas chiffrée dans le texte" | ||||
| 7 | +CLM-48-006,48,"CBRE T3 2026 : multirésidentiel faible hauteur catégorie B Montréal 4,25-4,75 % (en hausse) ; Québec 5,00-6,00 % ; écart national toutes propriétés vs obligation 10 ans 256 pb ; aucun taux publié pour Gatineau, Sherbrooke, Trois-Rivières, Saguenay",SRC-E-045,rapport CBRE du 2026-10-21 (notes-E ch. 29),2026-10-31,verifie,"opinion d'industrie, non statistique de transactions" | ||||
| 8 | +CLM-48-007,48,"SCHL ELL octobre 2025 : loyers 2 ch. Montréal 1 346 $ ; Québec 1 277 ; Gatineau 1 460 ; Sherbrooke 1 062 ; Trois-Rivières 1 016 ; Saguenay 985 ; inoccupation 2,9 (2,1) / 2,4 (0,9) / 3,8 (1,9) / 2,7 (1,4) / 2,7 (0,9) / 1,3 (1,6) % ; variation loyers tous +7,4 / +6,4 / +4,5 / +9,8 / +7,3 / +12,5 %",SRC-E-007;SRC-13-003,tableaux Excel SCHL (notes-E ch. 4),2026-10-31,verifie,"variations « même échantillon » (lettres de qualité SCHL non reproduites)" | ||||
| 9 | +CLM-48-008,48,"Statistique Canada 17-10-0148-01 : population au 1er juillet 2025 des 6 RMR (4 597 837 ; 903 607 ; 374 226 ; 243 911 ; 174 316 ; 170 192) ; 6 RMR = 71,4 % de la population provinciale (ISQ 9 058 297)",SRC-E-021;SRC-E-062,extraction WDS et communiqué ISQ 2026-01-14 (notes-E ch. 4 ; ch. 4 §4.2),2026-10-31,verifie, | ||||
| 10 | +CLM-48-009,48,"ISQ projections 2026 (9 juillet 2026) : population provinciale −50 000 (−0,6 %) 2025-2029 puis stable ; RMR 2025-2051 : Montréal −3 %, Québec +16 %, Saguenay −6 % ; aucun chiffre publié dans le communiqué pour Gatineau, Sherbrooke, Trois-Rivières",SRC-E-061,communiqué ISQ (notes-E ch. 4),2026-10-31,verifie,"le texte signale « n. d. » pour les trois RMR non couvertes par le communiqué ; les tableaux détaillés de l'ISQ n'ont pas été consultés" | ||||
| 11 | +CLM-48-010,48,"APCIQ T3 2026 : prix médian des plex (2-5 log.) RMR Montréal 860 500 $ ; Québec 600 000 ; Gatineau 617 500 ; Sherbrooke 544 500 ; Trois-Rivières 420 000 ; Saguenay 373 500",SRC-E-001,communiqué APCIQ du 2026-10-14 (notes-E ch. 4),2026-10-31,verifie,"ventes par courtier (Centris) ; attribution APCIQ" | ||||
| 12 | +CLM-48-011,48,"Banque du Canada : taux directeur 2,25 % du 29 octobre 2025 au 28 octobre 2026, relevé à 2,50 % le 28 octobre 2026 ; obligation 10 ans 3,84 % (2026-10-29) ; fonds avancés assurés fixe 5 ans+ 4,12 % (août 2026)",SRC-C-027;SRC-C-029;SRC-E-021,communiqué BdC 2026-10-28 ; Valet ; A4_RATES_MORTGAGES (notes-C §4.1),2026-10-31,verifie,"la source des taux hypothécaires des fonds avancés est la clé bdctauxhypothecaires2026 (groupe A4) ; identifiant du registre à compléter par l'orchestrateur si différent" | ||||
| 13 | +CLM-48-012,48,"Volume d'investissement multirésidentiel à Montréal 2,9 G$ au S1 2026 (Altus, cité au ch. 47)",SRC-E-0xx (altusmontreal2026q2),notes-E ch. 29 / ch. 47 CLM,2026-10-31,partiellement_verifie,"chiffre non recoupé (déjà signalé au ch. 33 et 47)" | ||||
| 14 | +CLM-48-013,48,"Littérature : écarts de taux de capitalisation entre marchés attribués aux primes de liquidité et de risque locales (Sivitanidou & Sivitanides 1999 ; Sivitanides, Torto & Wheaton 2003) ; cycles communs liés aux marchés de capitaux (Chervachidze & Wheaton 2013 ; Duca & Ling 2020)",SRC-D (notes-D ch. 29/40),notes-D,2026-10-31,verifie,"clés library.bib existantes" | ||||
| 15 | +CLM-48-014,48,"Régression semi-log du taux (eq. 48.modele) identique à cas4.effets_regionaux et au ch. 33 : coefficients, HC1 (White 1980), effets e^β−1 (Halvorsen & Palmquist 1980), facteur de Duan (1983) 1,0011",CALC-48-006,test_ch48.py,2026-10-31,verifie,"propriétés du jeu synthétique ; cohérence avec ch. 33 testée (Gatineau +19,6 %, ln n −0,0315, Duan 1,0011, P45 6 716 534 $)" | ||||
| 16 | +CLM-48-015,48,"Effets inondation (+7,9 % du taux) et sol (+5,5 %) estimés sur 3 et 2 immeubles ; retrouvent les majorations de 5 % et 3 % de la loi de génération à l'erreur près ; ne mesurent pas le marché québécois",CALC-48-015;CALC-48-016,script,2026-10-31,verifie,"énoncé explicitement comme propriété synthétique dans le texte et les limites" | ||||
| 17 | +CLM-48-016,48,"Cadre des zones inondables en vigueur le 1er mars 2026 (LQE art. 46.0.2 ; classes d'intensité très élevée/élevée/modérée/faible : probabilité sur 25 ans × profondeur ; cartographie de nouvelle génération publiée progressivement ; Règlement sur l'encadrement d'activités sous la responsabilité des municipalités art. 83 reconstruction dans le littoral, art. 85 rive)",SRC-B-045;SRC-B-048;SRC-B-049;SRC-B-042,pages Québec.ca (màj 15 oct. et 28 août 2026) et version administrative du règlement (notes-B §43.2),2026-10-31,verifie,"numéro RLRQ du règlement non confirmé (notes-B) ; règles détaillées par classe non extraites ; la classe des immeubles fictifs ne peut être lue sur une carte" | ||||
| 18 | +CLM-48-017,48,"LQE art. 31.53-31.54 (changement d'utilisation subordonné à un plan de réhabilitation) et 31.58 (avis de contamination au registre foncier) ; RPRT (Q-2 r. 37) valeurs limites annexes I/II ; Répertoire des terrains contaminés non exhaustif",SRC-B-042;SRC-B-043;SRC-B-044,LégisQuébec à jour au 2026-10-15 / 2026-07-01 ; page MELCCFP (notes-B §43.1),2026-10-31,verifie, | ||||
| 19 | +CLM-48-018,48,"Décotes de zone inondable dans la littérature empirique américaine : ordre de 4 à 12 % selon l'information et la récence des sinistres (Bin & Polasky 2004 ≈ 6 % ; Harrison et al. 2001 ; Bin, Kruse & Landry 2008 ; Bernstein et al. 2019 ≈ 7 % ; Hino & Burke 2021)",SRC-D (notes-D ch. 43),notes-D (résumés),2026-10-31,partiellement_verifie,"fourchette « 4 à 12 % » = synthèse de l'auteur à partir des résumés de notes-D ; les articles n'ont pas été relus pour ce chapitre ; le ch. 43 doit donner les chiffres exacts par étude" | ||||
| 20 | +CLM-48-019,48,"Contamination : effets sur les prix très dispersés selon nature et stade (Simons & Saginor 2006 méta-analyse ; Jackson 2001 recension)",SRC-D (notes-D ch. 43),notes-D,2026-10-31,verifie,"aucun chiffre repris" | ||||
| 21 | +CLM-48-020,48,"Hypothèse d'amortissement de 480 mois pour tous les prêts du portefeuille (prêts assurés SCHL, APH Select : amortissement jusqu'à 40 ans à 50 points, RCD min 1,10) ; sensibilité 300 mois ; dette du fichier = solde au 2026-06-30",SRC-C-040,page SCHL APH Select 2026-09-21 (notes-C §4.4),2026-10-31,verifie,"hypothèse déclarée dans le texte et alignée sur le ch. 33 (P45 : RCD 1,15 à 480 mois, 0,95 à 300 mois) ; le dossier synthétique ne documente ni l'amortissement ni la date d'origination" | ||||
| 22 | +CLM-48-021,48,"Test de résistance +200 pb inspiré du taux admissible minimal du BSIF (contrat + 2 % ou 5,25 %) pour les prêts résidentiels non assurés",SRC-C-0xx (osfiMqr),page BSIF modifiée le 2026-01-29 (notes-C §4.2),2026-10-31,verifie,"analogie déclarée : le TAM ne s'applique pas tel quel aux prêts multilogement commerciaux" | ||||
| 23 | +CLM-48-022,48,"Hypothèques canadiennes : composition semestrielle (Loi sur l'intérêt art. 6) ; formules de paiement et de solde du ch. 31 (traite.finance.Hypotheque)",SRC-C (ch. 31),test_finance.py ; test_ch48.py::test_dette_identites,2026-10-31,verifie,"clé loiInteret dans library.bib non citée ici (renvoi au ch. 31)" | ||||
| 24 | +CLM-48-023,48,"Monte-Carlo : copule gaussienne à deux facteurs échantillonnée par Cholesky (Cov(LU) = LL' = Σ) ; σ_ε,i = volatilité estimée ; σ_η = écart-type résiduel du modèle (identification déclarée comme hypothèse) ; ρ taux 0,50/0,70 posés ; ρ RNE 0,17 estimé",CALC-48-023;CALC-48-024,test_ch48.py::test_monte_carlo_reproductible_et_diversification,2026-10-31,verifie,"les corrélations du taux sont des hypothèses déclarées, non des estimations ; la distribution de la valeur en dépend presque entièrement (limites)" | ||||
| 25 | +CLM-48-024,48,"Proposition 48.1 : σ_P ≤ Σ w_i σ_i avec égalité ssi ρ = 1 ; VaR gaussienne = z_α σ donc sous-additive ; la VaR n'est pas cohérente en général (Artzner et al. 1999)",SRC-48-002,démonstration dans le texte ; vérification numérique (analytique et simulation : ratio 0,999 sous ρ = 1),2026-10-31,verifie,"Artzner et al. vérifié Crossref ; cité en note, non par clé" | ||||
| 26 | +CLM-48-025,48,"Convexité de la valeur dans le taux : moyenne simulée > médiane (Hoesli, Jani & Bender 2006)",SRC-D (notes-D ch. 40),notes-D,2026-10-31,verifie, | ||||
| 27 | +CLM-48-026,48,"Relation R + g = rendement total (Gordon & Shapiro 1956, eq. 29.gordon) ; frontière moyenne-variance (Markowitz 1952) ; diversification immobilière utile contre le risque propre, bornée par la composante nationale (Geltner et al. 2014 ; Baum, Crosby & Devaney 2021)",SRC-48-001;SRC-D,notes-D ; Crossref,2026-10-31,verifie,"Markowitz cité en note ; les manuels n'ont pas été relus pour ce chapitre (résumés notes-D)" | ||||
| 28 | +CLM-48-027,48,"Bruit des tendances estimées sur des séries d'évaluation individuelles (Geltner 1993 ; Clayton, Geltner & Hamilton 2001 ; Fisher, Geltner & Webb 1994)",SRC-D (notes-D ch. 20/33/48),notes-D,2026-10-31,verifie, | ||||
| 29 | +CLM-48-028,48,"Choc pandémique : −3 % imposé par la loi de génération 2020T2-2021T2 ; mesuré −2,53 % (portefeuille) ; aucune prétention à décrire l'effet réel de la pandémie sur les RNE québécois",CALC-48-013,script,2026-10-31,verifie,"synthétique" | ||||
| 30 | +CLM-48-029,48,"Corrélation des RNE entre immeubles due au seul choc commun (≈ 0 hors pandémie) : propriété de la loi de génération ; sur marchés réels une composante régionale existerait vraisemblablement",CALC-48-014,script,2026-10-31,verifie,"jugement de l'auteur signalé dans les limites" | ||||
| 31 | +CLM-48-030,48,"Aucune preuve de marché d'une prime ou décote de portefeuille au Québec en 2026 ; unité d'évaluation = chaque immeuble séparément",—,aucune source (absence de donnée),2026-10-31,non_verifie,"absence de source signalée comme telle dans le texte ; à documenter si une étude canadienne sur les transactions de portefeuilles est trouvée" | ||||
| 32 | +CLM-48-031,48,"Valeur retenue 143 400 000 $ ; fourchette MC −6,9 %/+7,6 % ; erreur agrégée vraisemblablement < 3 % vs erreur individuelle jusqu'à 10 %",CALC-48-030;CALC-48-010,script,2026-10-31,verifie,"le « < 3 % » est un jugement fondé sur l'écart modèle/indications (0,55 %) et le CV simulé ; synthétique" | ||||
| 33 | +CLM-48-032,48,"Taux de Gatineau, Sherbrooke, Trois-Rivières et Saguenay posés par hypothèse (prime 0 à 100 pb sur Québec) dans le jeu synthétique ; aucune publication",data/synthetic/README.md ; SRC-E-045,notes-E ch. 48 (« NON VÉRIFIÉS »),2026-10-31,verifie,"la non-publication est vérifiée ; les niveaux posés sont des hypothèses pédagogiques" | ||||
modified
verification/inventaire.md
+230 −229
@@ -1,230 +1,231 @@ | |||||
| 1 | −# Inventaire (228 scripts, 27 fichiers de données, 3 classeurs, 219 figures) | 1 | +# Inventaire (229 scripts, 27 fichiers de données, 3 classeurs, 219 figures) | ||
| 2 | 2 | ||||
| 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 | −- 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 | ||||
| 5 | −- module `analysis/python/traite/cas3.py` — Cas 3 — immeuble de 12 logements à Montréal (données synthétiques) : calculs PARTAGÉS par les chapitres 26-31, | ||||
| 6 | −- module `analysis/python/traite/cas4.py` — Cas 4 — portefeuille multirésidentiel interrégional (données synthétiques) : calculs PARTAGÉS par les chapitre | ||||
| 7 | −- module `analysis/python/traite/comparables.py` — Méthode de comparaison : grille d'ajustements, ajustements séquentiels, ventes appariées, réconciliation. | ||||
| 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 | −- 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). | ||||
| 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 | ||||
| 13 | −- module `analysis/python/traite/style.py` — Style graphique du traité (Matplotlib). Palette validée : styles/palette.json. | ||||
| 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. | ||||
| 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 | ||||
| 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 | ||||
| 44 | −- calcul `analysis/python/cases/ch29\_capitalisation.py` — Chapitre 29 — Capitalisation directe : calculs du cas 3 (12 logements, Rosemont ; DONNÉES SYNTHÉTIQUES). | ||||
| 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). | ||||
| 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, | ||||
| 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 | ||||
| 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 | ||||
| 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 | ||||
| 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 | ||||
| 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) ; | ||||
| 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 | ||||
| 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 | ||||
| 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 | ||||
| 129 | −- figure `analysis/python/figures/ch30\_loyers.py` — Ch. 30, figure « loyers » : trajectoire du revenu brut potentiel contractuel (indexé au taux TAL + relocation | ||||
| 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 | ||||
| 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). | ||||
| 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 | ||||
| 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\_*. | ||||
| 168 | −- test `analysis/python/tests/conftest.py` — | ||||
| 169 | −- test `analysis/python/tests/test\_cas1.py` — | ||||
| 170 | −- test `analysis/python/tests/test\_cas2\_cas4.py` — | ||||
| 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 | ||||
| 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 | ||||
| 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). | ||||
| 200 | −- test `analysis/python/tests/test\_ch29.py` — Tests du chapitre 29 — capitalisation directe (cas 3, données synthétiques). | ||||
| 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). | ||||
| 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 | ||||
| 219 | −- test `analysis/python/tests/test\_comparables.py` — | ||||
| 220 | −- test `analysis/python/tests/test\_cout.py` — | ||||
| 221 | −- test `analysis/python/tests/test\_finance.py` — | ||||
| 222 | −- test `analysis/python/tests/test\_hedonique.py` — | ||||
| 223 | −- test `analysis/python/tests/test\_synth.py` — | ||||
| 224 | −- outil `tools/check\_manuscript.py` — Vérifications du manuscrit : stubs restants, figures manquantes, scripts des figures, | ||||
| 225 | −- outil `tools/inventaire.py` — Inventaire des scripts, tests, données, figures et classeurs → manuscript/appendices/\_inventaire.tex (longtab | ||||
| 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 | ||||
| 227 | −- outil `tools/make\_release.py` — Assemble release/ : PDF, sources LaTeX, données, figures, scripts, classeurs, corrigés, rapport de validation. | ||||
| 228 | −- outil `tools/merge\_sources.py` — Fusionne sources/registry-*.csv → sources/registry.csv, sources/normes-*.csv → sources/normes-matrice.csv, | ||||
| 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 | |||||
| 3 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas1.py` — Cas 1 — maison unifamiliale à Gatineau (données synthétiques) : calculs PARTAGÉS par les chapitres 9, 14, 16-2 | ||||
| 4 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas2.py` — Cas 2 — triplex à Québec, Limoilou (données synthétiques) : calculs PARTAGÉS par les chapitres 26, 27, 32 et 4 | ||||
| 5 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas3.py` — Cas 3 — immeuble de 12 logements à Montréal (données synthétiques) : calculs PARTAGÉS par les chapitres 26-31, | ||||
| 6 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cas4.py` — Cas 4 — portefeuille multirésidentiel interrégional (données synthétiques) : calculs PARTAGÉS par les chapitre | ||||
| 7 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}comparables.py` — Méthode de comparaison : grille d'ajustements, ajustements séquentiels, ventes appariées, réconciliation. | ||||
| 8 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}cout.py` — Méthode du coût : coût neuf, dépréciation (physique, fonctionnelle, externe), extraction de marché. | ||||
| 9 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}finance.py` — Mathématiques financières de l'évaluation immobilière (conventions déclarées). | ||||
| 10 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}geo.py` — Outils géospatiaux génériques du traité (chapitre 38 ; réutilisables aux chapitres 43 et 48). | ||||
| 11 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}hedonique.py` — Outils économétriques : hédonique semi-log, indices (dummies temporelles, ventes répétées BMN / Case–Shiller), | ||||
| 12 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}panel.py` — Données de panel et identification causale (chapitre 36) : transformation within, erreurs-types en grappes (CR | ||||
| 13 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}style.py` — Style graphique du traité (Matplotlib). Palette validée : styles/palette.json. | ||||
| 14 | +- module `analysis/\allowbreak{}python/\allowbreak{}traite/\allowbreak{}synth.py` — Génération des quatre dossiers de cas SYNTHÉTIQUES du traité. | ||||
| 15 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch01\_valeur\_prix.py` — Chapitre 1 — Théorie de la valeur et prix immobiliers : tous les chiffres cités dans le texte (DONNÉES SYNTHÉT | ||||
| 16 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch02\_droits.py` — Chapitre 2 — Droits immobiliers et bases de valeur : calculs de l'exemple intégral sur le cas 3 (12 logements, | ||||
| 17 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch03\_cycles.py` — Chapitre 3 — Offre, demande et cycles : calculs de l'exemple intégral et des tableaux. | ||||
| 18 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch04\_marches.py` — Chapitre 4 — Marchés résidentiels québécois : lecture des DONNÉES RÉELLES de data/raw et calculs cités dans le | ||||
| 19 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch05\_rente.py` — Chapitre 5 — Économie urbaine et rente foncière : calculs de l'exemple intégral et des encadrés. | ||||
| 20 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch06\_demembrements.py` — Chapitre 6 — Code civil et droit immobilier : effets des modalités et démembrements du droit de propriété sur | ||||
| 21 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch07\_servitudes\_copro.py` — Chapitre 7 — Cadastre, titres, servitudes et copropriété : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 202 | ||||
| 22 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch08\_zonage.py` — Chapitre 8 — Zonage et urbanisme : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral. | ||||
| 23 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch09\_ratios.py` — Chapitre 9 — Évaluation foncière municipale et contestation (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031). | ||||
| 24 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch10\_controle\_rapport.py` — Chapitre 10 — contrôle automatique de la présence des douze éléments du contenu minimal d'un rapport écrit | ||||
| 25 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch10\_matrice\_normes.py` — Chapitre 10 — statistiques descriptives de la matrice des dispositions normatives du domaine C | ||||
| 26 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch11\_inspection.py` — Chapitre 11 — inspection synthétique du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) : fiche d'état par | ||||
| 27 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch12\_mesurage.py` — Chapitre 12 — Mesurage, superficies et plans : calculs du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). | ||||
| 28 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch13\_sources.py` — Chapitre 13 — Transactions, inscriptions, loyers et coûts : lecture et description des fichiers RÉELS de data/ | ||||
| 29 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch14\_nettoyage.py` — Chapitre 14 — Nettoyage, géocodage et qualité des données (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES). | ||||
| 30 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch15\_segmentation.py` — Chapitre 15 — Études de marché et segmentation. Calculs de l'exemple intégral et des tableaux du chapitre. | ||||
| 31 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch16\_selection.py` — Chapitre 16 — sélection des comparables pour le sujet du cas 1 (Gatineau, données synthétiques). | ||||
| 32 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch17\_ajustements.py` — Chapitre 17 — ajustements qualitatifs et quantitatifs des cinq comparables du cas 1 (Gatineau, données synthét | ||||
| 33 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch18\_hedonique.py` — Chapitre 18 — Modèles hédoniques : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUE | ||||
| 34 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch19\_spatial.py` — Chapitre 19 — modèles spatiaux et temporels sur le cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 35 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch20\_reconciliation.py` — Chapitre 20 — réconciliation et incertitude : combinaison des indications du cas 1 (Gatineau, données synthéti | ||||
| 36 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch21\_cout\_neuf.py` — Chapitre 21 — coût neuf (remplacement) du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES) et indexation IPCB ( | ||||
| 37 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch22\_metre.py` — Chapitre 22 — métré et quantités du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). | ||||
| 38 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch23\_structure\_couts.py` — Chapitre 23 — coûts directs et indirects : structure complète du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTI | ||||
| 39 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch24\_depreciation.py` — Chapitre 24 — dépréciation et désuétudes du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES). | ||||
| 40 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch25\_terrain.py` — Chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 41 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch26\_etat\_locatif.py` — Chapitre 26 — Baux et loyers : calculs de l'exemple intégral (cas 3, 12 logements à Montréal ; cas 2, triplex | ||||
| 42 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch27\_revenus.py` — Chapitre 27 — Revenus potentiels, vacance et pertes : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (t | ||||
| 43 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch28\_depenses.py` — Chapitre 28 — Dépenses, réserves, CAPEX et RNE : calculs du cas 3 (12 logements, Rosemont) et du cas 2 (triple | ||||
| 44 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch29\_capitalisation.py` — Chapitre 29 — Capitalisation directe : calculs du cas 3 (12 logements, Rosemont ; DONNÉES SYNTHÉTIQUES). | ||||
| 45 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch30\_dcf.py` — Chapitre 30 — Flux actualisés et valeur terminale : exemple intégral du cas 3 (12 logements, Montréal, | ||||
| 46 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch31\_financement.py` — Chapitre 31 — Financement, levier, RCD et RPV : calculs du chapitre (cas 3, 12 logements, Montréal, | ||||
| 47 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch32\_plex.py` — Chapitre 32 — Duplex à quintuplex : calculs de l'exemple intégral (cas 2, triplex de Limoilou, données SYNTHÉT | ||||
| 48 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch33\_six\_logements.py` — Chapitre 33 — Immeubles de six logements et plus : tous les chiffres cités dans manuscript/chapters/ch33.tex | ||||
| 49 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch34\_tal.py` — Chapitre 34 — TAL, encadrement locatif et scénarios : calculs du chapitre (cas 3, 12 logements, Montréal, | ||||
| 50 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch35\_indices.py` — Chapitre 35 — Indices immobiliers et ventes répétées : exemple intégral sur le cas 1 (Gatineau, DONNÉES SYNTHÉ | ||||
| 51 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch36\_panel.py` — Chapitre 36 — Données de panel et identification causale : choc simulé sur les séries de RNE du cas 4 | ||||
| 52 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch37\_ml.py` — Chapitre 37 — Apprentissage automatique et explicabilité : exemple intégral sur les 600 ventes du cas 1 | ||||
| 53 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch38\_sig.py` — Chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUES, graine 2 | ||||
| 54 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch39\_bayes.py` — Chapitre 39 — Modèles bayésiens et intervalles : exemple intégral sur les 600 ventes du cas 1 (Gatineau, DONNÉ | ||||
| 55 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch40\_montecarlo.py` — Chapitre 40 — Monte-Carlo et stress tests (DONNÉES SYNTHÉTIQUES : cas 3, 12 logements à Montréal ; cas 4, port | ||||
| 56 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch41\_phmu.py` — Chapitre 41 — Plus haute et meilleure utilisation, terrains et développement : calculs de l'exemple intégral. | ||||
| 57 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch42\_copro.py` — Chapitre 42 — Copropriétés et conversions : exemples chiffrés (DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 58 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch43\_risques.py` — Chapitre 43 — Risques environnementaux et sinistres : DONNÉES SYNTHÉTIQUES et calculs de l'exemple intégral. | ||||
| 59 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch44\_renovation.py` — Chapitre 44 — rénovation et efficacité énergétique : analyse coût-bénéfice de deux mesures sur le sujet du cas | ||||
| 60 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch45\_dossier.py` — Chapitre 45 — Cas 1 : maison unifamiliale à Gatineau (DONNÉES SYNTHÉTIQUES, propriété fictive) — dossier compl | ||||
| 61 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch46\_dossier.py` — Chapitre 46 — Cas 2 : triplex à Québec (Limoilou), dossier complet (DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 62 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch47\_dossier.py` — Chapitre 47 — Cas 3 : immeuble de 12 logements à Montréal (DONNÉES SYNTHÉTIQUES, immeuble fictif). | ||||
| 63 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}ch48\_portefeuille.py` — Chapitre 48 — Cas 4 : portefeuille multirésidentiel interrégional (DONNÉES SYNTHÉTIQUES, 48 immeubles fictifs, | ||||
| 64 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}generate\_all.py` — Régénère tous les jeux synthétiques (graine fixée). Usage : python3 -m analysis.python.cases.generate\_all (de | ||||
| 65 | +- calcul `analysis/\allowbreak{}python/\allowbreak{}cases/\allowbreak{}make\_spreadsheets.py` — Classeurs Excel du traité (openpyxl, formules vivantes) : spreadsheets/ | ||||
| 66 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch01\_figures.py` — Figures du chapitre 1 (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031 ; simulations étiquetées). | ||||
| 67 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch02\_decomposition.py` — Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) revenu net d'exploitation projeté avec les baux en place (dro | ||||
| 68 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch02\_ecart\_logements.py` — Figure ch02 — cas 3 (DONNÉES SYNTHÉTIQUES) : (a) ratio loyer contractuel / loyer de marché selon l'ancienneté | ||||
| 69 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_cout\_usage.py` — Figure ch03 — Coût d'usage du logement au Québec, 2001-2026, données RÉELLES (Banque du Canada, Valet : V80691 | ||||
| 70 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_cycle.py` — Figures ch03 — Simulation d'un cycle stock-flux (SYNTHÉTIQUE, analysis/python/cases/ch03\_cycles.py, paramètre | ||||
| 71 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_mises\_chantier.py` — Figure ch03 — Mises en chantier au Québec, données RÉELLES : Statistique Canada (SCHL), tableau 34-10-0135-01, | ||||
| 72 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch03\_quadrants.py` — Figure ch03 — Modèle des quatre quadrants (DiPasquale–Wheaton) tracé à partir des paramètres pédagogiques du m | ||||
| 73 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_carte.py` — Figure ch04 — carte schématique des six RMR du Québec : position des centres (coordonnées de la Base de donnée | ||||
| 74 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_ipln.py` — Figure ch04 — Indice des prix des logements neufs (IPLN), total maison et terrain, déc. 2016 = 100, janvier 20 | ||||
| 75 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_mutations.py` — Figure ch04 — taux effectif des droits sur les mutations immobilières (droit / base d'imposition) selon la bas | ||||
| 76 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_parc.py` — Figure ch04 — structure du parc de logements : ménages privés selon le type de construction, Québec et Canada | ||||
| 77 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_schl.py` — Figure ch04 — marché locatif par RMR : taux d'inoccupation (octobre 2024 et 2025) et loyer moyen des logements | ||||
| 78 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch04\_taux.py` — Figure ch04 — taux d'intérêt 2000-2026 : taux hypothécaire conventionnel 5 ans affiché (V80691335, hebdomadair | ||||
| 79 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_capitalisation.py` — Figure ch05 — sensibilité de la capitalisation d'un écart de taxe foncière : perte de valeur (en \% de la vale | ||||
| 80 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_cas1\_distance.py` — Figure ch05 — prix par mètre carré habitable et distance au centre, cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES, gra | ||||
| 81 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_gradient.py` — Figure ch05 — gradients du modèle monocentrique simulé (PARAMÈTRES PÉDAGOGIQUES DÉCLARÉS dans ch05\_rente.PARA | ||||
| 82 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_rmr.py` — Figure ch05 — valeur par logement par RMR du portefeuille du cas 4 (DONNÉES SYNTHÉTIQUES, graine 20261031) et | ||||
| 83 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch05\_surface.py` — Figure ch05 — surface de rente bicentrique simulée (courbes de niveau) : enveloppe de deux surfaces d'enchère | ||||
| 84 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch06\_emphyteose.py` — Figure ch06 — emphytéose sur un immeuble locatif dont le RNE est celui du cas 3 (DONNÉES SYNTHÉTIQUES, hypothè | ||||
| 85 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch06\_usufruit.py` — Figure ch06 — usufruit viager sur la maison du cas 1 (DONNÉES SYNTHÉTIQUES, table de mortalité synthétique) : | ||||
| 86 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_charges.py` — Figure ch07 — répartition des charges communes annuelles entre les huit fractions (DONNÉES SYNTHÉTIQUES). | ||||
| 87 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_fonds.py` — Figure ch07 — trajectoire du fonds de prévoyance sur 25 ans selon trois cotisations (DONNÉES SYNTHÉTIQUES). | ||||
| 88 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_paires.py` — Figure ch07 — ventes appariées : prix sans et avec servitude de passage pour 12 paires (DONNÉES SYNTHÉTIQUES, | ||||
| 89 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch07\_sensibilite.py` — Figure ch07 — sensibilité de la cotisation de seuil A* à l'inflation des coûts et au rendement du fonds (DONNÉ | ||||
| 90 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_carte\_zones.py` — Figure ch08 — carte synthétique des zones de « Val-Fictif » (DONNÉES SYNTHÉTIQUES) : 400 lots, cinq zones, | ||||
| 91 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_option\_sensibilite.py` — Figure ch08 — sensibilité des effets de valeur du zonage (DONNÉES SYNTHÉTIQUES / hypothèses déclarées) : | ||||
| 92 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch08\_rezonage\_paires.py` — Figure ch08 — effet d'un rezonage mesuré par ventes appariées et par doubles différences (DONNÉES SYNTHÉTIQUES | ||||
| 93 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch09\_ratios.py` — Figures du chapitre 9 (DONNÉES SYNTHÉTIQUES du cas 1, graine 20261031) : | ||||
| 94 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch10\_figures.py` — Chapitre 10 — figures Matplotlib : | ||||
| 95 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_fiche\_etat.py` — Figures ch11 — (1) fiche d'état du sujet du cas 1 : fraction de vie utile consommée a\_eff/L par composante, c | ||||
| 96 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_frise\_pathologies.py` — Figure ch11 — frise INDICATIVE des pathologies et matériaux à risque selon la période de construction (Québec) | ||||
| 97 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch11\_matrice\_age\_effectif.py` — Figure ch11 — matrice état × âge chronologique → âge effectif (convention déclarée de l'ouvrage, chapitre 11). | ||||
| 98 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch12\_figures.py` — Figures du chapitre 12 (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) : | ||||
| 99 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_biais\_datation.py` — Figure ch13 — biais relatif de l'ajustement de conditions du marché lorsqu'une vente est datée à l'acte notari | ||||
| 100 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_indices.py` — Figure ch13 — trois indices souvent confondus, données RÉELLES de data/raw, rebasés T1 2017 = 100 : | ||||
| 101 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_rfu.py` — Figure ch13 — composition de l'évaluation imposable uniformisée 2026 (MAMH, richesse foncière uniformisée, CC | ||||
| 102 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch13\_schl.py` — Figure ch13 — SCHL, Enquête sur les logements locatifs d'octobre 2025 (données RÉELLES, fichier rmr-quebec-202 | ||||
| 103 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch14\_figures.py` — Chapitre 14 — figures (données SYNTHÉTIQUES, graine 20261031). Idempotent. | ||||
| 104 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch15\_figures.py` — Figures du chapitre 15 — Études de marché et segmentation. Produit dans assets/figures/ch15/ : | ||||
| 105 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch17\_figures.py` — Chapitre 17 — figures : cascade d'ajustements (G0404), dispersion des paires, prix bruts vs ajustés, tornade d | ||||
| 106 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch18\_figures.py` — Figures du chapitre 18 — Modèles hédoniques (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 107 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch19\_figures.py` — Figures du chapitre 19 — modèles spatiaux et temporels (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031 | ||||
| 108 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch20\_figures.py` — Chapitre 20 — figures : densités bootstrap et énumération exhaustive ; résidus des candidats et élargissement | ||||
| 109 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_decomposition.py` — Figure ch21 — décomposition du coût neuf du sujet du cas 1 par corps de métier (DONNÉES SYNTHÉTIQUES, graine 2 | ||||
| 110 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_ipcb.py` — Figure ch21 — IPCB Montréal (Statistique Canada, tableau 18-10-0289-01, base 2023 = 100), données RÉELLES lues | ||||
| 111 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch21\_sensibilite.py` — Figure ch21 — sensibilité du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTIQUES) : (a) grille taux d'indirects | ||||
| 112 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch22\_ecarts.py` — Figure ch22 — métré de contrôle du sujet du cas 1 : écart relatif entre la quantité recalculée depuis le plan | ||||
| 113 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch22\_repartition.py` — Figure ch22 — répartition du devis du sujet du cas 1 par corps de métier et par type d'unité de mesure | ||||
| 114 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_ipcb\_divisions.py` — Figure ch23 — IPCB Montréal, maison individuelle, par division de travaux (Statistique Canada 18-10-0289-01), | ||||
| 115 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_ipcb\_types.py` — Figure ch23 — IPCB (Statistique Canada 18-10-0289-01, 2023 = 100), données RÉELLES lues dans data/raw : | ||||
| 116 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_sensibilite.py` — Figure ch23 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1 ; taux documenté Banque du Canada V80691335) : | ||||
| 117 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch23\_structure.py` — Figure ch23 — cascade de formation du coût neuf du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, graine 20261031) : | ||||
| 118 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_composantes.py` — Figure ch24 — composantes de courte durée du sujet du cas 1 : coût neuf et dépréciation ventilée par composant | ||||
| 119 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_courbes.py` — Figure ch24 — courbes de dépréciation du bâtiment en fonction de l'âge (DONNÉES SYNTHÉTIQUES, cas 1, graine 20 | ||||
| 120 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_decomposition.py` — Figure ch24 — décomposition de la valeur par le coût du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, graine 20261031) | ||||
| 121 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch24\_sensibilite.py` — Figure ch24 — sensibilité (DONNÉES SYNTHÉTIQUES, cas 1, graine 20261031) : (a) taux de dépréciation âge-vie mo | ||||
| 122 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch25\_figures.py` — Figures du chapitre 25 — Évaluation du terrain (DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 123 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch26\_figures.py` — Chapitre 26 — figures (4) : loyer contractuel vs loyer de marché par logement (cas 3), distribution de l'ancie | ||||
| 124 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch27\_figures.py` — Chapitre 27 — figures (4) : | ||||
| 125 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch28\_figures.py` — Chapitre 28 — figures (5) : cascade RBP → RNE (cas 3) ; structure des dépenses en \% du RBE (cas 3 vs cas 2) ; | ||||
| 126 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch29\_figures.py` — Chapitre 29 — figures (5) : taux extraits (histogramme), taux vs état/taille (nuage), surface V(RNE, R) (carte | ||||
| 127 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_flux.py` — Ch. 30, figure « flux » : RNE, CAPEX et flux net avant dette (barres) du cas 3 (DONNÉES SYNTHÉTIQUES), puis va | ||||
| 128 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_gdc.py` — Ch. 30, figure « gdc » (DONNÉES RÉELLES, Banque du Canada, API Valet, téléchargées le 2026-10-31) : rendements | ||||
| 129 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_loyers.py` — Ch. 30, figure « loyers » : trajectoire du revenu brut potentiel contractuel (indexé au taux TAL + relocation | ||||
| 130 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_surface.py` — Ch. 30, figure « surface » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) selon le taux d'actualisation r (ligne | ||||
| 131 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch30\_tornade.py` — Ch. 30, figure « tornade » : variation de la valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour un choc bas/haut | ||||
| 132 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_levier.py` — Ch. 31, figure « levier » (DONNÉES SYNTHÉTIQUES, cas 3) : TRI des fonds propres sur dix ans et rendement coura | ||||
| 133 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_service\_dette.py` — Ch. 31, figure « service-dette » (DONNÉES SYNTHÉTIQUES, cas 3) : service de la dette annuel du prêt de 1 475 9 | ||||
| 134 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_solde.py` — Ch. 31, figure « solde » (DONNÉES SYNTHÉTIQUES, cas 3) : trajectoire du solde du prêt de 1 475 959 \$ à 4,12 \ | ||||
| 135 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch31\_taux\_bdc.py` — Ch. 31, figure « taux-bdc » (DONNÉES RÉELLES, Banque du Canada, API Valet, téléchargées le 2026-10-31) : taux | ||||
| 136 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch32\_figures.py` — Figures du chapitre 32 — Duplex à quintuplex (données SYNTHÉTIQUES du cas 2, sauf la figure des médianes APCIQ | ||||
| 137 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch33\_figures.py` — Chapitre 33 — figures (4) : (1) SCHL, île de Montréal, loyers et inoccupation par taille d'immeuble et par ann | ||||
| 138 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_calcul\_tal.py` — Ch. 34, figure « exemple de calcul TAL » : composantes de l'augmentation mensuelle du logement 103 du cas 3 (D | ||||
| 139 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_ipc\_base.py` — Ch. 34, figure « IPC et pourcentage de base » (DONNÉES RÉELLES : Statistique Canada, tableau 18-10-0004-01, IP | ||||
| 140 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_rotation.py` — Ch. 34, figure « rotation espérée » : (gauche) rapport espéré loyer contractuel / loyer de marché d'un logemen | ||||
| 141 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_trajectoires.py` — Ch. 34, figure « trajectoires RBP » : revenu brut potentiel contractuel du cas 3 (DONNÉES SYNTHÉTIQUES) selon | ||||
| 142 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch34\_valeur\_scenarios.py` — Ch. 34, figure « valeur par scénario » : valeur DCF du cas 3 (DONNÉES SYNTHÉTIQUES) pour la grille rotation (5 | ||||
| 143 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch35\_figures.py` — Figures du chapitre 35 — Indices immobiliers et ventes répétées. | ||||
| 144 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch36\_figures.py` — Figures du chapitre 36 — données de panel et identification causale (cas 4, DONNÉES SYNTHÉTIQUES, graine 20261 | ||||
| 145 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch37\_figures.py` — Figures du chapitre 37 — Apprentissage automatique et explicabilité (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, gr | ||||
| 146 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch38\_figures.py` — Figures du chapitre 38 — SIG et risques géospatiaux (cas 1 Gatineau et cas 4 portefeuille, DONNÉES SYNTHÉTIQUE | ||||
| 147 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch39\_figures.py` — Figures du chapitre 39 — Modèles bayésiens et intervalles (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261 | ||||
| 148 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch40\_figures.py` — Chapitre 40 — figures (DONNÉES SYNTHÉTIQUES : cas 3 et cas 4, graine 20261031). | ||||
| 149 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch41\_figures.py` — Figures du chapitre 41 (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypothèses déclarées dans ch41\_phmu.p | ||||
| 150 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_bloc\_piece.py` — Figure ch42 — valeur de conversion (somme des fractions nette des coûts, des frais, du portage et des délais) | ||||
| 151 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_cotisation\_speciale.py` — Figure ch42 — charges annuelles normalisées des huit fractions (ch. 7) et part de chacune dans une cotisation | ||||
| 152 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_grille.py` — Figure ch42 — grille de comparaison de la fraction F4 : prix observé, prix ajusté et décomposition des ajustem | ||||
| 153 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch42\_medianes.py` — Figure ch42 — prix médians Centris des copropriétés et des unifamiliales par territoire, T3 2026 (DONNÉES RÉEL | ||||
| 154 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_carte\_cas4.py` — Figure ch43 — carte schématique des 48 immeubles du cas 4 (DONNÉES SYNTHÉTIQUES, coordonnées fictives autour d | ||||
| 155 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_carte\_riverain.py` — Figure ch43 — municipalité fictive de Rivière-Fictive (DONNÉES SYNTHÉTIQUES) : 625 lots, classes d'exposition | ||||
| 156 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_did\_cas4.py` — Figure ch43 — doubles différences sur les séries de RNE du cas 4 avec choc d'inondation injecté en 2019 (DONNÉ | ||||
| 157 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_effets\_methodes.py` — Figure ch43 — décote d'une zone inondable mesurée par quatre méthodes sur les ventes de Rivière-Fictive (DONNÉ | ||||
| 158 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch43\_placebos.py` — Figure ch43 — inférence de randomisation exacte pour le DiD du cas 4 (DONNÉES SYNTHÉTIQUES) : distribution des | ||||
| 159 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_capitalisation.py` — Figure ch44 — (a) quatre lectures de ce que la thermopompe « vaut » pour le sujet du cas 1 : coût installé, co | ||||
| 160 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_flux.py` — Figure ch44 — flux annuels des deux mesures énergétiques du sujet du cas 1 (DONNÉES SYNTHÉTIQUES, hypothèses d | ||||
| 161 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_heatmap\_van.py` — Figure ch44 — VAN des deux mesures selon le taux d'actualisation et la croissance du prix de l'électricité | ||||
| 162 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch44\_prime\_verte.py` — Figure ch44 — la « prime verte » dans la littérature : fourchettes publiées par étude (valeurs vérifiées, voir | ||||
| 163 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch45\_figures.py` — Chapitre 45 — figures du dossier (cas 1, DONNÉES SYNTHÉTIQUES) : carte des comparables, cascade des ajustement | ||||
| 164 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch46\_figures.py` — Chapitre 46 — figures du dossier « triplex à Québec » (DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 165 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch47\_dossier\_figures.py` — Chapitre 47 — figures du dossier « 12 logements à Montréal » (DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 166 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}ch48\_portefeuille\_figures.py` — Chapitre 48 — figures du dossier « portefeuille multirésidentiel interrégional » (DONNÉES SYNTHÉTIQUES, graine | ||||
| 167 | +- figure `analysis/\allowbreak{}python/\allowbreak{}figures/\allowbreak{}run\_all.py` — Exécute tous les scripts de figures (analysis/python/figures/chNN\_*.py) et les scripts R (analysis/r/chNN\_*. | ||||
| 168 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}conftest.py` — | ||||
| 169 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cas1.py` — | ||||
| 170 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cas2\_cas4.py` — | ||||
| 171 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cas3.py` — | ||||
| 172 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch01.py` — Chapitre 1 — vérification des identités et des chiffres cités dans le texte et les solutions (données synthéti | ||||
| 173 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch02.py` — Chapitre 2 — Droits immobiliers et bases de valeur : identités (additivité, Gordon, annuité) et valeurs citées | ||||
| 174 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch03.py` — Tests du chapitre 3 — Offre, demande et cycles. | ||||
| 175 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch04.py` — Tests du chapitre 4 — marchés résidentiels québécois : lecture des données réelles (Recensement 2021, 17-10-01 | ||||
| 176 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch05.py` — Tests du chapitre 5 — modèle monocentrique simulé, gradient prix/distance du cas 1, décomposition du cas 4, | ||||
| 177 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch06.py` — Tests du chapitre 6 — démembrements et modalités du droit de propriété (DONNÉES SYNTHÉTIQUES, hypothèses décla | ||||
| 178 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch07.py` — Tests du chapitre 7 — servitude par ventes appariées, quotes-parts et charges de copropriété, fonds de prévoya | ||||
| 179 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch08.py` — Tests du chapitre 8 — zonage et urbanisme (DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 180 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch09.py` — Tests du chapitre 9 — étude de ratios (COD, PRD, PRB, proportion médiane, facteur comparatif), dossiers de con | ||||
| 181 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch10.py` — Chapitre 10 — vérification des chiffres cités dans le texte, les tableaux et les solutions. | ||||
| 182 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch11.py` — Tests du chapitre 11 — inspection synthétique du sujet du cas 1, convention d'âge effectif, dépréciation venti | ||||
| 183 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch12.py` — Tests du chapitre 12 — mesurage, superficies, propagation d'erreur (cas 1, données synthétiques). | ||||
| 184 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch13.py` — Tests du chapitre 13 — lecture des fichiers RÉELS de data/raw (StatCan 18-10-0289-01, 18-10-0205-01, 18-10-000 | ||||
| 185 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch14.py` — Chapitre 14 — Nettoyage, géocodage et qualité des données : reproductibilité du jeu brut, identités des diagno | ||||
| 186 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch15.py` — Chapitre 15 — Études de marché et segmentation : vérification des identités et des chiffres cités dans le text | ||||
| 187 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch16.py` — Chapitre 16 — vérification des chiffres cités dans le texte et les solutions. | ||||
| 188 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch17.py` — Chapitre 17 — vérification des identités et des chiffres cités dans le texte et les solutions (tolérances décl | ||||
| 189 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch18.py` — Chapitre 18 — Modèles hédoniques : vérification des chiffres cités dans le texte, les tableaux et les solution | ||||
| 190 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch19.py` — Chapitre 19 — tests des fonctions spatiales ajoutées à traite.hedonique et des chiffres cités dans le texte et | ||||
| 191 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch20.py` — Chapitre 20 — réconciliation et incertitude : identités, chiffres cités dans le texte et dans les solutions (t | ||||
| 192 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch21.py` — Tests du chapitre 21 — coût neuf du sujet du cas 1, IPCB Montréal, sensibilité et exercices. | ||||
| 193 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch22.py` — Tests du chapitre 22 — métré et quantités du sujet du cas 1. | ||||
| 194 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch23.py` — Tests du chapitre 23 — coûts directs et indirects : structure du devis du cas 1, financement intérimaire (trai | ||||
| 195 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch24.py` — Tests du chapitre 24 — dépréciation et désuétudes du sujet du cas 1, extraction de marché, profils et exercice | ||||
| 196 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch25.py` — Tests du chapitre 25 — Évaluation du terrain : jeu synthétique de terrains (graine 20261031), modèle hédonique | ||||
| 197 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch26.py` — Tests du chapitre 26 — baux et loyers (cas 3 et cas 2, données synthétiques). | ||||
| 198 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch27.py` — Tests du chapitre 27 — revenus potentiels, vacance et pertes (cas 3 et cas 2, données synthétiques ; tableaux | ||||
| 199 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch28.py` — Tests du chapitre 28 — dépenses, réserves, CAPEX et RNE (cas 3 et cas 2, données synthétiques). | ||||
| 200 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch29.py` — Tests du chapitre 29 — capitalisation directe (cas 3, données synthétiques). | ||||
| 201 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch30.py` — Tests du chapitre 30 — flux actualisés et valeur terminale (cas 3, données synthétiques). | ||||
| 202 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch31.py` — Tests du chapitre 31 — financement, levier, RCD et RPV (cas 3, données synthétiques ; repères BdC réels). | ||||
| 203 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch32.py` — Tests du chapitre 32 — Duplex à quintuplex : identités, cohérence avec traite.cas2 (partagé avec les ch. 26, 2 | ||||
| 204 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch33.py` — Tests du chapitre 33 (immeubles de six logements et plus) : identités, cohérence avec traite.cas3/cas4 et le c | ||||
| 205 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch34.py` — Tests du chapitre 34 — TAL, encadrement locatif et scénarios (cas 3, données synthétiques ; IPC Québec réel). | ||||
| 206 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch35.py` — Chapitre 35 — Indices immobiliers et ventes répétées : identités et valeurs citées dans le texte, les tableaux | ||||
| 207 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch36.py` — Chapitre 36 — tests des fonctions de traite.panel (récupération d'effets connus sur données simulées) et des c | ||||
| 208 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch37.py` — Chapitre 37 — Apprentissage automatique et explicabilité : reproductibilité et bornes de performance des chiff | ||||
| 209 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch38.py` — Chapitre 38 — tests des fonctions de traite.geo et des chiffres cités dans manuscript/chapters/ch38.tex et sol | ||||
| 210 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch39.py` — Chapitre 39 — Modèles bayésiens et intervalles : vérification des identités, des diagnostics et des chiffres c | ||||
| 211 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch40.py` — Tests du chapitre 40 (Monte-Carlo et stress tests — données synthétiques, cas 3 et cas 4) : égalité stricte av | ||||
| 212 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch41.py` — Tests du chapitre 41 — PHMU, terrains et développement (DONNÉES SYNTHÉTIQUES du cas 1 ; zonage FICTIF ; hypoth | ||||
| 213 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch42.py` — Tests du chapitre 42 — fraction de copropriété (grille, réconciliation), cotisation spéciale, copropriété loca | ||||
| 214 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch43.py` — Tests du chapitre 43 — risques environnementaux et sinistres (DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 215 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch44.py` — Tests du chapitre 44 — rénovation et efficacité énergétique (sujet du cas 1, DONNÉES SYNTHÉTIQUES). | ||||
| 216 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch45.py` — Tests du chapitre 45 (cas 1, maison unifamiliale à Gatineau — DONNÉES SYNTHÉTIQUES) : le dossier ne doit repre | ||||
| 217 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch46.py` — Tests du chapitre 46 — Cas 2 : triplex à Québec (dossier complet, données SYNTHÉTIQUES). | ||||
| 218 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch47.py` — Tests du chapitre 47 (cas 3, 12 logements à Montréal — données synthétiques) : identités, valeurs citées dans | ||||
| 219 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_ch48.py` — Tests du chapitre 48 (cas 4, portefeuille interrégional — données synthétiques) : identités du sommaire, cohér | ||||
| 220 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_comparables.py` — | ||||
| 221 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_cout.py` — | ||||
| 222 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_finance.py` — | ||||
| 223 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_hedonique.py` — | ||||
| 224 | +- test `analysis/\allowbreak{}python/\allowbreak{}tests/\allowbreak{}test\_synth.py` — | ||||
| 225 | +- outil `tools/\allowbreak{}check\_manuscript.py` — Vérifications du manuscrit : stubs restants, figures manquantes, scripts des figures, | ||||
| 226 | +- outil `tools/\allowbreak{}inventaire.py` — Inventaire des scripts, tests, données, figures et classeurs → manuscript/appendices/\_inventaire.tex (longtab | ||||
| 227 | +- outil `tools/\allowbreak{}make\_labels.py` — Écrit un fichier d'étiquettes (newlabel) pour tous les chapitres et annexes, afin que cref\{ch:NN\} / cref\{ap | ||||
| 228 | +- outil `tools/\allowbreak{}make\_release.py` — Assemble release/ : PDF, sources LaTeX, données, figures, scripts, classeurs, corrigés, rapport de validation. | ||||
| 229 | +- outil `tools/\allowbreak{}merge\_sources.py` — Fusionne sources/registry-*.csv → sources/registry.csv, sources/normes-*.csv → sources/normes-matrice.csv, | ||||
| 230 | +- outil `tools/\allowbreak{}compile\_chapter.sh` — !/usr/bin/env bash | ||||
| 231 | +- outil `tools/\allowbreak{}valider\_chapitre.sh` — !/usr/bin/env bash | ||||
| \ No newline at end of file | |||||
| 231 | 232 | ||||