Ch. 41 livré et validé (compilation isolée, tests, fusion des registres)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
61 changed files +1,375 −216
modified
analysis/python/cases/ch45_dossier.py
+2 −4
@@ -81,15 +81,13 @@ def heritage() -> dict: | ||
| 81 | 81 | sel = t["selection"]; m = t["modele"]; s = t["sujet"] |
| 82 | 82 | b17 = c17.base(); rec17 = c17.reconcilier(b17) # ch. 17 : poids inverse du brut, valeur pondérée |
| 83 | 83 | pred18 = c18.prediction_sujet(m, s) # ch. 18 : prédiction, Duan, intervalles 95 et 80 %, prédiction au 2024-07-01 |
| 84 | − ic_val = c20.exercices # (référence) l'IC de la valeur est calculé ci-dessous comme au ch. 20 | |
| 85 | − xVx = pred18["xVx"]; lnp = pred18["ln_pred"]; duan = pred18["facteur_duan"] | |
| 86 | − ic95 = (math.exp(lnp - 1.959964 * math.sqrt(xVx)) * duan, math.exp(lnp + 1.959964 * math.sqrt(xVx)) * duan) | |
| 87 | 84 | r20 = c20.tout() # ch. 20 : bootstrap, coût (ch. 24 importé), combinaison, vérité |
| 85 | + ic95 = (float(r20["exercices"]["ex2"]["ic_bas"]), float(r20["exercices"]["ex2"]["ic_haut"])) # IC 95 % de la valeur (ch. 20, eq. 20.6) | |
| 88 | 86 | r24 = r20["cout"]["r24"] # ch. 24 complet (main() déjà exécuté silencieusement par le ch. 20) |
| 89 | 87 | devis, sujet, cn = c11.charger() # ch. 21 (coût neuf) et ch. 11 (fiche) |
| 90 | 88 | fiche = c11.fiche(devis, cn); trav = c11.travaux(devis, cn); dv = c11.depreciation(fiche, trav, cn) |
| 91 | 89 | sup12 = c12.superficies() # ch. 12 |
| 92 | − g21 = c21.regrouper(devis); sup21 = c21.superficies(sujet, devis) | |
| 90 | + devis21, _ = c21.charger(); g21 = c21.regrouper(devis21); sup21 = c21.superficies(sujet, devis21) | |
| 93 | 91 | d09 = c09.charger(); et09 = c09.etude(d09); ds09 = c09.dossier_sujet(d09, et09) # ch. 9 |
| 94 | 92 | comp25 = _silencieux(c25.comparaison) # ch. 25 : comparaison directe des terrains |
| 95 | 93 | extr25 = _silencieux(c25.extraction_recente_ch24, t) |
modified
analysis/python/cases/ch46_dossier.py
+19 −5
@@ -289,21 +289,35 @@ def exercices(D: dict | None = None) -> dict: | ||
| 289 | 289 | # 1. taxes : compte déclaré vs recalcul 2026, effet sur le RNE et sur la capitalisation au taux ajusté |
| 290 | 290 | t = b["taxes"]; ex["1"] = {"municipale_2026": t["municipale"], "scolaire_2026": t["scolaire"], "declare": 5900 + 470, "ecart": b["ecart_taxes"], "rne_declare": b["rne_declare"], "rne_2026": b["rne"], |
| 291 | 291 | "v_cap_declare": fin.capitalisation_directe(b["rne_declare"], D["revenu"]["taux_ajuste"]), "v_cap_2026": D["revenu"]["v_cap_ajuste"]} |
| 292 | − # 2. avis de reprise : calendrier et VA de l'écart | |
| 293 | − ex["2"] = D["reprise"] | |
| 292 | + # 2. avis de reprise : calendrier et VA de l'écart selon la rotation | |
| 293 | + ex["2"] = {**D["reprise"], "va_rotation_9_4": va_ecart_rc(D["loyers"], rotation=0.094)["va_rotation"], "va_rotation_20": va_ecart_rc(D["loyers"], rotation=0.20)["va_rotation"], | |
| 294 | + "prise_possession_si_acte_2027_01_15": "2028-07-01"} | |
| 294 | 295 | # 3. grille : refaire la cascade de Q0243 et vérifier brut/net |
| 295 | 296 | tab = D["grille"]["tableau"]; q = tab[tab["id_vente"] == "Q0243"].iloc[0].to_dict(); ex["3"] = q |
| 296 | 297 | # 4. capitalisation : taux médian, Q1, Q3, ajusté, comparables |
| 297 | 298 | ex["4"] = {k: D["revenu"][k] for k in ("taux_median_127", "taux_q1", "taux_q3", "taux_ajuste", "taux_comp", "v_cap_median", "v_cap_q1", "v_cap_q3", "v_cap_ajuste", "v_cap_comp")} |
| 299 | + d_med = float(D["comparables127"]["ratio_depenses"].median()); rne_ratio = b["rbe"] * (1 - d_med) | |
| 300 | + ex["4"].update({"ratio_median_ventes": d_med, "rne_ratio_ventes": rne_ratio, "v_cap_ratio_ventes": fin.capitalisation_directe(rne_ratio, D["revenu"]["taux_ajuste"]), | |
| 301 | + "taux_implicite_ratio_ventes": rne_ratio / D["grille"]["valeur"], "ecart_pb_restant": (D["revenu"]["taux_ajuste"] - rne_ratio / D["grille"]["valeur"]) * 1e4}) | |
| 298 | 302 | # 5. financement : prix final, mise de fonds, paiement, TAM, coût net ; variante 2e étage |
| 299 | 303 | f = D["financement"]; occ2 = C.cout_occupation({k: f[k] for k in ("mise_de_fonds", "service_dette", "capital_rembourse_5ans")}, b, D["loyers"], "2e") |
| 300 | 304 | ex["5"] = {"prix": f["prix"], "mise": f["mise_de_fonds"], "pret": f["pret"], "paiement": f["paiement_mensuel"], "tam": f["taux_admissible"], "paiement_tam": f["paiement_mensuel_tam"], |
| 301 | 305 | "cout_net_rc": f["occupation"]["cout_net_mensuel"], "hors_capital_rc": f["occupation"]["cout_net_mensuel_hors_capital"], "cout_net_2e": occ2["cout_net_mensuel"], "hors_capital_2e": occ2["cout_net_mensuel_hors_capital"], |
| 302 | 306 | "droits_mutation": f["mutation"]["droits"], "liquidites": f["liquidites"]} |
| 303 | − # 6. pondérations alternatives | |
| 304 | − ex["6"] = rec["alternatives"] | |
| 307 | + # 5 bis : au prix de la promesse d'achat (895 000 $) | |
| 308 | + fp = financement(895_000.0, b, D["loyers"], s); occ2p = C.cout_occupation({k: fp[k] for k in ("mise_de_fonds", "service_dette", "capital_rembourse_5ans")}, b, D["loyers"], "2e") | |
| 309 | + ex["5"]["promesse"] = {"prix": fp["prix"], "mise": fp["mise_de_fonds"], "pret": fp["pret"], "rpv": fp["rpv"], "paiement": fp["paiement_mensuel"], "service_dette": fp["service_dette"], "paiement_tam": fp["paiement_mensuel_tam"], | |
| 310 | + "droits_mutation": fp["mutation"]["droits"], "liquidites": fp["liquidites"], "capital_moyen_5ans": fp["capital_rembourse_5ans"] / 5, "cout_opportunite": fp["occupation"]["cout_opportunite"], | |
| 311 | + "cout_net_rc": fp["occupation"]["cout_net_mensuel"], "hors_capital_rc": fp["occupation"]["cout_net_mensuel_hors_capital"], "cout_net_2e": occ2p["cout_net_mensuel"], "hors_capital_2e": occ2p["cout_net_mensuel_hors_capital"]} | |
| 312 | + # 6. pondérations alternatives + pondération à l'inverse de la variance | |
| 313 | + ret = rec["retenues"]; sig = {"par_logement_ajuste": rec["se_comparaison"], "mrb": 0.10 * ret["mrb"], "capitalisation": 0.15 * ret["capitalisation"]} | |
| 314 | + w = {k: 1 / sig[k] ** 2 for k in ret}; tot = sum(w.values()); w = {k: v / tot for k, v in w.items()} | |
| 315 | + ex["6"] = {**rec["alternatives"], "poids_inverse_variance": w, "valeur_inverse_variance": sum(w[k] * ret[k] for k in ret), "sigmas": sig} | |
| 305 | 316 | # 7. coût : sensibilité et dépréciation extraite |
| 306 | − ex["7"] = {"cout": D["cout"], "extraite": D["depreciation_extraite"]} | |
| 317 | + co = D["cout"]; v_final = rec["valeur_finale"] | |
| 318 | + terrain_egal = v_final - co["contribution_batiment"]; dep_egal = 1 - (v_final - co["terrain"]) / co["cout_neuf"] | |
| 319 | + ex["7"] = {"cout": co, "extraite_900": D["depreciation_extraite"], "terrain_pour_egaler": terrain_egal, "terrain_m2_pour_egaler": terrain_egal / s["superficie_terrain_m2"], | |
| 320 | + "taux_dep_pour_egaler": dep_egal, "extraite_1100": cout.extraction_depreciation_marche(v_final, 1100.0 * s["superficie_terrain_m2"], co["cout_neuf"], s["age"])} | |
| 307 | 321 | return ex |
| 308 | 322 | |
| 309 | 323 | |
modified
analysis/python/cases/ch48_portefeuille.py
+6 −6
@@ -372,22 +372,22 @@ def exercices(D: dict) -> dict: | ||
| 372 | 372 | # ex4 : ratios IAAO sur le sous-ensemble montréalais |
| 373 | 373 | t = D["predites"]; m = t[t["rmr"] == "Montréal"] |
| 374 | 374 | out["ex4"] = {**h.statistiques_ratio(m["valeur_predite"].values, m["valeur_2026"].values), "portefeuille": D["iaao"]["portefeuille"]} |
| 375 | − # ex5 : choc de taux généralisé — ρ_taux global 0,90 / régional 0,95 | |
| 375 | + # ex6 : choc de taux généralisé — ρ_taux global 0,90 / régional 0,95 | |
| 376 | 376 | mc5 = simuler_portefeuille(pf, dyn, reg, n=mc["n"], graine=GRAINE, rho_taux={"global": 0.90, "regional": 0.95}) |
| 377 | − out["ex5"] = {"q05": mc5["stats"]["q05"], "q95": mc5["stats"]["q95"], "cv": mc5["stats"]["cv"], "var95": mc5["var95_portefeuille"], "ratio_div": mc5["ratio_diversification"], | |
| 377 | + out["ex6"] = {"q05": mc5["stats"]["q05"], "q95": mc5["stats"]["q95"], "cv": mc5["stats"]["cv"], "var95": mc5["var95_portefeuille"], "ratio_div": mc5["ratio_diversification"], | |
| 378 | 378 | "p_rpv_sup_0.75": mc5["probabilites"]["rpv_sup_0.75"], "base_var95": mc["var95_portefeuille"], "base_ratio_div": mc["ratio_diversification"], "base_cv": mc["stats"]["cv"]} |
| 379 | − # ex6 : cession des 3 immeubles en zone inondable | |
| 379 | + # ex7 : cession des 3 immeubles en zone inondable | |
| 380 | 380 | inond = pf[pf["zone_inondable"] == 1]; reste = pf[pf["zone_inondable"] == 0] |
| 381 | 381 | mc6 = simuler_portefeuille(reste.reset_index(drop=True), dyn, reg, n=mc["n"], graine=GRAINE) |
| 382 | 382 | d6 = dette(reste) |
| 383 | − out["ex6"] = {"ids": inond["id_immeuble"].tolist(), "valeur_cedee": float(inond["valeur_2026"].sum()), "dette_remboursee": float(inond["dette"].sum()), "produit_net": float(inond["valeur_2026"].sum() * 0.98 - inond["dette"].sum()), | |
| 383 | + out["ex7"] = {"ids": inond["id_immeuble"].tolist(), "valeur_cedee": float(inond["valeur_2026"].sum()), "dette_remboursee": float(inond["dette"].sum()), "produit_net": float(inond["valeur_2026"].sum() * 0.98 - inond["dette"].sum()), | |
| 384 | 384 | "rne_perdu": float(inond["rne_2026"].sum()), "taux_pondere_cede": float(inond["rne_2026"].sum() / inond["valeur_2026"].sum()), |
| 385 | 385 | "apres_valeur": float(reste["valeur_2026"].sum()), "apres_taux_pondere": float(reste["rne_2026"].sum() / reste["valeur_2026"].sum()), "apres_rpv": float(reste["dette"].sum() / reste["valeur_2026"].sum()), |
| 386 | 386 | "apres_rcd": d6["total"]["rcd_agrege"], "avant_rcd": det["total"]["rcd_agrege"], "apres_cv": mc6["stats"]["cv"], "avant_cv": mc["stats"]["cv"], "apres_var95": mc6["var95_portefeuille"], "avant_var95": mc["var95_portefeuille"], |
| 387 | 387 | "apres_ratio_div": mc6["ratio_diversification"], "avant_ratio_div": mc["ratio_diversification"]} |
| 388 | − # ex7 : croissance de P36 (72 log., Québec, inondable) vs agrégat de Québec ; choc pandémique | |
| 388 | + # ex5 : croissance de P36 (72 log., Québec, inondable) vs agrégat de Québec ; choc pandémique | |
| 389 | 389 | cr = dyn["par_immeuble"].set_index("id_immeuble").loc["P36"] |
| 390 | − out["ex7"] = {"croissance_P36": float(cr["croissance_annuelle"]), "volatilite_P36": float(cr["volatilite"]), "croissance_quebec": float(dyn["par_rmr"].loc["Québec", "croissance_agregee"]), | |
| 390 | + out["ex5"] = {"croissance_P36": float(cr["croissance_annuelle"]), "volatilite_P36": float(cr["volatilite"]), "croissance_quebec": float(dyn["par_rmr"].loc["Québec", "croissance_agregee"]), | |
| 391 | 391 | "pandemie_quebec": dyn["pandemie"]["Québec"], "pandemie_portefeuille": dyn["pandemie"]["Portefeuille"], "rendement_total_P36": float(pf.set_index("id_immeuble").loc["P36", "taux_global"]) + float(cr["croissance_annuelle"])} |
| 392 | 392 | return out |
| 393 | 393 | |
modified
analysis/python/figures/ch37_figures.py
+14 −13
@@ -27,13 +27,15 @@ def _k(x, pos=None): return f"{x/1000:,.0f}".replace(",", " ") | ||
| 27 | 27 | def fig_arbre(res): |
| 28 | 28 | from sklearn.tree import plot_tree |
| 29 | 29 | arbre = res["ajustes"]["Arbre (profondeur 3)"] |
| 30 | − noms = [c37.ETIQUETTES[c].replace(" (m²)", " (m²)") for c in res["Xm"].columns] | |
| 31 | − fig, ax = plt.subplots(figsize=(LARGEUR, 3.6)) | |
| 32 | − plot_tree(arbre, feature_names=noms, filled=False, impurity=False, rounded=True, fontsize=6, ax=ax, precision=3) | |
| 30 | + COURTS = {"superficie": "Superficie (m²)", "terrain": "Terrain (m²)", "age": "Âge", "qualite": "Qualité", "garage": "Garage", "sous_sol": "Sous-sol", "piscine": "Piscine", | |
| 31 | + "etages": "À étages", "dist_centre": "Dist. centre (km)", "lat": "Latitude", "lon": "Longitude", "mois": "Mois"} | |
| 32 | + noms = [COURTS.get(c, c.replace("sect_", "Secteur ")) for c in res["Xm"].columns] | |
| 33 | + fig, ax = plt.subplots(figsize=(LARGEUR, 3.4)) | |
| 34 | + plot_tree(arbre, feature_names=noms, filled=False, impurity=False, rounded=True, fontsize=6, ax=ax, precision=1) | |
| 33 | 35 | for t in ax.texts: |
| 34 | 36 | s = t.get_text() |
| 35 | 37 | s = re.sub(r"samples = (\d+)", lambda m: f"n = {m.group(1)}", s) |
| 36 | − s = re.sub(r"value = (-?\d+\.\d+)", lambda m: f"ln P = {float(m.group(1)):.3f}\n≈ {math.exp(float(m.group(1)))/1000:,.0f} k$".replace(",", " "), s) | |
| 38 | + s = re.sub(r"value = (-?\d+\.\d+)", lambda m: f"≈ {math.exp(float(m.group(1)))/1000:,.0f} k$".replace(",", " "), s) | |
| 37 | 39 | s = s.replace(" <= ", " ≤ ") |
| 38 | 40 | t.set_text(s); t.set_color(palette.ink) |
| 39 | 41 | bb = t.get_bbox_patch() |
@@ -50,7 +52,7 @@ def fig_apprentissage(res): | ||
| 50 | 52 | ax.plot(it, cc["entrainement"], color=palette.cat[i], lw=1.0, ls="--", alpha=0.85) |
| 51 | 53 | ax.plot([cc["optimum"]], [cc["rmse_min"]], marker="o", ms=4, color=palette.cat[i]) |
| 52 | 54 | ax.axhline(ref, color=palette.ink2, lw=0.9, ls=":") |
| 53 | − ax.text(1180, ref + 0.002, f"hédonique de référence (validation croisée) : {ref:.4f}", ha="right", va="bottom", fontsize=7.5, color=palette.ink2) | |
| 55 | + ax.text(30, ref - 0.004, f"hédonique de référence (validation croisée) : {ref:.4f}".replace(".", ","), ha="left", va="top", fontsize=7.5, color=palette.ink2) | |
| 54 | 56 | ax.plot([], [], color=palette.ink2, lw=1.0, ls="--", label="erreur d'entraînement (tiretés)") |
| 55 | 57 | ax.set_xlabel("Nombre d'arbres (itérations du boosting, ν = 0,03)"); ax.set_ylabel("Racine de l'erreur quadratique moyenne (log du prix)") |
| 56 | 58 | ax.set_ylim(0.0, 0.20); ax.set_xlim(0, 1200); ax.legend(loc="upper right", ncol=1) |
@@ -58,7 +60,7 @@ def fig_apprentissage(res): | ||
| 58 | 60 | |
| 59 | 61 | def fig_erreurs(res): |
| 60 | 62 | comp = res["comparaison"]; y = res["y"]; noms = list(c37.MODELES) |
| 61 | − fig, axes = plt.subplots(1, 3, figsize=(LARGEUR, 3.0), sharey=True) | |
| 63 | + fig, axes = plt.subplots(1, 3, figsize=(LARGEUR, 3.3), sharey=True) | |
| 62 | 64 | titres = {"aleatoire": "Plis aléatoires (10)", "spatial": "Blocs spatiaux par secteur (10)", "temporel": "Prospectif : ventes de 2026"} |
| 63 | 65 | for ax, sch in zip(axes, ["aleatoire", "spatial", "temporel"]): |
| 64 | 66 | data = [] |
@@ -68,10 +70,9 @@ def fig_erreurs(res): | ||
| 68 | 70 | medianprops=dict(color=palette.ink, lw=1.2), whiskerprops=dict(color=palette.ink2, lw=0.8), capprops=dict(color=palette.ink2, lw=0.8)) |
| 69 | 71 | for patch, nom in zip(bp["boxes"], noms): patch.set_facecolor(COUL[nom]); patch.set_alpha(0.55); patch.set_edgecolor(palette.ink2) |
| 70 | 72 | ax.axhline(0, color=palette.ink2, lw=0.8, ls=":") |
| 71 | − ax.set_xticks(range(1, len(noms) + 1)); ax.set_xticklabels([COURT[n] for n in noms], rotation=35, ha="right") | |
| 73 | + ax.set_xticks(range(1, len(noms) + 1)) | |
| 74 | + ax.set_xticklabels([f"{COURT[n]}\nCOD {comp['metriques'][n][sch]['COD']:.1f}".replace(".", ",") for n in noms], rotation=45, ha="right", fontsize=7) | |
| 72 | 75 | ax.set_title(titres[sch], fontsize=8.5) |
| 73 | − for i, nom in enumerate(noms): | |
| 74 | − mm = comp["metriques"][nom][sch]; ax.text(i + 1, 43, f"COD\n{mm['COD']:.1f}".replace(".", ","), ha="center", va="top", fontsize=6.8, color=palette.ink) | |
| 75 | 76 | axes[0].set_ylabel("Erreur de prédiction hors échantillon (%)"); axes[0].set_ylim(-45, 45) |
| 76 | 77 | savefig(fig, "ch37/ch37-fig-erreurs.pdf") |
| 77 | 78 | |
@@ -119,14 +120,14 @@ def fig_pdp(res): | ||
| 119 | 120 | pdp = res["pdp"]; v = res["ventes"] |
| 120 | 121 | fig, axes = plt.subplots(1, 3, figsize=(LARGEUR, 2.9)) |
| 121 | 122 | series = [("vraie", "loi de génération", palette.ink, ":"), ("Hédonique (référence)", "hédonique", palette.cat[0], "-"), ("Forêt aléatoire", "forêt aléatoire", palette.cat[1], "-"), ("Gradient boosting", "boosting", palette.cat[2], "-")] |
| 122 | − for ax, (cle, var, xlab) in zip(axes, [("superficie", "superficie_habitable_m2", "Superficie habitable (m²)"), ("age", "age", "Âge (années)"), ("age_scenario", "age", "Âge (années), scénario non linéaire")]): | |
| 123 | + for ax, (cle, var, xlab) in zip(axes, [("superficie", "superficie_habitable_m2", "Superficie habitable (m²)"), ("age", "age", "Âge (années)"), ("age_scenario", "age", "Âge (années), scénario")]): | |
| 123 | 124 | d = pdp[cle]; g = d["grille"] |
| 124 | 125 | for k, lab, col, ls in series: |
| 125 | 126 | if k in d: ax.plot(g, _centrer(d[k]) * 100, color=col, ls=ls, lw=1.7 if k == "vraie" else 1.4, label=lab) |
| 126 | 127 | q = np.percentile(v[var], np.arange(5, 100, 5)); ax.plot(q, np.full_like(q, ax.get_ylim()[0] if False else -38), "|", color=palette.ink2, ms=5, alpha=0.8) |
| 127 | 128 | ax.set_xlabel(xlab); ax.set_ylim(-42, 42) |
| 128 | 129 | axes[0].set_ylabel("Dépendance partielle, écart au niveau moyen (%)"); axes[0].legend(loc="upper left", fontsize=7) |
| 129 | − axes[2].text(0.97, 0.04, "prime +12 % (qualité ≥ 4, âge ≥ 40)\n« mur » −10 % (25 à 45 ans)", transform=axes[2].transAxes, ha="right", va="bottom", fontsize=6.8, color=palette.ink2) | |
| 130 | + axes[2].text(0.97, 0.97, "prime +12 % (qualité ≥ 4, âge ≥ 40)\n« mur » −10 % (25 à 45 ans)", transform=axes[2].transAxes, ha="right", va="top", fontsize=6.8, color=palette.ink2) | |
| 130 | 131 | savefig(fig, "ch37/ch37-fig-pdp.pdf") |
| 131 | 132 | |
| 132 | 133 | def fig_waterfall(res, top: int = 8): |
@@ -143,8 +144,8 @@ def fig_waterfall(res, top: int = 8): | ||
| 143 | 144 | cur += ph; ys.append(lab) |
| 144 | 145 | fin = math.exp(cur) |
| 145 | 146 | ax.axvline(math.exp(base), color=palette.ink2, lw=0.9, ls=":"); ax.axvline(fin, color=palette.ink, lw=0.9, ls="--") |
| 146 | − ax.text(math.exp(base), -0.9, f"base : {math.exp(base):,.0f} $".replace(",", " "), ha="center", va="top", fontsize=7.5, color=palette.ink2) | |
| 147 | − ax.text(fin, len(etapes) - 0.2, f"prédiction : {fin:,.0f} $".replace(",", " "), ha="center", va="bottom", fontsize=7.5, color=palette.ink) | |
| 147 | + ax.text(math.exp(base) - 3000, -0.9, f"base : {math.exp(base):,.0f} $".replace(",", " "), ha="right", va="top", fontsize=7.5, color=palette.ink2) | |
| 148 | + ax.text(fin + 3000, -0.9, f"prédiction brute : {fin:,.0f} $".replace(",", " "), ha="left", va="top", fontsize=7.5, color=palette.ink) | |
| 148 | 149 | ax.set_yticks(range(len(etapes))); ax.set_yticklabels(ys); ax.invert_yaxis() |
| 149 | 150 | ax.set_xlabel("Prix prédit (k$) — chaque contribution est un facteur multiplicatif exp(φ)") |
| 150 | 151 | ax.xaxis.set_major_formatter(FuncFormatter(_k)); ax.set_xlim(430_000, 700_000); ax.set_ylim(len(etapes) - 0.3, -1.5) |
modified
analysis/python/figures/ch40_figures.py
+2 −2
@@ -105,13 +105,13 @@ def fig_rcd(D): | ||
| 105 | 105 | |
| 106 | 106 | def fig_lhs(D): |
| 107 | 107 | rng = np.random.default_rng(5); n = 12 |
| 108 | − fig, (a1, a2, a3) = plt.subplots(1, 3, figsize=(LARGEUR, 2.6), gridspec_kw={"wspace": 0.35, "width_ratios": [1, 1, 1.6]}) | |
| 108 | + fig, (a1, a2, a3) = plt.subplots(1, 3, figsize=(LARGEUR, 2.6), gridspec_kw={"wspace": 0.85, "width_ratios": [0.85, 0.85, 1.7]}) | |
| 109 | 109 | U1 = rng.random((n, 2)); U2 = m.hypercube_latin(n, 2, rng) |
| 110 | 110 | for ax, U, t in [(a1, U1, "Simple"), (a2, U2, "Hypercube latin")]: |
| 111 | 111 | for g in np.arange(0, 1.0001, 1 / n): ax.axhline(g, color=palette.grid, lw=0.5); ax.axvline(g, color=palette.grid, lw=0.5) |
| 112 | 112 | ax.scatter(U[:, 0], U[:, 1], s=18, color=palette.cat[0], zorder=3); ax.set_xlim(0, 1); ax.set_ylim(0, 1); ax.set_aspect("equal"); ax.set_title(t + f", n = {n}", loc="left", fontsize=8) |
| 113 | 113 | ax.set_xticks([0, 0.5, 1]); ax.set_yticks([0, 0.5, 1]); ax.grid(False); ax.set_xlabel("u₁"); ax.set_ylabel("u₂") |
| 114 | − l = D["lhs"].set_index("statistique"); noms = {"moyenne": "moyenne", "ecart_type": "écart-type", "mediane": "médiane", "q05": "quantile 5 %", "q95": "quantile 95 %", "p_V_2M": "P(V < 2 M$)"} | |
| 114 | + l = D["lhs"].set_index("statistique"); noms = {"moyenne": "moyenne", "ecart_type": "écart-type", "mediane": "médiane", "q05": "q₅", "q95": "q₉₅", "p_V_2M": "P(V<2 M$)"} | |
| 115 | 115 | ordre = ["moyenne", "ecart_type", "mediane", "p_V_2M", "q95", "q05"]; vals = [min(l.loc[k, "ratio_variance"], 300) for k in ordre] |
| 116 | 116 | a3.barh(range(len(ordre)), vals, color=palette.cat[1]); a3.set_yticks(range(len(ordre))); a3.set_yticklabels([noms[k] for k in ordre]); a3.set_xscale("log") |
| 117 | 117 | a3.axvline(1, color=palette.ink, lw=0.8); a3.set_xlabel("Variance simple / variance hypercube latin (log)") |
added
analysis/python/figures/ch45_figures.py
+165 −0
@@ -0,0 +1,165 @@ | ||
| 1 | +#!/usr/bin/env python3 | |
| 2 | +"""Chapitre 45 — figures du dossier (cas 1, DONNÉES SYNTHÉTIQUES) : carte des comparables, cascade des ajustements, | |
| 3 | +fourchettes par méthode et conclusion, profil de dépréciation par composante, financement de l'acheteur. | |
| 4 | +Tous les chiffres proviennent de analysis/python/cases/ch45_dossier.py (qui importe les scripts des chapitres de méthode). | |
| 5 | +Usage (racine du dépôt) : PYTHONPATH=analysis/python python3 analysis/python/figures/ch45_figures.py""" | |
| 6 | +from __future__ import annotations | |
| 7 | +import sys, pathlib, math | |
| 8 | +import numpy as np | |
| 9 | +import matplotlib.pyplot as plt | |
| 10 | +from matplotlib.ticker import FuncFormatter | |
| 11 | +sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1])) | |
| 12 | +sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1] / "cases")) | |
| 13 | +from traite.style import setup, palette, savefig, LARGEUR | |
| 14 | +import ch45_dossier as ch | |
| 15 | +import ch17_ajustements as c17 | |
| 16 | + | |
| 17 | +def fmt_k(x, pos=None): | |
| 18 | + return f"{x/1000:,.0f}".replace(",", " ") + " k$" | |
| 19 | + | |
| 20 | +def fmt_d(x): | |
| 21 | + return f"{x:,.0f} $".replace(",", " ") | |
| 22 | + | |
| 23 | + | |
| 24 | +def fig_carte(D): | |
| 25 | + """Sujet, 16 candidats de l'entonnoir du ch. 16 et 5 comparables retenus ; distances en km autour du sujet (projection locale).""" | |
| 26 | + s = D["sujet"]; cand = D["candidats"]; comps = D["comparables"] | |
| 27 | + lat0, lon0 = s["lat"], s["lon"]; kx = 111.32 * math.cos(math.radians(lat0)); ky = 110.57 | |
| 28 | + fig, ax = plt.subplots(figsize=(LARGEUR, 3.6)) | |
| 29 | + for r_km, lab in [(1.5, "1,5 km"), (3.0, "3 km")]: | |
| 30 | + ax.add_patch(plt.Circle((0, 0), r_km, fill=False, color=palette.ink2, lw=0.7, ls="--")) | |
| 31 | + ax.text(r_km * 0.72, r_km * 0.72, lab, fontsize=7, color=palette.ink2) | |
| 32 | + autres = cand[~cand["id_vente"].isin(comps["id_vente"])] | |
| 33 | + ax.scatter((autres["lon"] - lon0) * kx, (autres["lat"] - lat0) * ky, s=22 + (autres["prix_vente"] - 450000) / 4000, color=palette.cat[0], alpha=0.55, label="11 autres candidats (entonnoir du ch. 16)", zorder=3) | |
| 34 | + ax.scatter((comps["lon"] - lon0) * kx, (comps["lat"] - lat0) * ky, s=30 + (comps["prix_vente"] - 450000) / 4000, color=palette.cat[1], edgecolor="white", lw=0.6, label="5 comparables retenus", zorder=4) | |
| 35 | + for _, r in comps.iterrows(): | |
| 36 | + ax.annotate(f"{r['id_vente']}\n{fmt_d(r['prix_vente'])}", ((r["lon"] - lon0) * kx, (r["lat"] - lat0) * ky), textcoords="offset points", xytext=(6, 4), fontsize=6.5, color=palette.ink) | |
| 37 | + ax.scatter([0], [0], marker="*", s=160, color=palette.ink, zorder=5, label="sujet (adresse fictive, secteur Hull)") | |
| 38 | + ax.set_aspect("equal"); ax.set_xlim(-3.4, 3.4); ax.set_ylim(-3.4, 3.4) | |
| 39 | + ax.set_xlabel("Est–ouest (km, à partir du sujet)"); ax.set_ylabel("Nord–sud (km)") | |
| 40 | + ax.legend(loc="upper left", fontsize=7, frameon=False) | |
| 41 | + ax.set_title("Taille des points proportionnelle au prix de vente", loc="left", fontsize=8) | |
| 42 | + fig.tight_layout() | |
| 43 | + savefig(fig, "ch45/ch45-fig-carte-comparables.pdf") | |
| 44 | + | |
| 45 | + | |
| 46 | +def fig_cascade(D): | |
| 47 | + """Prix bruts → ajustements par groupe → prix ajustés, pour les 5 comparables (grille du ch. 17), et valeur pondérée.""" | |
| 48 | + a = D["adj17"]; grp = [g for g in c17.GROUPES if (a[g].abs() > 1).any()] | |
| 49 | + fig, ax = plt.subplots(figsize=(LARGEUR, 3.6)) | |
| 50 | + x = np.arange(len(a)); w = 0.36 | |
| 51 | + ax.bar(x - w / 2, a["prix_vente"], width=w, color=palette.cat[0], alpha=0.5, label="prix de vente") | |
| 52 | + ax.bar(x + w / 2, a["prix_ajuste"], width=w, color=palette.cat[1], label="prix ajusté") | |
| 53 | + # ajustements empilés (positifs vers le haut, négatifs vers le bas) sur le prix brut | |
| 54 | + cols = [palette.cat[(i + 2) % len(palette.cat)] for i in range(len(grp))] | |
| 55 | + for i, (_, r) in enumerate(a.iterrows()): | |
| 56 | + pos = r["prix_vente"]; neg = r["prix_vente"] | |
| 57 | + for g, c in zip(grp, cols): | |
| 58 | + v = r[g] | |
| 59 | + if v >= 0: | |
| 60 | + ax.bar(x[i] + w / 2, v, bottom=pos, width=w * 0.55, color=c, edgecolor="white", lw=0.3, label=c17.LIBELLES[g] if i == 0 else None); pos += v | |
| 61 | + else: | |
| 62 | + ax.bar(x[i] + w / 2, v, bottom=neg, width=w * 0.55, color=c, edgecolor="white", lw=0.3, label=c17.LIBELLES[g] if i == 0 else None); neg += v | |
| 63 | + ax.text(x[i] + w / 2, r["prix_ajuste"] + 6000, fmt_d(r["prix_ajuste"]), ha="center", fontsize=6.5) | |
| 64 | + ax.text(x[i] - w / 2, r["prix_vente"] + 6000, fmt_d(r["prix_vente"]), ha="center", fontsize=6.5, color=palette.ink2) | |
| 65 | + ax.text(x[i], 455000, f"brut {r['ajust_brut_pct']*100:.1f} %\npoids {D['poids17'][i]:.3f}".replace(".", ","), ha="center", fontsize=6.5, color=palette.ink2) | |
| 66 | + ax.axhline(D["V_comp"], color=palette.ink, lw=1.0, ls="--"); ax.text(len(a) - 0.5, D["V_comp"] + 4000, f"valeur pondérée {fmt_d(D['V_comp'])}", ha="right", fontsize=7) | |
| 67 | + ax.axhline(D["V_hed"], color=palette.ink2, lw=0.8, ls=":"); ax.text(len(a) - 0.5, D["V_hed"] + 4000, f"prédiction hédonique {fmt_d(D['V_hed'])}", ha="right", fontsize=7, color=palette.ink2) | |
| 68 | + ax.set_xticks(x); ax.set_xticklabels(a["id_vente"]); ax.set_ylim(440000, 700000); ax.yaxis.set_major_formatter(FuncFormatter(fmt_k)) | |
| 69 | + ax.set_ylabel("Prix ($)"); ax.legend(loc="upper left", fontsize=6.3, frameon=False, ncol=3) | |
| 70 | + fig.tight_layout() | |
| 71 | + savefig(fig, "ch45/ch45-fig-grille-cascade.pdf") | |
| 72 | + | |
| 73 | + | |
| 74 | +def fig_fourchettes(D): | |
| 75 | + """Indications ± 1 écart-type (ch. 20), IC et IP hédoniques (ch. 18), conclusion, fourchette conclue, bande bootstrap 90 %, | |
| 76 | + rôle (fictif) et valeur réelle au 2024-07-01 (ch. 9), prêt assuré maximal.""" | |
| 77 | + fig, ax = plt.subplots(figsize=(LARGEUR, 3.5)) | |
| 78 | + lignes = [("Comparaison (ch. 17)", D["indications"]["comparaison"], D["ecarts_types20"]["comparaison"], None), | |
| 79 | + ("Hédonique (ch. 18)", D["indications"]["hedonique"], D["ecarts_types20"]["hedonique"], (D["ip95"], D["ic95_valeur"])), | |
| 80 | + ("Coût (ch. 24-25)", D["indications"]["cout"], D["ecarts_types20"]["cout"], None), | |
| 81 | + ("Combinaison 0,40/0,45/0,15 (ch. 20)", D["V_raisonnee"], D["sd_conclusion"], None)] | |
| 82 | + for i, (lab, v, sd, extra) in enumerate(lignes): | |
| 83 | + y = len(lignes) - i | |
| 84 | + if extra: | |
| 85 | + ax.plot(extra[0], [y, y], color=palette.cat[0], lw=1.0, alpha=0.5); ax.text(extra[0][1] + 3000, y, "IP 95 % du prix", fontsize=6.5, va="center", color=palette.ink2) | |
| 86 | + ax.plot(extra[1], [y, y], color=palette.cat[0], lw=5, alpha=0.35, solid_capstyle="butt") | |
| 87 | + ax.errorbar([v], [y], xerr=[[sd], [sd]], fmt="o", color=palette.cat[1] if i < 3 else palette.ink, capsize=3, ms=5, lw=1.4) | |
| 88 | + ax.text(v, y + 0.22, fmt_d(v), ha="center", fontsize=7) | |
| 89 | + ax.text(515000, y, lab, ha="right", va="center", fontsize=7.5) | |
| 90 | + ax.axvspan(*D["fourchette"], color=palette.cat[1], alpha=0.10) | |
| 91 | + ax.axvspan(*D["bande90"], color=palette.cat[1], alpha=0.14) | |
| 92 | + ax.axvline(D["conclusion"], color=palette.ink, lw=1.3); ax.text(D["conclusion"], 4.75, f"valeur la plus probable {fmt_d(D['conclusion'])}", ha="center", fontsize=7.5) | |
| 93 | + ax.text(D["fourchette"][0], 0.35, f"fourchette {fmt_d(D['fourchette'][0])} – {fmt_d(D['fourchette'][1])}", fontsize=7, ha="left") | |
| 94 | + ax.text(D["bande90"][0], 0.08, f"bande bootstrap 90 % {fmt_d(D['bande90'][0])} – {fmt_d(D['bande90'][1])}", fontsize=6.5, ha="left", color=palette.ink2) | |
| 95 | + ax.axvline(D["role"], color=palette.ink2, lw=0.8, ls=":"); ax.text(D["role"], 0.35, "rôle (fictif)\n" + fmt_d(D["role"]), ha="center", fontsize=6.5, color=palette.ink2) | |
| 96 | + ax.axvline(D["valeur_reelle_2024"], color=palette.ink2, lw=0.8, ls=":"); ax.text(D["valeur_reelle_2024"], 4.35, "valeur réelle\n2024-07-01", ha="center", fontsize=6.5, color=palette.ink2) | |
| 97 | + ax.set_yticks([]); ax.set_ylim(-0.1, 5.1); ax.set_xlim(445000, 775000); ax.xaxis.set_major_formatter(FuncFormatter(fmt_k)) | |
| 98 | + ax.set_xlabel("Valeur ($) — points : indications ; barres : ± 1 écart-type attribué au ch. 20") | |
| 99 | + fig.tight_layout() | |
| 100 | + savefig(fig, "ch45/ch45-fig-fourchettes.pdf") | |
| 101 | + | |
| 102 | + | |
| 103 | +def fig_depreciation(D): | |
| 104 | + """(a) Dépréciation ventilée par composante (ch. 11) contre dépréciation extraite du marché (ch. 24) ; | |
| 105 | + (b) décomposition de la valeur par le coût : terrain + coût neuf − dépréciation.""" | |
| 106 | + f = D["fiche"].copy(); f["dep"] = f["ratio"] * f["cout_neuf"] | |
| 107 | + f = f.sort_values("dep", ascending=True) | |
| 108 | + fig, axes = plt.subplots(1, 2, figsize=(LARGEUR, 4.0), gridspec_kw={"width_ratios": [1.45, 1]}) | |
| 109 | + ax = axes[0] | |
| 110 | + y = np.arange(len(f)) | |
| 111 | + ax.barh(y, f["cout_neuf"], color=palette.cat[0], alpha=0.25, label="coût neuf de la composante") | |
| 112 | + ax.barh(y, f["dep"], color=palette.cat[1], label="dépréciation ventilée (âge effectif / vie utile)") | |
| 113 | + ax.set_yticks(y); ax.set_yticklabels([c if len(c) < 34 else c[:32] + "…" for c in f["composante"]], fontsize=6) | |
| 114 | + ax.xaxis.set_major_formatter(FuncFormatter(fmt_k)); ax.legend(loc="lower right", fontsize=6.5, frameon=False) | |
| 115 | + ax.set_title(f"(a) Ventilée : {fmt_d(D['dv11']['total'])} ({D['dv11']['taux']*100:.1f} % du coût neuf)".replace(".", ","), loc="left", fontsize=8) | |
| 116 | + ax = axes[1] | |
| 117 | + cats = ["Terrain\n(ch. 25)", "Coût neuf\n(ch. 21)", "Dépréciation\nextraite\n(ch. 24)", "Carence\nsalle d'eau", "Valeur\npar le coût"] | |
| 118 | + vals = [D["V_L"], D["CN"], -D["D_ext"], -D["D_fonc"], D["V_cout"]] | |
| 119 | + bottoms = [0, D["V_L"], D["V_L"] + D["CN"] - D["D_ext"], D["V_L"] + D["CN"] - D["D_ext"] - D["D_fonc"], 0] | |
| 120 | + cols = [palette.cat[2], palette.cat[0], palette.cat[1], palette.cat[1], palette.ink] | |
| 121 | + ax.bar(cats, [abs(v) for v in vals], bottom=bottoms, color=cols, edgecolor="white", lw=0.5) | |
| 122 | + for i, (v, b) in enumerate(zip(vals, bottoms)): | |
| 123 | + ax.text(i, b + abs(v) + 8000, fmt_d(abs(v)), ha="center", fontsize=6.5) | |
| 124 | + ax.axhline(D["V_L"] + D["CN"], color=palette.ink2, lw=0.7, ls=":"); ax.text(1.5, D["V_L"] + D["CN"] + 8000, f"terrain + coût neuf {fmt_d(D['V_L'] + D['CN'])}", fontsize=6.5, ha="center", color=palette.ink2) | |
| 125 | + ax.yaxis.set_major_formatter(FuncFormatter(fmt_k)); ax.tick_params(axis="x", labelsize=6.5); ax.set_ylim(0, 760000) | |
| 126 | + ax.set_title(f"(b) Extraction : {D['taux_tot']*100:.2f} % → {fmt_d(D['V_cout_arrondie'])}".replace(".", ","), loc="left", fontsize=8) | |
| 127 | + fig.tight_layout(w_pad=1.5) | |
| 128 | + savefig(fig, "ch45/ch45-fig-depreciation.pdf") | |
| 129 | + | |
| 130 | + | |
| 131 | +def fig_financement(D): | |
| 132 | + """(a) Paiement mensuel et paiement au taux admissible selon la mise de fonds ; (b) paiement au renouvellement selon la hausse de taux.""" | |
| 133 | + F = D["financement"]; ren = D["renouvellement"] | |
| 134 | + fig, axes = plt.subplots(1, 2, figsize=(LARGEUR, 3.3)) | |
| 135 | + ax = axes[0] | |
| 136 | + keys = ["minimale", "10 %", "20 %", "minimale 30 ans"]; labs = ["5,87 %\n(min.)\n25 ans", "10 %\n25 ans", "20 %\n(non assuré)\n25 ans", "5,87 %\n30 ans"] | |
| 137 | + x = np.arange(len(keys)); w = 0.38 | |
| 138 | + ax.bar(x - w / 2, [F[k]["paiement"] for k in keys], width=w, color=palette.cat[1], label="paiement au taux du contrat") | |
| 139 | + ax.bar(x + w / 2, [F[k]["paiement_mqr"] for k in keys], width=w, color=palette.cat[0], alpha=0.6, label="paiement au taux admissible minimal") | |
| 140 | + for i, k in enumerate(keys): | |
| 141 | + ax.text(x[i] - w / 2, F[k]["paiement"] + 40, f"{F[k]['paiement']:,.0f}".replace(",", " "), ha="center", fontsize=6.5) | |
| 142 | + ax.text(x[i] + w / 2, F[k]["paiement_mqr"] + 40, f"{F[k]['paiement_mqr']:,.0f}".replace(",", " "), ha="center", fontsize=6.5, color=palette.ink2) | |
| 143 | + ax.text(x[i], 300, f"prime\n{fmt_d(F[k]['prime'])}" if F[k]["prime"] else "sans\nprime", ha="center", fontsize=6.3, color="white") | |
| 144 | + ax.set_xticks(x); ax.set_xticklabels(labs, fontsize=7); ax.set_ylabel("Paiement mensuel ($)"); ax.set_ylim(0, 4600) | |
| 145 | + ax.legend(loc="upper right", fontsize=6.5, frameon=False); ax.set_title(f"(a) Prix {fmt_d(D['prix'])}, taux {F['minimale']['taux']*100:.2f} % / {F['20 %']['taux']*100:.2f} %".replace(".", ","), loc="left", fontsize=8) | |
| 146 | + ax = axes[1] | |
| 147 | + ax.plot(ren["hausse_pb"], ren["paiement"], marker="o", color=palette.cat[1], lw=1.6, label="paiement mensuel") | |
| 148 | + for _, r in ren.iterrows(): | |
| 149 | + ax.annotate(f"{r['paiement']:,.0f} $\n({r['hausse_paiement_pct']*100:+.1f} %)".replace(",", " ").replace(".", ","), (r["hausse_pb"], r["paiement"]), textcoords="offset points", xytext=(0, 8), ha="center", fontsize=6.5) | |
| 150 | + ax.axhline(F["minimale"]["paiement_mqr"], color=palette.cat[0], lw=0.9, ls="--"); ax.text(300, F["minimale"]["paiement_mqr"] + 25, "paiement de qualification initial", fontsize=6.5, ha="right", color=palette.cat[0]) | |
| 151 | + ax.set_xlabel("Hausse du taux au renouvellement (points de base)"); ax.set_ylabel("Paiement mensuel ($)"); ax.set_ylim(2900, 4400) | |
| 152 | + ax.set_xticks(ren["hausse_pb"]); ax.set_title(f"(b) Solde à 60 mois {fmt_d(F['minimale']['solde_terme'])}, 20 ans restants", loc="left", fontsize=8) | |
| 153 | + fig.tight_layout(w_pad=1.5) | |
| 154 | + savefig(fig, "ch45/ch45-fig-financement.pdf") | |
| 155 | + | |
| 156 | + | |
| 157 | +def main(): | |
| 158 | + setup() | |
| 159 | + D = ch.dossier() | |
| 160 | + fig_carte(D); fig_cascade(D); fig_fourchettes(D); fig_depreciation(D); fig_financement(D) | |
| 161 | + print("figures ch45 écrites dans assets/figures/ch45/") | |
| 162 | + | |
| 163 | + | |
| 164 | +if __name__ == "__main__": | |
| 165 | + main() | |
modified
analysis/python/figures/ch46_figures.py
+3 −3
@@ -67,9 +67,9 @@ def fig_mrb(D): | ||
| 67 | 67 | ax.hist(c.loc[(c["quartier"] == "Limoilou") & (c["nb_logements"] == 3), "mrb"], bins=np.arange(12, 32, 1.0), color=palette.cat[0], alpha=0.8, label="28 triplex de Limoilou") |
| 68 | 68 | for i, (_, r) in enumerate(comp5.iterrows()): |
| 69 | 69 | ax.axvline(r["mrb"], color=palette.cat[1], lw=1.2, label="5 comparables (MRB 20,75 à 23,35)" if i == 0 else None) |
| 70 | − ax.axvline(rec["mrb_implicite"], color=palette.ink, lw=1.6, ls="--"); ax.text(12.3, 13.2, f"Sujet, valeur conclue : {rec['mrb_implicite']:.2f} (tireté)".replace(".", ","), fontsize=7, color=palette.ink) | |
| 71 | − ax.axvline(rev["mrb_127"], color=palette.ink2, lw=1, ls=":"); ax.text(12.3, 12.1, f"Médiane des 67 triplex : {rev['mrb_127']:.2f} (pointillé)".replace(".", ","), fontsize=7, color=palette.ink2) | |
| 72 | − ax.set_xlabel("Multiplicateur du revenu brut (prix / RBP contractuel)"); ax.set_ylabel("Nombre de ventes"); ax.set_ylim(0, 14.5); ax.set_xlim(12, 31); ax.legend(loc="upper right", fontsize=6.5) | |
| 70 | + ax.axvline(rec["mrb_implicite"], color=palette.ink, lw=1.6, ls="--", label=f"Sujet, valeur conclue ({rec['mrb_implicite']:.2f})".replace(".", ",")) | |
| 71 | + ax.axvline(rev["mrb_127"], color=palette.ink2, lw=1, ls=":", label=f"Médiane des 67 triplex ({rev['mrb_127']:.2f})".replace(".", ",")) | |
| 72 | + ax.set_xlabel("Multiplicateur du revenu brut (prix / RBP contractuel)"); ax.set_ylabel("Nombre de ventes"); ax.set_ylim(0, 15); ax.set_xlim(12, 31); ax.legend(loc="upper right", fontsize=6.3) | |
| 73 | 73 | ax.set_title("A. Les cinq comparables dans la distribution", loc="left", fontsize=8.5) |
| 74 | 74 | ax = axes[1] |
| 75 | 75 | rho5 = comp5["loyer_mensuel_moyen_contrat"] / comp5["loyer_mensuel_moyen_marche"]; rho_tri = tri["loyer_mensuel_moyen_contrat"] / tri["loyer_mensuel_moyen_marche"] |
modified
analysis/python/tests/test_ch37.py
+13 −0
@@ -166,5 +166,18 @@ def test_solutions_exercices(res): | ||
| 166 | 166 | # 37.5 : dix prédictions d'un AVM |
| 167 | 167 | r = e["5"]; assert r["rmse_log"] == pytest.approx(0.0503, abs=0.0001) and r["mdape"] == pytest.approx(4.51, abs=0.01) and r["COD"] == pytest.approx(4.42, abs=0.01) |
| 168 | 168 | assert r["PRD"] == pytest.approx(1.006, abs=0.001) and r["PRB"] == pytest.approx(-0.034, abs=0.001) and r["ratio_median"] == pytest.approx(0.971, abs=0.001) and r["mape"] == pytest.approx(4.82, abs=0.01) |
| 169 | + gains = {round(x["seuil"], 1): round(x["gain"], 3) for x in e["1"]["essais"]} | |
| 170 | + assert gains[84.5] == pytest.approx(0.273, abs=0.001) and gains[142.0] == pytest.approx(0.264, abs=0.001) and gains[195.5] == pytest.approx(0.097, abs=0.001) | |
| 171 | + # 37.6 (c) : surface polynomiale des coordonnées | |
| 172 | + c = e["6c"] | |
| 173 | + assert c["aleatoire"]["COD"] == pytest.approx(6.99, abs=0.1) and c["secteur"]["COD"] == pytest.approx(10.43, abs=0.15) | |
| 174 | + assert c["biais_secteur"]["Aylmer"] == pytest.approx(-0.264, abs=0.01) and abs(c["biais_secteur"]["Masson-Angers"]) < 0.03 and c["biais_secteur"]["Buckingham"] == pytest.approx(-0.066, abs=0.01) | |
| 175 | + # 37.7 (c) et (d) : seuils décalés ; validation imbriquée | |
| 176 | + s7 = e["7c"] | |
| 177 | + assert s7["22-48"]["n_mal_classees"] == 56 and s7["28-42"]["n_mal_classees"] == 51 and s7["25-45 (vrai)"]["n_mal_classees"] == 0 | |
| 178 | + assert s7["22-48"]["COD"] == pytest.approx(7.02, abs=0.1) and s7["28-42"]["COD"] == pytest.approx(7.18, abs=0.1) and s7["25-45 (vrai)"]["COD"] == pytest.approx(6.85, abs=0.1) | |
| 179 | + assert s7["22-48"]["coef_mur"] == pytest.approx(-0.079, abs=0.002) and s7["28-42"]["coef_mur"] == pytest.approx(-0.068, abs=0.002) | |
| 180 | + assert max(s7[k]["COD"] for k in s7) < res["scenario"]["metriques"]["Gradient boosting"]["COD"] | |
| 181 | + assert e["7d"]["profondeurs_choisies"] == [1] * 10 and e["7d"]["rmse_log"] == pytest.approx(0.0887, abs=0.001) and e["7d"]["COD"] == pytest.approx(7.22, abs=0.1) | |
| 169 | 182 | # 37.6 et 37.7 : chiffres cohérents avec les tableaux |
| 170 | 183 | assert e["6"]["Hédonique (référence)"]["secteur"] == pytest.approx(10.44, abs=0.1) and e["7"]["Hédonique respécifié"] == pytest.approx(6.85, abs=0.1) |
modified
analysis/python/tests/test_ch48.py
+1 −1
@@ -93,4 +93,4 @@ def test_risques_et_reconciliation(D): | ||
| 93 | 93 | assert ris["decote_inondable_agregee"] == pytest.approx(-ris["effet_inondable_pct_taux"] / (1 + ris["effet_inondable_pct_taux"]), abs=1e-9) # V/V' − 1 = 1/(1+e) − 1 |
| 94 | 94 | assert rec["valeur_retenue"] == 143_400_000 and rec["rpv"] == pytest.approx(85_766_000 / 143_400_000) |
| 95 | 95 | assert rec["fourchette_mc"][0] < rec["somme_individuelle"] < rec["fourchette_mc"][1] |
| 96 | − e6 = D["exercices"]["ex6"]; assert e6["apres_valeur"] == pytest.approx(143_363_000 - 9_546_000) and e6["ids"] == ["P36", "P41", "P43"] | |
| 96 | + e6 = D["exercices"]["ex7"]; assert e6["apres_valeur"] == pytest.approx(143_363_000 - 9_546_000) and e6["ids"] == ["P36", "P41", "P43"] | |
modified
assets/figures/ch40/ch40-fig-convergence.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-distribution.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-lhs.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-nuage.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-portefeuille.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-rcd.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch40/ch40-fig-sobol.pdf
+0 −0
Binary file not shown.
added
assets/figures/ch45/ch45-fig-carte-comparables.pdf
+0 −0
Binary file not shown.
added
assets/figures/ch45/ch45-fig-depreciation.pdf
+0 −0
Binary file not shown.
added
assets/figures/ch45/ch45-fig-financement.pdf
+0 −0
Binary file not shown.
added
assets/figures/ch45/ch45-fig-fourchettes.pdf
+0 −0
Binary file not shown.
added
assets/figures/ch45/ch45-fig-grille-cascade.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch46/ch46-fig-cascade.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch46/ch46-fig-fourchettes.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch46/ch46-fig-loyers.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch46/ch46-fig-mrb.pdf
+0 −0
Binary file not shown.
modified
assets/figures/ch46/ch46-fig-occupation.pdf
+0 −0
Binary file not shown.
modified
manuscript/chapters/ch37.tex
+44 −44
@@ -168,7 +168,7 @@ où $\mathbf{x}_{i,-j}$ désigne les autres variables de l'observation $i$. La c | ||
| 168 | 168 | \end{equation} |
| 169 | 169 | où $\mathbf{X}^{(\pi_j)}$ est la matrice des régresseurs dont la colonne $j$ a été permutée. Elle est mesurée ici hors échantillon, dans chaque pli de validation, ce qui évite d'attribuer de l'importance à des variables que le modèle utilise pour mémoriser le bruit. Sa limite est la même que celle de la dépendance partielle : lorsque deux variables sont fortement corrélées, permuter l'une crée des observations impossibles et le modèle peut reporter l'information sur l'autre, de sorte que l'importance se partage entre elles de façon instable. L'exemple en donne une illustration nette : les coordonnées, la distance au centre et les indicatrices de secteur portent la même information de localisation, et le boosting l'attribue presque entièrement aux coordonnées, au point que les indicatrices de secteur, qui sont le mécanisme même de la loi de génération, reçoivent une importance nulle. L'explicabilité décrit ce que le modèle fait, pas ce que le marché fait ; la différence est au cœur de la \cref{sec:37:limites}. |
| 170 | 170 | |
| 171 | −\section{Exemple intégral : hédonique, forêt et boosting sur les 600 ventes du cas 1}\label{sec:37:exemple} | |
| 171 | +\section{Exemple intégral : hédonique, forêt et boosting sur le cas 1}\label{sec:37:exemple} | |
| 172 | 172 | |
| 173 | 173 | \begin{synthetique} |
| 174 | 174 | Les 600 ventes du cas 1 (\texttt{data/synthetic/cas1\_gatineau\_ventes.csv}) sont fictives, engendrées par \texttt{analysis/python/traite/synth.py} (graine 20261031) selon la loi semi-logarithmique additive déclarée dans \texttt{data/synthetic/README.md} et rappelée au \cref{ch:18} : élasticité de 0,55 pour la superficie habitable, 0,10 pour le terrain, polynôme d'âge, effets proportionnels de la qualité et des équipements, primes de secteur calibrées sur les médianes de l'APCIQ \parencite{apciqgatineaut32026}, gradient de distance au-delà de 3 km, tendance temporelle, bruit normal d'écart-type 0,085. Aucune interaction ni rupture n'y figure : c'est ce qui rend l'hédonique bien spécifié imbattable en espérance et ce qui fait de la \cref{sec:37:scenario}, où une interaction et une rupture déclarées sont ajoutées, un contrepoint nécessaire. Les régresseurs offerts aux modèles d'arbres sont les variables brutes (superficie, terrain, âge, qualité, garage, sous-sol, piscine, type, distance au centre, latitude, longitude, mois depuis la date de référence, cinq indicatrices de secteur), sans transformation. Tous les chiffres de cette section et de la suivante sont imprimés par \texttt{analysis/python/cases/ch37\_ml.py} et vérifiés par \texttt{analysis/python/tests/test\_ch37.py} ; les modèles proviennent de scikit-learn 1.6 et de xgboost 3.2, les valeurs SHAP de shap 0.48 (TreeSHAP appliqué au gradient boosting de scikit-learn, la bibliothèque shap ne lisant pas encore le format des modèles de xgboost 3.2). Les plis aléatoires sont ceux de \texttt{ch18\_hedonique.validation\_croisee}. |
@@ -191,20 +191,20 @@ L'exemple procède en cinq étapes : comparaison des modèles en validation croi | ||
| 191 | 191 | \begin{table}[htbp] |
| 192 | 192 | \caption{Cinq modèles sur les 600 ventes du cas 1 : performance hors échantillon selon trois schémas de validation (données synthétiques)}\label{tab:37:comparaison} |
| 193 | 193 | \centering\footnotesize\setlength{\tabcolsep}{3pt} |
| 194 | −\begin{tabular}{@{}l S[table-format=1.4] S[table-format=5.0] S[table-format=2.2] S[table-format=2.2] S[table-format=1.3] S[table-format=-1.3] S[table-format=1.4] S[table-format=2.2] S[table-format=1.4] S[table-format=-1.3] S[table-format=2.2]@{}} | |
| 194 | +\begin{tabular}{@{}l S[table-format=1.4] S[table-format=2.2] S[table-format=2.2] S[table-format=-1.3] S[table-format=1.4] S[table-format=2.2] S[table-format=1.4] S[table-format=-1.3] S[table-format=2.2]@{}} | |
| 195 | 195 | \toprule |
| 196 | − & \multicolumn{6}{c}{Plis aléatoires (10)} & \multicolumn{2}{c}{Blocs spatiaux (10)} & \multicolumn{3}{c}{Prospectif (2026, $n = 101$)} \\ | |
| 197 | −\cmidrule(lr){2-7}\cmidrule(lr){8-9}\cmidrule(lr){10-12} | |
| 198 | −Modèle & {RMSE$_{\ln}$} & {RMSE (\$)} & {MdAPE (\%)} & {COD} & {PRD} & {PRB} & {RMSE$_{\ln}$} & {COD} & {RMSE$_{\ln}$} & {Biais} & {COD} \\ | |
| 196 | + & \multicolumn{4}{c}{Plis aléatoires (10)} & \multicolumn{2}{c}{Blocs spatiaux (10)} & \multicolumn{3}{c}{Prospectif (2026, $n = 101$)} \\ | |
| 197 | +\cmidrule(lr){2-5}\cmidrule(lr){6-7}\cmidrule(lr){8-10} | |
| 198 | +Modèle & {RMSE$_{\ln}$} & {MdAPE (\%)} & {COD} & {PRB} & {RMSE$_{\ln}$} & {COD} & {RMSE$_{\ln}$} & {Biais} & {COD} \\ | |
| 199 | 199 | \midrule |
| 200 | −Hédonique (référence) & 0.0839 & 40889 & 5.68 & 6.83 & 1.007 & -0.059 & 0.0857 & 7.00 & 0.0855 & -0.010 & 6.96 \\ | |
| 201 | −Arbre (profondeur 3) & 0.1468 & 70779 & 9.85 & 11.63 & 1.021 & -0.228 & 0.1537 & 12.12 & 0.1737 & -0.085 & 12.35 \\ | |
| 202 | −Forêt aléatoire & 0.1067 & 52058 & 7.52 & 8.64 & 1.015 & -0.196 & 0.1120 & 8.96 & 0.1283 & -0.060 & 9.47 \\ | |
| 203 | −Gradient boosting & 0.0931 & 45644 & 6.22 & 7.42 & 1.009 & -0.088 & 0.0967 & 7.62 & 0.0950 & -0.034 & 7.41 \\ | |
| 204 | −XGBoost & 0.0921 & 45221 & 6.09 & 7.33 & 1.009 & -0.081 & 0.0948 & 7.53 & 0.0937 & -0.029 & 7.50 \\ | |
| 200 | +Hédonique (référence) & 0.0839 & 5.68 & 6.83 & -0.059 & 0.0857 & 7.00 & 0.0855 & -0.010 & 6.96 \\ | |
| 201 | +Arbre (profondeur 3) & 0.1468 & 9.85 & 11.63 & -0.228 & 0.1537 & 12.12 & 0.1737 & -0.085 & 12.35 \\ | |
| 202 | +Forêt aléatoire & 0.1067 & 7.52 & 8.64 & -0.196 & 0.1120 & 8.96 & 0.1283 & -0.060 & 9.47 \\ | |
| 203 | +Gradient boosting & 0.0931 & 6.22 & 7.42 & -0.088 & 0.0967 & 7.62 & 0.0950 & -0.034 & 7.41 \\ | |
| 204 | +XGBoost & 0.0921 & 6.09 & 7.33 & -0.081 & 0.0948 & 7.53 & 0.0937 & -0.029 & 7.50 \\ | |
| 205 | 205 | \bottomrule |
| 206 | 206 | \end{tabular} |
| 207 | −\tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py} ; plis aléatoires identiques à ceux du \cref{ch:18}}. RMSE$_{\ln}$ : racine de l'erreur quadratique moyenne du logarithme ; RMSE (\$) après retransformation de Duan (facteur hors échantillon) ; biais : erreur moyenne du logarithme. Hyperparamètres au \cref{tab:37:familles}.} | |
| 207 | +\tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py} ; plis aléatoires identiques à ceux du \cref{ch:18}}. RMSE$_{\ln}$ : racine de l'erreur quadratique moyenne du logarithme ; biais : erreur moyenne du logarithme. En plis aléatoires, la RMSE en dollars (retransformation de Duan, facteur hors échantillon) vaut 40 889 (hédonique), 70 779 (arbre), 52 058 (forêt), 45 644 (boosting) et 45 221 \$ (XGBoost) ; les PRD valent 1,007 ; 1,021 ; 1,015 ; 1,009 ; 1,009. Hyperparamètres au \cref{tab:37:familles}.} | |
| 208 | 208 | \end{table} |
| 209 | 209 | |
| 210 | 210 | \begin{figure}[htbp] |
@@ -241,21 +241,21 @@ Arbre (profondeur 3) & 0.1737 & -8.5 & 0.931 & 12.35 \\ | ||
| 241 | 241 | |
| 242 | 242 | \begin{table}[htbp] |
| 243 | 243 | \caption{Un secteur exclu à la fois : biais moyen de la prédiction (points de pourcentage du logarithme) et COD global (données synthétiques)}\label{tab:37:secteurs} |
| 244 | −\centering\small | |
| 244 | +\centering\footnotesize\setlength{\tabcolsep}{4pt} | |
| 245 | 245 | \begin{tabular}{@{}l S[table-format=-2.1] S[table-format=-2.1] S[table-format=-2.1] S[table-format=-2.1] S[table-format=-2.1] S[table-format=2.2]@{}} |
| 246 | 246 | \toprule |
| 247 | 247 | Modèle & {Hull} & {Gatineau} & {Aylmer} & {Buckingham} & {Masson-Angers} & {COD} \\ |
| 248 | 248 | \midrule |
| 249 | −Hédonique (secteur exclu prédit au niveau de référence) & -2.3 & 1.1 & -5.9 & 23.4 & 26.1 & 10.44 \\ | |
| 249 | +Hédonique (secteur exclu $=$ référence) & -2.3 & 1.1 & -5.9 & 23.4 & 26.1 & 10.44 \\ | |
| 250 | 250 | Arbre (profondeur 3) & -1.2 & -20.7 & -6.7 & -2.5 & 12.9 & 15.65 \\ |
| 251 | 251 | Forêt aléatoire & -1.0 & -4.9 & -8.5 & 2.5 & 12.8 & 10.21 \\ |
| 252 | 252 | Gradient boosting & 1.3 & -6.8 & -7.1 & -0.6 & 7.2 & 8.59 \\ |
| 253 | 253 | XGBoost & 1.0 & -6.7 & -8.3 & -2.2 & 10.2 & 8.87 \\ |
| 254 | 254 | \midrule |
| 255 | −Prime de secteur vraie (log, par rapport à Hull) & 0.0 & -2.1 & 11.0 & -18.4 & -20.4 & {} \\ | |
| 255 | +Prime de secteur vraie (log, vs Hull) & 0.0 & -2.1 & 11.0 & -18.4 & -20.4 & {} \\ | |
| 256 | 256 | \bottomrule |
| 257 | 257 | \end{tabular} |
| 258 | −\tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py}}. Hédonique : l'indicatrice du secteur exclu est retirée et le secteur est prédit comme Hull (ou comme Gatineau lorsque Hull est exclu) ; les biais de Buckingham et de Masson-Angers sont, au bruit près, l'opposé des primes omises.} | |
| 258 | +\tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py}}. Hédonique : l'indicatrice du secteur exclu est retirée et le secteur est prédit au niveau de Hull (ou de Gatineau lorsque Hull est exclu) ; les biais de Buckingham et de Masson-Angers sont, au bruit près, l'opposé des primes omises.} | |
| 259 | 259 | \end{table} |
| 260 | 260 | |
| 261 | 261 | \begin{figure}[htbp] |
@@ -267,10 +267,10 @@ Prime de secteur vraie (log, par rapport à Hull) & 0.0 & -2.1 & 11.0 & -18.4 & | ||
| 267 | 267 | |
| 268 | 268 | \begin{table}[htbp] |
| 269 | 269 | \caption{Importance des variables dans le gradient boosting : moyenne de $\abs{\phi}$ (SHAP) et importance par permutation hors échantillon (données synthétiques)}\label{tab:37:importances} |
| 270 | −\centering\small | |
| 271 | −\begin{tabular}{@{}l S[table-format=1.4] S[table-format=1.4] S[table-format=1.4] l@{}} | |
| 270 | +\centering\footnotesize\setlength{\tabcolsep}{4pt} | |
| 271 | +\begin{tabularx}{\textwidth}{@{}l S[table-format=1.4] S[table-format=1.4] S[table-format=1.4] Y@{}} | |
| 272 | 272 | \toprule |
| 273 | −Variable & {SHAP, moy. $\abs{\phi}$} & {Permutation, $\Delta$EQM} & {Forêt : $\Delta$EQM} & Lecture \\ | |
| 273 | +Variable & {SHAP, moy. $\abs{\phi}$} & {Permut., $\Delta$EQM} & {Forêt, $\Delta$EQM} & Lecture \\ | |
| 274 | 274 | \midrule |
| 275 | 275 | Superficie habitable & 0.1110 & 0.0348 & 0.0300 & dominante et sans substitut \\ |
| 276 | 276 | Âge & 0.0432 & 0.0061 & 0.0037 & courbe en U très ouvert \\ |
@@ -281,10 +281,10 @@ Distance au centre & 0.0274 & 0.0028 & 0.0023 & redondante avec les coordonnées | ||
| 281 | 281 | Latitude & 0.0271 & 0.0039 & 0.0031 & idem \\ |
| 282 | 282 | Terrain & 0.0204 & 0.0019 & 0.0013 & élasticité faible \\ |
| 283 | 283 | Garage & 0.0154 & {$<$ 0,002} & {$<$ 0,002} & \\ |
| 284 | −Type à étages ; sous-sol ; piscine & {0,0097 ; 0,0076 ; 0,0038} & {$<$ 0,002} & {$<$ 0,002} & \\ | |
| 284 | +À étages ; sous-sol ; piscine & {0,0097 ; 0,0076 ; 0,0038} & {$<$ 0,002} & {$<$ 0,002} & \\ | |
| 285 | 285 | Indicatrices de secteur (5) & {$\le$ 0,0016} & {$\approx$ 0} & {$\approx$ 0} & absorbées par lat., long., distance \\ |
| 286 | 286 | \bottomrule |
| 287 | −\end{tabular} | |
| 287 | +\end{tabularx} | |
| 288 | 288 | \tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py}}. Permutation : accroissement de l'erreur quadratique moyenne du logarithme en validation croisée à dix plis, dix permutations par pli ; erreur de base 0,0087 (boosting) et 0,0114 (forêt).} |
| 289 | 289 | \end{table} |
| 290 | 290 | |
@@ -297,10 +297,10 @@ Indicatrices de secteur (5) & {$\le$ 0,0016} & {$\approx$ 0} & {$\approx$ 0} & a | ||
| 297 | 297 | |
| 298 | 298 | \begin{table}[htbp] |
| 299 | 299 | \caption{Prédiction du sujet du cas 1 par chaque modèle et cascade SHAP du gradient boosting (données synthétiques)}\label{tab:37:sujet} |
| 300 | −\centering\small\setlength{\tabcolsep}{4pt} | |
| 301 | −\begin{tabular}{@{}l S[table-format=2.4] S[table-format=6.0] S[table-format=1.4] S[table-format=6.0] S[table-format=-2.1]@{}} | |
| 300 | +\centering\footnotesize\setlength{\tabcolsep}{3.5pt} | |
| 301 | +\begin{tabularx}{\textwidth}{@{}Y S[table-format=2.4] S[table-format=6.0] S[table-format=1.4] S[table-format=6.0] S[table-format=-2.1]@{}} | |
| 302 | 302 | \toprule |
| 303 | −Modèle (estimé sur 600 ventes) & {$\ln \hat P$} & {$\exp(\ln\hat P)$ (\$)} & {Facteur} & {Prédiction (\$)} & {Écart à l'hédonique (\%)} \\ | |
| 303 | +Modèle (estimé sur 600 ventes) & {$\ln \hat P$} & {$\exp(\ln\hat P)$ (\$)} & {Facteur} & {Prédiction (\$)} & {Écart (\%)} \\ | |
| 304 | 304 | \midrule |
| 305 | 305 | Hédonique (référence, \cref{ch:18}) & 13.3627 & 635821 & 1.0034 & 637953 & 0.0 \\ |
| 306 | 306 | XGBoost & 13.3244 & 611957 & 1.0033 & 613976 & -3.8 \\ |
@@ -321,8 +321,8 @@ Type à étages & 0.0075 & 0.8 & {} & 601511 & {} \\ | ||
| 321 | 321 | Sous-sol fini & 0.0056 & 0.6 & {} & 604889 & {} \\ |
| 322 | 322 | Autres (qualité, latitude, piscine, distance, secteurs) & -0.0005 & -0.1 & {} & 604595 & {} \\ |
| 323 | 323 | \bottomrule |
| 324 | −\end{tabular} | |
| 325 | −\tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py}}. Facteur : correction de Duan (en échantillon pour l'hédonique, comme au \cref{ch:18} ; hors échantillon pour les autres). Effet : $100\,[\exp(\phi_j) - 1]$ ; cumul : $\exp(\phi_0 + \sum \phi)$ après chaque contribution, avant le facteur de Duan.} | |
| 324 | +\end{tabularx} | |
| 325 | +\tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py}}. Facteur : correction de Duan (en échantillon pour l'hédonique, comme au \cref{ch:18} ; hors échantillon pour les autres) ; écart : par rapport à la prédiction hédonique. Effet : $100\,[\exp(\phi_j) - 1]$ ; cumul : $\exp(\phi_0 + \sum \phi)$ après chaque contribution, avant le facteur de Duan.} | |
| 326 | 326 | \end{table} |
| 327 | 327 | |
| 328 | 328 | \begin{figure}[htbp] |
@@ -367,33 +367,33 @@ Le rôle d'évaluation foncière québécois est, par nature, une évaluation de | ||
| 367 | 367 | |
| 368 | 368 | \section{Analyse de sensibilité : les hyperparamètres}\label{sec:37:sensibilite} |
| 369 | 369 | |
| 370 | −Les conclusions de l'exemple dépendent-elles des hyperparamètres retenus ? Le \cref{tab:37:sensibilite} réestime le boosting et la forêt sous treize réglages, toujours sur les mêmes dix plis. Pour le boosting, la profondeur est le réglage décisif, et le résultat est remarquable : les \emph{souches}, arbres de profondeur 1 qui produisent un modèle strictement additif, donnent la plus petite erreur de toute la grille, 0,0887 (COD 7,22), devant la profondeur 2 (0,0931), 3 (0,0970) et 4 (0,0984). La loi de génération étant additive en logarithme, tout degré d'interaction supplémentaire est de la variance pure, et le boosting le confirme sans qu'on le lui dise ; sur le scénario non linéaire de la \cref{sec:37:scenario}, la profondeur 2 l'emporterait au contraire, parce que l'interaction âge-qualité exige deux niveaux. Le nombre d'arbres interagit avec le taux d'apprentissage : à $\nu = 0{,}03$, 300 arbres sous-ajustent (0,0977), 1 200 sont près de l'optimum de la courbe d'apprentissage et 3 000 surajustent légèrement (0,0962) ; à $\nu = 0{,}10$, 1 200 arbres surajustent nettement (0,0988), et l'équivalence approximative « $\nu$ fois $M$ constant » que suggère l'\cref{eq:37:boosting} se vérifie, le produit étant de 36 dans le meilleur réglage. Le sous-échantillonnage à 80 \% améliore marginalement (0,0931 contre 0,0941 sans), et la taille minimale des feuilles ne change rien en validation aléatoire (0,0931 pour 1 comme pour 5), alors qu'elle décidait du biais prospectif au \cref{tab:37:temporel} : c'est l'illustration la plus nette de ce qu'une validation mesure ce qu'on lui demande de mesurer et rien d'autre. Pour la forêt, le nombre de variables par division compte peu entre 50 et 100 \% (0,1067 contre 0,1074) et un tiers des variables avec des feuilles de cinq dégrade (0,1151) ; cent arbres suffisent (0,1065), ce qui confirme que $B$ n'est pas un paramètre de surapprentissage. Aucun réglage de la forêt ne descend sous 0,105 et aucun réglage du boosting sous 0,088 : l'hédonique, à 0,084, n'est jamais rejoint. La sensibilité des conclusions aux hyperparamètres est donc faible pour l'ordre des modèles et forte pour le comportement aux bords ; l'évaluateur qui reçoit un AVM doit demander ses hyperparamètres et la courbe de validation qui les justifie. | |
| 370 | +Le \cref{tab:37:sensibilite} réestime le boosting et la forêt sous treize réglages, toujours sur les mêmes dix plis, afin de savoir si les conclusions de l'exemple dépendent des hyperparamètres retenus. Pour le boosting, la profondeur est le réglage décisif, et le résultat est remarquable : les \emph{souches}, arbres de profondeur 1 qui produisent un modèle strictement additif, donnent la plus petite erreur de toute la grille, 0,0887 (COD 7,22), devant la profondeur 2 (0,0931), 3 (0,0970) et 4 (0,0984). La loi de génération étant additive en logarithme, tout degré d'interaction supplémentaire est de la variance pure, et le boosting le confirme sans qu'on le lui dise ; sur le scénario non linéaire de la \cref{sec:37:scenario}, la profondeur 2 l'emporterait au contraire, parce que l'interaction âge-qualité exige deux niveaux. Le nombre d'arbres interagit avec le taux d'apprentissage : à $\nu = 0{,}03$, 300 arbres sous-ajustent (0,0977), 1 200 sont près de l'optimum de la courbe d'apprentissage et 3 000 surajustent légèrement (0,0962) ; à $\nu = 0{,}10$, 1 200 arbres surajustent nettement (0,0988), et l'équivalence approximative « $\nu$ fois $M$ constant » que suggère l'\cref{eq:37:boosting} se vérifie, le produit étant de 36 dans le meilleur réglage. Le sous-échantillonnage à 80 \% améliore marginalement (0,0931 contre 0,0941 sans), et la taille minimale des feuilles ne change rien en validation aléatoire (0,0931 pour 1 comme pour 5), alors qu'elle décidait du biais prospectif au \cref{tab:37:temporel} : c'est l'illustration la plus nette de ce qu'une validation mesure ce qu'on lui demande de mesurer et rien d'autre. Pour la forêt, le nombre de variables par division compte peu entre 50 et 100 \% (0,1067 contre 0,1074) et un tiers des variables avec des feuilles de cinq dégrade (0,1151) ; cent arbres suffisent (0,1065), ce qui confirme que $B$ n'est pas un paramètre de surapprentissage. Aucun réglage de la forêt ne descend sous 0,105 et aucun réglage du boosting sous 0,088 : l'hédonique, à 0,084, n'est jamais rejoint. La sensibilité des conclusions aux hyperparamètres est donc faible pour l'ordre des modèles et forte pour le comportement aux bords ; l'évaluateur qui reçoit un AVM doit demander ses hyperparamètres et la courbe de validation qui les justifie. | |
| 371 | 371 | |
| 372 | 372 | \begin{table}[htbp] |
| 373 | 373 | \caption{Sensibilité aux hyperparamètres : boosting et forêt aléatoire en validation croisée aléatoire à dix plis (données synthétiques)}\label{tab:37:sensibilite} |
| 374 | −\centering\footnotesize\setlength{\tabcolsep}{3.5pt} | |
| 375 | −\begin{tabular}{@{}l c S[table-format=4.0] S[table-format=1.2] c c l S[table-format=1.4] S[table-format=1.2] S[table-format=1.2] S[table-format=-1.3]@{}} | |
| 374 | +\centering\footnotesize\setlength{\tabcolsep}{3pt} | |
| 375 | +\begin{tabular}{@{}l c S[table-format=4.0] S[table-format=1.2] c l S[table-format=1.4] S[table-format=1.2] S[table-format=1.2] S[table-format=-1.3]@{}} | |
| 376 | 376 | \toprule |
| 377 | −Modèle & Profondeur & {Arbres} & {$\nu$} & Feuille min. & Sous-éch. & Variables & {RMSE$_{\ln}$} & {MdAPE (\%)} & {COD} & {PRB} \\ | |
| 377 | +Modèle & Prof. & {Arbres} & {$\nu$} & Feuille min. & Échantillon, variables & {RMSE$_{\ln}$} & {MdAPE (\%)} & {COD} & {PRB} \\ | |
| 378 | 378 | \midrule |
| 379 | −Boosting & 1 (souches) & 1200 & 0.03 & 5 & 80 \% & toutes & 0.0887 & 6.16 & 7.22 & -0.090 \\ | |
| 380 | −Boosting & 2 & 300 & 0.03 & 5 & 80 \% & toutes & 0.0977 & 6.93 & 7.88 & -0.158 \\ | |
| 381 | −Boosting (référence) & 2 & 1200 & 0.03 & 5 & 80 \% & toutes & 0.0931 & 6.22 & 7.42 & -0.088 \\ | |
| 382 | −Boosting & 2 & 3000 & 0.03 & 5 & 80 \% & toutes & 0.0962 & 6.29 & 7.67 & -0.072 \\ | |
| 383 | −Boosting & 3 & 1200 & 0.03 & 5 & 80 \% & toutes & 0.0970 & 6.38 & 7.77 & -0.081 \\ | |
| 384 | −Boosting & 4 & 1200 & 0.03 & 5 & 80 \% & toutes & 0.0984 & 6.66 & 7.90 & -0.090 \\ | |
| 385 | −Boosting & 2 & 1200 & 0.10 & 5 & 80 \% & toutes & 0.0988 & 6.43 & 7.79 & -0.066 \\ | |
| 386 | −Boosting & 2 & 1200 & 0.03 & 1 & 80 \% & toutes & 0.0931 & 6.26 & 7.42 & -0.088 \\ | |
| 387 | −Boosting & 2 & 1200 & 0.03 & 5 & 100 \% & toutes & 0.0941 & 6.22 & 7.52 & -0.091 \\ | |
| 388 | −Forêt & max. & 500 & {---} & 1 & bootstrap & 100 \% & 0.1074 & 7.79 & 8.69 & -0.166 \\ | |
| 389 | −Forêt (référence) & max. & 500 & {---} & 2 & bootstrap & 50 \% & 0.1067 & 7.52 & 8.64 & -0.196 \\ | |
| 390 | −Forêt & max. & 500 & {---} & 5 & bootstrap & 33 \% & 0.1151 & 7.84 & 9.32 & -0.272 \\ | |
| 391 | −Forêt & max. & 100 & {---} & 2 & bootstrap & 50 \% & 0.1065 & 7.52 & 8.58 & -0.194 \\ | |
| 379 | +Boosting & 1 & 1200 & 0.03 & 5 & 80 \% ; toutes & 0.0887 & 6.16 & 7.22 & -0.090 \\ | |
| 380 | +Boosting & 2 & 300 & 0.03 & 5 & 80 \% ; toutes & 0.0977 & 6.93 & 7.88 & -0.158 \\ | |
| 381 | +Boosting (réf.) & 2 & 1200 & 0.03 & 5 & 80 \% ; toutes & 0.0931 & 6.22 & 7.42 & -0.088 \\ | |
| 382 | +Boosting & 2 & 3000 & 0.03 & 5 & 80 \% ; toutes & 0.0962 & 6.29 & 7.67 & -0.072 \\ | |
| 383 | +Boosting & 3 & 1200 & 0.03 & 5 & 80 \% ; toutes & 0.0970 & 6.38 & 7.77 & -0.081 \\ | |
| 384 | +Boosting & 4 & 1200 & 0.03 & 5 & 80 \% ; toutes & 0.0984 & 6.66 & 7.90 & -0.090 \\ | |
| 385 | +Boosting & 2 & 1200 & 0.10 & 5 & 80 \% ; toutes & 0.0988 & 6.43 & 7.79 & -0.066 \\ | |
| 386 | +Boosting & 2 & 1200 & 0.03 & 1 & 80 \% ; toutes & 0.0931 & 6.26 & 7.42 & -0.088 \\ | |
| 387 | +Boosting & 2 & 1200 & 0.03 & 5 & 100 \% ; toutes & 0.0941 & 6.22 & 7.52 & -0.091 \\ | |
| 388 | +Forêt & max. & 500 & {---} & 1 & bootstrap ; 100 \% & 0.1074 & 7.79 & 8.69 & -0.166 \\ | |
| 389 | +Forêt (réf.) & max. & 500 & {---} & 2 & bootstrap ; 50 \% & 0.1067 & 7.52 & 8.64 & -0.196 \\ | |
| 390 | +Forêt & max. & 500 & {---} & 5 & bootstrap ; 33 \% & 0.1151 & 7.84 & 9.32 & -0.272 \\ | |
| 391 | +Forêt & max. & 100 & {---} & 2 & bootstrap ; 50 \% & 0.1065 & 7.52 & 8.58 & -0.194 \\ | |
| 392 | 392 | \midrule |
| 393 | −Hédonique de référence & \multicolumn{6}{l}{16 paramètres, semi-log, MCO} & 0.0839 & 5.68 & 6.83 & -0.059 \\ | |
| 393 | +Hédonique (réf.) & \multicolumn{5}{l}{16 paramètres, semi-log, MCO} & 0.0839 & 5.68 & 6.83 & -0.059 \\ | |
| 394 | 394 | \bottomrule |
| 395 | 395 | \end{tabular} |
| 396 | −\tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py}}. Scikit-learn 1.6 ; graine 20261031 pour le sous-échantillonnage, le bootstrap et le tirage des variables.} | |
| 396 | +\tabsource{\synth{\texttt{analysis/python/cases/ch37\_ml.py}}. Prof. 1 : souches (modèle additif) ; échantillon : fraction des ventes tirée pour chaque arbre (boosting) ou bootstrap (forêt) ; variables : fraction des variables candidates à chaque division. Scikit-learn 1.6 ; graine 20261031.} | |
| 397 | 397 | \end{table} |
| 398 | 398 | |
| 399 | 399 | \section{Limites : support, dérive, équité, opacité}\label{sec:37:limites} |
modified
manuscript/chapters/ch39.tex
+75 −66
@@ -66,9 +66,11 @@ Retransformation en niveau & facteur de Duan sur $\exp(\hat y)$ & implicite : la | ||
| 66 | 66 | |
| 67 | 67 | Le cas le plus simple suffit à montrer que la réconciliation pratiquée au \cref{ch:20} est déjà une mise à jour bayésienne. Supposons que l'évaluateur cherche le prix au mètre carré $\mu$ d'un segment de marché et qu'il dispose, d'une part, d'une opinion antérieure fondée sur son expérience, qu'il traduit par une loi normale $\mu \sim \mathcal N(m_0, s_0^2)$, et, d'autre part, de $n$ ventes dont les prix unitaires $y_i$ sont distribués autour de $\mu$ avec un écart-type $\sigma$ connu. La vraisemblance des données ne dépend que de la moyenne $\bar y$, et la postérieure est de nouveau normale : |
| 68 | 68 | \begin{equation}\label{eq:39:normale-normale} |
| 69 | −\mu \mid \mathbf{y} \sim \mathcal N\!\left(m_n, s_n^2\right), \qquad | |
| 70 | −\frac{1}{s_n^2} = \frac{1}{s_0^2} + \frac{n}{\sigma^2}, \qquad | |
| 71 | −m_n = s_n^2\left(\frac{m_0}{s_0^2} + \frac{n\,\bar y}{\sigma^2}\right) = w\,\bar y + (1 - w)\, m_0, \quad w = \frac{n/\sigma^2}{n/\sigma^2 + 1/s_0^2} . | |
| 69 | +\begin{aligned} | |
| 70 | +\mu \mid \mathbf{y} &\sim \mathcal N\!\left(m_n, s_n^2\right), \qquad | |
| 71 | +\frac{1}{s_n^2} = \frac{1}{s_0^2} + \frac{n}{\sigma^2}, \\ | |
| 72 | +m_n &= s_n^2\left(\frac{m_0}{s_0^2} + \frac{n\,\bar y}{\sigma^2}\right) = w\,\bar y + (1 - w)\, m_0, \qquad w = \frac{n/\sigma^2}{n/\sigma^2 + 1/s_0^2} . | |
| 73 | +\end{aligned} | |
| 72 | 74 | \end{equation} |
| 73 | 75 | La moyenne a posteriori est une moyenne pondérée de la moyenne des ventes et de l'opinion antérieure, les poids étant les précisions, c'est-à-dire les inverses des variances. C'est, mot pour mot, la règle de pondération optimale de la \cref{prop:indication} du \cref{ch:16} appliquée à deux indications : les ventes, de variance $\sigma^2/n$, et le jugement, de variance $s_0^2$. L'évaluateur qui écrit qu'il « accorde plus de poids aux comparables, mais tempère leur indication par sa connaissance du secteur » applique l'\cref{eq:39:normale-normale} sans l'écrire ; la version explicite a l'avantage de dire \emph{combien} il tempère, et de faire décroître automatiquement le poids du jugement à mesure que les ventes s'accumulent. La précision a priori $1/s_0^2$ s'interprète comme un nombre de ventes équivalent, $n_0 = \sigma^2/s_0^2$ : un expert dont l'opinion vaut quatre ventes du marché a un $s_0$ égal à la moitié de $\sigma$. L'\cref{ex:39:1} applique cette formule à un marché mince ; le reste du chapitre la généralise à la régression, où $\mu$ devient un vecteur de coefficients et $\sigma^2$ une inconnue de plus. |
| 74 | 76 | |
@@ -87,20 +89,22 @@ où la loi inverse-gamma a pour densité $p(\sigma^2) \propto (\sigma^2)^{-(a_0 | ||
| 87 | 89 | \begin{proposition}{Postérieure normale--inverse-gamma}{39-posterieure} |
| 88 | 90 | Sous le modèle normal et l'a priori \eqref{eq:39:nig-prior}, la postérieure est NIG de paramètres |
| 89 | 91 | \begin{equation}\label{eq:39:posterieure} |
| 90 | −\mathbf{V}_n = \left(\mathbf{V}_0^{-1} + \mathbf{X}\T\mathbf{X}\right)^{-1}, \quad | |
| 91 | −\mathbf{m}_n = \mathbf{V}_n\left(\mathbf{V}_0^{-1}\mathbf{m}_0 + \mathbf{X}\T\mathbf{y}\right), \quad | |
| 92 | −a_n = a_0 + \frac{n}{2}, \quad | |
| 93 | −b_n = b_0 + \frac{1}{2}\left(\mathbf{y}\T\mathbf{y} + \mathbf{m}_0\T\mathbf{V}_0^{-1}\mathbf{m}_0 - \mathbf{m}_n\T\mathbf{V}_n^{-1}\mathbf{m}_n\right). | |
| 92 | +\begin{aligned} | |
| 93 | +\mathbf{V}_n &= \left(\mathbf{V}_0^{-1} + \mathbf{X}\T\mathbf{X}\right)^{-1}, & | |
| 94 | +\mathbf{m}_n &= \mathbf{V}_n\left(\mathbf{V}_0^{-1}\mathbf{m}_0 + \mathbf{X}\T\mathbf{y}\right), \\ | |
| 95 | +a_n &= a_0 + \frac{n}{2}, & | |
| 96 | +b_n &= b_0 + \frac{1}{2}\left(\mathbf{y}\T\mathbf{y} + \mathbf{m}_0\T\mathbf{V}_0^{-1}\mathbf{m}_0 - \mathbf{m}_n\T\mathbf{V}_n^{-1}\mathbf{m}_n\right). | |
| 97 | +\end{aligned} | |
| 94 | 98 | \end{equation} |
| 95 | 99 | La loi marginale a posteriori de $\boldsymbol\beta$ est une loi de Student multivariée à $2a_n$ degrés de liberté, de centre $\mathbf{m}_n$ et de matrice d'échelle $(b_n/a_n)\mathbf{V}_n$ ; chaque coefficient a pour écart-type a posteriori $\sqrt{(b_n/(a_n - 1))\,[\mathbf{V}_n]_{kk}}$. |
| 96 | 100 | \end{proposition} |
| 97 | 101 | \begin{proof} |
| 98 | 102 | Le produit de la vraisemblance et de l'a priori s'écrit, à une constante près, |
| 99 | −\[ | |
| 100 | −p(\boldsymbol\beta, \sigma^2 \mid \mathbf{y}) \propto (\sigma^2)^{-n/2}\exp\!\left[-\frac{(\mathbf{y} - \mathbf{X}\boldsymbol\beta)\T(\mathbf{y} - \mathbf{X}\boldsymbol\beta)}{2\sigma^2}\right] | |
| 101 | −(\sigma^2)^{-k/2}\exp\!\left[-\frac{(\boldsymbol\beta - \mathbf{m}_0)\T\mathbf{V}_0^{-1}(\boldsymbol\beta - \mathbf{m}_0)}{2\sigma^2}\right] | |
| 102 | −(\sigma^2)^{-(a_0+1)}\exp\!\left[-\frac{b_0}{\sigma^2}\right]. | |
| 103 | −\] | |
| 103 | +\begin{align*} | |
| 104 | +p(\boldsymbol\beta, \sigma^2 \mid \mathbf{y}) \propto{}& (\sigma^2)^{-n/2}\exp\!\left[-\frac{(\mathbf{y} - \mathbf{X}\boldsymbol\beta)\T(\mathbf{y} - \mathbf{X}\boldsymbol\beta)}{2\sigma^2}\right] | |
| 105 | +(\sigma^2)^{-k/2}\exp\!\left[-\frac{(\boldsymbol\beta - \mathbf{m}_0)\T\mathbf{V}_0^{-1}(\boldsymbol\beta - \mathbf{m}_0)}{2\sigma^2}\right] \\ | |
| 106 | +&\times (\sigma^2)^{-(a_0+1)}\exp\!\left[-\frac{b_0}{\sigma^2}\right]. | |
| 107 | +\end{align*} | |
| 104 | 108 | Les deux formes quadratiques en $\boldsymbol\beta$ se regroupent. En développant, leur somme vaut $\boldsymbol\beta\T(\mathbf{X}\T\mathbf{X} + \mathbf{V}_0^{-1})\boldsymbol\beta - 2\boldsymbol\beta\T(\mathbf{X}\T\mathbf{y} + \mathbf{V}_0^{-1}\mathbf{m}_0) + \mathbf{y}\T\mathbf{y} + \mathbf{m}_0\T\mathbf{V}_0^{-1}\mathbf{m}_0$. Avec les définitions de $\mathbf{V}_n$ et de $\mathbf{m}_n$, on complète le carré : cette somme égale $(\boldsymbol\beta - \mathbf{m}_n)\T\mathbf{V}_n^{-1}(\boldsymbol\beta - \mathbf{m}_n) + \mathbf{y}\T\mathbf{y} + \mathbf{m}_0\T\mathbf{V}_0^{-1}\mathbf{m}_0 - \mathbf{m}_n\T\mathbf{V}_n^{-1}\mathbf{m}_n$, dont le premier terme donne le noyau d'une normale $\mathcal N(\mathbf{m}_n, \sigma^2\mathbf{V}_n)$ pour $\boldsymbol\beta \mid \sigma^2$ et dont le reste, divisé par $2\sigma^2$, s'ajoute à $b_0/\sigma^2$ pour former $b_n/\sigma^2$. Les puissances de $\sigma^2$ se regroupent en $(\sigma^2)^{-(a_0 + n/2 + 1)}$ une fois le facteur $(\sigma^2)^{-k/2}$ absorbé par la normalisation de la normale en $\boldsymbol\beta$, d'où $a_n$. La marginale de $\boldsymbol\beta$ s'obtient en intégrant $\sigma^2$ : l'intégrale d'une densité normale en $\boldsymbol\beta$ contre une inverse-gamma en $\sigma^2$ est une loi de Student de degrés de liberté $2a_n$, ce que l'on vérifie en reconnaissant, dans $\int (\sigma^2)^{-(a_n + k/2 + 1)}\exp[-(b_n + \tfrac12 Q)/\sigma^2]\,\dd\sigma^2 \propto (b_n + \tfrac12 Q)^{-(a_n + k/2)}$, avec $Q = (\boldsymbol\beta - \mathbf{m}_n)\T\mathbf{V}_n^{-1}(\boldsymbol\beta - \mathbf{m}_n)$, le noyau $[1 + Q/(2b_n)]^{-(2a_n + k)/2}$ d'une Student multivariée. La variance d'une Student d'échelle $s$ et de $\nu$ degrés de liberté est $s^2\nu/(\nu - 2)$, d'où l'écart-type annoncé. |
| 105 | 109 | \end{proof} |
| 106 | 110 | |
@@ -151,9 +155,9 @@ où $\mathbf{x}_i$ ne contient plus de constante, celle-ci étant portée par le | ||
| 151 | 155 | \begin{proposition}{Rétrécissement de l'effet de secteur}{39-retrecissement} |
| 152 | 156 | Dans le modèle \eqref{eq:39:hier}, conditionnellement à $\boldsymbol\beta$, $\alpha_0$, $\sigma^2$ et $\tau^2$, l'effet du secteur $s$ qui compte $n_s$ ventes a pour loi a posteriori |
| 153 | 157 | \begin{equation}\label{eq:39:retrecissement} |
| 154 | −\alpha_s \mid \cdot \sim \mathcal N\!\left(B_s\,\bar r_s + (1 - B_s)\,\alpha_0,\ \frac{\sigma^2}{n_s}\,B_s\right), \qquad B_s = \frac{n_s\tau^2}{n_s\tau^2 + \sigma^2}, \qquad \bar r_s = \frac{1}{n_s}\sum_{i : s(i) = s}\left(\ln P_i - \mathbf{x}_i\T\boldsymbol\beta\right). | |
| 158 | +\alpha_s \mid \cdot \sim \mathcal N\!\left(B_s\,\bar r_s + (1 - B_s)\,\alpha_0,\ \frac{\sigma^2}{n_s}\,B_s\right), \qquad B_s = \frac{n_s\tau^2}{n_s\tau^2 + \sigma^2}, | |
| 155 | 159 | \end{equation} |
| 156 | −Le facteur $B_s \in (0, 1)$ est le poids de la moyenne des résidus du secteur ; $1 - B_s$ est le poids de la moyenne commune, et la variance est celle de l'effet fixe, $\sigma^2/n_s$, multipliée par $B_s$. | |
| 160 | +où $\bar r_s = n_s^{-1}\sum_{i : s(i) = s}(\ln P_i - \mathbf{x}_i\T\boldsymbol\beta)$ est la moyenne des résidus partiels du secteur. Le facteur $B_s \in (0, 1)$ est le poids de la moyenne des résidus du secteur ; $1 - B_s$ est le poids de la moyenne commune, et la variance est celle de l'effet fixe, $\sigma^2/n_s$, multipliée par $B_s$. | |
| 157 | 161 | \end{proposition} |
| 158 | 162 | \begin{proof} |
| 159 | 163 | Conditionnellement aux autres paramètres, les $n_s$ quantités $r_i = \ln P_i - \mathbf{x}_i\T\boldsymbol\beta$ du secteur $s$ sont indépendantes de loi $\mathcal N(\alpha_s, \sigma^2)$, et $\alpha_s$ a pour a priori $\mathcal N(\alpha_0, \tau^2)$. C'est exactement la situation de l'\cref{eq:39:normale-normale} avec $m_0 = \alpha_0$, $s_0^2 = \tau^2$, $n = n_s$ et $\bar y = \bar r_s$ : la précision a posteriori est $n_s/\sigma^2 + 1/\tau^2$, dont l'inverse est $\sigma^2\tau^2/(n_s\tau^2 + \sigma^2) = (\sigma^2/n_s)B_s$, et la moyenne est $(n_s\bar r_s/\sigma^2 + \alpha_0/\tau^2)/(n_s/\sigma^2 + 1/\tau^2) = B_s\bar r_s + (1 - B_s)\alpha_0$. |
@@ -260,29 +264,30 @@ L'exemple procède en six étapes : la régression conjuguée sur les 600 ventes | ||
| 260 | 264 | |
| 261 | 265 | \begin{table}[htbp] |
| 262 | 266 | \caption{Régression hédonique bayésienne conjuguée sur les 600 ventes du cas 1 : a priori de référence, postérieure NIG et comparaison aux moindres carrés (données synthétiques)}\label{tab:39:conjugue} |
| 263 | −\centering\footnotesize\setlength{\tabcolsep}{3pt} | |
| 264 | −\begin{tabular}{@{}l S[table-format=-2.4] S[table-format=1.4] S[table-format=-2.4] S[table-format=1.4] S[table-format=-2.4] S[table-format=-2.4] S[table-format=-1.4]@{}} | |
| 267 | +\centering\scriptsize\setlength{\tabcolsep}{2.5pt} | |
| 268 | +\begin{tabular}{@{}l c S[table-format=-2.4] S[table-format=1.4] S[table-format=-2.4] S[table-format=-2.4] S[table-format=-1.4]@{}} | |
| 265 | 269 | \toprule |
| 266 | −Variable & {MCO $\hat\beta$} & {E.-t. HC1} & {Moy. a post.} & {É.-t. a post.} & {Créd. 2,5 \%} & {Créd. 97,5 \%} & {Vrai} \\ | |
| 270 | +Variable & {MCO $\hat\beta$ (e.-t. HC1)} & {Moy. a post.} & {É.-t. a post.} & {Créd. 2,5 \%} & {Créd. 97,5 \%} & {Vrai} \\ | |
| 267 | 271 | \midrule |
| 268 | −Constante & 13.2074 & 0.0138 & 13.2074 & 0.0152 & 13.1777 & 13.2372 & {---} \\ | |
| 269 | −ln(superficie habitable / 140) & 0.5391 & 0.0127 & 0.5391 & 0.0138 & 0.5121 & 0.5660 & 0.5500 \\ | |
| 270 | −ln(terrain / 560) & 0.0937 & 0.0110 & 0.0937 & 0.0105 & 0.0730 & 0.1143 & 0.1000 \\ | |
| 271 | −Âge & -0.0051 & 0.0006 & -0.0051 & 0.0006 & -0.0063 & -0.0039 & -0.0055 \\ | |
| 272 | −Âge² / 100 & 0.0026 & 0.0006 & 0.0026 & 0.0007 & 0.0013 & 0.0040 & 0.0030 \\ | |
| 273 | −Qualité (écart à 3) & 0.0611 & 0.0042 & 0.0611 & 0.0041 & 0.0531 & 0.0691 & 0.0600 \\ | |
| 274 | −Garage (places) & 0.0324 & 0.0050 & 0.0324 & 0.0052 & 0.0222 & 0.0426 & 0.0350 \\ | |
| 275 | −Sous-sol fini & 0.0220 & 0.0069 & 0.0220 & 0.0070 & 0.0083 & 0.0356 & 0.0300 \\ | |
| 276 | −Piscine & 0.0263 & 0.0084 & 0.0263 & 0.0100 & 0.0067 & 0.0459 & 0.0200 \\ | |
| 277 | −À étages & 0.0301 & 0.0069 & 0.0301 & 0.0069 & 0.0166 & 0.0436 & 0.0200 \\ | |
| 278 | −Distance au centre $>$ 3 km & -0.0036 & 0.0027 & -0.0036 & 0.0027 & -0.0089 & 0.0018 & -0.0060 \\ | |
| 279 | −Secteur Gatineau & -0.0223 & 0.0146 & -0.0223 & 0.0147 & -0.0511 & 0.0065 & -0.0215 \\ | |
| 280 | −Secteur Aylmer & 0.0854 & 0.0231 & 0.0854 & 0.0237 & 0.0390 & 0.1318 & 0.1096 \\ | |
| 281 | −Secteur Buckingham & -0.2504 & 0.0718 & -0.2504 & 0.0732 & -0.3940 & -0.1067 & -0.1844 \\ | |
| 282 | −Secteur Masson-Angers & -0.2631 & 0.0672 & -0.2631 & 0.0669 & -0.3943 & -0.1320 & -0.2044 \\ | |
| 283 | −Mois depuis le 1\ier{} juillet 2024 & 0.0036 & 0.0003 & 0.0036 & 0.0003 & 0.0031 & 0.0042 & 0.0036 \\ | |
| 272 | +Constante & 13,2074 (0,0138) & 13.2074 & 0.0152 & 13.1777 & 13.2372 & {---} \\ | |
| 273 | +ln(superficie habitable / 140) & 0,5391 (0,0127) & 0.5391 & 0.0138 & 0.5121 & 0.5660 & 0.5500 \\ | |
| 274 | +ln(terrain / 560) & 0,0937 (0,0110) & 0.0937 & 0.0105 & 0.0730 & 0.1143 & 0.1000 \\ | |
| 275 | +Âge & $-$0,0051 (0,0006) & -0.0051 & 0.0006 & -0.0063 & -0.0039 & -0.0055 \\ | |
| 276 | +Âge² / 100 & 0,0026 (0,0006) & 0.0026 & 0.0007 & 0.0013 & 0.0040 & 0.0030 \\ | |
| 277 | +Qualité (écart à 3) & 0,0611 (0,0042) & 0.0611 & 0.0041 & 0.0531 & 0.0691 & 0.0600 \\ | |
| 278 | +Garage (places) & 0,0324 (0,0050) & 0.0324 & 0.0052 & 0.0222 & 0.0426 & 0.0350 \\ | |
| 279 | +Sous-sol fini & 0,0220 (0,0069) & 0.0220 & 0.0070 & 0.0083 & 0.0356 & 0.0300 \\ | |
| 280 | +Piscine & 0,0263 (0,0084) & 0.0263 & 0.0100 & 0.0067 & 0.0459 & 0.0200 \\ | |
| 281 | +À étages & 0,0301 (0,0069) & 0.0301 & 0.0069 & 0.0166 & 0.0436 & 0.0200 \\ | |
| 282 | +Distance au centre $>$ 3 km & $-$0,0036 (0,0027) & -0.0036 & 0.0027 & -0.0089 & 0.0018 & -0.0060 \\ | |
| 283 | +Secteur Gatineau & $-$0,0223 (0,0146) & -0.0223 & 0.0147 & -0.0511 & 0.0065 & -0.0215 \\ | |
| 284 | +Secteur Aylmer & 0,0854 (0,0231) & 0.0854 & 0.0237 & 0.0390 & 0.1318 & 0.1096 \\ | |
| 285 | +Secteur Buckingham & $-$0,2504 (0,0718) & -0.2504 & 0.0732 & -0.3940 & -0.1067 & -0.1844 \\ | |
| 286 | +Secteur Masson-Angers & $-$0,2631 (0,0672) & -0.2631 & 0.0669 & -0.3943 & -0.1320 & -0.2044 \\ | |
| 287 | +Mois depuis le 1\ier{} juillet 2024 & 0,0036 (0,0003) & 0.0036 & 0.0003 & 0.0031 & 0.0042 & 0.0036 \\ | |
| 284 | 288 | \midrule |
| 285 | −\multicolumn{8}{@{}l}{$n = 600$ ; $k = 16$ ; $a_n = 292$ ($\nu = 584$) ; $b_n = 2{,}0122$ ; $\E[\sigma \mid \mathbf{y}] = 0{,}0832$ (MCO : 0,0830 ; vrai : 0,085) ; 15 paramètres vrais sur 15 dans l'intervalle à 95 \%} \\ | |
| 289 | +\multicolumn{7}{@{}l}{$n = 600$ ; $k = 16$ ; $a_n = 292$ ($\nu = 584$) ; $b_n = 2{,}0122$ ; $\E[\sigma \mid \mathbf{y}] = 0{,}0832$ (MCO : 0,0830 ; vrai : 0,085)} \\ | |
| 290 | +\multicolumn{7}{@{}l}{15 paramètres de génération sur 15 dans l'intervalle de crédibilité à 95 \%} \\ | |
| 286 | 291 | \bottomrule |
| 287 | 292 | \end{tabular} |
| 288 | 293 | \tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py}}. Écart-type a posteriori de la marginale de Student ; intervalles de crédibilité à queues égales ; MCO et HC1 : \cref{tab:18:resultats}.} |
@@ -297,14 +302,14 @@ Mois depuis le 1\ier{} juillet 2024 & 0.0036 & 0.0003 & 0.0036 & 0.0003 & 0.0031 | ||
| 297 | 302 | |
| 298 | 303 | \begin{table}[htbp] |
| 299 | 304 | \caption{Distribution prédictive du prix du sujet du cas 1 au 1\ier{} septembre 2026 selon trois approches (données synthétiques)}\label{tab:39:predictive} |
| 300 | −\centering\small\setlength{\tabcolsep}{4pt} | |
| 301 | −\begin{tabular}{@{}l S[table-format=6.0] S[table-format=6.0] S[table-format=6.0] S[table-format=6.0] S[table-format=6.0] S[table-format=6.0]@{}} | |
| 305 | +\centering\footnotesize\setlength{\tabcolsep}{3pt} | |
| 306 | +\begin{tabular}{@{}>{\raggedright\arraybackslash}p{34mm} S[table-format=6.0] c S[table-format=6.0] S[table-format=6.0] S[table-format=6.0] S[table-format=6.0]@{}} | |
| 302 | 307 | \toprule |
| 303 | 308 | Approche & {Médiane (\$)} & {Moyenne (\$)} & {Borne 5 \%} & {Borne 95 \%} & {Borne 2,5 \%} & {Borne 97,5 \%} \\ |
| 304 | 309 | \midrule |
| 305 | −Fréquentiste (ch. 18 : normale, HC1, Duan) & 635821 & 637953 & 554095 & 729601 & 539682 & 749087 \\ | |
| 306 | −Conjuguée, a priori de référence (Student, 584 ddl) & 635821 & {n'existe pas} & 553979 & 729754 & 539504 & 749334 \\ | |
| 307 | −Hiérarchique (8 000 tirages de Gibbs) & 634748 & 637727 & 554564 & 729004 & 540309 & 749431 \\ | |
| 310 | +Fréquentiste (ch. 18 : normale, HC1, Duan) & 635821 & 637 953 & 554095 & 729601 & 539682 & 749087 \\ | |
| 311 | +Conjuguée, a priori de référence (Student, 584 ddl) & 635821 & n'existe pas & 553979 & 729754 & 539504 & 749334 \\ | |
| 312 | +Hiérarchique (8 000 tirages de Gibbs) & 634748 & 637 727 & 554564 & 729004 & 540309 & 749431 \\ | |
| 308 | 313 | \bottomrule |
| 309 | 314 | \end{tabular} |
| 310 | 315 | \tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py} ; ligne fréquentiste : \texttt{traite.cas1.predire} et \texttt{intervalle\_prediction} aux niveaux 90 et 95 \%}. La moyenne d'une loi log-Student n'existe pas (\cref{prop:39-predictive}) ; la moyenne hiérarchique est la moyenne des tirages exponentiés.} |
@@ -319,21 +324,21 @@ Hiérarchique (8 000 tirages de Gibbs) & 634748 & 637727 & 554564 & 729004 & 540 | ||
| 319 | 324 | |
| 320 | 325 | \begin{table}[htbp] |
| 321 | 326 | \caption{Petit marché : 40 ventes à moins de 3 km du sujet et de moins de 18 mois, sous un a priori de référence et sous un a priori emprunté aux 414 ventes des autres secteurs (données synthétiques)}\label{tab:39:petit} |
| 322 | −\centering\footnotesize\setlength{\tabcolsep}{3pt} | |
| 323 | −\begin{tabular}{@{}l S[table-format=1.3] S[table-format=1.3] S[table-format=1.3] S[table-format=1.4] S[table-format=6.0] S[table-format=6.0] S[table-format=6.0] S[table-format=2.1]@{}} | |
| 327 | +\centering\scriptsize\setlength{\tabcolsep}{2pt} | |
| 328 | +\begin{tabular}{@{}l c c S[table-format=6.0] S[table-format=6.0] S[table-format=6.0] S[table-format=2.1]@{}} | |
| 324 | 329 | \toprule |
| 325 | −A priori & {$\beta_{\ln S}$ (é.-t.)} & {Qualité (é.-t.)} & {Garage (é.-t.)} & {$\E[\sigma]$} & {Médiane (\$)} & {Créd. 2,5 \%} & {Créd. 97,5 \%} & {Largeur (\%)} \\ | |
| 330 | +A priori & {$\beta_{\ln S}$ (é.-t.)} & {Qualité (é.-t.)} & {Médiane (\$)} & {Créd. 2,5 \%} & {Créd. 97,5 \%} & {Larg. (\%)} \\ | |
| 326 | 331 | \midrule |
| 327 | −Référence, 40 ventes ($\nu = 28$) & {0,611 (0,067)} & {0,101 (0,022)} & {0,010 (0,024)} & 0.0924 & 650965 & 535079 & 791950 & 39.5 \\ | |
| 328 | −Marché voisin, $\kappa = 1$ & {0,543 (0,016)} & {0,062 (0,005)} & {0,027 (0,006)} & 0.0829 & 630978 & 534942 & 744255 & 33.2 \\ | |
| 329 | −Marché voisin, $\kappa = 4$ & {0,550 (0,028)} & {0,067 (0,008)} & {0,025 (0,011)} & 0.0826 & 633734 & 536880 & 748059 & 33.3 \\ | |
| 330 | −Marché voisin, $\kappa = 16$ & {0,568 (0,042)} & {0,076 (0,013)} & {0,019 (0,016)} & 0.0823 & 637196 & 539063 & 753193 & 33.6 \\ | |
| 332 | +Référence, 40 ventes ($\nu = 28$) & 0,611 (0,067) & 0,101 (0,022) & 650965 & 535079 & 791950 & 39.5 \\ | |
| 333 | +Voisin, $\kappa = 1$ & 0,543 (0,016) & 0,062 (0,005) & 630978 & 534942 & 744255 & 33.2 \\ | |
| 334 | +Voisin, $\kappa = 4$ & 0,550 (0,028) & 0,067 (0,008) & 633734 & 536880 & 748059 & 33.3 \\ | |
| 335 | +Voisin, $\kappa = 16$ & 0,568 (0,042) & 0,076 (0,013) & 637196 & 539063 & 753193 & 33.6 \\ | |
| 331 | 336 | \midrule |
| 332 | −Référence, Hull seul (186 ventes) & {0,540 (0,025)} & {---} & {---} & {---} & 623894 & 526381 & 739471 & 34.2 \\ | |
| 333 | −Référence, 600 ventes & {0,539 (0,014)} & {0,061 (0,004)} & {0,032 (0,005)} & 0.0832 & 635821 & 539504 & 749334 & 33.0 \\ | |
| 337 | +Référence, Hull seul (186 ventes) & 0,540 (0,025) & --- & 623894 & 526381 & 739471 & 34.2 \\ | |
| 338 | +Référence, 600 ventes & 0,539 (0,014) & 0,061 (0,004) & 635821 & 539504 & 749334 & 33.0 \\ | |
| 334 | 339 | \bottomrule |
| 335 | 340 | \end{tabular} |
| 336 | −\tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py}}. Largeur : $(\text{borne } 97{,}5\,\% - \text{borne } 2{,}5\,\%)/\text{médiane}$. A priori emprunté : pentes centrées sur la postérieure des autres secteurs avec $\mathbf{V}_0 = \kappa\mathbf{V}^{v}$, constante plate, $a_0 = a^{v}$, $b_0 = b^{v}$.} | |
| 341 | +\tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py}}. Largeur : $(\text{borne } 97{,}5\,\% - \text{borne } 2{,}5\,\%)/\text{médiane}$. A priori emprunté : pentes centrées sur la postérieure des autres secteurs avec $\mathbf{V}_0 = \kappa\mathbf{V}^{v}$, constante plate, $a_0 = a^{v}$, $b_0 = b^{v}$ ; coefficient du garage et $\E[\sigma]$ dans le texte.} | |
| 337 | 342 | \end{table} |
| 338 | 343 | |
| 339 | 344 | \begin{figure}[htbp] |
@@ -345,26 +350,29 @@ Référence, 600 ventes & {0,539 (0,014)} & {0,061 (0,004)} & {0,032 (0,005)} & | ||
| 345 | 350 | |
| 346 | 351 | \begin{table}[htbp] |
| 347 | 352 | \caption{Modèle hiérarchique des secteurs sur les 600 ventes du cas 1 : postérieure par Gibbs par blocs (4 chaînes, 8 000 tirages) et effets de secteur relatifs à Hull comparés aux effets fixes du chapitre 18 (données synthétiques)}\label{tab:39:hier} |
| 348 | −\centering\footnotesize\setlength{\tabcolsep}{3.5pt} | |
| 353 | +\centering\scriptsize\setlength{\tabcolsep}{1.5pt} | |
| 349 | 354 | \begin{tabular}{@{}l S[table-format=-2.4] S[table-format=1.4] S[table-format=-2.4] S[table-format=-2.4] S[table-format=-1.4] S[table-format=1.4] S[table-format=-1.4]@{}} |
| 350 | 355 | \toprule |
| 351 | −Paramètre & {Moyenne} & {É.-t.} & {Créd. 2,5 \%} & {Créd. 97,5 \%} & {Effet fixe} & {E.-t. HC1} & {Vrai} \\ | |
| 356 | + & \multicolumn{4}{c}{Postérieure hiérarchique} & \multicolumn{2}{c}{Ch. 18} & \\ | |
| 357 | +\cmidrule(lr){2-5}\cmidrule(lr){6-7} | |
| 358 | +Paramètre & {Moyenne} & {É.-t.} & {2,5 \%} & {97,5 \%} & {Effet fixe} & {E.-t. HC1} & {Vrai} \\ | |
| 352 | 359 | \midrule |
| 353 | 360 | $\sigma$ & 0.0832 & 0.0024 & 0.0785 & 0.0881 & 0.0830 & {---} & 0.0850 \\ |
| 354 | 361 | $\tau$ (médiane 0,181) & 0.2281 & 0.2050 & 0.0797 & 0.6330 & {---} & {---} & {---} \\ |
| 355 | −$\alpha_0$ (niveau moyen des secteurs) & 13.0209 & 0.1474 & 12.7786 & 13.2561 & {---} & {---} & {---} \\ | |
| 362 | +$\alpha_0$ (niveau moyen) & 13.0209 & 0.1474 & 12.7786 & 13.2561 & {---} & {---} & {---} \\ | |
| 356 | 363 | $\alpha_{\text{Hull}}$ & 13.0896 & 0.0203 & 13.0504 & 13.1293 & {---} & {---} & {---} \\ |
| 357 | 364 | \addlinespace |
| 358 | −$\alpha_{\text{Gatineau}} - \alpha_{\text{Hull}}$ & -0.0153 & 0.0151 & -0.0450 & 0.0141 & -0.0223 & 0.0146 & -0.0215 \\ | |
| 359 | −$\alpha_{\text{Aylmer}} - \alpha_{\text{Hull}}$ & 0.0976 & 0.0243 & 0.0507 & 0.1449 & 0.0854 & 0.0231 & 0.1096 \\ | |
| 360 | −$\alpha_{\text{Buckingham}} - \alpha_{\text{Hull}}$ & -0.2073 & 0.0761 & -0.3562 & -0.0606 & -0.2504 & 0.0718 & -0.1844 \\ | |
| 361 | −$\alpha_{\text{Masson-Angers}} - \alpha_{\text{Hull}}$ & -0.2240 & 0.0695 & -0.3602 & -0.0894 & -0.2631 & 0.0672 & -0.2044 \\ | |
| 365 | +$\alpha_{\text{Gat}} - \alpha_{\text{Hull}}$ & -0.0153 & 0.0151 & -0.0450 & 0.0141 & -0.0223 & 0.0146 & -0.0215 \\ | |
| 366 | +$\alpha_{\text{Ayl}} - \alpha_{\text{Hull}}$ & 0.0976 & 0.0243 & 0.0507 & 0.1449 & 0.0854 & 0.0231 & 0.1096 \\ | |
| 367 | +$\alpha_{\text{Buck}} - \alpha_{\text{Hull}}$ & -0.2073 & 0.0761 & -0.3562 & -0.0606 & -0.2504 & 0.0718 & -0.1844 \\ | |
| 368 | +$\alpha_{\text{MA}} - \alpha_{\text{Hull}}$ & -0.2240 & 0.0695 & -0.3602 & -0.0894 & -0.2631 & 0.0672 & -0.2044 \\ | |
| 362 | 369 | \addlinespace |
| 363 | 370 | $\beta_{\ln S}$ & 0.5395 & 0.0137 & 0.5130 & 0.5662 & 0.5391 & 0.0127 & 0.5500 \\ |
| 364 | 371 | $\beta_{\text{qualité}}$ & 0.0613 & 0.0041 & 0.0533 & 0.0695 & 0.0611 & 0.0042 & 0.0600 \\ |
| 365 | 372 | $\beta_{\text{dist}}$ & -0.0052 & 0.0028 & -0.0106 & 0.0004 & -0.0036 & 0.0027 & -0.0060 \\ |
| 366 | 373 | \midrule |
| 367 | −\multicolumn{8}{@{}l}{Facteurs de rétrécissement $B_s$ à la médiane de $(\sigma^2, \tau^2)$ : Hull 0,999 ; Gatineau 0,999 ; Aylmer 0,998 ; Buckingham 0,995 ; Masson-Angers 0,995} \\ | |
| 374 | +\multicolumn{8}{@{}l}{$B_s$ (médiane de $\sigma^2$, $\tau^2$) : Hull 0,999 ; Gatineau 0,999 ; Aylmer 0,998 ; Buckingham 0,995 ; Masson-Angers 0,995} \\ | |
| 375 | +\multicolumn{8}{@{}l}{Gat : Gatineau ; Ayl : Aylmer ; Buck : Buckingham ; MA : Masson-Angers} \\ | |
| 368 | 376 | \bottomrule |
| 369 | 377 | \end{tabular} |
| 370 | 378 | \tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py}}. A priori : plats sur $\boldsymbol\beta$ et $\alpha_0$, $1/\sigma^2$ sur $\sigma^2$, uniforme sur $\tau$ ; les autres coefficients sont dans le script.} |
@@ -403,7 +411,7 @@ $\sigma$ & 1.000 & 7616 & 1.000 & 7664 \\ | ||
| 403 | 411 | |
| 404 | 412 | \begin{table}[htbp] |
| 405 | 413 | \caption{Expérience : secteur de Masson-Angers réduit à 5, 10, 20 puis 47 ventes ; effet du secteur et prédictive d'un sujet hypothétique situé à Masson-Angers (données synthétiques)}\label{tab:39:experience} |
| 406 | −\centering\footnotesize\setlength{\tabcolsep}{3pt} | |
| 414 | +\centering\scriptsize\setlength{\tabcolsep}{2.2pt} | |
| 407 | 415 | \begin{tabular}{@{}S[table-format=2.0] S[table-format=-1.3] S[table-format=1.3] S[table-format=-1.3] S[table-format=1.3] S[table-format=1.3] S[table-format=1.3] S[table-format=6.0] S[table-format=2.1] S[table-format=6.0] S[table-format=2.1]@{}} |
| 408 | 416 | \toprule |
| 409 | 417 | {$n_{\text{MA}}$} & {Effet fixe} & {É.-t.} & {Effet aléat.} & {É.-t.} & {$\tau$ méd.} & {$B_{\text{MA}}$} & {Méd. fixe (\$)} & {Larg. (\%)} & {Méd. hiér. (\$)} & {Larg. (\%)} \\ |
@@ -426,14 +434,14 @@ $\sigma$ & 1.000 & 7616 & 1.000 & 7664 \\ | ||
| 426 | 434 | |
| 427 | 435 | \begin{table}[htbp] |
| 428 | 436 | \caption{Comparaison des trois traitements des secteurs par le WAIC et la validation croisée une observation à la fois (600 ventes, données synthétiques)}\label{tab:39:criteres} |
| 429 | −\centering\small\setlength{\tabcolsep}{4pt} | |
| 430 | −\begin{tabular}{@{}l S[table-format=2.0] S[table-format=3.1] S[table-format=2.1] S[table-format=3.1] S[table-format=2.1] S[table-format=3.1] S[table-format=3.1] S[table-format=-3.1]@{}} | |
| 437 | +\centering\scriptsize\setlength{\tabcolsep}{3pt} | |
| 438 | +\begin{tabular}{@{}l S[table-format=3.1] S[table-format=2.1] S[table-format=3.1] S[table-format=2.1] S[table-format=3.1] S[table-format=3.1] S[table-format=-3.1]@{}} | |
| 431 | 439 | \toprule |
| 432 | −Modèle & {Coeff.} & {lppd} & {$p_{\mathrm{WAIC}}$} & {elpd$_{\mathrm{WAIC}}$} & {E.-t.} & {LOO exact} & {LOO import.} & {$\Delta$elpd} \\ | |
| 440 | +Modèle & {lppd} & {$p_{\mathrm{WAIC}}$} & {elpd$_{\mathrm{WAIC}}$} & {E.-t.} & {LOO exact} & {LOO import.} & {$\Delta$elpd} \\ | |
| 433 | 441 | \midrule |
| 434 | −Regroupement complet (sans secteur) & 12 & 510.2 & 12.4 & 497.8 & 17.5 & 497.8 & 497.8 & -135.3 \\ | |
| 435 | −Effets fixes de secteur (ch. 18) & 16 & 649.2 & 16.0 & 633.2 & 16.2 & 633.1 & 633.1 & 0.0 \\ | |
| 436 | −Effets aléatoires de secteur (hiérarchique) & {16 + 2} & 649.0 & 16.1 & 632.9 & 16.3 & {---} & 632.9 & -0.3 \\ | |
| 442 | +Regroupement complet (12 coefficients) & 510.2 & 12.4 & 497.8 & 17.5 & 497.8 & 497.8 & -135.3 \\ | |
| 443 | +Effets fixes, ch. 18 (16 coefficients) & 649.2 & 16.0 & 633.2 & 16.2 & 633.1 & 633.1 & 0.0 \\ | |
| 444 | +Effets aléatoires (16 coeff. + $\alpha_0$, $\tau$) & 649.0 & 16.1 & 632.9 & 16.3 & {---} & 632.9 & -0.3 \\ | |
| 437 | 445 | \bottomrule |
| 438 | 446 | \end{tabular} |
| 439 | 447 | \tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py}}. 2 000 tirages par modèle ; LOO exact par réestimation en forme fermée (modèles conjugués) ; LOO par importance tronquée ; E.-t. : erreur-type de l'elpd ; $\Delta$elpd par rapport au meilleur modèle. WAIC $= -2\,\mathrm{elpd}$ : $-995{,}7$, $-1266{,}3$ et $-1265{,}7$.} |
@@ -445,7 +453,7 @@ Le paramètre le moins bien informé du modèle hiérarchique est $\tau$, et la | ||
| 445 | 453 | |
| 446 | 454 | \begin{table}[htbp] |
| 447 | 455 | \caption{Sensibilité du modèle hiérarchique à l'a priori sur $\tau$ : 600 ventes et Masson-Angers réduit à 5 ventes (données synthétiques)}\label{tab:39:sensibilite} |
| 448 | −\centering\small\setlength{\tabcolsep}{4pt} | |
| 456 | +\centering\scriptsize\setlength{\tabcolsep}{2.5pt} | |
| 449 | 457 | \begin{tabular}{@{}l S[table-format=1.3] S[table-format=1.3] S[table-format=1.3] S[table-format=-1.3] S[table-format=1.3] S[table-format=1.3] S[table-format=-1.3] S[table-format=1.3]@{}} |
| 450 | 458 | \toprule |
| 451 | 459 | & \multicolumn{5}{c}{600 ventes} & \multicolumn{3}{c}{$n_{\text{MA}} = 5$} \\ |
@@ -457,7 +465,8 @@ $\mathcal{IG}(0{,}001 ; 0{,}001)$ sur $\tau^2$ & 0.149 & 0.079 & 0.343 & -0.211 | ||
| 457 | 465 | $\mathcal{IG}(1 ; 0{,}01)$ sur $\tau^2$ & 0.129 & 0.077 & 0.245 & -0.200 & 0.067 & 0.145 & -0.269 & 0.079 \\ |
| 458 | 466 | $\tau$ fixé à 0,157 (bayésien empirique) & 0.157 & {---} & {---} & -0.221 & 0.062 & 0.157 & -0.283 & 0.070 \\ |
| 459 | 467 | \midrule |
| 460 | −\multicolumn{9}{@{}l}{Pour mémoire : effet fixe de Masson-Angers $-0{,}263$ (0,067) avec 47 ventes, $-0{,}342$ (0,076) avec 5 ventes ; paramètre vrai $-0{,}204$} \\ | |
| 468 | +\multicolumn{9}{@{}l}{Pour mémoire : effet fixe de Masson-Angers $-0{,}263$ (0,067) avec 47 ventes, $-0{,}342$ (0,076) avec 5 ventes ;} \\ | |
| 469 | +\multicolumn{9}{@{}l}{paramètre de génération $-0{,}2044$} \\ | |
| 461 | 470 | \bottomrule |
| 462 | 471 | \end{tabular} |
| 463 | 472 | \tabsource{\synth{\texttt{analysis/python/cases/ch39\_bayes.py}}. Effet MA : $\alpha_{\text{Masson-Angers}} - \alpha_{\text{Hull}}$, moyenne et écart-type a posteriori ; Gibbs par blocs, 4 chaînes, 8 000 tirages.} |
modified
manuscript/chapters/ch40.tex
+4 −3
@@ -154,7 +154,7 @@ Les tirages confirment la dérivation : corrélation de Pearson empirique \num{0 | ||
| 154 | 154 | La simulation d'un modèle de flux actualisés n'a rien de mystérieux ; elle consiste à exécuter le calcul déterministe du \cref{ch:30} un grand nombre de fois. Les étapes sont les suivantes. |
| 155 | 155 | \begin{enumerate} |
| 156 | 156 | \item Déclarer les intrants incertains, leurs lois (\cref{tab:40:lois}) et leurs dépendances (\cref{eq:40:cholesky,eq:40:rRT}) ; fixer les autres intrants (ici la croissance réglementaire des loyers contractuels, \pct{3.1}, les coûts de vente, l'horizon). |
| 157 | −\item Fixer la graine du générateur de nombres pseudo-aléatoires, par exemple \texttt{default\_rng(20261031)} dans NumPy : sans graine, deux exécutions donnent deux résultats, et le rapport n'est pas reproductible. | |
| 157 | +\item Fixer la graine du générateur de nombres pseudo-aléatoires : sans graine, deux exécutions donnent deux résultats, et le rapport n'est pas reproductible. Le script du chapitre utilise la graine 20261031 du générateur \texttt{default\_rng} de NumPy. | |
| 158 | 158 | \item Tirer $N$ vecteurs d'intrants $\mathbf{X}^{(s)}$, $s = 1, \dots, N$. |
| 159 | 159 | \item Pour chaque tirage, projeter les revenus et dépenses sur l'horizon $T$ et l'année $T + 1$, calculer les flux avant dette, la valeur terminale et la valeur |
| 160 | 160 | \begin{equation}\label{eq:40:dcf-simule} |
@@ -284,9 +284,10 @@ Le \cref{tab:40:stress} applique cette lecture à six scénarios du cas 3. Le sc | ||
| 284 | 284 | \begin{table}[htbp]\centering |
| 285 | 285 | \caption{Stress tests déterministes du cas 3 et probabilité, dans la simulation, d'un résultat au moins aussi défavorable.}\label{tab:40:stress} |
| 286 | 286 | \small\setlength{\tabcolsep}{4pt} |
| 287 | −\begin{tabular}{@{}L{7.2cm}S[table-format=7.0]S[table-format=-2.1]S[table-format=2.2]@{}} | |
| 287 | +\begin{tabular}{@{}L{6.4cm}S[table-format=7.0]S[table-format=-2.1]S[table-format=2.2]@{}} | |
| 288 | 288 | \toprule |
| 289 | −Scénario & {Valeur (\$)} & {Écart à la base (\%)} & {P(valeur $\leq$ scénario) (\%)} \\ | |
| 289 | +Scénario & {Valeur} & {Écart à la} & {P(valeur $\leq$} \\ | |
| 290 | + & {(\$)} & {base (\%)} & {scénario) (\%)} \\ | |
| 290 | 291 | \midrule |
| 291 | 292 | Base (hypothèses du dossier) & 2208566 & 0.0 & 52.17 \\ |
| 292 | 293 | Hausse des taux : $r + 75$~pb, $R_T + 50$~pb (\cref{tab:30:scenarios}) & 1947889 & -11.8 & 20.72 \\ |
modified
manuscript/chapters/ch41.tex
+21 −21
@@ -25,7 +25,7 @@ La plus haute et meilleure utilisation d'un bien immobilier est l'usage, parmi c | ||
| 25 | 25 | |
| 26 | 26 | La définition porte une conséquence méthodologique immédiate : la valeur marchande d'un bien est le maximum, sur l'ensemble $\mathcal{U}$ des usages admissibles, des valeurs qu'il aurait sous chacun d'eux, |
| 27 | 27 | \begin{equation}\label{eq:41:max-usage} |
| 28 | −V = \max_{u \in \mathcal{U}} V(u), \qquad \mathcal{U} = \{u : \text{légalement permis, physiquement possible, financièrement faisable}\}, | |
| 28 | +V = \max_{u \in \mathcal{U}} V(u), \qquad \mathcal{U} = \{u : u \text{ permis, possible et faisable}\}, | |
| 29 | 29 | \end{equation} |
| 30 | 30 | et les trois premiers tests servent à construire l'ensemble $\mathcal{U}$ tandis que le quatrième, la productivité maximale, désigne l'élément qui réalise le maximum. L'\cref{eq:41:max-usage} explique pourquoi l'analyse précède le choix des méthodes : la comparaison, le coût et le revenu mesurent $V(u)$ pour un usage donné, et c'est la PHMU qui dit lequel. Un évaluateur qui compare une maison ancienne à d'autres maisons anciennes mesure $V(\text{maison})$ ; si le terrain vaut davantage pour un triplex que la maison entière, cette mesure n'est pas la valeur marchande. L'\cref{eq:16:esperance} du \cref{ch:16} définissait la valeur comme l'espérance du prix conditionnellement aux caractéristiques du bien ; la PHMU ajoute que l'usage fait partie de ces caractéristiques et qu'il n'est pas donné, mais choisi par l'acheteur le plus probable. |
| 31 | 31 | |
@@ -275,16 +275,16 @@ Les prix de sortie des unités neuves sont tirés du modèle hédonique du cas 1 | ||
| 275 | 275 | \begin{table}[htbp] |
| 276 | 276 | \caption{Programmes, prix de sortie et coûts de construction des quatre usages (dollars du T3 2026, données synthétiques)}\label{tab:41:prix} |
| 277 | 277 | \centering |
| 278 | −\small | |
| 279 | −\begin{tabular}{lS[table-format=6.0]S[table-format=6.0]S[table-format=7.0]S[table-format=4.0]S[table-format=6.0]} | |
| 278 | +\footnotesize\setlength{\tabcolsep}{3pt} | |
| 279 | +\begin{tabular}{>{\raggedright\arraybackslash}p{37mm}S[table-format=6.0]S[table-format=6.0]S[table-format=7.0]S[table-format=4.0]S[table-format=6.0]} | |
| 280 | 280 | \toprule |
| 281 | −Usage & {Prix maison isolée équiv. (\$)} & {Prix de l'unité (\$)} & {Produit $\mathit{GDV}$ (\$)} & {$D+I$ (\$/m\textsuperscript{2})} & {Coûts $C$ (\$)} \\ | |
| 281 | +Usage & {Maison isolée (\$)} & {Unité (\$)} & {$\mathit{GDV}$ (\$)} & {$D+I$ (\$/m\textsuperscript{2})} & {$C$ (\$)} \\ | |
| 282 | 282 | \midrule |
| 283 | 283 | S0 Maison actuelle (prédiction hédonique) & 637953 & {---} & {---} & {---} & {---} \\ |
| 284 | 284 | U Maison neuve, 1 $\times$ 165 m\textsuperscript{2} & 720727 & 720727 & 720727 & 2190 & 361425 \\ |
| 285 | −D Duplex, 2 $\times$ 120 m\textsuperscript{2} (décote 10 \%) & 550726 & 495654 & 991307 & 2228 & 534734 \\ | |
| 286 | −T Triplex, 3 $\times$ 100 m\textsuperscript{2} (décote 15 \%) & 480573 & 408487 & 1225460 & 2228 & 668417 \\ | |
| 287 | −Q Quadruplex, 4 $\times$ 85 m\textsuperscript{2} (décote 20 \%, non permis) & 428558 & 342846 & 1371384 & 2228 & 757540 \\ | |
| 285 | +D Duplex, 2 $\times$ 120 m\textsuperscript{2}, décote 10 \% & 550726 & 495654 & 991307 & 2228 & 534734 \\ | |
| 286 | +T Triplex, 3 $\times$ 100 m\textsuperscript{2}, décote 15 \% & 480573 & 408487 & 1225460 & 2228 & 668417 \\ | |
| 287 | +Q Quadruplex, 4 $\times$ 85 m\textsuperscript{2}, décote 20 \% (non permis) & 428558 & 342846 & 1371384 & 2228 & 757540 \\ | |
| 288 | 288 | \bottomrule |
| 289 | 289 | \end{tabular} |
| 290 | 290 | \tabsource{\synth{\texttt{analysis/python/cases/ch41\_phmu.py}, fonctions \texttt{produit\_vente} et \texttt{couts\_unitaires} ; modèle hédonique \texttt{traite.cas1.hedonique}, âge 0 ; devis du cas 1 (\texttt{ch21\_cout\_neuf.py}) ; IPCB Montréal T3 2026 (Statistique Canada, tableau 18-10-0289-01, consulté le 31 octobre 2026)}.} |
@@ -299,8 +299,8 @@ Le \cref{tab:41:residuel} déroule l'\cref{eq:41:residuel} pour les trois usages | ||
| 299 | 299 | \begin{table}[htbp] |
| 300 | 300 | \caption{Méthode résiduelle de développement pour les trois usages permis, convention du promoteur-marchand (dollars du T3 2026, données synthétiques)}\label{tab:41:residuel} |
| 301 | 301 | \centering |
| 302 | −\small | |
| 303 | −\begin{tabular}{lS[table-format=-7.0]S[table-format=-7.0]S[table-format=-7.0]} | |
| 302 | +\footnotesize | |
| 303 | +\begin{tabular}{>{\raggedright\arraybackslash}p{66mm}S[table-format=-7.0]S[table-format=-7.0]S[table-format=-7.0]} | |
| 304 | 304 | \toprule |
| 305 | 305 | Poste & {U Maison neuve} & {D Duplex} & {T Triplex} \\ |
| 306 | 306 | \midrule |
@@ -308,18 +308,18 @@ Produit de vente $\mathit{GDV}$ & 720727 & 991307 & 1225460 \\ | ||
| 308 | 308 | Frais de vente (4 \% du produit) & -28829 & -39652 & -49018 \\ |
| 309 | 309 | Coûts directs et indirects $C$ & -361425 & -534734 & -668417 \\ |
| 310 | 310 | Démolition et préparation du site $D$ & -30000 & -30000 & -30000 \\ |
| 311 | −Intérêts intérimaires $F$ (75 \% des coûts, 6,19 \%, tirage uniforme) & -6814 & -12290 & -18239 \\ | |
| 311 | +Intérêts intérimaires $F$ (prêt de 75 \% à 6,19 \%, tirage uniforme) & -6814 & -12290 & -18239 \\ | |
| 312 | 312 | Marge du promoteur $M$ (15 \% du produit) & -108109 & -148696 & -183819 \\ |
| 313 | 313 | \midrule |
| 314 | 314 | Reste à la livraison & 185550 & 225936 & 275967 \\ |
| 315 | −Durée totale $T$ (années) & 1.00 & 1.25 & 1.50 \\ | |
| 316 | −Facteur $(1 + \tau)(1 + r_L)^{T}$ & 1.1681 & 1.1858 & 1.2037 \\ | |
| 315 | +Durée totale $T$ (années) & {1,00} & {1,25} & {1,50} \\ | |
| 316 | +Facteur $(1 + \tau)(1 + r_L)^{T}$ & {1,1681} & {1,1858} & {1,2037} \\ | |
| 317 | 317 | \midrule |
| 318 | 318 | Valeur résiduelle du terrain $V_L$ & 158849 & 190541 & 229265 \\ |
| 319 | 319 | \quad dont contribution pour fins de parcs (10 \%) & 15885 & 19054 & 22927 \\ |
| 320 | 320 | Valeur résiduelle statique ($r_L = 0$) & 168682 & 205396 & 250879 \\ |
| 321 | 321 | \midrule |
| 322 | −Convention « construction sur commande » (marge 10 \% des coûts, sans frais de vente ni parcs) & 266187 & 330792 & 399479 \\ | |
| 322 | +Convention « construction sur commande » (marge 10 \% des coûts, ni frais de vente ni parcs) & 266187 & 330792 & 399479 \\ | |
| 323 | 323 | \bottomrule |
| 324 | 324 | \end{tabular} |
| 325 | 325 | \tabsource{\synth{\texttt{analysis/python/cases/ch41\_phmu.py}, fonction \texttt{residuel\_developpement} ; intérêts par \texttt{traite.finance.interets\_intermediaires}}.} |
@@ -348,13 +348,13 @@ La conclusion du bien amélioré est nette, mais elle est datée : les prix des | ||
| 348 | 348 | |
| 349 | 349 | \begin{figure}[htbp] |
| 350 | 350 | \centering |
| 351 | −\begin{tikzpicture}[every node/.style={font=\sffamily\footnotesize}, n/.style={draw=brandPrimary, fill=brandLight, rounded corners=1pt, align=center, minimum width=34mm, minimum height=11mm}, m/.style={draw=brandGreen, fill=green!4!white, rounded corners=1pt, align=center, minimum width=34mm, minimum height=11mm}, fl/.style={-{Stealth[length=1.8mm]}, brandGray, thick}] | |
| 352 | −\node[n] (a) at (0,0) {$t = 0$ : $\mathit{GDV}_0 = 1\,225\,460$\\exercice 0 ; continuation 2 837\\\textbf{valeur de l'option : 2 837 \$}}; | |
| 353 | −\node[n] (b) at (5.2,1.9) {$t = 1$, hausse : 1 532 535\\exercice 0 ; continuation 16 357\\valeur 16 357 \$ (attendre)}; | |
| 354 | −\node[n] (c) at (5.2,-1.9) {$t = 1$, baisse : 979 914\\exercice 0 ; continuation 0\\valeur 0 \$}; | |
| 355 | −\node[m] (d) at (10.4,3.4) {$t = 2$, deux hausses : 1 916 556\\$0{,}6729 \times 1\,916\,556 - 1\,195\,378$\\\textbf{exercice : 94 322 \$}}; | |
| 356 | −\node[n] (e) at (10.4,0) {$t = 2$, une hausse : 1 225 460\\exercice 0 \$}; | |
| 357 | −\node[n] (f) at (10.4,-3.4) {$t = 2$, deux baisses : 783 568\\exercice 0 \$}; | |
| 351 | +\begin{tikzpicture}[every node/.style={font=\sffamily\footnotesize}, n/.style={draw=brandPrimary, fill=brandLight, rounded corners=1pt, align=center, minimum width=31mm, minimum height=11mm, inner xsep=1.5pt}, m/.style={draw=brandGreen, fill=green!4!white, rounded corners=1pt, align=center, minimum width=31mm, minimum height=11mm, inner xsep=1.5pt}, fl/.style={-{Stealth[length=1.8mm]}, brandGray, thick}] | |
| 352 | +\node[n] (a) at (0,0) {$t = 0$ : $\mathit{GDV}_0 = 1\,225\,460$\\exercice 0 ; continuation 2 837\\\textbf{option : 2 837 \$}}; | |
| 353 | +\node[n] (b) at (4.7,1.9) {$t = 1$, hausse : 1 532 535\\exercice 0 ; continuation 16 357\\valeur 16 357 \$ (attendre)}; | |
| 354 | +\node[n] (c) at (4.7,-1.9) {$t = 1$, baisse : 979 914\\exercice 0 ; continuation 0\\valeur 0 \$}; | |
| 355 | +\node[m] (d) at (9.4,3.4) {$t = 2$, deux hausses : 1 916 556\\$0{,}6729 \times 1\,916\,556 - 1\,195\,378$\\\textbf{exercice : 94 322 \$}}; | |
| 356 | +\node[n] (e) at (9.4,0) {$t = 2$, une hausse : 1 225 460\\exercice 0 \$}; | |
| 357 | +\node[n] (f) at (9.4,-3.4) {$t = 2$, deux baisses : 783 568\\exercice 0 \$}; | |
| 358 | 358 | \draw[fl] (a) -- node[above, sloped]{$q = 0{,}1915$} (b); \draw[fl] (a) -- node[below, sloped]{$1 - q = 0{,}8085$} (c); |
| 359 | 359 | \draw[fl] (b) -- node[above, sloped]{$q$} (d); \draw[fl] (b) -- node[below, sloped]{$1-q$} (e); |
| 360 | 360 | \draw[fl] (c) -- node[above, sloped]{$q$} (e); \draw[fl] (c) -- node[below, sloped]{$1-q$} (f); |
@@ -376,7 +376,7 @@ Les conclusions de la \cref{sec:41:exemple} reposent sur des hypothèses que l' | ||
| 376 | 376 | \begin{table}[htbp] |
| 377 | 377 | \caption{Sensibilité de la valeur résiduelle du triplex (convention du promoteur, cas de base \dollars{229265}) à chaque hypothèse, les autres étant maintenues}\label{tab:41:sensibilite} |
| 378 | 378 | \centering |
| 379 | −\small | |
| 379 | +\footnotesize\setlength{\tabcolsep}{4pt} | |
| 380 | 380 | \begin{tabular}{llS[table-format=6.0]lS[table-format=6.0]S[table-format=-3.0]} |
| 381 | 381 | \toprule |
| 382 | 382 | Hypothèse & Variante basse & {$V_L$ (\$)} & Variante haute & {$V_L$ (\$)} & {Étendue (\%)} \\ |
modified
manuscript/chapters/ch44.tex
+10 −10
@@ -32,7 +32,7 @@ Pour raisonner sur la contribution, il faut d'abord classer les travaux par leur | ||
| 32 | 32 | \begin{table}[htbp] |
| 33 | 33 | \caption{Quatre catégories de travaux, leur effet sur la valeur et la mesure appropriée}\label{tab:44:taxonomie} |
| 34 | 34 | \centering\small |
| 35 | −\begin{tabularx}{\textwidth}{lYYl} | |
| 35 | +\begin{tabularx}{\textwidth}{>{\hsize=0.80\hsize}Y>{\hsize=1.15\hsize}Y>{\hsize=1.15\hsize}Y>{\hsize=0.90\hsize}Y} | |
| 36 | 36 | \toprule |
| 37 | 37 | Catégorie & Nature des travaux & Contribution attendue et mesure & Renvoi \\ |
| 38 | 38 | \midrule |
@@ -70,7 +70,7 @@ Deux de ces composantes intéressent directement le présent chapitre. Le VRC de | ||
| 70 | 70 | |
| 71 | 71 | Le principe de contribution se décline différemment selon la méthode d'évaluation, et il est utile de le dire avant d'aller plus loin, parce que l'erreur du « coût additionné » prend un visage différent dans chacune. Dans la \emph{méthode de comparaison}, une rénovation n'est jamais un poste de la grille : elle modifie les caractéristiques que la grille compare, l'état, l'âge effectif, la qualité, les équipements. Un sujet dont la cuisine a été refaite n'est pas « le sujet plus une cuisine », c'est un sujet dont la note de qualité ou d'état est plus élevée que celle des comparables, et l'ajustement correspondant est le prix implicite de cet écart, extrait par paires ou par régression (\cref{ch:17}). Le piège est le double comptage : ajuster la qualité \emph{et} ajouter le coût de la cuisine. Dans la \emph{méthode du coût}, la rénovation entre par la dépréciation. Les composantes remplacées sont rajeunies dans la fiche d'état (\cref{ch:11}) et leur dépréciation ventilée diminue ; l'amélioration qui ajoute une composante absente du bâtiment d'origine entre dans le coût neuf, puis se déprécie comme les autres ; la surabondance est traitée en désuétude fonctionnelle (\cref{ch:24}). Là encore, le piège est d'ajouter le coût des travaux à une valeur déjà obtenue par le coût, alors que ce coût y est déjà, moins la dépréciation. Dans la \emph{méthode du revenu}, enfin, la rénovation ne vaut que par ses effets sur le revenu net d'exploitation : un loyer plus élevé si le marché locatif rémunère l'attribut, une dépense moindre si le propriétaire paie l'énergie, une vacance réduite, une réserve de remplacement différée (\cref{ch:28}). Dans un immeuble locatif où le chauffage est à la charge du propriétaire, une rénovation énergétique augmente directement le RNE et se capitalise au taux global ; là où les locataires paient leur électricité, comme c'est l'usage dans la plupart des logements québécois, l'économie leur revient, et le propriétaire ne la récupère que si le marché locatif accepte un loyer plus élevé pour un logement moins coûteux à chauffer, ce que l'absence de cote énergétique rend difficile à faire valoir. |
| 72 | 72 | |
| 73 | −Le cadre québécois de fixation des loyers ajoute une particularité que le \cref{ch:34} développe : dans un logement dont le bail est reconduit, le propriétaire ne peut répercuter une dépense en immobilisations que par le mécanisme du Tribunal administratif du logement, qui applique aux travaux majeurs un pourcentage annuel publié chaque année, \pct{4.0} en 2026 pour les dépenses en immobilisations, contre \pct{4.7} en 2025 (\cref{ch:34}). Une rénovation énergétique de \dollars{20000} dans un logement occupé autorise donc, en 2026, une hausse de loyer de l'ordre de \dollars{800} par année, soit \dollars{67} par mois, indépendamment de l'économie d'énergie réalisée par le locataire ; c'est cette hausse, et non le coût des travaux ni l'économie du locataire, qui entre dans le RNE du propriétaire et donc dans la valeur par le revenu. La rénovation d'un immeuble locatif se raisonne ainsi en deux temps : ce que le marché ou le Tribunal permettent de récupérer en loyer, puis ce que le taux global en fait en valeur. | |
| 73 | +Le cadre québécois de fixation des loyers ajoute une particularité que le \cref{ch:34} développe : dans un logement dont le bail est reconduit, le propriétaire ne peut répercuter une dépense en immobilisations que par le mécanisme du Tribunal administratif du logement, qui applique aux travaux majeurs un pourcentage annuel publié chaque année, \pct{4.0} en 2026 pour les dépenses en immobilisations, contre \pct{4.7} en 2025 \parencite{talIndices2026}. Une rénovation énergétique de \dollars{20000} dans un logement occupé autorise donc, en 2026, une hausse de loyer de l'ordre de \dollars{800} par année, soit \dollars{67} par mois, indépendamment de l'économie d'énergie réalisée par le locataire ; c'est cette hausse, et non le coût des travaux ni l'économie du locataire, qui entre dans le RNE du propriétaire et donc dans la valeur par le revenu. La rénovation d'un immeuble locatif se raisonne ainsi en deux temps : ce que le marché ou le Tribunal permettent de récupérer en loyer, puis ce que le taux global en fait en valeur. | |
| 74 | 74 | |
| 75 | 75 | \subsection{Rénovations « payantes » et « non payantes » : ce que l'on peut dire sans données} |
| 76 | 76 | |
@@ -156,7 +156,7 @@ Les aides financières modifient le coût net d'une rénovation pour le proprié | ||
| 156 | 156 | \begin{table}[htbp] |
| 157 | 157 | \caption{Programmes d'aide à la rénovation et à la construction écoénergétiques, état vérifié au 31 octobre 2026}\label{tab:44:programmes} |
| 158 | 158 | \centering\scriptsize\setlength{\tabcolsep}{3pt} |
| 159 | −\begin{tabularx}{\textwidth}{lYYl} | |
| 159 | +\begin{tabularx}{\textwidth}{>{\hsize=0.62\hsize}Y>{\hsize=1.55\hsize}Y>{\hsize=1.08\hsize}Y>{\hsize=0.75\hsize}Y} | |
| 160 | 160 | \toprule |
| 161 | 161 | Programme (administrateur) & Mesure et montant & Conditions et statut & Source, mise à jour \\ |
| 162 | 162 | \midrule |
@@ -173,7 +173,7 @@ Conversion abordable du mazout à la thermopompe (RNCan) & Jusqu'à \dollars{100 | ||
| 173 | 173 | |
| 174 | 174 | \begin{figure}[htbp] |
| 175 | 175 | \centering |
| 176 | −\begin{tikzpicture}[x=18mm, y=1cm, every node/.style={font=\sffamily\footnotesize}] | |
| 176 | +\begin{tikzpicture}[x=16mm, y=1cm, every node/.style={font=\sffamily\footnotesize}] | |
| 177 | 177 | \draw[brandGray, thick, -{Stealth[length=2mm]}] (0,0) -- (7.3,0); |
| 178 | 178 | \foreach \x/\an in {0/2021, 1/2022, 2/2023, 3/2024, 4/2025, 5/2026, 6/2027} {\draw[brandGray] (\x,0.08) -- (\x,-0.08); \node[below=1pt, text=brandGray] at (\x,-0.08) {\an};} |
| 179 | 179 | \tikzset{ev/.style={circle, fill=brandPrimary, inner sep=1.4pt}, fin/.style={circle, fill=brandRed, inner sep=1.4pt}, lab/.style={align=left, anchor=west, font=\sffamily\scriptsize}} |
@@ -185,9 +185,9 @@ Conversion abordable du mazout à la thermopompe (RNCan) & Jusqu'à \dollars{100 | ||
| 185 | 185 | \node[fin] (f) at (5.58,0) {}; \draw[brandGray, thin] (f) -- (5.58,-1.55); \node[lab, anchor=east] at (5.58,-1.75) {31 juill. 2026 : fin de la conversion\\mazout--thermopompe (fédéral)}; |
| 186 | 186 | \node[ev] (g) at (5.75,0) {}; \draw[brandGray, thin] (g) -- (5.75,2.15); \node[lab] at (5.75,2.35) {1\ier{} oct. 2026 :\\Rénoclimat refondu}; |
| 187 | 187 | \node[ev] (h) at (6.25,0) {}; \draw[brandGray, thin] (h) -- (6.25,-0.75); \node[lab] at (6.25,-0.95) {31 mars 2027 : fin de la\\transition Rénoclimat}; |
| 188 | −\node[ev] (i) at (6.8,0) {}; \draw[brandGray, thin] (i) -- (6.8,0.55); \node[lab] at (6.8,0.75) {17 oct. 2027 : fin de la\\transition du Code}; | |
| 189 | −\node[ev] at (0.1,-2.6) {}; \node[lab] at (0.2,-2.6) {entrée en vigueur ou refonte}; | |
| 190 | −\node[fin] at (2.6,-2.6) {}; \node[lab] at (2.7,-2.6) {fin d'un programme ou d'une tolérance}; | |
| 188 | +\node[ev] (i) at (6.8,0) {}; \draw[brandGray, thin] (i) -- (6.8,-2.15); \node[lab, anchor=east] at (6.8,-2.35) {17 oct. 2027 : fin de la\\transition du Code}; | |
| 189 | +\node[ev] at (0.1,-3.1) {}; \node[lab] at (0.2,-3.1) {entrée en vigueur ou refonte}; | |
| 190 | +\node[fin] at (2.6,-3.1) {}; \node[lab] at (2.7,-3.1) {fin d'un programme ou d'une tolérance}; | |
| 191 | 191 | \end{tikzpicture} |
| 192 | 192 | \caption{Frise des dates qui structurent la rénovation énergétique résidentielle au Québec, 2021--2027 : interdictions du mazout, nouveau Code et sa transition, fermeture des programmes fédéraux et de Chauffez vert, refonte de Rénoclimat. LogisVert (Hydro-Québec) et Novoclimat sont actifs sur toute la période récente.}\label{fig:44:frise} |
| 193 | 193 | \figsource{schéma de l'auteur d'après les sources du \cref{tab:44:programmes}.} |
@@ -274,7 +274,7 @@ Le sujet est le cottage à étages de \msq{165} construit en 1998 dans le secteu | ||
| 274 | 274 | \begin{table}[htbp] |
| 275 | 275 | \caption{Hypothèses de l'exemple intégral (données vérifiées en romain, hypothèses pédagogiques en italique)}\label{tab:44:hypotheses} |
| 276 | 276 | \centering\small |
| 277 | −\begin{tabularx}{\textwidth}{lYl} | |
| 277 | +\begin{tabularx}{\textwidth}{>{\hsize=0.72\hsize}Y>{\hsize=1.33\hsize}Y>{\hsize=0.95\hsize}Y} | |
| 278 | 278 | \toprule |
| 279 | 279 | Paramètre & Valeur & Statut, source \\ |
| 280 | 280 | \midrule |
@@ -292,7 +292,7 @@ Mesure B : isolation de l'entretoit & \emph{\msq{95} $\times$ \dollars{44} = \do | ||
| 292 | 292 | |
| 293 | 293 | \begin{table}[htbp] |
| 294 | 294 | \caption{Indicateurs des mesures énergétiques du sujet du cas 1 ($r = \pct{4.58}$, $g = \pct{3.0}$ ; données synthétiques)}\label{tab:44:resultats} |
| 295 | −\centering\small | |
| 295 | +\centering\footnotesize\setlength{\tabcolsep}{3.5pt} | |
| 296 | 296 | \begin{tabular}{lS[table-format=5.2]S[table-format=4.2]S[table-format=5.2]S[table-format=4.2]} |
| 297 | 297 | \toprule |
| 298 | 298 | Indicateur & {A : thermopompe} & {B : isolation} & {A + B} & {Incrément climat froid} \\ |
@@ -362,7 +362,7 @@ Que doit en conclure l'évaluateur qui, un an après les travaux, évalue le cot | ||
| 362 | 362 | \begin{table}[htbp] |
| 363 | 363 | \caption{Quatre lectures de la contribution de la thermopompe climat froid à la valeur du sujet du cas 1 (données synthétiques)}\label{tab:44:lectures} |
| 364 | 364 | \centering\small |
| 365 | −\begin{tabularx}{\textwidth}{YS[table-format=5.2]S[table-format=1.2]l} | |
| 365 | +\begin{tabularx}{\textwidth}{>{\hsize=1.1\hsize}YS[table-format=5.2]S[table-format=1.2]>{\hsize=0.9\hsize}Y} | |
| 366 | 366 | \toprule |
| 367 | 367 | Lecture & {Montant (\$)} & {\% de la valeur} & Ce qu'elle mesure \\ |
| 368 | 368 | \midrule |
modified
manuscript/chapters/ch46.tex
+34 −31
@@ -73,7 +73,7 @@ L'inspection fictive du 20~août 2026 a porté sur les trois logements, les aire | ||
| 73 | 73 | |
| 74 | 74 | \begin{table}[htbp]\centering |
| 75 | 75 | \caption{Composantes du bâtiment, état observé et conséquences retenues (dossier synthétique).}\label{tab:46:inspection} |
| 76 | −\small\begin{tabular}{@{}L{3.6cm}L{1.6cm}L{4.6cm}L{2.8cm}@{}} | |
| 76 | +\small\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}L{3.4cm}L{1.6cm}L{4.5cm}L{2.7cm}@{}} | |
| 77 | 77 | \toprule |
| 78 | 78 | Composante & Année & État observé & Conséquence \\ |
| 79 | 79 | \midrule |
@@ -101,7 +101,7 @@ Les trois logements sont loués par des baux de douze mois courant du 1\textsupe | ||
| 101 | 101 | |
| 102 | 102 | \begin{table}[htbp]\centering |
| 103 | 103 | \caption{État locatif du triplex au 1\textsuperscript{er} septembre 2026 : loyer contractuel, loyer de marché estimé et écart (données synthétiques).}\label{tab:46:baux} |
| 104 | −\small\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}l c S[table-format=2.0] S[table-format=4.0] S[table-format=4.0] S[table-format=3.0] S[table-format=2.1] l S[table-format=1.0] c@{}} | |
| 104 | +\small\setlength{\tabcolsep}{3pt}\begin{tabular}{@{}l c S[table-format=2.0] S[table-format=4.0] S[table-format=4.0] S[table-format=3.0] S[table-format=2.1] l S[table-format=1.0] c@{}} | |
| 105 | 105 | \toprule |
| 106 | 106 | Logement & Type & {m\textsuperscript{2}} & {Contrat (\$/mois)} & {Marché (\$/mois)} & {Écart (\$)} & {Écart (\%)} & Bail depuis & {Anc. (ans)} & Stat. \\ |
| 107 | 107 | \midrule |
@@ -169,7 +169,7 @@ L'analyse de marché d'un plex porte, comme celle d'un immeuble de rapport, sur | ||
| 169 | 169 | |
| 170 | 170 | \begin{table}[htbp]\centering |
| 171 | 171 | \caption{Indicateurs de marché retenus à la date d'évaluation (sources publiques, consultées le 31~octobre 2026).}\label{tab:46:marche} |
| 172 | −\footnotesize\begin{tabular}{@{}L{5.4cm}L{3.0cm}L{4.3cm}@{}} | |
| 172 | +\footnotesize\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}L{5.1cm}L{2.9cm}L{4.2cm}@{}} | |
| 173 | 173 | \toprule |
| 174 | 174 | Indicateur & Valeur & Source et période \\ |
| 175 | 175 | \midrule |
@@ -228,7 +228,7 @@ Les autres postes sont conservés aux montants justifiés, parce qu'ils reposent | ||
| 228 | 228 | |
| 229 | 229 | \begin{table}[htbp]\centering |
| 230 | 230 | \caption{Normalisation des dépenses de première année : montant déclaré, règle appliquée et montant normalisé (données synthétiques, \$ courants).}\label{tab:46:depenses} |
| 231 | −\small\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}L{3.9cm}S[table-format=4.0]L{4.4cm}S[table-format=5.2]S[table-format=2.1]@{}} | |
| 231 | +\small\setlength{\tabcolsep}{3.5pt}\begin{tabular}{@{}L{3.8cm}S[table-format=4.0]L{4.3cm}S[table-format=5.2]S[table-format=2.1]@{}} | |
| 232 | 232 | \toprule |
| 233 | 233 | Poste & {Déclaré (\$)} & Règle de normalisation & {Normalisé (\$)} & {\% du RBE} \\ |
| 234 | 234 | \midrule |
@@ -264,22 +264,22 @@ La méthode de comparaison est la méthode principale pour un triplex de quartie | ||
| 264 | 264 | |
| 265 | 265 | \begin{table}[htbp]\centering |
| 266 | 266 | \caption{Le sujet et les cinq comparables triplex de Limoilou (données synthétiques).}\label{tab:46:comparables} |
| 267 | −\footnotesize\setlength{\tabcolsep}{3pt}\begin{tabular}{@{}l l S[table-format=3.0] S[table-format=2.1] S[table-format=4.0] c S[table-format=4.0] S[table-format=4.0] S[table-format=1.3] S[table-format=7.0] S[table-format=6.0] S[table-format=2.2] S[table-format=1.2]@{}} | |
| 267 | +\footnotesize\setlength{\tabcolsep}{2.4pt}\begin{tabular}{@{}l l S[table-format=3.0] S[table-format=2.1] S[table-format=3.0] c S[table-format=4.0] S[table-format=4.0] S[table-format=1.3] S[table-format=7.0] S[table-format=6.0] S[table-format=2.2] S[table-format=1.2]@{}} | |
| 268 | 268 | \toprule |
| 269 | −Vente & Date & {m\textsuperscript{2}} & {m\textsuperscript{2}/log.} & {Constr.} & État & {Loyer contrat (\$)} & {Loyer marché (\$)} & {$\rho$} & {Prix (\$)} & {Prix/log. (\$)} & {MRB} & {Taux (\%)} \\ | |
| 269 | +Vente & Date & {m\textsuperscript{2}} & {m\textsuperscript{2}/log.} & {Âge} & État & {Contrat (\$)} & {Marché (\$)} & {$\rho$} & {Prix (\$)} & {Prix/log. (\$)} & {MRB} & {Taux (\%)} \\ | |
| 270 | 270 | \midrule |
| 271 | −Sujet & 2026-09-01 & 262 & 87.3 & 1948 & 3 & 1162 & 1370 & 0.848 & {—} & {—} & {—} & {—} \\ | |
| 271 | +Sujet & 2026-09-01 & 262 & 87.3 & 78 & 3 & 1162 & 1370 & 0.848 & {—} & {—} & {—} & {—} \\ | |
| 272 | 272 | \midrule |
| 273 | −Q0187 & 2025-11-20 & 243 & 81.0 & 1950 & 3 & 1053 & 1173 & 0.898 & 787000 & 262333 & 20.75 & 2.97 \\ | |
| 274 | −Q0222 & 2026-05-13 & 286 & 95.3 & 1934 & 4 & 1092 & 1187 & 0.920 & 918000 & 306000 & 23.35 & 2.62 \\ | |
| 275 | −Q0243 & 2026-07-24 & 247 & 82.3 & 1930 & 3 & 1286 & 1352 & 0.951 & 1023000 & 341000 & 22.09 & 2.99 \\ | |
| 276 | −Q0207 & 2026-03-08 & 269 & 89.7 & 1957 & 2 & 1146 & 1197 & 0.957 & 910000 & 303333 & 22.05 & 3.09 \\ | |
| 277 | −Q0235 & 2026-06-22 & 275 & 91.7 & 1923 & 1 & 1214 & 1327 & 0.915 & 922000 & 307333 & 21.10 & 2.68 \\ | |
| 273 | +Q0187 & 2025-11-20 & 243 & 81.0 & 76 & 3 & 1053 & 1173 & 0.898 & 787000 & 262333 & 20.75 & 2.97 \\ | |
| 274 | +Q0222 & 2026-05-13 & 286 & 95.3 & 92 & 4 & 1092 & 1187 & 0.920 & 918000 & 306000 & 23.35 & 2.62 \\ | |
| 275 | +Q0243 & 2026-07-24 & 247 & 82.3 & 96 & 3 & 1286 & 1352 & 0.951 & 1023000 & 341000 & 22.09 & 2.99 \\ | |
| 276 | +Q0207 & 2026-03-08 & 269 & 89.7 & 69 & 2 & 1146 & 1197 & 0.957 & 910000 & 303333 & 22.05 & 3.09 \\ | |
| 277 | +Q0235 & 2026-06-22 & 275 & 91.7 & 103 & 1 & 1214 & 1327 & 0.915 & 922000 & 307333 & 21.10 & 2.68 \\ | |
| 278 | 278 | \midrule |
| 279 | −Médiane des cinq & & 269 & 89.7 & 1934 & 3 & 1146 & 1197 & 0.920 & 918000 & 306000 & 22.05 & 2.97 \\ | |
| 279 | +Médiane des cinq & & 269 & 89.7 & 92 & 3 & 1146 & 1197 & 0.920 & 918000 & 306000 & 22.05 & 2.97 \\ | |
| 280 | 280 | \bottomrule |
| 281 | 281 | \end{tabular} |
| 282 | −\tabsource{\synth{\texttt{cas2\_quebec\_ventes\_plex.csv} ; sélection par \texttt{ch32\_plex.selection\_comparables} (distance d'attributs du \cref{ch:16}) ; loyers mensuels moyens par logement ; tous les comparables ont une case de stationnement ; script \texttt{ch46\_dossier.py}.}} | |
| 282 | +\tabsource{\synth{\texttt{cas2\_quebec\_ventes\_plex.csv} ; sélection par \texttt{ch32\_plex.selection\_comparables} (distance d'attributs du \cref{ch:16}) ; âge à la date d'évaluation (construction 1923 à 1957 ; sujet 1948) ; loyers mensuels moyens par logement ; tous les comparables ont une case de stationnement ; script \texttt{ch46\_dossier.py}.}} | |
| 283 | 283 | \end{table} |
| 284 | 284 | |
| 285 | 285 | \subsection{Extraction des ajustements par régression auxiliaire} |
@@ -288,7 +288,7 @@ Faute de paires de ventes appariées en nombre suffisant dans un échantillon de | ||
| 288 | 288 | |
| 289 | 289 | \begin{table}[htbp]\centering |
| 290 | 290 | \caption{Régression auxiliaire du logarithme du prix par logement sur 127 ventes de duplex et de triplex (données synthétiques).}\label{tab:46:regression} |
| 291 | −\small\begin{tabular}{@{}L{5.2cm}S[table-format=-1.5]S[table-format=1.5]S[table-format=-2.2]L{3.2cm}@{}} | |
| 291 | +\small\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}L{4.9cm}S[table-format=-1.5]S[table-format=1.5]S[table-format=-2.2]L{3.1cm}@{}} | |
| 292 | 292 | \toprule |
| 293 | 293 | Variable & {Coefficient} & {Erreur-type} & {$t$} & Lecture \\ |
| 294 | 294 | \midrule |
@@ -315,27 +315,30 @@ Maizerets (vs Limoilou) & -0.08715 & 0.02250 & -3.87 & sans objet \\ | ||
| 315 | 315 | |
| 316 | 316 | La grille suit l'ordre conventionnel de l'ouvrage, exposé au \cref{ch:17} : d'abord l'ajustement de conditions du marché, en proportion du prix, qui ramène chaque vente à la date d'évaluation au taux annuel de \pct{7.45} extrait de la régression, par la fonction \texttt{ajustement\_temps\_taux} ; puis les ajustements d'attributs, additifs, exprimés en dollars par logement sur la base ajustée du temps, chacun étant la différence entre le prix prédit pour la caractéristique du sujet et celui prédit pour la caractéristique du comparable : |
| 317 | 317 | \begin{equation}\label{eq:46:ajuste} |
| 318 | −P^{\text{aj}}_j = P_j\left[(1 + g)^{m_j/12}\right] + \sum_{k} A_{jk}, \qquad A_{jk} = P^{t}_j\left[e^{\hat\beta_k (x_{sk} - x_{jk})} - 1\right], | |
| 318 | +\begin{split} | |
| 319 | +P^{\text{aj}}_j &= P^{t}_j + \sum_{k} A_{jk}, \qquad P^{t}_j = P_j\,(1 + g)^{m_j/12}, \\ | |
| 320 | +A_{jk} &= P^{t}_j\left[e^{\hat\beta_k (x_{sk} - x_{jk})} - 1\right], | |
| 321 | +\end{split} | |
| 319 | 322 | \end{equation} |
| 320 | 323 | où $P_j$ est le prix par logement, $m_j$ l'ancienneté de la vente en mois, $P^{t}_j$ le prix ajusté du temps et $x_{sk}$, $x_{jk}$ les caractéristiques du sujet et du comparable (logarithme de la superficie par logement, âge, état, stationnement, logarithme du loyer de marché). Le signe est celui du point de vue du sujet : positif lorsque le sujet est supérieur au comparable. Le \cref{tab:46:grille} présente la grille ; la \cref{fig:46:cascade} illustre la cascade pour Q0243, le comparable le plus récent et le plus proche. |
| 321 | 324 | |
| 322 | 325 | \begin{table}[htbp]\centering |
| 323 | 326 | \caption{Grille d'ajustements des prix par logement des cinq comparables (données synthétiques, \$ par logement).}\label{tab:46:grille} |
| 324 | −\footnotesize\setlength{\tabcolsep}{3pt}\begin{tabular}{@{}l S[table-format=6.0] S[table-format=5.0] S[table-format=-5.0] S[table-format=-5.0] S[table-format=-5.0] S[table-format=5.0] c S[table-format=6.0] S[table-format=2.1] S[table-format=-2.1] S[table-format=1.3]@{}} | |
| 327 | +\footnotesize\setlength{\tabcolsep}{2.8pt}\begin{tabular}{@{}l S[table-format=6.0] S[table-format=5.0] S[table-format=-5.0] S[table-format=-5.0] S[table-format=-5.0] S[table-format=5.0] S[table-format=6.0] S[table-format=2.1] S[table-format=2.1] S[table-format=1.3]@{}} | |
| 325 | 328 | \toprule |
| 326 | −Vente & {Prix/log.} & {Temps} & {Superf.} & {Âge} & {État} & {Loyer marché} & $\rho$ & {Prix aj.} & {Brut (\%)} & {Net (\%)} & {Poids} \\ | |
| 329 | +Vente & {Prix/log.} & {Temps} & {Superf.} & {Âge} & {État} & {Loyer m.} & {Prix aj.} & {Brut (\%)} & {Net (\%)} & {Poids} \\ | |
| 327 | 330 | \midrule |
| 328 | −Q0187 & 262333 & 15134 & 13792 & -2215 & 0 & 11558 & 0 & 300603 & 16.3 & 14.6 & 0.220 \\ | |
| 329 | −Q0222 & 306000 & 6758 & -17175 & 18046 & -14930 & 12015 & 0 & 310715 & 22.5 & 1.5 & 0.159 \\ | |
| 330 | −Q0243 & 341000 & 2627 & 13306 & 25699 & 0 & 1217 & 0 & 383849 & 12.6 & 12.6 & 0.285 \\ | |
| 331 | −Q0207 & 303333 & 10752 & -5291 & -11125 & 15744 & 11349 & 0 & 324762 & 17.9 & 7.1 & 0.200 \\ | |
| 332 | −Q0235 & 307333 & 4324 & -9575 & 32836 & 32029 & 2640 & 0 & 369586 & 26.5 & 20.3 & 0.135 \\ | |
| 331 | +Q0187 & 262333 & 15134 & 13792 & -2215 & 0 & 11558 & 300603 & 16.3 & 14.6 & 0.220 \\ | |
| 332 | +Q0222 & 306000 & 6758 & -17175 & 18046 & -14930 & 12015 & 310715 & 22.5 & 1.5 & 0.159 \\ | |
| 333 | +Q0243 & 341000 & 2627 & 13306 & 25699 & 0 & 1217 & 383849 & 12.6 & 12.6 & 0.285 \\ | |
| 334 | +Q0207 & 303333 & 10752 & -5291 & -11125 & 15744 & 11349 & 324762 & 17.9 & 7.1 & 0.200 \\ | |
| 335 | +Q0235 & 307333 & 4324 & -9575 & 32836 & 32029 & 2640 & 369586 & 26.5 & 20.3 & 0.135 \\ | |
| 333 | 336 | \midrule |
| 334 | −\multicolumn{8}{@{}l}{Prix par logement pondéré (poids $\propto 1/$brut) ; valeur $= 3 \times$ prix pondéré} & 340122 & & & 1.000 \\ | |
| 335 | −\multicolumn{8}{@{}l}{Moyenne simple 337~903 ; médiane 324~762 ; min. 300~603 ; max. 383~849 ; écart-type pondéré 34~516} & & & & \\ | |
| 337 | +\multicolumn{7}{@{}l}{Prix par logement pondéré (poids $\propto 1/$brut) ; valeur $= 3 \times$ prix pondéré} & 340122 & & & 1.000 \\ | |
| 338 | +\multicolumn{11}{@{}l}{Moyenne simple 337~903 ; médiane 324~762 ; min. 300~603 ; max. 383~849 ; écart-type pondéré 34~516 ; stationnement et $\rho$ : ajustements nuls.} \\ | |
| 336 | 339 | \bottomrule |
| 337 | 340 | \end{tabular} |
| 338 | −\tabsource{\synth{\texttt{traite.comparables} (\texttt{ajustement\_temps\_taux}, \texttt{ComparableAjuste}, \texttt{poids\_inverse\_brut}, \texttt{reconciliation}) ; stationnement : ajustement nul (tous ont une case) ; $\rho$ : non appliqué ; script \texttt{ch46\_dossier.py}, fonction \texttt{grille\_ajustements}.}} | |
| 341 | +\tabsource{\synth{\texttt{traite.comparables} (\texttt{ajustement\_temps\_taux}, \texttt{ComparableAjuste}, \texttt{poids\_inverse\_brut}, \texttt{reconciliation}) ; stationnement : tous ont une case ; $\rho$ : coefficient non significatif, non appliqué ; script \texttt{ch46\_dossier.py}, fonction \texttt{grille\_ajustements}.}} | |
| 339 | 342 | \end{table} |
| 340 | 343 | |
| 341 | 344 | \begin{figure}[htbp]\centering |
@@ -380,7 +383,7 @@ contre \dollars{729549} au \cref{ch:32} : la différence de \dollars{18577} est | ||
| 380 | 383 | |
| 381 | 384 | \begin{table}[htbp]\centering |
| 382 | 385 | \caption{Taux globaux candidats et indications par capitalisation directe du revenu net normalisé de \dollars{22595.03} (données synthétiques).}\label{tab:46:taux} |
| 383 | −\small\begin{tabular}{@{}L{6.6cm}S[table-format=1.3]S[table-format=6.0]S[table-format=-2.1]@{}} | |
| 386 | +\small\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}L{6.4cm}S[table-format=1.3]S[table-format=7.0]S[table-format=-2.1]@{}} | |
| 384 | 387 | \toprule |
| 385 | 388 | Taux & {Taux (\%)} & {Indication (\$)} & {Écart au retenu (\%)} \\ |
| 386 | 389 | \midrule |
@@ -519,7 +522,7 @@ Le \cref{tab:46:financement-sens} et la \cref{fig:46:occupation} font varier les | ||
| 519 | 522 | |
| 520 | 523 | \begin{table}[htbp]\centering |
| 521 | 524 | \caption{Sensibilité du financement et du coût d'occupation au taux, à la mise de fonds et à l'amortissement (prix \dollars{920000}, données synthétiques, \$).}\label{tab:46:financement-sens} |
| 522 | −\footnotesize\setlength{\tabcolsep}{3.5pt}\begin{tabular}{@{}L{5.3cm}S[table-format=6.0]S[table-format=2.1]S[table-format=6.0]S[table-format=4.2]S[table-format=4.2]S[table-format=4.2]S[table-format=4.2]@{}} | |
| 525 | +\scriptsize\setlength{\tabcolsep}{2.6pt}\begin{tabular}{@{}L{4.3cm}S[table-format=6.0]S[table-format=2.1]S[table-format=6.0]S[table-format=4.2]S[table-format=4.2]S[table-format=4.2]S[table-format=4.2]@{}} | |
| 523 | 526 | \toprule |
| 524 | 527 | Scénario & {Mise de fonds} & {RPV (\%)} & {Prêt} & {Versement} & {Versement TAM} & {Coût net/mois} & {Hors capital} \\ |
| 525 | 528 | \midrule |
@@ -551,7 +554,7 @@ L'indication par le prix par logement ajusté, \dollars{1020367}, repose sur cin | ||
| 551 | 554 | |
| 552 | 555 | \begin{table}[htbp]\centering |
| 553 | 556 | \caption{Réconciliation des indications de valeur (données synthétiques).}\label{tab:46:reconciliation} |
| 554 | −\small\begin{tabular}{@{}L{6.6cm}S[table-format=7.0]S[table-format=3.0]S[table-format=6.0]@{}} | |
| 557 | +\small\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}L{6.0cm}S[table-format=7.0]S[table-format=3.0]S[table-format=6.0]@{}} | |
| 555 | 558 | \toprule |
| 556 | 559 | Indication & {Valeur (\$)} & {Poids (\%)} & {Contribution (\$)} \\ |
| 557 | 560 | \midrule |
@@ -559,7 +562,7 @@ Comparaison — prix par logement ajusté (5 comparables) & 1020367 & 40 & 40814 | ||
| 559 | 562 | Comparaison — multiplicateur médian des comparables (22,05) & 922396 & 35 & 322838 \\ |
| 560 | 563 | Revenu — capitalisation directe au taux ajusté (3,02~\%) & 748126 & 25 & 187032 \\ |
| 561 | 564 | \quad repère : multiplicateur ajusté au loyer relatif (24,38) & 1019940 & 0 & 0 \\ |
| 562 | −\quad repère : 127 ventes brutes, prix par logement / MRB / capitalisation & {843~000 / 829~110 / 712~777} & 0 & 0 \\ | |
| 565 | +\quad repère : 127 ventes brutes, prix par logement / MRB / capitalisation & {\footnotesize 843~000 / 829~110 / 712~777} & 0 & 0 \\ | |
| 563 | 566 | \quad repère : indication pondérée du \cref{ch:32} (médianes, taxes déclarées) & 872426 & 0 & 0 \\ |
| 564 | 567 | \quad contrôle : coût déprécié (hypothèses déclarées) & 473111 & 0 & 0 \\ |
| 565 | 568 | \midrule |
@@ -596,7 +599,7 @@ Le \cref{tab:46:ponderations} montre ce que d'autres pondérations raisonnables | ||
| 596 | 599 | |
| 597 | 600 | \begin{table}[htbp]\centering |
| 598 | 601 | \caption{Sensibilité de la valeur pondérée à la pondération des trois indications (données synthétiques).}\label{tab:46:ponderations} |
| 599 | −\small\begin{tabular}{@{}L{5.2cm}ccc S[table-format=7.0] S[table-format=-2.1] L{3.4cm}@{}} | |
| 602 | +\small\setlength{\tabcolsep}{3pt}\begin{tabular}{@{}L{4.5cm}ccc S[table-format=7.0] S[table-format=-2.1] L{3.0cm}@{}} | |
| 600 | 603 | \toprule |
| 601 | 604 | Pondération & Par log. & MRB & Cap. & {Valeur (\$)} & {Écart (\%)} & Profil d'acheteur \\ |
| 602 | 605 | \midrule |
modified
manuscript/chapters/ch48.tex
+214 −1
@@ -536,7 +536,7 @@ Avant de simuler, on peut démontrer ce que la simulation va montrer. La mesure | ||
| 536 | 536 | \begin{equation}\label{eq:48:var} |
| 537 | 537 | \operatorname{VaR}_{0{,}95}(V) = V_0 - q_{0{,}05}(V), |
| 538 | 538 | \end{equation} |
| 539 | −où $V_0$ est la valeur de référence et $q_{0{,}05}$ le quantile à \pct{5} de la valeur simulée. La VaR n'est pas, en général, une mesure de risque cohérente au sens de \textcite{artznerDelbaenEberHeath1999} : elle peut violer la sous-additivité pour des distributions très asymétriques ou à queues épaisses. Dans le cadre gaussien de la \cref{eq:48:lnv}, en revanche, la sous-additivité est garantie, et elle se démontre en deux lignes. | |
| 539 | +où $V_0$ est la valeur de référence et $q_{0{,}05}$ le quantile à \pct{5} de la valeur simulée. La VaR n'est pas, en général, une mesure de risque cohérente au sens d'Artzner, Delbaen, Eber et Heath (1999)\footnote{Artzner, P., Delbaen, F., Eber, J.-M. et Heath, D. (1999), « Coherent Measures of Risk », \emph{Mathematical Finance}, 9(3), 203-228 ; DOI 10.1111/1467-9965.00068 (vérifié Crossref le 31~octobre 2026 ; \texttt{references/lib-ch48.bib}).} : elle peut violer la sous-additivité pour des distributions très asymétriques ou à queues épaisses. Dans le cadre gaussien de la \cref{eq:48:lnv}, en revanche, la sous-additivité est garantie, et elle se démontre en deux lignes. | |
| 540 | 540 | |
| 541 | 541 | \begin{proposition}\label{prop:48:diversification} |
| 542 | 542 | Soit $X_i$, $i = 1, \dots, n$, des variables aléatoires gaussiennes d'écarts-types $\sigma_i$ et de corrélations $\rho_{ij}$, et $X_P = \sum_i w_i X_i$ avec $w_i \geq 0$. Alors $\sigma_P \leq \sum_i w_i \sigma_i$, avec égalité si et seulement si $\rho_{ij} = 1$ pour toute paire de poids non nuls ; et, pour tout niveau $\alpha \geq \tfrac12$, $\operatorname{VaR}_\alpha(X_P) \leq \sum_i w_i \operatorname{VaR}_\alpha(X_i)$. |
@@ -607,3 +607,216 @@ Portefeuille & 48 & 143363000 & 133506790 & 154224548 & 4.37 & 9856210 & 1428343 | ||
| 607 | 607 | \end{tabular} |
| 608 | 608 | \tabsource{\synth{script \texttt{ch48\_portefeuille.py}, fonction \texttt{simuler\_portefeuille} (clé \texttt{par\_rmr}) ; ratio = VaR de l'ensemble / somme des VaR de ses composantes.}} |
| 609 | 609 | \end{table} |
| 610 | + | |
| 611 | +\section{Allocation et arbitrage}\label{sec:48:allocation} | |
| 612 | + | |
| 613 | +\subsection{Rendement courant, croissance et risque de chaque immeuble} | |
| 614 | + | |
| 615 | +Le fonds ne demande pas seulement une valeur : il veut savoir quels immeubles conserver, lesquels céder et où réinvestir. Cette question relève du conseil, non de l'opinion de valeur, et le rapport doit la traiter dans une section distincte, clairement identifiée comme une consultation au sens des Normes de pratique 5 et 6 \parencite{oeaqNormes} ; mais elle s'appuie sur les mêmes données et c'est l'évaluateur qui les maîtrise le mieux. Trois grandeurs décrivent chaque immeuble. Le rendement courant est son taux de capitalisation, $R_i = \NOI_i / V_i$. La croissance attendue du revenu, $g_i$, est approchée par la croissance tendancielle estimée à la \cref{sec:48:dynamique}, avec la réserve exprimée plus haut sur le bruit de cette estimation. Leur somme est le rendement total attendu à long terme sous l'hypothèse d'un taux de capitalisation constant, selon la relation de \textcite{gordonShapiro1956} dérivée au \cref{ch:29} (\cref{eq:29:gordon}), | |
| 616 | +\begin{equation}\label{eq:48:rendement-total} | |
| 617 | +\mu_i = R_i + g_i, | |
| 618 | +\end{equation} | |
| 619 | +où $g_i$ joue le rôle de la plus-value attendue. Le risque est l'écart-type du logarithme de la valeur simulée de l'immeuble, $\sigma_i = \sqrt{\sigma_{\varepsilon,i}^2 + \sigma_\eta^2}$, de \pct{5.9} à \pct{6.6} selon la volatilité du revenu. L'indicateur synthétique retenu est l'excédent de rendement par unité de risque, | |
| 620 | +\begin{equation}\label{eq:48:ratio} | |
| 621 | +\lambda_i = \frac{\mu_i - r_f}{\sigma_i}, \qquad r_f = \pct{3.84} \text{ (obligation du Canada à 10 ans, 29 octobre 2026)}, | |
| 622 | +\end{equation} | |
| 623 | +complété par des drapeaux de risque que la simulation ne capte pas : zone inondable, contamination du sol, ratio de couverture inférieur à \num{1.00} après un renouvellement à +200~points de base, et état coté 1 ou 2. Le score final est le rang centile de $\lambda_i$ diminué de \num{0.10} par drapeau ; cette pondération est un choix de l'analyste, déclaré, et non une norme. | |
| 624 | + | |
| 625 | +\begin{table}[htbp]\centering | |
| 626 | +\caption{Les six immeubles les mieux et les moins bien classés selon le rendement total attendu, le risque et les drapeaux (données synthétiques).}\label{tab:48:allocation} | |
| 627 | +\footnotesize\setlength{\tabcolsep}{3.5pt}\begin{tabular}{@{}l l S[table-format=2.0] c S[table-format=1.2] S[table-format=1.2] S[table-format=2.2] S[table-format=1.2] S[table-format=1.2] S[table-format=1.2] S[table-format=1.2] S[table-format=2.1] c S[table-format=-1.2]@{}} | |
| 628 | +\toprule | |
| 629 | +Imm. & RMR & {Log.} & État & {$R$ (\%)} & {$g$ (\%)} & {$\mu$ (\%)} & {$\sigma$ (\%)} & {$\lambda$} & {RCD} & {RCD +200} & {RPV (\%)} & Drapeaux & {Score} \\ | |
| 630 | +\midrule | |
| 631 | +\multicolumn{14}{@{}l}{\emph{Conserver (rang 1 à 6)}} \\ | |
| 632 | +P10 & Gatineau & 12 & 3 & 5.19 & 6.26 & 11.45 & 6.31 & 1.20 & 2.56 & 1.95 & 44.8 & — & 1.00 \\ | |
| 633 | +P24 & Gatineau & 16 & 4 & 5.27 & 5.24 & 10.51 & 6.12 & 1.09 & 2.14 & 1.65 & 53.3 & — & 0.96 \\ | |
| 634 | +P02 & Gatineau & 12 & 3 & 5.67 & 4.66 & 10.33 & 6.45 & 1.01 & 2.05 & 1.61 & 48.1 & — & 0.94 \\ | |
| 635 | +P25 & Trois-Rivières & 16 & 3 & 7.00 & 2.73 & 9.73 & 6.06 & 0.97 & 1.77 & 1.37 & 76.9 & — & 0.90 \\ | |
| 636 | +P39 & Trois-Rivières & 6 & 3 & 6.36 & 3.37 & 9.73 & 6.10 & 0.97 & 2.16 & 1.70 & 49.5 & — & 0.88 \\ | |
| 637 | +P37 & Gatineau & 8 & 3 & 5.89 & 4.00 & 9.89 & 6.29 & 0.96 & 1.71 & 1.36 & 59.2 & — & 0.85 \\ | |
| 638 | +\midrule | |
| 639 | +\multicolumn{14}{@{}l}{\emph{Céder (rang 43 à 48)}} \\ | |
| 640 | +P46 & Québec & 8 & 4 & 5.50 & 1.24 & 6.74 & 6.44 & 0.45 & 1.94 & 1.48 & 57.6 & — & 0.08 \\ | |
| 641 | +P44 & Saguenay & 12 & 2 & 6.61 & 0.52 & 7.13 & 6.23 & 0.53 & 1.36 & 1.09 & 79.6 & état & 0.03 \\ | |
| 642 | +P28 & Montréal & 6 & 3 & 4.20 & 2.09 & 6.29 & 5.99 & 0.41 & 1.07 & 0.84 & 68.7 & RCD & -0.04 \\ | |
| 643 | +P34 & Montréal & 24 & 3 & 4.49 & 1.89 & 6.38 & 6.29 & 0.40 & 1.25 & 0.98 & 61.8 & RCD & -0.06 \\ | |
| 644 | +P41 & Montréal & 8 & 3 & 4.67 & 0.57 & 5.24 & 6.25 & 0.22 & 2.38 & 1.83 & 40.3 & inond. & -0.08 \\ | |
| 645 | +P26 & Montréal & 48 & 2 & 4.41 & 2.38 & 6.79 & 6.03 & 0.49 & 1.27 & 0.99 & 63.0 & état, RCD & -0.10 \\ | |
| 646 | +\bottomrule | |
| 647 | +\end{tabular} | |
| 648 | +\tabsource{\synth{script \texttt{ch48\_portefeuille.py}, fonction \texttt{allocation} ; $\mu = R + g$ (\cref{eq:48:rendement-total}), $\lambda$ selon l'\cref{eq:48:ratio}, score = rang centile de $\lambda$ $- 0{,}10$ par drapeau ; RCD sur 480 mois, RCD +200 après renouvellement à +200~pb, RNE constant. Classement complet des 48 immeubles dans la sortie du script.}} | |
| 649 | +\end{table} | |
| 650 | + | |
| 651 | +Le \cref{tab:48:allocation} présente les six immeubles les mieux classés et les six moins bien classés. Le classement est dominé, en tête, par les immeubles de Gatineau et de Trois-Rivières : des taux de capitalisation supérieurs à ceux de Montréal, une croissance tendancielle du revenu élevée (jusqu'à \pct{6.3} par an pour P10), un endettement modéré et aucun drapeau. En queue, on trouve quatre immeubles montréalais dont le rendement courant est bas (de \pct{4.20} à \pct{4.67}) sans que la croissance du revenu le compense (de \pct{0.6} à \pct{2.4}), et dont deux (P28, P34) ne couvriraient plus leur dette après un renouvellement à +200~points de base et un (P41) est en zone inondable ; P26, le plus grand immeuble du portefeuille (quarante-huit logements, \dollars{11038000}), cumule un état inférieur à la moyenne, un ratio de couverture tombant à \num{0.99} sous le choc de taux et une échéance en 2027 ; P46, à Québec, et P44, au Saguenay, ont la croissance la plus faible du portefeuille. P45, malgré son risque de refinancement, se classe neuvième grâce à sa croissance de \pct{5.9} et à son rendement total de \pct{11.0} ; sa place dans l'arbitrage dépend de la capacité du fonds à injecter \dollars{1.3} million en 2028, question de liquidité du fonds et non de valeur de l'immeuble. | |
| 652 | + | |
| 653 | +Deux mises en garde encadrent cette lecture. La première est que les croissances tendancielles individuelles sont bruitées, comme la \cref{sec:48:dynamique} l'a montré : la croissance de P10 (\pct{6.3}) excède celle de sa région (\pct{4.8}) d'un écart qui n'est pas significatif sur dix ans, et un analyste prudent remplacerait $g_i$ par la croissance régionale, ou par une moyenne des deux, avant de décider. La seconde est que le classement repose sur la valeur marchande comme prix de sortie : céder P26 au taux de \pct{4.41} rapporte \dollars{11038000} brut, et le produit net après remboursement de la dette (\dollars{6950000}) et des frais de vente de \pct{2} est de \dollars{3867000} ; le réinvestir dans des immeubles gatinois au taux de \pct{5.4} accroît le revenu courant du fonds, mais c'est un arbitrage de \emph{valeur d'investissement}, propre au fonds, à ses contraintes de liquidité et à sa fiscalité, et non un jugement sur la valeur marchande de P26, qui reste celle que le marché montréalais paie pour un tel immeuble. La cession des six immeubles les moins bien classés ramènerait le portefeuille à quarante-deux immeubles, \dollars{121898000} de valeur, un taux pondéré de \pct{5.30} au lieu de \pct{5.19}, un ratio prêt-valeur de \pct{59.5} et un produit net de cession de \dollars{7795700} ; elle ne réduirait presque pas la part en zone inondable (\pct{6.4}), parce que P36, le plus exposé, n'est pas parmi les six. | |
| 654 | + | |
| 655 | +\subsection{Une frontière rendement-risque par région} | |
| 656 | + | |
| 657 | +À l'échelle des régions, l'arbitrage se formule comme le problème de sélection de portefeuille de Markowitz (1952)\footnote{Markowitz, H. (1952), « Portfolio Selection », \emph{The Journal of Finance}, 7(1), 77-91 ; DOI 10.2307/2975974 (vérifié Crossref le 31~octobre 2026 ; \texttt{references/lib-ch48.bib}).} : étant donné le rendement attendu $\mu_r$ et la matrice de covariance $\boldsymbol\Omega$ des rendements régionaux, trouver, pour chaque niveau de rendement cible $m$, les poids $\mathbf{w}$ qui minimisent la variance, | |
| 658 | +\begin{equation}\label{eq:48:frontiere} | |
| 659 | +\min_{\mathbf{w}} \ \mathbf{w}\T \boldsymbol\Omega \mathbf{w} \quad \text{sous} \quad \mathbf{w}\T \boldsymbol\mu = m, \quad \mathbf{1}\T\mathbf{w} = 1, \quad \mathbf{w} \geq \mathbf{0}, | |
| 660 | +\end{equation} | |
| 661 | +la contrainte de positivité traduisant l'impossibilité de vendre à découvert un immeuble. Le rendement attendu de chaque région est son taux pondéré augmenté de sa croissance agrégée (\cref{tab:48:rmr}, \cref{tab:48:croissance}) ; la covariance est celle des logarithmes des valeurs régionales simulées à la \cref{sec:48:montecarlo}, ce qui garantit la cohérence entre la mesure du risque et la structure de dépendance déclarée. Le \cref{tab:48:frontiere} donne les paramètres et quatre portefeuilles remarquables ; la \cref{fig:48:frontiere} trace la frontière. | |
| 662 | + | |
| 663 | +\begin{table}[htbp]\centering | |
| 664 | +\caption{Paramètres de la frontière rendement-risque par région et portefeuilles remarquables (données synthétiques).}\label{tab:48:frontiere} | |
| 665 | +\footnotesize\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}L{4.6cm} S[table-format=2.2] S[table-format=1.2] S[table-format=2.1] S[table-format=2.1] S[table-format=2.1] S[table-format=2.1] S[table-format=2.1] S[table-format=2.1]@{}} | |
| 666 | +\toprule | |
| 667 | +& {$\mu$ (\%)} & {$\sigma$ (\%)} & \multicolumn{6}{c}{Poids (\%) : Mtl / Qc / Gat / Sher / T-R / Sag} \\ | |
| 668 | +\midrule | |
| 669 | +Montréal & 7.70 & 4.96 & 100 & 0 & 0 & 0 & 0 & 0 \\ | |
| 670 | +Québec & 8.44 & 5.12 & 0 & 100 & 0 & 0 & 0 & 0 \\ | |
| 671 | +Gatineau & 10.22 & 5.03 & 0 & 0 & 100 & 0 & 0 & 0 \\ | |
| 672 | +Sherbrooke & 8.04 & 5.15 & 0 & 0 & 0 & 100 & 0 & 0 \\ | |
| 673 | +Trois-Rivières & 8.44 & 5.22 & 0 & 0 & 0 & 0 & 100 & 0 \\ | |
| 674 | +Saguenay & 7.93 & 5.25 & 0 & 0 & 0 & 0 & 0 & 100 \\ | |
| 675 | +\midrule | |
| 676 | +Portefeuille actuel (parts de valeur) & 8.29 & 4.36 & 45.5 & 17.5 & 14.1 & 12.6 & 8.0 & 2.3 \\ | |
| 677 | +Variance minimale & 8.46 & 4.27 & 16.7 & 16.7 & 16.7 & 16.7 & 16.7 & 16.7 \\ | |
| 678 | +Même rendement que l'actuel, risque minimal & 8.29 & 4.28 & 23.0 & 16.6 & 10.0 & 18.1 & 16.1 & 16.3 \\ | |
| 679 | +Même risque que l'actuel, rendement maximal & 9.12 & 4.36 & 5.4 & 16.5 & 44.8 & 9.8 & 15.5 & 8.0 \\ | |
| 680 | +\bottomrule | |
| 681 | +\end{tabular} | |
| 682 | +\tabsource{\synth{script \texttt{ch48\_portefeuille.py}, fonction \texttt{allocation} (clé \texttt{frontiere}) ; $\mu_r$ = taux pondéré + croissance agrégée ; $\boldsymbol\Omega$ = covariance des logarithmes des valeurs régionales simulées (corrélations de 0,61 à 0,67) ; optimisation SLSQP sous contraintes (\cref{eq:48:frontiere}).}} | |
| 683 | +\end{table} | |
| 684 | + | |
| 685 | +\begin{figure}[htbp]\centering | |
| 686 | +\includegraphics[width=\linewidth]{ch48/ch48-fig-frontiere.pdf} | |
| 687 | +\caption{Frontière rendement-risque des six régions (sans vente à découvert), positions des régions, du portefeuille actuel, du portefeuille de variance minimale et des deux portefeuilles qui dominent l'actuel. Les risques régionaux sont presque égaux et fortement corrélés : la frontière est étroite en risque et c'est le rendement attendu, c'est-à-dire surtout la croissance régionale, qui distingue les allocations.} | |
| 688 | +\label{fig:48:frontiere} | |
| 689 | +\figsource{\synth{script \texttt{ch48\_portefeuille\_figures.py}, graine 20261031.}} | |
| 690 | +\end{figure} | |
| 691 | + | |
| 692 | +Le résultat est instructif par sa simplicité. Les risques régionaux sont presque identiques (de \pct{4.96} à \pct{5.25}) et fortement corrélés (de \num{0.61} à \num{0.67}, par l'effet du facteur national du taux) : le portefeuille de variance minimale est l'équipondération, et son risque (\pct{4.27}) n'est inférieur que de neuf points de base à celui du portefeuille actuel (\pct{4.36}). La frontière est donc \emph{étroite en risque} : passer de la pondération actuelle à n'importe quelle autre change peu l'écart-type, et c'est le rendement attendu qui discrimine. Le portefeuille actuel est dominé : à risque égal, une allocation qui porterait Gatineau à \pct{45} et ramènerait Montréal à \pct{5} atteindrait un rendement attendu de \pct{9.12} au lieu de \pct{8.29}. Mais cette recommandation apparente repose entièrement sur la croissance agrégée de Gatineau (\pct{4.78} par an sur 2016-2026, dans le jeu synthétique) et sur l'hypothèse qu'elle se prolonge ; la \cref{sec:48:marches} a rappelé que les projections démographiques de l'ISQ ne couvrent pas Gatineau dans leur communiqué et que la croissance passée des loyers d'une petite région est un guide fragile. Le bon usage de la frontière n'est pas de prescrire une allocation, mais de montrer au fonds que le risque de son portefeuille est dicté par le niveau général des taux et non par sa répartition régionale, et que ses choix régionaux sont des paris sur la croissance relative des revenus, qu'il doit assumer comme tels. Le raisonnement rejoint celui que \textcite{geltnerMillerClaytonEichholtz2014} et \textcite{baumCrosbyDevaney2021} tiennent sur la diversification immobilière : utile contre le risque propre, impuissante contre le risque de marché. | |
| 693 | + | |
| 694 | +\section{Réconciliation et conclusion}\label{sec:48:reconciliation} | |
| 695 | + | |
| 696 | +Le dossier a produit, pour le portefeuille, une indication principale et deux contrôles. L'indication principale est la somme des indications individuelles, \dollars{143363000}, chacune examinée au regard du modèle de masse et, pour cinq d'entre elles, motivée individuellement. Le premier contrôle est la somme des valeurs prédites par le modèle, \dollars{142572511}, inférieure de \pct{0.55} ; l'écart est de l'ordre du bruit d'estimation du modèle et n'appelle pas de correction, mais il signale que les évaluations individuelles sont, dans l'ensemble, très légèrement moins prudentes que le modèle, ce qui s'explique par les trois immeubles montréalais (P09, P28, P26) évalués à des taux inférieurs à la prédiction. Le second contrôle est la distribution simulée, dont la médiane (\dollars{143349709}) coïncide avec l'indication et dont l'intervalle à \pct{90}, de \dollars{133506790} à \dollars{154224548}, fournit la fourchette que le rapport financier doit communiquer : à horizon d'un an et sous les hypothèses déclarées, la valeur du portefeuille a une chance sur dix de sortir d'une bande de $-\pct{6.9}$ à $+\pct{7.6}$ autour de la valeur retenue. Le \cref{tab:48:reconciliation} rassemble ces éléments. | |
| 697 | + | |
| 698 | +\begin{table}[htbp]\centering | |
| 699 | +\caption{Réconciliation : indication, contrôles et valeur du portefeuille retenue (données synthétiques).}\label{tab:48:reconciliation} | |
| 700 | +\small\begin{tabular}{@{}L{8.2cm}S[table-format=9.0]@{}} | |
| 701 | +\toprule | |
| 702 | +Élément & {Montant ou ratio} \\ | |
| 703 | +\midrule | |
| 704 | +Somme des indications individuelles (48 immeubles) (\$) & 143363000 \\ | |
| 705 | +Somme des valeurs prédites par le modèle de masse (\$) & 142572511 \\ | |
| 706 | +\quad écart & {$-\pct{0.55}$} \\ | |
| 707 | +Médiane de la valeur simulée, corrélation déclarée (\$) & 143349709 \\ | |
| 708 | +Intervalle à 90 \% de la valeur simulée (\$) & {133~506~790 -- 154~224~548} \\ | |
| 709 | +\quad en proportion de la valeur retenue & {$-\pct{6.9}$ à $+\pct{7.6}$} \\ | |
| 710 | +\textbf{Valeur marchande du portefeuille, arrondie à 100~000~\$} & \textbf{143400000} \\ | |
| 711 | +\midrule | |
| 712 | +Valeur par logement (888 logements) (\$) & 161486 \\ | |
| 713 | +Taux global implicite (RNE 2026 / valeur) & {\pct{5.19}} \\ | |
| 714 | +Multiplicateur du revenu brut potentiel & {11,25} \\ | |
| 715 | +Dette (\$) / ratio prêt-valeur & {85~766~000 / \pct{59.8}} \\ | |
| 716 | +Fonds propres (valeur $-$ dette) (\$) & 57634000 \\ | |
| 717 | +Ratio de couverture agrégé (amortissement 480 mois) & {1,61} \\ | |
| 718 | +Part de la valeur en zone inondable / sols contaminés & {\pct{6.7} / \pct{3.5}} \\ | |
| 719 | +\bottomrule | |
| 720 | +\end{tabular} | |
| 721 | +\tabsource{\synth{script \texttt{ch48\_portefeuille.py}, fonction \texttt{reconciliation}.}} | |
| 722 | +\end{table} | |
| 723 | + | |
| 724 | +La valeur marchande du portefeuille au 30~juin 2026 est retenue à \dollars{143400000}, somme des valeurs individuelles arrondie à \dollars{100000} près, avec la répartition régionale du \cref{tab:48:rmr} : \dollars{65171000} à Montréal, \dollars{25091000} à Québec, \dollars{20259000} à Gatineau, \dollars{18132000} à Sherbrooke, \dollars{11447000} à Trois-Rivières et \dollars{3263000} au Saguenay. Trois commentaires accompagnent la conclusion. Le premier concerne la prime ou la décote de portefeuille, écartée par le mandat : si le fonds envisageait la vente du portefeuille en bloc, l'évaluateur devrait reprendre l'analyse avec une autre unité d'évaluation et rechercher, sur le marché canadien des transactions de portefeuilles, la preuve d'une prime pour la masse critique ou d'une décote pour l'hétérogénéité régionale, preuve qui n'existe pas dans le dossier ; la valeur retenue ne vaut que pour l'unité d'évaluation convenue. Le deuxième concerne l'écart entre la précision agrégée et la précision individuelle : le rapport doit dire que l'erreur relative sur la valeur du portefeuille est vraisemblablement inférieure à \pct{3} (le coefficient de variation simulé est de \pct{4.4} à un an, incluant l'incertitude de marché), mais que l'erreur sur un immeuble donné peut atteindre \pct{10}, et que les valeurs de l'annexe par immeuble ne doivent pas servir de base à une transaction individuelle sans évaluation complète. Le troisième concerne le ratio de la dette : à \pct{59.8} de la valeur, avec un ratio de couverture agrégé de \num{1.61}, le portefeuille est modérément endetté, mais la concentration des échéances en 2027 et 2028 et la sensibilité au taux de renouvellement font de la liquidité du fonds, et non de la valeur de ses immeubles, le premier risque des deux prochaines années ; c'est l'objet de la section de consultation du rapport, distincte de l'opinion de valeur. | |
| 725 | + | |
| 726 | +\section{Le rapport : extrait structuré}\label{sec:48:rapport} | |
| 727 | + | |
| 728 | +Le rapport d'évaluation de portefeuille respecte le contenu minimal de la règle 2.3 des Normes de pratique professionnelle \parencite{oeaqNormes} ; le \cref{tab:48:rapport} indique, pour chacun des douze éléments, la réponse du dossier et ce qui distingue le rapport de portefeuille du rapport individuel du \cref{ch:47}. Trois éléments appellent un traitement particulier. L'étendue du travail (élément 6) doit décrire l'évaluation de masse comme telle : modèle, données, inspections par échantillon, contrôle par ratios, immeubles examinés individuellement, et surtout ce que la méthode ne permet pas, c'est-à-dire l'utilisation des valeurs individuelles de l'annexe pour une transaction ou un prêt sur un immeuble donné. Les hypothèses (élément 7) comprennent trois hypothèses de travail qui ne sont pas des hypothèses extraordinaires au sens de la norme mais que le lecteur doit connaître : l'exactitude des revenus normalisés fournis par le fonds, l'amortissement de 480~mois des prêts, et l'égalité présumée de la valeur marchande et de la juste valeur comptable. Le raisonnement (élément 8) est, pour un portefeuille, autant statistique que narratif, et le rapport doit rendre les scripts et les données disponibles au vérificateur du fonds, ce que l'ouvrage fait par construction. | |
| 729 | + | |
| 730 | +\begin{table}[htbp]\centering | |
| 731 | +\caption{Contenu minimal du rapport (NPP, règle 2.3) et particularités du rapport de portefeuille.}\label{tab:48:rapport} | |
| 732 | +\footnotesize\begin{tabular}{@{}c L{3.6cm} L{8.0cm}@{}} | |
| 733 | +\toprule | |
| 734 | +N\textsuperscript{o} & Élément exigé & Réponse du dossier et particularité du portefeuille \\ | |
| 735 | +\midrule | |
| 736 | +1 & Identification physique et légale & Annexe par immeuble (\cref{tab:48:immeubles}) ; sociétés en commandite propriétaires ; 48 lots fictifs \\ | |
| 737 | +2 & Droits évalués & Pleine propriété grevée des baux (droit du locateur) pour chaque immeuble ; unité d'évaluation : chaque immeuble séparément \\ | |
| 738 | +3 & But et fin & Opinion de valeur marchande ; rapport financier du fonds et renouvellement d'une facilité de crédit ; prêteur = utilisateur désigné \\ | |
| 739 | +4 & Définition de la valeur & Valeur marchande des NPP ; présomption d'égalité avec la juste valeur comptable, déclarée comme hypothèse de travail \\ | |
| 740 | +5 & Date & Évaluation 2026-06-30 ; inspections mai-juin 2026 ; rapport 2026-10-31 ; fait postérieur : hausse du taux directeur du 28~octobre 2026 \\ | |
| 741 | +6 & Étendue du travail & Évaluation de masse (modèle régional du taux, ratios IAAO), 12 inspections sur 48, examen individuel de 5 immeubles, analyse de la dette et simulation ; limites : 36 immeubles non inspectés, états locatifs non vérifiés bail par bail, taux non publiés pour 4 RMR, cartographie des zones inondables non relue \\ | |
| 742 | +7 & Réserves et hypothèses de base & Annexe E adaptée ; aucune hypothèse extraordinaire ; hypothèses de travail : RNE fournis exacts, amortissement 480 mois, valeur marchande = juste valeur \\ | |
| 743 | +8 & Traitement de l'information et raisonnement & \Cref{sec:48:portefeuille} à \ref{sec:48:reconciliation} ; scripts et données reproductibles remis au vérificateur \\ | |
| 744 | +9 & Usage le meilleur et le plus profitable & Continuation de l'usage locatif pour les 48 immeubles ; aucune conversion ni redéveloppement envisagé \\ | |
| 745 | +10 & Rejet d'une méthode traditionnelle & Coût et comparaison directe écartés pour le portefeuille (motifs : actifs à revenu, marché actif, hétérogénéité) ; la comparaison par logement sert de contrôle régional \\ | |
| 746 | +11 & Conformité à la substance de l'évaluation & Règle 1.2 traitée immeuble par immeuble dans l'annexe ; conformité au Standard on Mass Appraisal déclarée \\ | |
| 747 | +12 & Attestation & Formule prescrite, signée ; absence d'intérêt dans le fonds et dans la facilité de crédit (art.~18 à 20 et 34 du Code de déontologie) \\ | |
| 748 | +\bottomrule | |
| 749 | +\end{tabular} | |
| 750 | +\tabsource{structure selon \textcite{oeaqNormes} et \textcite{deontOEAQ} ; contenu du dossier fictif ; évaluation de masse selon \textcite{iaaomass2025}.} | |
| 751 | +\end{table} | |
| 752 | + | |
| 753 | +La conclusion du rapport se lit alors ainsi, en substance. Sur la foi des évaluations individuelles les plus récentes des quarante-huit immeubles, de leur mise à jour à la date d'évaluation par un modèle régional du taux global contrôlé par les statistiques de ratio de l'IAAO, de l'inspection d'un échantillon de douze immeubles, de l'analyse des marchés locatifs et des marchés de capitaux des six régions et sous réserve des hypothèses et conditions limitatives énoncées, l'évaluateur est d'avis que la valeur marchande de la pleine propriété des quarante-huit immeubles, grevés des baux en vigueur et considérés séparément, au 30~juin 2026, totalise cent quarante-trois millions quatre cent mille dollars (\dollars{143400000}), répartis entre les six régions et les quarante-huit immeubles selon l'annexe. Cette conclusion s'appuie sur la méthode du revenu par capitalisation directe ; l'incertitude à horizon d'un an, mesurée par simulation sous des hypothèses de dépendance déclarées, situe la valeur du portefeuille entre \dollars{133500000} et \dollars{154200000} avec une probabilité de \pct{90}. Les valeurs individuelles de l'annexe sont des composantes de l'opinion sur le portefeuille et ne constituent pas des opinions de valeur destinées à une transaction ou à un financement individuel. La section de consultation qui suit l'opinion de valeur, et qui n'en fait pas partie, traite de la couverture de la dette, de l'échéancier, des scénarios de renouvellement et des recommandations d'allocation. | |
| 754 | + | |
| 755 | +\begin{quebec}[Ce que le dossier doit au cadre québécois] | |
| 756 | +Le portefeuille s'étend sur six régions métropolitaines dont la couverture statistique publique est complète : population et projections (Statistique Canada, tableau 17-10-0148-01 ; ISQ, projections 2026), loyers et inoccupation (SCHL, Enquête sur les logements locatifs d'octobre 2025), prix des plex (APCIQ, troisième trimestre 2026), mais dont deux seulement, Montréal et Québec, disposent de taux de capitalisation publiés (CBRE, troisième trimestre 2026) \parencite{statcanpoprmr,isqprojections2026,schlLocatif2025,apciqt32026,cbrecaprates2026q3} ; pour Gatineau, Sherbrooke, Trois-Rivières et Saguenay, l'évaluateur de portefeuille doit extraire ses taux du marché local, et le jeu synthétique les a posés par hypothèse. Le droit évalué est le droit du locateur, parce que l'aliénation ne résilie pas les baux \parencite[art.~1937]{ccq}. Le cadre des zones inondables en vigueur depuis le 1\textsuperscript{er} mars 2026 (classes d'intensité, restrictions à la reconstruction, cartographie de nouvelle génération publiée progressivement) et le régime des terrains contaminés de la Loi sur la qualité de l'environnement (avis de contamination, plan de réhabilitation) gouvernent l'exposition de cinq immeubles \parencite{zonesInond2026,inondcartes,rmun2026,lqe,rprt}. Le financement des immeubles collectifs repose largement sur l'assurance de la SCHL, dont le programme APH Select admet un amortissement de quarante ans et un ratio de couverture de \num{1.10} \parencite{schlaphselect}, ce qui fonde l'hypothèse d'amortissement du dossier ; le test de résistance à +200~points de base s'inspire du taux admissible minimal du BSIF pour les prêts résidentiels non assurés \parencite{osfiMqr}. Enfin, le rapport respecte le contenu minimal de la règle 2.3 des Normes de pratique professionnelle de l'OEAQ et distingue l'opinion de valeur (normes 1 et 2) de la consultation (normes 5 et 6) \parencite{oeaqNormes}. Toutes ces dispositions ont été vérifiées dans leur version à jour au 15~octobre 2026 (lois) ou au 1\textsuperscript{er} juillet 2026 (règlements) ; la cartographie des zones inondables applicable à chacun des trois immeubles fictifs n'a pas, par nature, pu être consultée. | |
| 757 | +\end{quebec} | |
| 758 | + | |
| 759 | +\begin{erreurs} | |
| 760 | +\begin{itemize} | |
| 761 | +\item Résumer un portefeuille par la moyenne simple ou la médiane des taux individuels plutôt que par le taux pondéré (\cref{eq:48:taux-pondere}) : ici, \pct{5.46} ou \pct{5.59} au lieu de \pct{5.19}, soit une erreur de \pct{5} à \pct{8} sur la valeur agrégée. | |
| 762 | +\item Comparer des taux médians par classe de taille, d'âge ou d'état sans tenir compte de la région : l'effet de confusion inverse le signe de l'effet de taille (\cref{tab:48:distribution}). | |
| 763 | +\item Lire un COD inférieur à 5 comme un gage de qualité du modèle alors qu'il est calculé en échantillon d'estimation ; ou interpréter un PRB estimé sur six immeubles. | |
| 764 | +\item Additionner les intervalles d'incertitude des immeubles pour obtenir celui du portefeuille, ou, à l'inverse, supposer les immeubles indépendants : les deux bornes sont fausses, et seule une structure de dépendance déclarée permet d'agréger (\cref{tab:48:mc}). | |
| 765 | +\item Oublier que la diversification géographique ne réduit pas le risque commun des taux : le coefficient de variation du portefeuille (\pct{4.4}) est aux deux tiers celui d'un immeuble (\pct{6.3}), non au vingtième. | |
| 766 | +\item Juger la dette par le ratio de couverture agrégé (\num{1.61}) sans examiner les ratios individuels (cinq immeubles sous \num{1.20}) ni l'échéancier (\pct{61} de la dette en 2027-2028). | |
| 767 | +\item Omettre de déclarer l'hypothèse d'amortissement des prêts : entre 480 et 300~mois, le ratio de couverture agrégé passe de \num{1.61} à \num{1.30} et le nombre d'immeubles sous \num{1.20} de cinq à treize. | |
| 768 | +\item Présenter une recommandation de cession comme un jugement de valeur marchande, ou une frontière rendement-risque comme une prescription, alors que l'une et l'autre dépendent d'estimations de croissance régionale bruitées et de la situation propre du fonds. | |
| 769 | +\item Appliquer une prime ou une décote de portefeuille sans preuve de marché, ou changer d'unité d'évaluation sans le dire. | |
| 770 | +\end{itemize} | |
| 771 | +\end{erreurs} | |
| 772 | + | |
| 773 | +\begin{limites} | |
| 774 | +Le dossier est entièrement synthétique : aucun des quarante-huit immeubles n'existe, les taux de Gatineau, Sherbrooke, Trois-Rivières et Saguenay ont été posés par hypothèse faute de publication, et les effets de l'état, de la taille, de la zone inondable et de la contamination sont des propriétés de la loi de génération retrouvées par la régression, non des mesures du marché québécois. Le modèle de masse est estimé sur les taux retenus dans des évaluations individuelles, non sur des ventes ; ses statistiques de ratio sont calculées en échantillon d'estimation, ce qui explique un COD inférieur aux seuils de l'IAAO, et les sous-échantillons régionaux de quatre à huit immeubles ne permettent pas d'estimer le PRD et le PRB avec une précision utile. La corrélation des revenus entre immeubles est estimée sur des séries dont la seule composante commune est le choc pandémique ; sur des marchés réels, une composante régionale existerait vraisemblablement. La corrélation des chocs de taux (\num{0.50} entre régions, \num{0.70} dans une région) et l'identification de l'écart-type du taux à la dispersion résiduelle du modèle sont des hypothèses déclarées, non des estimations ; la distribution de la valeur du portefeuille en dépend presque entièrement. L'amortissement de 480~mois des prêts, le solde assimilé au montant du dossier et le renouvellement au taux initial majoré sont des hypothèses, et le taux d'origination de chaque prêt n'est pas documenté. Les croissances tendancielles individuelles sont bruitées et les rendements attendus de la frontière en héritent. La cartographie des zones inondables en vigueur et les études de caractérisation des sols n'ont pas été consultées pour les immeubles fictifs ; les décotes de la littérature citée proviennent de marchés américains. L'égalité entre valeur marchande et juste valeur comptable est présumée et non vérifiée au regard du référentiel du fonds. L'inspection par échantillon et la non-vérification des états locatifs sont des limites à l'étendue du travail déclarées au mandat. Ces points sont consignés dans \texttt{verification/chapters/ch48-claims.csv}. | |
| 775 | +\end{limites} | |
| 776 | + | |
| 777 | +\begin{synthese} | |
| 778 | +\begin{itemize} | |
| 779 | +\item Portefeuille fictif : 48 immeubles, 888 logements, six RMR ; valeur \dollars{143363000}, RNE \dollars{7447030}, taux pondéré \pct{5.19} (médiane \pct{5.59}), RPV \pct{59.8}, \dollars{161445} par logement ; Montréal \pct{45.5} de la valeur, équivalent de 3,6 régions et 27,5 immeubles de poids égal. | |
| 780 | +\item Les écarts de taux entre régions (de \pct{4.49} à Montréal à \pct{6.39} au Saguenay) tiennent à la liquidité et à la profondeur des marchés plus qu'aux loyers ou à l'inoccupation ; ils sont persistants et se modélisent par des effets régionaux. | |
| 781 | +\item Modèle de masse du taux : région (+102 à +209~pb), état ($-21$~pb par point), taille ($-16$~pb par doublement), zone inondable (+41~pb), sol (+29~pb) ; $R^2 = 0{,}88$ ; somme prédite à $-\pct{0.55}$ de la somme des indications ; ratio médian 1,002, COD 3,8 ; cinq immeubles examinés individuellement. | |
| 782 | +\item RNE 2016-2026 : croissance \pct{3.0} par an (de \pct{1.5} au Saguenay à \pct{4.8} à Gatineau), volatilité agrégée \pct{1.3} contre \pct{3.2} par immeuble, choc pandémique $-\pct{2.5}$, corrélation entre immeubles 0,17 due au seul choc commun. | |
| 783 | +\item Dette : RCD agrégé 1,61 (480 mois) mais cinq immeubles sous 1,20 et un sous 1,00 ; \pct{61} de la dette échoit en 2027-2028 ; à +200~pb, RCD agrégé 1,26, seize immeubles sous 1,20 et \dollars{7.4} millions d'injection ; à 300 mois d'amortissement, RCD 1,30. | |
| 784 | +\item Monte-Carlo à corrélation régionale (Cholesky, 10~000 tirages) : intervalle à 90 \% de $-\pct{6.9}$ à $+\pct{7.6}$ ; VaR à 95 \% de \dollars{9.9} millions contre \dollars{14.3} millions pour la somme des VaR individuelles (ratio 0,69 ; 0,18 sous indépendance, 1,00 sous corrélation parfaite) ; la diversification réduit le risque propre, non le risque de taux. | |
| 785 | +\item Allocation : rendement total $R + g$, risque simulé et drapeaux ; frontière étroite en risque (\pct{4.27} à \pct{4.36}), discriminée par la croissance régionale ; recommandations = consultation et valeur d'investissement, non valeur marchande. | |
| 786 | +\item Valeur retenue \dollars{143400000}, somme des valeurs individuelles, chaque immeuble considéré séparément ; fourchette de \dollars{133.5} à \dollars{154.2} millions ; RPV \pct{59.8}. | |
| 787 | +\end{itemize} | |
| 788 | +\end{synthese} | |
| 789 | + | |
| 790 | +\section*{Exercices} | |
| 791 | + | |
| 792 | +\begin{exercice}[1]{Sommaire d'une région}{ex:48:1} | |
| 793 | +À partir de l'annexe par immeuble (\cref{tab:48:immeubles}), reconstituer le sommaire de la région de Sherbrooke : nombre de logements, valeur, revenu net, dette, taux global pondéré, valeur par logement et ratio prêt-valeur. Calculer ensuite la moyenne simple et la médiane des taux des sept immeubles, puis la valeur que l'on obtiendrait en capitalisant le revenu net régional à la moyenne simple. Expliquer l'écart avec la valeur agrégée. | |
| 794 | +\end{exercice} | |
| 795 | + | |
| 796 | +\begin{exercice}[1]{Un immeuble hors portefeuille}{ex:48:2} | |
| 797 | +Le fonds envisage l'acquisition d'un immeuble de vingt-quatre logements, d'état 3, de quarante-cinq ans, à Trois-Rivières, en zone inondable, dont le revenu net normalisé est de \dollars{150000}. À l'aide des coefficients du \cref{tab:48:coefficients} et du facteur de Duan, calculer le taux prédit et la valeur prédite ; refaire le calcul hors zone inondable, puis pour le même immeuble situé à Montréal. Exprimer l'effet de la zone inondable en points de base et en pourcentage de la valeur, et vérifier la relation de l'\cref{eq:48:decote}. | |
| 798 | +\end{exercice} | |
| 799 | + | |
| 800 | +\begin{exercice}[2]{La dette de P45}{ex:48:3} | |
| 801 | +L'immeuble P45 (Gatineau, 36 logements, RNE \dollars{366800}) porte une dette de \dollars{5416000} à \pct{5.17}, échéant en 2028. Calculer le service annuel de la dette et le ratio de couverture pour un amortissement de 480~mois, puis de 300~mois (composition semestrielle). Calculer le solde à l'échéance (24~mois) sous l'amortissement de 480~mois, le service de la dette et le ratio de couverture si ce solde est renouvelé à \pct{7.17} sur l'amortissement résiduel, puis la capacité de refinancement du prêteur (RPV \pct{75} de l'indication individuelle de \dollars{7186000}, RCD \num{1.20}) et l'injection de fonds requise. Comparer avec la valeur par régression retenue au \cref{ch:33} (\dollars{6716534}) et discuter le choix de la base de valeur du covenant de ratio prêt-valeur. | |
| 802 | +\end{exercice} | |
| 803 | + | |
| 804 | +\begin{exercice}[2]{Ratios de l'IAAO sur un sous-ensemble}{ex:48:4} | |
| 805 | +Calculer, pour les dix-sept immeubles montréalais du \cref{tab:48:immeubles}, le ratio médian, le ratio pondéré, le COD, le PRD et le PRB des valeurs prédites aux indications individuelles, selon les définitions du \cref{ch:09}. Comparer avec les statistiques du portefeuille (\cref{tab:48:iaao}) et avec les seuils de l'IAAO pour les immeubles à revenus. Expliquer pourquoi un COD de 4 ne doit pas être interprété ici comme il le serait dans une étude de ratio sur ventes, et ce que signifie un PRB négatif de $-0{,}015$ avec une erreur-type de 0,012. | |
| 806 | +\end{exercice} | |
| 807 | + | |
| 808 | +\begin{exercice}[2]{Croissance d'un immeuble et croissance de sa région}{ex:48:5} | |
| 809 | +À l'aide de \texttt{traite.cas4.croissance\_rne} ou de la série de \texttt{cas4\_portefeuille\_series.csv}, estimer la croissance tendancielle et la volatilité annualisée du revenu net de P36 (Québec, 72 logements, zone inondable) et les comparer à la croissance agrégée de la région de Québec (\cref{tab:48:croissance}). Mesurer le choc pandémique de la région selon l'\cref{eq:48:choc}. Calculer le rendement total attendu $R + g$ de P36 et discuter, en une demi-page, si la croissance propre de l'immeuble ou celle de la région doit servir à l'allocation, et pourquoi la différence importe pour un immeuble en zone inondable. | |
| 810 | +\end{exercice} | |
| 811 | + | |
| 812 | +\begin{exercice}[3]{Un choc de taux généralisé}{ex:48:6} | |
| 813 | +Refaire la simulation de la \cref{sec:48:montecarlo} avec une corrélation du choc de taux de \num{0.90} entre régions et de \num{0.95} dans une région, les autres paramètres inchangés (\num{10000} tirages, graine \texttt{20261031}), à l'aide de la fonction \texttt{simuler\_portefeuille} du script du chapitre. Rapporter l'intervalle à \pct{90}, le coefficient de variation, la VaR à \pct{95} et le ratio de diversification, et la probabilité que le ratio prêt-valeur dépasse \pct{75}. Comparer avec le régime déclaré et avec la borne de corrélation parfaite, et expliquer pourquoi le ratio de diversification se rapproche de 1 sans l'atteindre. | |
| 814 | +\end{exercice} | |
| 815 | + | |
| 816 | +\begin{exercice}[3]{Céder les immeubles en zone inondable}{ex:48:7} | |
| 817 | +Le fonds envisage de céder les trois immeubles en zone inondable (P36, P41, P43) à leur indication individuelle, moins \pct{2} de frais de vente, et de rembourser leur dette. Calculer le produit net de cession, le revenu net perdu et le taux pondéré des immeubles cédés ; puis, pour le portefeuille restant, la valeur, le taux pondéré, le ratio prêt-valeur, le ratio de couverture agrégé (480~mois), et, par simulation (mêmes paramètres et même graine), le coefficient de variation, la VaR à \pct{95} et le ratio de diversification. La cession réduit-elle le risque du portefeuille ? Dans quelle mesure la réponse dépend-elle de ce que la simulation capte et de ce qu'elle ne capte pas (restriction du droit de reconstruire, assurabilité) ? Distinguer, dans la conclusion, ce qui relève de la valeur marchande et ce qui relève de la valeur d'investissement du fonds. | |
| 818 | +\end{exercice} | |
| 819 | + | |
| 820 | +\section*{Pour aller plus loin} | |
| 821 | + | |
| 822 | +Sur l'évaluation de masse et son contrôle, le Standard on Mass Appraisal of Real Property et le Standard on Ratio Studies de l'IAAO \parencite{iaaomass2025,iaaoratio2013} restent les références normatives ; \textcite{gloudemansAlmy2011} en donnent le traitement pédagogique le plus complet, et \textcite{mccluskey2013} une perspective internationale. Sur le lissage et le bruit des évaluations individuelles qui composent un portefeuille, \textcite{geltner1993} et \textcite{claytonGeltnerHamilton2001} sont indispensables, et \textcite{fisherGeltnerWebb1994} comparent les méthodes de construction d'indices de valeur à partir d'évaluations. Sur la diversification et le risque de portefeuille, Markowitz (1952), cité en note à la \cref{sec:48:allocation}, est le texte fondateur ; \textcite{geltnerMillerClaytonEichholtz2014} et \textcite{baumCrosbyDevaney2021} transposent le cadre moyenne-variance à l'immobilier et en discutent les limites ; Artzner, Delbaen, Eber et Heath (1999), cités en note à la \cref{sec:48:montecarlo}, formalisent les propriétés qu'une mesure de risque devrait posséder et expliquent pourquoi la valeur à risque n'est pas toujours sous-additive. Sur la simulation de Monte-Carlo en évaluation, \textcite{hoesliJaniBender2006}, \textcite{frenchGabrielli2005} et \textcite{frenchGabrielli2004} proposent des protocoles de déclaration de l'incertitude, et \textcite{pyhrr1973} la lecture historique. Sur les déterminants des taux de capitalisation et leur composante commune, \textcite{sivitanidouSivitanides1999}, \textcite{sivitanidesTortoWheaton2003}, \textcite{chervachidzeWheaton2013} et \textcite{ducaLing2020} fondent l'hypothèse d'un facteur national dominant. Sur l'effet des zones inondables et de la contamination, les travaux de \textcite{binPolasky2004}, \textcite{bernsteinGustafsonLewis2019} et \textcite{hinoBurke2021}, et les recensions de \textcite{jackson2001} et \textcite{simonsSaginor2006}, sont discutés au \cref{ch:43}. Les textes primaires québécois à relire sont le Code civil (art.~1851 à 1978.4) \parencite{ccq}, la Loi sur la qualité de l'environnement (art.~31.42 à 31.69 et 46.0.2) et le cadre réglementaire des zones inondables en vigueur depuis le 1\textsuperscript{er} mars 2026 \parencite{lqe,zonesInond2026,rmun2026}, et les Normes de pratique professionnelle de l'OEAQ \parencite{oeaqNormes}. | |
added
references/lib-ch40.bib
+62 −0
@@ -0,0 +1,62 @@ | ||
| 1 | +% references/lib-ch40.bib — chapitre 40 (Monte-Carlo et stress tests) | |
| 2 | +% Le chapitre ne cite QUE des clés déjà présentes dans references/library.bib (règle de collision des briefs de phase 4) : | |
| 3 | +% pyhrr1973, wofford1978, frenchGabrielli2004, frenchGabrielli2005, hoesliJaniBender2006, byrne1996, sivitanidouSivitanides1999, | |
| 4 | +% chervachidzeWheaton2013, ducaLing2020, baumCrosbyDevaney2021, geltnerMillerClaytonEichholtz2014, gelman2013, osfiMqr, bdc20261028, | |
| 5 | +% bdctauxhypothecaires2026, oeaqNormes. | |
| 6 | +% Les quatre entrées ci-dessous sont les références fondatrices des méthodes exposées (hypercube latin, indices de Sobol, mesures de | |
| 7 | +% risque cohérentes, CVaR). Elles ont été VÉRIFIÉES le 2026-10-31 (DOI résolus ; métadonnées Crossref / Risk.net ; voir ch40-registry.csv) | |
| 8 | +% mais ne sont PAS citées dans ch40.tex ; l'orchestrateur peut les fusionner dans library.bib puis remplacer, aux §40.4, §40.5 et §40.6, | |
| 9 | +% les formules « résultat classique » par \parencite{mckayBeckmanConover1979}, \parencite{sobol2001}, \parencite{artznerDelbaenEberHeath1999}, | |
| 10 | +% \parencite{rockafellarUryasev2000}. | |
| 11 | + | |
| 12 | +@article{mckayBeckmanConover1979, | |
| 13 | + author = {McKay, M. D. and Beckman, R. J. and Conover, W. J.}, | |
| 14 | + title = {Comparison of Three Methods for Selecting Values of Input Variables in the Analysis of Output from a Computer Code}, | |
| 15 | + journaltitle = {Technometrics}, | |
| 16 | + year = {1979}, | |
| 17 | + volume = {21}, | |
| 18 | + number = {2}, | |
| 19 | + pages = {239--245}, | |
| 20 | + doi = {10.1080/00401706.1979.10489755}, | |
| 21 | + urldate = {2026-10-31}, | |
| 22 | + note = {Référence fondatrice de l'échantillonnage par hypercube latin ; métadonnées vérifiées via Crossref (page éditeur inaccessible, HTTP 403)} | |
| 23 | +} | |
| 24 | + | |
| 25 | +@article{sobol2001, | |
| 26 | + author = {Sobol', I. M.}, | |
| 27 | + title = {Global Sensitivity Indices for Nonlinear Mathematical Models and Their {Monte Carlo} Estimates}, | |
| 28 | + journaltitle = {Mathematics and Computers in Simulation}, | |
| 29 | + year = {2001}, | |
| 30 | + volume = {55}, | |
| 31 | + number = {1--3}, | |
| 32 | + pages = {271--280}, | |
| 33 | + doi = {10.1016/S0378-4754(00)00270-6}, | |
| 34 | + urldate = {2026-10-31}, | |
| 35 | + note = {Indices de sensibilité globale et estimateurs Monte-Carlo ; métadonnées vérifiées via Crossref} | |
| 36 | +} | |
| 37 | + | |
| 38 | +@article{artznerDelbaenEberHeath1999, | |
| 39 | + author = {Artzner, Philippe and Delbaen, Freddy and Eber, Jean-Marc and Heath, David}, | |
| 40 | + title = {Coherent Measures of Risk}, | |
| 41 | + journaltitle = {Mathematical Finance}, | |
| 42 | + year = {1999}, | |
| 43 | + volume = {9}, | |
| 44 | + number = {3}, | |
| 45 | + pages = {203--228}, | |
| 46 | + doi = {10.1111/1467-9965.00068}, | |
| 47 | + urldate = {2026-10-31}, | |
| 48 | + note = {Axiomes des mesures de risque cohérentes ; non sous-additivité de la VaR ; métadonnées vérifiées via Crossref} | |
| 49 | +} | |
| 50 | + | |
| 51 | +@article{rockafellarUryasev2000, | |
| 52 | + author = {Rockafellar, R. Tyrrell and Uryasev, Stanislav}, | |
| 53 | + title = {Optimization of Conditional Value-at-Risk}, | |
| 54 | + journaltitle = {Journal of Risk}, | |
| 55 | + year = {2000}, | |
| 56 | + volume = {2}, | |
| 57 | + number = {3}, | |
| 58 | + pages = {21--41}, | |
| 59 | + doi = {10.21314/JOR.2000.038}, | |
| 60 | + urldate = {2026-10-31}, | |
| 61 | + note = {CVaR (expected shortfall) ; page Risk.net consultée le 2026-10-31} | |
| 62 | +} | |
added
references/lib-ch41.bib
+17 −0
@@ -0,0 +1,17 @@ | ||
| 1 | +% Nouvelles références du chapitre 41 — à fusionner dans library.bib par l'orchestrateur. | |
| 2 | +% Non citée par \textcite/\parencite dans ch41.tex (règle : citer uniquement des clés déjà dans library.bib) ; le texte | |
| 3 | +% nomme « Cox, Ross et Rubinstein (1979) » en toutes lettres pour la paramétrisation u = e^{σ√Δt} de l'arbre binomial. | |
| 4 | +% Vérifiée le 2026-10-31 par résolution du DOI dans l'API Crossref (api.crossref.org/works/10.1016/0304-405X(79)90015-1) : | |
| 5 | +% titre, auteurs, revue, volume 7, numéro 3, pages 229-263, année 1979. | |
| 6 | + | |
| 7 | +@article{coxRossRubinstein1979, | |
| 8 | + author = {Cox, John C. and Ross, Stephen A. and Rubinstein, Mark}, | |
| 9 | + title = {Option Pricing: A Simplified Approach}, | |
| 10 | + journaltitle = {Journal of Financial Economics}, | |
| 11 | + year = {1979}, | |
| 12 | + volume = {7}, | |
| 13 | + number = {3}, | |
| 14 | + pages = {229--263}, | |
| 15 | + doi = {10.1016/0304-405X(79)90015-1}, | |
| 16 | + urldate = {2026-10-31} | |
| 17 | +} | |
added
references/lib-ch46.bib
+25 −0
@@ -0,0 +1,25 @@ | ||
| 1 | +% ============================================================================== | |
| 2 | +% lib-ch46.bib — Chapitre 46 (Cas 2 : triplex à Québec), rédigé le 2026-10-31. | |
| 3 | +% Le chapitre ne cite par \parencite/\textcite que des clés déjà présentes dans references/library.bib : | |
| 4 | +% oeaqNormes, deontOEAQ, ivs2025, cuspap2026, ccq, lfm, ldmi, loiTAL, loiCourtage, loiInteret, loi65_2024, loi31_2024, | |
| 5 | +% reglCriteresFixation, decret1455_2025, talIndices2026, oaciqFormulaireDV, oaciqContexteDV, vqtaux2026, vqrole2025, | |
| 6 | +% quebecrole2025, villeQuebecMutations, quebecMutations, taxescolaire2026, vqzonage, apciqt32026, apciqbaroquebec2026, | |
| 7 | +% jlr202608, schlLocatif2025, schlrmltables2025, schlfraisexploitation2015, bacprimes2025, cbrecaprates2026q3, | |
| 8 | +% bdc20261028, bdcvalet, bdctauxhypothecaires2026, statcanipc, statcanIPCB, fincan2024hypo, osfiMqr, | |
| 9 | +% desrosiersTheriaultVilleneuve2000, theriaultDesrosiersVilleneuveKestens2003, kestensTheriaultDesrosiers2006, | |
| 10 | +% shillingSirmansDombrow1991, hultenWykoff1981, appraisal2026, appraisalCdn, fisherMartin2007, isakson1986, vandell1991, | |
| 11 | +% kummerowGalfalvy2002, halvorsenPalmquist1980, kennedy1981, poterba1984, himmelbergMayerSinai2005, | |
| 12 | +% geltnerMillerClaytonEichholtz2014, arnott1995, kholodilin2024, smith1988, diamondMcquadeQian2019. | |
| 13 | +% | |
| 14 | +% UNE NOUVELLE SOURCE VÉRIFIÉE (page consultée le 2026-10-31 ; non citée par \parencite dans le chapitre tant que ce fichier | |
| 15 | +% n'est pas fusionné dans library.bib — le texte la désigne en toutes lettres et le registre ch46-registry.csv la consigne) : | |
| 16 | +% ============================================================================== | |
| 17 | + | |
| 18 | +@online{talReprise2026, | |
| 19 | + author = {{Tribunal administratif du logement}}, | |
| 20 | + title = {Reprise de logement}, | |
| 21 | + year = {2026}, | |
| 22 | + url = {https://www.tal.gouv.qc.ca/fr/droit-du-locateur-de-mettre-fin-au-bail/reprise-de-logement}, | |
| 23 | + urldate = {2026-10-31}, | |
| 24 | + note = {Délais de l'avis de reprise (art.~1960 C.c.Q.) : au moins six mois avant la fin d'un bail de plus de six mois, un mois pour un bail de six mois ou moins, six mois avant la date prévue pour un bail à durée indéterminée ; réponse du locataire dans le mois (silence = refus réputé) ; demande du locateur au Tribunal dans le mois du refus ; le locateur doit démontrer qu'il entend réellement reprendre le logement} | |
| 25 | +} | |
added
references/lib-ch48.bib
+34 −0
@@ -0,0 +1,34 @@ | ||
| 1 | +% Nouvelles références du chapitre 48 — vérifiées dans l'API Crossref (api.crossref.org/works/<DOI>) le 2026-10-31 ; à fusionner dans library.bib par l'orchestrateur. | |
| 2 | +% NON citées par clé dans ch48.tex (règle : citer uniquement des clés déjà présentes dans library.bib) : mentionnées en toutes lettres avec DOI en note de bas de page (§48.7 et §48.8). | |
| 3 | +% Toutes les autres citations du chapitre utilisent des clés existantes de references/library.bib : oeaqNormes, deontOEAQ, ivs2025, ccq, iaaomass2025, iaaoratio2013, | |
| 4 | +% cbrecaprates2026q3, schlLocatif2025, schlrmltables2025, statcanpoprmr, isqmunicipalites2026, isqprojections2026, apciqt32026, bdc20261028, bdcvalet, bdctauxhypothecaires2026, | |
| 5 | +% schlaphselect, osfiMqr, zonesInond2026, inondcartes, inondtravaux, rmun2026, lqe, rprt, repertoiretc, sivitanidouSivitanides1999, sivitanidesTortoWheaton2003, | |
| 6 | +% chervachidzeWheaton2013, ducaLing2020, halvorsenPalmquist1980, white1980, duan1983, geltner1993, claytonGeltnerHamilton2001, fisherGeltnerWebb1994, gordonShapiro1956, | |
| 7 | +% geltnerMillerClaytonEichholtz2014, baumCrosbyDevaney2021, hoesliJaniBender2006, frenchGabrielli2004, frenchGabrielli2005, pyhrr1973, binPolasky2004, harrisonSmershSchwartz2001, | |
| 8 | +% binKruseLandry2008, bernsteinGustafsonLewis2019, hinoBurke2021, simonsSaginor2006, jackson2001, gloudemansAlmy2011, mccluskey2013. | |
| 9 | + | |
| 10 | +@article{markowitz1952, | |
| 11 | + author = {Markowitz, Harry}, | |
| 12 | + title = {Portfolio Selection}, | |
| 13 | + journaltitle = {The Journal of Finance}, | |
| 14 | + year = {1952}, | |
| 15 | + volume = {7}, | |
| 16 | + number = {1}, | |
| 17 | + pages = {77--91}, | |
| 18 | + doi = {10.2307/2975974}, | |
| 19 | + urldate = {2026-10-31}, | |
| 20 | + note = {Frontière moyenne-variance (eq. 48.frontiere) ; vérifié Crossref 2026-10-31 (la notice Crossref ne donne que la page de début, 77 ; pagination 77-91 selon la revue)} | |
| 21 | +} | |
| 22 | + | |
| 23 | +@article{artznerDelbaenEberHeath1999, | |
| 24 | + author = {Artzner, Philippe and Delbaen, Freddy and Eber, Jean-Marc and Heath, David}, | |
| 25 | + title = {Coherent Measures of Risk}, | |
| 26 | + journaltitle = {Mathematical Finance}, | |
| 27 | + year = {1999}, | |
| 28 | + volume = {9}, | |
| 29 | + number = {3}, | |
| 30 | + pages = {203--228}, | |
| 31 | + doi = {10.1111/1467-9965.00068}, | |
| 32 | + urldate = {2026-10-31}, | |
| 33 | + note = {Axiomes des mesures de risque cohérentes ; non-sous-additivité générale de la VaR (prop. 48.1) ; vérifié Crossref 2026-10-31} | |
| 34 | +} | |
modified
references/library.bib
+86 −0
@@ -5371,3 +5371,89 @@ | ||
| 5371 | 5371 | urldate = {2026-10-31}, |
| 5372 | 5372 | note = {Rétrécissement empirique (James–Stein) ; vérifié Crossref} |
| 5373 | 5373 | } |
| 5374 | + | |
| 5375 | +@article{mckayBeckmanConover1979, | |
| 5376 | + author = {McKay, M. D. and Beckman, R. J. and Conover, W. J.}, | |
| 5377 | + title = {Comparison of Three Methods for Selecting Values of Input Variables in the Analysis of Output from a Computer Code}, | |
| 5378 | + journaltitle = {Technometrics}, | |
| 5379 | + year = {1979}, | |
| 5380 | + volume = {21}, | |
| 5381 | + number = {2}, | |
| 5382 | + pages = {239--245}, | |
| 5383 | + doi = {10.1080/00401706.1979.10489755}, | |
| 5384 | + urldate = {2026-10-31}, | |
| 5385 | + note = {Référence fondatrice de l'échantillonnage par hypercube latin ; métadonnées vérifiées via Crossref (page éditeur inaccessible, HTTP 403)} | |
| 5386 | +} | |
| 5387 | + | |
| 5388 | +@article{sobol2001, | |
| 5389 | + author = {Sobol', I. M.}, | |
| 5390 | + title = {Global Sensitivity Indices for Nonlinear Mathematical Models and Their {Monte Carlo} Estimates}, | |
| 5391 | + journaltitle = {Mathematics and Computers in Simulation}, | |
| 5392 | + year = {2001}, | |
| 5393 | + volume = {55}, | |
| 5394 | + number = {1--3}, | |
| 5395 | + pages = {271--280}, | |
| 5396 | + doi = {10.1016/S0378-4754(00)00270-6}, | |
| 5397 | + urldate = {2026-10-31}, | |
| 5398 | + note = {Indices de sensibilité globale et estimateurs Monte-Carlo ; métadonnées vérifiées via Crossref} | |
| 5399 | +} | |
| 5400 | + | |
| 5401 | +@article{artznerDelbaenEberHeath1999, | |
| 5402 | + author = {Artzner, Philippe and Delbaen, Freddy and Eber, Jean-Marc and Heath, David}, | |
| 5403 | + title = {Coherent Measures of Risk}, | |
| 5404 | + journaltitle = {Mathematical Finance}, | |
| 5405 | + year = {1999}, | |
| 5406 | + volume = {9}, | |
| 5407 | + number = {3}, | |
| 5408 | + pages = {203--228}, | |
| 5409 | + doi = {10.1111/1467-9965.00068}, | |
| 5410 | + urldate = {2026-10-31}, | |
| 5411 | + note = {Axiomes des mesures de risque cohérentes ; non sous-additivité de la VaR ; métadonnées vérifiées via Crossref} | |
| 5412 | +} | |
| 5413 | + | |
| 5414 | +@article{rockafellarUryasev2000, | |
| 5415 | + author = {Rockafellar, R. Tyrrell and Uryasev, Stanislav}, | |
| 5416 | + title = {Optimization of Conditional Value-at-Risk}, | |
| 5417 | + journaltitle = {Journal of Risk}, | |
| 5418 | + year = {2000}, | |
| 5419 | + volume = {2}, | |
| 5420 | + number = {3}, | |
| 5421 | + pages = {21--41}, | |
| 5422 | + doi = {10.21314/JOR.2000.038}, | |
| 5423 | + urldate = {2026-10-31}, | |
| 5424 | + note = {CVaR (expected shortfall) ; page Risk.net consultée le 2026-10-31} | |
| 5425 | +} | |
| 5426 | + | |
| 5427 | +@article{coxRossRubinstein1979, | |
| 5428 | + author = {Cox, John C. and Ross, Stephen A. and Rubinstein, Mark}, | |
| 5429 | + title = {Option Pricing: A Simplified Approach}, | |
| 5430 | + journaltitle = {Journal of Financial Economics}, | |
| 5431 | + year = {1979}, | |
| 5432 | + volume = {7}, | |
| 5433 | + number = {3}, | |
| 5434 | + pages = {229--263}, | |
| 5435 | + doi = {10.1016/0304-405X(79)90015-1}, | |
| 5436 | + urldate = {2026-10-31} | |
| 5437 | +} | |
| 5438 | + | |
| 5439 | +@online{talReprise2026, | |
| 5440 | + author = {{Tribunal administratif du logement}}, | |
| 5441 | + title = {Reprise de logement}, | |
| 5442 | + year = {2026}, | |
| 5443 | + url = {https://www.tal.gouv.qc.ca/fr/droit-du-locateur-de-mettre-fin-au-bail/reprise-de-logement}, | |
| 5444 | + urldate = {2026-10-31}, | |
| 5445 | + note = {Délais de l'avis de reprise (art.~1960 C.c.Q.) : au moins six mois avant la fin d'un bail de plus de six mois, un mois pour un bail de six mois ou moins, six mois avant la date prévue pour un bail à durée indéterminée ; réponse du locataire dans le mois (silence = refus réputé) ; demande du locateur au Tribunal dans le mois du refus ; le locateur doit démontrer qu'il entend réellement reprendre le logement} | |
| 5446 | +} | |
| 5447 | + | |
| 5448 | +@article{markowitz1952, | |
| 5449 | + author = {Markowitz, Harry}, | |
| 5450 | + title = {Portfolio Selection}, | |
| 5451 | + journaltitle = {The Journal of Finance}, | |
| 5452 | + year = {1952}, | |
| 5453 | + volume = {7}, | |
| 5454 | + number = {1}, | |
| 5455 | + pages = {77--91}, | |
| 5456 | + doi = {10.2307/2975974}, | |
| 5457 | + urldate = {2026-10-31}, | |
| 5458 | + note = {Frontière moyenne-variance (eq. 48.frontiere) ; vérifié Crossref 2026-10-31 (la notice Crossref ne donne que la page de début, 77 ; pagination 77-91 selon la revue)} | |
| 5459 | +} | |
modified
solutions/ch37.tex
+4 −4
@@ -4,7 +4,7 @@ | ||
| 4 | 4 | \begin{solution}{ex:37:1}{Une division d'arbre à la main} |
| 5 | 5 | (a) Les logarithmes des huit prix, dans l'ordre des superficies (70, 99, 128, 156, 160, 170, 221, \msq{241}), sont 12,478 ; 12,744 ; 12,975 ; 13,256 ; 13,057 ; 12,910 ; 13,210 ; 13,106. Leur moyenne est 12,967 et la somme des carrés des écarts au nœud racine vaut $\mathit{SCE}_0 = 0{,}462$. |
| 6 | 6 | |
| 7 | −(b) Les sept seuils candidats sont les milieux 84,5 ; 113,5 ; 142 ; 158 ; 165 ; 195,5 et \msq{231}. Pour le seuil de \msq{113{,}5}, le fils gauche contient les deux premières ventes (moyenne 12,611, somme des carrés $0{,}5\,(12{,}744 - 12{,}478)^2 = 0{,}035$) et le fils droit les six autres (moyenne 13,086, somme des carrés 0,089) : $\mathit{SCE} = 0{,}124$, soit un gain de $0{,}462 - 0{,}124 = 0{,}338$, le plus grand des sept (le seuil de 84,5 donne un gain de 0,209, celui de 142 de 0,283 ; les suivants sont inférieurs). La meilleure division sépare donc les maisons de moins de \msq{113{,}5} des autres ; les constantes prédites sont $\exp(12{,}611) \approx \dollars{300000}$ à gauche et $\exp(13{,}086) \approx \dollars{482000}$ à droite. On remarque que les six ventes de droite, de 128 à \msq{241}, sont prédites au même prix alors que leurs prix observés vont de 404 500 à \dollars{571500} : avec huit observations, un arbre ne peut ni capter l'effet de l'âge et de la qualité qui expliquent ces écarts, ni représenter la croissance continue du prix avec la superficie. | |
| 7 | +(b) Les sept seuils candidats sont les milieux 84,5 ; 113,5 ; 142 ; 158 ; 165 ; 195,5 et \msq{231}. Pour le seuil de \msq{113{,}5}, le fils gauche contient les deux premières ventes (moyenne 12,611, somme des carrés $0{,}5\,(12{,}744 - 12{,}478)^2 = 0{,}035$) et le fils droit les six autres (moyenne 13,086, somme des carrés 0,089) : $\mathit{SCE} = 0{,}124$, soit un gain de $0{,}462 - 0{,}124 = 0{,}338$, le plus grand des sept (le seuil de 84,5 donne un gain de 0,273, celui de 142 de 0,264, celui de 195,5 de 0,097 ; les autres sont inférieurs à 0,09). La meilleure division sépare donc les maisons de moins de \msq{113{,}5} des autres ; les constantes prédites sont $\exp(12{,}611) \approx \dollars{300000}$ à gauche et $\exp(13{,}086) \approx \dollars{482000}$ à droite. On remarque que les six ventes de droite, de 128 à \msq{241}, sont prédites au même prix alors que leurs prix observés vont de 404 500 à \dollars{571500} : avec huit observations, un arbre ne peut ni capter l'effet de l'âge et de la qualité qui expliquent ces écarts, ni représenter la croissance continue du prix avec la superficie. | |
| 8 | 8 | |
| 9 | 9 | (c) Le critère \eqref{eq:37:division} ne dépend que de l'\emph{ordre} des observations selon la variable de division et des valeurs de $y$ dans les deux groupes ; une transformation strictement croissante (logarithme, conversion en pieds carrés) conserve l'ordre et donc les groupes, les sommes de carrés et le gain. Seul le seuil affiché change (il devient $\ln 113{,}5$ ou \pisq{1222}). C'est pourquoi les arbres n'exigent aucune transformation des variables, contrairement au modèle hédonique, où entrer la superficie en logarithme ou en niveau change la forme de la fonction estimée. |
| 10 | 10 | \end{solution} |
@@ -52,7 +52,7 @@ | ||
| 52 | 52 | |
| 53 | 53 | (b) Lorsque Buckingham est exclu, son indicatrice est retirée et ses ventes sont prédites au niveau de Hull ; le biais moyen de la prédiction est donc l'opposé de la prime omise, $-\ln(395\,000/475\,000) = +0{,}184$, plus le bruit d'échantillonnage : le script donne $+0{,}234$ pour Buckingham et $+0{,}261$ pour Masson-Angers (prime vraie $-0{,}204$), des écarts de 0,05 qui s'expliquent par les 42 et 47 ventes de ces secteurs et par la colinéarité entre leur position et la distance au centre. Le boosting situe ces deux secteurs l'un par l'autre (coordonnées voisines, grande distance au centre) et prédit un niveau intermédiaire proche du bon ($-0{,}6$ \% et $+7{,}2$ \%) ; pour Gatineau et Aylmer, en revanche, la position géographique ne distingue pas le secteur de ses voisins et le boosting prédit trop bas ($-6{,}8$ et $-7{,}1$ \%), là où l'hédonique, grâce à un secteur de référence par hasard voisin en niveau (Gatineau et Hull ont des médianes proches), fait bien. |
| 54 | 54 | |
| 55 | −(c) En remplaçant les quatre indicatrices par un polynôme de degré 2 ou 3 en latitude et longitude (ou des splines), l'hédonique acquiert la capacité d'interpoler un niveau de prix pour un secteur absent à partir de ses voisins, comme le font les arbres, au prix d'une surface lisse qui ne reproduit pas les discontinuités de secteur (le \cref{ch:19} en discute avec la régression géographiquement pondérée). En exclusion d'un secteur, cette variante réduit fortement les biais de Buckingham et de Masson-Angers et détériore légèrement la validation aléatoire ; elle rapproche les deux approches en montrant que la différence de comportement hors support tient moins à la famille de modèles qu'à la \emph{représentation} de la localisation, indicatrices contre coordonnées. Le choix de cette représentation est une hypothèse que l'analyste doit déclarer et valider selon l'usage prévu. | |
| 55 | +(c) En remplaçant les quatre indicatrices par un polynôme de degré 2 en coordonnées (en kilomètres : $x$, $y$, $x^2$, $y^2$, $xy$), l'hédonique acquiert la capacité d'interpoler un niveau de prix pour un secteur absent à partir de ses voisins, comme le font les arbres. En validation aléatoire, cette variante fait presque aussi bien que la référence (RMSE 0,0859 contre 0,0839 ; COD 6,99 contre 6,83) : la surface lisse décrit convenablement les cinq niveaux de secteur. En exclusion d'un secteur, elle corrige les deux cas que les indicatrices rataient, Buckingham ($-6{,}6$ \% au lieu de $+23{,}4$) et Masson-Angers ($+1{,}3$ \% au lieu de $+26{,}1$), parce que la surface, estimée sur les quatre autres secteurs, se prolonge vers l'est en descendant ; mais elle produit un biais de $-26{,}4$ \% sur Aylmer, à l'extrémité ouest, où le polynôme estimé sans ce secteur extrapole une pente qui n'a rien à voir avec la prime de $+11$ \%, et le COD global reste à 10,43, identique à celui des indicatrices (10,44). Les arbres, eux, extrapolent par un plateau et se trompent de $-7$ \% sur Aylmer. La leçon est double : la différence de comportement hors support tient moins à la famille de modèles qu'à la \emph{représentation} de la localisation (indicatrices, coordonnées, surface), et toute représentation extrapole selon sa propre forme, par paliers pour les indicatrices, par plateaux pour les arbres, par la courbure du polynôme pour la surface, cette dernière étant la plus dangereuse au bord du territoire. Le choix de la représentation est une hypothèse que l'analyste doit déclarer et valider selon l'usage prévu (le \cref{ch:19} compare ces représentations avec la régression géographiquement pondérée et le krigeage). | |
| 56 | 56 | \end{solution} |
| 57 | 57 | |
| 58 | 58 | \begin{solution}{ex:37:7}{Découvrir, puis établir} |
@@ -60,7 +60,7 @@ | ||
| 60 | 60 | |
| 61 | 61 | (b) Dans le scénario, la paire âge-qualité devient la première interaction SHAP (valeur moyenne 0,0068), suivie de superficie-latitude (0,0034) et de superficie-mois (0,0025) ; dans le cas de base, âge-qualité n'apparaît pas en tête et la plus forte paire, superficie-latitude, vaut 0,0031. L'interaction nouvelle double la plus forte interaction du cas de base ; c'est le signal qu'un terme croisé manque au modèle paramétrique. |
| 62 | 62 | |
| 63 | −(c) Le modèle respécifié avec les seuils vrais (qualité $\ge 4$ et âge $\ge 40$ ; âge de 25 à 45) obtient un COD de 6,85 et une erreur de 0,084, contre 7,46 pour le boosting et 8,15 pour l'hédonique de référence ; il estime la prime à 0,129 (erreur-type 0,012) et le mur à $-0{,}092$ (0,008). Avec des seuils lus sur les courbes, décalés de quelques années (par exemple 22 à 48 ans ou 28 à 42 ans), les indicatrices classent mal les ventes situées dans les bandes d'erreur, de l'ordre de 30 à 60 ventes sur 600 ; le coefficient du mur est atténué (vers $-0{,}07$) et le COD remonte de deux à trois dixièmes de point, restant toutefois meilleur que le boosting : une spécification approximativement bonne bat encore un modèle souple, parce que l'essentiel de la structure est capté avec deux paramètres. Le lecteur vérifiera ses propres seuils dans le script. | |
| 63 | +(c) Le modèle respécifié avec les seuils vrais (qualité $\ge 4$ et âge $\ge 40$ ; âge de 25 à 45) obtient un COD de 6,85 et une erreur de 0,084, contre 7,46 pour le boosting et 8,15 pour l'hédonique de référence ; il estime la prime à 0,129 (erreur-type 0,012) et le mur à $-0{,}092$ (0,008). Avec des seuils lus sur les courbes et décalés de quelques années, l'indicatrice du mur classe mal les ventes situées dans les bandes d'erreur : 56 ventes sur 600 avec les bornes 22 à 48 ans, 51 avec les bornes 28 à 42 ans. Le coefficient du mur est atténué ($-0{,}079$ et $-0{,}068$ au lieu de $-0{,}092$ avec les bornes vraies) et le COD remonte à 7,02 et 7,18, soit de deux à trois dixièmes de point au-dessus du modèle aux bornes vraies (6,85), tout en restant meilleur que le boosting (7,46) : une spécification approximativement bonne bat encore un modèle souple, parce que l'essentiel de la structure est capté avec deux paramètres. Le script (\texttt{exercices}, clé \texttt{7c}) imprime ces chiffres ; le lecteur vérifiera ses propres bornes. | |
| 64 | 64 | |
| 65 | −(d) La validation imbriquée choisit la profondeur dans une boucle interne (par exemple cinq plis sur les neuf dixièmes d'apprentissage de chaque pli externe) puis évalue le modèle retenu sur le pli externe. Sur le cas de base, la boucle interne retient presque toujours la profondeur 1, et l'erreur externe est voisine de celle du \cref{tab:37:sensibilite} pour les souches (0,089), avec un écart de l'ordre du millième : l'optimisme de la sélection non imbriquée est faible ici, parce que la grille est petite et que les différences entre profondeurs sont nettes et stables d'un pli à l'autre. Il serait plus grand avec une grille fine sur plusieurs hyperparamètres et un petit échantillon ; la règle est de toujours déclarer quelles données ont servi à choisir et lesquelles à évaluer. | |
| 65 | +(d) La validation imbriquée choisit la profondeur dans une boucle interne (trois plis sur les neuf dixièmes d'apprentissage de chaque pli externe, profondeurs 1 à 3) puis évalue le modèle retenu sur le pli externe. Sur le cas de base, la boucle interne retient la profondeur 1 dans les dix plis externes, et l'erreur externe est de 0,0887 (COD 7,22), identique au dix-millième près à la valeur rapportée pour les souches au \cref{tab:37:sensibilite} : l'optimisme de la sélection non imbriquée est ici nul, parce que la grille est petite et que la différence entre profondeurs est nette et stable d'un pli à l'autre. Il serait plus grand avec une grille fine sur plusieurs hyperparamètres et un petit échantillon ; la règle est de toujours déclarer quelles données ont servi à choisir et lesquelles à évaluer. | |
| 66 | 66 | \end{solution} |
modified
solutions/ch46.tex
+29 −0
@@ -1 +1,30 @@ | ||
| 1 | 1 | % Solutions du chapitre 46 — Cas 2 : triplex à Québec |
| 2 | +% Tous les chiffres proviennent de analysis/python/cases/ch46_dossier.py (fonction exercices()), testés dans analysis/python/tests/test_ch46.py. | |
| 3 | + | |
| 4 | +\begin{solution}{ex:46:1}{Taxes déclarées ou recalculées} | |
| 5 | +En conservant les taxes déclarées, les dépenses hors réserve passent de \dollars{16182.01} à $\dollars{16182.01} + \dollars{462.32} + \dollars{98.75} = \dollars{16743.08}$, les dépenses totales à \dollars{18543.08} et le revenu net à $\dollars{40577.04} - \dollars{18543.08} = \dollars{22033.96}$, qui est exactement le revenu net du \cref{ch:32} (fonction \texttt{traite.cas2.rne} sur le tableau de dépenses d'origine). Au taux ajusté de \pct{3.02}, l'indication par capitalisation est $\dollars{22033.96}/0{,}0302 = \dollars{729549}$, contre \dollars{748126} avec les taxes recalculées : l'écart de \dollars{18577} est le quotient de l'écart de revenu net, \dollars{561.07}, par le taux. L'ouvrage préfère le recalcul parce que c'est le montant que l'acheteur paiera effectivement dès le prochain compte, parce qu'il est traçable jusqu'au règlement de taxation et au rôle, et parce qu'un compte déclaré par un vendeur n'est pas une pièce vérifiée. Le rapport doit présenter les deux montants, indiquer la règle retenue, énumérer les explications possibles de l'écart (taxes de secteur ou tarifs non captés par le taux général, exercice ou valeur au rôle différents, erreur) et signaler que l'effet sur la valeur pondérée, \pct{25} de \dollars{18577} soit environ \dollars{4600}, est inférieur au pas d'arrondi. | |
| 6 | +\end{solution} | |
| 7 | + | |
| 8 | +\begin{solution}{ex:46:2}{Calendrier et valeur de la reprise} | |
| 9 | +Si l'acte est signé le 15~janvier 2027, l'acheteur ne devient locateur qu'à cette date et ne peut donner l'avis de reprise qu'après ; or l'avis doit être reçu au moins six mois avant la fin d'un bail de plus de six mois (art.~1960 C.c.Q.), soit au plus tard le 31~décembre 2026 pour le bail échéant le 30~juin 2027. Ce délai est manqué : le bail se reconduit au 1\textsuperscript{er} juillet 2027 pour un an, et la reprise ne peut viser que le 30~juin 2028, avec un avis donné au plus tard le 31~décembre 2027, une réponse de la locataire dans le mois (le silence valant refus) et, en cas de refus, une demande au Tribunal dans le mois suivant, où l'acheteur devra prouver qu'il entend réellement habiter le logement. La prise de possession la plus hâtive est donc le 1\textsuperscript{er} juillet 2028, sauf départ volontaire de la locataire ou entente. Pour la valeur actuelle espérée de l'écart, l'\cref{eq:46:va-ecart} donne, avec $\Delta_1 = \dollars{4458.12}$, $g_\Delta = \pct{4.59}$ et $r = \pct{6}$ : à $\rho = \pct{9.4}$, $\dollars{4458.12}/(0{,}06 - 0{,}0459 + 0{,}094 \times 1{,}0459) = \dollars{39668.94}$ ; à $\rho = \pct{13}$, \dollars{29713.51} (valeur du chapitre) ; à $\rho = \pct{20}$, \dollars{19968.98}. Sans rotation, sur dix ans, l'écart vaut \dollars{39567.72}. Plus la rotation est faible, plus la locataire est susceptible de rester et plus l'écart actualisé que la reprise permet de réaliser est grand : à \pct{9.4}, la faculté de reprise ne vaut presque rien de plus qu'attendre, parce que l'espérance de l'écart sous rotation dépasse déjà sa valeur sur dix ans (le locataire qui reste au-delà de dix ans continue de produire l'écart) ; à \pct{20}, elle vaut \dollars{19599} de plus. La faculté de reprise est donc une assurance contre la permanence d'un locataire à loyer bas, dont la valeur est de l'ordre d'un à deux pour cent du prix de l'immeuble à ces hypothèses. | |
| 10 | +\end{solution} | |
| 11 | + | |
| 12 | +\begin{solution}{ex:46:3}{Cascade d'un comparable} | |
| 13 | +Le prix par logement de Q0243 est de \dollars{341000}. Conditions du marché : la vente date de 1,28~mois ; $A_t = \dollars{341000}\,[(1{,}0745)^{1{,}28/12} - 1] = \dollars{2627.30}$, d'où une base ajustée du temps $P^{t} = \dollars{343627.30}$. Superficie par logement : $247/3 = \msq{82.3}$ contre \msq{87.3} pour le sujet ; $A = P^{t}\,[e^{0{,}64439 \times (\ln 87{,}33 - \ln 82{,}33)} - 1] = \dollars{13305.91}$. Âge : 96~ans contre 78 ; $A = P^{t}\,[e^{-0{,}00401 \times (78 - 96)} - 1] = \dollars{25698.98}$. État : 3 contre 3, ajustement nul ; stationnement : une case de part et d'autre, nul. Loyer de marché : \dollars{1370.33} contre \dollars{1352} ; $A = P^{t}\,[e^{0{,}26247 \times (\ln 1370{,}33 - \ln 1352)} - 1] = \dollars{1216.95}$. Loyer relatif : coefficient non significatif, non appliqué. Le prix ajusté est $\dollars{341000} + \dollars{2627.30} + \dollars{13305.91} + \dollars{25698.98} + 0 + 0 + \dollars{1216.95} = \dollars{383849.14}$ par logement. L'ajustement brut est la somme des valeurs absolues rapportée au prix, $\dollars{42849.14}/\dollars{341000} = \pct{12.6}$, et l'ajustement net, tous les ajustements étant positifs, lui est égal, $+\pct{12.6}$. Q0243 reçoit le poids le plus élevé (0,285) parce que son ajustement brut est le plus faible des cinq : vendu cinq semaines avant la date d'évaluation, de même état et de même stationnement que le sujet, il n'exige qu'une correction d'âge et de superficie ; la règle de pondération inversement proportionnelle au brut, qui traite le brut comme un substitut de la variance de l'estimation, lui accorde logiquement le plus de confiance. | |
| 14 | +\end{solution} | |
| 15 | + | |
| 16 | +\begin{solution}{ex:46:4}{Choix du taux de capitalisation} | |
| 17 | +Sur le revenu net normalisé de \dollars{22595.03} : au premier quartile (\pct{2.76}), \dollars{818660} ($+\pct{9.4}$) ; à la médiane des comparables (\pct{2.97}), \dollars{760775} ($+\pct{1.7}$) ; au taux ajusté (\pct{3.02}), \dollars{748126} (retenu) ; à la médiane des 127 ventes (\pct{3.17}), \dollars{712777} ($-\pct{4.7}$) ; au troisième quartile (\pct{3.615}), \dollars{625035} ($-\pct{16.5}$). L'intervalle interquartile des taux déplace la valeur de \pct{26} : la précision de la méthode est bornée par celle du taux. Avec le ratio de dépenses médian des ventes, \pct{35.7}, le revenu net devient $\dollars{40577.04} \times (1 - 0{,}357) = \dollars{26091.04}$ et la capitalisation à \pct{3.02} donne \dollars{863880}, à \pct{15} de l'indication par comparaison au lieu de \pct{27} ; le taux implicite de la comparaison calculé sur ce revenu net est de \pct{2.56}, et l'écart avec le taux ajusté tombe de 81 à 46~points de base. Plus de la moitié de l'écart entre les deux méthodes vient donc de la structure de dépenses, non du taux. La leçon est celle de la convention de cohérence : un taux extrait de fiches de courtage, dont les revenus nets ne comptent ni gestion ni réserve et sous-estiment souvent les coûts fixes, ne doit être appliqué qu'à un revenu net défini de la même façon, ou alors il faut corriger le taux ; appliquer un taux « léger » à un revenu net « lourd » pénalise systématiquement le sujet. | |
| 18 | +\end{solution} | |
| 19 | + | |
| 20 | +\begin{solution}{ex:46:5}{Financement au prix de la promesse d'achat} | |
| 21 | +Au prix de \dollars{895000}, la mise de fonds minimale est $0{,}05 \times \dollars{500000} + 0{,}10 \times \dollars{395000} = \dollars{64500}$ (\pct{7.2}) et le prêt de \dollars{830500} (ratio prêt-valeur \pct{92.8}). Au taux de \pct{4.12} composé semestriellement, $i_m = \pct{0.3406}$ et le versement sur 300~mois est de \dollars{4422.79}, soit \dollars{53073.50} par année ; au taux admissible minimal de \pct{6.12}, le versement de référence est de \dollars{5372.98}. Les droits de mutation sont $314{,}50 + 2\,521 + 2\,775 + 6\,250 + 0{,}03 \times (895\,000 - 750\,000) = \dollars{16210.50}$ et les liquidités à la signature de $\dollars{64500} + \dollars{16210.50} = \dollars{80710.50}$. Le coût net d'occupation du rez-de-chaussée est $\dollars{53073.50} + \dollars{16358.93} + 0{,}0358 \times \dollars{64500} - \dollars{28389.96} = \dollars{43351.57}$ par année, soit \dollars{3612.63} par mois ; le capital remboursé en moyenne sur cinq ans est de \dollars{21202.71} par année, d'où un coût économique hors capital de \dollars{1845.74} par mois, contre \dollars{1925.15} au prix de \dollars{920000} : vingt-cinq mille dollars de prix en moins réduisent le coût économique d'environ \dollars{79} par mois. Si le couple reprend le deuxième étage, il perd \dollars{141} de loyer contractuel par mois ($\dollars{1188} - \dollars{1047}$), soit \dollars{136.77} nets de la provision ; son coût net passe à \dollars{3749.40} et son coût hors capital à \dollars{1982.51} par mois. La reprise du logement le plus sous-loué reste la décision rationnelle, sous réserve des conditions des articles~1957, 1958 et 1959.1 C.c.Q. et du délai d'avis. | |
| 22 | +\end{solution} | |
| 23 | + | |
| 24 | +\begin{solution}{ex:46:6}{Pondération, fourchette et rédaction} | |
| 25 | +Les cinq pondérations du \cref{tab:46:ponderations} donnent : 40/35/25, \dollars{918017} ; 45/30/25, \dollars{922915} ; égale, \dollars{896963} ; 60/40/0, \dollars{981178} ; 20/20/60, \dollars{837428}. La pondération à l'inverse de la variance, avec des écarts-types de \dollars{47848}, \dollars{92240} ($\pct{10}$ de \dollars{922396}) et \dollars{112219} ($\pct{15}$ de \dollars{748126}), donne des poids proportionnels à $1/\sigma^2$, soit 0,689, 0,185 et 0,125, et une valeur de \dollars{968084} : elle favorise fortement la comparaison parce que c'est la seule indication dont l'incertitude a été mesurée plutôt que posée, et elle illustre que les écarts-types « déclarés » du multiplicateur et de la capitalisation gouvernent le résultat autant que les indications elles-mêmes. Un paragraphe de réconciliation acceptable dirait, en substance : les trois indications, de \dollars{748000} à \dollars{1020000}, décrivent le même immeuble sous trois lectures de l'acheteur ; l'acheteur probable d'un triplex de Limoilou est un occupant qui raisonne en prix par logement et en coût d'occupation, ce que la grille de comparaison mesure directement et que le multiplicateur approche sans hypothèse sur les dépenses ; la capitalisation, qui suppose un acheteur raisonnant sur le revenu net normalisé, borne la valeur par le bas et reçoit un poids de contrôle ; la pondération 40/35/25 donne \dollars{918017}, arrondie à \dollars{920000}, dans une fourchette de \dollars{870000} à \dollars{970000} construite sur l'erreur-type de la méthode principale. La fourchette conclue diffère de l'étendue des indications (\dollars{748000} à \dollars{1020000}) parce qu'elle mesure l'incertitude statistique de la méthode retenue et non le désaccord entre méthodes, qui est un désaccord de conception et non de mesure ; présenter l'étendue des indications comme fourchette reviendrait à dire que l'évaluateur n'a pas choisi. | |
| 26 | +\end{solution} | |
| 27 | + | |
| 28 | +\begin{solution}{ex:46:7}{Méthode du coût et valeur du terrain} | |
| 29 | +Avec un coût neuf de \dollars{612983} et une dépréciation de \pct{68.3}, la contribution du bâtiment est de \dollars{194111} ; pour que l'indication par le coût atteigne \dollars{920000}, le terrain devrait valoir $\dollars{920000} - \dollars{194111} = \dollars{725889}$, soit \dollars{2342} le mètre carré, plus de deux fois et demie l'hypothèse du dossier. À terrain de \dollars{279000}, il faudrait une contribution du bâtiment de \dollars{641000}, supérieure au coût neuf : le taux de dépréciation devrait être de $-\pct{4.6}$, ce qui est impossible. La dépréciation extraite du marché, $D = C_N - (P - V_L)$, est donc de $-\dollars{28017}$ ($-\pct{4.6}$) pour un terrain à \dollars{900} le mètre carré et de $\dollars{612983} - (\dollars{920000} - \dollars{341000}) = \dollars{33983}$, soit \pct{5.5} ou \pct{0.07} par année d'âge, pour un terrain à \dollars{1100} le mètre carré ; les deux résultats sont incompatibles avec un bâtiment de 78~ans et disent que l'hypothèse de terrain est beaucoup trop basse. La discussion attendue porte sur trois points. D'abord, dans un quartier central où l'on ne construit plus de plex et où le zonage protège la densité existante, le prix d'un triplex est pour l'essentiel un prix de localisation : le droit de disposer de trois logements à cet endroit vaut davantage que le coût de les reconstruire, et cette valeur se loge dans le terrain, que la méthode du coût ne sait estimer qu'à partir de ventes de terrains comparables, inexistantes ici. Ensuite, la dépréciation âge-vie d'un bâtiment bien entretenu de 1948 est mal connue, et dix points de dépréciation valent \dollars{61000}, plus que la différence entre deux pondérations raisonnables. Enfin, la méthode redeviendrait pertinente si le bâtiment était récent, si des ventes de terrains ou des ratios terrain/bâtiment locaux fiables existaient, ou si le marché des plex se figeait au point que le coût de remplacement redevienne la référence des acheteurs, ce qui n'est pas le cas à Québec en 2026 ; d'ici là, elle sert de contrôle de cohérence et son rejet, motivé, est inscrit au rapport (règle 2.3, élément 10). | |
| 30 | +\end{solution} | |
modified
solutions/ch48.tex
+30 −1
@@ -1 +1,30 @@ | ||
| 1 | −% Solutions du chapitre 48 — Cas 4 : portefeuille multirésidentiel interrégional | |
| 1 | +% Solutions du chapitre 48 — Cas 4 : portefeuille multirésidentiel interrégional (données synthétiques) | |
| 2 | +% Tous les chiffres proviennent de analysis/python/cases/ch48_portefeuille.py (fonction exercices) ; tests : analysis/python/tests/test_ch48.py | |
| 3 | + | |
| 4 | +\begin{solution}{ex:48:1}{Sommaire d'une région} | |
| 5 | +Les sept immeubles de Sherbrooke (P05, P18, P23, P31, P32, P35, P48) totalisent 132~logements, une valeur de \dollars{18132000}, un revenu net de \dollars{1040704} et une dette de \dollars{10177000}. Le taux pondéré est $\bar R = \dollars{1040704} / \dollars{18132000} = \pct{5.740}$ ; la valeur par logement est $\dollars{18132000} / 132 = \dollars{137364}$ et le ratio prêt-valeur $\dollars{10177000} / \dollars{18132000} = \pct{56.1}$. La moyenne simple des sept taux (5,52 ; 6,01 ; 5,71 ; 5,34 ; 5,64 ; 5,72 ; 5,73~\%) est \pct{5.667} et leur médiane \pct{5.71}. Capitaliser le revenu net régional à la moyenne simple donnerait $\dollars{1040704} / \num{0.05667} = \dollars{18363822}$, soit \pct{1.28} de plus que la valeur agrégée. L'écart vient de ce que la moyenne simple donne le même poids au six logements P31 (taux \pct{5.34}, valeur \dollars{666000}) et au trente-six logements P18 (taux \pct{6.01}, valeur \dollars{4968000}) : P18, qui pèse \pct{27} de la valeur régionale, porte le taux le plus élevé, tandis que les petits immeubles P05 et P31, aux taux les plus bas, tirent la moyenne simple vers le bas ; le taux pondéré est donc plus élevé que la moyenne simple et la valeur agrégée plus basse. Le taux pondéré est la seule statistique qui reproduise l'identité valeur agrégée $=$ RNE agrégé / taux (\cref{eq:48:taux-pondere}) ; la moyenne simple et la médiane décrivent la distribution des immeubles, non celle de la valeur. | |
| 6 | +\end{solution} | |
| 7 | + | |
| 8 | +\begin{solution}{ex:48:2}{Un immeuble hors portefeuille} | |
| 9 | +Le vecteur de caractéristiques centrées est $(1 ;\ 0 ;\ \ln(24/12) = 0{,}693 ;\ 1 ;\ 0 ;\ (45 - 50)/10 = -0{,}5 ;\ \text{Trois-Rivières} = 1)$. Le logarithme du taux prédit est $-3{,}0783 + (-0{,}0315)(0{,}693) + 0{,}0756 + (-0{,}0070)(-0{,}5) + 0{,}3377 = -2{,}6834$, d'où $\exp(-2{,}6834) = \num{0.06833}$ et, avec le facteur de Duan \num{1.0011}, un taux prédit de \pct{6.841}. La valeur prédite est $\dollars{150000} / \num{0.06841} = \dollars{2192675}$, soit \dollars{91361} par logement. Hors zone inondable, le terme $0{,}0756$ disparaît : taux \pct{6.343} et valeur \dollars{2364969}. L'effet de la zone inondable est de $+49{,}8$~points de base et de $\dollars{2192675} / \dollars{2364969} - 1 = -\pct{7.29}$ de la valeur ; on vérifie que $e^{-0{,}0756} - 1 = -\pct{7.29}$, conformément à l'\cref{eq:48:decote}, l'effet proportionnel sur la valeur ne dépendant pas du niveau du taux. Le même immeuble à Montréal, hors zone inondable, aurait un taux de \pct{4.525} et une valeur de \dollars{3314944}, supérieure de \pct{40} à celle de Trois-Rivières : l'effet de région (+34~\% du taux) domine de loin l'effet de la zone inondable (+8~\%). L'évaluateur rappellera que ces coefficients sont des propriétés du jeu synthétique estimées sur trois immeubles inondables, et que la décision d'achat exige une lecture de la cartographie en vigueur et une analyse de l'assurabilité. | |
| 10 | +\end{solution} | |
| 11 | + | |
| 12 | +\begin{solution}{ex:48:3}{La dette de P45} | |
| 13 | +Le taux mensuel équivalent à \pct{5.17} composé semestriellement est $(1 + 0{,}02585)^{1/6} - 1 = \num{0.0042626}$. Sur 480~mois, le paiement mensuel est $\dollars{5416000} \times 0{,}0042626 / (1 - 1{,}0042626^{-480}) = \dollars{26530}$, soit un service annuel de \dollars{318363} et un ratio de couverture de $\dollars{366800} / \dollars{318363} = \num{1.152}$. Sur 300~mois, le service annuel est de \dollars{384311} et le ratio de \num{0.954} : l'immeuble ne couvrirait pas sa dette sous un amortissement conventionnel de vingt-cinq ans, ce qui est le résultat noté au \cref{ch:33} et la raison pour laquelle le dossier retient 480~mois en le déclarant. Après 24~paiements, le solde est $\dollars{5416000} \times (1{,}0042626^{480} - 1{,}0042626^{24}) / (1{,}0042626^{480} - 1) = \dollars{5329169}$. Renouvelé à \pct{7.17} sur 456~mois, ce solde exige \dollars{404324} par an et le ratio de couverture tombe à \num{0.907}. La capacité de refinancement est le plus petit de $0{,}75 \times \dollars{7186000} = \dollars{5389500}$ et de $\dollars{366800} / (1{,}20 \times f')$ où $f'$ est la constante hypothécaire à \pct{7.17} sur 456~mois (\pct{7.587}), soit \dollars{4028826} ; la couverture est liante et l'injection requise est $\dollars{5329169} - \dollars{4028826} = \dollars{1300342}$. Sur la valeur par régression du \cref{ch:33} (\dollars{6716534}), le ratio prêt-valeur actuel est de \pct{80.6} au lieu de \pct{75.4} et la capacité selon le ratio prêt-valeur de \dollars{5037401} ; cela ne change pas l'injection, puisque la couverture reste liante, mais un prêteur qui fonderait son covenant sur une valeur de \dollars{6.7} millions plutôt que de \dollars{7.2} millions jugerait l'immeuble déjà hors covenant aujourd'hui. Le choix de la base de valeur du covenant est donc une question d'évaluation autant que de crédit, et c'est l'évaluation individuelle de P45, non le modèle de portefeuille, qui doit la trancher. | |
| 14 | +\end{solution} | |
| 15 | + | |
| 16 | +\begin{solution}{ex:48:4}{Ratios de l'IAAO sur un sous-ensemble} | |
| 17 | +Pour les dix-sept immeubles montréalais, les ratios valeur prédite / indication ont une médiane de \num{1.007} et un ratio pondéré (somme des prédites sur somme des indications) de \num{0.985} ; le COD est de \num{4.37}, le PRD de \num{1.016} et le PRB de $-\num{0.015}$ avec une erreur-type de \num{0.012}. Par rapport au portefeuille (médiane \num{1.002}, COD \num{3.83}, PRD \num{1.005}, PRB \num{0.001}), le sous-ensemble montréalais est un peu plus dispersé et légèrement régressif : le PRD supérieur à 1 et le PRB négatif indiquent que les grands immeubles (P09, P26) sont évalués au-dessus du modèle et les petits (P06, P15, P38) au-dessous, mais le PRB n'est pas statistiquement différent de zéro ($t = -1{,}3$) et le PRD reste dans la plage de \num{0.98} à \num{1.03} de l'IAAO. Le COD de \num{4.4} est inférieur à la borne basse de \num{5.0} du Standard on Ratio Studies, qui signale habituellement une poursuite des ventes ; ici, il mesure l'écart entre un modèle et les données qui ont servi à l'estimer, dont dix-sept des quarante-huit observations sont montréalaises, et une faible dispersion en échantillon d'estimation est attendue ; dans une étude de ratio sur ventes indépendantes, le même chiffre serait suspect. Un PRB de $-0{,}015$ signifie que le ratio diminue de \pct{1.5} chaque fois que la valeur double ; avec une erreur-type de \num{0.012}, l'intervalle à \pct{95} va de $-0{,}038$ à $+0{,}008$ et contient zéro : aucune iniquité verticale n'est démontrée, et le Standard n'exigerait une action que si l'intervalle sortait de $\pm 0{,}10$. | |
| 18 | +\end{solution} | |
| 19 | + | |
| 20 | +\begin{solution}{ex:48:5}{Croissance d'un immeuble et croissance de sa région} | |
| 21 | +La régression du logarithme du revenu trimestriel de P36 sur le temps donne une croissance tendancielle de \pct{2.01} par an et une volatilité annualisée de \pct{3.29} ; la croissance agrégée de la région de Québec est de \pct{2.67}. Le choc pandémique de la région, mesuré par l'écart moyen du logarithme de l'agrégat à sa tendance entre 2020T2 et 2021T2 (\cref{eq:48:choc}), est de $-\pct{1.55}$, contre $-\pct{2.53}$ pour le portefeuille et $-3$~\% dans la loi de génération ; la différence tient au bruit propre des six immeubles de la région. Le rendement total attendu de P36 est $R + g = \pct{6.14} + \pct{2.01} = \pct{8.15}$ avec la croissance propre, et \pct{8.81} avec la croissance régionale. La croissance propre d'un immeuble estimée sur dix ans a une erreur-type de l'ordre d'un demi-point à un point dans ce jeu (la dispersion intrarégionale des croissances va de \pct{1.24} à \pct{3.63} à Québec, pour une tendance commune) : l'écart de 0,66~point entre P36 et sa région n'est pas significatif, et un analyste prudent retiendra la croissance régionale, ou une moyenne des deux, en se souvenant de l'avertissement de Geltner (1993) sur les tendances apparentes des séries bruitées. La différence importe particulièrement pour un immeuble en zone inondable : si la croissance propre plus faible reflétait une difficulté réelle de relocation ou des coûts d'assurance croissants, le rendement total serait durablement inférieur et le taux de \pct{6.14}, déjà majoré par le modèle de \num{45}~points de base pour la zone, ne compenserait pas ; si elle n'est que du bruit, l'immeuble est un actif de rendement courant élevé dans la région dont la croissance démographique projetée est la plus forte des six. L'allocation doit donc être accompagnée d'une analyse individuelle de P36, non d'un score. | |
| 22 | +\end{solution} | |
| 23 | + | |
| 24 | +\begin{solution}{ex:48:6}{Un choc de taux généralisé} | |
| 25 | +Avec une corrélation du choc de taux de \num{0.90} entre régions et de \num{0.95} dans une région, l'intervalle à \pct{90} de la valeur du portefeuille s'élargit de \dollars{131200853} à \dollars{156508072} (contre \dollars{133506790} à \dollars{154224548} dans le régime déclaré), le coefficient de variation passe de \pct{4.37} à \pct{5.39}, la VaR à \pct{95} de \dollars{9856210} à \dollars{12162147} et le ratio de diversification de \num{0.690} à \num{0.854}. La probabilité que le ratio prêt-valeur dépasse \pct{75} reste nulle sur dix mille tirages, parce qu'il faudrait une baisse de valeur de \pct{20} et que l'écart-type du portefeuille n'est que de \pct{5.4}. Le ratio se rapproche de 1 sans l'atteindre pour deux raisons : la corrélation du choc de \emph{revenu} est restée à \num{0.17}, et le choc de revenu représente encore environ le quart de la variance individuelle, de sorte qu'une part du risque propre continue d'être diversifiée ; et la corrélation du choc de taux, même à \num{0.90}, laisse \pct{10} de variance propre à chaque immeuble. Sous corrélation parfaite des deux chocs, le ratio serait de \num{0.999} (\cref{tab:48:mc}). L'exercice montre que le résultat central de la \cref{sec:48:montecarlo}, à savoir que la diversification géographique protège peu contre le risque de taux, est robuste : passer de \num{0.50} à \num{0.90} de corrélation du taux accroît la VaR du portefeuille de \pct{23}, ce qui est l'ordre de grandeur de l'incertitude sur cette hypothèse déclarée, et le rapport doit présenter les deux chiffres. | |
| 26 | +\end{solution} | |
| 27 | + | |
| 28 | +\begin{solution}{ex:48:7}{Céder les immeubles en zone inondable} | |
| 29 | +Les trois immeubles (P36, P41, P43) valent \dollars{9546000} et portent une dette de \dollars{5404000} ; leur revenu net est de \dollars{566928}, soit un taux pondéré de \pct{5.94}. Le produit net de cession est $\dollars{9546000} \times 0{,}98 - \dollars{5404000} = \dollars{3951080}$. Le portefeuille restant (45~immeubles) vaut \dollars{133817000}, dégage un revenu net de \dollars{6880102} et un taux pondéré de \pct{5.14} (au lieu de \pct{5.19}, parce que les immeubles cédés portaient des taux élevés), avec un ratio prêt-valeur de \pct{60.1} (au lieu de \pct{59.8}, parce que leur endettement était inférieur à la moyenne) et un ratio de couverture agrégé de \num{1.587} (au lieu de \num{1.613}). Par simulation, le coefficient de variation passe de \pct{4.37} à \pct{4.30}, la VaR à \pct{95} de \dollars{9856210} à \dollars{9058169} (en proportion de la valeur, de \pct{6.9} à \pct{6.8}) et le ratio de diversification de \num{0.690} à \num{0.694}. La cession réduit donc à peine le risque relatif mesuré par la simulation : celle-ci ne capte que la volatilité du revenu et l'incertitude du taux, qui ne sont pas plus grandes pour ces trois immeubles que pour les autres, et la part de la zone inondable (\pct{6.7}) est trop petite pour changer la dépendance d'ensemble. Ce que la simulation ne capte pas, c'est le risque d'événement : un sinistre d'inondation, la restriction du droit de reconstruire dans le littoral ou en zone de classe très élevée \parencite[art.~83]{rmun2026}, la hausse ou le retrait de l'assurance, et le durcissement de la cartographie de nouvelle génération ; ces risques, asymétriques et rares, ne figurent dans la valeur marchande que par la majoration du taux que le marché exige déjà (\num{45}~points de base pour P36, selon le modèle) et ne figurent pas du tout dans la volatilité historique. La valeur marchande des trois immeubles est celle que le marché paie aujourd'hui en tenant compte de ce qu'il sait du risque ; la décision de les céder relève de la valeur d'investissement du fonds, c'est-à-dire de son aversion pour un risque d'événement que la diversification ne réduit pas, de sa tolérance à la perte de revenu net courant (\dollars{566928}, soit \pct{7.6} du revenu, pour \pct{6.7} de la valeur) et de l'emploi qu'il ferait du produit net de \dollars{3.95} millions. Le rapport de consultation doit dire que la simulation ne tranche pas cette question et pourquoi. | |
| 30 | +\end{solution} | |
modified
sources/registry.csv
+6 −0
@@ -410,6 +410,12 @@ SRC-39-007,article,"Asymptotic Equivalence of Bayes Cross Validation and Widely | ||
| 410 | 410 | SRC-39-008,article,"Rank-Normalization, Folding, and Localization: An Improved R̂ for Assessing Convergence of MCMC (Vehtari, A., Gelman, A., Simpson, D., Carpenter, B. & Bürkner, P.-C.)",Bayesian Analysis 16(2) 667-718,2021,https://doi.org/10.1214/20-BA1221,2026-10-31,verifie,39,Vérifié via api.crossref.org ; clé vehtariEtAl2021 |
| 411 | 411 | SRC-39-009,article,"Data Analysis Using Stein's Estimator and its Generalizations (Efron, B. & Morris, C.)",Journal of the American Statistical Association 70(350) 311-319,1975,https://doi.org/10.1080/01621459.1975.10479864,2026-10-31,verifie,39,Vérifié via api.crossref.org ; clé efronMorris1975 |
| 412 | 412 | SRC-39-010,manuel,"Bayesian Econometrics (Koop, G.)",Wiley,2003,,2026-10-31,verifie,39,Clé koop2003 déjà dans library.bib (notes-D) ; non re-consulté |
| 413 | +SRC-D-ch40-001,article,Comparison of Three Methods for Selecting Values of Input Variables in the Analysis of Output from a Computer Code (McKay Beckman Conover),Technometrics 21(2) 239-245 (Taylor & Francis),1979-05,https://doi.org/10.1080/00401706.1979.10489755 (métadonnées : https://api.crossref.org/works/10.1080/00401706.1979.10489755),2026-10-31,verifie,lib-ch40.bib (mckayBeckmanConover1979) — NON cité dans ch40.tex,référence fondatrice de l'hypercube latin ; page éditeur en 403 ; Crossref sans article initial « A » dans le titre | |
| 414 | +SRC-D-ch40-002,article,Global sensitivity indices for nonlinear mathematical models and their Monte Carlo estimates (Sobol'),Mathematics and Computers in Simulation 55(1-3) 271-280 (Elsevier),2001-02,https://doi.org/10.1016/S0378-4754(00)00270-6 (métadonnées : https://api.crossref.org/works/10.1016/S0378-4754(00)00270-6),2026-10-31,verifie,lib-ch40.bib (sobol2001) — NON cité,indices de Sobol et estimateurs Monte-Carlo | |
| 415 | +SRC-D-ch40-003,article,Coherent Measures of Risk (Artzner Delbaen Eber Heath),Mathematical Finance 9(3) 203-228 (Wiley),1999-07,https://doi.org/10.1111/1467-9965.00068 (métadonnées : https://api.crossref.org/works/10.1111/1467-9965.00068),2026-10-31,verifie,lib-ch40.bib (artznerDelbaenEberHeath1999) — NON cité,mesures de risque cohérentes (VaR non sous-additive) | |
| 416 | +SRC-D-ch40-004,article,Optimization of conditional value-at-risk (Rockafellar Uryasev),Journal of Risk 2(3) 21-41 (Risk.net),2000-04-01,https://doi.org/10.21314/JOR.2000.038,2026-10-31,verifie,lib-ch40.bib (rockafellarUryasev2000) — NON cité,CVaR ; page Risk.net lue (accès restreint ; métadonnées visibles) | |
| 417 | +SRC-41-001,article,"Cox, Ross & Rubinstein (1979), « Option Pricing: A Simplified Approach », Journal of Financial Economics 7(3), 229-263",Elsevier / Crossref,1979,https://api.crossref.org/works/10.1016/0304-405X(79)90015-1,2026-10-31,verifie,41,"Métadonnées Crossref lues par WebFetch (titre, auteurs, revue, volume, numéro, pages, année). Entrée ajoutée à references/lib-ch41.bib ; nommée en toutes lettres dans ch41.tex, non citée par clé." | |
| 418 | +SRC-41-002,donnees_synthetiques,"Exemple intégral du ch. 41 : programmes, prix de sortie (modèle hédonique cas 1), résidus, arbre binomial, Capozza–Helsley",Auteur (analysis/python/cases/ch41_phmu.py),2026-10-31 ; cas 1 graine 20261031,analysis/python/cases/ch41_phmu.py,2026-10-31,verifie,41,"Zonage fictif H-2f ; hypothèses déclarées (dictionnaires GRILLE, HYP, HYP_OCCUPANT, PROGRAMMES, OPTION) ; aucune donnée réelle hors IPCB (SRC-E-017) et taux BdC V80691335 ; vérifié par test_ch41.py (28 tests)." | |
| 413 | 419 | SRC-42-001,loi,"Loi sur le Tribunal administratif du logement (RLRQ, c. T-15.01), section sur la conversion d'un immeuble locatif en copropriété divise, art. 51 à 54.14",Québec (LégisQuébec),À jour au 15 octobre 2026,https://www.legisquebec.gouv.qc.ca/fr/document/lc/T-15.01,2026-10-31,verifie,42,"Page HTML téléchargée (curl, User-Agent navigateur) et texte des art. 51-54.14 extrait et lu intégralement le 2026-10-31 (sous-section 3 « Conversion d'un immeuble locatif en copropriété divise ») ; complète SRC-A-002 ; clé library.bib loiTAL (aucune nouvelle clé)" |
| 414 | 420 | SRC-42-002,tableau,"SCHL, Enquête sur les logements locatifs, octobre 2025 — tableaux 4.1.1, 4.1.2, 4.1.3 et 4.3.1 (appartements en copropriété offerts en location) des fichiers rmr-montreal / rmr-quebec / rmr-gatineau-2025-fr.xlsx",Société canadienne d'hypothèques et de logement,Données d'octobre 2025 ; rapport publié le 11 décembre 2025,https://assets.cmhc-schl.gc.ca/sites/cmhc/professional/housing-markets-data-and-research/housing-data-tables/rental-market/rental-market-report-data-tables/2025/rmr-montreal-2025-fr.xlsx,2026-10-31,verifie,42,"Fichiers déjà versés dans data/raw/schl_rml_2025/ (SRC-E-007) ; feuilles lues par openpyxl le 2026-10-31 : univers 233 535 / 36 816 / 10 620 ; part louée 21,9 / 15,5 / 27,4 % ; inoccupation copro 2,1 / 0,6 / 1,0 % vs ELL 2,9 / 2,4 / 3,8 % ; loyers 2 ch. 1 826 / 1 377 / 1 578 $ vs 1 346 / 1 277 / 1 460 $ ; clé library.bib schlrmltables2025 ; conditions d'utilisation SCHL : chiffres cités avec attribution, fichiers non redistribués" |
| 415 | 421 | SRC-43-001,article,Effects of Flood Hazards on Property Values: Evidence before and after Hurricane Floyd (résumé),Land Economics 80(4) — University of Wisconsin Press,2004,http://le.uwpress.org/lookup/doi/10.2307/3655805,2026-10-31,partiellement_verifie,43,"Résumé lu (agent web) : 8 000 ventes, Pitt County NC, 1992-2002 ; « significantly larger after Hurricane Floyd than before » ; aucun pourcentage dans le résumé ; texte intégral non consulté (abonnement). Clé bib existante binPolasky2004." |
modified
tools/make_labels.py
+4 −1
@@ -21,7 +21,10 @@ import re | ||
| 21 | 21 | seen = set(re.findall(r"\\@newl@bel\{r\}\{([^}]+)\}", "\n".join(out))) |
| 22 | 22 | for aux in sorted((ROOT / "build").glob("ch*/_wrap_ch*.aux")) + sorted((ROOT / "build").glob("app-*/_wrap_app-*.aux")): |
| 23 | 23 | if exclure >= 0 and aux.parent.name == f"ch{exclure:02d}": continue |
| 24 | − for m in re.finditer(r"^\\newlabel\{([^}]+)\}(\{.*\})\s*$", aux.read_text(encoding="utf-8", errors="ignore"), re.M): | |
| 24 | + try: txt_aux = aux.read_text(encoding="utf-8", errors="ignore") | |
| 25 | + except OSError: continue | |
| 26 | + for m in re.finditer(r"^\\newlabel\{([^}]+)\}(\{.*\})\s*$", txt_aux, re.M): | |
| 27 | + if m.group(2).count("{") != m.group(2).count("}"): continue # ligne tronquée (compilation parallèle) | |
| 25 | 28 | name, val = m.group(1), m.group(2) |
| 26 | 29 | if name in seen or name.startswith("ch:") or name.startswith("app:"): continue |
| 27 | 30 | seen.add(name); out.append("\\@newl@bel{r}{%s}%s" % (name, val)) |
modified
verification/calculations.csv
+71 −0
@@ -652,3 +652,74 @@ CALC-37-09,37,Prédiction du sujet par chaque modèle (600 ventes) avec facteur | ||
| 652 | 652 | CALC-37-10,37,"Dépendance partielle (superficie, âge) : concordance boosting/hédonique avec la loi de génération (corr. > 0,99, écart max < 0,04) ; scénario : creux 25-45 ans reproduit par le boosting",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_sujet_et_pdp,vérifié par assertions,idem,verifie,2026-10-31 |
| 653 | 653 | CALC-37-11,37,"Courbes d'apprentissage (staged_predict, 10 plis) : optimum et RMSE min par profondeur ; sensibilité aux hyperparamètres (13 réglages)",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_courbes_et_sensibilite,"prof. 1 : 1198 it., 0,0887 ; prof. 2 : 730, 0,0923 ; prof. 4 : 367, 0,0966 (entraînement 0,0116) ; grille : souches 0,0887 meilleur ; ν 0,10 0,0988 ; forêt 100 arbres 0,1065",idem,verifie,2026-10-31 |
| 654 | 654 | CALC-37-12,37,"Exercices 37.1-37.7 : division d'arbre (seuil 113,5, gain 0,338), variance de forêt (limite 0,00432, B=233), boosting pas à pas (F3 12,8542, m 43,7), Shapley (70,83/35,83/23,33), métriques AVM (RMSE log 0,0503, MdAPE 4,51, COD 4,42, PRD 1,006, PRB −0,034)",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_solutions_exercices,voir solutions/ch37.tex,idem,verifie,2026-10-31 |
| 655 | +CALC-40-001,40,Monte-Carlo cas 3 (MC_LOIS ch47 ; graine 20261031 ; N = 10 000) : médiane de la valeur identique au ch. 47,analysis/python/cases/ch40_montecarlo.py,analysis/python/tests/test_ch40.py::test_chiffres_identiques_au_ch47,2191607.87,2191607.87,verifie,2026-10-31 | |
| 656 | +CALC-40-002,40,Quantiles 5 % et 95 % de la valeur identiques au ch. 47,ch40_montecarlo.py,test_ch40.py::test_chiffres_identiques_au_ch47,1735194.21 ; 2876902.35,1735194.21 ; 2876902.35,verifie,2026-10-31 | |
| 657 | +CALC-40-003,40,Moyenne et écart-type de la valeur ; P(RCD1<1,20) ; P(RCD1<1) ; P(RCD6 +200 pb < 1,20),ch40_montecarlo.py,test_ch40.py::test_chiffres_identiques_au_ch47,2233505.68 ; 350442.57 ; 0,4936 ; 0 ; 0 | |
| 658 | +CALC-40-004,40,evaluer() (chemin ch. 40) reproduit monte_carlo() (ch. 47) tirage par tirage ; valeur_deterministe() = V_DCF (2 208 565.91) et = 1 947 889 pour r 8 % / R_T 5,5 % (ch. 30),ch40_montecarlo.py,test_ch40.py::test_valeur_deterministe_reproduit_dcf,égalité exacte,égalité exacte,verifie | |
| 659 | +CALC-40-005,40,Moments théoriques des lois (log-normale : moyenne 0,0408 ; triangulaire (0,08 ; 0,15 ; 0,25) : moyenne 0,16 écart-type 0,03488 q05 0 | |
| 660 | +CALC-40-006,40,Élicitation : inversion exacte des quantiles 5/95 % (log-normale médiane 0,03888 sigma_ln 0,2934 ; normale),ch40_montecarlo.py::parametres_depuis_quantiles,test_ch40.py::test_moments_lois_formules_fermees,q05 = 0,024 ; q95 = 0 | |
| 661 | +CALC-40-007,40,Cholesky 2×2 (0,005 ; 0,0064 ; 0,78) : L L' = Sigma ; corrélation r–R_T théorique 0,781 = empirique 0,781 ; Spearman 0,769 vs (6/pi) arcsin(rho/2) = 0 | |
| 662 | +CALC-40-008,40,Copule gaussienne (50 000 tirages) : marginales exactes et Spearman ≈ 0,766,ch40_montecarlo.py::copule_gaussienne,test_ch40.py::test_cholesky_et_copule,±0,01,ok | |
| 663 | +CALC-40-009,40,Erreur type théorique (N = 10 000) : moyenne 3 504 ; q05 4 756 ; médiane 4 135 ; q95 10 621 ; P(RCD1<1,20) 0,0050 — vs empirique sur 300 répétitions : 3 590 ; 4 654 ; 4 277 ; 10 862 ; 0,0052,ch40_montecarlo.py::erreurs_theoriques/repetitions,test_ch40.py::test_erreur_monte_carlo,accord à ±35 % | |
| 664 | +CALC-40-010,40,Graine 20261031 : médiane à z = −2,87 de la moyenne des 300 répétitions (2 203 873) ; rang 1/300 ; q05 z = −2,11 ; q95 z = −1,79 ; moyennes des 300 : 2 246 514 / 1 745 027 / 2 896 383,ch40_montecarlo.py::tout (graine_traite),imprimé (non testé : diagnostic),— | |
| 665 | +CALC-40-011,40,Convergence (suite de 100 000 tirages) : médiane 2 203 500 ; q05 1 744 070 ; q95 2 895 770 ; après 100 tirages 2 186 860 / 2 859 840 ; après 1 000 : 2 188 350 / 2 865 010 ; après 10 000 : 2 207 230 / 2 901 010,ch40_montecarlo.py::convergence,test_ch40.py::test_convergence_et_pente (N_max 20 000),médiane ≈ 2 204 000 ± 15 000,ok,verifie,2026-10-31 | |
| 666 | +CALC-40-012,40,Pente log-log de l'écart-type empirique de la médiane selon N (40 répétitions ; N de 250 à 8 000),ch40_montecarlo.py::se_empirique_selon_N,test_ch40.py::test_convergence_et_pente,−0,5,−0,501 | |
| 667 | +CALC-40-013,40,N requis (eq. 40.n-requis) : médiane ±5 000 $ → 26 267 ; ±1 000 $ → 656 665 ; probabilité ±1 pt → 9 604 ; ±0,5 pt → 38 415,ch40_montecarlo.py::n_requis,test_ch40.py::test_erreur_monte_carlo,26267 ; 9604 ; 38415,idem,verifie | |
| 668 | +CALC-40-014,40,Hypercube latin : un point par strate ; mêmes lois que tirer() ; rapport des variances simple/LHS (N = 1 000 ; 100 répétitions) : moyenne 105,4 ; écart-type 3,1 ; médiane 2,8 ; q05 1,4 ; q95 1,9 ; P(V<2M) 2,6 ; P(RCD1<1 | |
| 669 | +CALC-40-015,40,VaR 5 % = 473 372 (21,4 %) ; CVaR 5 % = 557 097 (25,2 %) ; VaR 10 % = 385 254 ; CVaR 10 % = 491 208 (référence V_DCF 2 208 566) ; normale : q05 1 657 079 ; CVaR5 → 1 510 643,ch40_montecarlo.py::mesures_risque/cvar_normale,test_ch40.py::test_mesures_risque_et_rcd_analytique,±1 $,ok | |
| 670 | +CALC-40-016,40,RCD1 affine en v : pente −2,12 ; v* = 0,039 → P exacte 0,5 ; v1 = 13,33 % → P exacte 2e-5 (0,21 tirage attendu) ; la fonction affine reproduit le RCD1 simulé à 1e-10,ch40_montecarlo.py::rcd1_analytique | |
| 671 | +CALC-40-017,40,Stress déterministes : hausse des taux 1 947 889 (−11,8 % ; P 20,7 %) ; inoccupation 6 % 2 128 580 (−3,6 % ; 42,3 %) ; croissance faible 1 954 800 (−11,5 % ; 21,4 %) ; 3 quantiles 90 % 1 717 180 (−22 | |
| 672 | +CALC-40-018,40,Stress inversé : v (RCD1 = 1) 13,33 % ; r (V = 2 M$) 7,718 % ; R_T (V = V_cap) 5,622 % ; g_m (V = V_cap) 2,326 %,ch40_montecarlo.py::stress_inverse,test_ch40.py::test_stress_et_inverse | |
| 673 | +CALC-40-019,40,Indices de Sobol (N = 20 000 ; 180 000 évaluations) : r 0,528/0,535 ; g_m 0,248/0,255 ; delta 0,134/0,144 ; g_d 0 | |
| 674 | +CALC-40-020,40,Corrélations de Spearman avec la valeur : R_T −0,782 ; r −0,711 ; g_m 0,487 ; delta 0,347 ; g_d −0,211 ; v −0,145 ; rotation 0 | |
| 675 | +CALC-40-021,40,Tornade (ch. 47) : amplitudes r 636 535 ; g_m 459 632 ; delta 320 404 ; g_d 185 540 ; v 117 049 ; CAPEX 92 066 ; rotation 90 738,ch47_dossier.py::tornade (importée),test_ch47.py,idem ch47,idem,verifie,2026-10-31 | |
| 676 | +CALC-40-022,40,Portefeuille cas 4 (48 immeubles ; horizon 1 an ; sigma_R 50 pb ; rho 0,30/0,60 ; amortissement 480 mois ; 23 prêts ≤ 2028 renouvelés à +200 pb) : valeur 2026 143 363 000 ; déterministe 147 935 699 ; écart-type 10 295 448 ; q05 133 871 911 ; VaR5 14 063 788 ; CVaR5 17 388 940 ; ratio diversification 0,643 ; E[n<1,20] 10,19 ; E[n<1] 4,93 ; déterministe 5 et 1 | |
| 677 | +CALC-40-023,40,Structure factorielle : corrélation empirique des log-valeurs ≈ 0,60 intra-RMR et 0,30 inter-RMR ; indépendance : écart-type 3 207 240 ratio 0,201 ; parfaite : 15 931 300 ratio 0,998 ; E[n<1,20] indépendant de la corrélation,ch40_montecarlo.py::simuler_portefeuille/comparer_structures_correlation | |
| 678 | +CALC-40-024,40,Choc de revenu sigma_g = 10 % : q95(n<1) 8 / 10 / 11 ; P(n<1 > 10) 0 / 1,9 % / 5,1 % selon la structure,ch40_montecarlo.py::comparer_structures_correlation,imprimé (non testé),—,— | |
| 679 | +CALC-40-025,40,Exercices : ex1 médiane 0,03888 P(v>5 %) 0,1957 ; ex2 P(rot>20 %) tri 0,147 PERT 0,092 ; ex3 N 26 267 / 656 665 / 9 604 / 38 415 ; ex4 r 7,85 % R_T 5,399 % Spearman 0 | |
| 680 | +CALC-40-026,40,Solution 5 : P(V < 75 % de 2 208 566) = 2,1 % (212 tirages sur 10 000),ch40_montecarlo.py (vérification ad hoc),—,≈ 2 %,0,0212 | |
| 681 | +CALC-41-001,41,"Coûts du cas 1 repris du ch. 21 : D, I, C_N ; D+I par m² habitable ; ratio IPCB plex/maison T3 2026 ; D+I/m² plex",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_couts_ch21,"298 826 $ ; 62 599 $ ; 397 567 $ ; 2 190,45 $/m² ; 1,0172 ; 2 228,06 $/m²","298 826 $ ; 62 599 $ ; 397 567 $ ; 2 190,45 $/m² ; 1,0172 ; 2 228,06 $/m²",verifie,2026-10-31 | |
| 682 | +CALC-41-002,41,"Prix de sortie (modèle hédonique cas 1, âge 0, Duan) : sujet 637 953 ; U 720 727 ; D 550 726 → 495 654 (×0,90), GDV 991 307 ; T 480 573 → 408 487 (×0,85), GDV 1 225 460 ; Q GDV 1 371 384",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_prix_sortie,637 953 ; 720 727 ; 495 654 ; 991 307 ; 408 487 ; 1 225 460 ; 1 371 384,637 953 ; 720 727 ; 495 654 ; 991 307 ; 408 487 ; 1 225 460 ; 1 371 384,verifie,2026-10-31 | |
| 683 | +CALC-41-003,41,Tests légal et physique (zone fictive H-2f) : logements admissibles 3 ; aire max 372 m² ; aires brutes 194/282/353/400 ; Q non permis ; empreinte 256 m²,analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestQuatreTests,3 ; 372 ; 194/282/353/400 ; Q non permis,3 ; 372 ; 194/282/353/400 ; Q non permis,verifie,2026-10-31 | |
| 684 | +CALC-41-004,41,"Résidu de développement, convention promoteur (frais 4 %, marge 15 % GDV, parcs 10 %, prêt 75 % à 6,19 %, portage 6,19 %) : V_L U/D/T/Q ; reste, F, marge, frais ; statique T ; parcs T",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_valeurs_citees_promoteur,"158 849 / 190 541 / 229 265 / 244 935 $ ; T : reste 275 967, F 18 239, marge 183 819, frais 49 018 ; statique 250 879 ; parcs 22 927","158 849 / 190 541 / 229 265 / 244 935 $ ; T : reste 275 967, F 18 239, marge 183 819, frais 49 018 ; statique 250 879 ; parcs 22 927",verifie,2026-10-31 | |
| 685 | +CALC-41-005,41,"Convention construction sur commande (marge 10 % des coûts, sans frais ni parcs) : V_L U/D/T ; marge U",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_valeurs_citees_occupant,266 187 / 330 792 / 399 479 $ ; 39 824 $,266 187 / 330 792 / 399 479 $ ; 39 824 $,verifie,2026-10-31 | |
| 686 | +CALC-41-006,41,Triplex vendu en bloc au prix par logement des triplex du cas 2 (traite.cas2) : 281 000 $ ; GDV 843 000 $ ; reste négatif ; V_L −28 102 $,analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_en_bloc_cas2,281 000 ; 843 000 ; −28 102,281 000 ; 843 000 ; −28 102,verifie,2026-10-31 | |
| 687 | +CALC-41-007,41,Identités : reste = GDV − frais − C − D − F − M ; V_L(1+τ)(1+r)^T = reste ; parcs = τ V_L ; F = L·i·T_eff/2 ; forme linéaire a·GDV − b ; version statique = ch08.valeur_residuelle_redeveloppement,analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_identites ; ::test_version_statique_egale_ch08,identités à 1e-10,identités à 1e-10,verifie,2026-10-31 | |
| 688 | +CALC-41-008,41,"Conclusions PHMU : terrain vacant U (promoteur seul : T) ; bien amélioré S0 ; contribution du bâtiment 323 000 $ ; seuils GDV triplex 1 776 390 $ (+45,0 %) et 1 296 396 $ (+5,8 %)",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_seuils_et_conclusion,"U ; S0 ; 323 000 ; 1 776 390 (+45,0 %) ; 1 296 396 (+5,8 %)","U ; S0 ; 323 000 ; 1 776 390 (+45,0 %) ; 1 296 396 (+5,8 %)",verifie,2026-10-31 | |
| 689 | +CALC-41-009,41,"Sensibilité V_L triplex : prix ±15 % 105 569/352 962 ; coût ±10 % 286 246/172 285 ; marge 10/20 % 280 169/178 362 ; durée 12/24 mois 241 459/217 582 ; taux 5/7,5 % 236 137/221 939 ; parcs 0 % 252 192 ; frais 2/6 % 249 627/208 904",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_sensibilite_citee,voir description,voir description,verifie,2026-10-31 | |
| 690 | +CALC-41-010,41,"Arbre binomial (σ 10 %, Δt 5 ans, r 2 %, y 4,5 %) : u 1,2506 ; d 0,7996 ; Φ 0,8860 ; q 0,1915 ; disc 0,9057 ; a 0,6729 ; b 1 195 378 ; nœuds GDV 1 532 535 / 979 914 / 1 916 556 / 1 225 460 / 783 568 ; exercice uu 94 322 ; continuation t1 16 357 ; prime 2 837 (0,47 %) ; frontière t1 1 874 959",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestOption,voir description,voir description,verifie,2026-10-31 | |
| 691 | +CALC-41-011,41,Sensibilité de la prime (V_act 600/450/300 k$ × σ 5/10/15/20/25 %) : 0/2 837/21 420/47 939/77 556 ; 0/7 348/29 116/59 015/95 946 ; 0/23 568/58 416/95 247/132 208,analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestOption::test_sensibilite_option,voir description,voir description,verifie,2026-10-31 | |
| 692 | +CALC-41-012,41,"Capozza–Helsley (R_A 27 000 ; R_T 55 146 ; C 716 656 ; g 551 ; σ 5 515 ; r 4,5 %) : α 3,92e-5 ; seuil certitude 59 250 (+7,4 %) ; prime 13 249 ; R* 72 498 (+31,5 %) ; limite σ→0 et racine de l'équation caractéristique",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestCapozzaHelsley,voir description,voir description,verifie,2026-10-31 | |
| 693 | +CALC-41-013,41,"Solutions des exercices : ex2 670 555 / 821 400 ; ex3 F 32 033, V_L 407 908, statique 459 970, élasticité 2,88 ; ex5 u 1,3985, q 0,2815, américaine 45 636, européenne 37 007, nœud haut 178 960 > 145 121 ; ex6 α 5,79e-5, prime 9 266, R* 57 266 ; ex7 183 529/223 981/269 989, seuil 1 280 327 (+4,5 %), primes 14 897 / 47 091",analysis/python/cases/ch41_phmu.py ; analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch41.py::TestExercices,voir description,voir description,verifie,2026-10-31 | |
| 694 | +CALC-46-001,46,RBP contractuel = 12 × (1 047 + 1 188 + 1 251) ; RBP marché = 12 × (1 430 + 1 430 + 1 251) ; ρ = 0,848,analysis/python/cases/ch46_dossier.py,analysis/python/tests/test_ch46.py::test_coherence_cas2_et_ch32,41832 ; 49332 ; 0.848,41832.00 ; 49332.00 ; 0.8480,verifie | |
| 695 | +CALC-46-002,46,RBE = RBP × (1 − 0,03),ch46_dossier.py (traite.cas2.revenus),test_ch46.py::test_coherence_cas2_et_ch32,40577.04,40577.04,verifie | |
| 696 | +CALC-46-003,46,Taxe municipale 2026 = 495 000 × 0,7464 % + 3 × (386 + 195),ch46_dossier.py::taxes_2026,test_ch46.py::test_taxes_2026_et_rne,5437.68,5437.68,verifie | |
| 697 | +CALC-46-004,46,Taxe scolaire 2026-2027 = (495 000 − 25 000) × 0,07899 %,ch46_dossier.py::taxes_2026,test_ch46.py::test_taxes_2026_et_rne,371.25,371.25,verifie | |
| 698 | +CALC-46-005,46,Écart taxes déclarées (6 370) − recalculées (5 808,93),ch46_dossier.py::base_normalisee,test_ch46.py::test_taxes_2026_et_rne,561.07,561.07,verifie | |
| 699 | +CALC-46-006,46,Gestion imputée = 4 % × RBE ; dépenses hors réserve ; dépenses totales ; ratio,ch46_dossier.py (traite.cas2.rne),test_ch46.py::test_taxes_2026_et_rne,1623.08 ; 16182.01 ; 17982.01 ; 0.443,1623.08 ; 16182.01 ; 17982.01 ; 0.4432,verifie,2026-10-31 | |
| 700 | +CALC-46-007,46,RNE₁ normalisé = RBE − DE − RR ; RNE déclaré (ch. 32) ; RNE aux loyers de marché,ch46_dossier.py::base_normalisee,test_ch46.py::test_taxes_2026_et_rne,22595.03 ; 22033.96 ; 29579.03,22595.03 ; 22033.96 ; 29579.03,verifie,2026-10-31 | |
| 701 | +CALC-46-008,46,Sélection des 5 comparables triplex Limoilou par distance d'attributs (identiques au ch. 32),ch46_dossier.py (ch32_plex.selection_comparables),test_ch46.py::test_coherence_cas2_et_ch32,Q0187 Q0222 Q0243 Q0207 Q0235,Q0187 Q0222 Q0243 Q0207 Q0235,verifie,2026-10-31 | |
| 702 | +CALC-46-009,46,Régression auxiliaire ln(prix/logement) sur 127 ventes : R² ; σ ; coefficient mois −0,00599 → croissance implicite 7,45 %/an,ch46_dossier.py::regression_auxiliaire,test_ch46.py::test_regression_et_grille,R² ≈ 0.727 ; g = exp(−12β) − 1,0.7273 ; 0.0973 ; 0.0745 | |
| 703 | +CALC-46-010,46,Coefficient du loyer relatif non significatif (t = 1,18 < 2) → ajustement nul ; stationnement nul (tous ont une case),ch46_dossier.py::grille_ajustements,test_ch46.py::test_regression_et_grille,colonnes nulles,0 ; 0,verifie | |
| 704 | +CALC-46-011,46,Grille : prix ajusté = prix + Σ ajustements ; brut = Σ|A|/P ; Q0243 → 383 849 $/log. ; brut 12,6 %,ch46_dossier.py::grille_ajustements (traite.comparables),test_ch46.py::test_regression_et_grille,383849.14 ; 0.126,383849.14 ; 0.1257,verifie | |
| 705 | +CALC-46-012,46,Prix par logement pondéré (poids ∝ 1/brut) et indication par comparaison × 3,ch46_dossier.py::grille_ajustements (poids_inverse_brut ; reconciliation),test_ch46.py::test_regression_et_grille,340122.25 ; 1020366.74,340122.25 ; 1020366.74,verifie,2026-10-31 | |
| 706 | +CALC-46-013,46,Écart-type pondéré des prix ajustés (par logement ; immeuble) et erreur-type de la moyenne pondérée,ch46_dossier.py::grille_ajustements,test_ch46.py::test_reconciliation (fourchette),34516 ; 103548 ; 47848,34516.03 ; 103548.10 ; 47847.85,verifie,2026-10-31 | |
| 707 | +CALC-46-014,46,MRB médian des 5 comparables × RBP = 22,05 × 41 832 ; MRB ajusté au ρ du sujet (pente −0,956) : 24,38 → 1 019 940,ch46_dossier.py::indications_revenu,test_ch46.py::test_coherence_cas2_et_ch32 ; test_revenu,922395.60 ; 24.38 | |
| 708 | +CALC-46-015,46,Taux ajusté au loyer relatif = 3,451 % + 0,0284 × (0,848 − 1) = 3,02 % ; capitalisation du RNE normalisé,ch46_dossier.py (ch32_plex.regression_taux_loyer_relatif ; finance.capitalisation_directe),test_ch46.py::test_revenu | |
| 709 | +CALC-46-016,46,Capitalisation aux taux médian (3,17 %) ; Q1 (2,76 %) ; Q3 (3,615 %) ; médiane des comparables (2,97 %) ; RNE déclaré au taux ajusté (ch. 32),ch46_dossier.py::indications_revenu,test_ch46.py::test_revenu ; test_coherence | |
| 710 | +CALC-46-017,46,Taux implicite de l'indication par comparaison (RNE / V_comp) ; aux loyers de marché ; écart au taux ajusté en pb,ch46_dossier.py::indications_revenu,test_ch46.py::test_revenu,0.0221 ; 0.0290 ; 81,0.022144 ; 0.028989 ; 80.6,verifie,2026-10-31 | |
| 711 | +CALC-46-018,46,Coût : 2 409 × (262/165)^−0,10 = 2 300,14 ; × 118,5/116,5 = 2 339,63 $/m² ; C_N = 612 983 ; a_eff = 0,5×78 + 0 | |
| 712 | +CALC-46-019,46,Dépréciation extraite du marché à 920 000 $ et terrain 279 000 $ : C_N − (P − V_L) < 0 (−4,6 %) ; terrain nécessaire pour égaler : 725 889 $ (2 342 $/m²),ch46_dossier.py::depreciation_extraite ; exercices()[7],test_ch46.py::test_cout,négative,−28016.50 ; 2341.58,verifie | |
| 713 | +CALC-46-020,46,Valeur pondérée 0,40 × 1 020 367 + 0,35 × 922 396 + 0,25 × 748 126 ; arrondi 5 000 $ ; fourchette ± erreur-type arrondie vers l'extérieur,ch46_dossier.py::reconciliation,test_ch46.py::test_reconciliation,918017 ; 920000 ; 870000-970000 | |
| 714 | +CALC-46-021,46,Ratios implicites : $/logement ; $/m² ; MRB ; taux (contrat ; marché) ; ratio au rôle (× 1,08) ; écart avec ch. 32,ch46_dossier.py::reconciliation,test_ch46.py::test_reconciliation,306667 ; 3511 ; 21.99 ; 0.0246/0.0322 ; 1.86 (1.72) ; +50000,306666.67 ; 3511.45 ; 21.99 ; 0.02456/0.03215 ; 1.859 (1.721) ; 50000,verifie | |
| 715 | +CALC-46-022,46,Pondérations alternatives : 45/30/25 ; égale ; 60/40/0 ; 20/20/60 ; inverse variance (0,689/0,185/0,125),ch46_dossier.py::reconciliation ; exercices()[6],test_ch46.py::test_exercices_et_figures,922915 ; 896963 ; 981178 ; 837428 ; 968084 | |
| 716 | +CALC-46-023,46,Mise de fonds minimale assurée à 920 000 $ = 0,05 × 500 000 + 0,10 × 420 000 ; prêt ; RPV,ch46_dossier.py::financement (ch32_plex.mise_de_fonds_minimale_assuree),test_ch46.py::test_financement,67000 ; 853000 ; 0.927,67000 ; 853000 ; 0.9272 | |
| 717 | +CALC-46-024,46,Hypothèque 4,12 % composé semestriellement 300 mois : i_m ; versement ; service ; constante ; intérêts/capital an 1 ; solde 60 ; capital 5 ans ; solde final nul,ch46_dossier.py::financement (traite.finance.Hypotheque),test_ch46.py::test_financement,0.003406 ; 4542.61 ; 54511.37 ; 0.0639 ; 34473.28/20038.09 ; 744114.34 ; 108885.66 ; 0,0.0034042 ; 4542.61 ; 54511.37 ; 0.0639 ; 34473.28/20038.09 ; 744114.34 ; 108885.66 ; 0.00,verifie | |
| 718 | +CALC-46-025,46,Taux admissible minimal max(4,12 % + 2 % ; 5,25 %) = 6,12 % ; versement de référence,ch46_dossier.py (finance.taux_admissible_minimal),test_ch46.py::test_financement,0.0612 ; 5518.54 | |
| 719 | +CALC-46-026,46,Droits de mutation Ville de Québec 2026 sur 920 000 $ (0,5/1/1,5/2,5/3 %) ; base = max(prix ; 495 000 × 1,08) ; liquidités = mise + droits,ch46_dossier.py::droits_mutation_quebec,test_ch46.py::test_financement | |
| 720 | +CALC-46-027,46,Coût net d'occupation RC = SD + DE' + 0,0358 × MF − loyers nets (2e + 3e × 12 × 0,97) ; mensuel ; hors capital (− capital moyen 5 ans / 12),ch46_dossier.py::financement (ch32_plex.cout_occupation),test_ch46.py::test_financement,44878.94 ; 3739.91 ; 1925.15,44878.94 ; 3739.91 ; 1925.15 | |
| 721 | +CALC-46-028,46,Variantes de financement (30 ans ; 10 % ; 20 % non assuré 4,58 % ; +100 pb ; +200 pb) : versement et coût hors capital,ch46_dossier.py::financement (variantes) ; grille_cout_occupation,test_ch46.py::test_exercices_et_figures (figure),4114.30/1971.14 ; 4409.48/1919.79 ; 4106.36/2169.94 ; 5019.52/2606.57 ; 5518.54/3292.46,idem (script),verifie | |
| 722 | +CALC-46-029,46,Part du versement couverte par les loyers bruts des 2 logements conservés (2 439 / 4 542,61) ; RCD d'un investisseur RNE/SD,ch46_dossier.py::financement,test_ch46.py::test_financement,0.537 ; 0.41,0.5369 ; 0.4145,verifie | |
| 723 | +CALC-46-030,46,Reprise RC : Δ₁ = 383 × 12 × 0,97 ; VA 10 ans sans rotation (g_m 3,5 % ; g_TAL 3,1 % ; r 6 %) ; VA sous rotation 13 % (éq. 26 va-ecart) ; différence ; variantes 9,4 % et 20 %,ch46_dossier.py::va_ecart_rc ; exercices()[2],test_ch46.py::test_reprise | |
| 724 | +CALC-46-031,46,Exercice 5 au prix de 895 000 $ : mise 64 500 ; prêt 830 500 ; versement 4 422,79 ; TAM 5 372,98 ; droits 16 210,50 ; coût net 3 612,63 ; hors capital 1 845,74 ; 2e étage 3 749,40 / 1 982 | |
| 725 | +CALC-46-032,46,Exercice 4 : RNE au ratio médian des ventes 40 577,04 × (1 − 0,357) = 26 091,04 ; capitalisation à 3,02 % = 863 880 ; taux implicite 2,56 % ; écart restant 46 pb,ch46_dossier.py::exercices()[4] | |
added
verification/chapters/ch37.md
+45 −0
@@ -0,0 +1,45 @@ | ||
| 1 | +# Chapitre 37 — Apprentissage automatique et explicabilité : bilan de rédaction (2026-10-31) | |
| 2 | + | |
| 3 | +## Compteurs | |
| 4 | +- Prose : ≈ 12 800 mots (fichier `manuscript/chapters/ch37.tex`, 14 400 mots LaTeX compris) ; 41 pages compilées (chapitre + solutions + bibliographie du chapitre). | |
| 5 | +- Figures : 7 PDF Matplotlib (`ch37-fig-arbre`, `-apprentissage`, `-erreurs`, `-predit-observe`, `-shap-beeswarm`, `-pdp`, `-waterfall`), toutes synthétiques (cas 1, graine 20261031), produites par `analysis/python/figures/ch37_figures.py` ; inscrites dans `verification/chapters/ch37-figures.csv`. | |
| 6 | +- Tableaux : 8 (familles de modèles et hyperparamètres ; comparaison 5 modèles × 3 validations ; validation prospective et remèdes ; un secteur exclu ; importances SHAP/permutation ; prédiction du sujet + cascade SHAP ; scénario non linéaire ; sensibilité aux hyperparamètres). | |
| 7 | +- Équations numérotées : 15 (risque, biais-variance, arbre, critère de division, variance d'une forêt, boosting, gradient fonctionnel, objectif et gain XGBoost, validation croisée, métriques, valeur de Shapley, efficacité SHAP, dépendance partielle, importance par permutation) ; 1 définition (valeur de Shapley) ; 1 exemple intégral en cinq étapes. | |
| 8 | +- Exercices : 7 (niveaux 1, 1, 2, 2, 2, 3, 3) ; solutions détaillées dans `solutions/ch37.tex`, chiffres calculés par `ch37_ml.exercices` et testés (`test_solutions_exercices`). | |
| 9 | +- Encadrés : objectifs, synthetique, exemple, quebec (modèles, rôle et contestation), pratique, erreurs (9), limites (6), synthese (6). | |
| 10 | +- Citations : 25 clés, toutes présentes dans `references/library.bib` (vérifié par grep) ; aucune nouvelle clé citée par `\parencite`. | |
| 11 | + | |
| 12 | +## Contrôles | |
| 13 | +- `tools/compile_chapter.sh 37` → voir la section « Sorties des contrôles » ci-dessous. | |
| 14 | +- `python3 -m pytest -q analysis/python/tests/test_ch37.py` → 10 tests (reproductibilité des plis du ch. 18, référence hédonique, comparaison aléatoire, validation spatiale et temporelle, un secteur exclu, scénario non linéaire, SHAP, sujet et PDP, courbes et sensibilité, solutions des exercices). | |
| 15 | +- `python3 tools/check_manuscript.py --no-log` : aucun problème imputable au ch. 37 (les 15 signalés concernent ch41, ch46, ch48). | |
| 16 | +- PDF inspecté (planches de pages à 45 dpi + figures à 110 dpi) : corrections apportées après la première compilation (étiquettes de l'arbre, position des annotations, COD sous les boîtes, tableaux rétrécis). | |
| 17 | +- Convention `\cref` sans article respectée ; labels à deux chiffres (`eq:37:`, `tab:37:`, `fig:37:`, `sec:37:`, `ex:37:k`, `def:37:shapley`, `ex:37:ml-cas1`). | |
| 18 | + | |
| 19 | +## Modèles, données et cohérence inter-chapitres | |
| 20 | +- `traite.cas1.hedonique` n'est pas redéfini ; `traite/` inchangé. Les dix plis aléatoires sont ceux de `ch18_hedonique.validation_croisee` (test `test_plis_identiques_au_chapitre_18`) ; l'hédonique reproduit exactement le ch. 18 : RMSE 40 889 $, COD 6,83, PRD 1,007, MdAPE 5,68 (ch. 18 : 5,67 avec le facteur de Duan en échantillon), prédiction du sujet 637 953 $. | |
| 21 | +- Boosting de référence = `GradientBoostingRegressor` (scikit-learn 1.6 ; prof. 2, ν 0,03, 1 200 arbres, sous-éch. 80 %, feuilles ≥ 5) ; XGBoost 3.2 en variante. **Gotcha** : `shap` 0.48 ne lit pas le format de modèle de xgboost 3.2 (`ValueError: could not convert string to float: '[1.3072698E1]'` sur `base_score`) → TreeSHAP appliqué au GBM scikit-learn ; déclaré dans le chapitre (encadré synthétique et limites). | |
| 22 | +- **Gotcha** : avec `min_samples_leaf=1`, la feuille extrême du temps est estimée sur une poignée de ventes et le biais prospectif du boosting atteint −13,4 % (−3,4 % avec feuilles ≥ 5) ; inchangé en validation aléatoire. Utilisé comme enseignement (tab. 37.3). | |
| 23 | +- Résultats clés (plis aléatoires) : hédonique 0,0839 / COD 6,83 ; XGBoost 0,0921 / 7,33 ; boosting 0,0931 / 7,42 ; forêt 0,1067 / 8,64 (PRB −0,196) ; arbre 0,1468 / 11,63. Spatial stratifié : 7,00 / 7,53 / 7,62 / 8,96 / 12,12. Prospectif 2026 : biais −1,0 / −2,9 / −3,4 / −6,0 / −8,5 %. Un secteur exclu : hédonique COD 10,44 (Buck +23,4 %, M-A +26,1 %), boosting 8,59. Scénario (+0,12 qualité≥4 & âge≥40 ; −0,10 âge 25-45) : hédonique 8,15, boosting 7,46, XGBoost 7,40, respécifié 6,85. Sujet : 637 953 / 613 976 / 605 825 / 586 818 / 549 573 $. Souches (prof. 1) = meilleur boosting (0,0887) : cohérent avec une loi additive. | |
| 24 | +- Temps d'exécution : `ch37_ml.main()` ≈ 3 min (validation 5 modèles × 3 schémas, grille de 13 réglages, courbes d'apprentissage, permutation, validation imbriquée) ; les tests partagent une fixture de module. | |
| 25 | + | |
| 26 | +## Points non vérifiés ou partiellement vérifiés (voir ch37-claims.csv) | |
| 27 | +1. CLM-37-08 : aucune décision du TAQ sur l'admissibilité d'un modèle d'apprentissage en évaluation foncière identifiée — constat de recherche documentaire (CanLII inaccessible), présenté comme tel dans l'encadré Québec, `non_verifie`. | |
| 28 | +2. CLM-37-12 : portée des conclusions de Mayer et al. (2019), Bogin & Shui (2020) et McCluskey et al. (2013) résumée d'après notes-D (articles non relus en texte intégral pour ce chapitre), `partiellement_verifie`. | |
| 29 | +3. CLM-37-05 : numérotation VPS 5 du Red Book RICS lue sur la page RICS, PDF non téléchargé (notes-C §5). | |
| 30 | +4. Seuils IAAO : édition 2013 du Standard on Ratio Studies (copie tierce, révision annoncée) ; Standard on AVMs 2018 paraphrasé, non reproduit. | |
| 31 | +5. Hyperparamètres de référence choisis sur la grille évaluée sur les mêmes plis (optimisme déclaré ; la validation imbriquée de l'exercice 37.7 d montre un optimisme nul pour la profondeur). | |
| 32 | + | |
| 33 | +## Nouvelles références (non citées, `references/lib-ch37.bib`) | |
| 34 | +`shapley1953` (Princeton, DOI 10.1515/9781400881970-018) et `robertsEtAl2017` (Ecography 40(8), DOI 10.1111/ecog.02881), vérifiées par Crossref ; données en notes de bas de page avec DOI dans le chapitre. Après fusion dans `library.bib`, remplacer ces deux notes par `\parencite{}` (repérables par « vérifié par l'API Crossref le 31 octobre 2026 »). Registre : `ch37-registry.csv` (SRC-37-001 à 003). | |
| 35 | + | |
| 36 | +## Suggestions pour l'harmonisation | |
| 37 | +- Ch. 18 : la synthèse dit « COD 6,8 en validation croisée » et le tableau 18.7 « 6,83 » ; ce chapitre cite 6,83 partout. | |
| 38 | +- Ch. 9 / ch. 20 : la régressivité des modèles d'arbres (PRB −0,09 à −0,20) peut servir d'exemple d'iniquité verticale « de modèle » distincte de l'artefact mécanique du PRB décrit aux ch. 9 et 18. | |
| 39 | +- Ch. 35 : le boosting détendancé (indice séparé du modèle de niveau) renvoie à la logique indice/niveau des AVM ; un renvoi croisé depuis le ch. 35 serait utile. | |
| 40 | +- Ch. 19 : l'exercice 37.6 c (surface polynomiale des coordonnées vs indicatrices, extrapolation à −26 % sur Aylmer) complète la discussion GWR/krigeage ; renvoi possible. | |
| 41 | +- Ch. 38 : les coordonnées fictives et les blocs k-moyennes (`plis_spatiaux`) peuvent être réutilisés pour une carte des blocs. | |
| 42 | +- Glossaire : `\motcle` posés pour risque de prédiction, arbre de régression, forêt aléatoire, boosting, taux d'apprentissage, pseudo-résidus, validation croisée, fuite de données, surapprentissage, arrêt précoce, explicabilité, valeurs SHAP, TreeSHAP, dépendance partielle, importance par permutation, modèle d'évaluation automatisé. | |
| 43 | + | |
| 44 | +## Sorties des contrôles (dernière exécution) | |
| 45 | +(voir ci-dessous, mis à jour après la compilation finale) | |
added
verification/chapters/ch40-calculations.csv
+27 −0
@@ -0,0 +1,27 @@ | ||
| 1 | +id,chapitre,description,script,test,resultat_attendu,resultat_obtenu,statut,date | |
| 2 | +CALC-40-001,40,Monte-Carlo cas 3 (MC_LOIS ch47 ; graine 20261031 ; N = 10 000) : médiane de la valeur identique au ch. 47,analysis/python/cases/ch40_montecarlo.py,analysis/python/tests/test_ch40.py::test_chiffres_identiques_au_ch47,2191607.87,2191607.87,verifie,2026-10-31 | |
| 3 | +CALC-40-002,40,Quantiles 5 % et 95 % de la valeur identiques au ch. 47,ch40_montecarlo.py,test_ch40.py::test_chiffres_identiques_au_ch47,1735194.21 ; 2876902.35,1735194.21 ; 2876902.35,verifie,2026-10-31 | |
| 4 | +CALC-40-003,40,Moyenne et écart-type de la valeur ; P(RCD1<1,20) ; P(RCD1<1) ; P(RCD6 +200 pb < 1,20),ch40_montecarlo.py,test_ch40.py::test_chiffres_identiques_au_ch47,2233505.68 ; 350442.57 ; 0,4936 ; 0 ; 0,0140,idem,verifie,2026-10-31 | |
| 5 | +CALC-40-004,40,evaluer() (chemin ch. 40) reproduit monte_carlo() (ch. 47) tirage par tirage ; valeur_deterministe() = V_DCF (2 208 565.91) et = 1 947 889 pour r 8 % / R_T 5,5 % (ch. 30),ch40_montecarlo.py,test_ch40.py::test_valeur_deterministe_reproduit_dcf,égalité exacte,égalité exacte,verifie,2026-10-31 | |
| 6 | +CALC-40-005,40,Moments théoriques des lois (log-normale : moyenne 0,0408 ; triangulaire (0,08 ; 0,15 ; 0,25) : moyenne 0,16 écart-type 0,03488 q05 0,1044 q95 0,2208 ; PERT : alpha 2,647 beta 3,353 moyenne 0,155 écart-type 0,0319) vs scipy,ch40_montecarlo.py::moments_loi/pert,test_ch40.py::test_moments_lois_formules_fermees,formules fermées = scipy à 1e-12,ok,verifie,2026-10-31 | |
| 7 | +CALC-40-006,40,Élicitation : inversion exacte des quantiles 5/95 % (log-normale médiane 0,03888 sigma_ln 0,2934 ; normale),ch40_montecarlo.py::parametres_depuis_quantiles,test_ch40.py::test_moments_lois_formules_fermees,q05 = 0,024 ; q95 = 0,063,ok,verifie,2026-10-31 | |
| 8 | +CALC-40-007,40,Cholesky 2×2 (0,005 ; 0,0064 ; 0,78) : L L' = Sigma ; corrélation r–R_T théorique 0,781 = empirique 0,781 ; Spearman 0,769 vs (6/pi) arcsin(rho/2) = 0,766 ; plancher actif 0,74 %,ch40_montecarlo.py::cholesky_2x2/correlation_r_RT,test_ch40.py::test_cholesky_et_copule,0,7809,0,7809,verifie,2026-10-31 | |
| 9 | +CALC-40-008,40,Copule gaussienne (50 000 tirages) : marginales exactes et Spearman ≈ 0,766,ch40_montecarlo.py::copule_gaussienne,test_ch40.py::test_cholesky_et_copule,±0,01,ok,verifie,2026-10-31 | |
| 10 | +CALC-40-009,40,Erreur type théorique (N = 10 000) : moyenne 3 504 ; q05 4 756 ; médiane 4 135 ; q95 10 621 ; P(RCD1<1,20) 0,0050 — vs empirique sur 300 répétitions : 3 590 ; 4 654 ; 4 277 ; 10 862 ; 0,0052,ch40_montecarlo.py::erreurs_theoriques/repetitions,test_ch40.py::test_erreur_monte_carlo,accord à ±35 %,accord à ±5 %,verifie,2026-10-31 | |
| 11 | +CALC-40-010,40,Graine 20261031 : médiane à z = −2,87 de la moyenne des 300 répétitions (2 203 873) ; rang 1/300 ; q05 z = −2,11 ; q95 z = −1,79 ; moyennes des 300 : 2 246 514 / 1 745 027 / 2 896 383,ch40_montecarlo.py::tout (graine_traite),imprimé (non testé : diagnostic),—,—,verifie,2026-10-31 | |
| 12 | +CALC-40-011,40,Convergence (suite de 100 000 tirages) : médiane 2 203 500 ; q05 1 744 070 ; q95 2 895 770 ; après 100 tirages 2 186 860 / 2 859 840 ; après 1 000 : 2 188 350 / 2 865 010 ; après 10 000 : 2 207 230 / 2 901 010,ch40_montecarlo.py::convergence,test_ch40.py::test_convergence_et_pente (N_max 20 000),médiane ≈ 2 204 000 ± 15 000,ok,verifie,2026-10-31 | |
| 13 | +CALC-40-012,40,Pente log-log de l'écart-type empirique de la médiane selon N (40 répétitions ; N de 250 à 8 000),ch40_montecarlo.py::se_empirique_selon_N,test_ch40.py::test_convergence_et_pente,−0,5,−0,501,verifie,2026-10-31 | |
| 14 | +CALC-40-013,40,N requis (eq. 40.n-requis) : médiane ±5 000 $ → 26 267 ; ±1 000 $ → 656 665 ; probabilité ±1 pt → 9 604 ; ±0,5 pt → 38 415,ch40_montecarlo.py::n_requis,test_ch40.py::test_erreur_monte_carlo,26267 ; 9604 ; 38415,idem,verifie,2026-10-31 | |
| 15 | +CALC-40-014,40,Hypercube latin : un point par strate ; mêmes lois que tirer() ; rapport des variances simple/LHS (N = 1 000 ; 100 répétitions) : moyenne 105,4 ; écart-type 3,1 ; médiane 2,8 ; q05 1,4 ; q95 1,9 ; P(V<2M) 2,6 ; P(RCD1<1,20) exact 0,5 (variance nulle),ch40_montecarlo.py::hypercube_latin/tirer_lhs/comparer_lhs,test_ch40.py::test_hypercube_latin,ratio moyenne > 5 ; se LHS P(RCD1) = 0,ok,verifie,2026-10-31 | |
| 16 | +CALC-40-015,40,VaR 5 % = 473 372 (21,4 %) ; CVaR 5 % = 557 097 (25,2 %) ; VaR 10 % = 385 254 ; CVaR 10 % = 491 208 (référence V_DCF 2 208 566) ; normale : q05 1 657 079 ; CVaR5 → 1 510 643,ch40_montecarlo.py::mesures_risque/cvar_normale,test_ch40.py::test_mesures_risque_et_rcd_analytique,±1 $,ok,verifie,2026-10-31 | |
| 17 | +CALC-40-016,40,RCD1 affine en v : pente −2,12 ; v* = 0,039 → P exacte 0,5 ; v1 = 13,33 % → P exacte 2e-5 (0,21 tirage attendu) ; la fonction affine reproduit le RCD1 simulé à 1e-10,ch40_montecarlo.py::rcd1_analytique,test_ch40.py::test_mesures_risque_et_rcd_analytique,0,5 ; 0,1333,0,5 ; 0,13334,verifie,2026-10-31 | |
| 18 | +CALC-40-017,40,Stress déterministes : hausse des taux 1 947 889 (−11,8 % ; P 20,7 %) ; inoccupation 6 % 2 128 580 (−3,6 % ; 42,3 %) ; croissance faible 1 954 800 (−11,5 % ; 21,4 %) ; 3 quantiles 90 % 1 717 180 (−22,2 % ; 4,1 %) ; 7 quantiles 1 464 480 (−33,7 % ; 0,13 %),ch40_montecarlo.py::stress_deterministes,test_ch40.py::test_stress_et_inverse,1 947 889 ; P 0,2072 ; dernier < 1 %,ok,verifie,2026-10-31 | |
| 19 | +CALC-40-018,40,Stress inversé : v (RCD1 = 1) 13,33 % ; r (V = 2 M$) 7,718 % ; R_T (V = V_cap) 5,622 % ; g_m (V = V_cap) 2,326 %,ch40_montecarlo.py::stress_inverse,test_ch40.py::test_stress_et_inverse,V = 2 000 000 ± 1 ; V = V_cap ± 1,ok,verifie,2026-10-31 | |
| 20 | +CALC-40-019,40,Indices de Sobol (N = 20 000 ; 180 000 évaluations) : r 0,528/0,535 ; g_m 0,248/0,255 ; delta 0,134/0,144 ; g_d 0,043/0,044 ; v 0,020/0,019 ; rotation 0,013/0,015 ; CAPEX 0,003/0,004 ; somme S1 0,989,ch40_montecarlo.py::sobol,test_ch40.py::test_sobol_et_rangs (N = 5 000 ; ±0,03),0,528 ; 0,248,ok,verifie,2026-10-31 | |
| 21 | +CALC-40-020,40,Corrélations de Spearman avec la valeur : R_T −0,782 ; r −0,711 ; g_m 0,487 ; delta 0,347 ; g_d −0,211 ; v −0,145 ; rotation 0,062 ; CAPEX −0,044 ; R² régression standardisée 0,955,ch40_montecarlo.py::correlations_rang/regression_standardisee,test_ch40.py::test_sobol_et_rangs,±0,01,ok,verifie,2026-10-31 | |
| 22 | +CALC-40-021,40,Tornade (ch. 47) : amplitudes r 636 535 ; g_m 459 632 ; delta 320 404 ; g_d 185 540 ; v 117 049 ; CAPEX 92 066 ; rotation 90 738,ch47_dossier.py::tornade (importée),test_ch47.py,idem ch47,idem,verifie,2026-10-31 | |
| 23 | +CALC-40-022,40,Portefeuille cas 4 (48 immeubles ; horizon 1 an ; sigma_R 50 pb ; rho 0,30/0,60 ; amortissement 480 mois ; 23 prêts ≤ 2028 renouvelés à +200 pb) : valeur 2026 143 363 000 ; déterministe 147 935 699 ; écart-type 10 295 448 ; q05 133 871 911 ; VaR5 14 063 788 ; CVaR5 17 388 940 ; ratio diversification 0,643 ; E[n<1,20] 10,19 ; E[n<1] 4,93 ; déterministe 5 et 1,ch40_montecarlo.py::simuler_portefeuille,test_ch40.py::test_portefeuille_valeurs_citees,±1 $,ok,verifie,2026-10-31 | |
| 24 | +CALC-40-023,40,Structure factorielle : corrélation empirique des log-valeurs ≈ 0,60 intra-RMR et 0,30 inter-RMR ; indépendance : écart-type 3 207 240 ratio 0,201 ; parfaite : 15 931 300 ratio 0,998 ; E[n<1,20] indépendant de la corrélation,ch40_montecarlo.py::simuler_portefeuille/comparer_structures_correlation,test_ch40.py::test_portefeuille_structure_de_correlation,±0,05,ok,verifie,2026-10-31 | |
| 25 | +CALC-40-024,40,Choc de revenu sigma_g = 10 % : q95(n<1) 8 / 10 / 11 ; P(n<1 > 10) 0 / 1,9 % / 5,1 % selon la structure,ch40_montecarlo.py::comparer_structures_correlation,imprimé (non testé),—,—,verifie,2026-10-31 | |
| 26 | +CALC-40-025,40,Exercices : ex1 médiane 0,03888 P(v>5 %) 0,1957 ; ex2 P(rot>20 %) tri 0,147 PERT 0,092 ; ex3 N 26 267 / 656 665 / 9 604 / 38 415 ; ex4 r 7,85 % R_T 5,399 % Spearman 0,765 ; ex5 VaR10 385 254 CVaR10 491 208 normale q10 1 784 395 CVaR 1 618 485 ; ex6 médiane 2 184 377 écart-type 546 896 q05 1 539 790 q95 3 322 787 P(V<2M) 0,3558,ch40_montecarlo.py::exercices,test_ch40.py::test_exercices,idem,idem,verifie,2026-10-31 | |
| 27 | +CALC-40-026,40,Solution 5 : P(V < 75 % de 2 208 566) = 2,1 % (212 tirages sur 10 000),ch40_montecarlo.py (vérification ad hoc),—,≈ 2 %,0,0212,verifie,2026-10-31 | |
added
verification/chapters/ch40-claims.csv
+20 −0
@@ -0,0 +1,20 @@ | ||
| 1 | +id,chapitre,affirmation,source_id,verification,date,statut,notes | |
| 2 | +CLM-40-001,40,Pyhrr (1973) : premier modèle de simulation du risque d'un investissement immobilier (lois subjectives sur loyers dépenses inoccupation revente ; distribution du rendement),pyhrr1973,notes-D §ch. 40 ; entrée library.bib avec DOI 10.1111/1540-6229.00103,2026-10-31,verifie,article non relu in extenso ; description conforme au titre et au résumé | |
| 3 | +CLM-40-002,40,Wofford (1978) : simulation appliquée à l'évaluation des immeubles à revenus (distribution de valeurs),wofford1978,notes-D ; DOI 10.1111/1540-6229.00187,2026-10-31,verifie, | |
| 4 | +CLM-40-003,40,French et Gabrielli (2004) : l'incertitude de l'évaluation est inhérente et doit être communiquée ; distinction incertitude d'évaluation / variation de marché,frenchGabrielli2004,notes-D §ch. 20 et 40 ; DOI 10.1108/14635780410569470,2026-10-31,verifie, | |
| 5 | +CLM-40-004,40,French et Gabrielli (2005) : DCF à intrants probabilistes élicités auprès de l'évaluateur,frenchGabrielli2005,notes-D ; DOI 10.1108/14635780510575102,2026-10-31,verifie, | |
| 6 | +CLM-40-005,40,Hoesli Jani Bender (2006) : Monte-Carlo pour la valeur DCF ; lois calibrées sur séries de marché ; taux d'actualisation lié aux taux sans risque ; biais de convexité (rapporter la médiane),hoesliJaniBender2006,notes-D ; DOI 10.1108/14635780610655076 ; même lecture qu'au ch. 47,2026-10-31,verifie, | |
| 7 | +CLM-40-006,40,Byrne (1996) : risque incertitude et décision en développement immobilier ; passage sensibilité → simulation,byrne1996,notes-D §ch. 40 et 41,2026-10-31,verifie, | |
| 8 | +CLM-40-007,40,Sivitanidou–Sivitanides (1999) et Chervachidze–Wheaton (2013) : déterminants des taux de capitalisation (marchés de capitaux prime de risque),sivitanidouSivitanides1999;chervachidzeWheaton2013,notes-D ; déjà cités au ch. 47 §47.12,2026-10-31,verifie, | |
| 9 | +CLM-40-008,40,Taux admissible minimal du BSIF (prêts non assurés) = max(taux contractuel + 2 points ; 5,25 %) ; revu au moins annuellement ; non appliqué aux transferts directs non assurés au renouvellement depuis le 21 novembre 2024 ; page modifiée le 29 janvier 2026,osfiMqr,notes-C §4.2,2026-10-31,verifie, | |
| 10 | +CLM-40-009,40,Banque du Canada : taux directeur relevé à 2,50 % le 28 octobre 2026 ; première hausse depuis juillet 2023 ; maintien à 2,25 % depuis le 30 octobre 2025,bdc20261028,notes-C §4.1 (communiqué),2026-10-31,verifie, | |
| 11 | +CLM-40-010,40,Rendement GdC 10 ans 3,84 % le 29 octobre 2026 ; taux hypothécaire conventionnel 5 ans affiché 6,19 % (semaine du 28 octobre 2026),bdctauxhypothecaires2026,notes-C §4.1 (Valet BD.CDN.10YR.DQ.YLD ; V80691335),2026-10-31,verifie,clé bib du groupe A4_RATES_MORTGAGES ; le rendement 10 ans vient de la série BD.CDN.10YR.DQ.YLD (notes-C) | |
| 12 | +CLM-40-011,40,Croissance des loyers contractuels 3,1 % = pourcentage de base de la méthode de fixation du TAL pour 2026 (paramètre réglementaire),SRC-A (TAL 2026),repris des ch. 30 et 47 (hypothèse du dossier cas3_montreal_hypotheses_dcf.json),2026-10-31,partiellement_verifie,source TAL non relue dans ce chapitre ; renvoi ch. 34 | |
| 13 | +CLM-40-012,40,Les NPP de l'OEAQ exigent l'énoncé des hypothèses et réserves et un raisonnement suivable ; aucune norme n'exige de simulation,oeaqNormes,notes-C §2 (règle 2.3) ; absence d'exigence de simulation = constat (non trouvé dans les NPP),2026-10-31,verifie,l'absence est un constat de lecture non une citation | |
| 14 | +CLM-40-013,40,Taux d'inoccupation SCHL Montréal 2023-2025 et prévisions 2028 couverts par l'intervalle 2,4 %–6,3 %,schlrmltables2025;schlpmh2026ete,repris du ch. 47 (notes-E),2026-10-31,partiellement_verifie,chiffres SCHL non recités ; affirmation de couverture reprise du ch. 47 | |
| 15 | +CLM-40-014,40,Relation rho_S = (6/pi) arcsin(rho/2) pour le vecteur gaussien bivarié (identité classique),—,dérivable ; vérifiée numériquement (test_ch40 copule : ±0,01),2026-10-31,verifie,résultat mathématique standard sans citation | |
| 16 | +CLM-40-015,40,Théorème de décomposition de Hoeffding–Sobol et estimateurs par échantillons appariés (pick-freeze) ; variance de l'hypercube latin ≤ échantillonnage simple (asymptotiquement),—,résultats mathématiques standards ; démonstration donnée pour la décomposition ; références fondatrices vérifiées par DOI dans lib-ch40.bib (McKay–Beckman–Conover 1979 ; Sobol' 2001) mais NON citées (règle : clés de library.bib seulement),2026-10-31,verifie,à citer après fusion de lib-ch40.bib dans library.bib | |
| 17 | +CLM-40-016,40,Sous-additivité de la CVaR / non sous-additivité de la VaR (mesure cohérente),—,résultat standard ; références Artzner et al. 1999 et Rockafellar–Uryasev 2000 vérifiées par DOI dans lib-ch40.bib mais non citées,2026-10-31,verifie,idem | |
| 18 | +CLM-40-017,40,Excès de confiance des experts élicités (fourchettes trop étroites lorsque la valeur centrale est demandée d'abord),—,affirmation générale de la littérature d'élicitation sans citation,2026-10-31,non_verifie,à sourcer (p. ex. littérature d'élicitation structurée) ou à atténuer lors de l'harmonisation | |
| 19 | +CLM-40-018,40,Les quatre dossiers et toutes les lois (MC_LOIS) sont synthétiques ; paramètres de corrélation du portefeuille (0,30 ; 0,60) amortissement 480 mois et renouvellement +200 pb = hypothèses pédagogiques déclarées,data/synthetic/README.md,encadré synthetique + limites,2026-10-31,verifie, | |
| 20 | +CLM-40-019,40,Le ch. 47 §47.12 utilise la triangulaire pour la rotation et tire les intrants hors (r R_T) indépendamment,ch47.tex / ch47_dossier.py,lecture du code MC_LOIS et tirer(),2026-10-31,verifie, | |
added
verification/chapters/ch40-registry.csv
+5 −0
@@ -0,0 +1,5 @@ | ||
| 1 | +id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes | |
| 2 | +SRC-D-ch40-001,article,Comparison of Three Methods for Selecting Values of Input Variables in the Analysis of Output from a Computer Code (McKay Beckman Conover),Technometrics 21(2) 239-245 (Taylor & Francis),1979-05,https://doi.org/10.1080/00401706.1979.10489755 (métadonnées : https://api.crossref.org/works/10.1080/00401706.1979.10489755),2026-10-31,verifie,lib-ch40.bib (mckayBeckmanConover1979) — NON cité dans ch40.tex,référence fondatrice de l'hypercube latin ; page éditeur en 403 ; Crossref sans article initial « A » dans le titre | |
| 3 | +SRC-D-ch40-002,article,Global sensitivity indices for nonlinear mathematical models and their Monte Carlo estimates (Sobol'),Mathematics and Computers in Simulation 55(1-3) 271-280 (Elsevier),2001-02,https://doi.org/10.1016/S0378-4754(00)00270-6 (métadonnées : https://api.crossref.org/works/10.1016/S0378-4754(00)00270-6),2026-10-31,verifie,lib-ch40.bib (sobol2001) — NON cité,indices de Sobol et estimateurs Monte-Carlo | |
| 4 | +SRC-D-ch40-003,article,Coherent Measures of Risk (Artzner Delbaen Eber Heath),Mathematical Finance 9(3) 203-228 (Wiley),1999-07,https://doi.org/10.1111/1467-9965.00068 (métadonnées : https://api.crossref.org/works/10.1111/1467-9965.00068),2026-10-31,verifie,lib-ch40.bib (artznerDelbaenEberHeath1999) — NON cité,mesures de risque cohérentes (VaR non sous-additive) | |
| 5 | +SRC-D-ch40-004,article,Optimization of conditional value-at-risk (Rockafellar Uryasev),Journal of Risk 2(3) 21-41 (Risk.net),2000-04-01,https://doi.org/10.21314/JOR.2000.038,2026-10-31,verifie,lib-ch40.bib (rockafellarUryasev2000) — NON cité,CVaR ; page Risk.net lue (accès restreint ; métadonnées visibles) | |
added
verification/chapters/ch40.md
+40 −0
@@ -0,0 +1,40 @@ | ||
| 1 | +# Chapitre 40 — Monte-Carlo et stress tests — bilan de rédaction (2026-10-31) | |
| 2 | + | |
| 3 | +## Livrables | |
| 4 | +- `manuscript/chapters/ch40.tex` : ≈ 11 900 mots de prose (hors tableaux et équations), 8 sections (40.1 de la sensibilité à la simulation → 40.8 portefeuille) + exercices + « Pour aller plus loin » ; **21 équations numérotées** (dont 7 `align`), 1 définition, 2 propositions et 1 théorème avec démonstrations, 1 exemple intégral (cas 3 de bout en bout), **8 tableaux**, **7 figures**, encadrés `objectifs`, `synthetique`, `quebec`, `erreurs`, `limites`, `synthese`, **6 exercices** (niveaux 1-1-2-2-3-3). 16 clés bibliographiques citées, toutes déjà dans `references/library.bib`. | |
| 5 | +- `analysis/python/cases/ch40_montecarlo.py` : importe **sans les redéfinir** `MC_LOIS`, `R_T_PLANCHER`, `GRAINE` (20261031), `tirer`, `projeter_vectorise`, `valeur_vectorisee`, `monte_carlo`, `tornade` de `ch47_dossier.py` ; ajoute moments théoriques / quantiles / élicitation / bêta-PERT, Cholesky + copule gaussienne + corrélation r–R_T, erreur de Monte-Carlo (théorique vs 300 répétitions), convergence (suite de 100 000 tirages), écart-type empirique selon N, hypercube latin (`hypercube_latin`, `tirer_lhs`, `comparer_lhs`), VaR/CVaR, RCD₁ analytique, stress déterministes avec probabilité attachée, stress inversé (Brent), indices de Sobol S₁/S_T par échantillons appariés (centrage), corrélations de rang, régression standardisée, **`simuler_portefeuille`** (cas 4) et `comparer_structures_correlation`, exercices. Exécution ≈ 10 s (`--rapide` ≈ 2 s). | |
| 6 | +- `analysis/python/figures/ch40_figures.py` → `assets/figures/ch40/ch40-fig-{distribution,convergence,nuage,sobol,rcd,lhs,portefeuille}.pdf` (style `traite.style`, 135 mm ; à exécuter **sans** `--rapide` pour que les chiffres de la figure LHS coïncident avec le texte). | |
| 7 | +- `analysis/python/tests/test_ch40.py` : 15 tests — **vert** (`15 passed`, 1,3 s). Vérifient notamment : mêmes objets `MC_LOIS`/graine que ch47 ; médiane 2 191 607,87, q05 1 735 194,21, q95 2 876 902,35, P(RCD₁<1,20) 0,4936, P(RCD₁<1) 0 ; `evaluer()` = `monte_carlo()` tirage par tirage ; formules fermées des lois = scipy ; Cholesky/copule ; erreur type théorique vs empirique ; pente −1/2 ; LHS (une strate par point, P(RCD₁<1,20) exactement 0,5) ; VaR/CVaR ; RCD₁ affine ; stress et stress inversé ; Sobol ; corrélation intra/inter-RMR du modèle factoriel ; valeurs citées du portefeuille ; exercices. | |
| 8 | +- `solutions/ch40.tex` : 6 solutions détaillées (chiffres de `exercices()`). | |
| 9 | +- `verification/chapters/ch40-figures.csv` (7), `ch40-calculations.csv` (26), `ch40-claims.csv` (19), `ch40-registry.csv` (4 sources vérifiées, **non citées**), `references/lib-ch40.bib` (4 entrées vérifiées par DOI le 2026-10-31 : McKay–Beckman–Conover 1979, Sobol' 2001, Artzner et al. 1999, Rockafellar–Uryasev 2000 — proposées pour fusion ; le texte ne cite que des clés de `library.bib`). | |
| 10 | + | |
| 11 | +## Contrôles | |
| 12 | +- `tools/compile_chapter.sh 40` → `OK ch40 : 40 pages, 0 references/citations non definies, 0 overfull hbox`. | |
| 13 | +- `python3 -m pytest -q analysis/python/tests/test_ch40.py` → `15 passed`. | |
| 14 | +- `python3 tools/check_manuscript.py --no-log` : aucune remarque propre au ch. 40 autre que les 7 figures absentes du `verification/figures.csv` global (lignes fournies dans `ch40-figures.csv`, fusion par l'orchestrateur). | |
| 15 | +- Inspection visuelle (`pdftoppm -r 50/55`) des pages 1, 6, 9, 13, 17, 21, 27, 31 + pages des tableaux retouchés : tableaux dans la justification, figures à la largeur du texte, encadrés corrects. | |
| 16 | + | |
| 17 | +## Chiffres pivots (identiques au ch. 47 §47.12) | |
| 18 | +Cas 3, 10 000 tirages, graine 20261031 : médiane **2 191 608 $**, moyenne 2 233 506, écart-type 350 443 (CV 15,7 %), IC 90 % **[1 735 194 ; 2 876 902]**, P(V < V_cap) 30,9 %, P(V < 2 M$) 26,5 %, P(V < rôle) 51,2 %, **P(RCD₁ < 1,20) = 49,4 %** (exact 0,5), **P(RCD₁ < 1) = 0** (exact 2·10⁻⁵), P(RCD₆ < 1,20 | +200 pb) 1,4 %. | |
| 19 | +Nouveaux : erreur type (N = 10 000) médiane 4 135 $, q05 4 756 $, q95 10 621 $, moyenne 3 504 $ (empirique sur 300 graines : 4 277 / 4 654 / 10 862 / 3 590) ; **la graine 20261031 est une réalisation défavorable : médiane à z = −2,87 (rang 1/300 ; moyenne des médianes 2 203 873 $)** — déclaré dans le texte, graine conservée ; suite de 100 000 tirages : médiane 2 203 500, q05 1 744 070, q95 2 895 770 ; pente log-log −0,501 ; LHS (N = 1 000, 100 rép.) : variance de la moyenne ÷ 105, médiane ÷ 2,8, q05 ÷ 1,4, q95 ÷ 1,9 ; VaR₅ 473 372 $ (21,4 %), CVaR₅ 557 097 $ (25,2 %) ; corrélation r–R_T 0,781 (théorie = empirique), Spearman 0,769 vs 0,766 ; Sobol S₁ : r 0,528, g_m 0,248, δ 0,134, g_d 0,043, v 0,020, rotation 0,013, CAPEX 0,003 (somme 0,989 ; R² linéaire 0,955) ; stress : hausse des taux ch. 30 −11,8 % ↔ P 20,7 % ; 7 quantiles 90 % −33,7 % ↔ P 0,13 % ; stress inversé v = 13,33 % (RCD₁ = 1), r = 7,72 % (V = 2 M$), R_T = 5,62 % ou g_m = 2,33 % (V = V_cap). | |
| 20 | +Cas 4 (48 immeubles, 1 an, σ_R 50 pb, ρ_prov 0,30 / ρ_rmr 0,60) : référence 147 936 k$, σ_P 10 295 k$, VaR₅ 14 064 k$, CVaR₅ 17 389 k$, ratio de diversification 0,643 (0,201 indépendance ; 0,998 parfaite) ; E[n(RCD<1,20)] 10,2 et E[n(RCD<1)] 4,9 quelle que soit la corrélation (5 et 1 sans choc) ; avec σ_g = 10 % : q95(n<1) 8 / 10 / 11, P(n<1 > 10) 0 / 1,9 / 5,1 %. | |
| 21 | + | |
| 22 | +## Fonction réutilisable pour le ch. 48 | |
| 23 | +`ch40_montecarlo.simuler_portefeuille(pf, n=10_000, graine=20261031, sigma_R=0.005, rho_rmr=0.60, rho_prov=0.30, croissance=None, sigma_g_defaut=0.03, choc_taux_renouvellement=0.02, horizon_renouvellement=2028, amortissement_mois=480, seuil_rcd=1.20) -> dict` | |
| 24 | +- `pf` : `cas4_portefeuille.csv` (colonnes `id_immeuble, rmr, rne_2026, taux_global, valeur_2026, dette, taux_dette, echeance_dette`) ; `croissance` : sortie de `traite.cas4.croissance_rne(series)` (g_i et σ_g,i par immeuble) ; sinon g = 0 et σ_g = `sigma_g_defaut`. | |
| 25 | +- Modèle : ln RNE_i' = ln RNE_i + g_i + σ_g,i e_i ; R_i' = max(R_i + σ_R u_i, 2 %) ; V_i' = RNE_i'/R_i' ; e_i, u_i = √ρ_prov Z₀ + √(ρ_rmr − ρ_prov) Z_k(i) + √(1 − ρ_rmr) ε_i (facteurs indépendants pour RNE et taux) ⇒ Corr = ρ_rmr intra-RMR, ρ_prov inter-RMR (test : ±0,05). RCD_i = RNE_i'/SD_i avec `fin.Hypotheque(dette, taux (+choc si échéance ≤ horizon), amortissement)`. | |
| 26 | +- Retour : `valeurs` (n × N), `valeur_portefeuille`, `rne`, `rcd`, `service_dette`, `par_rmr` (écart-type de la valeur par RMR), `stats` (médiane, moyenne, écart-type, q05/q95, VaR05/CVaR05 vs valeur déterministe à un an, somme des écarts-types, `ratio_diversification`, `nb_rcd_sous_seuil_moyen/q95`, `nb_rcd_sous_1_moyen/q95`, `P_plus_de_10_sous_1`, `rcd_portefeuille_mediane`, comptages déterministes, `nb_renouvellements_stress`, `rpv_portefeuille`). | |
| 27 | +- `comparer_structures_correlation(pf, croissance, n, **kw)` : tableau indépendance / régionale / parfaite. Extensible à un troisième niveau de facteur (zone inondable, ch. 43). | |
| 28 | + | |
| 29 | +## Points non vérifiés / à harmoniser | |
| 30 | +1. CLM-40-017 (`non_verifie`) : affirmation générale sur l'excès de confiance des experts élicités (fourchettes trop étroites) — sans source ; à sourcer ou à atténuer. | |
| 31 | +2. CLM-40-011/013 (`partiellement_verifie`) : pourcentage TAL 3,1 % et couverture SCHL 2,4–6,3 % repris des ch. 30/47 sans relecture des sources dans ce chapitre. | |
| 32 | +3. Références fondatrices (LHS, Sobol, VaR cohérente, CVaR) vérifiées mais non citées (règle de collision) : après fusion de `lib-ch40.bib`, ajouter les `\parencite` aux §40.4, §40.5 et §40.6 (le texte dit « résultat classique » / « identité classique »). | |
| 33 | +4. Les hypothèses du portefeuille (ρ 0,30/0,60 ; amortissement 480 mois ; +200 pb sur les échéances ≤ 2028 ; σ_g,i estimé sur 2016-2026) sont pédagogiques et déclarées ; le ch. 48 devra les remplacer par des estimations ou les reprendre explicitement. Le ch. 48 (en cours de rédaction en parallèle) a sa propre figure `ch48-fig-montecarlo.pdf` : vérifier la cohérence des paramètres lors de l'harmonisation. | |
| 34 | +5. La **graine 20261031 est une réalisation défavorable** (z = −2,87 sur la médiane) : le chapitre le déclare et explique pourquoi on ne change pas de graine ; l'orchestrateur peut décider d'harmoniser la formulation du ch. 47 (« médiane 2 191 608 $ » → ajouter « erreur type ≈ 4 100 $ »). | |
| 35 | +6. `verification/figures.csv`, `calculations.csv`, `claims.csv`, `sources/registry.csv`, `library.bib` globaux **non modifiés** (fichiers par chapitre fournis). | |
| 36 | + | |
| 37 | +## Suggestions d'harmonisation | |
| 38 | +- Ch. 47 §47.12 : mentionner l'erreur de Monte-Carlo (4 100 $ sur la médiane, 0,5 point sur les probabilités) et renvoyer à `\cref{sec:40:erreur}` ; la probabilité exacte P(RCD₁<1,20) = 0,5 (prêt calibré au seuil = médiane de v) peut y être signalée. | |
| 39 | +- Ch. 30 §30.6 : la tornade du ch. 30 utilise des bornes hétérogènes (±50 pb, ±25 pb, 2,5/4,5 %…), celle du ch. 47 des quantiles 10-90 homogènes ; le ch. 40 explique la différence de classement (croissances vs taux) par ce choix de bornes — un renvoi croisé explicite dans le ch. 30 serait utile. | |
| 40 | +- Glossaire : ajouter « hypercube latin », « indice de Sobol », « VaR / CVaR de valeur », « copule gaussienne », « stress test inversé », « ratio de diversification ». | |
added
verification/chapters/ch41-calculations.csv
+14 −0
@@ -0,0 +1,14 @@ | ||
| 1 | +id,chapitre,description,script,test,resultat_attendu,resultat_obtenu,statut,date | |
| 2 | +CALC-41-001,41,"Coûts du cas 1 repris du ch. 21 : D, I, C_N ; D+I par m² habitable ; ratio IPCB plex/maison T3 2026 ; D+I/m² plex",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_couts_ch21,"298 826 $ ; 62 599 $ ; 397 567 $ ; 2 190,45 $/m² ; 1,0172 ; 2 228,06 $/m²","298 826 $ ; 62 599 $ ; 397 567 $ ; 2 190,45 $/m² ; 1,0172 ; 2 228,06 $/m²",verifie,2026-10-31 | |
| 3 | +CALC-41-002,41,"Prix de sortie (modèle hédonique cas 1, âge 0, Duan) : sujet 637 953 ; U 720 727 ; D 550 726 → 495 654 (×0,90), GDV 991 307 ; T 480 573 → 408 487 (×0,85), GDV 1 225 460 ; Q GDV 1 371 384",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_prix_sortie,"637 953 ; 720 727 ; 495 654 ; 991 307 ; 408 487 ; 1 225 460 ; 1 371 384","637 953 ; 720 727 ; 495 654 ; 991 307 ; 408 487 ; 1 225 460 ; 1 371 384",verifie,2026-10-31 | |
| 4 | +CALC-41-003,41,"Tests légal et physique (zone fictive H-2f) : logements admissibles 3 ; aire max 372 m² ; aires brutes 194/282/353/400 ; Q non permis ; empreinte 256 m²",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestQuatreTests,"3 ; 372 ; 194/282/353/400 ; Q non permis","3 ; 372 ; 194/282/353/400 ; Q non permis",verifie,2026-10-31 | |
| 5 | +CALC-41-004,41,"Résidu de développement, convention promoteur (frais 4 %, marge 15 % GDV, parcs 10 %, prêt 75 % à 6,19 %, portage 6,19 %) : V_L U/D/T/Q ; reste, F, marge, frais ; statique T ; parcs T",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_valeurs_citees_promoteur,"158 849 / 190 541 / 229 265 / 244 935 $ ; T : reste 275 967, F 18 239, marge 183 819, frais 49 018 ; statique 250 879 ; parcs 22 927","158 849 / 190 541 / 229 265 / 244 935 $ ; T : reste 275 967, F 18 239, marge 183 819, frais 49 018 ; statique 250 879 ; parcs 22 927",verifie,2026-10-31 | |
| 6 | +CALC-41-005,41,"Convention construction sur commande (marge 10 % des coûts, sans frais ni parcs) : V_L U/D/T ; marge U",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_valeurs_citees_occupant,"266 187 / 330 792 / 399 479 $ ; 39 824 $","266 187 / 330 792 / 399 479 $ ; 39 824 $",verifie,2026-10-31 | |
| 7 | +CALC-41-006,41,"Triplex vendu en bloc au prix par logement des triplex du cas 2 (traite.cas2) : 281 000 $ ; GDV 843 000 $ ; reste négatif ; V_L −28 102 $",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_en_bloc_cas2,"281 000 ; 843 000 ; −28 102","281 000 ; 843 000 ; −28 102",verifie,2026-10-31 | |
| 8 | +CALC-41-007,41,"Identités : reste = GDV − frais − C − D − F − M ; V_L(1+τ)(1+r)^T = reste ; parcs = τ V_L ; F = L·i·T_eff/2 ; forme linéaire a·GDV − b ; version statique = ch08.valeur_residuelle_redeveloppement",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_identites ; ::test_version_statique_egale_ch08,identités à 1e-10,identités à 1e-10,verifie,2026-10-31 | |
| 9 | +CALC-41-008,41,"Conclusions PHMU : terrain vacant U (promoteur seul : T) ; bien amélioré S0 ; contribution du bâtiment 323 000 $ ; seuils GDV triplex 1 776 390 $ (+45,0 %) et 1 296 396 $ (+5,8 %)",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_seuils_et_conclusion,"U ; S0 ; 323 000 ; 1 776 390 (+45,0 %) ; 1 296 396 (+5,8 %)","U ; S0 ; 323 000 ; 1 776 390 (+45,0 %) ; 1 296 396 (+5,8 %)",verifie,2026-10-31 | |
| 10 | +CALC-41-009,41,"Sensibilité V_L triplex : prix ±15 % 105 569/352 962 ; coût ±10 % 286 246/172 285 ; marge 10/20 % 280 169/178 362 ; durée 12/24 mois 241 459/217 582 ; taux 5/7,5 % 236 137/221 939 ; parcs 0 % 252 192 ; frais 2/6 % 249 627/208 904",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_sensibilite_citee,voir description,voir description,verifie,2026-10-31 | |
| 11 | +CALC-41-010,41,"Arbre binomial (σ 10 %, Δt 5 ans, r 2 %, y 4,5 %) : u 1,2506 ; d 0,7996 ; Φ 0,8860 ; q 0,1915 ; disc 0,9057 ; a 0,6729 ; b 1 195 378 ; nœuds GDV 1 532 535 / 979 914 / 1 916 556 / 1 225 460 / 783 568 ; exercice uu 94 322 ; continuation t1 16 357 ; prime 2 837 (0,47 %) ; frontière t1 1 874 959",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestOption,voir description,voir description,verifie,2026-10-31 | |
| 12 | +CALC-41-011,41,"Sensibilité de la prime (V_act 600/450/300 k$ × σ 5/10/15/20/25 %) : 0/2 837/21 420/47 939/77 556 ; 0/7 348/29 116/59 015/95 946 ; 0/23 568/58 416/95 247/132 208",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestOption::test_sensibilite_option,voir description,voir description,verifie,2026-10-31 | |
| 13 | +CALC-41-012,41,"Capozza–Helsley (R_A 27 000 ; R_T 55 146 ; C 716 656 ; g 551 ; σ 5 515 ; r 4,5 %) : α 3,92e-5 ; seuil certitude 59 250 (+7,4 %) ; prime 13 249 ; R* 72 498 (+31,5 %) ; limite σ→0 et racine de l'équation caractéristique",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestCapozzaHelsley,voir description,voir description,verifie,2026-10-31 | |
| 14 | +CALC-41-013,41,"Solutions des exercices : ex2 670 555 / 821 400 ; ex3 F 32 033, V_L 407 908, statique 459 970, élasticité 2,88 ; ex5 u 1,3985, q 0,2815, américaine 45 636, européenne 37 007, nœud haut 178 960 > 145 121 ; ex6 α 5,79e-5, prime 9 266, R* 57 266 ; ex7 183 529/223 981/269 989, seuil 1 280 327 (+4,5 %), primes 14 897 / 47 091",analysis/python/cases/ch41_phmu.py ; analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch41.py::TestExercices,voir description,voir description,verifie,2026-10-31 | |
added
verification/chapters/ch41-claims.csv
+22 −0
@@ -0,0 +1,22 @@ | ||
| 1 | +id,chapitre,affirmation,source_id,verification,date,statut,notes | |
| 2 | +CLM-41-001,41,"Définition de la PHMU et ordre des quatre tests (légalement permis, physiquement possible, financièrement faisable, maximalement productif) selon l'Appraisal Institute (16e éd., 2026)",SRC-D-001,notes-D.md ; ch08.tex (même formulation) ; ouvrage non ouvert à la page,2026-10-31,partiellement_verifie,"Paraphrase, aucune citation textuelle ; l'ouvrage protégé n'est pas reproduit" | |
| 3 | +CLM-41-002,41,"IVS 102, annexe A90.01 : « Highest and best use is the use, from a participant perspective, that would produce the highest value for an asset » (traduction de l'auteur)",SRC-C-053,sources/normes-C.csv N-C-053 ; notes-C.md §1.2 (IVS 2025 en vigueur depuis le 31 janvier 2025),2026-10-31,verifie, | |
| 4 | +CLM-41-003,41,"LFM art. 43 par. 2° : la valeur réelle tient compte de « l'utilisation qui peut le plus probablement en être faite »",SRC-B-001,notes-B.md §ch. 41 ; LégisQuébec F-2.1 à jour au 15 oct. 2026,2026-10-31,verifie, | |
| 5 | +CLM-41-004,41,"LFM art. 46 al. 1 à 3 : utilisation la plus probable à la date de référence ; après un événement de l'art. 174 celle « qui découle de l'état de l'unité » ; l'état comprend la situation juridique ; art. 174 par. 19° : changement de restriction juridique = motif de modification du rôle",SRC-B-001,notes-B.md §ch. 41 et §ch. 8,2026-10-31,verifie, | |
| 6 | +CLM-41-005,41,"LAU art. 117.4 : contribution pour fins de parcs plafonnée à 10 % de la superficie et de la valeur du site ; art. 117.1-117.4 réécrits par LQ 2023, c. 12 (sanctionnée le 1er juin 2023)",SRC-B-038;SRC-B-039,notes-B.md §ch. 8 ; ch08-registry.csv SRC-08-001,2026-10-31,verifie, | |
| 7 | +CLM-41-006,41,"LAU art. 145.1 : dérogation mineure exclue pour l'usage et la densité ; art. 145.36 : PPCMOI ; art. 145.30.1 : règlement d'inclusion (logement abordable, social ou familial) ; art. 113, 115, 118 : zonage, lotissement, construction",SRC-B-038,notes-B.md §ch. 8 ; normes-B.csv NRM-B-064 à 074,2026-10-31,verifie, | |
| 8 | +CLM-41-007,41,"LPTAA art. 26 : interdiction d'utiliser un lot à une fin autre que l'agriculture sans autorisation de la CPTAQ",SRC-B-040,notes-B.md §ch. 25 et 41,2026-10-31,verifie, | |
| 9 | +CLM-41-008,41,"LQE art. 31.53-31.54 : changement d'utilisation d'un terrain contaminé subordonné à l'approbation d'un plan de réhabilitation",SRC-B-001,notes-B.md §ch. 41 (« contraintes de développement vérifiées ») ; texte des articles non relu pour ce chapitre,2026-10-31,partiellement_verifie,"Formulation générale ; le ch. 43 détaille" | |
| 10 | +CLM-41-009,41,"Zones inondables (cadre en vigueur depuis le 1er mars 2026) : construction neuve d'une résidence interdite dans les classes très élevée, élevée et modérée",SRC-B-038,notes-B.md §43.2 ; encadré du ch. 8 (Québec.ca « Réaliser des travaux », màj 14 juill. 2026),2026-10-31,verifie,"Renvoi au ch. 43 ; règles détaillées par classe non extraites" | |
| 11 | +CLM-41-010,41,"Laroda 2025 CSC 44 : cession excédentaire pour fins de parcs analysée comme réserve de terrains ouvrant droit à une indemnité fondée sur la valeur marchande",SRC-B-039,notes-B.md §ch. 8 (« cause en bref ») ; arrêt non lu en texte intégral,2026-10-31,partiellement_verifie, | |
| 12 | +CLM-41-011,41,"Titman (1985) : modèle binomial des terrains urbains sous incertitude ; l'incertitude accroît la valeur des terrains laissés vacants et réduit la construction",SRC-D-001,notes-D.md §ch. 41 ; Crossref/IDEAS (référence vérifiée) ; résumé de l'article d'après la connaissance de l'auteur,2026-10-31,partiellement_verifie,"Résultat résumé sans relecture du texte intégral" | |
| 13 | +CLM-41-012,41,"Quigg (1993) : prix des terrains de Seattle incorporant une prime d'attente d'environ 6 % en moyenne par rapport à la valeur de développement immédiat",SRC-D-001,notes-D.md §ch. 25 (« prime d'attente ≈ 6 % ») ; DOI vérifié,2026-10-31,partiellement_verifie,"Chiffre tel que rapporté dans notes-D ; texte intégral non relu" | |
| 14 | +CLM-41-013,41,"Capozza et Helsley (1990) : rente brownienne ; conversion au seuil R* ; décomposition du prix du terrain en valeur d'usage, coût de conversion, prime de croissance et prime d'irréversibilité ; l'incertitude retarde la conversion et élève le prix des terrains",SRC-D-001,notes-D.md §ch. 25 et 41 ; DOI vérifié ; dérivation refaite dans le chapitre (version simplifiée, non attribuée mot à mot),2026-10-31,partiellement_verifie,"La formule (41.15) est dérivée dans le texte ; sa correspondance exacte avec la notation de l'article n'a pas été vérifiée" | |
| 15 | +CLM-41-014,41,"Dye et McMillen (2007) : probabilité de démolition croissante avec le rapport valeur du terrain/valeur totale ; prix des teardowns insensibles au bâtiment. McMillen et O'Sullivan (2013) : coefficients hédoniques du bâtiment → 0 avec la probabilité de démolition. Rosenthal et Helsley (1994) : teardowns de Vancouver et gradient de prix des terrains",SRC-D-001,notes-D.md §ch. 8, 25 et 41 ; DOI vérifiés,2026-10-31,partiellement_verifie,"Résultats résumés sans relecture des textes intégraux" | |
| 16 | +CLM-41-015,41,"Clapp et Salavei (2010) : variable d'option de redéveloppement dans le modèle hédonique ; Clapp, Bardos et Wong (2012) : estimation empirique de la prime d'option de redéveloppement résidentiel ; Cunningham (2006), Munneke (1996), Munneke et Womack (2020) : résultats résumés",SRC-D-001,notes-D.md §ch. 41 ; DOI vérifiés,2026-10-31,partiellement_verifie, | |
| 17 | +CLM-41-016,41,"Cox, Ross et Rubinstein (1979), Journal of Financial Economics 7(3), 229-263 : paramétrisation u = e^{σ√Δt} des arbres binomiaux",SRC-41-001,API Crossref (DOI 10.1016/0304-405X(79)90015-1) le 2026-10-31 ; référence non citée par clé (absente de library.bib), ajoutée à lib-ch41.bib,2026-10-31,verifie, | |
| 18 | +CLM-41-017,41,"APCIQ T3 2026 RMR Gatineau : médiane unifamiliale Hull 475 000 $ ; copropriété RMR 297 450 $",SRC-E-002,notes-E.md §ch. 4 et 15,2026-10-31,verifie, | |
| 19 | +CLM-41-018,41,"IPCB Montréal T3 2026 (18-10-0289-01, 2023 = 100) : maison individuelle 116,5 ; immeuble d'appartements < 5 étages 118,5 ; ratio 1,0172",SRC-E-017,notes-E.md §ch. 23 ; ch23.tex (même ratio),2026-10-31,verifie, | |
| 20 | +CLM-41-019,41,"Taux hypothécaire affiché 5 ans, prêt conventionnel : 6,19 % au 28 octobre 2026 (Banque du Canada, série V80691335)",SRC-E-017,notes-E.md §ch. 31 ; ch23.tex et analysis/python/cases/ch23_structure_couts.py (data/raw/bdc_valet/V80691335.csv),2026-10-31,verifie,"Source E : BdC Valet (data/raw/bdc_valet/)" | |
| 21 | +CLM-41-020,41,"Taux de capitalisation multirésidentiel faible hauteur, Montréal T3 2026 (CBRE) : 4,25-4,75 % → hypothèse y = 4,5 % pour le rendement de détention",SRC-E-017,notes-E.md §ch. 29 ; utilisé comme ordre de grandeur déclaré,2026-10-31,verifie,"Hypothèse pédagogique dérivée d'une donnée d'industrie ; aucun taux publié pour Gatineau" | |
| 22 | +CLM-41-021,41,"Hypothèses déclarées sans source : zone fictive H-2f ; décotes de copropriété 10/15/20 % ; frais de vente 4 % ; marge 15 % GDV ; démolition 30 000 $ ; prêt 75 % ; durées 12/15/18 mois ; σ 10 %/an ; r réel 2 % ; Δt 5 ans ; g = 1 % et σ = 10 % de la rente (Capozza–Helsley)",—,Déclarées comme hypothèses pédagogiques dans l'encadré synthétique, le texte et les limites,2026-10-31,non_verifie,"Aucune prétention empirique ; sensibilité fournie" | |
added
verification/chapters/ch41-figures.csv
+6 −0
@@ -0,0 +1,6 @@ | ||
| 1 | +fichier,chapitre,script,donnees,type_donnees,legende_courte,statut | |
| 2 | +manuscript/chapters/ch41.tex (TikZ fig:41:arbre),41,manuscript/chapters/ch41.tex,aucune,schema,"Arbre de décision des quatre tests de la PHMU (légal, physique, financier, productif) et conclusion terrain vacant / bien amélioré",verifie | |
| 3 | +ch41/ch41-fig-residuel-densite.pdf,41,analysis/python/figures/ch41_figures.py,"analysis/python/cases/ch41_phmu.py (cas 1 : data/synthetic/cas1_gatineau_*.csv/json ; devis ch21 ; IPCB 18-10-0289-01)",synthetique,"Valeur résiduelle du terrain de 620 m² selon le nombre de logements (1 à 4) pour trois niveaux de prix, prix du marché des terrains 277 000 $, maison sur commande 266 187 $, quadruplex non permis [données synthétiques]",verifie | |
| 4 | +ch41/ch41-fig-surface-prix-cout.pdf,41,analysis/python/figures/ch41_figures.py,analysis/python/cases/ch41_phmu.py (triplex, convention promoteur),synthetique,"Surface de la valeur résiduelle du triplex selon la variation du prix des unités (−20 à +55 %) et du coût (±20 %) ; isovaleurs 0, 277 000 $ et 600 000 $ [données synthétiques]",verifie | |
| 5 | +manuscript/chapters/ch41.tex (TikZ fig:41:binomial),41,manuscript/chapters/ch41.tex,analysis/python/cases/ch41_phmu.py (fonction option_redeveloppement ; valeurs typées et testées par test_ch41.py::TestOption),synthetique,"Arbre binomial à deux périodes de 5 ans pour l'option de redéveloppement en triplex : GDV, exercice, continuation par nœud ; prime 2 837 $ [données synthétiques / hypothèses]",verifie | |
| 6 | +ch41/ch41-fig-frontiere-option.pdf,41,analysis/python/figures/ch41_figures.py,analysis/python/cases/ch41_phmu.py (fonctions option_redeveloppement et frontiere_exercice_t1),synthetique,"(a) Prime de l'option selon σ pour trois valeurs en usage ; (b) frontière d'exercice à t = 1 et seuil de la VAN rapportés au produit actuel [données synthétiques / hypothèses]",verifie | |
added
verification/chapters/ch41-registry.csv
+3 −0
@@ -0,0 +1,3 @@ | ||
| 1 | +id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes | |
| 2 | +SRC-41-001,article,"Cox, Ross & Rubinstein (1979), « Option Pricing: A Simplified Approach », Journal of Financial Economics 7(3), 229-263",Elsevier / Crossref,1979,https://api.crossref.org/works/10.1016/0304-405X(79)90015-1,2026-10-31,verifie,41,"Métadonnées Crossref lues par WebFetch (titre, auteurs, revue, volume, numéro, pages, année). Entrée ajoutée à references/lib-ch41.bib ; nommée en toutes lettres dans ch41.tex, non citée par clé." | |
| 3 | +SRC-41-002,donnees_synthetiques,"Exemple intégral du ch. 41 : programmes, prix de sortie (modèle hédonique cas 1), résidus, arbre binomial, Capozza–Helsley",Auteur (analysis/python/cases/ch41_phmu.py),"2026-10-31 ; cas 1 graine 20261031",analysis/python/cases/ch41_phmu.py,2026-10-31,verifie,41,"Zonage fictif H-2f ; hypothèses déclarées (dictionnaires GRILLE, HYP, HYP_OCCUPANT, PROGRAMMES, OPTION) ; aucune donnée réelle hors IPCB (SRC-E-017) et taux BdC V80691335 ; vérifié par test_ch41.py (28 tests)." | |
added
verification/chapters/ch41.md
+40 −0
@@ -0,0 +1,40 @@ | ||
| 1 | +# Chapitre 41 — Plus haute et meilleure utilisation, terrains et développement : bilan de rédaction (2026-10-31) | |
| 2 | + | |
| 3 | +## Compteurs | |
| 4 | +- Prose : ≈ 10 970 mots hors tableaux, figures et équations (≈ 14 700 avec la regex brute) ; 39 pages compilées (chapitre + solutions + bibliographie du chapitre). | |
| 5 | +- Figures : 5 — 3 PDF Matplotlib (`ch41-fig-residuel-densite.pdf`, `ch41-fig-surface-prix-cout.pdf`, `ch41-fig-frontiere-option.pdf`, script unique `analysis/python/figures/ch41_figures.py`) + 2 TikZ dans le `.tex` (arbre de décision des quatre tests ; arbre binomial à deux périodes avec les valeurs du script). | |
| 6 | +- Tableaux : 7 (quatre tests ; intrants et provenance ; grille fictive H-2f et vérification des programmes ; prix de sortie et coûts ; méthode résiduelle pour U/D/T sous deux conventions ; sensibilité V_L triplex ; sensibilité de la prime d'option σ × V_act). | |
| 7 | +- Équations numérotées : 15 (max sur les usages ; bien amélioré ; contribution du bâtiment ; teardown ; résiduel avec calendrier ; forme linéaire ; seuil ; levier ; payoff ; u/d ; q ; récurrence binomiale ; Bellman ; équation caractéristique ; seuil de Capozza–Helsley) ; 1 définition, 2 propositions avec démonstration, 1 exemple intégral. | |
| 8 | +- Exercices : 7 (niveaux 1, 1, 2, 2, 2, 3, 3) ; solutions détaillées dans `solutions/ch41.tex`, chiffres testés (`TestExercices`). | |
| 9 | +- Encadrés : objectifs, 2 × quebec (LFM art. 43/46 ; cadre québécois de l'analyse de développement), synthetique, exemple, erreurs, limites, synthese. | |
| 10 | +- Citations : 24 clés, toutes déjà dans `library.bib` (appraisal2026, appraisalCdn, aiDictionary2022, ivs2025, lfm, lau, lptaa, lqe, loi2023c12, laroda2025, apciqgatineaut32026, statcanIPCB, bdcvalet, ccqSalaires, titman1985, capozzaHelsley1989, capozzaHelsley1990, quigg1993, cunningham2006, clappSalavei2010, clappBardosWong2012, munneke1996, munnekeWomack2020, rosenthalHelsley1994, dyeMcmillen2007, mcmillenOsullivan2013, byrne1996, geltnerMillerClaytonEichholtz2014, glaeserGyourko2005). `lib-ch41.bib` : 1 entrée nouvelle vérifiée (`coxRossRubinstein1979`, Crossref), nommée en toutes lettres dans le texte, non citée par clé. | |
| 11 | + | |
| 12 | +## Contrôles | |
| 13 | +- `tools/compile_chapter.sh 41` → `OK ch41 : 39 pages, 0 references/citations non definies, 0 overfull hbox`. (Un premier essai a échoué sur un `\newlabel` tronqué d'un fichier `.aux` d'un autre chapitre en cours de compilation par un agent parallèle — `tools/make_labels.py` lit `build/ch*/_wrap_ch*.aux` ; le second essai a réussi. Suggestion : rendre `make_labels.py` tolérant aux `\newlabel` aux accolades non équilibrées.) | |
| 14 | +- `python3 -m pytest -q analysis/python/tests/test_ch41.py` → 28 passed. | |
| 15 | +- PDF relu : planches de contact des 39 pages + pages 18, 19 et 21 à 85 ppp (tableaux résiduels, conclusions, arbre binomial TikZ) : aucun débordement, cellules décimales corrigées (`{1,00}` hors `S`). | |
| 16 | +- Convention `\cref` sans article : respectée (« le \cref », « la \cref », « du \cref », « l'\cref{eq:…} », « au \cref »). | |
| 17 | +- `tools/check_manuscript.py --no-log` non exécuté (hors consigne de ce lot ; les CSV sont ceux du chapitre, pas les globaux). | |
| 18 | + | |
| 19 | +## Chiffres clés (tous reproduits par `analysis/python/cases/ch41_phmu.py`) | |
| 20 | +- Intrants : V_act 600 000 $ (ch. 20), V_L marché 277 000 $ (ch. 24/25), D+I 2 190,45 $/m² (ch. 21) → 2 228,06 $/m² plex (IPCB 118,5/116,5) ; prix de sortie par le modèle hédonique du cas 1 (âge 0) avec décotes déclarées : U 720 727 $, D 2 × 495 654 $, T 3 × 408 487 $. | |
| 21 | +- Résidus (promoteur-marchand) : U 158 849 $, D 190 541 $, T 229 265 $ (statique 250 879 $) ; construction sur commande : U 266 187 $ ; triplex en bloc au prix/logement du cas 2 (281 000 $) : résidu négatif. | |
| 22 | +- PHMU terrain vacant : unifamiliale (U) ; PHMU bien amélioré : maintien (contribution du bâtiment 323 000 $) ; hausse de prix requise pour la démolition en triplex : +45,0 %. | |
| 23 | +- Option (binomial 2 × 5 ans, σ 10 %, r 2 %, y 4,5 %) : u 1,2506, q 0,1915, prime 2 837 $ (0,47 %) ; frontière t = 1 : 1 874 959 $ ; sensibilité σ × V_act fournie. | |
| 24 | +- Capozza–Helsley : seuil certitude 59 250 $ (+7,4 %), prime d'irréversibilité 13 249 $, R* 72 498 $ (+31,5 %). | |
| 25 | + | |
| 26 | +## Réutilisation de la bibliothèque | |
| 27 | +`traite.cas1` (hedonique, predire, sujet_df), `traite.cas2` (comparables_plex, indicateurs_marche), `traite.finance` (interets_intermediaires, marge_sur_prix, marge_sur_cout), `ch21_cout_neuf` (charger, cout_neuf_sujet), `ch08_zonage` (densite_admissible, prime_option, valeur_residuelle_redeveloppement — égalité testée avec la version statique de ch41). `traite/*.py` inchangé. Rien n'a été écrit dans les CSV globaux de `verification/`, dans `sources/registry.csv` ni dans `library.bib`. | |
| 28 | + | |
| 29 | +## Points non vérifiés ou partiellement vérifiés (voir ch41-claims.csv) | |
| 30 | +1. Définition et ordre des quatre tests attribués à l'Appraisal Institute (16e éd.) : paraphrase, ouvrage non ouvert à la page (CLM-41-001). | |
| 31 | +2. Résultats empiriques résumés de la littérature (Titman 1985, Quigg 1993 « ≈ 6 % », Capozza–Helsley 1990, Dye–McMillen 2007, McMillen–O'Sullivan 2013, Rosenthal–Helsley 1994, Clapp et al., Cunningham, Munneke) : références vérifiées (DOI), textes intégraux non relus ; la formule (41.15) est dérivée dans le chapitre comme « version simplifiée » et non attribuée mot à mot (CLM-41-011 à 015). | |
| 32 | +3. LQE 31.53-31.54 et Laroda 2025 CSC 44 : d'après notes-B, textes non relus (CLM-41-008, 010). | |
| 33 | +4. Toutes les hypothèses de l'exemple (zonage fictif, décotes, frais de vente, marge, démolition, durées, volatilité, taux réel, rendement de détention) sont déclarées `non_verifie` par nature (CLM-41-021) et encadrées par l'analyse de sensibilité. | |
| 34 | +5. Aucun barème public de coût multilogement : transposition du devis unifamilial par ratio IPCB (déclaré, comme au ch. 23). | |
| 35 | + | |
| 36 | +## Suggestions pour l'harmonisation | |
| 37 | +- Les fonctions `residuel_developpement`, `option_redeveloppement`, `frontiere_exercice_t1` et `seuil_capozza_helsley` (ch41) et `valeur_residuelle_redeveloppement`/`prime_option` (ch08) sont candidates à un module `traite/developpement.py` ; le ch. 42 (conversion : valeur en bloc vs à la pièce) et le ch. 45 (cas 1 complet) peuvent les réutiliser. | |
| 38 | +- Le ch. 45 devrait reprendre la conclusion de PHMU de ce chapitre (terrain vacant : unifamiliale ; amélioré : maintien ; option ≈ 0,5 %) et citer `\cref{sec:41:exemple}` ; le ch. 20 arrondit déjà la valeur à 600 000 $, ce qui absorbe la prime. | |
| 39 | +- Si `library.bib` intègre `coxRossRubinstein1979`, remplacer la mention en toutes lettres (§41.4.2) par `\textcite{coxRossRubinstein1979}` et l'ajouter à « Pour aller plus loin ». | |
| 40 | +- Le tableau 1.PHMU du ch. 1 (résidus hypothétiques 170/160/140 k$) et le présent exemple vont dans le même sens (unifamiliale la plus productive) ; un renvoi croisé du ch. 1 vers §41.5 serait utile. | |
modified
verification/chapters/ch44-claims.csv
+2 −0
@@ -25,3 +25,5 @@ CLM-44-023,44,"Hypothèses pédagogiques de l'exemple : consommation 22 000 kWh | ||
| 25 | 25 | CLM-44-024,44,"Coût d'une rénovation complète cuisine + 2 salles de bain : 65 000 $ ; un échelon de qualité (3→4) représente une telle rénovation",,"hypothèse pédagogique déclarée (sec:44:paires)",2026-10-31,non_verifie,Ratio de récupération 0,57-0,62 conditionnel à cette hypothèse |
| 26 | 26 | CLM-44-025,44,"Knight & Sirmans 1996 ; Harding, Rosenthal & Sirmans 2007 : l'entretien et la rénovation ralentissent la dépréciation sans l'annuler",SRC-D-001,"notes-D.md §ch. 24 et 44 ; articles non relus dans ce lot",2026-10-31,partiellement_verifie,Formulation qualitative seulement |
| 27 | 27 | CLM-44-026,44,"IPCB Montréal, bâtiments résidentiels : +8,6 % T3 2026 / T3 2025 (18-10-0289-01)",SRC-E-040,"notes-E.md §ch. 23 ; clé statcanIPCB",2026-10-31,verifie, |
| 28 | +CLM-44-027,44,"TAL, pourcentages applicables 2026 : dépenses en immobilisations 4,0 % (2025 : 4,7 %) ; exemple 20 000 $ → ≈ 800 $/an, 67 $/mois",SRC-E-048,"notes-E.md §ch. 28 ; clé talIndices2026 (page consultée le 2026-10-31)",2026-10-31,verifie,"Mécanisme détaillé au ch. 34 ; le calcul 20 000 × 4,0 % est une illustration" | |
| 29 | +CLM-44-028,44,"Écart entre performance théorique (étiquette, calcul normalisé) et consommation mesurée : les logements mal cotés consomment souvent moins que prévu et les logements bien cotés davantage",,"affirmation qualitative de la littérature technique (effet de rebond / « prebound ») ; aucune référence du dépôt",2026-10-31,non_verifie,"Formulée sans chiffre ; à sourcer lors de l'harmonisation (p. ex. Sunikka-Blank & Galvin 2012) si une entrée vérifiée est ajoutée" | |
added
verification/chapters/ch44.md
+50 −0
@@ -0,0 +1,50 @@ | ||
| 1 | +# Chapitre 44 — Rénovation et efficacité énergétique : bilan de rédaction (2026-10-31) | |
| 2 | + | |
| 3 | +## Compteurs | |
| 4 | +- Prose : ≈ 9 400 mots hors tableaux, figures et légendes (≈ 12 600 mots bruts dans `manuscript/chapters/ch44.tex`) ; 38 pages compilées (chapitre + solutions + bibliographie du chapitre). | |
| 5 | +- Figures : 5 — 4 PDF Matplotlib (`ch44-fig-prime-verte.pdf` : fourchettes publiées + repères du cas 1 ; `ch44-fig-flux.pdf` ; `ch44-fig-heatmap-van.pdf` : VAN × taux × croissance du prix, courbe VAN = 0 ; `ch44-fig-capitalisation.pdf` : quatre lectures + 30 paires) et 1 schéma TikZ (frise 2021–2027 des programmes et du Code). | |
| 6 | +- Tableaux : 8 (taxonomie des travaux ; composantes du sujet en fin de vie ; prime verte par étude ; programmes au 31 oct. 2026 ; hypothèses ; indicateurs des mesures ; VAN × durée × taux ; quatre lectures de la contribution). | |
| 7 | +- Équations numérotées : 10 (contribution ; capitalisation ; hédonique avec étiquette ; facture tarif D ; économie ; flux ; VAN ; annuité ; coût de l'énergie économisée ; interaction). | |
| 8 | +- Exercices : 7 (niveaux 1, 1, 2, 2, 2, 3, 3) ; solutions détaillées dans `solutions/ch44.tex`, chiffres testés (`TestExercices`). | |
| 9 | +- Encadrés : objectifs, quebec (×2 : licence/garantie/déclarations ; étiquetage/Code/mazout), pratique (×2 : données à demander ; rédiger la section rénovations), synthetique, exemple intégral (6 étapes), erreurs, limites, synthese. | |
| 10 | +- Citations : 33 clés, toutes dans `references/library.bib` ; `references/lib-ch44.bib` ne contient aucune entrée (commentaire). Sources web revérifiées pour le chapitre : `ch44-registry.csv` (SRC-44-001 à 009). | |
| 11 | + | |
| 12 | +## Contrôles | |
| 13 | +- `tools/compile_chapter.sh 44` → `OK ch44 : 38 pages, 0 references/citations non definies, ≤ 4 overfull hbox` (les 3 restants sont dans la bibliographie générée — URL de RNCan et petites capitales — et 1 de 1 pt dans le tableau des indicateurs). | |
| 14 | +- `python3 -m pytest -q analysis/python/tests/test_ch44.py` → 22 passed ; test_ch11, test_ch21, test_ch24 et test_cas1 toujours verts. | |
| 15 | +- `python3 tools/check_manuscript.py --no-log` : aucune remarque pour ch44 (figures présentes ; inscrites dans `ch44-figures.csv` selon la règle de collision). | |
| 16 | +- PDF relu : planche de contact des 38 pages + pages 3, 8, 9, 12, 13, 18, 19, 22 à 60 dpi ; tableaux larges redimensionnés (`tabularx` avec `\hsize`), frise TikZ ramenée dans la justification. | |
| 17 | +- Convention `\cref` sans article : articles/prépositions écrits dans le texte, vérifiés par grep. | |
| 18 | +- Renvois fins vers d'autres chapitres compilés : `eq:24:curabilite`, `eq:24:ventilee`, `tab:24:composantes`, `sec:24:fonctionnelle`, `tab:11:fiche`, `eq:18:kennedy`, `eq:30:van-tri`, `sec:16:criteres`, `ch:02/11/17/18/21/24/28/30/34/41`. | |
| 19 | + | |
| 20 | +## Cohérence inter-chapitres | |
| 21 | +- Sujet du cas 1 : thermopompe centrale 2016 (état 3, vie 15 ans), VRC 1998 en fin de vie, coût neuf 397 567,33 $ et facteur 1,33043 (ch. 21), fiche d'état (ch. 11 : `ch11_inspection.fiche`), vie économique restante 31 ans (ch. 11/24), carence de salle d'eau 7 605,31 $ et curable 10 479,98 $ (ch. 24), valeur hédonique 637 952,85 $ (ch. 18, `traite.cas1.predire`), tendance 0,364 %/mois (ch. 17/18). Aucun chiffre recalculé « à la main » : `traite.finance` (van, tri, delai_recuperation, facteur_recouvrement), `traite.comparables.ventes_appariees`, `traite.cas1`. | |
| 22 | +- Le script importe `ch11_inspection` pour les composantes en fin de vie (tab. 44.2) ; il n'écrit rien dans la bibliothèque `traite/`. | |
| 23 | + | |
| 24 | +## Chiffres clés (hypothèses pédagogiques déclarées : consommation 22 000 kWh, coûts, économies, durées) | |
| 25 | +- Facture tarif D : 2 024,46 $ ; prix moyen 9,20 ¢, marginal 11,142 ¢/kWh. | |
| 26 | +- A (thermopompe climat froid avant terme) : net 12 180 $, 3 300 kWh, VAN −7 286,54 $, TRI −5,84 %, VA 4 893,46 $, CEE 34,56 ¢/kWh ; déficitaire dans toute la grille (taux 2–10 %, croissance 0–6 %) et jusqu'à 25 ans. | |
| 27 | +- B (isolation) : net 2 180 $, 880 kWh, VAN +224,60 $, TRI 5,29 %, délai actualisé 27,4 ans, CEE 15,12 ¢ ; sans subvention VAN −1 775,40 $. | |
| 28 | +- A+B : 3 916 kWh (non additif vs 4 180), VA 5 806,91 $ = 0,91 % de la valeur ; coût 20 680 $ = 3,24 %. | |
| 29 | +- Décision incrémentale (fin de vie 2031) : surcoût climat froid 2 555,34 $, bonification LogisVert 2 520 $, net 35,34 $, VAN +3 226,97 $. | |
| 30 | +- Primes vertes appliquées mécaniquement : 14 800 $ (2,32 %), 26 794 $ (4,20 %), 34 194 $ (5,36 %) — trois à sept fois la VA des économies. | |
| 31 | +- Paires qualité 4 vs 3 (30 paires) : médiane 5,78 %, moyenne 4,65 % (IC95 −0,2 à 9,5 %), hédonique 6,30 % ; contribution 36 891–40 182 $ ; ratio 0,57–0,62 pour une rénovation cuisine + sdb à 65 000 $ (hypothèse). | |
| 32 | + | |
| 33 | +## Points non vérifiés ou hypothèses déclarées (voir ch44-claims.csv) | |
| 34 | +1. Consommation du sujet, coûts installés, fractions d'économie, durées de vie, versement « au plafond » de Rénoclimat : hypothèses pédagogiques (CLM-44-023) ; sensibilité fournie. | |
| 35 | +2. Coût de 65 000 $ d'une rénovation cuisine + salles de bain et assimilation à un échelon de qualité (CLM-44-024). | |
| 36 | +3. Absence de cote énergétique obligatoire à la vente au Québec : déduite des programmes, non vérifiée en droit (CLM-44-021, `limites`). | |
| 37 | +4. Palmarès de « taux de récupération » : non cités, qualitatif seulement (CLM-44-022). | |
| 38 | +5. Écart performance théorique / consommation mesurée (effet de rebond) : affirmation qualitative sans référence du dépôt (CLM-44-028). | |
| 39 | +6. Kahn & Kok 2014 : notes-D indiquait « ≈ 2–4 % », le chiffre publié relu est ≈ 5 % (points saillants ScienceDirect) — retenu 5 % (CLM-44-014). Fuerst et al. 2015 : primes par bande relues dans un document de travail des mêmes auteurs, pas dans l'article (CLM-44-016). Eichholtz et al. : version de travail (> 6 % loyers effectifs) plutôt que l'article AER (CLM-44-020). | |
| 40 | +7. Mazout : résumé officiel, texte réglementaire non relu (CLM-44-008). Cumul LogisVert/Rénoclimat sur une même mesure non vérifié (non supposé). | |
| 41 | +8. Croissance du prix de l'électricité maintenue à 3,0 % au-delà de 2028 : choix de l'analyste (CLM-44-003). | |
| 42 | + | |
| 43 | +## Fichiers livrés | |
| 44 | +`manuscript/chapters/ch44.tex`, `solutions/ch44.tex`, `analysis/python/cases/ch44_renovation.py`, `analysis/python/figures/ch44_{flux,heatmap_van,prime_verte,capitalisation}.py`, `analysis/python/tests/test_ch44.py`, `assets/figures/ch44/*.pdf` (4), `verification/chapters/ch44-{figures,calculations,claims,registry}.csv`, `references/lib-ch44.bib` (vide), ce bilan. Rien n'a été écrit dans les CSV globaux, `library.bib`, `traite/*.py`, `styles/` ni dans les fichiers d'autres chapitres. | |
| 45 | + | |
| 46 | +## Suggestions pour l'harmonisation | |
| 47 | +- Ajouter à `traite.finance` une fonction `cout_energie_economisee(cout_net, r, n, kwh)` et une `facture_par_tranches(...)` générique si d'autres chapitres (28, 34, 46) ont besoin du tarif D ; le ch. 44 les garde pour l'instant dans son script. | |
| 48 | +- Le ch. 34 (TAL) devrait reprendre l'exemple « 20 000 $ d'immobilisations → 4,0 % → 67 $/mois » pour cohérence ; le ch. 45 peut citer la VA des économies (≈ 4 900 $) comme borne de la contribution d'une thermopompe neuve si le cas final en installe une. | |
| 49 | +- Une référence vérifiée sur l'écart performance théorique / consommation réelle (p. ex. Sunikka-Blank & Galvin 2012, *Building Research & Information*) pourrait être ajoutée à `library.bib` par le lot D pour soutenir CLM-44-028. | |
| 50 | +- Si le lot B revérifie la version française de la page LogisVert (404 le 2026-10-31), mettre à jour la note de `logisvert` et le tab. 44.4. | |
added
verification/chapters/ch46-calculations.csv
+33 −0
@@ -0,0 +1,33 @@ | ||
| 1 | +id,chapitre,description,script,test,resultat_attendu,resultat_obtenu,statut,date | |
| 2 | +CALC-46-001,46,RBP contractuel = 12 × (1 047 + 1 188 + 1 251) ; RBP marché = 12 × (1 430 + 1 430 + 1 251) ; ρ = 0,848,analysis/python/cases/ch46_dossier.py,analysis/python/tests/test_ch46.py::test_coherence_cas2_et_ch32,41832 ; 49332 ; 0.848,41832.00 ; 49332.00 ; 0.8480,verifie,2026-10-31 | |
| 3 | +CALC-46-002,46,RBE = RBP × (1 − 0,03),ch46_dossier.py (traite.cas2.revenus),test_ch46.py::test_coherence_cas2_et_ch32,40577.04,40577.04,verifie,2026-10-31 | |
| 4 | +CALC-46-003,46,Taxe municipale 2026 = 495 000 × 0,7464 % + 3 × (386 + 195),ch46_dossier.py::taxes_2026,test_ch46.py::test_taxes_2026_et_rne,5437.68,5437.68,verifie,2026-10-31 | |
| 5 | +CALC-46-004,46,Taxe scolaire 2026-2027 = (495 000 − 25 000) × 0,07899 %,ch46_dossier.py::taxes_2026,test_ch46.py::test_taxes_2026_et_rne,371.25,371.25,verifie,2026-10-31 | |
| 6 | +CALC-46-005,46,Écart taxes déclarées (6 370) − recalculées (5 808,93),ch46_dossier.py::base_normalisee,test_ch46.py::test_taxes_2026_et_rne,561.07,561.07,verifie,2026-10-31 | |
| 7 | +CALC-46-006,46,Gestion imputée = 4 % × RBE ; dépenses hors réserve ; dépenses totales ; ratio,ch46_dossier.py (traite.cas2.rne),test_ch46.py::test_taxes_2026_et_rne,1623.08 ; 16182.01 ; 17982.01 ; 0.443,1623.08 ; 16182.01 ; 17982.01 ; 0.4432,verifie,2026-10-31 | |
| 8 | +CALC-46-007,46,RNE₁ normalisé = RBE − DE − RR ; RNE déclaré (ch. 32) ; RNE aux loyers de marché,ch46_dossier.py::base_normalisee,test_ch46.py::test_taxes_2026_et_rne,22595.03 ; 22033.96 ; 29579.03,22595.03 ; 22033.96 ; 29579.03,verifie,2026-10-31 | |
| 9 | +CALC-46-008,46,Sélection des 5 comparables triplex Limoilou par distance d'attributs (identiques au ch. 32),ch46_dossier.py (ch32_plex.selection_comparables),test_ch46.py::test_coherence_cas2_et_ch32,Q0187 Q0222 Q0243 Q0207 Q0235,Q0187 Q0222 Q0243 Q0207 Q0235,verifie,2026-10-31 | |
| 10 | +CALC-46-009,46,Régression auxiliaire ln(prix/logement) sur 127 ventes : R² ; σ ; coefficient mois −0,00599 → croissance implicite 7,45 %/an,ch46_dossier.py::regression_auxiliaire,test_ch46.py::test_regression_et_grille,R² ≈ 0.727 ; g = exp(−12β) − 1,0.7273 ; 0.0973 ; 0.0745,verifie,2026-10-31 | |
| 11 | +CALC-46-010,46,Coefficient du loyer relatif non significatif (t = 1,18 < 2) → ajustement nul ; stationnement nul (tous ont une case),ch46_dossier.py::grille_ajustements,test_ch46.py::test_regression_et_grille,colonnes nulles,0 ; 0,verifie,2026-10-31 | |
| 12 | +CALC-46-011,46,Grille : prix ajusté = prix + Σ ajustements ; brut = Σ|A|/P ; Q0243 → 383 849 $/log. ; brut 12,6 %,ch46_dossier.py::grille_ajustements (traite.comparables),test_ch46.py::test_regression_et_grille,383849.14 ; 0.126,383849.14 ; 0.1257,verifie,2026-10-31 | |
| 13 | +CALC-46-012,46,Prix par logement pondéré (poids ∝ 1/brut) et indication par comparaison × 3,ch46_dossier.py::grille_ajustements (poids_inverse_brut ; reconciliation),test_ch46.py::test_regression_et_grille,340122.25 ; 1020366.74,340122.25 ; 1020366.74,verifie,2026-10-31 | |
| 14 | +CALC-46-013,46,Écart-type pondéré des prix ajustés (par logement ; immeuble) et erreur-type de la moyenne pondérée,ch46_dossier.py::grille_ajustements,test_ch46.py::test_reconciliation (fourchette),34516 ; 103548 ; 47848,34516.03 ; 103548.10 ; 47847.85,verifie,2026-10-31 | |
| 15 | +CALC-46-014,46,MRB médian des 5 comparables × RBP = 22,05 × 41 832 ; MRB ajusté au ρ du sujet (pente −0,956) : 24,38 → 1 019 940,ch46_dossier.py::indications_revenu,test_ch46.py::test_coherence_cas2_et_ch32 ; test_revenu,922395.60 ; 24.38,922395.60 ; 24.38,verifie,2026-10-31 | |
| 16 | +CALC-46-015,46,Taux ajusté au loyer relatif = 3,451 % + 0,0284 × (0,848 − 1) = 3,02 % ; capitalisation du RNE normalisé,ch46_dossier.py (ch32_plex.regression_taux_loyer_relatif ; finance.capitalisation_directe),test_ch46.py::test_revenu,0.0302 ; 748126.24,0.030202 ; 748126.24,verifie,2026-10-31 | |
| 17 | +CALC-46-016,46,Capitalisation aux taux médian (3,17 %) ; Q1 (2,76 %) ; Q3 (3,615 %) ; médiane des comparables (2,97 %) ; RNE déclaré au taux ajusté (ch. 32),ch46_dossier.py::indications_revenu,test_ch46.py::test_revenu ; test_coherence,712777 ; 818660 ; 625035 ; 760775 ; 729549,712776.83 ; 818660.34 ; 625035.28 ; 760775.27 ; 729549.19,verifie,2026-10-31 | |
| 18 | +CALC-46-017,46,Taux implicite de l'indication par comparaison (RNE / V_comp) ; aux loyers de marché ; écart au taux ajusté en pb,ch46_dossier.py::indications_revenu,test_ch46.py::test_revenu,0.0221 ; 0.0290 ; 81,0.022144 ; 0.028989 ; 80.6,verifie,2026-10-31 | |
| 19 | +CALC-46-018,46,Coût : 2 409 × (262/165)^−0,10 = 2 300,14 ; × 118,5/116,5 = 2 339,63 $/m² ; C_N = 612 983 ; a_eff = 0,5×78 + 0,5×0,5×90 = 61,5 ; D = 68,3 % ; V = 279 000 + 194 111 = 473 111,ch46_dossier.py::indication_cout (traite.cout),test_ch46.py::test_cout,473111.44,473111.44,verifie,2026-10-31 | |
| 20 | +CALC-46-019,46,Dépréciation extraite du marché à 920 000 $ et terrain 279 000 $ : C_N − (P − V_L) < 0 (−4,6 %) ; terrain nécessaire pour égaler : 725 889 $ (2 342 $/m²),ch46_dossier.py::depreciation_extraite ; exercices()[7],test_ch46.py::test_cout,négative,−28016.50 ; 2341.58,verifie,2026-10-31 | |
| 21 | +CALC-46-020,46,Valeur pondérée 0,40 × 1 020 367 + 0,35 × 922 396 + 0,25 × 748 126 ; arrondi 5 000 $ ; fourchette ± erreur-type arrondie vers l'extérieur,ch46_dossier.py::reconciliation,test_ch46.py::test_reconciliation,918017 ; 920000 ; 870000-970000,918016.72 ; 920000 ; (870000 ; 970000),verifie,2026-10-31 | |
| 22 | +CALC-46-021,46,Ratios implicites : $/logement ; $/m² ; MRB ; taux (contrat ; marché) ; ratio au rôle (× 1,08) ; écart avec ch. 32,ch46_dossier.py::reconciliation,test_ch46.py::test_reconciliation,306667 ; 3511 ; 21.99 ; 0.0246/0.0322 ; 1.86 (1.72) ; +50000,306666.67 ; 3511.45 ; 21.99 ; 0.02456/0.03215 ; 1.859 (1.721) ; 50000,verifie,2026-10-31 | |
| 23 | +CALC-46-022,46,Pondérations alternatives : 45/30/25 ; égale ; 60/40/0 ; 20/20/60 ; inverse variance (0,689/0,185/0,125),ch46_dossier.py::reconciliation ; exercices()[6],test_ch46.py::test_exercices_et_figures,922915 ; 896963 ; 981178 ; 837428 ; 968084,922915.28 ; 896962.86 ; 981178.29 ; 837428.22 ; 968084.32,verifie,2026-10-31 | |
| 24 | +CALC-46-023,46,Mise de fonds minimale assurée à 920 000 $ = 0,05 × 500 000 + 0,10 × 420 000 ; prêt ; RPV,ch46_dossier.py::financement (ch32_plex.mise_de_fonds_minimale_assuree),test_ch46.py::test_financement,67000 ; 853000 ; 0.927,67000 ; 853000 ; 0.9272,verifie,2026-10-31 | |
| 25 | +CALC-46-024,46,Hypothèque 4,12 % composé semestriellement 300 mois : i_m ; versement ; service ; constante ; intérêts/capital an 1 ; solde 60 ; capital 5 ans ; solde final nul,ch46_dossier.py::financement (traite.finance.Hypotheque),test_ch46.py::test_financement,0.003406 ; 4542.61 ; 54511.37 ; 0.0639 ; 34473.28/20038.09 ; 744114.34 ; 108885.66 ; 0,0.0034042 ; 4542.61 ; 54511.37 ; 0.0639 ; 34473.28/20038.09 ; 744114.34 ; 108885.66 ; 0.00,verifie,2026-10-31 | |
| 26 | +CALC-46-025,46,Taux admissible minimal max(4,12 % + 2 % ; 5,25 %) = 6,12 % ; versement de référence,ch46_dossier.py (finance.taux_admissible_minimal),test_ch46.py::test_financement,0.0612 ; 5518.54,0.0612 ; 5518.54,verifie,2026-10-31 | |
| 27 | +CALC-46-026,46,Droits de mutation Ville de Québec 2026 sur 920 000 $ (0,5/1/1,5/2,5/3 %) ; base = max(prix ; 495 000 × 1,08) ; liquidités = mise + droits,ch46_dossier.py::droits_mutation_quebec,test_ch46.py::test_financement,16960.50 ; 920000 ; 83960.50,16960.50 ; 920000 ; 83960.50,verifie,2026-10-31 | |
| 28 | +CALC-46-027,46,Coût net d'occupation RC = SD + DE' + 0,0358 × MF − loyers nets (2e + 3e × 12 × 0,97) ; mensuel ; hors capital (− capital moyen 5 ans / 12),ch46_dossier.py::financement (ch32_plex.cout_occupation),test_ch46.py::test_financement,44878.94 ; 3739.91 ; 1925.15,44878.94 ; 3739.91 ; 1925.15,verifie,2026-10-31 | |
| 29 | +CALC-46-028,46,Variantes de financement (30 ans ; 10 % ; 20 % non assuré 4,58 % ; +100 pb ; +200 pb) : versement et coût hors capital,ch46_dossier.py::financement (variantes) ; grille_cout_occupation,test_ch46.py::test_exercices_et_figures (figure),4114.30/1971.14 ; 4409.48/1919.79 ; 4106.36/2169.94 ; 5019.52/2606.57 ; 5518.54/3292.46,idem (script),verifie,2026-10-31 | |
| 30 | +CALC-46-029,46,Part du versement couverte par les loyers bruts des 2 logements conservés (2 439 / 4 542,61) ; RCD d'un investisseur RNE/SD,ch46_dossier.py::financement,test_ch46.py::test_financement,0.537 ; 0.41,0.5369 ; 0.4145,verifie,2026-10-31 | |
| 31 | +CALC-46-030,46,Reprise RC : Δ₁ = 383 × 12 × 0,97 ; VA 10 ans sans rotation (g_m 3,5 % ; g_TAL 3,1 % ; r 6 %) ; VA sous rotation 13 % (éq. 26 va-ecart) ; différence ; variantes 9,4 % et 20 %,ch46_dossier.py::va_ecart_rc ; exercices()[2],test_ch46.py::test_reprise,4458.12 ; 39567.72 (= 0,97 × 40 791 du ch. 32) ; 29713.51 ; 9854.21 ; 39668.94 ; 19968.98,4458.12 ; 39567.72 ; 29713.51 ; 9854.21 ; 39668.94 ; 19968.98,verifie,2026-10-31 | |
| 32 | +CALC-46-031,46,Exercice 5 au prix de 895 000 $ : mise 64 500 ; prêt 830 500 ; versement 4 422,79 ; TAM 5 372,98 ; droits 16 210,50 ; coût net 3 612,63 ; hors capital 1 845,74 ; 2e étage 3 749,40 / 1 982,51,ch46_dossier.py::exercices()[5]['promesse'],test_ch46.py::test_exercices_et_figures,idem,idem (script),verifie,2026-10-31 | |
| 33 | +CALC-46-032,46,Exercice 4 : RNE au ratio médian des ventes 40 577,04 × (1 − 0,357) = 26 091,04 ; capitalisation à 3,02 % = 863 880 ; taux implicite 2,56 % ; écart restant 46 pb,ch46_dossier.py::exercices()[4],—,26091.04 ; 863880 ; 0.0256 ; 46,26091.04 ; 863879.94 ; 0.02557 ; 46.3,verifie,2026-10-31 | |
added
verification/chapters/ch46-figures.csv
+6 −0
@@ -0,0 +1,6 @@ | ||
| 1 | +fichier,chapitre,script,donnees,type_donnees,legende_courte,statut | |
| 2 | +ch46/ch46-fig-loyers.pdf,46,analysis/python/figures/ch46_figures.py,data/synthetic/cas2_quebec_loyers.csv,synthetique,Loyer contractuel vs loyer de marché des trois logements et écart selon l'ancienneté du bail [données synthétiques],verifie | |
| 3 | +ch46/ch46-fig-cascade.pdf,46,analysis/python/figures/ch46_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv (Q0243) ; régression auxiliaire ch46_dossier.py,synthetique,Cascade des ajustements du comparable Q0243 en $ par logement [données synthétiques],verifie | |
| 4 | +ch46/ch46-fig-mrb.pdf,46,analysis/python/figures/ch46_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv,synthetique,Distribution du MRB des 67 triplex et des 28 triplex de Limoilou avec les 5 comparables ; MRB vs loyer relatif [données synthétiques],verifie | |
| 5 | +ch46/ch46-fig-occupation.pdf,46,analysis/python/figures/ch46_figures.py,ch46_dossier.grille_cout_occupation (ch32_plex.financement_occupant ; cas2_quebec_loyers.csv ; cas2_quebec_depenses.csv normalisées),synthetique,Coût économique mensuel d'occupation du rez-de-chaussée hors capital selon le taux hypothécaire et la mise de fonds [données synthétiques],verifie | |
| 6 | +ch46/ch46-fig-fourchettes.pdf,46,analysis/python/figures/ch46_figures.py,ch46_dossier.dossier() (indications par méthode ; repères ch. 32 ; coût ; rôle),synthetique,Indications de valeur par méthode avec étendue et poids ; valeur conclue 920 000 $ et fourchette 870 000-970 000 $ [données synthétiques],verifie | |
added
verification/chapters/ch48-figures.csv
+8 −0
@@ -0,0 +1,8 @@ | ||
| 1 | +fichier,chapitre,script,donnees,type_donnees,legende_courte,statut | |
| 2 | +ch48/ch48-fig-carte.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv,synthetique,Carte schématique des 6 RMR : valeur agrégée par RMR (cercles) et position des 48 immeubles avec risques inondation/sol [données synthétiques ; centres : BDTC RNCan],verifie | |
| 3 | +ch48/ch48-fig-rmr.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv,synthetique,Valeur 2026 par logement et RPV par RMR ; taux global par RMR (immeubles étendue taux pondéré) avec fourchettes CBRE T3 2026 Montréal/Québec [données synthétiques],verifie | |
| 4 | +ch48/ch48-fig-rne.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille_series.csv,synthetique,RNE trimestriel agrégé par RMR et portefeuille indice 2016T1 = 100 avec choc pandémique 2020T2-2021T2 [données synthétiques],verifie | |
| 5 | +ch48/ch48-fig-taux.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv,synthetique,Taux retenus vs taux prédits par le modèle de masse par RMR ; histogramme des résidus en pb [données synthétiques],verifie | |
| 6 | +ch48/ch48-fig-montecarlo.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv;cas4_portefeuille_series.csv,synthetique,Distribution de la valeur simulée du portefeuille sous trois régimes de dépendance (indépendant déclaré parfait) 10 000 tirages graine 20261031 [données synthétiques],verifie | |
| 7 | +ch48/ch48-fig-dette.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv,synthetique,Échéancier de la dette par RMR 2027-2031 et RCD agrégé par échéance après renouvellement à +0/+100/+200 pb [données synthétiques ; amortissement 480 mois],verifie | |
| 8 | +ch48/ch48-fig-frontiere.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv;cas4_portefeuille_series.csv,synthetique,Frontière rendement-risque des 6 RMR sans vente à découvert avec portefeuille actuel variance minimale et portefeuilles dominants [données synthétiques],verifie | |
modified
verification/claims.csv
+42 −0
@@ -974,3 +974,45 @@ CLM-37-10,37,"Roberts et al. (2017, Ecography 40(8) 913-929) : la validation cro | ||
| 974 | 974 | CLM-37-11,37,"Friedman (2001) introduit la dépendance partielle et le gradient boosting comme descente de gradient fonctionnelle ; Breiman (2001) : forêts, erreur hors sac, importance par permutation ; Chen & Guestrin (2016) : objectif au second ordre régularisé (gain en forme fermée)",lib-D,"notes-D.md §ch. 37 ; dérivations de l'auteur""",2026-10-31,verifie, |
| 975 | 975 | CLM-37-12,37,"Mayer et al. (2019) : boosting plus précis sur données riches, méthodes hédoniques compétitives et plus stables ; Bogin & Shui (2020) : AVM et évaluations se dégradent en zone rurale, AVM davantage ; McCluskey et al. (2013) : ne pas généraliser un gain de précision d'un seul jeu",lib-D,notes-D.md §ch. 37 et §ch. 20 (résumés des articles,non relus en texte intégral pour ce chapitre),2026-10-31,partiellement_verifie |
| 976 | 976 | CLM-37-13,37,shap 0.48 ne lit pas le format de modèle de xgboost 3.2 (ValueError sur base_score) → TreeSHAP appliqué au GradientBoostingRegressor de scikit-learn 1.6,,Reproduit dans l'environnement du dépôt le 2026-10-31,2026-10-31,verifie,Limite technique déclarée dans le chapitre |
| 977 | +CLM-40-001,40,Pyhrr (1973) : premier modèle de simulation du risque d'un investissement immobilier (lois subjectives sur loyers dépenses inoccupation revente ; distribution du rendement),pyhrr1973,notes-D §ch. 40 ; entrée library.bib avec DOI 10.1111/1540-6229.00103,2026-10-31,verifie,article non relu in extenso ; description conforme au titre et au résumé | |
| 978 | +CLM-40-002,40,Wofford (1978) : simulation appliquée à l'évaluation des immeubles à revenus (distribution de valeurs),wofford1978,notes-D ; DOI 10.1111/1540-6229.00187,2026-10-31,verifie, | |
| 979 | +CLM-40-003,40,French et Gabrielli (2004) : l'incertitude de l'évaluation est inhérente et doit être communiquée ; distinction incertitude d'évaluation / variation de marché,frenchGabrielli2004,notes-D §ch. 20 et 40 ; DOI 10.1108/14635780410569470,2026-10-31,verifie, | |
| 980 | +CLM-40-004,40,French et Gabrielli (2005) : DCF à intrants probabilistes élicités auprès de l'évaluateur,frenchGabrielli2005,notes-D ; DOI 10.1108/14635780510575102,2026-10-31,verifie, | |
| 981 | +CLM-40-005,40,Hoesli Jani Bender (2006) : Monte-Carlo pour la valeur DCF ; lois calibrées sur séries de marché ; taux d'actualisation lié aux taux sans risque ; biais de convexité (rapporter la médiane),hoesliJaniBender2006,notes-D ; DOI 10.1108/14635780610655076 ; même lecture qu'au ch. 47,2026-10-31,verifie, | |
| 982 | +CLM-40-006,40,Byrne (1996) : risque incertitude et décision en développement immobilier ; passage sensibilité → simulation,byrne1996,notes-D §ch. 40 et 41,2026-10-31,verifie, | |
| 983 | +CLM-40-007,40,Sivitanidou–Sivitanides (1999) et Chervachidze–Wheaton (2013) : déterminants des taux de capitalisation (marchés de capitaux prime de risque),sivitanidouSivitanides1999;chervachidzeWheaton2013,notes-D ; déjà cités au ch. 47 §47.12,2026-10-31,verifie, | |
| 984 | +CLM-40-008,40,Taux admissible minimal du BSIF (prêts non assurés) = max(taux contractuel + 2 points ; 5,25 %) ; revu au moins annuellement ; non appliqué aux transferts directs non assurés au renouvellement depuis le 21 novembre 2024 ; page modifiée le 29 janvier 2026,osfiMqr,notes-C §4.2,2026-10-31,verifie | |
| 985 | +CLM-40-009,40,Banque du Canada : taux directeur relevé à 2,50 % le 28 octobre 2026 ; première hausse depuis juillet 2023 ; maintien à 2,25 % depuis le 30 octobre 2025,bdc20261028,notes-C §4.1 (communiqué),2026-10-31 | |
| 986 | +CLM-40-010,40,Rendement GdC 10 ans 3,84 % le 29 octobre 2026 ; taux hypothécaire conventionnel 5 ans affiché 6,19 % (semaine du 28 octobre 2026),bdctauxhypothecaires2026,notes-C §4.1 (Valet BD.CDN.10YR.DQ.YLD ; V80691335),2026-10-31 | |
| 987 | +CLM-40-011,40,Croissance des loyers contractuels 3,1 % = pourcentage de base de la méthode de fixation du TAL pour 2026 (paramètre réglementaire),SRC-A (TAL 2026),repris des ch. 30 et 47 (hypothèse du dossier cas3_montreal_hypotheses_dcf.json),2026-10-31,partiellement_verifie | |
| 988 | +CLM-40-012,40,Les NPP de l'OEAQ exigent l'énoncé des hypothèses et réserves et un raisonnement suivable ; aucune norme n'exige de simulation,oeaqNormes,notes-C §2 (règle 2.3) ; absence d'exigence de simulation = constat (non trouvé dans les NPP),2026-10-31,verifie,l'absence est un constat de lecture non une citation | |
| 989 | +CLM-40-013,40,Taux d'inoccupation SCHL Montréal 2023-2025 et prévisions 2028 couverts par l'intervalle 2,4 %–6,3 %,schlrmltables2025;schlpmh2026ete,repris du ch. 47 (notes-E),2026-10-31 | |
| 990 | +CLM-40-014,40,Relation rho_S = (6/pi) arcsin(rho/2) pour le vecteur gaussien bivarié (identité classique),—,dérivable ; vérifiée numériquement (test_ch40 copule : ±0,01),2026-10-31,verifie | |
| 991 | +CLM-40-015,40,Théorème de décomposition de Hoeffding–Sobol et estimateurs par échantillons appariés (pick-freeze) ; variance de l'hypercube latin ≤ échantillonnage simple (asymptotiquement),—,résultats mathématiques standards ; démonstration donnée pour la décomposition ; références fondatrices vérifiées par DOI dans lib-ch40.bib (McKay–Beckman–Conover 1979 ; Sobol' 2001) mais NON citées (règle : clés de library.bib seulement),2026-10-31,verifie,à citer après fusion de lib-ch40.bib dans library.bib | |
| 992 | +CLM-40-016,40,Sous-additivité de la CVaR / non sous-additivité de la VaR (mesure cohérente),—,résultat standard ; références Artzner et al. 1999 et Rockafellar–Uryasev 2000 vérifiées par DOI dans lib-ch40.bib mais non citées,2026-10-31,verifie,idem | |
| 993 | +CLM-40-017,40,Excès de confiance des experts élicités (fourchettes trop étroites lorsque la valeur centrale est demandée d'abord),—,affirmation générale de la littérature d'élicitation sans citation,2026-10-31,non_verifie,à sourcer (p. ex. littérature d'élicitation structurée) ou à atténuer lors de l'harmonisation | |
| 994 | +CLM-40-018,40,Les quatre dossiers et toutes les lois (MC_LOIS) sont synthétiques ; paramètres de corrélation du portefeuille (0,30 ; 0,60) amortissement 480 mois et renouvellement +200 pb = hypothèses pédagogiques déclarées,data/synthetic/README.md,encadré synthetique + limites,2026-10-31 | |
| 995 | +CLM-40-019,40,Le ch. 47 §47.12 utilise la triangulaire pour la rotation et tire les intrants hors (r R_T) indépendamment,ch47.tex / ch47_dossier.py,lecture du code MC_LOIS et tirer(),2026-10-31,verifie, | |
| 996 | +CLM-41-001,41,"Définition de la PHMU et ordre des quatre tests (légalement permis, physiquement possible, financièrement faisable, maximalement productif) selon l'Appraisal Institute (16e éd., 2026)",SRC-D-001,notes-D.md ; ch08.tex (même formulation) ; ouvrage non ouvert à la page,2026-10-31,partiellement_verifie,"Paraphrase, aucune citation textuelle ; l'ouvrage protégé n'est pas reproduit" | |
| 997 | +CLM-41-002,41,"IVS 102, annexe A90.01 : « Highest and best use is the use, from a participant perspective, that would produce the highest value for an asset » (traduction de l'auteur)",SRC-C-053,sources/normes-C.csv N-C-053 ; notes-C.md §1.2 (IVS 2025 en vigueur depuis le 31 janvier 2025),2026-10-31,verifie, | |
| 998 | +CLM-41-003,41,LFM art. 43 par. 2° : la valeur réelle tient compte de « l'utilisation qui peut le plus probablement en être faite »,SRC-B-001,notes-B.md §ch. 41 ; LégisQuébec F-2.1 à jour au 15 oct. 2026,2026-10-31,verifie, | |
| 999 | +CLM-41-004,41,LFM art. 46 al. 1 à 3 : utilisation la plus probable à la date de référence ; après un événement de l'art. 174 celle « qui découle de l'état de l'unité » ; l'état comprend la situation juridique ; art. 174 par. 19° : changement de restriction juridique = motif de modification du rôle,SRC-B-001,notes-B.md §ch. 41 et §ch. 8,2026-10-31,verifie, | |
| 1000 | +CLM-41-005,41,"LAU art. 117.4 : contribution pour fins de parcs plafonnée à 10 % de la superficie et de la valeur du site ; art. 117.1-117.4 réécrits par LQ 2023, c. 12 (sanctionnée le 1er juin 2023)",SRC-B-038;SRC-B-039,notes-B.md §ch. 8 ; ch08-registry.csv SRC-08-001,2026-10-31,verifie, | |
| 1001 | +CLM-41-006,41,"LAU art. 145.1 : dérogation mineure exclue pour l'usage et la densité ; art. 145.36 : PPCMOI ; art. 145.30.1 : règlement d'inclusion (logement abordable, social ou familial) ; art. 113, 115, 118 : zonage, lotissement, construction",SRC-B-038,notes-B.md §ch. 8 ; normes-B.csv NRM-B-064 à 074,2026-10-31,verifie, | |
| 1002 | +CLM-41-007,41,LPTAA art. 26 : interdiction d'utiliser un lot à une fin autre que l'agriculture sans autorisation de la CPTAQ,SRC-B-040,notes-B.md §ch. 25 et 41,2026-10-31,verifie, | |
| 1003 | +CLM-41-008,41,LQE art. 31.53-31.54 : changement d'utilisation d'un terrain contaminé subordonné à l'approbation d'un plan de réhabilitation,SRC-B-001,notes-B.md §ch. 41 (« contraintes de développement vérifiées ») ; texte des articles non relu pour ce chapitre,2026-10-31,partiellement_verifie,Formulation générale ; le ch. 43 détaille | |
| 1004 | +CLM-41-009,41,"Zones inondables (cadre en vigueur depuis le 1er mars 2026) : construction neuve d'une résidence interdite dans les classes très élevée, élevée et modérée",SRC-B-038,notes-B.md §43.2 ; encadré du ch. 8 (Québec.ca « Réaliser des travaux »,màj 14 juill. 2026),2026-10-31,verifie | |
| 1005 | +CLM-41-010,41,Laroda 2025 CSC 44 : cession excédentaire pour fins de parcs analysée comme réserve de terrains ouvrant droit à une indemnité fondée sur la valeur marchande,SRC-B-039,notes-B.md §ch. 8 (« cause en bref ») ; arrêt non lu en texte intégral,2026-10-31,partiellement_verifie, | |
| 1006 | +CLM-41-011,41,Titman (1985) : modèle binomial des terrains urbains sous incertitude ; l'incertitude accroît la valeur des terrains laissés vacants et réduit la construction,SRC-D-001,notes-D.md §ch. 41 ; Crossref/IDEAS (référence vérifiée) ; résumé de l'article d'après la connaissance de l'auteur,2026-10-31,partiellement_verifie,Résultat résumé sans relecture du texte intégral | |
| 1007 | +CLM-41-012,41,Quigg (1993) : prix des terrains de Seattle incorporant une prime d'attente d'environ 6 % en moyenne par rapport à la valeur de développement immédiat,SRC-D-001,notes-D.md §ch. 25 (« prime d'attente ≈ 6 % ») ; DOI vérifié,2026-10-31,partiellement_verifie,Chiffre tel que rapporté dans notes-D ; texte intégral non relu | |
| 1008 | +CLM-41-013,41,"Capozza et Helsley (1990) : rente brownienne ; conversion au seuil R* ; décomposition du prix du terrain en valeur d'usage, coût de conversion, prime de croissance et prime d'irréversibilité ; l'incertitude retarde la conversion et élève le prix des terrains",SRC-D-001,notes-D.md §ch. 25 et 41 ; DOI vérifié ; dérivation refaite dans le chapitre (version simplifiée,non attribuée mot à mot),2026-10-31,partiellement_verifie | |
| 1009 | +CLM-41-014,41,Dye et McMillen (2007) : probabilité de démolition croissante avec le rapport valeur du terrain/valeur totale ; prix des teardowns insensibles au bâtiment. McMillen et O'Sullivan (2013) : coefficients hédoniques du bâtiment → 0 avec la probabilité de démolition. Rosenthal et Helsley (1994) : teardowns de Vancouver et gradient de prix des terrains,SRC-D-001,notes-D.md §ch. 8,25 et 41 ; DOI vérifiés,2026-10-31,partiellement_verifie | |
| 1010 | +CLM-41-015,41,"Clapp et Salavei (2010) : variable d'option de redéveloppement dans le modèle hédonique ; Clapp, Bardos et Wong (2012) : estimation empirique de la prime d'option de redéveloppement résidentiel ; Cunningham (2006), Munneke (1996), Munneke et Womack (2020) : résultats résumés",SRC-D-001,notes-D.md §ch. 41 ; DOI vérifiés,2026-10-31,partiellement_verifie, | |
| 1011 | +CLM-41-016,41,"Cox, Ross et Rubinstein (1979), Journal of Financial Economics 7(3), 229-263 : paramétrisation u = e^{σ√Δt} des arbres binomiaux",SRC-41-001,API Crossref (DOI 10.1016/0304-405X(79)90015-1) le 2026-10-31 ; référence non citée par clé (absente de library.bib),ajoutée à lib-ch41.bib,2026-10-31,verifie | |
| 1012 | +CLM-41-017,41,APCIQ T3 2026 RMR Gatineau : médiane unifamiliale Hull 475 000 $ ; copropriété RMR 297 450 $,SRC-E-002,notes-E.md §ch. 4 et 15,2026-10-31,verifie, | |
| 1013 | +CLM-41-018,41,"IPCB Montréal T3 2026 (18-10-0289-01, 2023 = 100) : maison individuelle 116,5 ; immeuble d'appartements < 5 étages 118,5 ; ratio 1,0172",SRC-E-017,notes-E.md §ch. 23 ; ch23.tex (même ratio),2026-10-31,verifie, | |
| 1014 | +CLM-41-019,41,"Taux hypothécaire affiché 5 ans, prêt conventionnel : 6,19 % au 28 octobre 2026 (Banque du Canada, série V80691335)",SRC-E-017,notes-E.md §ch. 31 ; ch23.tex et analysis/python/cases/ch23_structure_couts.py (data/raw/bdc_valet/V80691335.csv),2026-10-31,verifie,Source E : BdC Valet (data/raw/bdc_valet/) | |
| 1015 | +CLM-41-020,41,"Taux de capitalisation multirésidentiel faible hauteur, Montréal T3 2026 (CBRE) : 4,25-4,75 % → hypothèse y = 4,5 % pour le rendement de détention",SRC-E-017,notes-E.md §ch. 29 ; utilisé comme ordre de grandeur déclaré,2026-10-31,verifie,Hypothèse pédagogique dérivée d'une donnée d'industrie ; aucun taux publié pour Gatineau | |
| 1016 | +CLM-41-021,41,Hypothèses déclarées sans source : zone fictive H-2f ; décotes de copropriété 10/15/20 % ; frais de vente 4 % ; marge 15 % GDV ; démolition 30 000 $ ; prêt 75 % ; durées 12/15/18 mois ; σ 10 %/an ; r réel 2 % ; Δt 5 ans ; g = 1 % et σ = 10 % de la rente (Capozza–Helsley),—,Déclarées comme hypothèses pédagogiques dans l'encadré synthétique,le texte et les limites,2026-10-31,non_verifie | |
| 1017 | +CLM-44-027,44,"TAL, pourcentages applicables 2026 : dépenses en immobilisations 4,0 % (2025 : 4,7 %) ; exemple 20 000 $ → ≈ 800 $/an, 67 $/mois",SRC-E-048,notes-E.md §ch. 28 ; clé talIndices2026 (page consultée le 2026-10-31),2026-10-31,verifie,"Mécanisme détaillé au ch. 34 ; le calcul 20 000 × 4,0 % est une illustration" | |
| 1018 | +CLM-44-028,44,"Écart entre performance théorique (étiquette, calcul normalisé) et consommation mesurée : les logements mal cotés consomment souvent moins que prévu et les logements bien cotés davantage",,affirmation qualitative de la littérature technique (effet de rebond / « prebound ») ; aucune référence du dépôt,2026-10-31,non_verifie,Formulée sans chiffre ; à sourcer lors de l'harmonisation (p. ex. Sunikka-Blank & Galvin 2012) si une entrée vérifiée est ajoutée | |
modified
verification/figures.csv
+17 −0
@@ -228,3 +228,20 @@ ch40/ch40-fig-sobol.pdf,40,analysis/python/figures/ch40_figures.py,idem (Sobol N | ||
| 228 | 228 | ch40/ch40-fig-rcd.pdf,40,analysis/python/figures/ch40_figures.py,idem (prêt 1 475 959 $ ; renouvellement +200 pb année 6),synthetique,Trajectoires simulées du RCD sur 10 ans : médiane bandes 50/90 % et 12 trajectoires ; seuils 1,20 et 1 |
| 229 | 229 | ch40/ch40-fig-lhs.pdf,40,analysis/python/figures/ch40_figures.py,idem (N = 1 000 ; 100 répétitions ; graines 1000-1099),synthetique,Hypercube latin : stratification en 2D et rapport des variances simple/LHS par statistique [données synthétiques],verifie |
| 230 | 230 | ch40/ch40-fig-portefeuille.pdf,40,analysis/python/figures/ch40_figures.py,data/synthetic/cas4_portefeuille.csv;cas4_portefeuille_series.csv,synthetique,Fonction de répartition de la valeur du portefeuille de 48 immeubles à un an sous trois structures de corrélation [données synthétiques],verifie |
| 231 | +manuscript/chapters/ch41.tex (TikZ fig:41:arbre),41,manuscript/chapters/ch41.tex,aucune,schema,"Arbre de décision des quatre tests de la PHMU (légal, physique, financier, productif) et conclusion terrain vacant / bien amélioré",verifie | |
| 232 | +ch41/ch41-fig-residuel-densite.pdf,41,analysis/python/figures/ch41_figures.py,analysis/python/cases/ch41_phmu.py (cas 1 : data/synthetic/cas1_gatineau_*.csv/json ; devis ch21 ; IPCB 18-10-0289-01),synthetique,"Valeur résiduelle du terrain de 620 m² selon le nombre de logements (1 à 4) pour trois niveaux de prix, prix du marché des terrains 277 000 $, maison sur commande 266 187 $, quadruplex non permis [données synthétiques]",verifie | |
| 233 | +ch41/ch41-fig-surface-prix-cout.pdf,41,analysis/python/figures/ch41_figures.py,analysis/python/cases/ch41_phmu.py (triplex,convention promoteur),synthetique,"Surface de la valeur résiduelle du triplex selon la variation du prix des unités (−20 à +55 %) et du coût (±20 %) ; isovaleurs 0, 277 000 $ et 600 000 $ [données synthétiques]" | |
| 234 | +manuscript/chapters/ch41.tex (TikZ fig:41:binomial),41,manuscript/chapters/ch41.tex,analysis/python/cases/ch41_phmu.py (fonction option_redeveloppement ; valeurs typées et testées par test_ch41.py::TestOption),synthetique,"Arbre binomial à deux périodes de 5 ans pour l'option de redéveloppement en triplex : GDV, exercice, continuation par nœud ; prime 2 837 $ [données synthétiques / hypothèses]",verifie | |
| 235 | +ch41/ch41-fig-frontiere-option.pdf,41,analysis/python/figures/ch41_figures.py,analysis/python/cases/ch41_phmu.py (fonctions option_redeveloppement et frontiere_exercice_t1),synthetique,(a) Prime de l'option selon σ pour trois valeurs en usage ; (b) frontière d'exercice à t = 1 et seuil de la VAN rapportés au produit actuel [données synthétiques / hypothèses],verifie | |
| 236 | +ch46/ch46-fig-loyers.pdf,46,analysis/python/figures/ch46_figures.py,data/synthetic/cas2_quebec_loyers.csv,synthetique,Loyer contractuel vs loyer de marché des trois logements et écart selon l'ancienneté du bail [données synthétiques],verifie | |
| 237 | +ch46/ch46-fig-cascade.pdf,46,analysis/python/figures/ch46_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv (Q0243) ; régression auxiliaire ch46_dossier.py,synthetique,Cascade des ajustements du comparable Q0243 en $ par logement [données synthétiques],verifie | |
| 238 | +ch46/ch46-fig-mrb.pdf,46,analysis/python/figures/ch46_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv,synthetique,Distribution du MRB des 67 triplex et des 28 triplex de Limoilou avec les 5 comparables ; MRB vs loyer relatif [données synthétiques],verifie | |
| 239 | +ch46/ch46-fig-occupation.pdf,46,analysis/python/figures/ch46_figures.py,ch46_dossier.grille_cout_occupation (ch32_plex.financement_occupant ; cas2_quebec_loyers.csv ; cas2_quebec_depenses.csv normalisées),synthetique,Coût économique mensuel d'occupation du rez-de-chaussée hors capital selon le taux hypothécaire et la mise de fonds [données synthétiques],verifie | |
| 240 | +ch46/ch46-fig-fourchettes.pdf,46,analysis/python/figures/ch46_figures.py,ch46_dossier.dossier() (indications par méthode ; repères ch. 32 ; coût ; rôle),synthetique,Indications de valeur par méthode avec étendue et poids ; valeur conclue 920 000 $ et fourchette 870 000-970 000 $ [données synthétiques],verifie | |
| 241 | +ch48/ch48-fig-carte.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv,synthetique,Carte schématique des 6 RMR : valeur agrégée par RMR (cercles) et position des 48 immeubles avec risques inondation/sol [données synthétiques ; centres : BDTC RNCan],verifie | |
| 242 | +ch48/ch48-fig-rmr.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv,synthetique,Valeur 2026 par logement et RPV par RMR ; taux global par RMR (immeubles étendue taux pondéré) avec fourchettes CBRE T3 2026 Montréal/Québec [données synthétiques],verifie | |
| 243 | +ch48/ch48-fig-rne.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille_series.csv,synthetique,RNE trimestriel agrégé par RMR et portefeuille indice 2016T1 = 100 avec choc pandémique 2020T2-2021T2 [données synthétiques],verifie | |
| 244 | +ch48/ch48-fig-taux.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv,synthetique,Taux retenus vs taux prédits par le modèle de masse par RMR ; histogramme des résidus en pb [données synthétiques],verifie | |
| 245 | +ch48/ch48-fig-montecarlo.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv;cas4_portefeuille_series.csv,synthetique,Distribution de la valeur simulée du portefeuille sous trois régimes de dépendance (indépendant déclaré parfait) 10 000 tirages graine 20261031 [données synthétiques],verifie | |
| 246 | +ch48/ch48-fig-dette.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv,synthetique,Échéancier de la dette par RMR 2027-2031 et RCD agrégé par échéance après renouvellement à +0/+100/+200 pb [données synthétiques ; amortissement 480 mois],verifie | |
| 247 | +ch48/ch48-fig-frontiere.pdf,48,analysis/python/figures/ch48_portefeuille_figures.py,data/synthetic/cas4_portefeuille.csv;cas4_portefeuille_series.csv,synthetique,Frontière rendement-risque des 6 RMR sans vente à découvert avec portefeuille actuel variance minimale et portefeuilles dominants [données synthétiques],verifie | |
| 231 | 248 | |