Ch. 27 livré et validé (compilation isolée, tests, fusion des registres)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
21 changed files +624 −80
added
analysis/python/cases/ch36_panel.py
+273 −0
@@ -0,0 +1,273 @@ | |||||
| 1 | +#!/usr/bin/env python3 | ||||
| 2 | +"""Chapitre 36 — Données de panel et identification causale : choc simulé sur les séries de RNE du cas 4 | ||||
| 3 | +(DONNÉES SYNTHÉTIQUES, graine 20261031). | ||||
| 4 | + | ||||
| 5 | +Le panel de départ est celui de `traite.cas4.charger()` : 48 immeubles × 42 trimestres (2016T1-2026T2) de RNE trimestriel. | ||||
| 6 | +Ces séries sont prises comme résultats potentiels SANS traitement, Y(0). Le script y superpose un traitement déclaré : | ||||
| 7 | + - cohorte A : 8 immeubles de la RMR de Montréal « à distance de marche » d'une ligne de transport collectif fictive mise | ||||
| 8 | + en service au 3e trimestre de 2022 (période 26) ; | ||||
| 9 | + - cohorte B : 5 immeubles de la RMR de Gatineau desservis par un second tronçon fictif au 3e trimestre de 2024 (période 34) ; | ||||
| 10 | + - effet déclaré sur ln RNE, identique pour les deux cohortes, fonction du temps écoulé k depuis la mise en service : | ||||
| 11 | + δ(k) = 0,01 (k + 1) pour k = 0, 1, 2, 3 (montée en régime au rythme du renouvellement des baux), puis | ||||
| 12 | + δ(k) = 0,04 + 0,0025 (k − 3) pour k ≥ 4 (régime de +4 % atteint, puis valorisation lente du voisinage). | ||||
| 13 | +Les 35 autres immeubles ne sont jamais traités. Le lecteur connaît la vérité ; chaque estimateur lui est confronté. | ||||
| 14 | + | ||||
| 15 | +Estimateurs : DiD 2 × 2 (cellules et différences longues), TWFE statique (erreurs-types classiques / HC1 / grappes), | ||||
| 16 | +étude d'événement, Callaway–Sant'Anna (contrôles jamais traités, même RMR), décomposition de Goodman-Bacon, contrôle | ||||
| 17 | +synthétique (cohorte A agrégée vs 35 donneurs), discontinuité spatiale (simulation transversale séparée), placebo temporel, | ||||
| 18 | +sensibilité (tendances parallèles violées, choix du groupe témoin, traitement de l'autocorrélation). | ||||
| 19 | +Contrôle croisé (--controle) : linearmodels.PanelOLS et statsmodels (grappes) reproduisent le TWFE et ses erreurs-types. | ||||
| 20 | +Usage (racine du dépôt) : PYTHONPATH=analysis/python python3 analysis/python/cases/ch36_panel.py [--controle]""" | ||||
| 21 | +from __future__ import annotations | ||||
| 22 | +import sys, pathlib | ||||
| 23 | +import numpy as np, pandas as pd | ||||
| 24 | +sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1])) | ||||
| 25 | +from traite import cas4 | ||||
| 26 | +from traite import hedonique as h | ||||
| 27 | +from traite import panel as pn | ||||
| 28 | + | ||||
| 29 | +ROOT = pathlib.Path(__file__).resolve().parents[3] | ||||
| 30 | +GRAINE = 20261031 | ||||
| 31 | +T_A, T_B = 26, 34 # 2022T3 et 2024T3 (2016T1 = 0) | ||||
| 32 | +N_A, N_B = 8, 5 # immeubles traités à Montréal et à Gatineau | ||||
| 33 | +RMR_A, RMR_B = "Montréal", "Gatineau" | ||||
| 34 | +FENETRE_AVANT = [22, 23, 24, 25] # 2021T3-2022T2 | ||||
| 35 | +FENETRE_APRES = [30, 31, 32, 33] # 2023T3-2024T2 (deuxième année : régime atteint) | ||||
| 36 | +PLACEBO_T = 14 # 2019T3 | ||||
| 37 | +B_BOOT = 499 | ||||
| 38 | + | ||||
| 39 | +_CACHE: dict = {} | ||||
| 40 | + | ||||
| 41 | +def effet_vrai(k) -> np.ndarray: | ||||
| 42 | + """Effet déclaré δ(k) sur ln RNE selon le temps relatif k (0 avant la mise en service).""" | ||||
| 43 | + k = np.asarray(k, float) | ||||
| 44 | + return np.where(k < 0, 0.0, np.where(k <= 3, 0.01 * (k + 1), 0.04 + 0.0025 * (k - 3))) | ||||
| 45 | + | ||||
| 46 | +# ----------------------------------------------------------------------------- panel simulé | ||||
| 47 | + | ||||
| 48 | +def panel_base() -> pd.DataFrame: | ||||
| 49 | + d = cas4.charger(); se = d["series"].copy(); pf = d["portefeuille"] | ||||
| 50 | + trims = sorted(se["trimestre"].unique()); idx = {p: i for i, p in enumerate(trims)} | ||||
| 51 | + se["t"] = se["trimestre"].map(idx).astype(int) | ||||
| 52 | + se = se.merge(pf[["id_immeuble", "rmr", "nb_logements", "zone_inondable"]], on="id_immeuble") | ||||
| 53 | + se["y0"] = np.log(se["rne_trimestriel"].astype(float)) | ||||
| 54 | + return se.sort_values(["id_immeuble", "t"]).reset_index(drop=True) | ||||
| 55 | + | ||||
| 56 | +def choisir_traites(pf_ids: pd.DataFrame, graine: int = GRAINE) -> dict: | ||||
| 57 | + rng = np.random.default_rng(graine) | ||||
| 58 | + a = sorted(rng.choice(sorted(pf_ids.loc[pf_ids["rmr"] == RMR_A, "id_immeuble"]), N_A, replace=False)) | ||||
| 59 | + b = sorted(rng.choice(sorted(pf_ids.loc[pf_ids["rmr"] == RMR_B, "id_immeuble"]), N_B, replace=False)) | ||||
| 60 | + return {"A": list(a), "B": list(b)} | ||||
| 61 | + | ||||
| 62 | +def simuler(tendance_diff_annuelle: float = 0.0) -> pd.DataFrame: | ||||
| 63 | + """Panel long avec traitement échelonné. `tendance_diff_annuelle` > 0 ajoute aux immeubles traités une croissance | ||||
| 64 | + supplémentaire (par an, en log) sur toute la période : violation déclarée des tendances parallèles.""" | ||||
| 65 | + se = panel_base(); ids = se.groupby("id_immeuble")[["rmr"]].first().reset_index() | ||||
| 66 | + tr = choisir_traites(ids) | ||||
| 67 | + se["g"] = np.nan | ||||
| 68 | + se.loc[se["id_immeuble"].isin(tr["A"]), "g"] = T_A | ||||
| 69 | + se.loc[se["id_immeuble"].isin(tr["B"]), "g"] = T_B | ||||
| 70 | + se["cohorte"] = np.where(se["id_immeuble"].isin(tr["A"]), "A", np.where(se["id_immeuble"].isin(tr["B"]), "B", "jamais")) | ||||
| 71 | + se["k"] = (se["t"] - se["g"]).where(se["g"].notna()) | ||||
| 72 | + se["D"] = ((se["k"] >= 0) & se["g"].notna()).astype(float) | ||||
| 73 | + se["delta_vrai"] = np.where(se["g"].notna(), effet_vrai(se["k"].fillna(-1)), 0.0) | ||||
| 74 | + if tendance_diff_annuelle: | ||||
| 75 | + se.loc[se["g"].notna(), "y0"] = se.loc[se["g"].notna(), "y0"] + tendance_diff_annuelle * se.loc[se["g"].notna(), "t"] / 4.0 | ||||
| 76 | + se["y"] = se["y0"] + se["delta_vrai"] | ||||
| 77 | + se["traite_A"] = se["id_immeuble"].isin(tr["A"]).astype(int) | ||||
| 78 | + return se | ||||
| 79 | + | ||||
| 80 | +def verite(se: pd.DataFrame) -> dict: | ||||
| 81 | + post = se[se["D"] == 1] | ||||
| 82 | + return {"att_global": float(post["delta_vrai"].mean()), | ||||
| 83 | + "att_A": float(post.loc[post["cohorte"] == "A", "delta_vrai"].mean()), | ||||
| 84 | + "att_B": float(post.loc[post["cohorte"] == "B", "delta_vrai"].mean()), | ||||
| 85 | + "att_fenetre_2x2": float(effet_vrai(np.array(FENETRE_APRES) - T_A).mean()), | ||||
| 86 | + "profil": {int(k): float(effet_vrai(k)) for k in range(0, 16)}} | ||||
| 87 | + | ||||
| 88 | +# ----------------------------------------------------------------------------- estimations | ||||
| 89 | + | ||||
| 90 | +def did_deux_periodes(se: pd.DataFrame, temoins: str = "tous") -> dict: | ||||
| 91 | + """2 × 2 : cohorte A vs jamais traités (tous, ou de la même RMR).""" | ||||
| 92 | + d = se[se["cohorte"] != "B"].copy() | ||||
| 93 | + if temoins == "meme_rmr": | ||||
| 94 | + d = d[d["rmr"] == RMR_A] | ||||
| 95 | + return pn.did_2x2(d, "y", "id_immeuble", "t", "traite_A", FENETRE_AVANT, FENETRE_APRES) | ||||
| 96 | + | ||||
| 97 | +def placebo_temporel(se: pd.DataFrame) -> dict: | ||||
| 98 | + d = se[(se["cohorte"] != "B") & (se["rmr"] == RMR_A)].copy() | ||||
| 99 | + avant = [PLACEBO_T - 4, PLACEBO_T - 3, PLACEBO_T - 2, PLACEBO_T - 1]; apres = [PLACEBO_T, PLACEBO_T + 1, PLACEBO_T + 2, PLACEBO_T + 3] | ||||
| 100 | + return pn.did_2x2(d, "y", "id_immeuble", "t", "traite_A", avant, apres) | ||||
| 101 | + | ||||
| 102 | +def twfe_statique(se: pd.DataFrame) -> dict: | ||||
| 103 | + commun = pn.twfe(se, "y", ["D"], "id_immeuble", "t") | ||||
| 104 | + regional = pn.twfe(se, "y", ["D"], "id_immeuble", "t", fe_supp="rmr") | ||||
| 105 | + # équivalence within : D doublement centré (cylindré) → même coefficient que les indicatrices | ||||
| 106 | + yw, Xw = pn.within_deux_voies(se["y"].values, se[["D"]].values, se["id_immeuble"].values, se["t"].values) | ||||
| 107 | + bw = float(np.linalg.lstsq(Xw, yw, rcond=None)[0][0]) | ||||
| 108 | + return {"commun": commun, "regional": regional, "within_deux_voies": bw} | ||||
| 109 | + | ||||
| 110 | +def etude_evenement(se: pd.DataFrame, fe_supp: str | None = "rmr") -> pd.DataFrame: | ||||
| 111 | + es = pn.event_study(se, "y", "id_immeuble", "t", "g", fenetre=(-8, 8), ref=-1, fe_supp=fe_supp) | ||||
| 112 | + # vérité par k : moyenne de δ sur les observations traitées regroupées dans chaque indicatrice | ||||
| 113 | + tr = se[se["g"].notna()].copy(); tr["kb"] = tr["k"].clip(-8, 8) | ||||
| 114 | + v = tr.groupby("kb")["delta_vrai"].mean() | ||||
| 115 | + es["vrai"] = [float(v.get(k, 0.0)) if k >= 0 else 0.0 for k in es.index] | ||||
| 116 | + return es | ||||
| 117 | + | ||||
| 118 | +def cs(se: pd.DataFrame, strate: str | None = "rmr", B: int = B_BOOT) -> dict: | ||||
| 119 | + return pn.callaway_santanna(se, "y", "id_immeuble", "t", "g", strate=strate, B=B) | ||||
| 120 | + | ||||
| 121 | +def synthetique(se: pd.DataFrame) -> dict: | ||||
| 122 | + """Unité traitée = moyenne des ln RNE de la cohorte A, centrée sur sa moyenne pré-traitement ; donneurs = 35 jamais traités, | ||||
| 123 | + chacun centré de même (contrôle synthétique « en écarts à la moyenne pré-traitement »).""" | ||||
| 124 | + W = se.pivot(index="id_immeuble", columns="t", values="y") | ||||
| 125 | + coh = se.groupby("id_immeuble")["cohorte"].first() | ||||
| 126 | + A = W.loc[coh[coh == "A"].index].mean(axis=0).values | ||||
| 127 | + donneurs = W.loc[coh[coh == "jamais"].index] | ||||
| 128 | + T0 = T_A | ||||
| 129 | + A_c = A - A[:T0].mean() | ||||
| 130 | + Y0 = (donneurs.values - donneurs.values[:, :T0].mean(axis=1, keepdims=True)).T # (T × J) | ||||
| 131 | + r = pn.controle_synthetique(Y0, A_c, T0) | ||||
| 132 | + r["poids"] = pd.Series(r["poids"], index=donneurs.index) | ||||
| 133 | + r["traite"] = A_c; r["T0"] = T0 | ||||
| 134 | + r["vrai_post"] = float(effet_vrai(np.arange(0, W.shape[1] - T0)).mean()) | ||||
| 135 | + r["placebos"] = pn.placebos_synthetiques(Y0, T0); r["placebos"]["donneur"] = donneurs.index[r["placebos"]["donneur"].values] | ||||
| 136 | + r["ratio_traite"] = r["rmspe_post"] / r["rmspe_pre"] | ||||
| 137 | + r["rang_ratio"] = int((r["placebos"]["ratio"] >= r["ratio_traite"]).sum() + 1) | ||||
| 138 | + return r | ||||
| 139 | + | ||||
| 140 | +def discontinuite(graine: int = GRAINE, n: int = 400, saut: float = 0.05) -> dict: | ||||
| 141 | + """Simulation transversale (fictive) : n immeubles répartis de part et d'autre d'une frontière de zone (x = distance signée en km, | ||||
| 142 | + positive du côté de la zone dense), ln V = 12,9 + 0,03 x + saut·1[x ≥ 0] + ε, ε ~ N(0 ; 0,08²).""" | ||||
| 143 | + rng = np.random.default_rng(graine + 7) | ||||
| 144 | + x = rng.uniform(-2, 2, n); y = 12.9 + 0.03 * x + saut * (x >= 0) + rng.normal(0, 0.08, n) | ||||
| 145 | + res = {hb: pn.rdd_local_lineaire(x, y, hb) for hb in (0.5, 1.0, 2.0)} | ||||
| 146 | + naif = float(y[x >= 0].mean() - y[x < 0].mean()) | ||||
| 147 | + return {"x": x, "y": y, "saut_vrai": saut, "estimations": res, "naif": naif} | ||||
| 148 | + | ||||
| 149 | +def sensibilite(se: pd.DataFrame, tendance: float = 0.01) -> dict: | ||||
| 150 | + """Tendances parallèles violées : +`tendance` par an (log) pour les immeubles traités depuis 2016.""" | ||||
| 151 | + sv = simuler(tendance_diff_annuelle=tendance) | ||||
| 152 | + did_v = pn.did_2x2(sv[(sv["cohorte"] != "B") & (sv["rmr"] == RMR_A)], "y", "id_immeuble", "t", "traite_A", FENETRE_AVANT, FENETRE_APRES) | ||||
| 153 | + tw_v = pn.twfe(sv, "y", ["D"], "id_immeuble", "t", fe_supp="rmr") | ||||
| 154 | + es_v = pn.event_study(sv, "y", "id_immeuble", "t", "g", fenetre=(-8, 8), ref=-1, fe_supp="rmr") | ||||
| 155 | + # pente des coefficients pré-traitement (k = −8 … −2) : diagnostic | ||||
| 156 | + pre = es_v.loc[[k for k in es_v.index if -8 < k < -1]] | ||||
| 157 | + pente_pre = float(np.polyfit(pre.index.values.astype(float), pre["coef"].values, 1)[0]) | ||||
| 158 | + # correction par tendances linéaires propres aux unités traitées (groupe × tendance) | ||||
| 159 | + sv2 = sv.copy(); sv2["tend_tr"] = sv2["g"].notna().astype(float) * sv2["t"] / 4.0 | ||||
| 160 | + tw_tend = pn.twfe(sv2, "y", ["D", "tend_tr"], "id_immeuble", "t", fe_supp="rmr") | ||||
| 161 | + # correction par extrapolation de la tendance pré-traitement (2 × 2 détendancé) : Δy_i − pente_i × écart temporel | ||||
| 162 | + d = sv[(sv["cohorte"] != "B") & (sv["rmr"] == RMR_A) & (sv["t"] < T_A)] | ||||
| 163 | + pentes = d.groupby("id_immeuble").apply(lambda g: np.polyfit(g["t"] / 4.0, g["y"], 1)[0], include_groups=False) | ||||
| 164 | + deltas = did_v["deltas"].set_index("id_immeuble") | ||||
| 165 | + ecart_ans = (np.mean(FENETRE_APRES) - np.mean(FENETRE_AVANT)) / 4.0 | ||||
| 166 | + deltas["dy_det"] = deltas["dy"] - pentes.reindex(deltas.index).values * ecart_ans | ||||
| 167 | + did_det = float(deltas.loc[deltas["traite_A"] == 1, "dy_det"].mean() - deltas.loc[deltas["traite_A"] == 0, "dy_det"].mean()) | ||||
| 168 | + return {"tendance": tendance, "did_2x2": did_v, "twfe_regional": tw_v, "event_study": es_v, "pente_pre": pente_pre, | ||||
| 169 | + "twfe_tendance": tw_tend, "did_detendance": did_det, "ecart_ans": ecart_ans} | ||||
| 170 | + | ||||
| 171 | +def groupes_temoins(se: pd.DataFrame) -> pd.DataFrame: | ||||
| 172 | + """Sensibilité au choix des témoins pour la cohorte A, 2 × 2 sur les fenêtres de référence.""" | ||||
| 173 | + rows = [] | ||||
| 174 | + for nom, d in [("jamais traités, toutes RMR", se[se["cohorte"] != "B"]), | ||||
| 175 | + ("jamais traités, Montréal", se[(se["cohorte"] != "B") & (se["rmr"] == RMR_A)]), | ||||
| 176 | + ("jamais traités, hors Montréal", se[(se["cohorte"] != "B") & ((se["rmr"] != RMR_A) | (se["traite_A"] == 1))]), | ||||
| 177 | + ("pas encore traités (cohorte B)", se[(se["cohorte"] == "B") | (se["traite_A"] == 1)])]: | ||||
| 178 | + r = pn.did_2x2(d, "y", "id_immeuble", "t", "traite_A", FENETRE_AVANT, FENETRE_APRES) | ||||
| 179 | + rows.append({"temoins": nom, "n_temoins": r["n_temoins"], "estimateur": r["estimateur"], "se_hc1": r["se_hc1"]}) | ||||
| 180 | + return pd.DataFrame(rows) | ||||
| 181 | + | ||||
| 182 | +# ----------------------------------------------------------------------------- solutions des exercices (petits jeux) | ||||
| 183 | + | ||||
| 184 | +def exercices() -> dict: | ||||
| 185 | + out = {} | ||||
| 186 | + # ex. 1 : 2 × 2 à la main | ||||
| 187 | + c = {"tr_av": 11.52, "tr_ap": 11.64, "te_av": 11.40, "te_ap": 11.47} | ||||
| 188 | + out["ex1"] = {"did": (c["tr_ap"] - c["tr_av"]) - (c["te_ap"] - c["te_av"]), "pct": 100 * (np.exp((c["tr_ap"] - c["tr_av"]) - (c["te_ap"] - c["te_av"])) - 1)} | ||||
| 189 | + # ex. 2 : within sur trois immeubles × deux périodes (y = ln RNE, x = indicatrice de rénovation) | ||||
| 190 | + y = np.array([11.0, 11.3, 11.6, 11.7, 10.8, 10.9]); x = np.array([0, 1, 0, 1, 0, 0], float); u = np.array([1, 1, 2, 2, 3, 3]) | ||||
| 191 | + yw, Xw = pn.within(y, x[:, None], u) | ||||
| 192 | + b_within = float((Xw[:, 0] @ yw) / (Xw[:, 0] @ Xw[:, 0])) | ||||
| 193 | + b_pooled = float(np.polyfit(x, y, 1)[0]) | ||||
| 194 | + out["ex2"] = {"yw": yw, "xw": Xw[:, 0], "b_within": b_within, "b_pooled": b_pooled} | ||||
| 195 | + # ex. 3 : rapport des erreurs-types (formule de Moulton approchée) : 1 + (m − 1) ρ | ||||
| 196 | + out["ex3"] = {m: float(np.sqrt(1 + (m - 1) * rho)) for m, rho in [(42, 0.5), (42, 0.9), (8, 0.5)]} | ||||
| 197 | + # ex. 5 : poids de Goodman-Bacon pour un plan à deux cohortes sans jamais traités, T = 20 | ||||
| 198 | + T = 20; gk, gl = 5, 15; nk = nl = 0.5 | ||||
| 199 | + Dk = (T - gk) / T; Dl = (T - gl) / T | ||||
| 200 | + nkl = nk / (nk + nl) | ||||
| 201 | + # variance de D doublement centré, calculée exactement sur le panel | ||||
| 202 | + D = np.zeros((2, T)); D[0, gk:] = 1; D[1, gl:] = 1 | ||||
| 203 | + Dt = D - D.mean(1, keepdims=True) - D.mean(0, keepdims=True) + D.mean(); VD = float((Dt ** 2).mean()) | ||||
| 204 | + s_kl = ((nk + nl) * (1 - Dl)) ** 2 * nkl * (1 - nkl) * ((Dk - Dl) / (1 - Dl)) * ((1 - Dk) / (1 - Dl)) / VD | ||||
| 205 | + s_lk = ((nk + nl) * Dk) ** 2 * nkl * (1 - nkl) * (Dl / Dk) * ((Dk - Dl) / Dk) / VD | ||||
| 206 | + out["ex5"] = {"Dk": Dk, "Dl": Dl, "VD": VD, "s_kl": s_kl, "s_lk": s_lk, "somme": s_kl + s_lk} | ||||
| 207 | + # ex. 6 : Callaway–Sant'Anna à la main (cohorte g = 3, base t = 2, périodes 1..4, deux traités, trois témoins) | ||||
| 208 | + tr = np.array([[10.00, 10.05, 10.12, 10.20], [9.50, 9.56, 9.66, 9.72]]) | ||||
| 209 | + te = np.array([[10.20, 10.24, 10.27, 10.31], [9.80, 9.85, 9.89, 9.92], [9.90, 9.93, 9.98, 10.01]]) | ||||
| 210 | + att = {t: float((tr[:, t] - tr[:, 1]).mean() - (te[:, t] - te[:, 1]).mean()) for t in (0, 2, 3)} | ||||
| 211 | + out["ex6"] = {"att": att, "moyenne_post": float(np.mean([att[2], att[3]]))} | ||||
| 212 | + return out | ||||
| 213 | + | ||||
| 214 | +# ----------------------------------------------------------------------------- orchestration | ||||
| 215 | + | ||||
| 216 | +def main(verbose: bool = True) -> dict: | ||||
| 217 | + if "res" in _CACHE: return _CACHE["res"] | ||||
| 218 | + se = simuler(); v = verite(se) | ||||
| 219 | + res = {"panel": se, "verite": v, "traites": choisir_traites(se.groupby("id_immeuble")[["rmr"]].first().reset_index())} | ||||
| 220 | + res["did_tous"] = did_deux_periodes(se, "tous"); res["did_rmr"] = did_deux_periodes(se, "meme_rmr") | ||||
| 221 | + res["placebo"] = placebo_temporel(se) | ||||
| 222 | + res["twfe"] = twfe_statique(se) | ||||
| 223 | + res["es"] = etude_evenement(se, "rmr"); res["es_commun"] = etude_evenement(se, None) | ||||
| 224 | + res["cs"] = cs(se, "rmr"); res["cs_tous"] = cs(se, None, B=99) | ||||
| 225 | + res["bacon"] = pn.bacon(se, "y", "id_immeuble", "t", "g") | ||||
| 226 | + res["sc"] = synthetique(se) | ||||
| 227 | + res["rdd"] = discontinuite() | ||||
| 228 | + res["sens"] = sensibilite(se); res["temoins"] = groupes_temoins(se) | ||||
| 229 | + res["ex"] = exercices() | ||||
| 230 | + _CACHE["res"] = res | ||||
| 231 | + if verbose: imprimer(res) | ||||
| 232 | + return res | ||||
| 233 | + | ||||
| 234 | +def imprimer(res: dict) -> None: | ||||
| 235 | + v = res["verite"]; tr = res["traites"] | ||||
| 236 | + print("== Ch. 36 — choc simulé sur le cas 4 (données synthétiques) ==") | ||||
| 237 | + print(f"Cohorte A ({RMR_A}, 2022T3) : {', '.join(tr['A'])}\nCohorte B ({RMR_B}, 2024T3) : {', '.join(tr['B'])}") | ||||
| 238 | + print(f"Vérité : ATT global {v['att_global']:.4f} ; A {v['att_A']:.4f} ; B {v['att_B']:.4f} ; fenêtre 2x2 {v['att_fenetre_2x2']:.4f}") | ||||
| 239 | + for nom in ("did_tous", "did_rmr", "placebo"): | ||||
| 240 | + r = res[nom]; print(f"{nom}: cellules\n{r['cellules'].round(4)}\n estimateur {r['estimateur']:.4f} ; reg {r['coef_reg']:.4f} (HC1 {r['se_hc1']:.4f}, classique {r['se_classique']:.4f}) ; n_tr {r['n_traites']} n_te {r['n_temoins']}") | ||||
| 241 | + tw = res["twfe"] | ||||
| 242 | + for nom in ("commun", "regional"): | ||||
| 243 | + c = tw[nom]["coef"].loc["D"]; print(f"TWFE {nom}: {c['coef']:.4f} se {c['se']:.4f} hc1 {c['se_hc1']:.4f} grappes {c['se_grappes']:.4f} (k={tw[nom]['k']})") | ||||
| 244 | + print(f"within deux voies : {tw['within_deux_voies']:.4f}") | ||||
| 245 | + print("Event study (rmr × t) :\n", res["es"][["coef", "se_grappes", "ic_bas", "ic_haut", "vrai"]].round(4)) | ||||
| 246 | + c = res["cs"]; print(f"CS (même RMR) : global {c['globale']:.4f} (se {c['globale_se_boot']:.4f})\n{c['par_cohorte'].round(4)}\n{c['dynamique'].round(4)}") | ||||
| 247 | + c2 = res["cs_tous"]; print(f"CS (tous témoins) : global {c2['globale']:.4f}\n{c2['par_cohorte'].round(4)}") | ||||
| 248 | + b = res["bacon"]; print("Bacon :\n", b["table"].round(4), f"\n somme poids {b['somme_poids']:.6f} ; pondéré {b['beta_pondere']:.6f} ; TWFE {b['beta_twfe']:.6f}") | ||||
| 249 | + s = res["sc"]; w = s["poids"][s["poids"] > 0.005].sort_values(ascending=False) | ||||
| 250 | + print(f"Contrôle synthétique : effet moyen post {s['effet_moyen_post']:.4f} (vrai {s['vrai_post']:.4f}) ; RMSPE pré {s['rmspe_pre']:.4f} post {s['rmspe_post']:.4f} ratio {s['ratio_traite']:.2f} rang {s['rang_ratio']}/36\n poids :\n{w.round(3)}") | ||||
| 251 | + r = res["rdd"]; print("RDD :", {hb: (round(e['tau'], 4), round(e['se_hc1'], 4), e['n_eff']) for hb, e in r["estimations"].items()}, "naïf", round(r["naif"], 4)) | ||||
| 252 | + sv = res["sens"]; print(f"Sensibilité (tendance +{sv['tendance']}/an) : 2x2 {sv['did_2x2']['estimateur']:.4f} ; TWFE {sv['twfe_regional']['coef'].loc['D','coef']:.4f} ; pente pré {sv['pente_pre']:.4f} ; TWFE+tend {sv['twfe_tendance']['coef'].loc['D','coef']:.4f} ; 2x2 détendancé {sv['did_detendance']:.4f}") | ||||
| 253 | + print(sv["event_study"][["coef", "se_grappes"]].round(4).T) | ||||
| 254 | + print("Témoins :\n", res["temoins"].round(4)) | ||||
| 255 | + print("Exercices :", {k: (vv if not isinstance(vv, dict) else {kk: (np.round(x, 4) if isinstance(x, (float, np.ndarray)) else x) for kk, x in vv.items()}) for k, vv in res["ex"].items()}) | ||||
| 256 | + | ||||
| 257 | +def controle_croise(res: dict) -> None: | ||||
| 258 | + import statsmodels.api as sm | ||||
| 259 | + from linearmodels.panel import PanelOLS | ||||
| 260 | + se = res["panel"].copy() | ||||
| 261 | + d = se.set_index(["id_immeuble", "t"]) | ||||
| 262 | + m = PanelOLS(d["y"], d[["D"]], entity_effects=True, time_effects=True).fit(cov_type="clustered", cluster_entity=True) | ||||
| 263 | + mine = res["twfe"]["commun"]["coef"].loc["D"] | ||||
| 264 | + print(f"linearmodels PanelOLS : D = {m.params['D']:.6f} se(grappes) {m.std_errors['D']:.6f} | maison {mine['coef']:.6f} / {mine['se_grappes']:.6f}") | ||||
| 265 | + X = pd.concat([pd.DataFrame({"const": 1.0, "D": se["D"]}), pn.indicatrices(se["id_immeuble"], prefixe="u"), pn.indicatrices(se["t"], prefixe="t")], axis=1) | ||||
| 266 | + o = sm.OLS(se["y"].values, X.values).fit(cov_type="cluster", cov_kwds={"groups": pd.factorize(se["id_immeuble"])[0]}) | ||||
| 267 | + print(f"statsmodels OLS grappes : D = {o.params[1]:.6f} se {o.bse[1]:.6f}") | ||||
| 268 | + o2 = sm.OLS(se["y"].values, X.values).fit(cov_type="HC1") | ||||
| 269 | + print(f"statsmodels HC1 : se {o2.bse[1]:.6f} | maison {mine['se_hc1']:.6f}") | ||||
| 270 | + | ||||
| 271 | +if __name__ == "__main__": | ||||
| 272 | + r = main(verbose=True) | ||||
| 273 | + if "--controle" in sys.argv: controle_croise(r) | ||||
added
manuscript/_wrap_ch28.tex
+12 −0
@@ -0,0 +1,12 @@ | |||||
| 1 | +\providecommand{\BUILDVARIANT}{uqo}\providecommand{\BUILDMEDIA}{numerique} | ||||
| 2 | +\documentclass[10pt,twoside,openright]{book} | ||||
| 3 | +\newif\ifLogoAutorise\LogoAutorisefalse\def\PALETTE{uqo} | ||||
| 4 | +\usepackage{traite-qc} | ||||
| 5 | +\input{../manuscript/frontmatter/metadata.tex} | ||||
| 6 | +\input{/Users/simon-pierreboucher/Desktop/UQO/Traite-Evaluation-QC/build/ch28/_labels.tex} | ||||
| 7 | +\begin{document} | ||||
| 8 | +\setcounter{chapter}{27} | ||||
| 9 | +\input{chapters/ch28.tex} | ||||
| 10 | +\appendix\chapter{Solutions du chapitre}\input{../solutions/ch28.tex} | ||||
| 11 | +\printbibliography | ||||
| 12 | +\end{document} | ||||
modified
manuscript/chapters/ch25.tex
+8 −8
@@ -110,7 +110,7 @@ La comparaison directe applique aux terrains la logique des \cref{ch:16,ch:17} : | |||||
| 110 | \begin{equation}\label{eq:25:comparaison} | 110 | \begin{equation}\label{eq:25:comparaison} | ||
| 111 | \hat V_L = \sum_{j=1}^{n} w_j \left( P_j + \sum_{k=1}^{K} A_{jk} \right), \qquad \sum_j w_j = 1 . | 111 | \hat V_L = \sum_{j=1}^{n} w_j \left( P_j + \sum_{k=1}^{K} A_{jk} \right), \qquad \sum_j w_j = 1 . | ||
| 112 | \end{equation} | 112 | \end{equation} | ||
| 113 | −Les ajustements sont dérivés soit de ventes appariées, soit d'un modèle hédonique des terrains ; dans ce dernier cas, l'ajustement pour la caractéristique $k$ est $A_{jk} = B_j\,[\exp(\beta_k (x_{sk} - x_{jk})) - 1]$, appliqué en cascade sur la base $B_j$ déjà ajustée, comme au \cref{ch:17}. Les caractéristiques propres aux terrains, et l'ordre dans lequel elles sont ajustées, font l'objet de la \cref{sec:25:ajustements}. La difficulté de la méthode n'est pas conceptuelle mais empirique : dans un quartier entièrement bâti, les ventes de terrains vacants sont rares, souvent atypiques (terrain enclavé, reliquat, lot issu d'une subdivision), et parfois non sincères (vente à un voisin, à un constructeur lié au vendeur). L'évaluateur élargit alors le rayon et la fenêtre, accepte des terrains de secteurs voisins moyennant un ajustement de localisation, ou recourt aux méthodes indirectes. | 113 | +Les ajustements sont dérivés soit de ventes appariées, soit d'un modèle hédonique des terrains ; dans ce dernier cas, l'ajustement pour la caractéristique $k$ est $A_{jk} = B_j\,[\exp(\beta_k (x_{sk} - x_{jk})) - 1]$, appliqué en cascade sur la base $B_j$ déjà ajustée, comme au \cref{ch:17}. Les caractéristiques propres aux terrains, et l'ordre dans lequel elles sont ajustées, font l'objet de la \cref{sec:25:ajustements}. La difficulté de la méthode est empirique : dans un quartier entièrement bâti, les ventes de terrains vacants sont rares, souvent atypiques (terrain enclavé, reliquat, lot issu d'une subdivision) et parfois non sincères (vente à un voisin ou à un constructeur lié au vendeur). L'évaluateur élargit alors le rayon et la fenêtre, accepte des terrains de secteurs voisins moyennant un ajustement de localisation, ou recourt aux méthodes indirectes. | ||
| 114 | 114 | ||||
| 115 | \subsection{L'allocation} | 115 | \subsection{L'allocation} | ||
| 116 | 116 | ||||
@@ -223,7 +223,7 @@ L'analyse procède alors par la plus haute et meilleure utilisation, que le \cre | |||||
| 223 | \begin{equation}\label{eq:25:densification} | 223 | \begin{equation}\label{eq:25:densification} | ||
| 224 | \hat V_L^{\,\text{dens}} = \frac{V_{\text{achevé}}(n) - C_N(n)\,(1+\tau_E) - C_{\text{démol}}}{(1+r)^{T}}, | 224 | \hat V_L^{\,\text{dens}} = \frac{V_{\text{achevé}}(n) - C_N(n)\,(1+\tau_E) - C_{\text{démol}}}{(1+r)^{T}}, | ||
| 225 | \end{equation} | 225 | \end{equation} | ||
| 226 | −où $T$ est le délai jusqu'à la livraison et $r$ le taux qui reflète le risque du projet. Le terrain intercalaire vaut la plus grande des trois valeurs que lui confèrent la densification, l'usage unifamilial et l'usage actuel de la propriété ; la différence entre la valeur de densification et la valeur unifamiliale mesure ce que le marché paie pour le droit de densifier. La littérature a montré que ce droit est une option : les travaux de \textcite{rosenthalHelsley1994} et de \textcite{munneke1996} sur la décision de redéveloppement, ceux de \textcite{dyeMcmillen2007} et de \textcite{mcmillenOsullivan2013} sur les démolitions-reconstructions résidentielles et ceux de \textcite{clappSalavei2010}, \textcite{clappBardosWong2012} et \textcite{munnekeWomack2020} sur la prime d'option dans les prix des propriétés bâties établissent que la valeur d'un terrain susceptible de densification excède la valeur résiduelle de son meilleur projet immédiat, parce que le propriétaire peut attendre un meilleur moment. Pour l'évaluateur, la conséquence pratique est double : les ventes de propriétés « à démolir » dans un quartier en densification sont des ventes de terrains, et elles constituent souvent les meilleurs comparables d'un terrain intercalaire une fois le coût de démolition ajouté au prix ; et la prime observée sur ces ventes, par rapport à la valeur résiduelle du projet le plus probable, mesure l'option que le marché attribue au site. | 226 | +où $T$ est le délai jusqu'à la livraison et $r$ le taux qui reflète le risque du projet. Le terrain intercalaire vaut la plus grande des trois valeurs que lui confèrent la densification, l'usage unifamilial et l'usage actuel de la propriété ; la différence entre la valeur de densification et la valeur unifamiliale mesure ce que le marché paie pour le droit de densifier. La littérature a montré que ce droit est une option : les travaux de \textcite{rosenthalHelsley1994} et de \textcite{munneke1996} sur la décision de redéveloppement, ceux de \textcite{dyeMcmillen2007} et de \textcite{mcmillenOsullivan2013} sur les démolitions-reconstructions résidentielles et ceux de \textcite{clappSalavei2010}, \textcite{clappBardosWong2012} et \textcite{munnekeWomack2020} sur la prime d'option dans les prix des propriétés bâties établissent que la valeur d'un terrain susceptible de densification excède la valeur résiduelle de son meilleur projet immédiat, parce que le propriétaire peut attendre un meilleur moment. Pour l'évaluateur, la conséquence est double : les ventes de propriétés « à démolir » dans un quartier en densification sont des ventes de terrains, souvent les meilleurs comparables d'un terrain intercalaire une fois le coût de démolition ajouté au prix ; et la prime observée sur ces ventes par rapport à la valeur résiduelle du projet le plus probable mesure l'option que le marché attribue au site. | ||
| 227 | 227 | ||||
| 228 | Dans le jeu synthétique du chapitre, le prix implicite d'un logement constructible supplémentaire est estimé à environ 15 \% du prix d'un terrain unifamilial : un terrain où trois logements sont permis y vaut un tiers de plus que le même terrain limité à un seul. Ce chiffre est une hypothèse de génération, non une mesure d'un marché réel ; il illustre la logique de l'unité par logement constructible. | 228 | Dans le jeu synthétique du chapitre, le prix implicite d'un logement constructible supplémentaire est estimé à environ 15 \% du prix d'un terrain unifamilial : un terrain où trois logements sont permis y vaut un tiers de plus que le même terrain limité à un seul. Ce chiffre est une hypothèse de génération, non une mesure d'un marché réel ; il illustre la logique de l'unité par logement constructible. | ||
| 229 | 229 | ||||
@@ -276,7 +276,7 @@ Secteur Buckingham & -0.1870 & 0.0355 & -17.1 & \\ | |||||
| 276 | Secteur Masson-Angers & -0.2303 & 0.0292 & -20.6 & \\ | 276 | Secteur Masson-Angers & -0.2303 & 0.0292 & -20.6 & \\ | ||
| 277 | Mois depuis juillet 2024 & 0.0028 & 0.0005 & 0.3 & tendance mensuelle \\ | 277 | Mois depuis juillet 2024 & 0.0028 & 0.0005 & 0.3 & tendance mensuelle \\ | ||
| 278 | \midrule | 278 | \midrule | ||
| 279 | −\multicolumn{5}{@{}p{\textwidth}}{$R^2 = 0{,}895$ ; écart-type résiduel 0,089 ; facteur de Duan 1,004 ; effets en pourcentage : $100\,[\exp(\hat\beta) - 1]$ \parencite{halvorsenPalmquist1980}.} \\ | 279 | +\multicolumn{5}{@{}p{\dimexpr\textwidth-2\tabcolsep\relax}}{$R^2 = 0{,}895$ ; écart-type résiduel 0,089 ; facteur de Duan 1,004 ; effets en pourcentage : $100\,[\exp(\hat\beta) - 1]$ \parencite{halvorsenPalmquist1980}.} \\ | ||
| 280 | \bottomrule | 280 | \bottomrule | ||
| 281 | \end{tabularx} | 281 | \end{tabularx} | ||
| 282 | \tabsource{\synth{\texttt{analysis/python/cases/ch25\_terrain.py}, fonction \texttt{hedonique\_terrains} ; MCO de \texttt{traite.hedonique.mco}}.} | 282 | \tabsource{\synth{\texttt{analysis/python/cases/ch25\_terrain.py}, fonction \texttt{hedonique\_terrains} ; MCO de \texttt{traite.hedonique.mco}}.} | ||
@@ -361,8 +361,8 @@ Transposé à 620 m\textsuperscript{2} (\$) & 288 037 & 187 738 & 219 600 & 242 | |||||
| 361 | 361 | ||||
| 362 | \begin{table}[htbp] | 362 | \begin{table}[htbp] | ||
| 363 | \caption{Synthèse des indications de valeur du terrain du sujet du cas 1 (620 m², Hull, 1\ier{} septembre 2026)}\label{tab:25:synthese} | 363 | \caption{Synthèse des indications de valeur du terrain du sujet du cas 1 (620 m², Hull, 1\ier{} septembre 2026)}\label{tab:25:synthese} | ||
| 364 | −\centering\small | 364 | +\centering\footnotesize | ||
| 365 | −\begin{tabular}{@{}l S[table-format=6.0] S[table-format=3.0] l@{}} | 365 | +\begin{tabularx}{\textwidth}{@{}X S[table-format=6.0] S[table-format=3.0] L{46mm}@{}} | ||
| 366 | \toprule | 366 | \toprule | ||
| 367 | Méthode & {Indication (\$)} & {\$/m\textsuperscript{2}} & Appréciation \\ | 367 | Méthode & {Indication (\$)} & {\$/m\textsuperscript{2}} & Appréciation \\ | ||
| 368 | \midrule | 368 | \midrule | ||
@@ -375,13 +375,13 @@ Extraction, âge-vie 60 ans (médiane des cinq) & 354826 & 572 & dépréciation | |||||
| 375 | \midrule | 375 | \midrule | ||
| 376 | Valeur retenue & 265000 & 427 & fourchette \dollars{240000} -- \dollars{285000} \\ | 376 | Valeur retenue & 265000 & 427 & fourchette \dollars{240000} -- \dollars{285000} \\ | ||
| 377 | \bottomrule | 377 | \bottomrule | ||
| 378 | −\end{tabular} | 378 | +\end{tabularx} | ||
| 379 | \tabsource{\synth{\texttt{analysis/python/cases/ch25\_terrain.py}, fonction \texttt{synthese}}.} | 379 | \tabsource{\synth{\texttt{analysis/python/cases/ch25\_terrain.py}, fonction \texttt{synthese}}.} | ||
| 380 | \end{table} | 380 | \end{table} | ||
| 381 | 381 | ||||
| 382 | \section{La technique résiduelle sur le cas 3}\label{sec:25:residuelle-cas3} | 382 | \section{La technique résiduelle sur le cas 3}\label{sec:25:residuelle-cas3} | ||
| 383 | 383 | ||||
| 384 | −L'immeuble de douze logements du cas 3, construit en 1962 sur un terrain de \msq{740} à Rosemont, a été évalué par le revenu au \cref{ch:29} et au \cref{ch:30} ; le \cref{ch:47} y écarte la méthode du coût parce que la dépréciation d'un bâtiment de 1962 ne se mesure pas avec fiabilité. La technique résiduelle du terrain souffre de la même limite, et c'est précisément pourquoi elle est illustrée ici : l'exercice montre ce que la méthode exige, ce qu'elle produit et pourquoi elle ne peut servir que de recoupement pour un immeuble ancien. La \cref{fig:25:schema-residuel} schématise le calcul et le \cref{tab:25:residuelle} en donne les chiffres. | 384 | +L'immeuble de douze logements du cas 3, construit en 1962 sur un terrain de \msq{740} à Rosemont, a été évalué par le revenu au \cref{ch:29} et au \cref{ch:30} ; le \cref{ch:47} y écarte la méthode du coût parce que la dépréciation d'un bâtiment de 1962 ne se mesure pas avec fiabilité. La technique résiduelle du terrain souffre de la même limite, et c'est pourquoi elle est illustrée ici : l'exercice montre ce qu'elle exige, ce qu'elle produit et pourquoi elle ne sert que de recoupement pour un immeuble ancien. La \cref{fig:25:schema-residuel} schématise le calcul et le \cref{tab:25:residuelle} en donne les chiffres. | ||
| 385 | 385 | ||||
| 386 | \begin{figure}[htbp] | 386 | \begin{figure}[htbp] | ||
| 387 | \centering | 387 | \centering | ||
@@ -474,7 +474,7 @@ Flux actualisé & -90000 & 29576 & 674822 & 616480 & 1230878 \\ | |||||
| 474 | \tabsource{\synth{\texttt{analysis/python/cases/ch25\_terrain.py}, fonction \texttt{lotissement} ; prix du lot : modèle hédonique des terrains ; actualisation : \texttt{traite.finance.van}}.} | 474 | \tabsource{\synth{\texttt{analysis/python/cases/ch25\_terrain.py}, fonction \texttt{lotissement} ; prix du lot : modèle hédonique des terrains ; actualisation : \texttt{traite.finance.van}}.} | ||
| 475 | \end{table} | 475 | \end{table} | ||
| 476 | 476 | ||||
| 477 | −Le \cref{tab:25:lotissement} déroule le calcul. La valeur actualisée des flux nets est de \dollars{1230878}, soit \parmsq{123} de site brut et 40,3 \% du produit brut des lots ; la version statique, qui additionne les flux sans les actualiser, donne \dollars{1579602}, soit \parmsq{158}, et surestime le terrain de 28 \% parce qu'elle ignore que les deux tiers du produit n'arrivent qu'après deux et trois ans. Le ratio de 40 \% entre le terrain brut et le produit des lots finis est un repère utile : il dit qu'un hectare brut vaut ici un peu moins de cinq lots finis, et que la viabilisation, les frais et le profit absorbent le reste. | 477 | +Le \cref{tab:25:lotissement} déroule le calcul. La valeur actualisée des flux nets est de \dollars{1230878}, soit \parmsq{123} de site brut et 40,3 \% du produit brut des lots ; la version statique, qui additionne les flux sans les actualiser, donne \dollars{1579602}, soit \parmsq{158}, et surestime le terrain de 28 \% parce qu'elle ignore que les deux tiers du produit n'arrivent qu'après deux et trois ans. Le ratio de 40 \% entre le terrain brut et le produit des lots finis est un repère utile : un hectare brut vaut ici un peu moins de cinq lots finis. | ||
| 478 | 478 | ||||
| 479 | \begin{figure}[htbp] | 479 | \begin{figure}[htbp] | ||
| 480 | \centering | 480 | \centering | ||
modified
manuscript/chapters/ch26.tex
+3 −3
@@ -96,7 +96,7 @@ La \cref{fig:26:chronologie} traduit ces règles en calendrier pour le bail type | |||||
| 96 | \node[below=9pt, text=brandGray] at (2.5,-2) {2026}; \node[below=9pt, text=brandGray] at (9,-2) {2027}; | 96 | \node[below=9pt, text=brandGray] at (2.5,-2) {2026}; \node[below=9pt, text=brandGray] at (9,-2) {2027}; | ||
| 97 | % fenêtre d'avis de modification (30 déc. → 30 mars) : art. 1942 | 97 | % fenêtre d'avis de modification (30 déc. → 30 mars) : art. 1942 | ||
| 98 | \fill[brandSecondary, opacity=0.25] (5.97,0) rectangle (8.97,8); | 98 | \fill[brandSecondary, opacity=0.25] (5.97,0) rectangle (8.97,8); | ||
| 99 | − \node[evtb, above=22mm of {(7.5,0)}, anchor=south] (avis) {Avis de modification\\ du loyer (art.~1942)\\ 30 déc.~2026 → 30 mars 2027}; | 99 | + \node[evtb, above=27mm of {(7.5,0)}, anchor=south] (avis) {Avis de modification\\ du loyer (art.~1942)\\ 30 déc.~2026 → 30 mars 2027}; | ||
| 100 | \draw[brandSecondary] (avis.south) -- (7.47,8); | 100 | \draw[brandSecondary] (avis.south) -- (7.47,8); | ||
| 101 | % début du bail | 101 | % début du bail | ||
| 102 | \draw[tick] (0,0) -- (0,8); \node[evt, above=9mm of {(0,0)}, anchor=south] (deb) {Début du bail\\ 1\ier{} juillet 2026}; | 102 | \draw[tick] (0,0) -- (0,8); \node[evt, above=9mm of {(0,0)}, anchor=south] (deb) {Début du bail\\ 1\ier{} juillet 2026}; | ||
@@ -109,11 +109,11 @@ La \cref{fig:26:chronologie} traduit ces règles en calendrier pour le bail type | |||||
| 109 | \draw[tick] (9.97,0) -- (9.97,8); \draw[tick] (10.97,0) -- (10.97,8); | 109 | \draw[tick] (9.97,0) -- (9.97,8); \draw[tick] (10.97,0) -- (10.97,8); | ||
| 110 | \node[evt, above=9mm of {(10.0,0)}, anchor=south, text width=20mm] (rep2) {Refus du locataire\\ au plus tard\\ 30 avr.~(art.~1945)}; | 110 | \node[evt, above=9mm of {(10.0,0)}, anchor=south, text width=20mm] (rep2) {Refus du locataire\\ au plus tard\\ 30 avr.~(art.~1945)}; | ||
| 111 | \draw[brandPrimary] (rep2.south) -- (9.97,8); | 111 | \draw[brandPrimary] (rep2.south) -- (9.97,8); | ||
| 112 | − \node[evt, above=22mm of {(11.6,0)}, anchor=south, text width=20mm] (tal) {Demande de fixation\\ au TAL au plus tard\\ 30 mai (art.~1947)}; | 112 | + \node[evt, above=27mm of {(11.4,0)}, anchor=south, text width=20mm] (tal) {Demande de fixation\\ au TAL au plus tard\\ 30 mai (art.~1947)}; | ||
| 113 | \draw[brandPrimary] (tal.south) -- (10.97,8); | 113 | \draw[brandPrimary] (tal.south) -- (10.97,8); | ||
| 114 | % échéance et nouveau bail | 114 | % échéance et nouveau bail | ||
| 115 | \draw[tick] (12,0) -- (12,8); | 115 | \draw[tick] (12,0) -- (12,8); | ||
| 116 | − \node[evt, above=9mm of {(13.1,0)}, anchor=south, text width=21mm] (fin) {Terme : 30 juin 2027\\ reconduction (art.~1941)\\ ou nouveau bail 1\ier{} juillet}; | 116 | + \node[evt, above=9mm of {(13.5,0)}, anchor=south, text width=20mm] (fin) {Terme : 30 juin 2027\\ reconduction (art.~1941)\\ ou nouveau bail 1\ier{} juillet}; | ||
| 117 | \draw[brandPrimary] (fin.south) -- (12.05,8); | 117 | \draw[brandPrimary] (fin.south) -- (12.05,8); | ||
| 118 | % nouveau locataire | 118 | % nouveau locataire | ||
| 119 | \draw[tick] (12.33,0) -- (12.33,4); \draw[tick] (14,0) -- (14,4); | 119 | \draw[tick] (12.33,0) -- (12.33,4); \draw[tick] (14,0) -- (14,4); | ||
modified
manuscript/chapters/ch28.tex
+29 −29
@@ -162,10 +162,10 @@ La moyenne indexée lisse les à-coups et convient aux postes irréguliers par n | |||||
| 162 | \caption{Deux conventions de normalisation des postes d'usage du cas~3 : dernière année indexée (règle de l'ouvrage) et moyenne des trois exercices indexée à la première année ($g = \pct{3}$).} | 162 | \caption{Deux conventions de normalisation des postes d'usage du cas~3 : dernière année indexée (règle de l'ouvrage) et moyenne des trois exercices indexée à la première année ($g = \pct{3}$).} | ||
| 163 | \label{tab:28:alternative} | 163 | \label{tab:28:alternative} | ||
| 164 | \centering | 164 | \centering | ||
| 165 | −\small | 165 | +\footnotesize\setlength{\tabcolsep}{3.5pt} | ||
| 166 | −\begin{tabular}{L{44mm}S[table-format=5.2]S[table-format=5.2]S[table-format=-4.2]L{38mm}} | 166 | +\begin{tabular}{L{34mm}S[table-format=5.2]S[table-format=5.2]S[table-format=-4.2]L{32mm}} | ||
| 167 | \toprule | 167 | \toprule | ||
| 168 | −Poste & {Dernière indexée (\$)} & {Moyenne indexée (\$)} & {Écart (\$)} & Lecture \\ | 168 | +Poste & {Dernière indexée} & {Moyenne indexée} & {Écart} & Lecture \\ | ||
| 169 | \midrule | 169 | \midrule | ||
| 170 | Assurances & 11391.80 & 12437.31 & 1045.51 & pointe de 2024, changement d'assureur en 2025 \\ | 170 | Assurances & 11391.80 & 12437.31 & 1045.51 & pointe de 2024, changement d'assureur en 2025 \\ | ||
| 171 | Entretien et réparations & 11745.09 & 11614.34 & -130.75 & tendance régulière, écart faible \\ | 171 | Entretien et réparations & 11745.09 & 11614.34 & -130.75 & tendance régulière, écart faible \\ | ||
@@ -215,13 +215,13 @@ où $n$ est le nombre de logements, $C_k$ le coût de remplacement de la composa | |||||
| 215 | La méthode linéaire ignore le rendement des sommes mises de côté et surestime légèrement la dotation ; le fonds d'amortissement suppose que la dotation est placée au taux $i$ et la réduit d'autant. À taux nul, les deux coïncident, puisque $\lim_{i \to 0} i/[(1+i)^N - 1] = 1/N$. Le \cref{tab:28:reserve} applique les deux méthodes à une liste de composantes dont les coûts et les durées sont des \emph{hypothèses pédagogiques déclarées}, qui ne proviennent d'aucun barème publié : la méthode linéaire donne \dollars{688} par logement et le fonds d'amortissement à \pct{3}, \dollars{581}. La convention du dossier cas~3, \dollars{675} par logement, est donc de l'ordre d'une dotation linéaire pour ces composantes, et plus de six fois le montant de \dollars{100} par logement que le barème de 2015 de la SCHL réservait aux seuls électroménagers \parencite{schlfraisexploitation2015}. Aucune norme publique récente ne fixe la réserve d'un immeuble locatif québécois ; le niveau retenu est une convention du dossier, déclarée comme telle, et sa cohérence avec le taux extrait compte plus que son niveau, comme la suite le démontre. | 215 | La méthode linéaire ignore le rendement des sommes mises de côté et surestime légèrement la dotation ; le fonds d'amortissement suppose que la dotation est placée au taux $i$ et la réduit d'autant. À taux nul, les deux coïncident, puisque $\lim_{i \to 0} i/[(1+i)^N - 1] = 1/N$. Le \cref{tab:28:reserve} applique les deux méthodes à une liste de composantes dont les coûts et les durées sont des \emph{hypothèses pédagogiques déclarées}, qui ne proviennent d'aucun barème publié : la méthode linéaire donne \dollars{688} par logement et le fonds d'amortissement à \pct{3}, \dollars{581}. La convention du dossier cas~3, \dollars{675} par logement, est donc de l'ordre d'une dotation linéaire pour ces composantes, et plus de six fois le montant de \dollars{100} par logement que le barème de 2015 de la SCHL réservait aux seuls électroménagers \parencite{schlfraisexploitation2015}. Aucune norme publique récente ne fixe la réserve d'un immeuble locatif québécois ; le niveau retenu est une convention du dossier, déclarée comme telle, et sa cohérence avec le taux extrait compte plus que son niveau, comme la suite le démontre. | ||
| 216 | 216 | ||||
| 217 | \begin{table}[htbp] | 217 | \begin{table}[htbp] | ||
| 218 | −\caption{Calcul d'une réserve de remplacement par composantes, pour douze logements : méthode linéaire et fonds d'amortissement à \pct{3}. Coûts et durées de vie : hypothèses pédagogiques déclarées, sans source externe.} | 218 | +\caption{Calcul d'une réserve de remplacement par composantes, pour douze logements : méthode linéaire (Lin.) et fonds d'amortissement à \pct{3} (Fonds), en dollars par logement puis pour l'immeuble. Coûts et durées de vie : hypothèses pédagogiques déclarées, sans source externe.} | ||
| 219 | \label{tab:28:reserve} | 219 | \label{tab:28:reserve} | ||
| 220 | \centering | 220 | \centering | ||
| 221 | −\small | 221 | +\footnotesize\setlength{\tabcolsep}{3.5pt} | ||
| 222 | −\begin{tabular}{L{46mm}S[table-format=4.0]S[table-format=2.0]S[table-format=3.2]S[table-format=3.2]S[table-format=4.2]S[table-format=4.2]} | 222 | +\begin{tabular}{L{36mm}S[table-format=4.0]S[table-format=2.0]S[table-format=3.2]S[table-format=3.2]S[table-format=4.2]S[table-format=4.2]} | ||
| 223 | \toprule | 223 | \toprule | ||
| 224 | −Composante & {Coût/log. (\$)} & {Vie (ans)} & {Linéaire/log. (\$)} & {Fonds 3 \%/log. (\$)} & {Linéaire (\$)} & {Fonds 3 \% (\$)} \\ | 224 | +Composante & {Coût/log.} & {Vie (ans)} & {Lin./log.} & {Fonds/log.} & {Lin., 12 log.} & {Fonds, 12 log.} \\ | ||
| 225 | \midrule | 225 | \midrule | ||
| 226 | Cuisinière et réfrigérateur & 2200 & 12 & 183.33 & 155.02 & 2200.00 & 1860.20 \\ | 226 | Cuisinière et réfrigérateur & 2200 & 12 & 183.33 & 155.02 & 2200.00 & 1860.20 \\ | ||
| 227 | Chauffe-eau & 1100 & 10 & 110.00 & 95.95 & 1320.00 & 1151.44 \\ | 227 | Chauffe-eau & 1100 & 10 & 110.00 & 95.95 & 1320.00 & 1151.44 \\ | ||
@@ -272,8 +272,8 @@ Le lecteur cherchera en vain une statistique officielle récente du ratio de dé | |||||
| 272 | \caption{Indicateurs de dépenses des deux dossiers et barème indicatif de la SCHL pour le Québec (avril 2015, non indexé) ; aucune statistique publique plus récente n'est disponible.} | 272 | \caption{Indicateurs de dépenses des deux dossiers et barème indicatif de la SCHL pour le Québec (avril 2015, non indexé) ; aucune statistique publique plus récente n'est disponible.} | ||
| 273 | \label{tab:28:references} | 273 | \label{tab:28:references} | ||
| 274 | \centering | 274 | \centering | ||
| 275 | −\small | 275 | +\footnotesize\setlength{\tabcolsep}{4pt} | ||
| 276 | −\begin{tabular}{L{52mm}S[table-format=5.2]S[table-format=5.2]L{40mm}} | 276 | +\begin{tabular}{L{50mm}S[table-format=5.2]S[table-format=5.2]L{36mm}} | ||
| 277 | \toprule | 277 | \toprule | ||
| 278 | Indicateur & {Cas~3 (12 log.)} & {Cas~2 (triplex)} & Barème SCHL 2015 \\ | 278 | Indicateur & {Cas~3 (12 log.)} & {Cas~2 (triplex)} & Barème SCHL 2015 \\ | ||
| 279 | \midrule | 279 | \midrule | ||
@@ -333,26 +333,26 @@ Le \cref{tab:28:cas3} réunit l'historique des trois exercices, la règle appliq | |||||
| 333 | \caption{Cas~3 : dépenses déclarées 2023-2025, règle de normalisation et montant normalisé de première année (exercice du 1\textsuperscript{er} septembre 2026 au 31 août 2027, dollars courants).} | 333 | \caption{Cas~3 : dépenses déclarées 2023-2025, règle de normalisation et montant normalisé de première année (exercice du 1\textsuperscript{er} septembre 2026 au 31 août 2027, dollars courants).} | ||
| 334 | \label{tab:28:cas3} | 334 | \label{tab:28:cas3} | ||
| 335 | \centering | 335 | \centering | ||
| 336 | −\footnotesize\setlength{\tabcolsep}{3.2pt} | 336 | +\footnotesize\setlength{\tabcolsep}{2.6pt} | ||
| 337 | −\begin{tabular}{L{37mm}S[table-format=5.0]S[table-format=5.0]S[table-format=5.0]L{34mm}S[table-format=5.2]S[table-format=2.1]l} | 337 | +\begin{tabular}{L{33mm}S[table-format=5.0]S[table-format=5.0]S[table-format=5.0]L{30mm}S[table-format=5.2]S[table-format=2.1]l} | ||
| 338 | \toprule | 338 | \toprule | ||
| 339 | −Poste & {2023} & {2024} & {2025} & Règle & {Normalisé (\$)} & {\% RBE} & Type \\ | 339 | +Poste & {2023} & {2024} & {2025} & Règle & {Normalisé} & {\% RBE} & Type \\ | ||
| 340 | \midrule | 340 | \midrule | ||
| 341 | −Taxes municipales & 10649 & 10853 & 10631 & rôle \dollars{2200000} $\times$ 0,4631 \$/100 \$ & 10188.20 & 6.0 & fixe \\ | 341 | +Taxes municipales & 10649 & 10853 & 10631 & rôle $\times$ 0,4631 \$/100 \$ & 10188.20 & 6.0 & fixe \\ | ||
| 342 | Taxe scolaire & 1782 & 1712 & 1744 & rôle $\times$ 0,07899 \$/100 \$ & 1737.78 & 1.0 & fixe \\ | 342 | Taxe scolaire & 1782 & 1712 & 1744 & rôle $\times$ 0,07899 \$/100 \$ & 1737.78 & 1.0 & fixe \\ | ||
| 343 | Assurances & 11474 & 12614 & 11060 & prime 2025 $\times$ 1,03 & 11391.80 & 6.8 & fixe \\ | 343 | Assurances & 11474 & 12614 & 11060 & prime 2025 $\times$ 1,03 & 11391.80 & 6.8 & fixe \\ | ||
| 344 | −Électricité (aires communes) & 3792 & 4062 & 4260 & 2025 $\times$ 1,03 & 4387.80 & 2.6 & variable \\ | 344 | +Électricité (aires communes) & 3792 & 4062 & 4260 & 2025 $\times$ 1,03 & 4387.80 & 2.6 & var. \\ | ||
| 345 | −Chauffage (aires communes, gaz) & 2608 & 2654 & 2892 & 2025 $\times$ 1,03 & 2978.76 & 1.8 & variable \\ | 345 | +Chauffage (aires communes, gaz) & 2608 & 2654 & 2892 & 2025 $\times$ 1,03 & 2978.76 & 1.8 & var. \\ | ||
| 346 | −Eau et égouts & 0 & 0 & 0 & aucune tarification distincte & 0.00 & 0.0 & fixe \\ | 346 | +Eau et égouts & 0 & 0 & 0 & aucune tarification & 0.00 & 0.0 & fixe \\ | ||
| 347 | −Entretien et réparations & 10434 & 11025 & 11403 & 2025 $\times$ 1,03 & 11745.09 & 7.0 & variable \\ | 347 | +Entretien et réparations & 10434 & 11025 & 11403 & 2025 $\times$ 1,03 & 11745.09 & 7.0 & var. \\ | ||
| 348 | −Conciergerie & 8989 & 10227 & 9844 & 2025 $\times$ 1,03 & 10139.32 & 6.0 & variable \\ | 348 | +Conciergerie & 8989 & 10227 & 9844 & 2025 $\times$ 1,03 & 10139.32 & 6.0 & var. \\ | ||
| 349 | −Déneigement et paysagement & 5959 & 6091 & 6686 & 2025 $\times$ 1,03 & 6886.58 & 4.1 & variable \\ | 349 | +Déneigement et paysagement & 5959 & 6091 & 6686 & 2025 $\times$ 1,03 & 6886.58 & 4.1 & var. \\ | ||
| 350 | −Frais juridiques et comptables & 2329 & 2480 & 2751 & 2025 $\times$ 1,03 & 2833.53 & 1.7 & variable \\ | 350 | +Frais juridiques et comptables & 2329 & 2480 & 2751 & 2025 $\times$ 1,03 & 2833.53 & 1.7 & var. \\ | ||
| 351 | −Publicité et location & 1171 & 1232 & 1319 & 2025 $\times$ 1,03 & 1358.57 & 0.8 & variable \\ | 351 | +Publicité et location & 1171 & 1232 & 1319 & 2025 $\times$ 1,03 & 1358.57 & 0.8 & var. \\ | ||
| 352 | −Gestion & {---} & {---} & {---} & imputée, 4 \% du RBE & 6737.76 & 4.0 & variable \\ | 352 | +Gestion & {---} & {---} & {---} & imputée, 4 \% du RBE & 6737.76 & 4.0 & var. \\ | ||
| 353 | \midrule | 353 | \midrule | ||
| 354 | Dépenses d'exploitation hors réserve & & & 62590 & & 70385.19 & 41.8 & \\ | 354 | Dépenses d'exploitation hors réserve & & & 62590 & & 70385.19 & 41.8 & \\ | ||
| 355 | −Réserve de remplacement & 7805 & 7488 & 8103 & maintenue, 675 \$/log. & 8103.00 & 4.8 & réserve \\ | 355 | +Réserve de remplacement & 7805 & 7488 & 8103 & maintenue, 675 \$/log. & 8103.00 & 4.8 & rés. \\ | ||
| 356 | \midrule | 356 | \midrule | ||
| 357 | Dépenses totales & 66992 & 70438 & 70693 & & 78488.19 & 46.6 & \\ | 357 | Dépenses totales & 66992 & 70438 & 70693 & & 78488.19 & 46.6 & \\ | ||
| 358 | \bottomrule | 358 | \bottomrule | ||
@@ -424,8 +424,8 @@ Pour le cas~3, au taux de \pct{4.415}, un dollar de dépense vaut \dollars{22.65 | |||||
| 424 | \caption{Cas~3 : sensibilité du revenu net normalisé et de la valeur par capitalisation directe (taux maintenu à \pct{4.415}) à la réserve par logement, au taux de la taxe municipale (valeur au rôle inchangée) et au taux de gestion.} | 424 | \caption{Cas~3 : sensibilité du revenu net normalisé et de la valeur par capitalisation directe (taux maintenu à \pct{4.415}) à la réserve par logement, au taux de la taxe municipale (valeur au rôle inchangée) et au taux de gestion.} | ||
| 425 | \label{tab:28:sensibilite} | 425 | \label{tab:28:sensibilite} | ||
| 426 | \centering | 426 | \centering | ||
| 427 | −\small | 427 | +\footnotesize\setlength{\tabcolsep}{4pt} | ||
| 428 | −\begin{tabular}{L{62mm}S[table-format=5.2]S[table-format=5.2]S[table-format=7.0]S[table-format=-2.1]} | 428 | +\begin{tabular}{L{54mm}S[table-format=5.2]S[table-format=5.2]S[table-format=7.0]S[table-format=-2.1]} | ||
| 429 | \toprule | 429 | \toprule | ||
| 430 | Paramètre & {Dépense (\$)} & {RNE (\$)} & {Valeur (\$)} & {Écart (\%)} \\ | 430 | Paramètre & {Dépense (\$)} & {RNE (\$)} & {Valeur (\$)} & {Écart (\%)} \\ | ||
| 431 | \midrule | 431 | \midrule | ||
@@ -438,17 +438,17 @@ Réserve : \dollars{900} par logement & 10800.00 & 87258.75 & 1976416 & -3.0 \\ | |||||
| 438 | Réserve : \dollars{1200} par logement & 14400.00 & 83658.75 & 1894875 & -7.0 \\ | 438 | Réserve : \dollars{1200} par logement & 14400.00 & 83658.75 & 1894875 & -7.0 \\ | ||
| 439 | \midrule | 439 | \midrule | ||
| 440 | Taxe : Montréal, taux général 2026 (dossier) & 10188.20 & 89955.75 & 2037503 & 0.0 \\ | 440 | Taxe : Montréal, taux général 2026 (dossier) & 10188.20 & 89955.75 & 2037503 & 0.0 \\ | ||
| 441 | −Taxe : compte 2025 indexé de la hausse moyenne de Rosemont (\pct{5.3}) & 11194.44 & 88949.51 & 2014711 & -1.1 \\ | 441 | +Taxe : compte 2025 indexé de \pct{5.3} (hausse moyenne, Rosemont) & 11194.44 & 88949.51 & 2014711 & -1.1 \\ | ||
| 442 | Taxe : taux général majoré de 10 points de base & 12388.20 & 87755.75 & 1987673 & -2.4 \\ | 442 | Taxe : taux général majoré de 10 points de base & 12388.20 & 87755.75 & 1987673 & -2.4 \\ | ||
| 443 | −Taxe : taux « six logements ou plus » de Gatineau (\num{6.964}~\$/\num{1000}~\$) & 15320.80 & 84823.15 & 1921249 & -5.7 \\ | 443 | +Taxe : taux « six logements ou plus », Gatineau (\num{0.6964}~\$/100~\$) & 15320.80 & 84823.15 & 1921249 & -5.7 \\ | ||
| 444 | −Taxe : taux « six logements et plus » de Québec (\num{0.7697}~\$/100~\$) & 16933.40 & 83210.55 & 1884724 & -7.5 \\ | 444 | +Taxe : taux « six logements et plus », Québec (\num{0.7697}~\$/100~\$) & 16933.40 & 83210.55 & 1884724 & -7.5 \\ | ||
| 445 | \midrule | 445 | \midrule | ||
| 446 | Gestion : aucune (autogestion non imputée) & 0.00 & 96693.51 & 2190113 & 7.5 \\ | 446 | Gestion : aucune (autogestion non imputée) & 0.00 & 96693.51 & 2190113 & 7.5 \\ | ||
| 447 | Gestion : \pct{3} du RBE & 5053.32 & 91640.19 & 2075656 & 1.9 \\ | 447 | Gestion : \pct{3} du RBE & 5053.32 & 91640.19 & 2075656 & 1.9 \\ | ||
| 448 | \textbf{Gestion : \pct{4} du RBE (dossier)} & 6737.76 & 89955.75 & 2037503 & 0.0 \\ | 448 | \textbf{Gestion : \pct{4} du RBE (dossier)} & 6737.76 & 89955.75 & 2037503 & 0.0 \\ | ||
| 449 | Gestion : \pct{5} du RBE (SCHL 2015, TAL) & 8422.20 & 88271.31 & 1999350 & -1.9 \\ | 449 | Gestion : \pct{5} du RBE (SCHL 2015, TAL) & 8422.20 & 88271.31 & 1999350 & -1.9 \\ | ||
| 450 | Gestion : \pct{6} du RBE & 10106.64 & 86586.87 & 1961198 & -3.7 \\ | 450 | Gestion : \pct{6} du RBE & 10106.64 & 86586.87 & 1961198 & -3.7 \\ | ||
| 451 | −Gestion : \pct{10} du RBE (plafond TAL des frais réels) & 16844.39 & 79849.12 & 1808587 & -11.2 \\ | 451 | +Gestion : \pct{10} du RBE (plafond TAL, frais réels) & 16844.39 & 79849.12 & 1808587 & -11.2 \\ | ||
| 452 | \bottomrule | 452 | \bottomrule | ||
| 453 | \end{tabular} | 453 | \end{tabular} | ||
| 454 | \tabsource{\synth{\texttt{ch28\_depenses.sensibilites}, graine 20261031} ; taux de taxes : \textcite{ledevoirmtl2026,gatineaureglement994,vqtaux2026} ; les scénarios de Gatineau et de Québec sont des transpositions de taux à la valeur au rôle montréalaise, non des évaluations de ces villes.} | 454 | \tabsource{\synth{\texttt{ch28\_depenses.sensibilites}, graine 20261031} ; taux de taxes : \textcite{ledevoirmtl2026,gatineaureglement994,vqtaux2026} ; les scénarios de Gatineau et de Québec sont des transpositions de taux à la valeur au rôle montréalaise, non des évaluations de ces villes.} | ||
modified
manuscript/chapters/ch32.tex
+5 −4
@@ -335,17 +335,18 @@ Le \cref{tab:32:indications} rassemble les indications. À partir des cinq compa | |||||
| 335 | \caption{Cas~2 : indications de valeur du triplex selon l'indicateur et l'échantillon, et pondération retenue}\label{tab:32:indications} | 335 | \caption{Cas~2 : indications de valeur du triplex selon l'indicateur et l'échantillon, et pondération retenue}\label{tab:32:indications} | ||
| 336 | \centering | 336 | \centering | ||
| 337 | \footnotesize\setlength{\tabcolsep}{4pt} | 337 | \footnotesize\setlength{\tabcolsep}{4pt} | ||
| 338 | −\begin{tabular}{L{40mm} S[table-format=6.0] S[table-format=6.0] S[table-format=6.0] L{30mm}} | 338 | +\begin{tabular}{L{38mm} S[table-format=6.0] S[table-format=6.0] S[table-format=6.0] L{28mm}} | ||
| 339 | \toprule | 339 | \toprule | ||
| 340 | −{Indicateur} & {127 ventes, brut (\$)} & {127 ventes, ajusté (\$)} & {5 comparables (\$)} & {Retenu (poids)} \\ | 340 | +{Indicateur} & {127 ventes} & {127 ventes} & {5 comparables} & {Retenu (poids)} \\ | ||
| 341 | + & {brut (\$)} & {ajusté (\$)} & {(\$)} & \\ | ||||
| 341 | \midrule | 342 | \midrule | ||
| 342 | Prix par logement $\times$ 3 & 843000 & {900926\textsuperscript{a}} & 918000 & comparables (0,40) \\ | 343 | Prix par logement $\times$ 3 & 843000 & {900926\textsuperscript{a}} & 918000 & comparables (0,40) \\ | ||
| 343 | Multiplicateur $\times$ RBP contractuel & 829110 & 888878 & 922396 & comparables (0,35) \\ | 344 | Multiplicateur $\times$ RBP contractuel & 829110 & 888878 & 922396 & comparables (0,35) \\ | ||
| 344 | Capitalisation du $\NOI_1$ & 695078 & 729549 & 741884 & ajusté $\rho$ (0,25) \\ | 345 | Capitalisation du $\NOI_1$ & 695078 & 729549 & 741884 & ajusté $\rho$ (0,25) \\ | ||
| 345 | Prix au m\textsuperscript{2} $\times$ 262 m\textsuperscript{2} & 838400 & {---} & 878415 & contrôle (0) \\ | 346 | Prix au m\textsuperscript{2} $\times$ 262 m\textsuperscript{2} & 838400 & {---} & 878415 & contrôle (0) \\ | ||
| 346 | \midrule | 347 | \midrule | ||
| 347 | −\multicolumn{5}{L{118mm}}{Indication pondérée : $0{,}40 \times 918\,000 + 0{,}35 \times 922\,396 + 0{,}25 \times 729\,549 = \dollars{872426}$, arrondie au \dollars{5000} près à \dollars{870000}.} \\ | 348 | +\multicolumn{5}{L{114mm}}{Indication pondérée : $0{,}40 \times 918\,000 + 0{,}35 \times 922\,396 + 0{,}25 \times 729\,549 = \dollars{872426}$, arrondie au \dollars{5000} près à \dollars{870000}.} \\ | ||
| 348 | −\multicolumn{5}{L{118mm}}{Ratios implicites de l'indication pondérée : taux global \pct{2.53} ; multiplicateur \num{20.86} ; \dollars{290809} par logement ; \parmsq{3330}.} \\ | 349 | +\multicolumn{5}{L{114mm}}{Ratios implicites de l'indication pondérée : taux global \pct{2.53} ; multiplicateur \num{20.86} ; \dollars{290809} par logement ; \parmsq{3330}.} \\ | ||
| 349 | \bottomrule | 350 | \bottomrule | ||
| 350 | \end{tabular} | 351 | \end{tabular} | ||
| 351 | \tabsource{\synth{\texttt{analysis/python/cases/ch32\_plex.py}, fonction \texttt{indications} ; colonne « ajusté » : taux et multiplicateur ajustés au loyer relatif du sujet par régression ; \textsuperscript{a}~indexation à la date d'évaluation au rythme de \pct{7.29} par an sur l'ancienneté médiane de 11,3 mois, non un ajustement de loyer relatif ; graine 20261031}} | 352 | \tabsource{\synth{\texttt{analysis/python/cases/ch32\_plex.py}, fonction \texttt{indications} ; colonne « ajusté » : taux et multiplicateur ajustés au loyer relatif du sujet par régression ; \textsuperscript{a}~indexation à la date d'évaluation au rythme de \pct{7.29} par an sur l'ancienneté médiane de 11,3 mois, non un ajustement de loyer relatif ; graine 20261031}} | ||
modified
manuscript/chapters/ch33.tex
+18 −18
@@ -170,7 +170,7 @@ Tous les immeubles & 1283 & 1361 & 3.1 & 9.3 \\ | |||||
| 170 | 170 | ||||
| 171 | Pour l'évaluateur, ces régularités ont deux usages. Elles fournissent d'abord les repères de marché propres au type de l'immeuble évalué : un loyer de marché, une inoccupation de référence et une rotation attendue qui ne sont pas ceux de la région dans son ensemble, mais ceux de la tranche de taille et de l'époque de construction du sujet ; le douze logements de 1962 du cas~3 se compare aux immeubles de 6 à 19 logements construits de 1960 à 1974, non à la moyenne de la région. Elles éclairent ensuite la lecture des taux : un immeuble récent de cent logements, loué au marché avec une inoccupation de \pct{5} et une rotation de \pct{12}, a un revenu plus volatil mais sans potentiel de rattrapage, tandis qu'un immeuble sans ascenseur de 1960 a un revenu stable, une inoccupation faible et un potentiel de croissance par rotation ; à taux égal, ces deux immeubles ne portent pas les mêmes anticipations, et l'évaluateur doit s'assurer que les comparables partagent le profil du sujet. Le côté des coûts confirme la séparation des types : l'indice des prix de la construction de bâtiments de Statistique Canada pour Montréal a progressé de \pct{9.2} sur un an au troisième trimestre de 2026 pour les immeubles d'appartements de moins de cinq étages et de \pct{7.9} pour les tours de cinq étages et plus \parencite{statcanIPCB}, ce qui a son importance lorsque la méthode du coût intervient (\cref{sec:33:integration}). | 171 | Pour l'évaluateur, ces régularités ont deux usages. Elles fournissent d'abord les repères de marché propres au type de l'immeuble évalué : un loyer de marché, une inoccupation de référence et une rotation attendue qui ne sont pas ceux de la région dans son ensemble, mais ceux de la tranche de taille et de l'époque de construction du sujet ; le douze logements de 1962 du cas~3 se compare aux immeubles de 6 à 19 logements construits de 1960 à 1974, non à la moyenne de la région. Elles éclairent ensuite la lecture des taux : un immeuble récent de cent logements, loué au marché avec une inoccupation de \pct{5} et une rotation de \pct{12}, a un revenu plus volatil mais sans potentiel de rattrapage, tandis qu'un immeuble sans ascenseur de 1960 a un revenu stable, une inoccupation faible et un potentiel de croissance par rotation ; à taux égal, ces deux immeubles ne portent pas les mêmes anticipations, et l'évaluateur doit s'assurer que les comparables partagent le profil du sujet. Le côté des coûts confirme la séparation des types : l'indice des prix de la construction de bâtiments de Statistique Canada pour Montréal a progressé de \pct{9.2} sur un an au troisième trimestre de 2026 pour les immeubles d'appartements de moins de cinq étages et de \pct{7.9} pour les tours de cinq étages et plus \parencite{statcanIPCB}, ce qui a son importance lorsque la méthode du coût intervient (\cref{sec:33:integration}). | ||
| 172 | 172 | ||||
| 173 | −\section{Les unités d'analyse : par logement, par mètre carré, par chambre}\label{sec:33:unites} | 173 | +\section{Les unités d'analyse : logement, mètre carré, chambre}\label{sec:33:unites} | ||
| 174 | 174 | ||||
| 175 | \subsection{Trois dénominateurs pour un même prix} | 175 | \subsection{Trois dénominateurs pour un même prix} | ||
| 176 | 176 | ||||
@@ -343,21 +343,21 @@ Le \cref{tab:33:cas4-rmr} et la \cref{fig:33:rmr} résument le portefeuille synt | |||||
| 343 | 343 | ||||
| 344 | \begin{table}[htbp]\centering | 344 | \begin{table}[htbp]\centering | ||
| 345 | \caption{Cas 4 : sommaire du portefeuille par région métropolitaine (données synthétiques, valeurs 2026).}\label{tab:33:cas4-rmr} | 345 | \caption{Cas 4 : sommaire du portefeuille par région métropolitaine (données synthétiques, valeurs 2026).}\label{tab:33:cas4-rmr} | ||
| 346 | −\footnotesize\setlength{\tabcolsep}{3pt}\begin{tabular}{@{}l S[table-format=2.0] S[table-format=3.0] S[table-format=9.0] S[table-format=1.2] S[table-format=1.2] c S[table-format=2.1] S[table-format=6.0] S[table-format=5.0] S[table-format=2.1] S[table-format=4.0]@{}} | 346 | +\footnotesize\setlength{\tabcolsep}{2.2pt}\begin{tabular}{@{}l S[table-format=2.0] S[table-format=3.0] S[table-format=9.0] S[table-format=1.2] S[table-format=1.2] c S[table-format=2.1] S[table-format=6.0] S[table-format=4.0]@{}} | ||
| 347 | \toprule | 347 | \toprule | ||
| 348 | −RMR & {Imm.} & {Log.} & {Valeur (\$)} & {Taux pond. (\%)} & {Taux méd. (\%)} & Min–max (\%) & {RPV (\%)} & {Val./log. (\$)} & {RNE/log. (\$)} & {Log./imm.} & {Loyer (\$/mois)} \\ | 348 | +RMR & {Imm.} & {Log.} & {Valeur (\$)} & {$R$ pond. (\%)} & {$R$ méd. (\%)} & {Min–max (\%)} & {RPV (\%)} & {\$/log.} & {Loyer (\$)} \\ | ||
| 349 | \midrule | 349 | \midrule | ||
| 350 | −Montréal & 17 & 316 & 65171000 & 4.49 & 4.60 & 4,00–5,48 & 60.2 & 206237 & 9270 & 18.6 & 1323 \\ | 350 | +Montréal & 17 & 316 & 65171000 & 4.49 & 4.60 & 4,00–5,48 & 60.2 & 206237 & 1323 \\ | ||
| 351 | −Québec & 6 & 200 & 25091000 & 5.77 & 5.67 & 5,50–6,14 & 58.3 & 125455 & 7237 & 33.3 & 1153 \\ | 351 | +Québec & 6 & 200 & 25091000 & 5.77 & 5.67 & 5,50–6,14 & 58.3 & 125455 & 1153 \\ | ||
| 352 | −Gatineau & 8 & 110 & 20259000 & 5.44 & 5.71 & 5,10–6,10 & 61.4 & 184173 & 10011 & 13.8 & 1412 \\ | 352 | +Gatineau & 8 & 110 & 20259000 & 5.44 & 5.71 & 5,10–6,10 & 61.4 & 184173 & 1412 \\ | ||
| 353 | −Sherbrooke & 7 & 132 & 18132000 & 5.74 & 5.71 & 5,34–6,01 & 56.1 & 137364 & 7884 & 18.9 & 1060 \\ | 353 | +Sherbrooke & 7 & 132 & 18132000 & 5.74 & 5.71 & 5,34–6,01 & 56.1 & 137364 & 1060 \\ | ||
| 354 | −Trois-Rivières & 6 & 98 & 11447000 & 6.29 & 6.30 & 6,05–7,00 & 61.8 & 116806 & 7345 & 16.3 & 1049 \\ | 354 | +Trois-Rivières & 6 & 98 & 11447000 & 6.29 & 6.30 & 6,05–7,00 & 61.8 & 116806 & 1049 \\ | ||
| 355 | −Saguenay & 4 & 32 & 3263000 & 6.39 & 6.46 & 5,66–7,17 & 67.2 & 101969 & 6520 & 8.0 & 935 \\ | 355 | +Saguenay & 4 & 32 & 3263000 & 6.39 & 6.46 & 5,66–7,17 & 67.2 & 101969 & 935 \\ | ||
| 356 | \midrule | 356 | \midrule | ||
| 357 | −Portefeuille & 48 & 888 & 143363000 & 5.19 & {—} & {—} & 59.8 & 161445 & 8386 & 18.5 & {—} \\ | 357 | +Portefeuille & 48 & 888 & 143363000 & 5.19 & {—} & {—} & 59.8 & 161445 & {—} \\ | ||
| 358 | \bottomrule | 358 | \bottomrule | ||
| 359 | \end{tabular} | 359 | \end{tabular} | ||
| 360 | −\tabsource{\synth{\texttt{cas4\_portefeuille.csv} ; \texttt{traite/cas4.py}, fonction \texttt{sommaire} ; script \texttt{ch33\_six\_logements.py}. Taux pondéré = RNE agrégé / valeur agrégée ; RPV = dette / valeur.}} | 360 | +\tabsource{\synth{\texttt{cas4\_portefeuille.csv} ; \texttt{traite/cas4.py}, fonction \texttt{sommaire} ; script \texttt{ch33\_six\_logements.py}. Taux pondéré = RNE agrégé / valeur agrégée ; RPV = dette / valeur ; loyer = loyer mensuel moyen des immeubles de la région ; RNE par logement : 9~270~\$ (Montréal), 7~237 (Québec), 10~011 (Gatineau), 7~884 (Sherbrooke), 7~345 (Trois-Rivières), 6~520 (Saguenay), 8~386 (portefeuille) ; taille moyenne des immeubles : 18,6 logements à Montréal, 33,3 à Québec, 13,8 à Gatineau, 18,9 à Sherbrooke, 16,3 à Trois-Rivières, 8,0 au Saguenay.}} | ||
| 361 | \end{table} | 361 | \end{table} | ||
| 362 | 362 | ||||
| 363 | \begin{figure}[htbp]\centering | 363 | \begin{figure}[htbp]\centering | ||
@@ -377,12 +377,12 @@ L'évaluation sommaire par capitalisation directe consiste à appliquer au reven | |||||
| 377 | 377 | ||||
| 378 | \begin{table}[htbp]\centering | 378 | \begin{table}[htbp]\centering | ||
| 379 | \caption{Immeuble P45 (36 logements, Gatineau, 1954, état 2 ; RNE normalisé \dollars{366800}) : taux candidats et indications par capitalisation directe (données synthétiques).}\label{tab:33:p45} | 379 | \caption{Immeuble P45 (36 logements, Gatineau, 1954, état 2 ; RNE normalisé \dollars{366800}) : taux candidats et indications par capitalisation directe (données synthétiques).}\label{tab:33:p45} | ||
| 380 | −\small\begin{tabular}{@{}L{7.0cm}S[table-format=1.3]S[table-format=7.0]S[table-format=6.0]@{}} | 380 | +\small\setlength{\tabcolsep}{4pt}\begin{tabular}{@{}L{6.1cm}S[table-format=1.3]S[table-format=7.0]S[table-format=6.0]@{}} | ||
| 381 | \toprule | 381 | \toprule | ||
| 382 | −Taux candidat & {$R$ (\%)} & {$V = \NOI/R$ (\$)} & {\$ par logement} \\ | 382 | +Taux candidat & {$R$ (\%)} & {$V = \NOI/R$ (\$)} & {\$/logement} \\ | ||
| 383 | \midrule | 383 | \midrule | ||
| 384 | −Médiane des 40 ventes du cas 3 (Montréal, 6-30 log.) — \emph{autre marché} & 4.415 & 8308041 & 230779 \\ | 384 | +Médiane des 40 ventes du cas 3 (Montréal) — \emph{autre marché} & 4.415 & 8308041 & 230779 \\ | ||
| 385 | −Cas 4, Gatineau : taux pondéré (RNE / valeur, 8 immeubles) & 5.436 & 6747739 & 187437 \\ | 385 | +Cas 4, Gatineau : taux pondéré (8 immeubles) & 5.436 & 6747739 & 187437 \\ | ||
| 386 | Cas 4, Gatineau : taux médian (8 immeubles) & 5.710 & 6423818 & 178439 \\ | 386 | Cas 4, Gatineau : taux médian (8 immeubles) & 5.710 & 6423818 & 178439 \\ | ||
| 387 | \textbf{Régression du cas 4, caractéristiques du sujet (retenu)} & \textbf{5.461} & \textbf{6716534} & \textbf{186570} \\ | 387 | \textbf{Régression du cas 4, caractéristiques du sujet (retenu)} & \textbf{5.461} & \textbf{6716534} & \textbf{186570} \\ | ||
| 388 | \quad même immeuble situé à Montréal & 4.565 & 8034343 & 223176 \\ | 388 | \quad même immeuble situé à Montréal & 4.565 & 8034343 & 223176 \\ | ||
@@ -390,7 +390,7 @@ Cas 4, Gatineau : taux médian (8 immeubles) & 5.710 & 6423818 & 178439 \\ | |||||
| 390 | \quad même immeuble en état moyen (3) & 5.245 & 6993820 & 194273 \\ | 390 | \quad même immeuble en état moyen (3) & 5.245 & 6993820 & 194273 \\ | ||
| 391 | Taux inscrit au dossier synthétique (loi de génération) & 5.100 & 7192157 & 199782 \\ | 391 | Taux inscrit au dossier synthétique (loi de génération) & 5.100 & 7192157 & 199782 \\ | ||
| 392 | \midrule | 392 | \midrule | ||
| 393 | −\multicolumn{4}{@{}l}{Repères : valeur enregistrée au dossier \dollars{7186000} (\dollars{199611} par logement, MRB 10,86) ; valeur par logement de la région \dollars{184173}} \\ | 393 | +\multicolumn{4}{@{}L{12.3cm}}{Repères : valeur enregistrée au dossier \dollars{7186000} (\dollars{199611} par logement, MRB 10,86) ; valeur par logement de la région \dollars{184173}} \\ | ||
| 394 | \bottomrule | 394 | \bottomrule | ||
| 395 | \end{tabular} | 395 | \end{tabular} | ||
| 396 | \tabsource{\synth{\texttt{traite/cas4.py}, \texttt{traite/finance.py} (\texttt{capitalisation\_directe}) ; script \texttt{ch33\_six\_logements.py}, fonction \texttt{p45} ; régression décrite à l'\cref{eq:33:modele}.}} | 396 | \tabsource{\synth{\texttt{traite/cas4.py}, \texttt{traite/finance.py} (\texttt{capitalisation\_directe}) ; script \texttt{ch33\_six\_logements.py}, fonction \texttt{p45} ; régression décrite à l'\cref{eq:33:modele}.}} | ||
@@ -398,7 +398,7 @@ Taux inscrit au dossier synthétique (loi de génération) & 5.100 & 7192157 & 1 | |||||
| 398 | 398 | ||||
| 399 | \subsection{Le modèle régional du taux} | 399 | \subsection{Le modèle régional du taux} | ||
| 400 | 400 | ||||
| 401 | −La régression qui fonde les quatre derniers taux est celle de la fonction \texttt{effets\_regionaux} de \texttt{traite.cas4}, reprise ici avec ses résidus pour corriger la prédiction. Elle explique le logarithme du taux global des 48 immeubles par l'état, le logarithme du nombre de logements rapporté à douze, deux indicatrices de risque, l'âge et cinq indicatrices régionales, Montréal servant de référence : | 401 | +La régression qui fonde les quatre derniers taux est celle du portefeuille du cas~4, reprise ici avec ses résidus pour corriger la prédiction ; elle est calculée par la fonction \texttt{effets\_regionaux} du module \texttt{traite.cas4}. Elle explique le logarithme du taux global des 48 immeubles par l'état, le logarithme du nombre de logements rapporté à douze, deux indicatrices de risque, l'âge et cinq indicatrices régionales, Montréal servant de référence : | ||
| 402 | \begin{equation}\label{eq:33:modele} | 402 | \begin{equation}\label{eq:33:modele} | ||
| 403 | \ln R_i = \beta_0 + \beta_e\,(e_i - 3) + \beta_n \ln\frac{n_i}{12} + \beta_z z_i + \beta_s s_i + \beta_a \frac{a_i - 50}{10} + \sum_{r \neq \text{Mtl}} \gamma_r\,\mathbb{1}[\text{RMR}_i = r] + \varepsilon_i, | 403 | \ln R_i = \beta_0 + \beta_e\,(e_i - 3) + \beta_n \ln\frac{n_i}{12} + \beta_z z_i + \beta_s s_i + \beta_a \frac{a_i - 50}{10} + \sum_{r \neq \text{Mtl}} \gamma_r\,\mathbb{1}[\text{RMR}_i = r] + \varepsilon_i, | ||
| 404 | \end{equation} | 404 | \end{equation} | ||
@@ -527,4 +527,4 @@ Un immeuble de vingt-quatre logements livré en 2025 à Montréal a coûté \dol | |||||
| 527 | \section*{Pour aller plus loin} | 527 | \section*{Pour aller plus loin} | ||
| 528 | \addcontentsline{toc}{section}{Pour aller plus loin} | 528 | \addcontentsline{toc}{section}{Pour aller plus loin} | ||
| 529 | 529 | ||||
| 530 | −Les traités d'analyse d'investissement immobilier de \textcite{geltnerMillerClaytonEichholtz2014} et de \textcite{brueggemanFisher2022} restent les références sur la formation des taux, le financement et la lecture du marché institutionnel ; le premier consacre des chapitres éclairants aux indices de valeur et au lissage des évaluations, dont \textcite{geltner1993}, \textcite{fisherGeltnerWebb1994} et \textcite{claytonGeltnerHamilton2001} ont fondé l'étude, et qui expliquent pourquoi les valeurs d'expertise des grands immeubles réagissent avec retard aux mouvements du marché. Sur les déterminants des taux de capitalisation et leurs primes de marché, de taille et de liquidité, on lira \textcite{sivitanidouSivitanides1999}, \textcite{sivitanidesTortoWheaton2003}, \textcite{hendershottMacgregor2005}, \textcite{plazziTorousValkanov2010}, \textcite{chervachidzeWheaton2013} et \textcite{ducaLing2020}. La dépréciation et les dépenses en capital du multirésidentiel, essentielles à la méthode du coût et à la réserve, sont mesurées par \textcite{bokhariGeltner2018} et, pour les logements locatifs, par \textcite{shillingSirmansDombrow1991}. Du point de vue de l'évaluateur, \textcite{appraisal2026} et \textcite{fisherMartin2007} exposent les unités de comparaison, les multiplicateurs et la réconciliation ; \textcite{isakson1986} et \textcite{vandell1991} traitent de la sélection et de la pondération des comparables lorsque ceux-ci sont rares, ce qui est la situation ordinaire des immeubles de plus de vingt logements. Sur les effets de l'encadrement des loyers, qui façonnent la trajectoire du revenu des immeubles anciens, \textcite{arnott1995} et la recension de \textcite{kholodilin2024} sont les points d'entrée. Les textes primaires québécois à relire sont le Code civil (art.~1851 à 1978.4, 1955, 1958, 2695) \parencite{ccq}, la Loi limitant le droit d'éviction \parencite{loi65_2024}, la Loi sur le Tribunal administratif du logement (art.~45) \parencite{loiTAL}, la Loi sur la fiscalité municipale (art.~45.1 et 244.29 et suivants) \parencite{lfm}, le Règlement sur la protection et la réhabilitation des terrains \parencite{rprt}, les Normes de pratique professionnelle de l'OEAQ \parencite{oeaqNormes} et, pour les données, les tableaux de l'Enquête sur les logements locatifs de la SCHL \parencite{schlrmltables2025} et le rapport trimestriel de CBRE \parencite{cbrecaprates2026q3}. | 530 | +Sur la formation des taux, le financement et la lecture du marché institutionnel, les références demeurent les traités de \textcite{geltnerMillerClaytonEichholtz2014} et de \textcite{brueggemanFisher2022} ; le premier consacre des chapitres éclairants aux indices de valeur et au lissage des évaluations, dont \textcite{geltner1993}, \textcite{fisherGeltnerWebb1994} et \textcite{claytonGeltnerHamilton2001} ont fondé l'étude, et qui expliquent pourquoi les valeurs d'expertise des grands immeubles réagissent avec retard aux mouvements du marché. Sur les déterminants des taux de capitalisation et leurs primes de marché, de taille et de liquidité, on lira \textcite{sivitanidouSivitanides1999}, \textcite{sivitanidesTortoWheaton2003}, \textcite{hendershottMacgregor2005}, \textcite{plazziTorousValkanov2010}, \textcite{chervachidzeWheaton2013} et \textcite{ducaLing2020}. La dépréciation et les dépenses en capital du multirésidentiel, essentielles à la méthode du coût et à la réserve, sont mesurées par \textcite{bokhariGeltner2018} et, pour les logements locatifs, par \textcite{shillingSirmansDombrow1991}. Du point de vue de l'évaluateur, \textcite{appraisal2026} et \textcite{fisherMartin2007} exposent les unités de comparaison, les multiplicateurs et la réconciliation ; \textcite{isakson1986} et \textcite{vandell1991} traitent de la sélection et de la pondération des comparables lorsque ceux-ci sont rares, ce qui est la situation ordinaire des immeubles de plus de vingt logements. Sur les effets de l'encadrement des loyers, qui façonnent la trajectoire du revenu des immeubles anciens, \textcite{arnott1995} et la recension de \textcite{kholodilin2024} sont les points d'entrée. Les textes primaires québécois à relire sont le Code civil (art.~1851 à 1978.4, 1955, 1958, 2695) \parencite{ccq}, la Loi limitant le droit d'éviction \parencite{loi65_2024}, la Loi sur le Tribunal administratif du logement (art.~45) \parencite{loiTAL}, la Loi sur la fiscalité municipale (art.~45.1 et 244.29 et suivants) \parencite{lfm}, le Règlement sur la protection et la réhabilitation des terrains \parencite{rprt}, les Normes de pratique professionnelle de l'OEAQ \parencite{oeaqNormes} et, pour les données, les tableaux de l'Enquête sur les logements locatifs de la SCHL \parencite{schlrmltables2025} et le rapport trimestriel de CBRE \parencite{cbrecaprates2026q3}. | ||
modified
manuscript/chapters/ch35.tex
+118 −1
@@ -1,2 +1,119 @@ | |||||
| 1 | \chapter{Indices immobiliers et ventes répétées}\label{ch:35} | 1 | \chapter{Indices immobiliers et ventes répétées}\label{ch:35} | ||
| 2 | −\stubchapter | 2 | + | ||
| 3 | +Les chapitres précédents ont supposé, chaque fois qu'un comparable vendu il y a quinze mois devait être ramené à la date d'évaluation, qu'un indice du marché existait et qu'il était fiable. Le présent chapitre examine cette hypothèse. Un indice de prix immobiliers répond à une question d'apparence simple, « de combien le prix d'un logement \emph{donné} a-t-il varié entre deux dates ? », qui se heurte à une difficulté irréductible : le logement donné ne se vend presque jamais aux deux dates, et les logements qui se vendent à la première ne sont pas ceux qui se vendent à la seconde. Toute la théorie des indices immobiliers consiste à contourner cet obstacle, soit en corrigeant les différences de caractéristiques par un modèle hédonique, soit en ne retenant que les immeubles vendus deux fois, soit en s'appuyant sur une évaluation antérieure de chaque immeuble. Le chapitre expose ces trois familles, en dérive les estimateurs, en mesure les biais et les imprécisions, puis les confronte sur un même marché, celui du cas 1, dont la trajectoire vraie est connue. Il décrit ensuite les indices canadiens et québécois que l'évaluateur rencontre dans sa pratique et dit ce que chacun mesure. La leçon qui s'en dégage est que l'ajustement de conditions du marché, souvent traité comme une formalité, repose sur une mesure dont l'incertitude est du même ordre que celle des ajustements de propriété, et qu'il faut choisir et documenter l'indice avec le même soin que les comparables. | ||||
| 4 | + | ||||
| 5 | +\begin{objectifs} | ||||
| 6 | +À la fin de ce chapitre, le lecteur sait : | ||||
| 7 | +\begin{itemize} | ||||
| 8 | +\item définir un indice de prix à qualité constante et le distinguer d'une série de prix médians ou moyens, dont il peut décomposer le biais de composition ; | ||||
| 9 | +\item construire un indice hédonique par indicatrices temporelles, par chaînage de périodes adjacentes ou par imputation, et dire quand ces trois constructions coïncident ; | ||||
| 10 | +\item dériver l'estimateur de ventes répétées de Bailey, Muth et Nourse et l'estimateur pondéré de Case et Shiller, en comprendre les hypothèses et calculer leurs erreurs-types ; | ||||
| 11 | +\item construire un indice SPAR à partir des prix de vente et des valeurs au rôle, et en connaître les conditions de validité ; | ||||
| 12 | +\item expliquer les biais de sélection des reventes, le mécanisme de révision des indices et la précision attendue selon la taille de l'échantillon ; | ||||
| 13 | +\item lire correctement l'indice Teranet--Banque Nationale, l'Indice des prix des logements neufs, les médianes de l'APCIQ et de JLR, et choisir l'indice approprié à un ajustement de conditions du marché. | ||||
| 14 | +\end{itemize} | ||||
| 15 | +\end{objectifs} | ||||
| 16 | + | ||||
| 17 | +\section{Pourquoi un indice ?}\label{sec:35:pourquoi} | ||||
| 18 | + | ||||
| 19 | +\subsection{Trois usages, une même exigence} | ||||
| 20 | + | ||||
| 21 | +L'évaluateur rencontre les indices de prix dans trois situations. La première est l'\motcle{ajustement de conditions du marché} d'un comparable : le \cref{ch:17} a montré que le prix d'une vente ancienne doit être multiplié par le rapport de l'indice à la date d'évaluation à l'indice à la date de la vente, et que cet ajustement est souvent le plus important de la grille lorsque les prix évoluent de plusieurs points par année. La deuxième est le \emph{suivi du marché} : l'étude de marché du \cref{ch:15}, le rapport d'évaluation, l'analyse du cycle du \cref{ch:03} et la mesure du risque de portefeuille du \cref{ch:48} ont besoin d'une mesure de la variation des prix dégagée des accidents de composition. La troisième, moins familière au praticien québécois, est la construction de \emph{produits financiers} adossés aux prix des maisons : indexation des contrats, assurance de la valeur, contrats à terme et options, que \textcite{shiller2015} a longtemps défendus comme instruments de partage du risque immobilier des ménages et qui exigent un indice publié, reproductible et peu révisé. Les trois usages posent la même exigence : l'indice doit mesurer la variation du prix d'un logement de caractéristiques \emph{constantes}, et non la variation du prix des logements qui se trouvent avoir été vendus. | ||||
| 22 | + | ||||
| 23 | +\begin{definition}{Indice de prix à qualité constante}{indice-qualite-constante} | ||||
| 24 | +Soit $\E[P \mid \mathbf{x}, t]$ le prix espéré à la date $t$ d'un logement de caractéristiques $\mathbf{x}$, au sens de l'\cref{eq:16:esperance}. L'\motcle{indice de prix à qualité constante} entre la période de base $0$ et la période $t$ est le rapport | ||||
| 25 | +\begin{equation}\label{eq:35:indice} | ||||
| 26 | +I_t = 100 \times \frac{\E[P \mid \mathbf{x}, t]}{\E[P \mid \mathbf{x}, 0]}, | ||||
| 27 | +\end{equation} | ||||
| 28 | +pour un panier de caractéristiques $\mathbf{x}$ fixé. Lorsque la fonction de prix est semi-logarithmique à effets temporels additifs, $\ln \E[P \mid \mathbf{x}, t] = \alpha + \mathbf{x}\T\boldsymbol\beta + \tau_t$, le rapport ne dépend pas du panier et vaut $100\exp(\tau_t - \tau_0)$ : l'indice est alors défini sans ambiguïté. Dans le cas général, il dépend du panier retenu, et l'on parle d'indice de Laspeyres, de Paasche ou de Fisher selon le panier. | ||||
| 29 | +\end{definition} | ||||
| 30 | + | ||||
| 31 | +La définition fait apparaître pourquoi aucune statistique calculée directement sur les prix observés ne convient. Les ventes de la période $t$ ont des caractéristiques $\mathbf{x}_i$ qui diffèrent de celles de la période $0$ ; la médiane ou la moyenne de leurs prix mélange la variation du marché et la variation de la composition. Les trois familles de méthodes du chapitre se distinguent par la façon dont elles neutralisent cette composition : la méthode \motcle{hédonique} la mesure explicitement au moyen du modèle du \cref{ch:18} ; la méthode des \motcle{ventes répétées} l'élimine en ne comparant chaque immeuble qu'à lui-même ; la méthode du \motcle{rapport prix sur valeur} (en anglais \emph{sale price appraisal ratio}, SPAR) la neutralise en rapportant chaque prix à une évaluation antérieure du même immeuble. Le \cref{tab:35:taxonomie} résume ces familles, leurs données, leurs hypothèses et leurs faiblesses ; \textcite{hill2013} en donne une taxonomie détaillée pour les méthodes hédoniques, et le manuel international des indices de prix des logements \parencite{eurostat2013} les compare chapitre par chapitre. | ||||
| 32 | + | ||||
| 33 | +\begin{table}[htbp] | ||||
| 34 | +\caption{Familles d'indices de prix des logements : données, hypothèse centrale et faiblesse principale}\label{tab:35:taxonomie} | ||||
| 35 | +\centering\small | ||||
| 36 | +\begin{tabularx}{\textwidth}{@{}lYYY@{}} | ||||
| 37 | +\toprule | ||||
| 38 | +Méthode & Données requises & Hypothèse centrale & Faiblesse principale \\ | ||||
| 39 | +\midrule | ||||
| 40 | +Médiane, moyenne (brutes ou stratifiées) & Prix et date de chaque vente ; strates (type, secteur) & La composition des ventes est stable d'une période à l'autre & Biais de composition ; la stratification ne corrige que les strates observées \\ | ||||
| 41 | +Hédonique à indicatrices temporelles & Prix, date et caractéristiques de chaque vente & Prix implicites constants sur la fenêtre d'estimation ; forme fonctionnelle correcte & Révision de toute la série quand une période s'ajoute ; dépend de la spécification \\ | ||||
| 42 | +Hédonique chaîné (périodes adjacentes) & Idem & Prix implicites constants sur deux périodes seulement & Dérive du chaînage ; variance cumulée \\ | ||||
| 43 | +Hédonique par imputation (Laspeyres, Paasche, Fisher) & Idem, avec un modèle par période & Modèle estimable période par période & Exige beaucoup de ventes par période ; dépend du panier \\ | ||||
| 44 | +Ventes répétées (BMN, Case--Shiller) & Prix et dates des immeubles vendus au moins deux fois & Qualité de l'immeuble constante entre ses deux ventes ; absence de sélection & Sous-échantillon des reventes ; rénovations et dépréciation ; révision ; petits échantillons \\ | ||||
| 45 | +SPAR (prix / valeur au rôle) & Prix de chaque vente et valeur au rôle de l'immeuble à une date de référence commune & Rôle uniforme (ratio prix/valeur indépendant des caractéristiques) & Hérite des biais du rôle ; rupture à chaque nouveau rôle \\ | ||||
| 46 | +Hybride (hédonique + ventes répétées) & Toutes les ventes, caractéristiques connues ou non & Modèle commun aux ventes uniques et répétées & Complexité ; peu diffusé \\ | ||||
| 47 | +\bottomrule | ||||
| 48 | +\end{tabularx} | ||||
| 49 | +\tabsource{synthèse de l'auteur d'après \textcite{eurostat2013}, \textcite{hill2013} et \textcite{bourassaHoesliSun2006}.} | ||||
| 50 | +\end{table} | ||||
| 51 | + | ||||
| 52 | +\subsection{Ce qu'un indice ne mesure pas} | ||||
| 53 | + | ||||
| 54 | +Trois précisions évitent des confusions courantes. D'abord, un indice de prix n'est pas un indice de valeur : il mesure la variation du prix d'un bien de caractéristiques constantes, non la variation de la valeur d'un bien particulier, qui vieillit, se dégrade ou s'améliore entre deux dates. Un immeuble qui a vingt ans à la date d'évaluation et dix-sept ans à la date de la vente comparable n'a pas la même qualité aux deux dates ; l'indice mesure ce que vaudrait aujourd'hui l'immeuble \emph{tel qu'il était}, et l'ajustement d'âge ou d'état, s'il y a lieu, est distinct. Cette distinction est au cœur des travaux de \textcite{knightSirmans1996} et de \textcite{hardingRosenthalSirmans2007} sur la dépréciation mesurée dans les modèles de ventes répétées, sur lesquels la \cref{sec:35:repetees} revient. Ensuite, un indice est propre à un territoire et à un segment : l'indice d'une région métropolitaine agrège des sous-marchés dont les trajectoires peuvent diverger, comme la \cref{fig:35:ipln} le montrera pour les logements neufs des cinq régions métropolitaines québécoises couvertes, et le \cref{ch:17} a rappelé qu'appliquer à une unifamiliale de Gatineau l'indice de la région de Montréal n'est pas un ajustement, mais une erreur de marché. Enfin, un indice est une estimation : il a une variance, qui dépend du nombre de ventes de chaque période, et il est révisé lorsque de nouvelles observations s'ajoutent. Les deux dernières valeurs publiées d'un indice de ventes répétées, celles qui servent justement à l'ajustement de conditions du marché, sont les moins précises et les plus révisées, et le chapitre y revient à la \cref{sec:35:sensibilite}. | ||||
| 55 | + | ||||
| 56 | +\section{Médiane, moyenne et biais de composition}\label{sec:35:mediane} | ||||
| 57 | + | ||||
| 58 | +\subsection{La médiane mesure deux choses à la fois} | ||||
| 59 | + | ||||
| 60 | +Le \motcle{prix médian} est la statistique la plus diffusée, parce qu'elle est simple, robuste aux ventes extrêmes et calculable sans aucune information sur les caractéristiques des biens vendus. C'est précisément cette dernière propriété qui en fait un mauvais indice : si la médiane ne voit pas les caractéristiques, elle ne peut pas les tenir constantes. Supposons que la fonction de prix soit celle du modèle de référence, $\ln P_i = \alpha + \mathbf{x}_i\T\boldsymbol\beta + \tau_{t(i)} + \varepsilon_i$. La moyenne des logarithmes des prix de la période $t$, c'est-à-dire le logarithme de leur moyenne géométrique $\bar P^{\,g}_t$, s'écrit | ||||
| 61 | +\begin{equation}\label{eq:35:decomposition} | ||||
| 62 | +\ln \bar P^{\,g}_t = \alpha + \bar{\mathbf{x}}_t\T\boldsymbol\beta + \tau_t + \bar\varepsilon_t , | ||||
| 63 | +\qquad\text{d'où}\qquad | ||||
| 64 | +\ln \frac{\bar P^{\,g}_t}{\bar P^{\,g}_0} = \underbrace{(\tau_t - \tau_0)}_{\text{variation pure}} + \underbrace{(\bar{\mathbf{x}}_t - \bar{\mathbf{x}}_0)\T\boldsymbol\beta}_{\text{effet de composition}} + (\bar\varepsilon_t - \bar\varepsilon_0), | ||||
| 65 | +\end{equation} | ||||
| 66 | +où $\bar{\mathbf{x}}_t$ est le vecteur des caractéristiques moyennes des ventes de la période $t$. La variation de la moyenne géométrique est la somme de la variation pure des prix, qui est ce que l'indice doit mesurer, et de l'effet de composition, qui est la valeur, aux prix implicites du modèle, du déplacement des caractéristiques moyennes des biens vendus. Si les ventes de la période $t$ comptent plus de maisons grandes, récentes ou situées dans un secteur cher que celles de la période $0$, la moyenne monte sans qu'aucun prix n'ait bougé. La médiane obéit à la même logique, de façon moins algébrique parce qu'elle n'est pas une moyenne, mais avec une sensibilité comparable à la composition. Lorsque les indicatrices temporelles sont estimées par les moindres carrés avec les mêmes données, les résidus somment à zéro dans chaque période et l'\cref{eq:35:decomposition} est une identité exacte : la moyenne géométrique corrigée de la composition, $\exp(\ln \bar P^{\,g}_t - \bar{\mathbf{x}}_t\T\hat{\boldsymbol\beta})$, reproduit exactement l'indice hédonique. C'est la façon la plus directe de voir qu'un indice hédonique \emph{est} une moyenne de prix corrigée de la composition. | ||||
| 67 | + | ||||
| 68 | +L'effet de composition n'est pas un bruit qui s'annule en moyenne. Il est corrélé au cycle : quand les taux d'intérêt montent, les acheteurs se reportent vers des biens plus petits ou plus éloignés, et la médiane baisse davantage que les prix ; quand un segment haut de gamme s'anime, la médiane monte sans que la maison type ne s'apprécie. \textcite{caseShiller1987}, en construisant les premiers indices de ventes répétées pour quatre villes américaines, montraient déjà que les médianes publiées par les associations de courtiers divergeaient des indices à qualité constante dans des proportions qui changeaient de signe selon la phase du cycle. Le \cref{ch:04} a tiré la même leçon des médianes québécoises : une variation de la médiane n'est pas une variation de prix. | ||||
| 69 | + | ||||
| 70 | +\subsection{La stratification et ses limites} | ||||
| 71 | + | ||||
| 72 | +Le remède le plus simple consiste à calculer des médianes par \emph{strates} homogènes, par type de propriété et par secteur, puis à les agréger avec des poids fixes, ceux du parc ou ceux des ventes de la période de base. Cette \motcle{médiane stratifiée} (en anglais \emph{mix-adjusted median}) neutralise la composition \emph{entre} les strates : si les ventes se déplacent de Hull vers Aylmer, l'agrégat à poids fixes ne bouge pas. Elle ne neutralise rien \emph{à l'intérieur} des strates : si, dans Aylmer, les maisons vendues ce trimestre sont plus grandes, la médiane de la strate monte. Le manuel international des indices recommande la stratification comme méthode minimale lorsque les caractéristiques ne sont pas disponibles, et il montre que son efficacité dépend entièrement de la finesse des strates et de la stabilité de la composition intra-strate \parencite{eurostat2013}. Avec des données de rôle ou de courtage qui renseignent la superficie, l'âge et le type, la stratification n'a plus de raison d'être : le modèle hédonique fait la même chose de façon continue et sur toutes les caractéristiques à la fois. | ||||
| 73 | + | ||||
| 74 | +\section{Les indices hédoniques}\label{sec:35:hedonique} | ||||
| 75 | + | ||||
| 76 | +\subsection{L'indice à indicatrices temporelles} | ||||
| 77 | + | ||||
| 78 | +La construction la plus courante estime, sur l'ensemble des ventes de la fenêtre d'étude, le modèle semi-logarithmique du \cref{ch:18} avec une indicatrice pour chaque période sauf la première : | ||||
| 79 | +\begin{equation}\label{eq:35:td} | ||||
| 80 | +\ln P_i = \alpha + \mathbf{x}_i\T\boldsymbol\beta + \sum_{t=1}^{T} \tau_t\, D_{it} + \varepsilon_i, \qquad D_{it} = \mathbb{1}\{t(i) = t\}, | ||||
| 81 | +\end{equation} | ||||
| 82 | +où $t(i)$ est la période de la vente $i$. Le coefficient $\tau_t$ est le logarithme du rapport entre le prix espéré d'un logement de caractéristiques données à la période $t$ et celui du même logement à la période $0$. L'indice, dit \motcle{à indicatrices temporelles} (en anglais \emph{time dummy index}), est | ||||
| 83 | +\begin{equation}\label{eq:35:td-indice} | ||||
| 84 | +\hat I_t = 100\exp(\hat\tau_t), \qquad \hat I_0 = 100, | ||||
| 85 | +\end{equation} | ||||
| 86 | +et c'est ce que calcule la fonction \texttt{indice\_dummies\_temps} du module \texttt{traite.hedonique}. L'intervalle de confiance à 95 \% de $\hat I_t$ s'obtient en retransformant celui de $\hat\tau_t$ : $100\exp(\hat\tau_t \pm 1{,}96\,\hat\sigma_{\hat\tau_t})$, avec une erreur-type robuste à l'hétéroscédasticité. Cette erreur-type dépend d'abord du nombre de ventes de la période $t$ \emph{et} de la période de base : comme $\hat\tau_t$ compare deux moyennes corrigées, sa variance est approximativement $\hat\sigma^2(1/n_t + 1/n_0)$ lorsque les caractéristiques sont équilibrées entre les périodes, et elle est donc gouvernée par la plus petite des deux périodes. Une période de base peu fournie dégrade toute la série ; une dernière période peu fournie dégrade la valeur la plus récente, qui est celle que l'ajustement de conditions du marché utilise. | ||||
| 87 | + | ||||
| 88 | +L'indice à indicatrices a deux qualités et deux défauts. Il utilise toutes les ventes, uniques ou répétées, et il est défini sans ambiguïté de panier. En revanche, il suppose que les prix implicites $\boldsymbol\beta$ sont constants sur toute la fenêtre, ce qui est douteux sur plusieurs années : la prime d'un garage ou d'un secteur peut changer avec le cycle. Et il est \emph{révisé} à chaque nouvelle période : ajouter les ventes de la période $T+1$ réestime $\boldsymbol\beta$ et, par ricochet, tous les $\hat\tau_t$ antérieurs. Pour un indice publié, cette révision rétrospective est un inconvénient sérieux, et c'est la raison pour laquelle les producteurs recourent au chaînage. | ||||
| 89 | + | ||||
| 90 | +\subsection{Le chaînage par périodes adjacentes} | ||||
| 91 | + | ||||
| 92 | +L'\motcle{indice chaîné} estime le modèle sur deux périodes adjacentes seulement, $t-1$ et $t$, avec une seule indicatrice, | ||||
| 93 | +\begin{equation}\label{eq:35:chaine} | ||||
| 94 | +\ln P_i = \alpha_t + \mathbf{x}_i\T\boldsymbol\beta_t + \delta_t\, \mathbb{1}\{t(i) = t\} + \varepsilon_i \quad (i : t(i) \in \{t-1, t\}), \qquad \hat I_t = \hat I_{t-1}\exp(\hat\delta_t), | ||||
| 95 | +\end{equation} | ||||
| 96 | +et enchaîne les variations. Les prix implicites $\boldsymbol\beta_t$ sont libres de changer d'une paire de périodes à l'autre, et l'ajout d'une période ne révise pas les maillons antérieurs, deux avantages décisifs pour la publication. Le prix à payer est double. D'une part, la variance s'accumule : l'erreur-type du logarithme de $\hat I_t$ est la racine de la somme des variances des maillons, $\sqrt{\sum_{s \leq t}\hat\sigma^2_{\hat\delta_s}}$, de sorte que l'incertitude sur le niveau de l'indice croît avec la distance à la base, alors que celle de l'indice à indicatrices reste bornée. D'autre part, le chaînage peut \emph{dériver} : si la composition des ventes oscille d'une période à l'autre et que le modèle est mal spécifié, les erreurs de chaque maillon ne se compensent pas nécessairement, et l'indice chaîné s'écarte de l'indice direct entre les mêmes dates. La variante dite à \emph{fenêtre glissante} (en anglais \emph{rolling window time dummy}), qui estime chaque maillon sur plusieurs périodes plutôt que deux, est un compromis entre les deux constructions ; \textcite{dehaanDiewert2013} en discutent les propriétés et recommandent de documenter la longueur de la fenêtre. | ||||
| 97 | + | ||||
| 98 | +\subsection{L'imputation et les paniers} | ||||
| 99 | + | ||||
| 100 | +La troisième construction renoue avec la théorie classique des indices. On estime un modèle hédonique \emph{par période}, puis l'on impute à chaque logement vendu à la période de base le prix qu'il aurait obtenu à la période $t$, ou réciproquement. En logarithmes, avec $\hat p_s(\mathbf{x}) = \hat\alpha_s + \mathbf{x}\T\hat{\boldsymbol\beta}_s$ le prix prédit à la période $s$ pour les caractéristiques $\mathbf{x}$, l'indice d'\motcle{imputation} géométrique de Laspeyres (panier de la période de base) et celui de Paasche (panier de la période courante) sont | ||||
| 101 | +\begin{equation}\label{eq:35:imputation} | ||||
| 102 | +\ln \hat I^{\,L}_t = \frac{1}{n_0}\sum_{i \in 0}\left[\hat p_t(\mathbf{x}_i) - \hat p_0(\mathbf{x}_i)\right], \qquad | ||||
| 103 | +\ln \hat I^{\,P}_t = \frac{1}{n_t}\sum_{i \in t}\left[\hat p_t(\mathbf{x}_i) - \hat p_0(\mathbf{x}_i)\right], \qquad | ||||
| 104 | +\ln \hat I^{\,F}_t = \tfrac{1}{2}\left(\ln \hat I^{\,L}_t + \ln \hat I^{\,P}_t\right), | ||||
| 105 | +\end{equation} | ||||
| 106 | +l'indice de Fisher étant la moyenne géométrique des deux. La version dite à \emph{double imputation} remplace, pour le panier de base, le prix observé par le prix prédit dans la période de base aussi, ce que l'\cref{eq:35:imputation} fait déjà en utilisant $\hat p_0(\mathbf{x}_i)$ plutôt que $\ln P_i$ : les résidus des ventes individuelles n'entrent pas dans l'indice. Le manuel international recommande cette famille, et en particulier l'indice de Fisher à double imputation, parce qu'elle laisse les prix implicites varier librement d'une période à l'autre et qu'elle se rattache aux indices économiques classiques \parencite{eurostat2013,dehaanDiewert2013}. Son exigence pratique est lourde : il faut assez de ventes dans \emph{chaque} période pour estimer un modèle complet, ce qui exclut les marchés minces et les périodes courtes, sauf à réduire le modèle. | ||||
| 107 | + | ||||
| 108 | +\begin{proposition}{Équivalence de l'imputation et des indicatrices temporelles}{imputation-td} | ||||
| 109 | +Si les modèles de chaque période partagent les mêmes prix implicites $\boldsymbol\beta$ et ne diffèrent que par leur constante, de sorte que $\hat p_t(\mathbf{x}) - \hat p_0(\mathbf{x}) = \hat\tau_t$ pour tout $\mathbf{x}$, alors les indices d'imputation géométriques de Laspeyres, de Paasche et de Fisher coïncident entre eux et avec l'indice à indicatrices temporelles : $\hat I^{\,L}_t = \hat I^{\,P}_t = \hat I^{\,F}_t = 100\exp(\hat\tau_t)$. | ||||
| 110 | +\end{proposition} | ||||
| 111 | +\begin{proof} | ||||
| 112 | +Sous l'hypothèse, chaque terme des sommes de l'\cref{eq:35:imputation} vaut $\hat\tau_t$ quel que soit $i$ ; les moyennes sur $n_0$ ou $n_t$ termes valent donc $\hat\tau_t$, et leur demi-somme aussi. L'exponentielle donne l'indice de l'\cref{eq:35:td-indice}. | ||||
| 113 | +\end{proof} | ||||
| 114 | + | ||||
| 115 | +La proposition dit où se situe la différence entre les constructions : uniquement dans la liberté laissée aux prix implicites de varier. Avec des prix implicites communs, l'imputation n'apporte rien ; avec des prix implicites propres à chaque période, l'écart entre Laspeyres et Paasche mesure l'interaction entre le changement des prix implicites et le changement de composition, exactement comme dans la théorie des indices de prix à la consommation. L'exemple intégral vérifie numériquement la proposition sur le cas 1, puis estime l'indice chaîné pour voir ce que la liberté des coefficients change sur un marché où, par construction, les prix implicites sont constants. | ||||
| 116 | + | ||||
| 117 | +\subsection{Ce que la spécification fait à l'indice} | ||||
| 118 | + | ||||
| 119 | +Un indice hédonique hérite de toutes les hypothèses du modèle sous-jacent, et le \cref{ch:18} en a dressé la liste. Deux conséquences propres aux indices méritent d'être soulignées. La première concerne les variables omises : si une caractéristique qui contribue au prix et dont la fréquence change au fil du temps est absente du modèle, sa contribution est absorbée par les indicatrices temporelles, et l'indice mesure en partie la composition qu'il prétend neutraliser. Un indice construit sans variable de localisation fine, sur un marché où les ventes se déplacent vers les quartiers centraux, surestime la hausse des prix. La seconde concerne l'âge. Dans un modèle estimé sur plusieurs années, l'âge de chaque logement à sa vente et la date de la vente sont presque colinéaires pour un logement donné ; sur l'ensemble des ventes, la colinéarité n'est pas parfaite parce que les années de construction diffèrent, mais \textcite{clappGiaccotto1998} ont montré que la façon dont l'âge est spécifié affecte directement les effets temporels estimés. L'indice à indicatrices mesure la variation du prix \emph{à âge constant}, ce qui est bien ce que l'on veut pour l'ajustement d'un comparable que l'on ramène à la date d'évaluation sans le vieillir ; l'indice de ventes répétées, lui, laisse l'immeuble vieillir entre ses deux ventes, et la \cref{sec:35:repetees} dit comment en tenir compte. | ||||
added
references/lib-ch26.bib
+21 −0
@@ -0,0 +1,21 @@ | |||||
| 1 | +% ============================================================================== | ||||
| 2 | +% lib-ch26.bib — Chapitre 26 (Baux et loyers), rédigé le 2026-10-31. | ||||
| 3 | +% AUCUNE NOUVELLE ENTRÉE : toutes les citations du chapitre et des solutions utilisent des clés | ||||
| 4 | +% déjà présentes dans references/library.bib : | ||||
| 5 | +% ccq, loiTAL, reglCriteresFixation, decret1455_2025, reglFormulairesBail, loi31_2024, loi65_2024, | ||||
| 6 | +% loi111_2026, talIndices2026, talCommunique2026, talCommunique2025, talResumesDecisions, | ||||
| 7 | +% talFormulaireRN2026, oaciqFormulaireDV, oaciqContexteDV, schlLocatif2025, schlrmltables2025, | ||||
| 8 | +% hydrotarifs2026, regieenergie2026, patterson2024demenagement, appraisal2026, fisherMartin2007, | ||||
| 9 | +% aiDictionary2022, wyatt2022, baumCrosbyDevaney2021, arnott1995, kholodilin2024, glaeserLuttmer2003, | ||||
| 10 | +% sims2007, autorPalmerPathak2014, diamondMcquadeQian2019, smith1988, fallisSmith1985. | ||||
| 11 | +% | ||||
| 12 | +% Sources consultées pour ce chapitre sans entrée bib nouvelle (déjà couvertes par les clés ci-dessus) : | ||||
| 13 | +% - texte intégral du C.c.Q. (LégisQuébec, document/lc/ccq-1991, 2026-10-31) : art. 1877-1880 vérifiés | ||||
| 14 | +% spécifiquement pour la section sur les baux commerciaux (clé ccq) ; | ||||
| 15 | +% - tableaux Excel SCHL d'octobre 2025 (rmr-montreal-2025-fr.xlsx, rmr-quebec-2025-fr.xlsx) : taux de rotation | ||||
| 16 | +% (clé schlrmltables2025). | ||||
| 17 | +% | ||||
| 18 | +% Références volontairement NON créées (voir verification/chapters/ch26-claims.csv) : | ||||
| 19 | +% - aucune statistique officielle de facture moyenne d'électricité d'un logement (CLM-26-025, non_verifie) ; | ||||
| 20 | +% - aucun loyer commercial de marché pour les artères québécoises (aucune source publique vérifiable). | ||||
| 21 | +% ============================================================================== | ||||
modified
references/lib-ch27.bib
+1 −1
@@ -3,7 +3,7 @@ | |||||
| 3 | % AUCUNE NOUVELLE ENTRÉE : toutes les citations du chapitre utilisent des clés déjà | 3 | % AUCUNE NOUVELLE ENTRÉE : toutes les citations du chapitre utilisent des clés déjà | ||
| 4 | % présentes dans references/library.bib : | 4 | % présentes dans references/library.bib : | ||
| 5 | % appraisal2026, appraisalCdn, fisherMartin2007, brueggemanFisher2022, | 5 | % appraisal2026, appraisalCdn, fisherMartin2007, brueggemanFisher2022, | ||
| 6 | −% geltnerMillerClaytonEichholtz2014 (non cité finalement), wheaton1999, dipasqualeWheaton1996, | 6 | +% wheaton1999, dipasqualeWheaton1996, | ||
| 7 | % sivitanidouSivitanides1999, arnott1995, kholodilin2024, | 7 | % sivitanidouSivitanides1999, arnott1995, kholodilin2024, | ||
| 8 | % schlLocatif2025, schlrmltables2025, schlpmh2026ete, statcanipc, | 8 | % schlLocatif2025, schlrmltables2025, schlpmh2026ete, statcanipc, | ||
| 9 | % talIndices2026, talCommunique2025, talFormulaireRN2026, talResumesDecisions, | 9 | % talIndices2026, talCommunique2025, talFormulaireRN2026, talResumesDecisions, | ||
modified
sources/registry.csv
+1 −0
@@ -378,4 +378,5 @@ SRC-23-005,page_web,Accréditation — Entrepreneur,Garantie de construction ré | |||||
| 378 | SRC-23-006,page_web,"Contribution pour fins de parcs, de terrains de jeux et d'espaces naturels — Guide de la prise de décision en urbanisme",Gouvernement du Québec (MAMH),Dernière mise à jour 2026-10-07,https://www.quebec.ca/habitation-territoire/amenagement-developpement-territoires/amenagement-territoire/guide-prise-decision-urbanisme/financement-maitrise-fonciere/contribution-parcs-terrains-jeux-espaces-naturels,2026-10-31,verifie,23,10 % ; valeur au rôle ou par évaluateur agréé mandaté par la municipalité ; à la réception de la demande de permis ; TAQ ; art. 117.1 à 117.16.1 | 378 | SRC-23-006,page_web,"Contribution pour fins de parcs, de terrains de jeux et d'espaces naturels — Guide de la prise de décision en urbanisme",Gouvernement du Québec (MAMH),Dernière mise à jour 2026-10-07,https://www.quebec.ca/habitation-territoire/amenagement-developpement-territoires/amenagement-territoire/guide-prise-decision-urbanisme/financement-maitrise-fonciere/contribution-parcs-terrains-jeux-espaces-naturels,2026-10-31,verifie,23,10 % ; valeur au rôle ou par évaluateur agréé mandaté par la municipalité ; à la réception de la demande de permis ; TAQ ; art. 117.1 à 117.16.1 | ||
| 379 | SRC-23-007,loi,"Loi sur l'aménagement et l'urbanisme, art. 117.6 (texte)",LégisQuébec / CanLII,—,https://www.legisquebec.gouv.qc.ca/fr/document/lc/A-19.1,2026-10-31,inaccessible,23,HTTP 403 sur LégisQuébec et CanLII le 2026-10-31 ; art. 117.1-117.4 lus par le lot B (SRC-B-038) | 379 | SRC-23-007,loi,"Loi sur l'aménagement et l'urbanisme, art. 117.6 (texte)",LégisQuébec / CanLII,—,https://www.legisquebec.gouv.qc.ca/fr/document/lc/A-19.1,2026-10-31,inaccessible,23,HTTP 403 sur LégisQuébec et CanLII le 2026-10-31 ; art. 117.1-117.4 lus par le lot B (SRC-B-038) | ||
| 380 | SRC-25-001,donnees_synthetiques,ch25_terrains_ventes.csv — 200 ventes synthétiques de terrains vacants (Gatineau fictif),Auteur (analysis/python/cases/ch25_terrain.py),"Généré le 2026-10-31, graine 20261031",data/synthetic/ch25_terrains_ventes.csv,2026-10-31,verifie,25,Lois déclarées dans data/synthetic/README.md (section « Chapitre 25 ») ; prix de référence 225 000 $ = hypothèse pédagogique ; aucune vente réelle utilisée | 380 | SRC-25-001,donnees_synthetiques,ch25_terrains_ventes.csv — 200 ventes synthétiques de terrains vacants (Gatineau fictif),Auteur (analysis/python/cases/ch25_terrain.py),"Généré le 2026-10-31, graine 20261031",data/synthetic/ch25_terrains_ventes.csv,2026-10-31,verifie,25,Lois déclarées dans data/synthetic/README.md (section « Chapitre 25 ») ; prix de référence 225 000 $ = hypothèse pédagogique ; aucune vente réelle utilisée | ||
| 381 | +SRC-26-001,web,Jour du déménagement au Québec (L'Encyclopédie canadienne),Historica Canada,2024-04-23,https://thecanadianencyclopedia.ca/fr/article/jour-du-demenagement-au-quebec,2026-10-31,partiellement_verifie,ch26,Clé patterson2024demenagement déjà dans library.bib ; source secondaire pour l'historique du 1er juillet | ||||
| 381 | # Aucune nouvelle source : le chapitre 47 ne cite que des clés déjà présentes dans references/library.bib (voir ch47.md).,,,,,,,,, | 382 | # Aucune nouvelle source : le chapitre 47 ne cite que des clés déjà présentes dans references/library.bib (voir ch47.md).,,,,,,,,, | ||
modified
tools/BRIEFS-PHASE4.md
+1 −1
@@ -62,7 +62,7 @@ Chaque consigne complète le gabarit `tools/BRIEF-CHAPITRE.md` (à lire en premi | |||||
| 62 | 62 | ||||
| 63 | **Ch. 26 Baux et loyers.** Notes : A (bail de logement 1851-2000 : formulaire obligatoire, reconduction 1941-1946, avis, 1937 vente et bail, 1954-1955 clause F et modifs 2024 c. 2 / 2026 c. 1, cession 1870-1876 et 1978.1-1978.4 Loi 31, reprise/éviction 1957-1970 et Loi 65 moratoire → 6 juin 2027, 1910 habitabilité ; TAL loi et règlement). Données : cas 3 (`traite.cas3.revenus` : contrat vs marché par logement, ancienneté) et cas 2 (`traite.cas2`). Figures : contrat vs marché (barres par logement, cas 3) ; distribution de l'ancienneté. Équations : loyer normalisé (services inclus), VA de l'écart contractuel/marché. Baux commerciaux : bases seulement. | 63 | **Ch. 26 Baux et loyers.** Notes : A (bail de logement 1851-2000 : formulaire obligatoire, reconduction 1941-1946, avis, 1937 vente et bail, 1954-1955 clause F et modifs 2024 c. 2 / 2026 c. 1, cession 1870-1876 et 1978.1-1978.4 Loi 31, reprise/éviction 1957-1970 et Loi 65 moratoire → 6 juin 2027, 1910 habitabilité ; TAL loi et règlement). Données : cas 3 (`traite.cas3.revenus` : contrat vs marché par logement, ancienneté) et cas 2 (`traite.cas2`). Figures : contrat vs marché (barres par logement, cas 3) ; distribution de l'ancienneté. Équations : loyer normalisé (services inclus), VA de l'écart contractuel/marché. Baux commerciaux : bases seulement. | ||
| 64 | 64 | ||||
| 65 | −**Ch. 27 Revenus potentiels, vacance et pertes.** Notes : E (SCHL inoccupation par RMR, par taille d'immeuble (île 6-19 : 2,2 %), rotation 9,4 % Montréal / 13 % Québec, variation loyers +7,2 %), A (TAL 2026 pourcentages). Données : cas 3 (`revenus` : RBP 165 540 $, marché 186 036 $, autres 12 240 $, RBE 168 444 $) et cas 2. Inoccupation économique vs physique ; projection des loyers (indice SCHL vs TAL vs marché). Figures : inoccupation par RMR (barres, SCHL cité) ; RBP→RBE (cascade). | 65 | +**Ch. 27 Revenus potentiels, vacance et pertes.** Notes : E (SCHL inoccupation par RMR, par taille d'immeuble (île 6-19 : 2,2 %), rotation 9,4 % Montréal / 13 % Québec, variation loyers +7,2 %), A (TAL 2026 pourcentages). Données : cas 3 (`revenus` : RBP 165 540 $, marché 186 036 $, autres 9 360 $, RBE 168 444 $) et cas 2. Inoccupation économique vs physique ; projection des loyers (indice SCHL vs TAL vs marché). Figures : inoccupation par RMR (barres, SCHL cité) ; RBP→RBE (cascade). | ||
| 66 | 66 | ||||
| 67 | **Ch. 28 Dépenses, réserves, CAPEX et RNE.** Notes : E (SCHL frais d'exploitation 2015, TAL gestion 5 %/10 %, taxes 2026 Montréal 0,4631 $/100 $ + scolaire 0,07899, assurance 1 103 $ moyenne habitation 2024 (BAC), Hydro tarif D), B (taxes Québec/Gatineau). Données : cas 3 (`depenses_normalisees` : tableau historique 2023-2025 → normalisé ; RNE 89 956 $ ; ratio 46,6 %) et cas 2. Convention réserve/CAPEX (conventions-calcul). Figures : structure des dépenses (barres) ; évolution 2023-2025. Équations : RNE, ratio, réserve par logement. | 67 | **Ch. 28 Dépenses, réserves, CAPEX et RNE.** Notes : E (SCHL frais d'exploitation 2015, TAL gestion 5 %/10 %, taxes 2026 Montréal 0,4631 $/100 $ + scolaire 0,07899, assurance 1 103 $ moyenne habitation 2024 (BAC), Hydro tarif D), B (taxes Québec/Gatineau). Données : cas 3 (`depenses_normalisees` : tableau historique 2023-2025 → normalisé ; RNE 89 956 $ ; ratio 46,6 %) et cas 2. Convention réserve/CAPEX (conventions-calcul). Figures : structure des dépenses (barres) ; évolution 2023-2025. Équations : RNE, ratio, réserve par logement. | ||
| 68 | 68 | ||||
modified
verification/calculations.csv
+24 −0
@@ -443,3 +443,27 @@ CALC-27-016,27,"Trajectoires RBP : TAL seul, rotation 9,4 %, rotation 15 %, marc | |||||
| 443 | CALC-27-017,27,"Cohérence inter-chapitres : RBE, RBP, projection de base et V_DCF = traite.cas3.tout() (ch. 29, 30, 47)",analysis/python/cases/ch27_revenus.py,analysis/python/tests/test_ch27.py::test_cascade_cas3_identites;test_trajectoires,égalité à 1e-12,égalité,verifie,2026-10-31 | 443 | CALC-27-017,27,"Cohérence inter-chapitres : RBE, RBP, projection de base et V_DCF = traite.cas3.tout() (ch. 29, 30, 47)",analysis/python/cases/ch27_revenus.py,analysis/python/tests/test_ch27.py::test_cascade_cas3_identites;test_trajectoires,égalité à 1e-12,égalité,verifie,2026-10-31 | ||
| 444 | CALC-27-018,27,"Exercices 27.1-27.8 (RBP 78 360/87 000 ; RBE 80 025,60/79 833,60/79 929,60 ; v_f Québec 1,083/1,625 % ; concession 1 191,67 ; cas 2 ; mini-projection 47 400→62 177,79 ; V(2,9)/V(5,9) ; ratios SCHL 1,234/1,345/3,77)",analysis/python/cases/ch27_revenus.py (exercices ; mini_projection),analysis/python/tests/test_ch27.py::test_exercices;test_mini_projection,voir solutions/ch27.tex,idem,verifie,2026-10-31 | 444 | CALC-27-018,27,"Exercices 27.1-27.8 (RBP 78 360/87 000 ; RBE 80 025,60/79 833,60/79 929,60 ; v_f Québec 1,083/1,625 % ; concession 1 191,67 ; cas 2 ; mini-projection 47 400→62 177,79 ; V(2,9)/V(5,9) ; ratios SCHL 1,234/1,345/3,77)",analysis/python/cases/ch27_revenus.py (exercices ; mini_projection),analysis/python/tests/test_ch27.py::test_exercices;test_mini_projection,voir solutions/ch27.tex,idem,verifie,2026-10-31 | ||
| 445 | CALC-27-019,27,"Nouvelles fonctions de bibliothèque : traite.finance.taux_vacance_frictionnelle, loyer_effectif_concession (identités : linéarité, 12 mois = ρ, 1/12 ≡ 2/24, erreurs sur arguments négatifs)",analysis/python/traite/finance.py,analysis/python/tests/test_ch27.py::test_vacance_frictionnelle_identites;test_loyer_effectif_concession,identités vraies,identités vraies,verifie,2026-10-31 | 445 | CALC-27-019,27,"Nouvelles fonctions de bibliothèque : traite.finance.taux_vacance_frictionnelle, loyer_effectif_concession (identités : linéarité, 12 mois = ρ, 1/12 ≡ 2/24, erreurs sur arguments négatifs)",analysis/python/traite/finance.py,analysis/python/tests/test_ch27.py::test_vacance_frictionnelle_identites;test_loyer_effectif_concession,identités vraies,identités vraies,verifie,2026-10-31 | ||
| 446 | +CALC-32-001,32,"RBP contractuel du cas 2 (3 baux × 12) et RBP aux loyers de marché ; écart 7 500 $ (15,2 %) ; loyer relatif ρ_s",analysis/python/cases/ch32_plex.py (traite.cas2.revenus),analysis/python/tests/test_ch32.py::test_coherence_cas2_partage,41832;49332;0.848,41832.00;49332.00;0.8480,verifie,2026-10-31 | ||||
| 447 | +CALC-32-002,32,"RBE = RBP(1−3 %) ; dépenses normalisées (gestion imputée 4 % du RBE = 1 623,08 $ ; réserve 1 800 $) ; RNE normalisé ; ratio 45,7 %",analysis/python/cases/ch32_plex.py (traite.cas2.rne),analysis/python/tests/test_ch32.py::test_coherence_cas2_partage,40577.04;18543.08;22033.96;0.457,40577.04;18543.08;22033.9584;0.4570,verifie,2026-10-31 | ||||
| 448 | +CALC-32-003,32,"RNE aux loyers de marché (mêmes dépenses, gestion 4 % du RBE de marché)",analysis/python/cases/ch32_plex.py::calculer,analysis/python/tests/test_ch32.py::test_sensibilite,29017.96,29017.96,verifie,2026-10-31 | ||||
| 449 | +CALC-32-004,32,"Indicateurs des 127 ventes (60 duplex, 67 triplex, 4 quartiers, 24 mois) : MRB médian 19,68 (triplex 19,82), taux médian 3,17 % (Q1 2,76, Q3 3,62), prix/logement 285 667 $ (triplex 281 000 $), prix/m² 3 200 $",analysis/python/cases/ch32_plex.py (traite.cas2.indicateurs_marche),analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,127;19.82;0.0317;281000,127;19.82;0.0317;281000,verifie,2026-10-31 | ||||
| 450 | +CALC-32-005,32,Indicateurs médians par taille et par quartier (tableau 32.3),analysis/python/cases/ch32_plex.py::indicateurs_par_groupe,analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,duplex 583 500 $ / triplex 843 000 $ ; Limoilou 718 000 $,583500;843000;718000,verifie,2026-10-31 | ||||
| 451 | +CALC-32-006,32,"Identité R = (1−v)(1−d)/MRB sur chaque vente (v = 2,4 %, d = ratio de la vente)",analysis/python/cases/ch32_plex.py::decomposition_taux,analysis/python/tests/test_ch32.py::test_identite_mrb_taux,écart max < 2e-4,< 2e-4,verifie,2026-10-31 | ||||
| 452 | +CALC-32-007,32,"Décomposition R_c = ρ R_m (dépenses proportionnelles) ; taux au marché médian 3,41 % vs 3,17 % au contrat ; ρ médian 0,947 ; MRB marché médian 18,33",analysis/python/cases/ch32_plex.py::decomposition_taux,analysis/python/tests/test_ch32.py::test_decomposition_rho,0.0341;0.0317;0.947,0.0341;0.0317;0.9468,verifie,2026-10-31 | ||||
| 453 | +CALC-32-008,32,"Régression taux = a + b(ρ−1) sur 127 ventes : a = 3,451 %, b = 0,0284, R² 0,071, σ 0,685 % ; avec état et taille : a 3,426 %, b_ρ 0,0302, b_état −0,0007, b_n −0,0006, R² 0,080 ; ln MRB = 2,9109 − 0,9564(ρ−1), R² 0,108",analysis/python/cases/ch32_plex.py::regression_taux_loyer_relatif,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,0.03451;0.0284;-0.9564,0.034514;0.02838;-0.9564,verifie,2026-10-31 | ||||
| 454 | +CALC-32-009,32,"Indications brutes des 127 ventes : MRB 829 110,24 $ ; capitalisation 695 077,55 $ ; par logement 843 000 $ ; au m² 838 400 $ (identiques à traite.cas2.tout, ch. 46)",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,829110.24;695077.55;843000;838400,829110.24;695077.55;843000.00;838400.00,verifie,2026-10-31 | ||||
| 455 | +CALC-32-010,32,"Taux ajusté au loyer relatif du sujet 3,02 % → V_cap 729 549 $ ; MRB ajusté 21,25 → 888 878 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,0.0302;729549;888878,0.030202;729549.19;888877.79,verifie,2026-10-31 | ||||
| 456 | +CALC-32-011,32,"Sélection de 5 comparables triplex Limoilou parmi 28 candidats par distance d'attributs (6 caractéristiques, échelles et poids déclarés) : Q0187, Q0222, Q0243, Q0207, Q0235",analysis/python/cases/ch32_plex.py::selection_comparables (traite.comparables.distance_attributs),analysis/python/tests/test_ch32.py::test_comparables_selection,28 candidats ; 5 retenus,28;5,verifie,2026-10-31 | ||||
| 457 | +CALC-32-012,32,"Médianes des 5 comparables : prix/logement 306 000 $, MRB 22,05, taux 2,97 %, prix/m² 3 352,73 $ → indications 918 000 $, 922 395,60 $, 741 884 $, 878 415 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,918000;922396;741884;878415,918000;922395.60;741884.12;878414.55,verifie,2026-10-31 | ||||
| 458 | +CALC-32-013,32,"Indication pondérée 0,40 × 918 000 + 0,35 × 922 396 + 0,25 × 729 549 = 872 425,76 $ ≈ 870 000 $ ; taux implicite 2,53 % ; MRB implicite 20,86 ; 290 809 $/log. ; 3 330 $/m² ; +76,2 % vs rôle 495 000 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,872426;870000;0.0253;20.86,872425.76;870000;0.02526;20.855,verifie,2026-10-31 | ||||
| 459 | +CALC-32-014,32,"Explication de l'écart capitalisation/comparaison : RNE au ratio médian des ventes (35,7 %) 26 091 $ → 863 880 $ ; indexation du prix/logement des 127 ventes (ancienneté médiane 11,3 mois, 7,29 %/an) → 900 926 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,863880;900926,863879.94;900926.12,verifie,2026-10-31 | ||||
| 460 | +CALC-32-015,32,"Prime d'occupation (R* = 5,00 %, borne basse CBRE Québec basse hauteur B) : 440 679 $ + 139 680 $ + 292 067 $ (33,5 %) = 872 426 $ ; en taux : 5,00 → R_m 3,33 % → R_c 2,53 %",analysis/python/cases/ch32_plex.py::prime_occupant,analysis/python/tests/test_ch32.py::test_prime_occupant,440679.17;139680;292067;0.335,440679.17;139680.00;292066.59;0.3348,verifie,2026-10-31 | ||||
| 461 | +CALC-32-016,32,Mise de fonds minimale assurée (Finances Canada 2024) : 450 000 → 22 500 ; 843 000 → 59 300 ; 870 000 → 62 000 ; 1 200 000 → 95 000 ; 1 500 000 → 125 000 ; 1 600 000 → non assurable,analysis/python/cases/ch32_plex.py::mise_de_fonds_minimale_assuree,analysis/python/tests/test_ch32.py::test_mise_de_fonds_minimale,22500;59300;62000;95000;125000;NaN,22500;59300;62000;95000;125000;nan,verifie,2026-10-31 | ||||
| 462 | +CALC-32-017,32,"Financement de l'acheteur-occupant : prêt 808 000 $ (RPV 92,9 %), 4,12 % composé semestriellement, 300 mois → 4 302,97 $/mois, 51 635,62 $/an, constante 6,39 % ; intérêts an 1 32 654,64 $, capital an 1 18 980,98 $ ; solde après 60 mois 704 858,60 $ ; TAM 6,12 % → 5 227,41 $/mois",analysis/python/cases/ch32_plex.py::financement_occupant (traite.finance.Hypotheque),analysis/python/tests/test_ch32.py::test_financement_occupant,4302.97;51635.62;5227.41;704858.60,4302.9687;51635.6243;5227.4114;704858.6046,verifie,2026-10-31 | ||||
| 463 | +CALC-32-018,32,"Coût net d'occupation (reprise du RC) : 51 635,62 + 16 920 + 2 219,60 − 28 389,96 = 42 385,26 $/an = 3 532,11 $/mois ; hors capital (−1 719,02) 1 813,08 $/mois vs loyer de marché 1 430 $ (+26,8 %)",analysis/python/cases/ch32_plex.py::cout_occupation,analysis/python/tests/test_ch32.py::test_financement_occupant,42385.26;3532.11;1813.08,42385.2643;3532.1054;1813.0821,verifie,2026-10-31 | ||||
| 464 | +CALC-32-019,32,"Sensibilité au loyer relatif (ρ 0,85/0,90/0,95/1,00) : V_cap taux ajusté 731 244 / 771 019 / 807 385 / 840 764 ; V_cap taux médian 698 021 / 770 478 / 842 936 / 915 393 ; V_MRB 924 605 / 978 994 / 1 033 382 / 1 087 771 ; écart 74 629 $ à ρ = 1",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,monotonie ; RNE(ρ=1) = RNE marché,ok,verifie,2026-10-31 | ||||
| 465 | +CALC-32-020,32,"Sensibilité au taux (2,50 → 4,00 % par 25 pb) : 881 358 ; 801 235 ; 734 465 ; 677 968 ; 629 542 ; 587 572 ; 550 849 $",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,V = RNE/R,ok,verifie,2026-10-31 | ||||
| 466 | +CALC-32-021,32,"Scénarios de financement (tableau 32.8 C) : 30 ans 3 897,25 $/mois ; MF 10 % 4 169,83 ; non assuré 20 % à 4,58 % 3 883,19 (hors capital 2 044,28) ; +100 pb 4 754,72 (2 458,56) ; +200 pb 5 227,41 (3 108,26)",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,ordre des coûts,ok,verifie,2026-10-31 | ||||
| 467 | +CALC-32-022,32,"Élasticité de la valeur capitalisée aux loyers (dépenses fixes) = RBE/RNE = 40 577/22 034 = 1,84",analysis/python/cases/ch32_plex.py (calcul direct),—,1.84,1.8416,verifie,2026-10-31 | ||||
| 468 | +CALC-32-023,32,"Contrôle investisseur : 80 % du prix (696 000 $) non assuré 4,58 %/25 ans → SD 46 598 $, RCD 0,47, flux −24 564 $",analysis/python/cases/ch32_plex.py (traite.finance.Hypotheque),—,46598;0.47;-24564,46598;0.473;-24564,verifie,2026-10-31 | ||||
| 469 | +CALC-32-024,32,"Exercices 32.1 à 32.7 (MRB 18,75 ; mises de fonds ; décomposition 105,4 pb ; coût d'occupation 2e 3 668,88 $ ; régression ; pondérations 856 648 / 805 809 / 920 198 ; VA du manque à gagner 4 335,85 / 12 835,08 / 40 791,47 $)",analysis/python/cases/ch32_plex.py::exercices,analysis/python/tests/test_ch32.py::test_exercices,voir solutions/ch32.tex,ok,verifie,2026-10-31 | ||||
added
verification/chapters/ch26-registry.csv
+19 −0
@@ -0,0 +1,19 @@ | |||||
| 1 | +id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes | ||||
| 2 | +SRC-A-001,loi,"Code civil du Québec (RLRQ, c. CCQ-1991)",Québec / LégisQuébec,À jour au 15 octobre 2026,https://www.legisquebec.gouv.qc.ca/fr/document/lc/ccq-1991,2026-10-31,verifie,ch26,"RATTACHEMENT : art. 1851-1880, 1892-1896, 1904-1913, 1936-1938, 1941-1955, 1957-1970, 1978.1-1978.4, 2695 ; texte intégral HTML téléchargé et relu article par article le 2026-10-31 (art. 1877-1880 vérifiés spécifiquement pour ce chapitre)" | ||||
| 3 | +SRC-A-002,loi,"Loi sur le Tribunal administratif du logement (RLRQ, c. T-15.01)",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,ch26,"RATTACHEMENT : art. 28, 56.3, 91" | ||||
| 4 | +SRC-A-003,reglement,"Règlement sur les critères de fixation de loyer (RLRQ, c. T-15.01, r. 2)",Québec / LégisQuébec,À jour au 1er juillet 2026 (D. 1455-2025 en vigueur le 1er janvier 2026),"https://www.legisquebec.gouv.qc.ca/fr/document/rc/T-15.01,%20r.%202",2026-10-31,verifie,ch26,"RATTACHEMENT : art. 1, 3, 3.1, 5, 6" | ||||
| 5 | +SRC-A-005,page_web,Pourcentages applicables aux critères de fixation de loyer (2025 et 2026),Tribunal administratif du logement,2026,https://www.tal.gouv.qc.ca/fr/reconduction-du-bail-et-fixation-de-loyer/pourcentages-applicables-aux-criteres-de-fixation-de-loyer,2026-10-31,verifie,ch26,"RATTACHEMENT : 3,1 % (2026), 4,5 % (2025) ; 2027 non publié" | ||||
| 6 | +SRC-A-006,page_web,Le calcul de l'ajustement des loyers en 2026 (communiqué du 19 janvier 2026),Tribunal administratif du logement,2026-01-19,https://www.tal.gouv.qc.ca/fr/actualites/detail?code=le-calcul-de-l-ajustement-des-loyers-en-2026,2026-10-31,verifie,ch26,"RATTACHEMENT : nouvelle méthode, pourcentage de base" | ||||
| 7 | +SRC-A-009,guide,Formulaire « Renseignements nécessaires à la fixation du loyer » (RN) — Fixation 2026-2027,Tribunal administratif du logement,TAL-004-E RN (2025-11),https://www.tal.gouv.qc.ca/sites/default/files/RN_2026_F.pdf,2026-10-31,verifie,ch26,"RATTACHEMENT : revenus de décembre × 12, locaux non résidentiels" | ||||
| 8 | +SRC-A-011,page_web,Résumés de décisions — Fin et renouvellement du bail (fixation de loyer),Tribunal administratif du logement,2026,https://www.tal.gouv.qc.ca/fr/resumes-decisions-fin-et-renouvellement-du-bail,2026-10-31,verifie,ch26,"RATTACHEMENT : valeur marchande locative non critère ; exception 5 ans ; section G" | ||||
| 9 | +SRC-A-012,reglement,"Règlement sur les formulaires de bail obligatoires et sur les mentions de l'avis au nouveau locataire (RLRQ, c. T-15.01, r. 3)",Québec / LégisQuébec,À jour au 1er juillet 2026 (D. 1453-2025),"https://www.legisquebec.gouv.qc.ca/fr/document/rc/T-15.01,%20r.%203",2026-10-31,verifie,ch26,"RATTACHEMENT : formulaires, prix 2,99 $, transition un an" | ||||
| 10 | +SRC-A-013,loi,"Loi modifiant diverses dispositions législatives en matière d'habitation (projet de loi no 31), L.Q. 2024, c. 2",Québec / Gazette officielle,Sanctionnée le 21 février 2024,https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2024F/83195.pdf,2026-10-31,verifie,ch26,"RATTACHEMENT : art. 3 (1896), 9 (1955), 10-14 (1962-1968), 15-16 (1978.1-1978.4), 86 (transitoire)" | ||||
| 11 | +SRC-A-014,loi,"Loi limitant le droit d'éviction des locateurs et renforçant la protection des locataires aînés (projet de loi no 65), L.Q. 2024, c. 23",Québec / Gazette officielle,Sanctionnée le 6 juin 2024,https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2024F/83591.pdf,2026-10-31,verifie,ch26,"RATTACHEMENT : art. 1 (moratoire 6 juin 2027), 2, 11 ; 1959.1" | ||||
| 12 | +SRC-A-026,guide,Formulaire obligatoire « Déclarations du vendeur sur l'immeuble » (DV),OACIQ,V24 06/2022,,2026-10-31,verifie,ch26,"RATTACHEMENT : D2.6 loyers, avis, dossiers TAL ; URL = celle du registre existant" | ||||
| 13 | +SRC-A-028,page_web,Contexte d'utilisation du formulaire obligatoire Déclarations du vendeur sur l'immeuble,OACIQ,2026,,2026-10-31,verifie,ch26,"RATTACHEMENT : champ < 5 logements ; URL = celle du registre existant" | ||||
| 14 | +SRC-A-038,jurisprudence,"Décisions du TAL en fixation de loyer (résumés officiels)",Tribunal administratif du logement,2021-2024,https://www.tal.gouv.qc.ca/fr/resumes-decisions-fin-et-renouvellement-du-bail,2026-10-31,partiellement_verifie,ch26,"RATTACHEMENT : résumés seulement, pas de référence neutre" | ||||
| 15 | +SRC-E-007,rapport,Rapport sur le marché locatif — données d'octobre 2025 (page web + tableaux Excel par RMR),SCHL,2025-12-11,https://www.cmhc-schl.gc.ca/fr/professionnels/marche-du-logement-donnees-et-recherche/marches-de-lhabitation/rapports-sur-le-marche-locatif,2026-10-31,verifie,ch26,"RATTACHEMENT : loyers moyens, variation +7,2 %, inoccupation ; taux de rotation lus dans rmr-montreal-2025-fr.xlsx (tabl. 1.1.6, 1.3.4) et rmr-quebec-2025-fr.xlsx (tabl. 1.1.6) le 2026-10-31" | ||||
| 16 | +SRC-E-037,document,Tarifs d'électricité en vigueur le 1er avril 2026 (section 2.5 — structure du tarif D),Hydro-Québec,2026-04-01,https://www.hydroquebec.com/data/documents-donnees/pdf/tarifs-electricite.pdf?v=20261001,2026-10-31,verifie,ch26,"RATTACHEMENT : redevance 46,154 ¢/j ; 7,065 et 11,142 ¢/kWh ; seuil 40 kWh/j" | ||||
| 17 | +SRC-E-038,communique,"Décision D-2026-033 — hausse tarifaire moyenne 3,2 % ; domestique 3,0 % (2026), 3,0 % (2027), 2,6 % (2028)",Régie de l'énergie,2026-03-16,https://www.regie-energie.qc.ca/storage/app/media/la-regie/publications-documentations-conference-colloques/communiques-de-presse/2026/cp-20260316-hqd.pdf,2026-10-31,verifie,ch26,"RATTACHEMENT : indexation 2027 du coût d'électricité" | ||||
| 18 | +SRC-B-001,loi,"Loi sur la fiscalité municipale (RLRQ, c. F-2.1)",Québec / LégisQuébec,À jour au 15 octobre 2026,https://www.legisquebec.gouv.qc.ca/fr/document/lc/F-2.1,2026-10-31,verifie,ch26,"RATTACHEMENT : art. 45.1 cité par renvoi au ch. 2" | ||||
| 19 | +SRC-26-001,web,"Jour du déménagement au Québec (L'Encyclopédie canadienne)",Historica Canada,2024-04-23,https://thecanadianencyclopedia.ca/fr/article/jour-du-demenagement-au-quebec,2026-10-31,partiellement_verifie,ch26,"Clé patterson2024demenagement déjà dans library.bib ; source secondaire pour l'historique du 1er juillet" | ||||
modified
verification/chapters/ch27-claims.csv
+1 −1
@@ -8,7 +8,7 @@ CLM-27-006,27,"SCHL oct. 2025, île de Montréal, inoccupation selon l'année de | |||||
| 8 | CLM-27-007,27,"Univers de l'ELL : appartements d'initiative privée dans les immeubles de 3 logements et plus, centres de 10 000 habitants et plus ; enquête en octobre ; copropriétés louées dans une enquête distincte (tableaux 4) ; définitions géographiques du Recensement 2021",SRC-E-007,En-têtes et notes des tableaux Excel ; notes-E.md ; ch. 4 (définition 4.x),2026-10-31,verifie, | 8 | CLM-27-007,27,"Univers de l'ELL : appartements d'initiative privée dans les immeubles de 3 logements et plus, centres de 10 000 habitants et plus ; enquête en octobre ; copropriétés louées dans une enquête distincte (tableaux 4) ; définitions géographiques du Recensement 2021",SRC-E-007,En-têtes et notes des tableaux Excel ; notes-E.md ; ch. 4 (définition 4.x),2026-10-31,verifie, | ||
| 9 | CLM-27-008,27,"Indicateurs de qualité SCHL : a excellent, b très bon, c bon, d passable ; ** données supprimées ; flèches = variation significative ; « – » = échantillon insuffisant pour interpréter la variation",SRC-E-007,Notes de bas de tableau des fichiers Excel (lues par script),2026-10-31,verifie,Le motif précis de suppression (fiabilité ou confidentialité) n'est pas explicité dans les tableaux : formulé comme « échantillon ne permettant pas d'estimation fiable » | 9 | CLM-27-008,27,"Indicateurs de qualité SCHL : a excellent, b très bon, c bon, d passable ; ** données supprimées ; flèches = variation significative ; « – » = échantillon insuffisant pour interpréter la variation",SRC-E-007,Notes de bas de tableau des fichiers Excel (lues par script),2026-10-31,verifie,Le motif précis de suppression (fiabilité ou confidentialité) n'est pas explicité dans les tableaux : formulé comme « échantillon ne permettant pas d'estimation fiable » | ||
| 10 | CLM-27-009,27,"SCHL, variation « même échantillon » des loyers oct. 2024→2025 : Montréal 2 ch. +7,2 %, tous +7,4 % ; ensemble des RMR de +4,5 % (Gatineau) à +12,5 % (Saguenay)",SRC-E-007,notes-E.md §ch. 4 (tableau 1.1.5),2026-10-31,verifie, | 10 | CLM-27-009,27,"SCHL, variation « même échantillon » des loyers oct. 2024→2025 : Montréal 2 ch. +7,2 %, tous +7,4 % ; ensemble des RMR de +4,5 % (Gatineau) à +12,5 % (Saguenay)",SRC-E-007,notes-E.md §ch. 4 (tableau 1.1.5),2026-10-31,verifie, | ||
| 11 | −CLM-27-010,27,"SCHL Perspectives été 2026 : inoccupation RMR Montréal 3,8 % (2026), 4,5 % (2027), 4,8 % (2028)",SRC-C-045,notes-C.md §4.6 (schlpmh2026ete),2026-10-31,partiellement_verifie,Extraction du rapport ; à relire sur le PDF (même statut qu'au ch. 30) | 11 | +CLM-27-010,27,"SCHL Perspectives été 2026 : inoccupation RMR Montréal 3,8 % (2026), 4,5 % (2027), 4,8 % (2028)",SRC-C-045,notes-C.md §4.6 (schlpmh2026ete),2026-10-31,partiellement_verifie,Source au registre « verifie » ; les trois valeurs annuelles sont extraites du rapport par le lot C et à relire sur le PDF (même statut qu au ch. 30) | ||
| 12 | CLM-27-011,27,"IPC Québec « Loyer » (18-10-0004-01) : 174,2 (sept. 2026) / 168,6 (sept. 2025) = +3,32 % ; TCAC 10 ans 4,02 %",SRC-E-015,Calcul du script sur data/raw/statcan_18100004/18100004.csv,2026-10-31,verifie,Cohérent avec notes-E (+3,3 %) | 12 | CLM-27-011,27,"IPC Québec « Loyer » (18-10-0004-01) : 174,2 (sept. 2026) / 168,6 (sept. 2025) = +3,32 % ; TCAC 10 ans 4,02 %",SRC-E-015,Calcul du script sur data/raw/statcan_18100004/18100004.csv,2026-10-31,verifie,Cohérent avec notes-E (+3,3 %) | ||
| 13 | CLM-27-012,27,"TAL : pourcentage de base 3,1 % pour 2026 et 4,5 % pour 2025 (avis à compter du 1er janvier 2026) ; 2027 non publié au 2026-10-31",SRC-A-005,notes-A.md §6.2,2026-10-31,verifie, | 13 | CLM-27-012,27,"TAL : pourcentage de base 3,1 % pour 2026 et 4,5 % pour 2025 (avis à compter du 1er janvier 2026) ; 2027 non publié au 2026-10-31",SRC-A-005,notes-A.md §6.2,2026-10-31,verifie, | ||
| 14 | CLM-27-013,27,"TAL, communiqué du 21 janvier 2025 : moyenne de 3,8 % d'ajustement accordé de 2015 à 2024 (ancienne méthode)",SRC-A-007,notes-A.md §6.2,2026-10-31,verifie, | 14 | CLM-27-013,27,"TAL, communiqué du 21 janvier 2025 : moyenne de 3,8 % d'ajustement accordé de 2015 à 2024 (ancienne méthode)",SRC-A-007,notes-A.md §6.2,2026-10-31,verifie, | ||
modified
verification/chapters/ch27-registry.csv
+13 −13
@@ -1,13 +1,13 @@ | |||||
| 1 | −id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes | 1 | +id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes | ||
| 2 | −SRC-E-007,rapport,Rapport sur le marché locatif — données d'octobre 2025 (page web + tableaux Excel par RMR),SCHL,2025-12-11,https://www.cmhc-schl.gc.ca/fr/professionnels/marche-du-logement-donnees-et-recherche/marches-de-lhabitation/rapports-sur-le-marche-locatif,2026-10-31,verifie,ch27,"RATTACHEMENT : déjà au registre (utilise_dans contient 27) ; tableaux lus par script pour le ch. 27 : 1.1.1, 1.1.6 (fichier Québec) ; 1.3.1, 1.3.4, 1.4, 1.2.1, 1.1.9 (fichier Montréal) ; figures 27.1 et 27.4(a), tableaux 27.2 et 27.3" | 2 | +SRC-E-007,rapport,Rapport sur le marché locatif — données d'octobre 2025 (page web + tableaux Excel par RMR),SCHL,2025-12-11,https://www.cmhc-schl.gc.ca/fr/professionnels/marche-du-logement-donnees-et-recherche/marches-de-lhabitation/rapports-sur-le-marche-locatif,2026-10-31,verifie,ch27,"RATTACHEMENT : déjà au registre (utilise_dans contient 27) ; tableaux lus par script pour le ch. 27 : 1.1.1 et 1.1.6 (fichier Québec) ; 1.3.1, 1.3.4, 1.4, 1.2.1, 1.1.9 (fichier Montréal) ; figures 27.1 et 27.4(a), tableaux 27.2 et 27.3" | ||
| 3 | −SRC-C-045,donnees,Summer Update — 2026 Housing Market Outlook,SCHL,2026-07-22,https://www.cmhc-schl.gc.ca/observer/2026/summer-update-2026-housing-market-outlook,2026-10-31,partiellement_verifie,ch27,"RATTACHEMENT : ajouter ch27 à utilise_dans (inoccupation Montréal 3,8/4,5/4,8 % 2026-2028)" | 3 | +SRC-C-045,donnees,Summer Update — 2026 Housing Market Outlook,SCHL,22 juillet 2026,https://www.cmhc-schl.gc.ca/observer/2026/summer-update-2026-housing-market-outlook,2026-10-31,verifie,ch27,"RATTACHEMENT : ajouter ch27 à utilise_dans (inoccupation RMR Montréal 3,8/4,5/4,8 % pour 2026-2028 ; valeurs extraites via notes-C, à relire sur le PDF)" | ||
| 4 | −SRC-E-015,tableau,Indice des prix à la consommation mensuel non désaisonnalisé — tableau 18-10-0004-01,Statistique Canada,sept. 2026 (diffusé 2026-10-19),https://www150.statcan.gc.ca/t1/tbl1/fr/tv.action?pid=1810000401,2026-10-31,verifie,ch27,"RATTACHEMENT : composante « Loyer », Québec : +3,32 % sur 12 mois, TCAC 10 ans 4,02 % (calcul du script sur le CSV brut)" | 4 | +SRC-E-015,tableau,Indice des prix à la consommation mensuel non désaisonnalisé — tableau 18-10-0004-01,Statistique Canada,sept. 2026 (diffusé 2026-10-19),https://www150.statcan.gc.ca/t1/tbl1/fr/tv.action?pid=1810000401,2026-10-31,verifie,ch27,"RATTACHEMENT : composante « Loyer », Québec : +3,32 % sur 12 mois (174,2/168,6), TCAC 10 ans 4,02 % (calcul du script sur le CSV brut data/raw/statcan_18100004)" | ||
| 5 | −SRC-A-001,loi,"Code civil du Québec (RLRQ, c. CCQ-1991)",Québec (LégisQuébec),À jour au 15 octobre 2026,https://www.legisquebec.gouv.qc.ca/fr/document/lc/ccq-1991,2026-10-31,verifie,ch27,"RATTACHEMENT : art. 1896, 1904, 1937, 1941-1947, 1950, 1955, 1971 (partiellement vérifié, voir CLM-27-020), 1978.2" | 5 | +SRC-A-001,loi,"Code civil du Québec (RLRQ, c. CCQ-1991)",Québec (LégisQuébec),À jour au 15 octobre 2026,https://www.legisquebec.gouv.qc.ca/fr/document/lc/ccq-1991,2026-10-31,verifie,ch27,"RATTACHEMENT : art. 1896, 1904, 1937, 1941-1947, 1950, 1955, 1971 (partiellement vérifié, CLM-27-020), 1978.2" | ||
| 6 | −SRC-A-003,reglement,"Règlement sur les critères de fixation de loyer (RLRQ, c. T-15.01, r. 2)",Québec (LégisQuébec),À jour au 1er juillet 2026,https://www.legisquebec.gouv.qc.ca/fr/document/rc/T-15.01%2C%20r.%202,2026-10-31,verifie,ch27,"RATTACHEMENT : art. 3, 3.1, 4 (équation 27.8)" | 6 | +SRC-A-003,reglement,"Règlement sur les critères de fixation de loyer (RLRQ, c. T-15.01, r. 2)",Québec (LégisQuébec),"À jour au 1er juillet 2026 (intègre D. 1455-2025, en vigueur le 1er janvier 2026)","https://www.legisquebec.gouv.qc.ca/fr/document/rc/T-15.01,%20r.%202",2026-10-31,verifie,ch27,"RATTACHEMENT : art. 3, 3.1, 4 (équation 27.8 du chapitre)" | ||
| 7 | −SRC-A-004,reglement,"Règlement modifiant le Règlement sur les critères de fixation de loyer (D. 1455-2025, 3 décembre 2025)",Gouvernement du Québec (Gazette officielle),2025-12-17,https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2025F/86904.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : entrée en vigueur 2026-01-01" | 7 | +SRC-A-004,reglement,"Règlement modifiant le Règlement sur les critères de fixation de loyer (D. 1455-2025, 3 décembre 2025)","Gouvernement du Québec, Gazette officielle du Québec, Partie 2, 17 décembre 2025, 157e année, no 51, p. 6890-6893",Décret 1455-2025 ; entrée en vigueur le 1er janvier 2026 (art. 8),https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2025F/86904.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : entrée en vigueur 2026-01-01, transition art. 6" | ||
| 8 | −SRC-A-005,page_web,Pourcentages applicables aux critères de fixation de loyer (2025 et 2026),Tribunal administratif du logement,Consultée le 2026-10-31,https://www.tal.gouv.qc.ca/fr/reconduction-du-bail-et-fixation-de-loyer/pourcentages-applicables-aux-criteres-de-fixation-de-loyer,2026-10-31,verifie,ch27,"RATTACHEMENT : base 3,1 % (2026) et 4,5 % (2025)" | 8 | +SRC-A-005,page_web,Pourcentages applicables aux critères de fixation de loyer (2025 et 2026),Tribunal administratif du logement,Consultée le 2026-10-31 ; tableaux 2025 et 2026,https://www.tal.gouv.qc.ca/fr/reconduction-du-bail-et-fixation-de-loyer/pourcentages-applicables-aux-criteres-de-fixation-de-loyer,2026-10-31,verifie,ch27,"RATTACHEMENT : pourcentage de base 3,1 % (2026) et 4,5 % (2025), avis à compter du 2026-01-01" | ||
| 9 | −SRC-A-007,guide,Communiqué « Le calcul de l'ajustement des loyers en 2025 » (21 janvier 2025),Tribunal administratif du logement,2025-01-21,https://www.tal.gouv.qc.ca/sites/default/files/COMMUNIQUE_FIXATION_2025_FR.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : moyenne 3,8 % accordée 2015-2024" | 9 | +SRC-A-007,guide,Communiqué « Le calcul de l'ajustement des loyers en 2025 » (21 janvier 2025),Tribunal administratif du logement,21 janvier 2025,https://www.tal.gouv.qc.ca/sites/default/files/COMMUNIQUE_FIXATION_2025_FR.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : moyenne de 3,8 % d'ajustement accordée de 2015 à 2024 (ancienne méthode)" | ||
| 10 | −SRC-A-009,guide,Formulaire « Renseignements nécessaires à la fixation du loyer » (RN) — Fixation 2026-2027,Tribunal administratif du logement,TAL-004-E RN (2025-11),https://www.tal.gouv.qc.ca/sites/default/files/RN_2026_F.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : revenus de décembre × 12, ligne autres revenus" | 10 | +SRC-A-009,guide,Formulaire « Renseignements nécessaires à la fixation du loyer » (RN) — Fixation 2026-2027,Tribunal administratif du logement,TAL-004-E RN (2025-11),https://www.tal.gouv.qc.ca/sites/default/files/RN_2026_F.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : revenus de décembre 2025 × 12 (lignes 106-131), ligne 150 autres revenus" | ||
| 11 | −SRC-A-011,page_web,Résumés de décisions — Fin et renouvellement du bail (fixation de loyer),Tribunal administratif du logement,Consultée le 2026-10-31,https://www.tal.gouv.qc.ca/fr/resumes-decisions-fin-et-renouvellement-du-bail,2026-10-31,partiellement_verifie,ch27,"RATTACHEMENT : valeur locative non critère (décision non lue)" | 11 | +SRC-A-011,page_web,Résumés de décisions — Fin et renouvellement du bail (fixation de loyer),Tribunal administratif du logement,Consultée le 2026-10-31,https://www.tal.gouv.qc.ca/fr/resumes-decisions-fin-et-renouvellement-du-bail,2026-10-31,partiellement_verifie,ch27,"RATTACHEMENT : « la valeur marchande locative n'est pas un critère » (Société de financement alouette inc. c. A., 2022) — décision non lue" | ||
| 12 | −SRC-A-013,loi,"Loi modifiant diverses dispositions législatives en matière d'habitation (projet de loi no 31), L.Q. 2024, c. 2",Québec (Gazette officielle),2024-04-24,https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2024F/83191.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : art. 1978.2 C.c.Q. (cession de bail)" | 12 | +SRC-A-013,loi,"Loi modifiant diverses dispositions législatives en matière d'habitation (projet de loi no 31), L.Q. 2024, c. 2","Québec, Gazette officielle du Québec, Partie 2, 24 avril 2024, 156e année, no 17, p. 2133 et s.",Sanctionnée le 21 février 2024 ; entrée en vigueur le 21 février 2024 sauf exceptions (art. 97),https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2024F/83195.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : art. 1978.2 C.c.Q. (refus de cession, résiliation)" | ||
| 13 | −SRC-A-014,loi,"Loi limitant le droit d'éviction des locateurs et renforçant la protection des locataires aînés (projet de loi no 65), L.Q. 2024, c. 23",Québec (Gazette officielle),2024-07-10,https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2024F/83591.pdf,2026-10-31,verifie,ch27,"RATTACHEMENT : art. 1 (moratoire) et 11 (seuil SCHL 3 %)" | 13 | +SRC-A-014,loi,"Loi limitant le droit d'éviction des locateurs et renforçant la protection des locataires aînés (projet de loi no 65), L.Q. 2024, c. 23","Québec, Gazette officielle du Québec, Partie 2, 10 juillet 2024, 156e année, no 28, p. 4917 et s.",Sanctionnée le 6 juin 2024,https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2024F/83591.pdf,2026-10-31,verifie,ch27,RATTACHEMENT : art. 1 (moratoire jusqu'au 6 juin 2027) et 11 (fin anticipée si inoccupation SCHL ≥ 3 %) | ||
added
verification/chapters/ch27.md
+40 −0
@@ -0,0 +1,40 @@ | |||||
| 1 | +# Chapitre 27 — Revenus potentiels, vacance et pertes : bilan de rédaction (2026-10-31) | ||||
| 2 | + | ||||
| 3 | +## Livrables | ||||
| 4 | +| Fichier | Contenu | | ||||
| 5 | +|---|---| | ||||
| 6 | +| `manuscript/chapters/ch27.tex` | ≈ 9 900 mots de prose (12 700 mots au compteur brut) ; 7 sections (27.1 RBP ; 27.2 inoccupation et créances : notions, mesure SCHL, structurel/frictionnel, créances et concessions, choix de v ; 27.3 autres revenus ; 27.4 RBE ; 27.5 projection des loyers ; 27.6 exemple intégral cas 3 + cas 2 ; 27.7 sensibilité) ; encadrés `synthetique`, `quebec`, `erreurs`, `limites`, `synthese` ; 2 définitions, 1 proposition avec démonstration ($v_f = \rho d/12$), 1 exemple | | ||||
| 7 | +| `analysis/python/cases/ch27_revenus.py` | tous les chiffres du chapitre et des solutions : cascades cas 3/cas 2 (`traite.cas3.revenus`, `traite.cas2.revenus`), état locatif par type, lecteurs des tableaux SCHL (1.1.1, 1.1.6, 1.3.1, 1.3.4, 1.4, 1.2.1, 1.1.9), IPC loyer Québec (CSV brut), grille frictionnelle, sensibilité à v (`traite.cas3.rne`), trajectoires (`traite.cas3.projection_dcf` avec rotation 0 / 9,4 % / 15 %), `mini_projection`, `exercices()` | | ||||
| 8 | +| `analysis/python/traite/finance.py` | **2 fonctions ajoutées** (avec tests) : `taux_vacance_frictionnelle(rotation, duree_vacance_mois)` et `loyer_effectif_concession(loyer, mois_gratuits, duree_bail_mois)` ; aucune fonction existante modifiée | | ||||
| 9 | +| `analysis/python/figures/ch27_figures.py` | 4 figures → `assets/figures/ch27/ch27-fig-{inoccupation-rmr,cascade,trajectoires,sensibilite}.pdf` | | ||||
| 10 | +| `analysis/python/tests/test_ch27.py` | 13 tests : identités (RBE, cascade, modèle frictionnel, concession, linéarité en v, ordre des trajectoires, égalité avec `cas3.tout()` et `cas2.tout()`), lectures SCHL (±0,05 pt), valeurs citées (±0,01 $), exercices, présence des figures | | ||||
| 11 | +| `solutions/ch27.tex` | 8 solutions détaillées (ex. 27.1 → 27.8) | | ||||
| 12 | +| `verification/chapters/ch27-{figures,calculations,claims,registry}.csv`, `references/lib-ch27.bib` | 4 figures, 19 calculs, 28 affirmations, 12 rattachements de sources ; aucune nouvelle entrée bib | | ||||
| 13 | + | ||||
| 14 | +## Compteurs | ||||
| 15 | +Mots (prose) ≈ 9 900 — figures : 4 (1 réelle SCHL, 2 synthétiques, 1 mixte) — tableaux : 8 — équations numérotées : 10 (dont un `align`) — exercices : 8 (niveaux 1, 1, 2, 2, 2, 3, 3, 3) — définitions : 2 — proposition : 1. | ||||
| 16 | + | ||||
| 17 | +## Contrôles | ||||
| 18 | +- `tools/compile_chapter.sh 27` → `OK ch27 : 35 pages, 0 references/citations non definies, 0 overfull hbox` (solutions et bibliographie incluses). | ||||
| 19 | +- `python3 -m pytest -q analysis/python/tests/test_ch27.py` → 13 passed ; `test_cas3`, `test_cas2_cas4`, `test_finance`, `test_ch29`, `test_ch30`, `test_ch47` toujours verts (69 passed au total). | ||||
| 20 | +- `python3 tools/check_manuscript.py --no-log` : seuls « problèmes » pour ch27 = les 4 figures absentes de `verification/figures.csv` global (lignes fournies dans `ch27-figures.csv`, fusion laissée à l'orchestrateur). | ||||
| 21 | +- Inspection visuelle (`pdftoppm`, montages des 35 pages + pages 5, 8, 17-19, 21 à 75 dpi) : tableaux dans la justification, figures à 135 mm, encadrés, exercices, solutions, bibliographie. | ||||
| 22 | +- Renvois : `\cref{ch:NN}` à deux chiffres (labels fournis par `make_labels.py`), articles écrits dans le texte. | ||||
| 23 | + | ||||
| 24 | +## Chiffres clés (identiques à `traite.cas3.tout()` / `traite.cas2.tout()`) | ||||
| 25 | +Cas 3 : RBP 165 540 $ (13 795 $/mois) ; marché 186 036 $ ; déficit 20 496 $ (11,0 %) ; v 3,9 % → 6 456,06 $ ; autres revenus **9 360 $** ; RBE 168 443,94 $ (14 037 $/log., 204,17 $/m²) ; θ = 85,5 % ; variantes 168 078,90 $ / 188 140,60 $. Cas 2 : RBP 41 832 $, marché 49 332 $, v 3 %, RBE 40 577,04 $, θ 82,3 %. Trajectoires (année 10) : TAL seul 217 887 $, rotation 9,4 % 247 212 $, rotation 15 % 251 101 $, marché 253 548 $ ; V_DCF 1 756 414 / 2 140 916 / 2 208 566 $. Sensibilité : −35 995 $ (1,8 %) par point de v à R = 4,415 %. SCHL oct. 2025 : inoccupation RMR 2,9/2,4/3,8/2,7/2,7/1,3 ; rotation 9,4/13,0/16,2/12,0/10,1/12,6 ; île 6-19 log. 2,2 % ; Q4 4,9 % vs Q1 1,3 % ; loyers inoccupés/occupés 1 573/1 275 $. | ||||
| 26 | + | ||||
| 27 | +## Points non vérifiés ou à confirmer | ||||
| 28 | +1. **Art. 1971 C.c.Q.** (retard > 3 semaines) : cité d'après sa formulation courante, texte non relu (CLM-27-020, `partiellement_verifie`, déclaré dans `limites`). | ||||
| 29 | +2. Provision pour mauvaises créances « d'un demi à un point » : pratique, aucune statistique publique (CLM-27-026, `non_verifie`, formulée comme telle). | ||||
| 30 | +3. Motif exact des suppressions « ** » dans les tableaux SCHL (fiabilité ou confidentialité) : non explicité dans les fichiers ; formulé prudemment (CLM-27-008). | ||||
| 31 | +4. Perspectives SCHL été 2026 (3,8/4,5/4,8 %) : extraction du lot C, à relire sur le PDF (CLM-27-010). | ||||
| 32 | +5. Résumé TAL « valeur locative non critère » : source officielle secondaire, décision non lue (CLM-27-016). | ||||
| 33 | +6. Pourcentage TAL 2027 non publié ; $g_c$ = 3,1 % constant dans les projections. | ||||
| 34 | + | ||||
| 35 | +## Remarques pour l'harmonisation | ||||
| 36 | +- **Écart avec la consigne** : le brief indiquait « autres revenus 12 240 $ » pour le cas 3 ; le dossier (`cas3_montreal_hypotheses_dcf.json`, `traite.cas3.revenus`, ch. 29/30/47) porte **9 360 $** et donne bien RBE 168 443,94 $ ; le chapitre suit les données. Corriger le brief (`tools/BRIEFS-PHASE4.md`). | ||||
| 37 | +- La fonction `ch04_marches.schl_rmr()` lit les mêmes tableaux 1.1.1 ; le ch. 27 a son propre lecteur (plus générique : lettres de qualité, flèches, tableaux par taille/quartile/année). Une fusion dans `traite/` (p. ex. `traite/schl.py`) éviterait la duplication entre ch. 4, 13 et 27. | ||||
| 38 | +- Les deux fonctions ajoutées à `traite.finance` peuvent servir aux ch. 30, 34 et 40 (vacance frictionnelle cohérente avec la rotation ; concessions). | ||||
| 39 | +- `verification/figures.csv`, `calculations.csv`, `claims.csv` et `sources/registry.csv` globaux : fusionner les CSV `ch27-*` ; ajouter « 27 » à `utilise_dans` de SRC-C-045 et SRC-E-015. | ||||
| 40 | +- Le ch. 47 (§ vacance économique) décrit déjà la même décomposition de 3,9 % ; le ch. 27 renvoie au ch. 47 pour le détail bail par bail et au ch. 30/34 pour le DCF et les scénarios TAL — vérifier à l'harmonisation que les trois chapitres emploient le même vocabulaire (« provision pour inoccupation et mauvaises créances », « déficit de loyer », « taux d'occupation économique »). | ||||
added
verification/chapters/ch32-calculations.csv
+25 −0
@@ -0,0 +1,25 @@ | |||||
| 1 | +id,chapitre,description,script,test,resultat_attendu,resultat_obtenu,statut,date | ||||
| 2 | +CALC-32-001,32,"RBP contractuel du cas 2 (3 baux × 12) et RBP aux loyers de marché ; écart 7 500 $ (15,2 %) ; loyer relatif ρ_s",analysis/python/cases/ch32_plex.py (traite.cas2.revenus),analysis/python/tests/test_ch32.py::test_coherence_cas2_partage,41832;49332;0.848,41832.00;49332.00;0.8480,verifie,2026-10-31 | ||||
| 3 | +CALC-32-002,32,"RBE = RBP(1−3 %) ; dépenses normalisées (gestion imputée 4 % du RBE = 1 623,08 $ ; réserve 1 800 $) ; RNE normalisé ; ratio 45,7 %",analysis/python/cases/ch32_plex.py (traite.cas2.rne),analysis/python/tests/test_ch32.py::test_coherence_cas2_partage,40577.04;18543.08;22033.96;0.457,40577.04;18543.08;22033.9584;0.4570,verifie,2026-10-31 | ||||
| 4 | +CALC-32-003,32,"RNE aux loyers de marché (mêmes dépenses, gestion 4 % du RBE de marché)",analysis/python/cases/ch32_plex.py::calculer,analysis/python/tests/test_ch32.py::test_sensibilite,29017.96,29017.96,verifie,2026-10-31 | ||||
| 5 | +CALC-32-004,32,"Indicateurs des 127 ventes (60 duplex, 67 triplex, 4 quartiers, 24 mois) : MRB médian 19,68 (triplex 19,82), taux médian 3,17 % (Q1 2,76, Q3 3,62), prix/logement 285 667 $ (triplex 281 000 $), prix/m² 3 200 $",analysis/python/cases/ch32_plex.py (traite.cas2.indicateurs_marche),analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,127;19.82;0.0317;281000,127;19.82;0.0317;281000,verifie,2026-10-31 | ||||
| 6 | +CALC-32-005,32,"Indicateurs médians par taille et par quartier (tableau 32.3)",analysis/python/cases/ch32_plex.py::indicateurs_par_groupe,analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,duplex 583 500 $ / triplex 843 000 $ ; Limoilou 718 000 $,583500;843000;718000,verifie,2026-10-31 | ||||
| 7 | +CALC-32-006,32,"Identité R = (1−v)(1−d)/MRB sur chaque vente (v = 2,4 %, d = ratio de la vente)",analysis/python/cases/ch32_plex.py::decomposition_taux,analysis/python/tests/test_ch32.py::test_identite_mrb_taux,écart max < 2e-4,< 2e-4,verifie,2026-10-31 | ||||
| 8 | +CALC-32-007,32,"Décomposition R_c = ρ R_m (dépenses proportionnelles) ; taux au marché médian 3,41 % vs 3,17 % au contrat ; ρ médian 0,947 ; MRB marché médian 18,33",analysis/python/cases/ch32_plex.py::decomposition_taux,analysis/python/tests/test_ch32.py::test_decomposition_rho,0.0341;0.0317;0.947,0.0341;0.0317;0.9468,verifie,2026-10-31 | ||||
| 9 | +CALC-32-008,32,"Régression taux = a + b(ρ−1) sur 127 ventes : a = 3,451 %, b = 0,0284, R² 0,071, σ 0,685 % ; avec état et taille : a 3,426 %, b_ρ 0,0302, b_état −0,0007, b_n −0,0006, R² 0,080 ; ln MRB = 2,9109 − 0,9564(ρ−1), R² 0,108",analysis/python/cases/ch32_plex.py::regression_taux_loyer_relatif,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,0.03451;0.0284;-0.9564,0.034514;0.02838;-0.9564,verifie,2026-10-31 | ||||
| 10 | +CALC-32-009,32,"Indications brutes des 127 ventes : MRB 829 110,24 $ ; capitalisation 695 077,55 $ ; par logement 843 000 $ ; au m² 838 400 $ (identiques à traite.cas2.tout, ch. 46)",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,829110.24;695077.55;843000;838400,829110.24;695077.55;843000.00;838400.00,verifie,2026-10-31 | ||||
| 11 | +CALC-32-010,32,"Taux ajusté au loyer relatif du sujet 3,02 % → V_cap 729 549 $ ; MRB ajusté 21,25 → 888 878 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,0.0302;729549;888878,0.030202;729549.19;888877.79,verifie,2026-10-31 | ||||
| 12 | +CALC-32-011,32,"Sélection de 5 comparables triplex Limoilou parmi 28 candidats par distance d'attributs (6 caractéristiques, échelles et poids déclarés) : Q0187, Q0222, Q0243, Q0207, Q0235",analysis/python/cases/ch32_plex.py::selection_comparables (traite.comparables.distance_attributs),analysis/python/tests/test_ch32.py::test_comparables_selection,28 candidats ; 5 retenus,28;5,verifie,2026-10-31 | ||||
| 13 | +CALC-32-012,32,"Médianes des 5 comparables : prix/logement 306 000 $, MRB 22,05, taux 2,97 %, prix/m² 3 352,73 $ → indications 918 000 $, 922 395,60 $, 741 884 $, 878 415 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,918000;922396;741884;878415,918000;922395.60;741884.12;878414.55,verifie,2026-10-31 | ||||
| 14 | +CALC-32-013,32,"Indication pondérée 0,40 × 918 000 + 0,35 × 922 396 + 0,25 × 729 549 = 872 425,76 $ ≈ 870 000 $ ; taux implicite 2,53 % ; MRB implicite 20,86 ; 290 809 $/log. ; 3 330 $/m² ; +76,2 % vs rôle 495 000 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,872426;870000;0.0253;20.86,872425.76;870000;0.02526;20.855,verifie,2026-10-31 | ||||
| 15 | +CALC-32-014,32,"Explication de l'écart capitalisation/comparaison : RNE au ratio médian des ventes (35,7 %) 26 091 $ → 863 880 $ ; indexation du prix/logement des 127 ventes (ancienneté médiane 11,3 mois, 7,29 %/an) → 900 926 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,863880;900926,863879.94;900926.12,verifie,2026-10-31 | ||||
| 16 | +CALC-32-015,32,"Prime d'occupation (R* = 5,00 %, borne basse CBRE Québec basse hauteur B) : 440 679 $ + 139 680 $ + 292 067 $ (33,5 %) = 872 426 $ ; en taux : 5,00 → R_m 3,33 % → R_c 2,53 %",analysis/python/cases/ch32_plex.py::prime_occupant,analysis/python/tests/test_ch32.py::test_prime_occupant,440679.17;139680;292067;0.335,440679.17;139680.00;292066.59;0.3348,verifie,2026-10-31 | ||||
| 17 | +CALC-32-016,32,"Mise de fonds minimale assurée (Finances Canada 2024) : 450 000 → 22 500 ; 843 000 → 59 300 ; 870 000 → 62 000 ; 1 200 000 → 95 000 ; 1 500 000 → 125 000 ; 1 600 000 → non assurable",analysis/python/cases/ch32_plex.py::mise_de_fonds_minimale_assuree,analysis/python/tests/test_ch32.py::test_mise_de_fonds_minimale,22500;59300;62000;95000;125000;NaN,22500;59300;62000;95000;125000;nan,verifie,2026-10-31 | ||||
| 18 | +CALC-32-017,32,"Financement de l'acheteur-occupant : prêt 808 000 $ (RPV 92,9 %), 4,12 % composé semestriellement, 300 mois → 4 302,97 $/mois, 51 635,62 $/an, constante 6,39 % ; intérêts an 1 32 654,64 $, capital an 1 18 980,98 $ ; solde après 60 mois 704 858,60 $ ; TAM 6,12 % → 5 227,41 $/mois",analysis/python/cases/ch32_plex.py::financement_occupant (traite.finance.Hypotheque),analysis/python/tests/test_ch32.py::test_financement_occupant,4302.97;51635.62;5227.41;704858.60,4302.9687;51635.6243;5227.4114;704858.6046,verifie,2026-10-31 | ||||
| 19 | +CALC-32-018,32,"Coût net d'occupation (reprise du RC) : 51 635,62 + 16 920 + 2 219,60 − 28 389,96 = 42 385,26 $/an = 3 532,11 $/mois ; hors capital (−1 719,02) 1 813,08 $/mois vs loyer de marché 1 430 $ (+26,8 %)",analysis/python/cases/ch32_plex.py::cout_occupation,analysis/python/tests/test_ch32.py::test_financement_occupant,42385.26;3532.11;1813.08,42385.2643;3532.1054;1813.0821,verifie,2026-10-31 | ||||
| 20 | +CALC-32-019,32,"Sensibilité au loyer relatif (ρ 0,85/0,90/0,95/1,00) : V_cap taux ajusté 731 244 / 771 019 / 807 385 / 840 764 ; V_cap taux médian 698 021 / 770 478 / 842 936 / 915 393 ; V_MRB 924 605 / 978 994 / 1 033 382 / 1 087 771 ; écart 74 629 $ à ρ = 1",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,monotonie ; RNE(ρ=1) = RNE marché,ok,verifie,2026-10-31 | ||||
| 21 | +CALC-32-020,32,"Sensibilité au taux (2,50 → 4,00 % par 25 pb) : 881 358 ; 801 235 ; 734 465 ; 677 968 ; 629 542 ; 587 572 ; 550 849 $",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,V = RNE/R,ok,verifie,2026-10-31 | ||||
| 22 | +CALC-32-021,32,"Scénarios de financement (tableau 32.8 C) : 30 ans 3 897,25 $/mois ; MF 10 % 4 169,83 ; non assuré 20 % à 4,58 % 3 883,19 (hors capital 2 044,28) ; +100 pb 4 754,72 (2 458,56) ; +200 pb 5 227,41 (3 108,26)",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,ordre des coûts,ok,verifie,2026-10-31 | ||||
| 23 | +CALC-32-022,32,"Élasticité de la valeur capitalisée aux loyers (dépenses fixes) = RBE/RNE = 40 577/22 034 = 1,84",analysis/python/cases/ch32_plex.py (calcul direct),—,1.84,1.8416,verifie,2026-10-31 | ||||
| 24 | +CALC-32-023,32,"Contrôle investisseur : 80 % du prix (696 000 $) non assuré 4,58 %/25 ans → SD 46 598 $, RCD 0,47, flux −24 564 $",analysis/python/cases/ch32_plex.py (traite.finance.Hypotheque),—,46598;0.47;-24564,46598;0.473;-24564,verifie,2026-10-31 | ||||
| 25 | +CALC-32-024,32,"Exercices 32.1 à 32.7 (MRB 18,75 ; mises de fonds ; décomposition 105,4 pb ; coût d'occupation 2e 3 668,88 $ ; régression ; pondérations 856 648 / 805 809 / 920 198 ; VA du manque à gagner 4 335,85 / 12 835,08 / 40 791,47 $)",analysis/python/cases/ch32_plex.py::exercices,analysis/python/tests/test_ch32.py::test_exercices,voir solutions/ch32.tex,ok,verifie,2026-10-31 | ||||
added
verification/chapters/ch32-figures.csv
+6 −0
@@ -0,0 +1,6 @@ | |||||
| 1 | +fichier,chapitre,script,donnees,type_donnees,legende_courte,statut | ||||
| 2 | +ch32/ch32-fig-plex-apciq-rmr.pdf,32,analysis/python/figures/ch32_figures.py,"APCIQ/Centris T3 2026 : communiqué du 2026-10-14 (SRC-E-001) et baromètre RMR de Québec (SRC-E-003), chiffres cités dans sources/notes-E.md",reelle,"Barres horizontales : prix médian des plex (2-5 logements) par territoire, T3 2026 (province, RMR Montréal, île, RMR Québec, agglomération, Basse-Ville–Limoilou, Gatineau, Sherbrooke, Trois-Rivières, Saguenay) ; chiffres APCIQ cités, aucun tableau reproduit",verifie | ||||
| 3 | +ch32/ch32-fig-mrb-taille-quartier.pdf,32,analysis/python/figures/ch32_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv (127 ventes via traite.cas2.comparables_plex),synthetique,"Boîtes à moustaches du MRB des 127 ventes du cas 2 selon la taille (duplex/triplex) et selon le quartier (4 quartiers) [données synthétiques]",verifie | ||||
| 4 | +ch32/ch32-fig-prix-logement-quartier.pdf,32,analysis/python/figures/ch32_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv ; analysis/python/cases/ch32_plex.py (comparables retenus),synthetique,"Prix par logement par quartier (boîtes + points), cinq comparables retenus (losanges) et valeur pondérée du sujet par logement (tireté) [données synthétiques]",verifie | ||||
| 5 | +ch32/ch32-fig-taux-loyer-relatif.pdf,32,analysis/python/figures/ch32_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv ; régression analysis/python/cases/ch32_plex.py::regression_taux_loyer_relatif,synthetique,"Nuage taux global extrait vs loyer relatif ρ (duplex/triplex), droite R = a + b(ρ−1), médiane des 127 ventes et taux ajusté du sujet (étoile) [données synthétiques]",verifie | ||||
| 6 | +ch32/ch32-fig-sensibilite-occupant.pdf,32,analysis/python/figures/ch32_figures.py,analysis/python/cases/ch32_plex.py (sensibilite, financement_occupant, cout_occupation ; traite.cas2 ; traite.finance),synthetique,"Deux panneaux : indications de valeur selon ρ (MRB, capitalisation à taux médian, capitalisation à taux ajusté) ; coût économique mensuel d'occupation hors capital selon le taux hypothécaire pour deux mises de fonds, loyer de marché en repère [données synthétiques]",verifie | ||||
modified
verification/claims.csv
+1 −1
@@ -667,7 +667,7 @@ CLM-27-006,27,"SCHL oct. 2025, île de Montréal, inoccupation selon l'année de | |||||
| 667 | CLM-27-007,27,"Univers de l'ELL : appartements d'initiative privée dans les immeubles de 3 logements et plus, centres de 10 000 habitants et plus ; enquête en octobre ; copropriétés louées dans une enquête distincte (tableaux 4) ; définitions géographiques du Recensement 2021",SRC-E-007,En-têtes et notes des tableaux Excel ; notes-E.md ; ch. 4 (définition 4.x),2026-10-31,verifie, | 667 | CLM-27-007,27,"Univers de l'ELL : appartements d'initiative privée dans les immeubles de 3 logements et plus, centres de 10 000 habitants et plus ; enquête en octobre ; copropriétés louées dans une enquête distincte (tableaux 4) ; définitions géographiques du Recensement 2021",SRC-E-007,En-têtes et notes des tableaux Excel ; notes-E.md ; ch. 4 (définition 4.x),2026-10-31,verifie, | ||
| 668 | CLM-27-008,27,"Indicateurs de qualité SCHL : a excellent, b très bon, c bon, d passable ; ** données supprimées ; flèches = variation significative ; « – » = échantillon insuffisant pour interpréter la variation",SRC-E-007,Notes de bas de tableau des fichiers Excel (lues par script),2026-10-31,verifie,Le motif précis de suppression (fiabilité ou confidentialité) n'est pas explicité dans les tableaux : formulé comme « échantillon ne permettant pas d'estimation fiable » | 668 | CLM-27-008,27,"Indicateurs de qualité SCHL : a excellent, b très bon, c bon, d passable ; ** données supprimées ; flèches = variation significative ; « – » = échantillon insuffisant pour interpréter la variation",SRC-E-007,Notes de bas de tableau des fichiers Excel (lues par script),2026-10-31,verifie,Le motif précis de suppression (fiabilité ou confidentialité) n'est pas explicité dans les tableaux : formulé comme « échantillon ne permettant pas d'estimation fiable » | ||
| 669 | CLM-27-009,27,"SCHL, variation « même échantillon » des loyers oct. 2024→2025 : Montréal 2 ch. +7,2 %, tous +7,4 % ; ensemble des RMR de +4,5 % (Gatineau) à +12,5 % (Saguenay)",SRC-E-007,notes-E.md §ch. 4 (tableau 1.1.5),2026-10-31,verifie, | 669 | CLM-27-009,27,"SCHL, variation « même échantillon » des loyers oct. 2024→2025 : Montréal 2 ch. +7,2 %, tous +7,4 % ; ensemble des RMR de +4,5 % (Gatineau) à +12,5 % (Saguenay)",SRC-E-007,notes-E.md §ch. 4 (tableau 1.1.5),2026-10-31,verifie, | ||
| 670 | −CLM-27-010,27,"SCHL Perspectives été 2026 : inoccupation RMR Montréal 3,8 % (2026), 4,5 % (2027), 4,8 % (2028)",SRC-C-045,notes-C.md §4.6 (schlpmh2026ete),2026-10-31,partiellement_verifie,Extraction du rapport ; à relire sur le PDF (même statut qu'au ch. 30) | 670 | +CLM-27-010,27,"SCHL Perspectives été 2026 : inoccupation RMR Montréal 3,8 % (2026), 4,5 % (2027), 4,8 % (2028)",SRC-C-045,notes-C.md §4.6 (schlpmh2026ete),2026-10-31,partiellement_verifie,Source au registre « verifie » ; les trois valeurs annuelles sont extraites du rapport par le lot C et à relire sur le PDF (même statut qu au ch. 30) | ||
| 671 | CLM-27-011,27,"IPC Québec « Loyer » (18-10-0004-01) : 174,2 (sept. 2026) / 168,6 (sept. 2025) = +3,32 % ; TCAC 10 ans 4,02 %",SRC-E-015,Calcul du script sur data/raw/statcan_18100004/18100004.csv,2026-10-31,verifie,Cohérent avec notes-E (+3 | 671 | CLM-27-011,27,"IPC Québec « Loyer » (18-10-0004-01) : 174,2 (sept. 2026) / 168,6 (sept. 2025) = +3,32 % ; TCAC 10 ans 4,02 %",SRC-E-015,Calcul du script sur data/raw/statcan_18100004/18100004.csv,2026-10-31,verifie,Cohérent avec notes-E (+3 | ||
| 672 | CLM-27-012,27,"TAL : pourcentage de base 3,1 % pour 2026 et 4,5 % pour 2025 (avis à compter du 1er janvier 2026) ; 2027 non publié au 2026-10-31",SRC-A-005,notes-A.md §6.2,2026-10-31,verifie, | 672 | CLM-27-012,27,"TAL : pourcentage de base 3,1 % pour 2026 et 4,5 % pour 2025 (avis à compter du 1er janvier 2026) ; 2027 non publié au 2026-10-31",SRC-A-005,notes-A.md §6.2,2026-10-31,verifie, | ||
| 673 | CLM-27-013,27,"TAL, communiqué du 21 janvier 2025 : moyenne de 3,8 % d'ajustement accordé de 2015 à 2024 (ancienne méthode)",SRC-A-007,notes-A.md §6.2,2026-10-31,verifie, | 673 | CLM-27-013,27,"TAL, communiqué du 21 janvier 2025 : moyenne de 3,8 % d'ajustement accordé de 2015 à 2024 (ancienne méthode)",SRC-A-007,notes-A.md §6.2,2026-10-31,verifie, | ||
modified
verification/figures.csv
+5 −0
@@ -153,3 +153,8 @@ ch27/ch27-fig-inoccupation-rmr.pdf,27,analysis/python/figures/ch27_figures.py,da | |||||
| 153 | ch27/ch27-fig-cascade.pdf,27,analysis/python/figures/ch27_figures.py,data/synthetic/cas3_montreal_etat_locatif.csv;data/synthetic/cas3_montreal_hypotheses_dcf.json,synthetique,"Cascade RBP au marché → déficit de loyer → RBP contractuel → inoccupation et créances → loyers effectifs → autres revenus → RBE, cas 3 [données synthétiques]",verifie | 153 | ch27/ch27-fig-cascade.pdf,27,analysis/python/figures/ch27_figures.py,data/synthetic/cas3_montreal_etat_locatif.csv;data/synthetic/cas3_montreal_hypotheses_dcf.json,synthetique,"Cascade RBP au marché → déficit de loyer → RBP contractuel → inoccupation et créances → loyers effectifs → autres revenus → RBE, cas 3 [données synthétiques]",verifie | ||
| 154 | ch27/ch27-fig-trajectoires.pdf,27,analysis/python/figures/ch27_figures.py,data/synthetic/cas3_montreal_etat_locatif.csv;data/synthetic/cas3_montreal_hypotheses_dcf.json,synthetique,"Quatre trajectoires du RBP du cas 3 sur dix ans : TAL seul, rotation 9,4 %, rotation 15 % (base), marché (traite.cas3.projection_dcf) [données synthétiques]",verifie | 154 | ch27/ch27-fig-trajectoires.pdf,27,analysis/python/figures/ch27_figures.py,data/synthetic/cas3_montreal_etat_locatif.csv;data/synthetic/cas3_montreal_hypotheses_dcf.json,synthetique,"Quatre trajectoires du RBP du cas 3 sur dix ans : TAL seul, rotation 9,4 %, rotation 15 % (base), marché (traite.cas3.projection_dcf) [données synthétiques]",verifie | ||
| 155 | ch27/ch27-fig-sensibilite.pdf,27,analysis/python/figures/ch27_figures.py,data/raw/schl_rml_2025/rmr-quebec-2025-fr.xlsx;data/synthetic/cas3_montreal_etat_locatif.csv,mixte,(a) Inoccupation frictionnelle v_f = ρ·d/12 pour cinq rotations (SCHL 2025 réelles) ; (b) valeur du cas 3 par capitalisation selon v [panneau (b) : données synthétiques],verifie | 155 | ch27/ch27-fig-sensibilite.pdf,27,analysis/python/figures/ch27_figures.py,data/raw/schl_rml_2025/rmr-quebec-2025-fr.xlsx;data/synthetic/cas3_montreal_etat_locatif.csv,mixte,(a) Inoccupation frictionnelle v_f = ρ·d/12 pour cinq rotations (SCHL 2025 réelles) ; (b) valeur du cas 3 par capitalisation selon v [panneau (b) : données synthétiques],verifie | ||
| 156 | +ch32/ch32-fig-plex-apciq-rmr.pdf,32,analysis/python/figures/ch32_figures.py,"APCIQ/Centris T3 2026 : communiqué du 2026-10-14 (SRC-E-001) et baromètre RMR de Québec (SRC-E-003), chiffres cités dans sources/notes-E.md",reelle,"Barres horizontales : prix médian des plex (2-5 logements) par territoire, T3 2026 (province, RMR Montréal, île, RMR Québec, agglomération, Basse-Ville–Limoilou, Gatineau, Sherbrooke, Trois-Rivières, Saguenay) ; chiffres APCIQ cités, aucun tableau reproduit",verifie | ||||
| 157 | +ch32/ch32-fig-mrb-taille-quartier.pdf,32,analysis/python/figures/ch32_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv (127 ventes via traite.cas2.comparables_plex),synthetique,Boîtes à moustaches du MRB des 127 ventes du cas 2 selon la taille (duplex/triplex) et selon le quartier (4 quartiers) [données synthétiques],verifie | ||||
| 158 | +ch32/ch32-fig-prix-logement-quartier.pdf,32,analysis/python/figures/ch32_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv ; analysis/python/cases/ch32_plex.py (comparables retenus),synthetique,"Prix par logement par quartier (boîtes + points), cinq comparables retenus (losanges) et valeur pondérée du sujet par logement (tireté) [données synthétiques]",verifie | ||||
| 159 | +ch32/ch32-fig-taux-loyer-relatif.pdf,32,analysis/python/figures/ch32_figures.py,data/synthetic/cas2_quebec_ventes_plex.csv ; régression analysis/python/cases/ch32_plex.py::regression_taux_loyer_relatif,synthetique,"Nuage taux global extrait vs loyer relatif ρ (duplex/triplex), droite R = a + b(ρ−1), médiane des 127 ventes et taux ajusté du sujet (étoile) [données synthétiques]",verifie | ||||
| 160 | +ch32/ch32-fig-sensibilite-occupant.pdf,32,analysis/python/figures/ch32_figures.py,analysis/python/cases/ch32_plex.py (sensibilite,financement_occupant,cout_occupation ; traite.cas2 ; traite.finance),synthetique | ||||
| 156 | 161 | ||||