SPB Git

Ch. 8 livré et validé (compilation isolée, tests, fusion des registres)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Oct 31, 2026) parent cb0963b Browse files

37 changed files +1,700 −121

37 changed files
Unified Split
added analysis/python/cases/ch12_mesurage.py +193 −0
@@ -0,0 +1,193 @@
1+#!/usr/bin/env python3
2+"""Chapitre 12 — Mesurage, superficies et plans : calculs du sujet du cas 1 (Gatineau, DONNÉES SYNTHÉTIQUES).
3+
4+Imprime tous les chiffres cités dans le chapitre 12 :
5+ * plan coté du sujet (cottage à étages, empreinte ≈ 95 m², 165 m² habitables) : superficies selon six conventions
6+ (aire au sol et aire des étages du MEFQ, superficie habitable, nette, habitable avec sous-sol fini, type ANSI Z765) ;
7+ * conversions exactes m² ↔ pi² ;
8+ * prix unitaires implicites du sujet selon la convention (valeur hédonique traite.cas1.predire ≈ 637 953 $) ;
9+ * propagation d'une erreur de mesure sur la valeur : ∂V/∂S = β V/S, méthode delta et effet exact d'une erreur de ±5 % ;
10+ * biais d'un mélange de conventions (sujet mesuré brut, comparables mesurés habitables) ;
11+ * erreur sur la superficie d'un comparable et variance combinée des erreurs ;
12+ * atténuation du coefficient hédonique de la superficie par une erreur de mesure (simulation, graine 20261031).
13+
14+Usage (racine du dépôt) : PYTHONPATH=analysis/python python3 analysis/python/cases/ch12_mesurage.py
15+Le modèle hédonique provient de analysis/python/traite/cas1.py (aucune réécriture)."""
16+from __future__ import annotations
17+import sys, pathlib, math
18+import numpy as np, pandas as pd
19+sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1]))
20+from traite import cas1
21+
22+ROOT = pathlib.Path(__file__).resolve().parents[3]
23+PI2_PAR_M2 = 10.7639 # 1 m² = 10,7639 pi² (convention de l'ouvrage, annexe des conventions)
24+M2_PAR_PI2 = 0.09290304 # 1 pi² = 0,09290304 m² exactement (1 pi = 0,3048 m)
25+GRAINE = 20261031
26+
27+# ----------------------------------------------------------------------------- plan coté du sujet (hypothèses déclarées)
28+PLAN = {
29+ "long_ext_m": 12.00, # longueur hors tout (face externe des murs), ≈ 39 pi 4 po
30+ "larg_ext_m": 7.92, # largeur hors tout, ≈ 26 pi
31+ "epaisseur_mur_m": 0.28, # épaisseur moyenne des murs extérieurs (ossature 2×6, isolant, gypse, revêtement mixte)
32+ "tremie_m2": 1.00 * 3.40, # ouverture de la cage d'escalier à l'étage (1,00 × 3,40 m)
33+ "cloisons_m_lin": 44.0, # longueur cumulée des cloisons intérieures (RDC 18 m + étage 26 m)
34+ "epaisseur_cloison_m": 0.115,
35+ "n_etages": 2,
36+ "sous_sol_fini_m2": 70.0, # cohérent avec le poste « Planchers flottants (sous-sol) : 70 m² » du devis du cas 1
37+ "sous_sol_plancher_sous_sol_m": 1.90, # plancher du sous-sol à 1,90 m sous le niveau moyen du sol (> 0,4 m : pas un étage MEFQ)
38+ "garage_long_m": 6.10, "garage_larg_m": 3.66, # garage simple attaché (20 pi × 12 pi), hors empreinte principale
39+ "lot_facade_m": 15.24, "lot_prof_m": 40.68, # lot rectangulaire 50 pi × 133,5 pi ≈ 620 m²
40+ "marge_avant_m": 7.50, "marge_lat_gauche_m": 2.00, "marge_lat_droite_m": 1.50,
41+}
42+
43+
44+def superficies(plan: dict = PLAN) -> dict:
45+ """Superficies du sujet selon les conventions comparées au tableau 12.3."""
46+ L, W, t = plan["long_ext_m"], plan["larg_ext_m"], plan["epaisseur_mur_m"]
47+ aire_sol = L * W # MEFQ R0701A : projection au sol (tous étages et sous-sol : même empreinte)
48+ perim_sol = 2 * (L + W) # MEFQ R0701B
49+ aire_etages = plan["n_etages"] * aire_sol # MEFQ R0702A : somme des aires brutes des étages (sous-sol exclu)
50+ perim_etages = plan["n_etages"] * perim_sol # MEFQ R0702B
51+ aire_int_niveau = (L - 2 * t) * (W - 2 * t) # intérieur des murs extérieurs, un niveau
52+ habitable = plan["n_etages"] * aire_int_niveau - plan["tremie_m2"] # convention « habitable » de l'ouvrage (hors sous-sol, hors trémie)
53+ cloisons = plan["cloisons_m_lin"] * plan["epaisseur_cloison_m"]
54+ nette = habitable - cloisons # surface utile : cloisons déduites
55+ habitable_ss = habitable + plan["sous_sol_fini_m2"] # « superficie habitable totale » de certaines fiches (sous-sol fini inclus)
56+ ansi_hors_sol = aire_etages # type ANSI Z765 : face externe, niveaux entièrement hors sol ; trémie remplacée par les marches
57+ garage = plan["garage_long_m"] * plan["garage_larg_m"]
58+ lot = plan["lot_facade_m"] * plan["lot_prof_m"]
59+ ratio_murs = aire_int_niveau / aire_sol # = 1 − tP/A + 4t²/A
60+ return {"aire_sol_m2": aire_sol, "perimetre_sol_m": perim_sol, "aire_etages_m2": aire_etages, "perimetre_etages_m": perim_etages,
61+ "aire_int_niveau_m2": aire_int_niveau, "habitable_m2": habitable, "cloisons_m2": cloisons, "nette_m2": nette,
62+ "habitable_sous_sol_m2": habitable_ss, "ansi_hors_sol_m2": ansi_hors_sol, "ansi_sous_sol_m2": plan["sous_sol_fini_m2"],
63+ "garage_m2": garage, "lot_m2": lot, "ratio_int_ext": ratio_murs,
64+ "ratio_murs_formule": 1 - t * perim_sol / aire_sol + 4 * t ** 2 / aire_sol}
65+
66+
67+CONVENTIONS = [("Aire au sol (MEFQ R0701A)", "aire_sol_m2"), ("Superficie nette (utile)", "nette_m2"),
68+ ("Superficie habitable (convention de l'ouvrage)", "habitable_m2"),
69+ ("Aire des étages, brute (MEFQ R0702A)", "aire_etages_m2"),
70+ ("Habitable + sous-sol fini (fiches de courtage)", "habitable_sous_sol_m2")]
71+
72+
73+def modele() -> dict:
74+ d = cas1.charger(); m = cas1.hedonique(d["ventes"])
75+ V = float(cas1.predire(m, cas1.sujet_df(d["sujet"]))[0])
76+ beta = float(m["coef"].loc["ln_S", "coef"]); se = float(m["coef"].loc["ln_S", "se_hc1"])
77+ return {"data": d, "modele": m, "V": V, "beta": beta, "se_beta": se, "S": float(d["sujet"]["superficie_habitable_m2"])}
78+
79+
80+def prix_unitaires(V: float, sup: dict) -> pd.DataFrame:
81+ rows = []
82+ for nom, cle in CONVENTIONS:
83+ s = sup[cle]
84+ rows.append({"convention": nom, "m2": s, "pi2": s * PI2_PAR_M2, "dollars_m2": V / s, "dollars_pi2": V / (s * PI2_PAR_M2)})
85+ return pd.DataFrame(rows)
86+
87+
88+def propagation(V: float, S: float, beta: float, erreurs=(-0.10, -0.05, -0.02, 0.02, 0.05, 0.10)) -> pd.DataFrame:
89+ """Effet d'une erreur relative e sur S : approximation linéaire β e et effet exact (1+e)^β − 1 ; unitaire naïf (β = 1)."""
90+ dVdS = beta * V / S
91+ rows = []
92+ for e in erreurs:
93+ rows.append({"erreur_S_pct": 100 * e, "dS_m2": e * S, "lineaire_pct": 100 * beta * e, "lineaire_dollars": dVdS * e * S,
94+ "exact_pct": 100 * ((1 + e) ** beta - 1), "exact_dollars": V * ((1 + e) ** beta - 1),
95+ "naif_dollars": (V / S) * e * S})
96+ return pd.DataFrame(rows), dVdS
97+
98+
99+def melange_conventions(V: float, beta: float, s_hab: float, s_brute: float) -> dict:
100+ """Sujet mesuré selon une convention, modèle (ou comparables) selon une autre : Δ ln V = β ln(S_1/S_2)."""
101+ d1 = beta * math.log(s_brute / s_hab) # sujet brut, référence habitable → surévaluation
102+ d2 = beta * math.log(s_hab / s_brute) # sujet habitable, référence brute → sous-évaluation
103+ return {"ratio": s_brute / s_hab, "ecart_pct": 100 * (s_brute / s_hab - 1), "sujet_brut_pct": 100 * (math.exp(d1) - 1),
104+ "sujet_brut_dollars": V * (math.exp(d1) - 1), "sujet_hab_pct": 100 * (math.exp(d2) - 1), "sujet_hab_dollars": V * (math.exp(d2) - 1)}
105+
106+
107+def erreur_comparable(P_c: float, S_c: float, S_s: float, beta: float, S_c_obs: float) -> dict:
108+ """Ajustement de superficie A_S = P_c[(S_s/S_c)^β − 1] avec la vraie superficie et avec une superficie erronée du comparable."""
109+ A_vrai = P_c * ((S_s / S_c) ** beta - 1); A_obs = P_c * ((S_s / S_c_obs) ** beta - 1)
110+ return {"A_vrai": A_vrai, "A_obs": A_obs, "erreur": A_obs - A_vrai, "erreur_approx": -beta * P_c * (S_c_obs - S_c) / S_c}
111+
112+
113+def variance_combinee(V: float, beta: float, sigma_s: float, sigma_c: float, n: int) -> dict:
114+ """Écart-type relatif de l'indication par comparaison : β sqrt(σ_s² + σ_c²/n) (erreurs relatives indépendantes, poids égaux)."""
115+ rel = beta * math.sqrt(sigma_s ** 2 + sigma_c ** 2 / n)
116+ return {"relatif": rel, "dollars": rel * V, "part_sujet": sigma_s ** 2 / (sigma_s ** 2 + sigma_c ** 2 / n)}
117+
118+
119+def attenuation(m: dict, d: dict, sigmas=(0.0, 0.02, 0.05, 0.10, 0.15, 0.20), rep: int = 200, graine: int = GRAINE) -> pd.DataFrame:
120+ """Erreur de mesure classique sur ln S (u ~ N(0, σ_u²)) : réestimation de β par MCO (traite.hedonique.mco) et prédiction du sujet.
121+ λ théorique = Var(ẽ)/(Var(ẽ) + σ_u²), ẽ = résidu de ln S sur les autres régresseurs."""
122+ from traite import hedonique as h
123+ v = d["ventes"].copy(); X = cas1.matrice(v); y = np.log(v["prix_vente"].astype(float)).values
124+ cols = list(X.columns); j = cols.index("ln_S")
125+ Xo = X.drop(columns="ln_S").values
126+ lnS = X["ln_S"].values
127+ e = lnS - Xo @ np.linalg.lstsq(Xo, lnS, rcond=None)[0]
128+ var_e = float(np.var(e, ddof=0)); var_lnS = float(np.var(lnS, ddof=0))
129+ rng = np.random.default_rng(graine)
130+ s_sujet = cas1.sujet_df(d["sujet"]); Xs = cas1.matrice(s_sujet)[cols].values
131+ petite = dict(d["sujet"]); petite["superficie_habitable_m2"] = 120; Xp = cas1.matrice(cas1.sujet_df(petite))[cols].values
132+ rows = []
133+ for s in sigmas:
134+ b, Vs, Vp = [], [], []
135+ for _ in range(rep if s > 0 else 1):
136+ Xn = X.values.copy(); Xn[:, j] = lnS + rng.normal(0, s, len(lnS))
137+ r = h.mco(Xn, y); b.append(r["beta"][j])
138+ fac = float(np.mean(np.exp(r["residus"])))
139+ Vs.append(float(np.exp(Xs @ r["beta"])[0]) * fac); Vp.append(float(np.exp(Xp @ r["beta"])[0]) * fac)
140+ lam = var_e / (var_e + s ** 2)
141+ rows.append({"sigma_u": s, "lambda_theorique": lam, "beta_attendu": lam * m["beta"][j], "beta_moyen": float(np.mean(b)),
142+ "beta_ecart_type": float(np.std(b, ddof=1)) if len(b) > 1 else 0.0,
143+ "V_sujet_165": float(np.mean(Vs)), "V_maison_120": float(np.mean(Vp))})
144+ out = pd.DataFrame(rows)
145+ out.attrs["var_e"] = var_e; out.attrs["var_lnS"] = var_lnS; out.attrs["sd_lnS"] = math.sqrt(var_lnS)
146+ return out
147+
148+
149+def tout() -> dict:
150+ sup = superficies(); M = modele()
151+ pu = prix_unitaires(M["V"], sup)
152+ prop, dVdS = propagation(M["V"], M["S"], M["beta"])
153+ mel = melange_conventions(M["V"], M["beta"], sup["habitable_m2"], sup["aire_etages_m2"])
154+ sel = cas1.selection(); comps = sel["comparables"]
155+ c = comps[comps["id_vente"] == "G0404"].iloc[0]
156+ ec = erreur_comparable(float(c["prix_vente"]), float(c["superficie_habitable_m2"]), M["S"], M["beta"], float(c["superficie_habitable_m2"]) + 10)
157+ vc = {k: variance_combinee(M["V"], M["beta"], 0.02, 0.02, 5) for k in ["base"]}
158+ vc["sujet_seul"] = variance_combinee(M["V"], M["beta"], 0.02, 0.0, 5)
159+ vc["comparables_seuls"] = variance_combinee(M["V"], M["beta"], 0.0, 0.02, 5)
160+ vc["cinq_pct"] = variance_combinee(M["V"], M["beta"], 0.05, 0.02, 5)
161+ att = attenuation(M["modele"], M["data"])
162+ return {"sup": sup, "M": M, "pu": pu, "prop": prop, "dVdS": dVdS, "mel": mel, "comp": c, "ec": ec, "vc": vc, "att": att}
163+
164+
165+def main():
166+ r = tout(); sup, M = r["sup"], r["M"]
167+ print("=== Plan coté du sujet (hypothèses déclarées) ===")
168+ for k, v in PLAN.items(): print(f" {k:32s} {v}")
169+ print("\n=== Superficies du sujet (m²) ===")
170+ for k, v in sup.items(): print(f" {k:28s} {v:10.4f}" if isinstance(v, float) else f" {k:28s} {v}")
171+ print(f" (vérif. ratio murs : 1 − tP/A + 4t²/A = {sup['ratio_murs_formule']:.4f} ; direct {sup['ratio_int_ext']:.4f})")
172+ print(f"\n=== Conversions : 1 m² = {PI2_PAR_M2} pi² ; 1 pi² = {M2_PAR_PI2} m² ; produit = {PI2_PAR_M2 * M2_PAR_PI2:.7f}")
173+ print(f" habitable {sup['habitable_m2']:.2f} m² = {sup['habitable_m2']*PI2_PAR_M2:.1f} pi² ; aire des étages {sup['aire_etages_m2']:.2f} m² = {sup['aire_etages_m2']*PI2_PAR_M2:.1f} pi²")
174+ print(f"\n=== Modèle hédonique (traite.cas1) : β_S = {M['beta']:.5f} (ET HC1 {M['se_beta']:.5f}) ; V sujet (Duan) = {M['V']:,.2f} $ ; S = {M['S']} m²")
175+ print("\n=== Prix unitaires implicites du sujet selon la convention ===")
176+ print(r["pu"].to_string(index=False, float_format=lambda x: f"{x:,.2f}"))
177+ print(f"\n=== Propagation : ∂V/∂S = β V / S = {r['dVdS']:,.2f} $/m² ; prix unitaire naïf V/S = {M['V']/M['S']:,.2f} $/m² ; rapport = β = {r['dVdS']/(M['V']/M['S']):.4f}")
178+ print(f" σ_S = 5 % = {0.05*M['S']:.2f} m² → σ_V ≈ {r['dVdS']*0.05*M['S']:,.2f} $ ({100*M['beta']*0.05:.3f} % de V)")
179+ print(r["prop"].to_string(index=False, float_format=lambda x: f"{x:,.3f}"))
180+ print("\n=== Mélange de conventions (habitable vs aire brute des étages) ===")
181+ for k, v in r["mel"].items(): print(f" {k:22s} {v:,.4f}")
182+ c = r["comp"]; ec = r["ec"]
183+ print(f"\n=== Erreur sur la superficie d'un comparable : {c['id_vente']} P = {c['prix_vente']:,.0f} $, S = {c['superficie_habitable_m2']} m² (sujet {M['S']} m²), S observée +10 m² ===")
184+ for k, v in ec.items(): print(f" {k:14s} {v:,.2f} $")
185+ print("\n=== Variance combinée (erreurs relatives indépendantes, 5 comparables, poids égaux) ===")
186+ for k, v in r["vc"].items(): print(f" {k:18s} relatif {100*v['relatif']:.3f} % ; {v['dollars']:,.0f} $ ; part du sujet {100*v['part_sujet']:.1f} %")
187+ att = r["att"]
188+ print(f"\n=== Atténuation (erreur de mesure sur ln S ; Var(ẽ) = {att.attrs['var_e']:.5f}, sd(ln S) = {att.attrs['sd_lnS']:.4f}) ===")
189+ print(att.to_string(index=False, float_format=lambda x: f"{x:,.4f}"))
190+
191+
192+if __name__ == "__main__":
193+ main()
modified analysis/python/cases/ch19_spatial.py +16 −10
@@ -125,10 +125,17 @@ def gwr_resultats(b: dict) -> dict:
125 cols = list(b["Xr"].columns) 125 cols = list(b["Xr"].columns)
126 beta = pd.DataFrame(g["beta"], columns=cols) 126 beta = pd.DataFrame(g["beta"], columns=cols)
127 quart = beta.describe(percentiles=[0.25, 0.5, 0.75]).T[["min", "25%", "50%", "75%", "max"]] 127 quart = beta.describe(percentiles=[0.25, 0.5, 0.75]).T[["min", "25%", "50%", "75%", "max"]]
128− inter = pd.Series(g["beta"][:, 0]).groupby(b["ventes"]["secteur"].values).median() 128+ # effet de localisation local = constante locale + coefficient local du gradient × distance (au-delà de 3 km), par secteur,
129− inter_rel = inter - inter["Hull"] 129+ # comparé à l'effet de localisation du modèle de référence (indicatrice + gradient) et à celui du générateur (prime − 0,006·max(d − 3, 0))
130− dummies = {"Hull": 0.0, **{s: float(b["modele"]["coef"].loc[f"sect_{s}", "coef"]) for s in cas1.SECTEURS[1:]}} 130+ sect = b["ventes"]["secteur"].values; dist = b["Xr"]["dist_centre"].values; j = cols.index("dist_centre")
131− comp = pd.DataFrame({"gwr_intercept_rel_hull": inter_rel, "indicatrice_reference": pd.Series(dummies), "prime_generateur": pd.Series(PRIMES_DGP)}) 131+ loc_gwr = g["beta"][:, 0] + g["beta"][:, j] * dist
132+ coef = b["modele"]["coef"]["coef"]
133+ loc_ref = np.array([coef.get(f"sect_{sc}", 0.0) for sc in sect]) + coef["dist_centre"] * dist
134+ loc_dgp = np.array([PRIMES_DGP[sc] for sc in sect]) - 0.006 * dist
135+ comp = pd.DataFrame({"gwr": loc_gwr, "reference": loc_ref, "generateur": loc_dgp, "secteur": sect}).groupby("secteur").median()
136+ comp["gwr"] -= float(np.median(g["beta"][sect == "Hull", 0])) # écart à la constante locale médiane de Hull
137+ comp = comp.rename(columns={"gwr": "gwr_localisation_rel_hull", "reference": "reference_localisation", "generateur": "generateur_localisation"})
138+ comp.loc["Hull", "gwr_localisation_rel_hull"] = 0.0
132 aicc_mco_r = _aicc(b["mco_r"]["residus"], X.shape[1]); aicc_mco_c = _aicc(b["modele"]["residus"], b["Xc"].shape[1]) 139 aicc_mco_r = _aicc(b["mco_r"]["residus"], X.shape[1]); aicc_mco_c = _aicc(b["modele"]["residus"], b["Xc"].shape[1])
133 return {"selection": sel, "gwr": g, "beta": beta, "quartiles": quart, "comparaison_secteurs": comp, "sujet_beta": gs["beta"][0], 140 return {"selection": sel, "gwr": g, "beta": beta, "quartiles": quart, "comparaison_secteurs": comp, "sujet_beta": gs["beta"][0],
134 "aicc_mco_sans_secteur": aicc_mco_r, "aicc_mco_reference": aicc_mco_c} 141 "aicc_mco_sans_secteur": aicc_mco_r, "aicc_mco_reference": aicc_mco_c}
@@ -141,10 +148,8 @@ def effets_fixes(b: dict, W: np.ndarray) -> pd.DataFrame:
141 r = h.mco(Xm, y); k = Xm.shape[1] 148 r = h.mco(Xm, y); k = Xm.shape[1]
142 return {"specification": nom, "parametres": k, "effets_spatiaux": k_spatial, "effets_temps": k_temps, "r2": r["r2"], 149 return {"specification": nom, "parametres": k, "effets_spatiaux": k_spatial, "effets_temps": k_temps, "r2": r["r2"],
143 "r2_ajuste": r["r2_ajuste"], "sigma": float(np.sqrt(r["sigma2"])), "aic": _aic_mco(r["residus"], k), "moran": h.moran_i(r["residus"], W)["I"]} 150 "r2_ajuste": r["r2_ajuste"], "sigma": float(np.sqrt(r["sigma2"])), "aic": _aic_mco(r["residus"], k), "moran": h.moran_i(r["residus"], W)["I"]}
144− rows = [ligne("Aucun effet spatial ; tendance linéaire", b["Xr"].values, 0, 1), 151+ rows = [ligne("Gradient de distance seul (sans secteur) ; tendance linéaire", b["Xr"].values, 1, 1),
145− ligne("Gradient de distance seulement ; tendance linéaire", b["Xr"].values, 1, 1) if False else None, 152+ ligne("Secteurs et gradient (référence) ; tendance linéaire", b["Xc"].values, 5, 1)]
146− ligne("Secteurs (référence) ; tendance linéaire", b["Xc"].values, 4, 1)]
147− rows = [r for r in rows if r]
148 for cell in [5.0, 3.0, 2.0]: 153 for cell in [5.0, 3.0, 2.0]:
149 gx = np.floor(xy[:, 0] / cell); gy = np.floor(xy[:, 1] / cell); cid = pd.factorize(gx * 1000 + gy)[0] 154 gx = np.floor(xy[:, 0] / cell); gy = np.floor(xy[:, 1] / cell); cid = pd.factorize(gx * 1000 + gy)[0]
150 D = pd.get_dummies(cid, drop_first=True).astype(float).values 155 D = pd.get_dummies(cid, drop_first=True).astype(float).values
@@ -235,6 +240,7 @@ def predictions_sujet(b: dict, mod: dict, g: dict, vk: dict, W: np.ndarray) -> p
235 {"modele": "SEM sans secteur (espérance conditionnelle du résidu)", "ln_correction": u_s, "indication": sem_pred}, 240 {"modele": "SEM sans secteur (espérance conditionnelle du résidu)", "ln_correction": u_s, "indication": sem_pred},
236 {"modele": "SAR sans secteur (décalage des 8 ventes voisines)", "ln_correction": float(sar["rho"] * Wy_s), "indication": sar_pred}, 241 {"modele": "SAR sans secteur (décalage des 8 ventes voisines)", "ln_correction": float(sar["rho"] * Wy_s), "indication": sar_pred},
237 {"modele": "GWR sans secteur (coefficients locaux au sujet)", "ln_correction": float(g["sujet_beta"][0] - b["mco_r"]["beta"][0]), "indication": gwr_pred}]) 242 {"modele": "GWR sans secteur (coefficients locaux au sujet)", "ln_correction": float(g["sujet_beta"][0] - b["mco_r"]["beta"][0]), "indication": gwr_pred}])
243+ df["ecart_log_vs_mco_sans_secteur"] = np.log(df["indication"] / mco_r)
238 df.attrs["voisins_sujet"] = list(b["ventes"]["id_vente"].values[idx]); df.attrs["secteurs_voisins"] = list(b["ventes"]["secteur"].values[idx]) 244 df.attrs["voisins_sujet"] = list(b["ventes"]["id_vente"].values[idx]); df.attrs["secteurs_voisins"] = list(b["ventes"]["secteur"].values[idx])
239 df.attrs["variance_krigeage_sujet"] = float(vk["sujet"]["variance"][0]) 245 df.attrs["variance_krigeage_sujet"] = float(vk["sujet"]["variance"][0])
240 return df 246 return df
@@ -244,11 +250,11 @@ def predictions_sujet(b: dict, mod: dict, g: dict, vk: dict, W: np.ndarray) -> p
244 def sensibilite(b: dict) -> pd.DataFrame: 250 def sensibilite(b: dict) -> pd.DataFrame:
245 y, Xr, xy, e = b["y"], b["Xr"].values, b["xy"], b["mco_r"]["residus"] 251 y, Xr, xy, e = b["y"], b["Xr"].values, b["xy"], b["mco_r"]["residus"]
246 specs = [("k plus proches voisins", k, h.matrice_poids_knn(xy, k)) for k in [4, 6, 8, 12, 16]] 252 specs = [("k plus proches voisins", k, h.matrice_poids_knn(xy, k)) for k in [4, 6, 8, 12, 16]]
247− specs += [("distance inverse", d, h.matrice_poids_distance_inverse(xy, d)) for d in [1.0, 2.0, 4.0]] 253+ specs += [("distance inverse", d, h.matrice_poids_distance_inverse(xy, d)) for d in [2.0, 3.0, 4.0]]
248 rows = [] 254 rows = []
249 for fam, par, W in specs: 255 for fam, par, W in specs:
250 mi = h.moran_i(e, W); sar = h.sar_mv(y, Xr, W); sem = h.sem_mv(y, Xr, W) 256 mi = h.moran_i(e, W); sar = h.sar_mv(y, Xr, W); sem = h.sem_mv(y, Xr, W)
251− rows.append({"famille": fam, "parametre": par, "voisins_moyen": float((W > 0).sum(1).mean()), "I": mi["I"], "z": mi["z"], 257+ rows.append({"famille": fam, "parametre": par, "voisins_moyen": float((W > 0).sum(1).mean()), "lignes_vides": int((W.sum(1) == 0).sum()), "I": mi["I"], "z": mi["z"],
252 "rho": sar["rho"], "se_rho": sar["se_rho"], "aic_sar": sar["aic"], "lambda": sem["lambda"], "se_lambda": sem["se_lambda"], "aic_sem": sem["aic"]}) 258 "rho": sar["rho"], "se_rho": sar["se_rho"], "aic_sar": sar["aic"], "lambda": sem["lambda"], "se_lambda": sem["se_lambda"], "aic_sem": sem["aic"]})
253 return pd.DataFrame(rows) 259 return pd.DataFrame(rows)
254 260
modified analysis/python/figures/ch11_fiche_etat.py +3 −3
@@ -11,7 +11,7 @@ import matplotlib.pyplot as plt
11 from traite.style import setup, palette, savefig, LARGEUR, fmt_dollars 11 from traite.style import setup, palette, savefig, LARGEUR, fmt_dollars
12 import ch11_inspection as cas 12 import ch11_inspection as cas
13 13
14−COUL_ETAT = {1: palette.seq[0], 2: palette.seq[1], 3: palette.seq[2], 4: palette.seq[3], 5: palette.seq[4]} 14+COUL_ETAT = {1: palette.cat[4], 2: palette.cat[0], 3: palette.cat[2], 4: palette.cat[1], 5: palette.cat[3]}
15 15
16 16
17 def fiche_etat(f): 17 def fiche_etat(f):
@@ -26,9 +26,9 @@ def fiche_etat(f):
26 ax.scatter(f.loc[m, "ratio"], y[m], s=tailles[m], color=COUL_ETAT[int(e)], edgecolor=palette.ink2, lw=0.4, zorder=3, label=f"état {int(e)}") 26 ax.scatter(f.loc[m, "ratio"], y[m], s=tailles[m], color=COUL_ETAT[int(e)], edgecolor=palette.ink2, lw=0.4, zorder=3, label=f"état {int(e)}")
27 ax.set_yticks(y); ax.set_yticklabels([c.replace(" (", "\n(") if len(c) > 44 else c for c in f["composante"]], fontsize=7) 27 ax.set_yticks(y); ax.set_yticklabels([c.replace(" (", "\n(") if len(c) > 44 else c for c in f["composante"]], fontsize=7)
28 ax.set_xlim(0, 1.45); ax.axvline(1.0, color=palette.ink2, lw=0.7, ls="--") 28 ax.set_xlim(0, 1.45); ax.axvline(1.0, color=palette.ink2, lw=0.7, ls="--")
29− ax.set_xlabel("Fraction de la vie utile consommée (repère | : âge chronologique ; disque : âge effectif, taille proportionnelle au coût neuf)") 29+ ax.set_xlabel("Fraction de la vie utile consommée\n(trait : âge chronologique ; disque : âge effectif, taille selon le coût neuf)", fontsize=7.5)
30 ax.grid(axis="y", visible=False) 30 ax.grid(axis="y", visible=False)
31− ax.legend(loc="lower right", fontsize=6.8, ncol=2, title="Note d'état", title_fontsize=7) 31+ ax.legend(loc="upper left", bbox_to_anchor=(0.01, 0.99), fontsize=6.8, ncol=1, title="Note d'état constatée", title_fontsize=7)
32 fig.tight_layout() 32 fig.tight_layout()
33 return savefig(fig, "ch11/ch11-fig-fiche-etat.pdf") 33 return savefig(fig, "ch11/ch11-fig-fiche-etat.pdf")
34 34
modified analysis/python/figures/ch11_frise_pathologies.py +11 −10
@@ -9,6 +9,7 @@ Sortie : assets/figures/ch11/ch11-fig-frise-pathologies.pdf"""
9 import sys, pathlib 9 import sys, pathlib
10 ROOT = pathlib.Path(__file__).resolve().parents[3] 10 ROOT = pathlib.Path(__file__).resolve().parents[3]
11 sys.path.insert(0, str(ROOT / "analysis/python")) 11 sys.path.insert(0, str(ROOT / "analysis/python"))
12+import textwrap
12 import matplotlib.pyplot as plt 13 import matplotlib.pyplot as plt
13 from traite.style import setup, palette, savefig, LARGEUR 14 from traite.style import setup, palette, savefig, LARGEUR
14 15
@@ -36,21 +37,21 @@ FAMILLES = ["Fondations et sols", "Enveloppe", "Isolation et air intérieur", "P
36 37
37 def main(): 38 def main():
38 setup() 39 setup()
39− coul = {f: palette.cat[i % len(palette.cat)] for i, f in enumerate(FAMILLES)} 40+ coul = {f: palette.cat[i] for i, f in enumerate(FAMILLES[:-1])}; coul["Normes"] = palette.ink2
40 ordre = sorted(FRISE, key=lambda r: (FAMILLES.index(r[3]), r[1])) 41 ordre = sorted(FRISE, key=lambda r: (FAMILLES.index(r[3]), r[1]))
41− fig, ax = plt.subplots(figsize=(LARGEUR, 4.6)) 42+ fig, ax = plt.subplots(figsize=(LARGEUR, 5.2))
42 for k, (lib, d, f_, fam) in enumerate(ordre): 43 for k, (lib, d, f_, fam) in enumerate(ordre):
43 ax.barh(k, f_ - d, left=d, height=0.62, color=coul[fam], alpha=0.9) 44 ax.barh(k, f_ - d, left=d, height=0.62, color=coul[fam], alpha=0.9)
44− ax.text(d - 1, k, lib, ha="right", va="center", fontsize=6.6, color=palette.ink) 45+ ax.set_yticks(range(len(ordre))); ax.set_yticklabels(["\n".join(textwrap.wrap(r[0], 46)) for r in ordre], fontsize=6.3)
45− ax.set_yticks([]); ax.set_ylim(-0.7, len(ordre) - 0.3); ax.invert_yaxis() 46+ ax.set_ylim(-0.7, len(ordre) - 0.3); ax.invert_yaxis()
46− ax.set_xlim(1900, 2030); ax.set_xticks(range(1900, 2031, 10)) 47+ ax.set_xlim(1900, 2030); ax.set_xticks(range(1900, 2031, 20)); ax.tick_params(axis="x", labelsize=7)
47− ax.set_xlabel("Période de construction ou de mise en place (repères indicatifs, arrondis à la décennie sauf dates (v) vérifiées)") 48+ ax.set_xlabel("Période de mise en place (repères indicatifs arrondis ;\ndates marquées (v) : vérifiées sur une source publique)", fontsize=7.5)
48− ax.axvline(1998, color=palette.brand, lw=0.9, ls="--"); ax.text(1998.5, -0.45, "sujet cas 1 : 1998", fontsize=7, color=palette.brand, va="center") 49+ ax.axvline(1998, color=palette.brand, lw=0.9, ls="--"); ax.text(1996.5, len(ordre) - 0.6, "sujet cas 1 : 1998", fontsize=7, color=palette.brand, va="center", ha="right")
49 ax.grid(axis="y", visible=False) 50 ax.grid(axis="y", visible=False)
50 from matplotlib.patches import Patch 51 from matplotlib.patches import Patch
51− ax.legend(handles=[Patch(color=coul[f], label=f) for f in FAMILLES], loc="lower left", ncol=4, fontsize=6.6, bbox_to_anchor=(-0.95, -0.26), frameon=False) 52+ fig.legend(handles=[Patch(color=coul[f], label=f) for f in FAMILLES], loc="lower center", ncol=4, fontsize=6.6, frameon=False, bbox_to_anchor=(0.5, -0.01))
52− for s in ("left",): ax.spines[s].set_visible(False) 53+ ax.spines["left"].set_visible(False)
53− fig.tight_layout() 54+ fig.tight_layout(rect=(0, 0.06, 1, 1))
54 out = savefig(fig, "ch11/ch11-fig-frise-pathologies.pdf"); print("OK", out) 55 out = savefig(fig, "ch11/ch11-fig-frise-pathologies.pdf"); print("OK", out)
55 56
56 57
modified analysis/python/figures/ch11_matrice_age_effectif.py +1 −1
@@ -25,7 +25,7 @@ def main():
25 for e in etats: 25 for e in etats:
26 for a in (0, 15, 30, 45, 60): 26 for a in (0, 15, 30, 45, 60):
27 v = cas.age_effectif(a, L, e) 27 v = cas.age_effectif(a, L, e)
28− ax1.text(a, e, f"{v:.0f}", ha="center", va="center", fontsize=7.5, color=palette.ink if v < 0.55 * L else "white") 28+ ax1.text(min(max(a, 2), 58), e, f"{v:.0f}", ha="center", va="center", fontsize=7.5, color=palette.ink if v < 0.55 * L else "white")
29 cb = fig.colorbar(im, ax=ax1, fraction=0.05, pad=0.03); cb.set_label("Âge effectif $a_{\\mathrm{eff}}$ (années)") 29 cb = fig.colorbar(im, ax=ax1, fraction=0.05, pad=0.03); cb.set_label("Âge effectif $a_{\\mathrm{eff}}$ (années)")
30 cb.outline.set_visible(False) 30 cb.outline.set_visible(False)
31 for i, e in enumerate(etats): 31 for i, e in enumerate(etats):
added analysis/python/figures/ch19_figures.py +143 −0
@@ -0,0 +1,143 @@
1+#!/usr/bin/env python3
2+"""Figures du chapitre 19 — modèles spatiaux et temporels (cas 1, Gatineau, DONNÉES SYNTHÉTIQUES, graine 20261031).
3+Toutes les cartes sont tracées sur les coordonnées synthétiques (km est/nord autour du centroïde des ventes), sans fond de carte.
4+Sorties (assets/figures/ch19/) :
5+ ch19-fig-carte-residus.pdf résidus MCO sans indicatrices de secteur vs modèle de référence
6+ ch19-fig-correlogramme.pdf I de Moran par bande de distance
7+ ch19-fig-gwr-coefficients.pdf coefficients locaux de la GWR (localisation, superficie, âge)
8+ ch19-fig-gwr-bande.pdf score de validation croisée selon la bande passante
9+ ch19-fig-variogramme.pdf variogramme empirique et modèle exponentiel
10+ ch19-fig-krigeage.pdf surface krigée des résidus
11+ ch19-fig-sensibilite-W.pdf I, ρ et λ selon la matrice de poids
12+Usage (racine du dépôt) : PYTHONPATH=analysis/python python3 analysis/python/figures/ch19_figures.py"""
13+import sys, pathlib
14+ROOT = pathlib.Path(__file__).resolve().parents[3]
15+sys.path.insert(0, str(ROOT / "analysis/python")); sys.path.insert(0, str(ROOT / "analysis/python/cases"))
16+import numpy as np
17+import matplotlib.pyplot as plt
18+from matplotlib.ticker import FuncFormatter
19+from traite.style import setup, palette, savefig, LARGEUR, DEMI
20+from traite import hedonique as h
21+import ch19_spatial as c19
22+
23+SECTEURS = ["Hull", "Gatineau", "Aylmer", "Buckingham", "Masson-Angers"]
24+
25+def _axes_km(ax, xy):
26+ ax.set_aspect("equal"); ax.set_xlim(xy[:, 0].min() - 1.5, xy[:, 0].max() + 1.5); ax.set_ylim(xy[:, 1].min() - 1.5, xy[:, 1].max() + 1.5)
27+ ax.set_xlabel("Est (km, coordonnées synthétiques)"); ax.grid(True, lw=0.4)
28+
29+def _etiquettes_secteurs(ax, v, xy, dy=0.0):
30+ for s in SECTEURS:
31+ m = (v["secteur"] == s).values
32+ cx, cy = np.median(xy[m, 0]), np.median(xy[m, 1])
33+ ax.text(cx, cy + dy, s, fontsize=7, color=palette.ink2, ha="center", va="center",
34+ bbox=dict(boxstyle="round,pad=0.15", fc=palette.surface, ec="none", alpha=0.75))
35+
36+def fig_carte_residus(res):
37+ b = res["base"]; v, xy, cs = b["ventes"], b["xy"], b["cs"]
38+ series = [("Sans indicatrices de secteur (I = %.2f)" % res["moran"].loc[2, "I_knn"], b["mco_r"]["residus"]),
39+ ("Modèle de référence (I = %.2f)" % res["moran"].loc[3, "I_knn"], b["modele"]["residus"])]
40+ fig, axes = plt.subplots(1, 2, figsize=(LARGEUR, 3.3), sharey=True)
41+ vmax = 0.25; cmap = palette.cmap_div()
42+ for ax, (titre, e) in zip(axes, series):
43+ sc = ax.scatter(xy[:, 0], xy[:, 1], c=np.clip(e, -vmax, vmax), cmap=cmap, vmin=-vmax, vmax=vmax, s=9, lw=0)
44+ ax.scatter(cs[:, 0], cs[:, 1], marker="*", s=110, color=palette.ink, zorder=5)
45+ _axes_km(ax, xy); ax.set_title(titre, fontsize=8.5); _etiquettes_secteurs(ax, v, xy, dy=4.5)
46+ axes[0].set_ylabel("Nord (km)")
47+ cb = fig.colorbar(sc, ax=axes, orientation="horizontal", fraction=0.05, pad=0.16, aspect=40)
48+ cb.set_label("Résidu du modèle semi-logarithmique (ln P observé − ln P ajusté)", fontsize=8)
49+ cb.ax.tick_params(labelsize=7.5)
50+ savefig(fig, "ch19/ch19-fig-carte-residus.pdf")
51+
52+def fig_correlogramme(res):
53+ cg = res["correlogramme"]
54+ fig, ax = plt.subplots(figsize=(LARGEUR, 3.0))
55+ for i, (cle, nom) in enumerate([("sans_secteur", "Résidus sans indicatrices de secteur"), ("reference", "Résidus du modèle de référence")]):
56+ pts = cg[cle]; x = np.array([(p["d_min"] + p["d_max"]) / 2 for p in pts]); I = np.array([p["I"] for p in pts])
57+ sd = np.sqrt(np.array([p["Var_I"] for p in pts]))
58+ ax.errorbar(x + (i - 0.5) * 0.12, I, yerr=1.96 * sd, fmt="o-", color=palette.cat[i], ms=4.5, lw=1.4, capsize=2, label=nom)
59+ ax.axhline(cg["reference"][0]["E_I"], color=palette.ink2, lw=0.9, ls="--")
60+ ax.text(14.6, cg["reference"][0]["E_I"] + 0.012, "E[I] = −1/(n−1)", fontsize=7, color=palette.ink2, ha="right")
61+ ax.set_xlabel("Distance entre paires de ventes (km, centre de la bande)"); ax.set_ylabel("I de Moran de la bande")
62+ ax.legend(loc="upper right", fontsize=7.5)
63+ savefig(fig, "ch19/ch19-fig-correlogramme.pdf")
64+
65+def fig_gwr_coefficients(res):
66+ b = res["base"]; v, xy, cs = b["ventes"], b["xy"], b["cs"]; g = res["gwr"]["gwr"]; cols = list(b["Xr"].columns)
67+ j = cols.index("dist_centre"); dist = b["Xr"]["dist_centre"].values
68+ sect = v["secteur"].values
69+ loc = g["beta"][:, 0] + g["beta"][:, j] * dist - np.median(g["beta"][sect == "Hull", 0])
70+ panneaux = [("Effet de localisation local\n(écart à Hull, en log)", loc, palette.cmap_div(), -0.35, 0.35),
71+ ("Coefficient local de ln(superficie)\n(élasticité)", g["beta"][:, cols.index("ln_S")], palette.cmap_seq(), None, None),
72+ ("Coefficient local de l'âge\n(× 100, % par année)", 100 * g["beta"][:, cols.index("age")], palette.cmap_seq(), None, None)]
73+ fig, axes = plt.subplots(1, 3, figsize=(LARGEUR, 2.75))
74+ for ax, (titre, z, cmap, vmin, vmax) in zip(axes, panneaux):
75+ sc = ax.scatter(xy[:, 0], xy[:, 1], c=z, cmap=cmap, vmin=vmin, vmax=vmax, s=6, lw=0)
76+ ax.scatter(cs[:, 0], cs[:, 1], marker="*", s=70, color=palette.ink, zorder=5)
77+ _axes_km(ax, xy); ax.set_title(titre, fontsize=7.5); ax.tick_params(labelsize=6.5); ax.set_xlabel("Est (km)", fontsize=7)
78+ cb = fig.colorbar(sc, ax=ax, orientation="horizontal", fraction=0.06, pad=0.22, aspect=28); cb.ax.tick_params(labelsize=6.5)
79+ axes[0].set_ylabel("Nord (km)", fontsize=7)
80+ savefig(fig, "ch19/ch19-fig-gwr-coefficients.pdf")
81+
82+def fig_gwr_bande(res):
83+ sel = res["gwr"]["selection"]
84+ fig, ax = plt.subplots(figsize=(DEMI, 2.5))
85+ ax.plot(sel["grille"], sel["cv_grille"], marker="o", ms=3.5, color=palette.cat[0])
86+ ax.axvline(sel["bande"], color=palette.ink2, ls="--", lw=0.9)
87+ ax.text(sel["bande"] * 1.08, ax.get_ylim()[1] * 0.985, "h* = %.2f km" % sel["bande"], fontsize=7, color=palette.ink2, va="top")
88+ ax.set_xscale("log"); ax.set_xlabel("Bande passante h (km, échelle log)"); ax.set_ylabel("Score de validation croisée\n(somme des carrés, log)")
89+ ax.set_xticks([0.3, 0.5, 1, 2, 5, 10]); ax.get_xaxis().set_major_formatter(FuncFormatter(lambda x, p: ("%g" % x)))
90+ savefig(fig, "ch19/ch19-fig-gwr-bande.pdf")
91+
92+def fig_variogramme(res):
93+ vk = res["variogramme"]; vg, vr, p = vk["variogramme"], vk["variogramme_reference"], vk["parametres"]
94+ fig, ax = plt.subplots(figsize=(LARGEUR, 3.1))
95+ taille = 12 + 60 * vg["n"] / vg["n"].max()
96+ ax.scatter(vg["h"], vg["gamma"], s=taille, color=palette.cat[0], alpha=0.85, lw=0, label="Résidus sans indicatrices de secteur (taille ∝ nombre de paires)", zorder=3)
97+ hh = np.linspace(0.05, 16, 200)
98+ ax.plot(hh, h.variogramme_exponentiel(hh, p["pepite"], p["palier_partiel"], p["portee"]), color=palette.cat[0], lw=1.6,
99+ label="Modèle exponentiel ajusté (pépite %.4f, palier %.4f, portée pratique %.0f km)" % (p["pepite"], p["palier"], p["portee_pratique"]))
100+ ax.scatter(vr["h"], vr["gamma"], s=14, marker="s", color=palette.cat[1], lw=0, label="Résidus du modèle de référence", zorder=3)
101+ ax.axhline(vk["sigma2_reference"], color=palette.cat[1], lw=0.9, ls=":")
102+ ax.axhline(vk["variance_residus"], color=palette.cat[0], lw=0.9, ls=":")
103+ ax.text(15.8, vk["variance_residus"] + 0.0004, "variance des résidus sans secteur", fontsize=7, color=palette.ink2, ha="right")
104+ ax.text(15.8, vk["sigma2_reference"] - 0.0012, "σ² du modèle de référence", fontsize=7, color=palette.ink2, ha="right")
105+ ax.set_xlabel("Distance h entre paires de ventes (km)"); ax.set_ylabel("Semi-variance γ(h) (log²)")
106+ ax.set_ylim(0, 0.02); ax.legend(loc="upper left", fontsize=7)
107+ savefig(fig, "ch19/ch19-fig-variogramme.pdf")
108+
109+def fig_krigeage(res):
110+ b = res["base"]; v, xy, cs = b["ventes"], b["xy"], b["cs"]; gr = res["variogramme"]["grille"]
111+ GX, GY = np.meshgrid(gr["x"], gr["y"]); pts = np.column_stack([GX.ravel(), GY.ravel()])
112+ from scipy.spatial import cKDTree
113+ dmin = cKDTree(xy).query(pts)[0].reshape(GX.shape)
114+ Z = np.ma.masked_where(dmin > 2.5, gr["z"])
115+ fig, ax = plt.subplots(figsize=(LARGEUR, 3.6))
116+ vmax = 0.25
117+ cf = ax.contourf(GX, GY, np.clip(Z, -vmax, vmax), levels=np.linspace(-vmax, vmax, 21), cmap=palette.cmap_div(), vmin=-vmax, vmax=vmax)
118+ ax.scatter(xy[:, 0], xy[:, 1], s=3, color=palette.ink, alpha=0.45, lw=0)
119+ ax.scatter(cs[:, 0], cs[:, 1], marker="*", s=120, color=palette.ink, zorder=5)
120+ ax.annotate("sujet : résidu krigé %.3f" % res["variogramme"]["sujet"]["prediction"][0], (cs[0, 0], cs[0, 1]), xytext=(-70, -22), textcoords="offset points",
121+ fontsize=7, color=palette.ink, arrowprops=dict(arrowstyle="-", color=palette.ink2, lw=0.7))
122+ _axes_km(ax, xy); ax.set_ylabel("Nord (km)"); _etiquettes_secteurs(ax, v, xy, dy=5.0)
123+ cb = fig.colorbar(cf, ax=ax, fraction=0.035, pad=0.02); cb.set_label("Résidu krigé (log)", fontsize=8); cb.ax.tick_params(labelsize=7.5)
124+ savefig(fig, "ch19/ch19-fig-krigeage.pdf")
125+
126+def fig_sensibilite(res):
127+ s = res["sensibilite"]; k = s[s["famille"].str.startswith("k")]
128+ fig, ax = plt.subplots(figsize=(LARGEUR, 2.9))
129+ ax.errorbar(k["parametre"], k["rho"], yerr=1.96 * k["se_rho"], fmt="o-", color=palette.cat[0], ms=4.5, capsize=2, label="ρ du SAR (± 1,96 é.-t.)")
130+ ax.errorbar(k["parametre"], k["lambda"], yerr=1.96 * k["se_lambda"], fmt="s-", color=palette.cat[1], ms=4.5, capsize=2, label="λ du SEM (± 1,96 é.-t.)")
131+ ax.plot(k["parametre"], k["I"], "^-", color=palette.cat[2], ms=4.5, label="I de Moran des résidus MCO")
132+ ax.set_xlabel("Nombre k de plus proches voisins dans W"); ax.set_ylabel("Coefficient"); ax.set_xticks(k["parametre"].astype(int))
133+ ax.set_ylim(0, 0.95); ax.legend(loc="upper left", fontsize=7.5)
134+ savefig(fig, "ch19/ch19-fig-sensibilite-W.pdf")
135+
136+def main():
137+ setup()
138+ res = c19.main(verbose=False)
139+ for f in [fig_carte_residus, fig_correlogramme, fig_gwr_coefficients, fig_gwr_bande, fig_variogramme, fig_krigeage, fig_sensibilite]:
140+ f(res); print("OK", f.__name__)
141+
142+if __name__ == "__main__":
143+ main()
modified analysis/python/tests/test_ch04.py +45 −0
@@ -225,3 +225,48 @@ class TestFiguresEtFichiers:
225 assert set(carte.CENTRES) == {"Montréal", "Québec", "Ottawa-Gatineau (partie du Québec)", "Sherbrooke", "Trois-Rivières", "Saguenay"} 225 assert set(carte.CENTRES) == {"Montréal", "Québec", "Ottawa-Gatineau (partie du Québec)", "Sherbrooke", "Trois-Rivières", "Saguenay"}
226 for lat, lon in carte.CENTRES.values(): 226 for lat, lon in carte.CENTRES.values():
227 assert 45.0 < lat < 49.0 and -76.0 < lon < -70.5 227 assert 45.0 < lat < 49.0 and -76.0 < lon < -70.5
228+
229+
230+class TestExercices:
231+ @pytest.fixture(scope="class")
232+ def ex(self):
233+ return cas.exercices()
234+
235+ def test_ex1(self, ex):
236+ e = ex["ex1"]
237+ assert e["qc_menages"] == 2053295 and e["qc_prop"] == 683170
238+ assert e["qc_part"] == pytest.approx(0.548, abs=5e-4) and e["qc_taux_prop"] == pytest.approx(0.333, abs=5e-4)
239+ assert e["ca_part"] == pytest.approx(0.462, abs=5e-4) and e["ca_taux_prop"] == pytest.approx(0.395, abs=5e-4)
240+
241+ def test_ex2(self, ex):
242+ e = ex["ex2"]
243+ assert e["sherbrooke"] == pytest.approx(4.35, abs=5e-3) and e["trois_rivieres"] == pytest.approx(3.60, abs=5e-3)
244+ assert e["sherbrooke_plus30"] == pytest.approx(5.65, abs=5e-3) and e["sherbrooke_plus30"] == pytest.approx(1.3 * e["sherbrooke"], rel=1e-12)
245+
246+ def test_ex3(self, ex):
247+ e = ex["ex3"]
248+ assert e["loyer_2025"] == pytest.approx(1105.71, abs=0.005) and e["var_brute"] == pytest.approx(0.1057, abs=5e-5)
249+ assert e["var_meme"] == 0.06 and e["univers_2025"] == 21000
250+
251+ def test_ex4(self, ex):
252+ a, b = ex["ex4_620000"], ex["ex4_560000"]
253+ assert a["base"] == 620000 and a["droit"] == pytest.approx(9210.5, abs=1e-9) and a["taux_eff_prix"] == pytest.approx(0.01486, abs=5e-5)
254+ assert b["base"] == pytest.approx(601800, abs=1e-9) and b["droit"] == pytest.approx(8664.5, abs=1e-9)
255+ assert b["taux_eff_prix"] == pytest.approx(0.01547, abs=5e-5) and b["taux_eff_base"] == pytest.approx(0.01440, abs=5e-5)
256+
257+ def test_ex5(self, ex):
258+ e = ex["ex5"]
259+ assert e["tcac"] == pytest.approx(0.0146, abs=5e-5) and e["pop_2035"] == pytest.approx(1044650, abs=1)
260+ assert e["tcac_isq"] == pytest.approx(0.00573, abs=5e-6) and e["pop_2051_isq"] == pytest.approx(1048184, abs=1) and e["pop_2051_tendance"] == pytest.approx(1317519, abs=1)
261+
262+ def test_ex6(self, ex):
263+ e = ex["ex6"]
264+ assert e["prix_412"] == pytest.approx(540666, abs=0.5) and e["prix_619"] == pytest.approx(458582, abs=0.5)
265+ assert e["capital_412"] == pytest.approx(2400 / 2130.18 * 400000, rel=1e-4)
266+ assert e["elast_3"] == pytest.approx(-0.325, abs=5e-3) and e["elast_6"] == pytest.approx(-0.557, abs=5e-3)
267+ assert e["semi_3_par_point"] == pytest.approx(-0.1084, abs=5e-4) and e["semi_6_par_point"] == pytest.approx(-0.0929, abs=5e-4)
268+ # élasticité = taux × semi-élasticité (par unité de taux)
269+ assert e["elast_3"] == pytest.approx(0.03 * e["semi_3_par_point"] * 100, rel=2e-3)
270+ assert e["elast_6"] == pytest.approx(0.06 * e["semi_6_par_point"] * 100, rel=2e-3)
271+ assert abs(e["semi_3_par_point"]) > abs(e["semi_6_par_point"]) and abs(e["elast_3"]) < abs(e["elast_6"])
272+ assert e["pente_3_35_par_point"] == pytest.approx(-0.107, abs=5e-4) and e["pente_619_7_par_point"] == pytest.approx(-0.090, abs=5e-4)
added analysis/python/tests/test_ch05.py +247 −0
@@ -0,0 +1,247 @@
1+"""Tests du chapitre 5 — modèle monocentrique simulé, gradient prix/distance du cas 1, décomposition du cas 4,
2+rente résiduelle, capitalisation fiscale et exercices.
3+Tolérances : identités à 1e-9 ; valeurs citées dans le texte à l'arrondi affiché (0,5 $ sur les montants au dollar,
4+0,005 point sur les pourcentages à deux décimales, 0,0005 sur les coefficients en log à trois décimales)."""
5+import sys, pathlib, math
6+import numpy as np, pytest
7+sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1] / "cases"))
8+import ch05_rente as c5
9+from traite import cas1, cas4
10+from traite import hedonique as h
11+
12+P = c5.PARAMS
13+
14+
15+@pytest.fixture(scope="module")
16+def data():
17+ d1 = cas1.charger(); v = d1["ventes"]; m = cas1.hedonique(v)
18+ d4 = cas4.charger()
19+ return {"v": v, "sujet": d1["sujet"], "modele": m, "tranches": c5.tranches_distance(v), "gradients": c5.gradients_cas1(v, m),
20+ "pf": d4["portefeuille"], "dec": c5.decomposition_rmr(d4["portefeuille"])}
21+
22+
23+class TestMonocentrique:
24+ def test_gradient_et_frontiere(self):
25+ g = c5.gradient_exponentiel(P)
26+ assert g == pytest.approx(0.029167, abs=5e-6) and c5.demi_distance(g) == pytest.approx(23.8, abs=0.05)
27+ dbar = c5.frontiere_urbaine(P)
28+ assert dbar == pytest.approx(32.29, abs=0.005)
29+ # identité : r(d_bar) = ra
30+ assert c5.rente_fonciere(dbar, P) == pytest.approx(P["ra"], rel=1e-9)
31+ assert c5.prix_logement(dbar, P) == pytest.approx(85.97, abs=0.005)
32+
33+ def test_condition_de_muth_numerique(self):
34+ # p'(d) q(d) = -t, vérifié par différences finies
35+ for d in (0.0, 5.0, 12.0, 25.0):
36+ eps = 1e-5
37+ dp = (c5.prix_logement(d + eps, P) - c5.prix_logement(d - eps, P)) / (2 * eps)
38+ assert dp * c5.consommation_logement(d, P) == pytest.approx(-P["t"], rel=1e-6)
39+
40+ def test_valeurs_tableau(self):
41+ tab = c5.gradient_exact_vs_exponentiel(P).set_index("d_km")
42+ assert tab.loc[10.0, "p_exact"] == pytest.approx(191.61, abs=0.005) and tab.loc[10.0, "p_exponentiel"] == pytest.approx(194.23, abs=0.005)
43+ assert tab.loc[10.0, "ecart_pct"] == pytest.approx(0.014, abs=5e-4)
44+ assert tab.loc[25.0, "p_exact"] == pytest.approx(114.18, abs=0.005) and tab.loc[25.0, "p_exponentiel"] == pytest.approx(125.40, abs=0.005)
45+ assert tab.loc[25.0, "ecart_pct"] == pytest.approx(0.098, abs=5e-4)
46+ assert tab.loc[0.0, "q_m2"] == pytest.approx(92.3, abs=0.05) and tab.loc[10.0, "q_m2"] == pytest.approx(114.3, abs=0.05)
47+ assert c5.consommation_logement(c5.frontiere_urbaine(P), P) == pytest.approx(200.3, abs=0.05)
48+ assert tab.loc[10.0, "rente_fonciere"] == pytest.approx(28.92, abs=0.005) and tab.loc[10.0, "densite_relative"] == pytest.approx(0.396, abs=5e-4)
49+ assert c5.valeur_terrain(P["r0"], P["i"]) == 1600 and c5.valeur_terrain(P["ra"], P["i"]) == 40
50+ assert c5.elasticite_rente_prix(P["alpha"]) == pytest.approx(3.333, abs=5e-4)
51+
52+ def test_identites_production(self):
53+ d = np.array([3.0, 8.0, 20.0])
54+ ratio_p = c5.prix_logement(d, P) / P["p0"]
55+ assert np.allclose(c5.rente_fonciere(d, P) / P["r0"], ratio_p ** (1 / P["alpha"]))
56+ # densité = (p/p0)^(1/alpha) * y/(y - t d)
57+ assert np.allclose(c5.densite(d, P), ratio_p ** (1 / P["alpha"]) * P["y"] / (P["y"] - P["t"] * d))
58+ # l'approximation exponentielle surestime le prix pour d > 0
59+ assert np.all(c5.prix_exponentiel(d, P) > c5.prix_logement(d, P))
60+
61+ def test_alonso(self):
62+ (R1, t1), (R2, t2), (R3, t3) = c5.ALONSO.values()
63+ assert c5.frontiere_usages(R1, t1, R2, t2) == pytest.approx(9.47, abs=0.005)
64+ assert c5.frontiere_usages(R2, t2, R3, t3) == pytest.approx(14.29, abs=0.005)
65+ assert (R3 - P["ra"]) / t3 == pytest.approx(32.22, abs=0.005)
66+ d = np.array([5.0, 12.0, 20.0, 35.0]); env, courbes = c5.enveloppe_alonso(d)
67+ assert np.all(env >= np.array([max(c[i] for c in courbes.values()) for i in range(len(d))])) and env[-1] == P["ra"]
68+
69+
70+class TestCas1:
71+ def test_tranches(self, data):
72+ tr = data["tranches"]
73+ assert int(tr["n"].sum()) == 600 and list(tr["n"]) == [116, 67, 37, 97, 100, 64, 30, 89]
74+ assert tr.loc["0-2", "prix_m2_median"] == pytest.approx(3600, abs=0.5) and tr.loc["20 et plus", "prix_m2_median"] == pytest.approx(2684, abs=0.5)
75+ assert tr.loc["10-12", "prix_m2_median"] == pytest.approx(3714, abs=0.5) and tr.loc["10-12", "prix_median"] == 548000
76+ assert tr.loc["20 et plus", "terrain_median"] == 1184 and tr.loc["0-2", "terrain_median"] == pytest.approx(535.5, abs=0.01)
77+ assert tr.loc["10-12", "secteur_dominant"] == "Aylmer" and tr.loc["20 et plus", "secteur_dominant"] == "Masson-Angers"
78+
79+ def test_gradients(self, data):
80+ g = data["gradients"]
81+ assert g["brut_prix_m2"]["gamma"] == pytest.approx(0.01020, abs=5e-6) and g["brut_prix_m2"]["se"] == pytest.approx(0.00089, abs=5e-6)
82+ assert g["brut_prix_m2"]["r2"] == pytest.approx(0.185, abs=5e-4) and c5.demi_distance(g["brut_prix_m2"]["gamma"]) == pytest.approx(68, abs=0.5)
83+ assert g["controle_lineaire"]["gamma"] == pytest.approx(0.01083, abs=5e-6) and g["controle_lineaire"]["se"] == pytest.approx(0.00067, abs=5e-6)
84+ assert g["controle_lineaire"]["r2"] == pytest.approx(0.759, abs=5e-4)
85+ u = g["controle_urbain_16km"]
86+ assert u["n"] == 511 and u["gamma"] == pytest.approx(-0.00266, abs=5e-6) and u["se"] == pytest.approx(0.00103, abs=5e-6) and u["r2"] == pytest.approx(0.771, abs=5e-4)
87+ q = g["controle_quadratique"]
88+ assert q["b1"] == pytest.approx(0.00900, abs=5e-6) and q["se1"] == pytest.approx(0.00169, abs=5e-6)
89+ assert q["b2_100"] == pytest.approx(-0.06966, abs=5e-5) and q["se2"] == pytest.approx(0.0056, abs=5e-5) and q["r2"] == pytest.approx(0.808, abs=5e-4)
90+ sommet = -q["b1"] / (2 * q["b2_100"] / 100)
91+ assert sommet == pytest.approx(6.5, abs=0.05)
92+ assert q["gamma_10"] == pytest.approx(0.00493, abs=5e-6)
93+ pente20 = -(q["b1"] + 2 * q["b2_100"] * 20 / 100)
94+ assert pente20 == pytest.approx(0.0189, abs=5e-5)
95+
96+ def test_modele_reference(self, data):
97+ r = data["gradients"]["reference"]
98+ assert r["gamma_au_dela_3km"] == pytest.approx(0.00357, abs=5e-6) and r["se"] == pytest.approx(0.00265, abs=5e-6) and r["t"] == pytest.approx(-1.35, abs=0.005)
99+ assert r["r2"] == pytest.approx(0.853, abs=5e-4)
100+ pct = r["secteurs_pct"]
101+ assert pct["Gatineau"] == pytest.approx(-0.022, abs=5e-4) and pct["Aylmer"] == pytest.approx(0.089, abs=5e-4)
102+ assert pct["Buckingham"] == pytest.approx(-0.221, abs=5e-4) and pct["Masson-Angers"] == pytest.approx(-0.231, abs=5e-4)
103+ gs = data["gradients"]["secteurs_medianes"]
104+ assert gs.loc["Hull", "dist"] == pytest.approx(1.6, abs=0.05) and gs.loc["Buckingham", "dist"] == pytest.approx(29.2, abs=0.05)
105+ p_hg = (math.log(gs.loc["Gatineau", "prix"]) - math.log(gs.loc["Hull", "prix"])) / (gs.loc["Gatineau", "dist"] - gs.loc["Hull", "dist"])
106+ p_hb = (math.log(gs.loc["Buckingham", "prix"]) - math.log(gs.loc["Hull", "prix"])) / (gs.loc["Buckingham", "dist"] - gs.loc["Hull", "dist"])
107+ assert p_hg == pytest.approx(-0.00345, abs=5e-6) and p_hb == pytest.approx(-0.00973, abs=5e-6)
108+ # effet distance nul pour le sujet (2,1 km < 3 km)
109+ assert max(data["sujet"]["dist_centre_km"] - 3, 0) == 0
110+ g = data["gradients"]["controle_lineaire"]["gamma"]
111+ assert 551029 * g == pytest.approx(5969, abs=0.5) and 551029 * (1 - math.exp(-5 * g)) == pytest.approx(29050, abs=0.5)
112+
113+
114+class TestCas4:
115+ def test_decomposition(self, data):
116+ dec = data["dec"]
117+ attendu = {"Montréal": (206237, 9270, 0.0449), "Gatineau": (184173, 10011, 0.0544), "Sherbrooke": (137364, 7884, 0.0574),
118+ "Québec": (125455, 7237, 0.0577), "Trois-Rivières": (116806, 7345, 0.0629), "Saguenay": (101969, 6520, 0.0639)}
119+ for k, (vl, rl, tx) in attendu.items():
120+ assert dec.loc[k, "valeur_par_logement"] == pytest.approx(vl, abs=0.5) and dec.loc[k, "rne_par_logement"] == pytest.approx(rl, abs=0.5)
121+ assert dec.loc[k, "taux_pondere"] == pytest.approx(tx, abs=5e-5)
122+ # identité : écart total = contribution RNE + contribution taux
123+ assert np.allclose(dec["ecart_ln_V_n"], dec["contrib_rne"] + dec["contrib_taux"], atol=1e-12)
124+ assert dec.loc["Québec", "contrib_rne"] == pytest.approx(-0.248, abs=5e-4) and dec.loc["Québec", "contrib_taux"] == pytest.approx(-0.249, abs=5e-4)
125+ assert dec.loc["Gatineau", "contrib_rne"] == pytest.approx(0.077, abs=5e-4) and dec.loc["Gatineau", "contrib_taux"] == pytest.approx(-0.190, abs=5e-4)
126+ assert dec.loc["Saguenay", "ecart_ln_V_n"] == pytest.approx(-0.704, abs=5e-4) and dec.loc["Saguenay", "ratio_valeur"] == pytest.approx(0.494, abs=5e-4)
127+ for k in ("Sherbrooke", "Trois-Rivières"):
128+ part_taux = dec.loc[k, "contrib_taux"] / dec.loc[k, "ecart_ln_V_n"]
129+ assert 0.55 < part_taux < 0.65
130+ assert list(dec.index) == ["Montréal", "Gatineau", "Sherbrooke", "Québec", "Trois-Rivières", "Saguenay"]
131+ assert int(dec["logements"].sum()) == 888 and int(dec["n"].sum()) == 48
132+
133+
134+class TestResidu:
135+ def test_valeur_residuelle(self):
136+ CN = 397567.33; dep = 0.30 * CN; V = 551029.0
137+ assert dep == pytest.approx(119270.20, abs=0.005) and CN - dep == pytest.approx(278297.13, abs=0.005)
138+ VL = c5.valeur_residuelle(V, CN, dep)
139+ assert VL == pytest.approx(272732, abs=0.5) and VL / V == pytest.approx(0.495, abs=5e-4) and c5.levier_residuel(V, VL) == pytest.approx(2.02, abs=0.005)
140+ assert c5.valeur_residuelle(0.95 * V, CN, dep) == pytest.approx(245180, abs=0.5)
141+ assert c5.valeur_residuelle(0.95 * V, CN, dep) / VL - 1 == pytest.approx(-0.101, abs=5e-4)
142+ assert c5.valeur_residuelle(0.90 * V, CN, dep) / VL - 1 == pytest.approx(-0.202, abs=5e-4)
143+ # identité du levier : dVL/VL = (V/VL) dV/V
144+ assert (c5.valeur_residuelle(0.95 * V, CN, dep) - VL) / VL == pytest.approx(c5.levier_residuel(V, VL) * (-0.05), rel=1e-12)
145+ assert 1.1 ** c5.elasticite_rente_prix(0.3) - 1 == pytest.approx(0.374, abs=5e-4)
146+
147+ def test_capozza(self):
148+ cz = c5.decomposition_capozza(P["ra"], P["i"], 25.0, c5.rente_fonciere(10.0, P), 60.0)
149+ assert cz["valeur_agricole"] == 40 and cz["accessibilite"] == pytest.approx(538.4, abs=0.05) and cz["total"] == pytest.approx(663.4, abs=0.05)
150+ assert cz["accessibilite"] / cz["total"] == pytest.approx(0.81, abs=5e-3)
151+
152+
153+class TestTaxe:
154+ def test_formule_exacte_et_approchee(self):
155+ c = c5.capitalisation_taxe(500000, 0.0070, 0.0080, 0.05)
156+ assert c["dT"] == 500 and c["dV_approx"] == -10000 and c["dV_exact"] == pytest.approx(-8621, abs=0.5) and c["dV_pct_exact"] == pytest.approx(-0.0172, abs=5e-5)
157+ # identité : dV_exact = -dT/(i + tau1) et V1 = R/(i+tau1)
158+ assert c["dV_exact"] == pytest.approx(-500 / 0.058, rel=1e-12) and c["V1_exact"] == pytest.approx(c["R"] / 0.058, rel=1e-12)
159+ assert c["dV_approx"] / c["dV_exact"] == pytest.approx(0.058 / 0.05, rel=1e-12)
160+ assert 0.6 * c["dV_approx"] == -6000
161+ c2 = c5.capitalisation_taxe(500000, 0.0070, 0.0070 + 22.4 / 1e4, 0.05)
162+ assert c2["dT"] == pytest.approx(1120, abs=1e-6) and c2["dV_approx"] == pytest.approx(-22400, abs=1e-6)
163+ assert c2["dV_exact"] == pytest.approx(-18906, abs=0.5) and c2["dV_pct_exact"] == pytest.approx(-0.0378, abs=5e-5)
164+ assert c5.valeur_avec_taxe(28500, 0.05, 0.0075) / c5.valeur_avec_taxe(28500, 0.05, 0.0) - 1 == pytest.approx(-0.13, abs=5e-3)
165+
166+ def test_taux_2026(self):
167+ T = c5.TAUX_2026
168+ ecart = (T["Québec (1 à 5 logements)"] - T["Gatineau (taux de base)"]) / 100
169+ assert ecart * 1e4 == pytest.approx(22.4, abs=0.005) and ecart * 500000 == pytest.approx(1120, abs=0.005)
170+ assert c5.taux_effectif(T["Gatineau (taux de base)"], 1.02) == pytest.approx(0.5122, abs=5e-5)
171+ assert c5.taux_effectif(T["Québec (1 à 5 logements)"], 1.10) == pytest.approx(0.6785, abs=5e-5)
172+ assert 468000 * T["Gatineau (taux de base)"] / 100 == pytest.approx(2445, abs=0.5) and 468000 * T["Taxe scolaire 2026-2027 (toute la province)"] / 100 == pytest.approx(370, abs=0.5)
173+ d6 = (T["Québec (6 logements et plus)"] - T["Québec (1 à 5 logements)"]) / 100
174+ assert d6 * 1e4 == pytest.approx(2.33, abs=0.005) and d6 * 2e6 == pytest.approx(466, abs=0.5) and d6 * 2e6 / 0.055 == pytest.approx(8473, abs=0.5)
175+ tau = c5.taux_effectif(T["Gatineau (taux de base)"], 1.02) / 100 + T["Taxe scolaire 2026-2027 (toute la province)"] / 100
176+ assert tau / (0.0412 + tau + 0.015 - 0.02) == pytest.approx(0.14, abs=5e-3)
177+
178+ def test_grille(self):
179+ G = c5.grille_capitalisation(500000, [5, 10, 25, 50, 100], [0.04, 0.05, 0.06, 0.07])
180+ assert G.loc[10, "r=5%"] == -10000 and G.loc[50, "r=4%"] == -62500 and G.loc[100, "r=7%"] == pytest.approx(-71429, abs=0.5)
181+ assert G.loc[25, "r=6%"] == pytest.approx(-20833, abs=0.5) and G.loc[5, "r=7%"] == pytest.approx(-3571, abs=0.5)
182+ assert G.loc[10, "r=4%"] / G.loc[10, "r=7%"] - 1 == pytest.approx(0.75, rel=1e-9)
183+
184+
185+class TestExercices:
186+ def test_ex1(self):
187+ a, b = c5.THUNEN["Maraîchage"], c5.THUNEN["Grandes cultures"]
188+ assert a["Y"] * (a["p"] - a["c"]) == 1000 and a["Y"] * a["f"] == 60 and b["Y"] * (b["p"] - b["c"]) == 600 and b["Y"] * b["f"] == 20
189+ assert c5.distance_limite_thunen(**a) == pytest.approx(16.67, abs=0.005) and c5.distance_limite_thunen(**b) == 30
190+ assert c5.frontiere_usages(1000, 60, 600, 20) == 10 and c5.rente_thunen(10, **a) == 400 == c5.rente_thunen(10, **b)
191+ assert c5.valeur_terrain(1000, 0.04) == 25000
192+
193+ def test_ex2(self):
194+ c = c5.capitalisation_taxe(500000, 0.0070, 0.0080, 0.05)
195+ assert c["dT"] == 500 and c["dV_approx"] == -10000 and c["dV_exact"] == pytest.approx(-8621, abs=0.5) and c["V1_exact"] == pytest.approx(491379, abs=0.5)
196+ net = c5.capitalisation_taxe(500000, 0.0070, 0.0070 + 200 / 500000, 0.05)
197+ assert net["dV_approx"] == pytest.approx(-4000, abs=1e-6) and net["dV_exact"] == pytest.approx(-3484, abs=0.5)
198+
199+ def test_ex3(self):
200+ assert c5.prix_logement(5.0, P) == pytest.approx(223.98, abs=0.005) and c5.prix_logement(10.0, P) == pytest.approx(191.61, abs=0.005)
201+ assert c5.prix_exponentiel(5.0, P) == pytest.approx(224.72, abs=0.005) and c5.prix_exponentiel(10.0, P) == pytest.approx(194.22, abs=0.005)
202+ assert c5.consommation_logement(0.0, P) == pytest.approx(92.3, abs=0.05) and c5.consommation_logement(10.0, P) == pytest.approx(114.3, abs=0.05)
203+ P2 = dict(P, t=525.0)
204+ assert c5.gradient_exponentiel(P2) == pytest.approx(0.021875, abs=1e-9) and c5.demi_distance(c5.gradient_exponentiel(P2)) == pytest.approx(31.7, abs=0.05)
205+
206+ def test_ex4(self):
207+ assert 1.1 ** (1 / 0.3) - 1 == pytest.approx(0.374, abs=5e-4) and 0.9 ** (1 / 0.3) - 1 == pytest.approx(-0.296, abs=5e-4)
208+ CN = 397567.33; dep = 0.3 * CN
209+ VL = c5.valeur_residuelle(560000, CN, dep); VL2 = c5.valeur_residuelle(532000, CN, dep)
210+ assert VL == pytest.approx(281703, abs=0.5) and c5.levier_residuel(560000, VL) == pytest.approx(1.99, abs=0.005)
211+ assert VL2 == pytest.approx(253703, abs=0.5) and VL2 / VL - 1 == pytest.approx(-0.099, abs=5e-4)
212+
213+ def test_ex5(self):
214+ tq, tg, tm = c5.taux_effectif(0.7464, 1.10), c5.taux_effectif(0.5224, 1.02), 0.4631
215+ assert tq == pytest.approx(0.6785, abs=5e-5) and tg == pytest.approx(0.5122, abs=5e-5)
216+ assert 500000 * tq / 100 == pytest.approx(3393, abs=0.5) and 500000 * tg / 100 == pytest.approx(2561, abs=0.5) and 500000 * tm / 100 == pytest.approx(2316, abs=0.5)
217+ ecart = (tq - tg) / 100 * 500000
218+ assert ecart == pytest.approx(832, abs=0.5) and ecart / 0.05 == pytest.approx(16639, abs=0.5) and 0.6 * ecart / 0.05 == pytest.approx(9983, abs=0.5)
219+
220+ def test_ex6(self, data):
221+ v = data["v"]; y = np.log(v["prix_vente"].values); d = v["dist_centre_km"].values
222+ X = cas1.matrice(v); Xa = X.copy(); Xa["dist_lin"] = d
223+ r = h.mco(Xa.values, y); cols = list(Xa.columns)
224+ assert r["beta"][cols.index("dist_centre")] == pytest.approx(0.0029, abs=5e-5) and r["se_hc1"][cols.index("dist_centre")] == pytest.approx(0.0081, abs=5e-5)
225+ assert r["beta"][cols.index("dist_lin")] == pytest.approx(-0.0064, abs=5e-5) and r["se_hc1"][cols.index("dist_lin")] == pytest.approx(0.0076, abs=5e-5)
226+ assert r["beta"][cols.index("sect_Aylmer")] == pytest.approx(0.093, abs=5e-4) and r["r2"] == pytest.approx(0.853, abs=5e-4)
227+ Xc = X.drop(columns=["dist_centre"] + [f"sect_{s}" for s in cas1.SECTEURS[1:]]); Xc["dist"] = d
228+ m = (d <= 10) & v["secteur"].isin(["Hull", "Gatineau"]).values
229+ rr = h.mco(Xc.values[m], y[m])
230+ assert int(m.sum()) == 380 and rr["beta"][-1] == pytest.approx(-0.00589, abs=5e-6) and rr["se_hc1"][-1] == pytest.approx(0.00144, abs=5e-6) and rr["r2"] == pytest.approx(0.80, abs=5e-3)
231+ m2 = (v["secteur"] == "Aylmer").values; ra = h.mco(Xc.values[m2], y[m2])
232+ assert int(m2.sum()) == 125 and ra["beta"][-1] == pytest.approx(-0.00675, abs=5e-6) and ra["se_hc1"][-1] == pytest.approx(0.00458, abs=5e-6)
233+ m3 = (v["secteur"] == "Hull").values; rh = h.mco(Xc.values[m3], y[m3])
234+ assert int(m3.sum()) == 186 and rh["beta"][-1] == pytest.approx(-0.00746, abs=5e-6) and rh["se_hc1"][-1] == pytest.approx(0.00646, abs=5e-6)
235+
236+ def test_ex7(self):
237+ E = [(0, 0, 100000), (12, 4, 30000)]; pts = {"A": (3, 0), "B": (9, 3), "C": (12, -6)}
238+ dist = {k: [math.hypot(x - cx, y - cy) for cx, cy, _ in E] for k, (x, y) in pts.items()}
239+ assert dist["A"] == pytest.approx([3.00, 9.85], abs=0.005) and dist["B"] == pytest.approx([9.49, 3.16], abs=0.005) and dist["C"] == pytest.approx([13.42, 10.00], abs=0.005)
240+ for lam, att, ab, bc in [(0.10, (85286, 60592, 37178), 0.089, 0.130), (0.20, (59066, 30935, 10894), 0.175, 0.298)]:
241+ A = {k: sum(e * math.exp(-lam * dd) for (_, _, e), dd in zip(E, dist[k])) for k in pts}
242+ assert (A["A"], A["B"], A["C"]) == pytest.approx(att, abs=0.5)
243+ assert (A["A"] / A["B"]) ** 0.25 - 1 == pytest.approx(ab, abs=5e-4) and (A["B"] / A["C"]) ** 0.25 - 1 == pytest.approx(bc, abs=5e-4)
244+ # un seul centre : theta ln A = theta ln E - theta lambda d
245+ lam, theta = 0.1, 0.25
246+ for dd in (2.0, 7.0):
247+ assert theta * math.log(100000 * math.exp(-lam * dd)) == pytest.approx(theta * math.log(100000) - theta * lam * dd, rel=1e-12)
modified analysis/python/tests/test_ch06.py +12 −8
@@ -66,12 +66,13 @@ class TestUsufruit:
66 66
67 def test_approximation_terme_fixe_sous_estime_np(self): 67 def test_approximation_terme_fixe_sous_estime_np(self):
68 u = cas.usufruit_viager(V, 65) 68 u = cas.usufruit_viager(V, 65)
69− t = cas.usufruit_terme(V, 18) # espérance de vie arrondie (17,9 → 18) 69+ a = cas.approximation_terme_espere(V, 65)
70− assert t["part_NP"] * 100 == pytest.approx(54.3, abs=0.05) 70+ assert a["n_eff"] == pytest.approx(18.36, abs=0.005) and a["n_eff"] == pytest.approx(u["esperance_vie"] + 0.5, abs=1e-9)
71− assert u["NP"] - t["NP"] == pytest.approx(11000, abs=600) # « environ 11 000 $ » 71+ assert a["part_NP"] * 100 == pytest.approx(53.7, abs=0.05)
72− for x in (55, 65, 75, 85): # Jensen : NP viager ≥ NP terme fixe e_x 72+ assert u["NP"] - a["NP"] == pytest.approx(15271, abs=TOL)
73− n = int(round(cas.esperance_vie(x))) 73+ for x in range(50, 100, 5): # Jensen : NP viager ≥ NP du terme espéré
74− assert cas.usufruit_viager(V, x)["NP"] >= cas.usufruit_terme(V, n)["NP"] 74+ for r in (0.03, 0.05, 0.08):
75+ assert cas.usufruit_viager(V, x, r)["NP"] >= cas.approximation_terme_espere(V, x, r)["NP"]
75 76
76 def test_grille_sensibilite(self): 77 def test_grille_sensibilite(self):
77 g = cas.grille_usufruit(V) 78 g = cas.grille_usufruit(V)
@@ -180,9 +181,12 @@ class TestExercices:
180 u = cas.usufruit_viager(Vx, x, r, g) 181 u = cas.usufruit_viager(Vx, x, r, g)
181 assert u["U"] == pytest.approx(158934, abs=TOL) and u["NP"] == pytest.approx(296066, abs=TOL) 182 assert u["U"] == pytest.approx(158934, abs=TOL) and u["NP"] == pytest.approx(296066, abs=TOL)
182 assert u["part_NP"] * 100 == pytest.approx(65.1, abs=0.05) and u["esperance_vie"] == pytest.approx(13.0, abs=0.05) 183 assert u["part_NP"] * 100 == pytest.approx(65.1, abs=0.05) and u["esperance_vie"] == pytest.approx(13.0, abs=0.05)
184+ a = cas.approximation_terme_espere(Vx, x, r, g)
185+ assert a["n_eff"] == pytest.approx(13.49, abs=0.005)
186+ assert a["U"] == pytest.approx(167650, abs=TOL) and a["NP"] == pytest.approx(287350, abs=TOL)
187+ assert a["part_NP"] * 100 == pytest.approx(63.2, abs=0.05) and u["NP"] - a["NP"] == pytest.approx(8716, abs=TOL)
183 t = cas.usufruit_terme(Vx, 13, r, g) 188 t = cas.usufruit_terme(Vx, 13, r, g)
184− assert t["U"] == pytest.approx(162802, abs=TOL) and t["NP"] == pytest.approx(292198, abs=TOL) 189+ assert t["NP"] == pytest.approx(292198, abs=TOL)
185− assert u["NP"] - t["NP"] == pytest.approx(3868, abs=TOL)
186 assert cas.rente_viagere_equivalente(Vx, x, r, g) == pytest.approx(17038, abs=TOL) 190 assert cas.rente_viagere_equivalente(Vx, x, r, g) == pytest.approx(17038, abs=TOL)
187 t30 = cas.usufruit_terme(Vx, 30, r, g) 191 t30 = cas.usufruit_terme(Vx, 30, r, g)
188 assert t30["U"] == pytest.approx(291257, abs=TOL) and t30["NP"] == pytest.approx(163743, abs=TOL) 192 assert t30["U"] == pytest.approx(291257, abs=TOL) and t30["NP"] == pytest.approx(163743, abs=TOL)
modified assets/figures/ch11/ch11-fig-fiche-etat.pdf +0 −0

Binary file not shown.

modified assets/figures/ch11/ch11-fig-frise-pathologies.pdf +0 −0

Binary file not shown.

modified assets/figures/ch11/ch11-fig-matrice-age-effectif.pdf +0 −0

Binary file not shown.

modified assets/figures/ch11/ch11-fig-sensibilite-age-effectif.pdf +0 −0

Binary file not shown.

modified manuscript/appendices/formulaires-inspection.tex +67 −65
@@ -4,6 +4,8 @@ L'inspection est le moment où l'évaluateur cesse de raisonner sur des document
4 4
5 \providecommand{\caseA}{$\square$} 5 \providecommand{\caseA}{$\square$}
6 \providecommand{\cinq}{$\square\,\square\,\square\,\square\,\square$} 6 \providecommand{\cinq}{$\square\,\square\,\square\,\square\,\square$}
7+\providecommand{\wide}[1]{\multicolumn{4}{L{9.4cm}@{}}{#1}}
8+\providecommand{\widex}[1]{\multicolumn{4}{L{10.2cm}@{}}{#1}}
7 \providecommand{\inc}{$\square$\,{\footnotesize$+$}\ $\square$\,{\footnotesize$-$}\ $\square$\,{\footnotesize$0$}} 9 \providecommand{\inc}{$\square$\,{\footnotesize$+$}\ $\square$\,{\footnotesize$-$}\ $\square$\,{\footnotesize$0$}}
8 10
9 \section{Objet et limites de l'inspection d'évaluation}\label{sec:appB:objet} 11 \section{Objet et limites de l'inspection d'évaluation}\label{sec:appB:objet}
@@ -69,7 +71,7 @@ ce qui montre que l'âge effectif pondéré est une statistique suffisante de la
69 Le premier formulaire couvre la maison isolée, jumelée ou en rangée, avec ou sans garage, et la partie privative d'une copropriété divise horizontale lorsque le mandat porte sur une fraction. Il se lit de haut en bas dans l'ordre de la visite. Les rubriques en italique dans la colonne des observations indiquent les constats à rechercher ; les pathologies de la \cref{sec:appB:patho} y sont rappelées par leur nom lorsque la composante est le lieu habituel de leur manifestation. 71 Le premier formulaire couvre la maison isolée, jumelée ou en rangée, avec ou sans garage, et la partie privative d'une copropriété divise horizontale lorsque le mandat porte sur une fraction. Il se lit de haut en bas dans l'ordre de la visite. Les rubriques en italique dans la colonne des observations indiquent les constats à rechercher ; les pathologies de la \cref{sec:appB:patho} y sont rappelées par leur nom lorsque la composante est le lieu habituel de leur manifestation.
70 72
71 {\small\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.45} 73 {\small\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.45}
72−\begin{longtable}{@{}L{3.1cm}c>{\centering\arraybackslash}p{1.1cm}L{4.1cm}c@{}} 74+\begin{longtable}{@{}L{3.1cm}>{\centering\arraybackslash}p{1.6cm}>{\centering\arraybackslash}p{1.1cm}L{4.1cm}>{\centering\arraybackslash}p{1.8cm}@{}}
73 \caption{Formulaire 1 — Inspection d'évaluation d'une maison unifamiliale}\label{tab:appB:f1}\\ 75 \caption{Formulaire 1 — Inspection d'évaluation d'une maison unifamiliale}\label{tab:appB:f1}\\
74 \toprule 76 \toprule
75 Élément & {État 1--5} & {Âge app.} & Observations (n\textsuperscript{o} photo) & Incidence \\ 77 Élément & {État 1--5} & {Âge app.} & Observations (n\textsuperscript{o} photo) & Incidence \\
@@ -85,10 +87,10 @@ Le premier formulaire couvre la maison isolée, jumelée ou en rangée, avec ou
85 \bottomrule 87 \bottomrule
86 \endlastfoot 88 \endlastfoot
87 \multicolumn{5}{@{}l}{\textbf{A. Identification et conditions de la visite}}\\ 89 \multicolumn{5}{@{}l}{\textbf{A. Identification et conditions de la visite}}\\
88−Adresse, lot, date et heure & \multicolumn{4}{l@{}}{\rule{0pt}{10pt}} \\ 90+Adresse, lot, date et heure & \wide{\rule{0pt}{10pt}} \\
89−Personnes présentes, météo, température & \multicolumn{4}{l@{}}{} \\ 91+Personnes présentes, météo, température & \wide{} \\
90−Parties non visitées et motif & \multicolumn{4}{l@{}}{} \\ 92+Parties non visitées et motif & \wide{} \\
91−Documents consultés avant la visite & \multicolumn{4}{l@{}}{\caseA~rôle \caseA~certificat de localisation \caseA~permis \caseA~zonage \caseA~zones inondables \caseA~DV} \\ 93+Documents consultés avant la visite & \wide{\caseA~rôle \caseA~certificat de localisation \caseA~permis \caseA~zonage \caseA~zones inondables \caseA~DV} \\
92 \midrule 94 \midrule
93 \multicolumn{5}{@{}l}{\textbf{B. Site et terrain}}\\ 95 \multicolumn{5}{@{}l}{\textbf{B. Site et terrain}}\\
94 Topographie, drainage de surface & \cinq & & \emph{pente vers la maison, eau stagnante, affaissements} & \inc \\ 96 Topographie, drainage de surface & \cinq & & \emph{pente vers la maison, eau stagnante, affaissements} & \inc \\
@@ -100,7 +102,7 @@ Nuisances et servitudes visibles & \cinq & & \emph{bruit, lignes électriques, v
100 Zone inondable ou de mobilité & \caseA~non \caseA~oui & & \emph{classe d'intensité selon la carte en vigueur ; marques de crue} & \inc \\ 102 Zone inondable ou de mobilité & \caseA~non \caseA~oui & & \emph{classe d'intensité selon la carte en vigueur ; marques de crue} & \inc \\
101 \midrule 103 \midrule
102 \multicolumn{5}{@{}l}{\textbf{C. Fondations et structure}}\\ 104 \multicolumn{5}{@{}l}{\textbf{C. Fondations et structure}}\\
103−Type et matériau des fondations & \multicolumn{4}{l@{}}{\caseA~béton coulé \caseA~blocs \caseA~pierre \caseA~pieux \caseA~dalle sur sol \caseA~vide sanitaire} \\ 105+Type et matériau des fondations & \wide{\caseA~béton coulé \caseA~blocs \caseA~pierre \caseA~pieux \caseA~dalle sur sol \caseA~vide sanitaire} \\
104 Murs de fondation (ext. et int.) & \cinq & & \emph{fissures (largeur, orientation, actives), efflorescence, déversement} & \inc \\ 106 Murs de fondation (ext. et int.) & \cinq & & \emph{fissures (largeur, orientation, actives), efflorescence, déversement} & \inc \\
105 Dalle du sous-sol et du garage & \cinq & & \emph{soulèvement, fissures en étoile, poudre blanche : \textbf{pyrite} ; dalle du garage d'abord} & \inc \\ 107 Dalle du sous-sol et du garage & \cinq & & \emph{soulèvement, fissures en étoile, poudre blanche : \textbf{pyrite} ; dalle du garage d'abord} & \inc \\
106 Drainage des fondations, puisard & \cinq & & \emph{pompe, clapet, cheminées de nettoyage ; dépôt gélatineux rouille : \textbf{ocre ferreuse}} & \inc \\ 108 Drainage des fondations, puisard & \cinq & & \emph{pompe, clapet, cheminées de nettoyage ; dépôt gélatineux rouille : \textbf{ocre ferreuse}} & \inc \\
@@ -109,27 +111,27 @@ Charpente visible, solives, poutres, colonnes & \cinq & & \emph{flèche, entaill
109 Éclatement du béton des fondations & \cinq & & \emph{fissures en carte, gonflement du béton lui-même : \textbf{pyrrhotite} (régions touchées)} & \inc \\ 111 Éclatement du béton des fondations & \cinq & & \emph{fissures en carte, gonflement du béton lui-même : \textbf{pyrrhotite} (régions touchées)} & \inc \\
110 \midrule 112 \midrule
111 \multicolumn{5}{@{}l}{\textbf{D. Enveloppe extérieure}}\\ 113 \multicolumn{5}{@{}l}{\textbf{D. Enveloppe extérieure}}\\
112−Revêtement principal & \multicolumn{4}{l@{}}{\caseA~brique \caseA~pierre \caseA~vinyle \caseA~aluminium \caseA~fibrociment \caseA~bois \caseA~acrylique/stuc \caseA~autre} \\ 114+Revêtement principal & \wide{\caseA~brique \caseA~pierre \caseA~vinyle \caseA~aluminium \caseA~fibrociment \caseA~bois \caseA~acrylique/stuc \caseA~autre} \\
113 État du revêtement & \cinq & & \emph{joints de mortier, briques éclatées, linteaux rouillés, chantepleures, fixations} & \inc \\ 115 État du revêtement & \cinq & & \emph{joints de mortier, briques éclatées, linteaux rouillés, chantepleures, fixations} & \inc \\
114 Solins, scellants, jonctions & \cinq & & \emph{autour des ouvertures, au toit, aux balcons} & \inc \\ 116 Solins, scellants, jonctions & \cinq & & \emph{autour des ouvertures, au toit, aux balcons} & \inc \\
115 Soffites, fascias, corniches & \cinq & & \emph{ventilation de l'entretoit, pourriture, nids} & \inc \\ 117 Soffites, fascias, corniches & \cinq & & \emph{ventilation de l'entretoit, pourriture, nids} & \inc \\
116 Balcons, galeries, escaliers extérieurs & \cinq & & \emph{garde-corps, ancrages, bois en contact avec le sol} & \inc \\ 118 Balcons, galeries, escaliers extérieurs & \cinq & & \emph{garde-corps, ancrages, bois en contact avec le sol} & \inc \\
117 Portes extérieures et de garage & \cinq & & \emph{étanchéité, quincaillerie, ouvre-porte} & \inc \\ 119 Portes extérieures et de garage & \cinq & & \emph{étanchéité, quincaillerie, ouvre-porte} & \inc \\
118−Isolation des murs (si visible ou déclarée) & \multicolumn{4}{l@{}}{\caseA~inconnue \caseA~laine \caseA~cellulose \caseA~mousse \caseA~\textbf{vermiculite} \caseA~\textbf{MIUF} déclarée} \\ 120+Isolation des murs (si visible ou déclarée) & \wide{\caseA~inconnue \caseA~laine \caseA~cellulose \caseA~mousse \caseA~\textbf{vermiculite} \caseA~\textbf{MIUF} déclarée} \\
119 \midrule 121 \midrule
120 \multicolumn{5}{@{}l}{\textbf{E. Toiture}}\\ 122 \multicolumn{5}{@{}l}{\textbf{E. Toiture}}\\
121−Type et matériau & \multicolumn{4}{l@{}}{\caseA~bardeau d'asphalte \caseA~membrane élastomère \caseA~gravier \caseA~tôle \caseA~autre ; pente \caseA~forte \caseA~faible \caseA~plate} \\ 123+Type et matériau & \wide{\caseA~bardeau d'asphalte \caseA~membrane élastomère \caseA~gravier \caseA~tôle \caseA~autre ; pente \caseA~forte \caseA~faible \caseA~plate} \\
122 État du couvrement & \cinq & & \emph{granules perdus, bardeaux relevés, cloques, joints ouverts, mousse} & \inc \\ 124 État du couvrement & \cinq & & \emph{granules perdus, bardeaux relevés, cloques, joints ouverts, mousse} & \inc \\
123 Solins, cheminées, évents, drains & \cinq & & \emph{rouille, scellant fissuré, drain obstrué} & \inc \\ 125 Solins, cheminées, évents, drains & \cinq & & \emph{rouille, scellant fissuré, drain obstrué} & \inc \\
124 Gouttières et descentes & \cinq & & \emph{présence, pente, rejet à distance des fondations} & \inc \\ 126 Gouttières et descentes & \cinq & & \emph{présence, pente, rejet à distance des fondations} & \inc \\
125 Entretoit (si accessible) & \cinq & & \emph{isolant (type, épaisseur), ventilation, taches, givre, \textbf{vermiculite}} & \inc \\ 127 Entretoit (si accessible) & \cinq & & \emph{isolant (type, épaisseur), ventilation, taches, givre, \textbf{vermiculite}} & \inc \\
126−Année de réfection déclarée & \multicolumn{4}{l@{}}{\rule{0pt}{10pt}} \\ 128+Année de réfection déclarée & \wide{\rule{0pt}{10pt}} \\
127 \midrule 129 \midrule
128 \multicolumn{5}{@{}l}{\textbf{F. Fenestration}}\\ 130 \multicolumn{5}{@{}l}{\textbf{F. Fenestration}}\\
129−Type et matériau & \multicolumn{4}{l@{}}{\caseA~bois \caseA~PVC \caseA~aluminium \caseA~hybride ; vitrage \caseA~simple \caseA~double \caseA~triple} \\ 131+Type et matériau & \wide{\caseA~bois \caseA~PVC \caseA~aluminium \caseA~hybride ; vitrage \caseA~simple \caseA~double \caseA~triple} \\
130 État des fenêtres & \cinq & & \emph{condensation entre les verres, mécanismes, pourriture, calfeutrage} & \inc \\ 132 État des fenêtres & \cinq & & \emph{condensation entre les verres, mécanismes, pourriture, calfeutrage} & \inc \\
131 Puits de lumière, portes-fenêtres & \cinq & & \emph{infiltration, scellants} & \inc \\ 133 Puits de lumière, portes-fenêtres & \cinq & & \emph{infiltration, scellants} & \inc \\
132−Année de remplacement déclarée & \multicolumn{4}{l@{}}{\rule{0pt}{10pt}} \\ 134+Année de remplacement déclarée & \wide{\rule{0pt}{10pt}} \\
133 \midrule 135 \midrule
134 \multicolumn{5}{@{}l}{\textbf{G. Intérieur}}\\ 136 \multicolumn{5}{@{}l}{\textbf{G. Intérieur}}\\
135 Planchers (par niveau) & \cinq & & \emph{matériau, niveau, grincement, dénivellation} & \inc \\ 137 Planchers (par niveau) & \cinq & & \emph{matériau, niveau, grincement, dénivellation} & \inc \\
@@ -139,22 +141,22 @@ Salles de bain (nombre, état) & \cinq & & \emph{étanchéité, ventilation, moi
139 Portes, boiseries, escaliers, rampes & \cinq & & \emph{conformité apparente des garde-corps} & \inc \\ 141 Portes, boiseries, escaliers, rampes & \cinq & & \emph{conformité apparente des garde-corps} & \inc \\
140 Sous-sol fini : qualité, hauteur libre & \cinq & & \emph{hauteur sous poutre, fenêtres, issue} & \inc \\ 142 Sous-sol fini : qualité, hauteur libre & \cinq & & \emph{hauteur sous poutre, fenêtres, issue} & \inc \\
141 Foyer, poêle, cheminée & \cinq & & \emph{type (bois, gaz, granules), certification visible, état du conduit} & \inc \\ 143 Foyer, poêle, cheminée & \cinq & & \emph{type (bois, gaz, granules), certification visible, état du conduit} & \inc \\
142−Odeurs, qualité de l'air, animaux & \multicolumn{4}{l@{}}{\rule{0pt}{10pt}} \\ 144+Odeurs, qualité de l'air, animaux & \wide{\rule{0pt}{10pt}} \\
143 \midrule 145 \midrule
144 \multicolumn{5}{@{}l}{\textbf{H. Électricité}}\\ 146 \multicolumn{5}{@{}l}{\textbf{H. Électricité}}\\
145−Entrée électrique et panneau & \multicolumn{4}{l@{}}{\caseA~60~A \caseA~100~A \caseA~200~A \caseA~autre ; \caseA~disjoncteurs \caseA~fusibles} \\ 147+Entrée électrique et panneau & \wide{\caseA~60~A \caseA~100~A \caseA~200~A \caseA~autre ; \caseA~disjoncteurs \caseA~fusibles} \\
146 État apparent du panneau et du câblage visible & \cinq & & \emph{fils \textbf{aluminium} (gaine marquée AL), gaines textiles, boîtes ouvertes, épissures} & \inc \\ 148 État apparent du panneau et du câblage visible & \cinq & & \emph{fils \textbf{aluminium} (gaine marquée AL), gaines textiles, boîtes ouvertes, épissures} & \inc \\
147 Prises, interrupteurs, DDFT, détecteurs & \cinq & & \emph{DDFT près de l'eau, détecteurs de fumée et de CO présents et datés} & \inc \\ 149 Prises, interrupteurs, DDFT, détecteurs & \cinq & & \emph{DDFT près de l'eau, détecteurs de fumée et de CO présents et datés} & \inc \\
148 \midrule 150 \midrule
149 \multicolumn{5}{@{}l}{\textbf{I. Plomberie}}\\ 151 \multicolumn{5}{@{}l}{\textbf{I. Plomberie}}\\
150−Entrée d'eau et distribution & \multicolumn{4}{l@{}}{\caseA~cuivre \caseA~PEX \caseA~\textbf{galvanisé} \caseA~plomb (entrée) \caseA~inconnu} \\ 152+Entrée d'eau et distribution & \wide{\caseA~cuivre \caseA~PEX \caseA~\textbf{galvanisé} \caseA~plomb (entrée) \caseA~inconnu} \\
151−Évacuation et ventilation & \multicolumn{4}{l@{}}{\caseA~ABS/PVC \caseA~fonte \caseA~\textbf{galvanisé} ; \emph{odeurs, écoulement lent}} \\ 153+Évacuation et ventilation & \wide{\caseA~ABS/PVC \caseA~fonte \caseA~\textbf{galvanisé} ; \emph{odeurs, écoulement lent}} \\
152 Chauffe-eau (type, année, capacité) & \cinq & & \emph{plaque signalétique, corrosion, bac, âge supérieur à 10~ans} & \inc \\ 154 Chauffe-eau (type, année, capacité) & \cinq & & \emph{plaque signalétique, corrosion, bac, âge supérieur à 10~ans} & \inc \\
153 Appareils et robinetterie & \cinq & & \emph{débit, fuites, pression} & \inc \\ 155 Appareils et robinetterie & \cinq & & \emph{débit, fuites, pression} & \inc \\
154 Clapet antiretour, pompe de puisard & \cinq & & \emph{présence, fonctionnement déclaré} & \inc \\ 156 Clapet antiretour, pompe de puisard & \cinq & & \emph{présence, fonctionnement déclaré} & \inc \\
155 \midrule 157 \midrule
156 \multicolumn{5}{@{}l}{\textbf{J. Chauffage, ventilation, climatisation}}\\ 158 \multicolumn{5}{@{}l}{\textbf{J. Chauffage, ventilation, climatisation}}\\
157−Système principal et énergie & \multicolumn{4}{l@{}}{\caseA~plinthes électriques \caseA~air pulsé \caseA~eau chaude \caseA~thermopompe \caseA~\textbf{mazout} \caseA~gaz \caseA~bois} \\ 159+Système principal et énergie & \wide{\caseA~plinthes électriques \caseA~air pulsé \caseA~eau chaude \caseA~thermopompe \caseA~\textbf{mazout} \caseA~gaz \caseA~bois} \\
158 État de l'appareil principal & \cinq & & \emph{plaque signalétique, année, entretien, bruit, odeur} & \inc \\ 160 État de l'appareil principal & \cinq & & \emph{plaque signalétique, année, entretien, bruit, odeur} & \inc \\
159 Réservoir de mazout (int./ext., année) & \cinq & & \emph{plaque, corrosion, âge ; déclaration de retrait d'un ancien réservoir} & \inc \\ 161 Réservoir de mazout (int./ext., année) & \cinq & & \emph{plaque, corrosion, âge ; déclaration de retrait d'un ancien réservoir} & \inc \\
160 Distribution (conduits, radiateurs) & \cinq & & \emph{isolation des conduits, équilibrage} & \inc \\ 162 Distribution (conduits, radiateurs) & \cinq & & \emph{isolation des conduits, équilibrage} & \inc \\
@@ -162,17 +164,17 @@ Ventilation (VRC, hottes, salles de bain) & \cinq & & \emph{présence, rejet à
162 Climatisation, thermopompe murale & \cinq & & \emph{année, état de l'unité extérieure} & \inc \\ 164 Climatisation, thermopompe murale & \cinq & & \emph{année, état de l'unité extérieure} & \inc \\
163 \midrule 165 \midrule
164 \multicolumn{5}{@{}l}{\textbf{K. Environnement intérieur et déclarations}}\\ 166 \multicolumn{5}{@{}l}{\textbf{K. Environnement intérieur et déclarations}}\\
165−Test de radon (déclaré) & \multicolumn{4}{l@{}}{\caseA~aucun \caseA~fait, résultat : \rule{2cm}{0.4pt} Bq/m\textsuperscript{3} ; \caseA~système d'atténuation présent} \\ 167+Test de radon (déclaré) & \wide{\caseA~aucun \caseA~fait, résultat : \rule{2cm}{0.4pt} Bq/m\textsuperscript{3} ; \caseA~système d'atténuation présent} \\
166−Matériaux susceptibles de contenir de l'amiante & \multicolumn{4}{l@{}}{\caseA~vermiculite \caseA~isolant de tuyaux \caseA~tuiles \caseA~plâtre \caseA~aucun signe} \\ 168+Matériaux susceptibles de contenir de l'amiante & \wide{\caseA~vermiculite \caseA~isolant de tuyaux \caseA~tuiles \caseA~plâtre \caseA~aucun signe} \\
167−Déclarations du vendeur ou du propriétaire & \multicolumn{4}{l@{}}{\emph{sinistres, infiltrations, réclamations, travaux sans permis, litiges}} \\ 169+Déclarations du vendeur ou du propriétaire & \wide{\emph{sinistres, infiltrations, réclamations, travaux sans permis, litiges}} \\
168 \midrule 170 \midrule
169 \multicolumn{5}{@{}l}{\textbf{L. Synthèse}}\\ 171 \multicolumn{5}{@{}l}{\textbf{L. Synthèse}}\\
170 Cote d'état générale (pondérée) & \cinq & & \emph{justification en une phrase} & \\ 172 Cote d'état générale (pondérée) & \cinq & & \emph{justification en une phrase} & \\
171−Âge chronologique / âge effectif estimé & \multicolumn{4}{l@{}}{\rule{2cm}{0.4pt} ans / \rule{2cm}{0.4pt} ans} \\ 173+Âge chronologique / âge effectif estimé & \wide{\rule{2cm}{0.4pt} ans / \rule{2cm}{0.4pt} ans} \\
172−Travaux immédiats (curables) & \multicolumn{4}{l@{}}{\rule{0pt}{10pt}} \\ 174+Travaux immédiats (curables) & \wide{\rule{0pt}{10pt}} \\
173−Travaux à moyen terme & \multicolumn{4}{l@{}}{} \\ 175+Travaux à moyen terme & \wide{} \\
174−Désordres à expertiser (hypothèses extraordinaires) & \multicolumn{4}{l@{}}{} \\ 176+Désordres à expertiser (hypothèses extraordinaires) & \wide{} \\
175−Nombre de photographies ; mesures prises & \multicolumn{4}{l@{}}{} \\ 177+Nombre de photographies ; mesures prises & \wide{} \\
176 \end{longtable} 178 \end{longtable}
177 \tabsource{conception de l'auteur ; rubriques cohérentes avec le \cref{ch:11} ; aucune donnée.} 179 \tabsource{conception de l'auteur ; rubriques cohérentes avec le \cref{ch:11} ; aucune donnée.}
178 } 180 }
@@ -182,7 +184,7 @@ Nombre de photographies ; mesures prises & \multicolumn{4}{l@{}}{} \\
182 Le second formulaire s'emploie \emph{en complément} du premier : les sections B à K du formulaire 1 sont remplies pour le bâtiment dans son ensemble, et le formulaire 2 ajoute ce qui distingue un petit immeuble locatif d'une maison : la description de chaque logement, le lien entre l'état observé et le bail, les aires communes et les équipements partagés. Le \cref{ch:32} explique pourquoi ces éléments comptent : dans un plex, la valeur dépend autant de la structure des baux et du potentiel de rattrapage des loyers que de l'état physique, et un logement rénové occupé par un locataire de longue date dont le loyer est très inférieur au marché n'a pas la même incidence qu'un logement identique loué au prix du marché depuis un an. Les règles du Code civil sur la reconduction des baux et sur la fixation des loyers (\cref{ch:26,ch:34}) font de chaque fiche de logement une pièce de l'analyse du droit évalué, non un simple inventaire. 184 Le second formulaire s'emploie \emph{en complément} du premier : les sections B à K du formulaire 1 sont remplies pour le bâtiment dans son ensemble, et le formulaire 2 ajoute ce qui distingue un petit immeuble locatif d'une maison : la description de chaque logement, le lien entre l'état observé et le bail, les aires communes et les équipements partagés. Le \cref{ch:32} explique pourquoi ces éléments comptent : dans un plex, la valeur dépend autant de la structure des baux et du potentiel de rattrapage des loyers que de l'état physique, et un logement rénové occupé par un locataire de longue date dont le loyer est très inférieur au marché n'a pas la même incidence qu'un logement identique loué au prix du marché depuis un an. Les règles du Code civil sur la reconduction des baux et sur la fixation des loyers (\cref{ch:26,ch:34}) font de chaque fiche de logement une pièce de l'analyse du droit évalué, non un simple inventaire.
183 185
184 {\small\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.45} 186 {\small\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.45}
185−\begin{longtable}{@{}L{3.1cm}c>{\centering\arraybackslash}p{1.1cm}L{4.1cm}c@{}} 187+\begin{longtable}{@{}L{3.1cm}>{\centering\arraybackslash}p{1.6cm}>{\centering\arraybackslash}p{1.1cm}L{4.1cm}>{\centering\arraybackslash}p{1.8cm}@{}}
186 \caption{Formulaire 2 — Compléments pour un immeuble de deux à cinq logements (une section M par logement)}\label{tab:appB:f2}\\ 188 \caption{Formulaire 2 — Compléments pour un immeuble de deux à cinq logements (une section M par logement)}\label{tab:appB:f2}\\
187 \toprule 189 \toprule
188 Élément & {État 1--5} & {Âge app.} & Observations (n\textsuperscript{o} photo) & Incidence \\ 190 Élément & {État 1--5} & {Âge app.} & Observations (n\textsuperscript{o} photo) & Incidence \\
@@ -198,15 +200,15 @@ Le second formulaire s'emploie \emph{en complément} du premier : les sections B
198 \bottomrule 200 \bottomrule
199 \endlastfoot 201 \endlastfoot
200 \multicolumn{5}{@{}l}{\textbf{M. Fiche de logement (reproduire pour chaque logement)}}\\ 202 \multicolumn{5}{@{}l}{\textbf{M. Fiche de logement (reproduire pour chaque logement)}}\\
201−Numéro, niveau, typologie & \multicolumn{4}{l@{}}{n\textsuperscript{o} \rule{1cm}{0.4pt} ; niveau \rule{1cm}{0.4pt} ; \caseA~studio \caseA~3½ \caseA~4½ \caseA~5½ \caseA~6½ et plus ; superficie \rule{1.2cm}{0.4pt} m\textsuperscript{2}} \\ 203+Numéro, niveau, typologie & \wide{n\textsuperscript{o} \rule{1cm}{0.4pt} ; niveau \rule{1cm}{0.4pt} ; \caseA~studio \caseA~3½ \caseA~4½ \caseA~5½ \caseA~6½ et plus ; superficie \rule{1.2cm}{0.4pt} m\textsuperscript{2}} \\
202−Occupation et accès & \multicolumn{4}{l@{}}{\caseA~visité \caseA~non visité (motif) ; \caseA~locataire \caseA~propriétaire-occupant \caseA~vacant} \\ 204+Occupation et accès & \wide{\caseA~visité \caseA~non visité (motif) ; \caseA~locataire \caseA~propriétaire-occupant \caseA~vacant} \\
203−Bail : loyer mensuel, échéance, inclusions & \multicolumn{4}{l@{}}{\rule{1.5cm}{0.4pt} \$/mois ; échéance \rule{2cm}{0.4pt} ; \caseA~chauffage \caseA~électricité \caseA~eau chaude \caseA~stationnement \caseA~électroménagers} \\ 205+Bail : loyer mensuel, échéance, inclusions & \wide{\rule{1.5cm}{0.4pt} \$/mois ; échéance \rule{2cm}{0.4pt} ; \caseA~chauffage \caseA~électricité \caseA~eau chaude \caseA~stationnement \caseA~électroménagers} \\
204−Ancienneté du locataire, avis en cours & \multicolumn{4}{l@{}}{depuis \rule{1.5cm}{0.4pt} ; \caseA~avis d'augmentation \caseA~dossier TAL \caseA~avis de reprise ou d'éviction} \\ 206+Ancienneté du locataire, avis en cours & \wide{depuis \rule{1.5cm}{0.4pt} ; \caseA~avis d'augmentation \caseA~dossier TAL \caseA~avis de reprise ou d'éviction} \\
205 Cuisine & \cinq & & \emph{année de rénovation, électroménagers fournis} & \inc \\ 207 Cuisine & \cinq & & \emph{année de rénovation, électroménagers fournis} & \inc \\
206 Salle(s) de bain & \cinq & & \emph{ventilation, étanchéité, moisissures} & \inc \\ 208 Salle(s) de bain & \cinq & & \emph{ventilation, étanchéité, moisissures} & \inc \\
207 Planchers, murs, plafonds & \cinq & & \emph{dénivellation, fissures, taches au plafond (fuite du logement supérieur)} & \inc \\ 209 Planchers, murs, plafonds & \cinq & & \emph{dénivellation, fissures, taches au plafond (fuite du logement supérieur)} & \inc \\
208 Fenêtres et portes du logement & \cinq & & \emph{voir section F ; différences entre logements} & \inc \\ 210 Fenêtres et portes du logement & \cinq & & \emph{voir section F ; différences entre logements} & \inc \\
209−Chauffage et compteur & \multicolumn{4}{l@{}}{\caseA~compteur distinct \caseA~compteur commun ; \caseA~plinthes \caseA~central ; état \cinq} \\ 211+Chauffage et compteur & \wide{\caseA~compteur distinct \caseA~compteur commun ; \caseA~plinthes \caseA~central ; état \cinq} \\
210 Électricité du logement & \cinq & & \emph{panneau distinct, ampérage, prises DDFT} & \inc \\ 212 Électricité du logement & \cinq & & \emph{panneau distinct, ampérage, prises DDFT} & \inc \\
211 Détecteurs de fumée et de CO & \caseA~oui \caseA~non & & \emph{présence dans chaque logement} & \inc \\ 213 Détecteurs de fumée et de CO & \caseA~oui \caseA~non & & \emph{présence dans chaque logement} & \inc \\
212 Issues, escaliers de secours & \cinq & & \emph{accès, garde-corps, dégagement} & \inc \\ 214 Issues, escaliers de secours & \cinq & & \emph{accès, garde-corps, dégagement} & \inc \\
@@ -219,13 +221,13 @@ Entrée électrique commune et compteurs & \cinq & & \emph{nombre de compteurs,
219 Chauffe-eau (par logement ou commun) & \cinq & & \emph{nombre, années} & \inc \\ 221 Chauffe-eau (par logement ou commun) & \cinq & & \emph{nombre, années} & \inc \\
220 Escaliers extérieurs, balcons, galeries & \cinq & & \emph{acier : corrosion aux ancrages ; bois : pourriture ; garde-corps} & \inc \\ 222 Escaliers extérieurs, balcons, galeries & \cinq & & \emph{acier : corrosion aux ancrages ; bois : pourriture ; garde-corps} & \inc \\
221 Stationnements, remises, cour & \cinq & & \emph{nombre de cases, attribution par bail} & \inc \\ 223 Stationnements, remises, cour & \cinq & & \emph{nombre de cases, attribution par bail} & \inc \\
222−Ordures, recyclage, déneigement & \multicolumn{4}{l@{}}{\emph{organisation, contrats déclarés}} \\ 224+Ordures, recyclage, déneigement & \wide{\emph{organisation, contrats déclarés}} \\
223 \midrule 225 \midrule
224 \multicolumn{5}{@{}l}{\textbf{O. Synthèse locative}}\\ 226 \multicolumn{5}{@{}l}{\textbf{O. Synthèse locative}}\\
225−Logements visités / total & \multicolumn{4}{l@{}}{\rule{1cm}{0.4pt} / \rule{1cm}{0.4pt}} \\ 227+Logements visités / total & \wide{\rule{1cm}{0.4pt} / \rule{1cm}{0.4pt}} \\
226−Loyers mensuels totaux (contractuels) & \multicolumn{4}{l@{}}{\rule{2cm}{0.4pt} \$ ; écart apparent au marché \caseA~faible \caseA~moyen \caseA~fort} \\ 228+Loyers mensuels totaux (contractuels) & \wide{\rule{2cm}{0.4pt} \$ ; écart apparent au marché \caseA~faible \caseA~moyen \caseA~fort} \\
227−Logements à rénover à la rotation & \multicolumn{4}{l@{}}{\rule{0pt}{10pt}} \\ 229+Logements à rénover à la rotation & \wide{\rule{0pt}{10pt}} \\
228−Dépenses en capital communes à prévoir & \multicolumn{4}{l@{}}{} \\ 230+Dépenses en capital communes à prévoir & \wide{} \\
229 \end{longtable} 231 \end{longtable}
230 \tabsource{conception de l'auteur ; cohérent avec les \cref{ch:26,ch:32}.} 232 \tabsource{conception de l'auteur ; cohérent avec les \cref{ch:26,ch:32}.}
231 } 233 }
@@ -235,7 +237,7 @@ Dépenses en capital communes à prévoir & \multicolumn{4}{l@{}}{} \\
235 Le troisième formulaire complète les deux premiers pour les immeubles de six logements et plus, dont le \cref{ch:33} traite l'évaluation. La différence n'est pas seulement d'échelle. À partir de ce seuil, les systèmes deviennent centraux (chauffage, eau chaude, ventilation des corridors), la sécurité incendie est organisée au niveau de l'immeuble, la réglementation de construction et de sécurité s'applique différemment, et l'exploitation suppose une gestion, des contrats d'entretien et des réserves que l'évaluateur doit retrouver dans les dépenses normalisées (\cref{ch:28}). La Loi sur le bâtiment exclut de l'application du chapitre « Bâtiment » du Code de sécurité les immeubles totalement résidentiels de moins de trois étages ou de moins de neuf logements \parencite[art.~29]{loibatiment} ; au-delà, l'immeuble est assujetti et l'évaluateur demande les documents qui en attestent (registre d'entretien du système d'alarme, rapports d'inspection des façades et des stationnements étagés lorsqu'ils s'appliquent, plan de sécurité incendie). Il ne vérifie pas lui-même la conformité ; il consigne l'existence ou l'absence des documents, ce qui, en soi, informe sur la gestion. 237 Le troisième formulaire complète les deux premiers pour les immeubles de six logements et plus, dont le \cref{ch:33} traite l'évaluation. La différence n'est pas seulement d'échelle. À partir de ce seuil, les systèmes deviennent centraux (chauffage, eau chaude, ventilation des corridors), la sécurité incendie est organisée au niveau de l'immeuble, la réglementation de construction et de sécurité s'applique différemment, et l'exploitation suppose une gestion, des contrats d'entretien et des réserves que l'évaluateur doit retrouver dans les dépenses normalisées (\cref{ch:28}). La Loi sur le bâtiment exclut de l'application du chapitre « Bâtiment » du Code de sécurité les immeubles totalement résidentiels de moins de trois étages ou de moins de neuf logements \parencite[art.~29]{loibatiment} ; au-delà, l'immeuble est assujetti et l'évaluateur demande les documents qui en attestent (registre d'entretien du système d'alarme, rapports d'inspection des façades et des stationnements étagés lorsqu'ils s'appliquent, plan de sécurité incendie). Il ne vérifie pas lui-même la conformité ; il consigne l'existence ou l'absence des documents, ce qui, en soi, informe sur la gestion.
236 238
237 {\small\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.45} 239 {\small\setlength{\tabcolsep}{4pt}\renewcommand{\arraystretch}{1.45}
238−\begin{longtable}{@{}L{3.1cm}c>{\centering\arraybackslash}p{1.1cm}L{4.1cm}c@{}} 240+\begin{longtable}{@{}L{3.1cm}>{\centering\arraybackslash}p{1.6cm}>{\centering\arraybackslash}p{1.1cm}L{4.1cm}>{\centering\arraybackslash}p{1.8cm}@{}}
239 \caption{Formulaire 3 — Compléments pour un immeuble de six logements et plus}\label{tab:appB:f3}\\ 241 \caption{Formulaire 3 — Compléments pour un immeuble de six logements et plus}\label{tab:appB:f3}\\
240 \toprule 242 \toprule
241 Élément & {État 1--5} & {Âge app.} & Observations (n\textsuperscript{o} photo) & Incidence \\ 243 Élément & {État 1--5} & {Âge app.} & Observations (n\textsuperscript{o} photo) & Incidence \\
@@ -265,7 +267,7 @@ Détecteurs, avertisseurs, éclairage d'urgence & \cinq & & \emph{présence dans
265 Séparations coupe-feu, portes à fermeture automatique & \cinq & & \emph{portes calées ouvertes, percements non scellés} & \inc \\ 267 Séparations coupe-feu, portes à fermeture automatique & \cinq & & \emph{portes calées ouvertes, percements non scellés} & \inc \\
266 Extincteurs, gicleurs, cabinets d'incendie & \cinq & & \emph{étiquettes d'inspection, dates} & \inc \\ 268 Extincteurs, gicleurs, cabinets d'incendie & \cinq & & \emph{étiquettes d'inspection, dates} & \inc \\
267 Issues, escaliers de secours, dégagements & \cinq & & \emph{encombrement, état des escaliers extérieurs d'acier} & \inc \\ 269 Issues, escaliers de secours, dégagements & \cinq & & \emph{encombrement, état des escaliers extérieurs d'acier} & \inc \\
268−Plan de sécurité incendie, documents disponibles & \multicolumn{4}{l@{}}{\caseA~plan \caseA~registre d'alarme \caseA~rapports d'inspection \caseA~aucun document fourni} \\ 270+Plan de sécurité incendie, documents disponibles & \wide{\caseA~plan \caseA~registre d'alarme \caseA~rapports d'inspection \caseA~aucun document fourni} \\
269 \midrule 271 \midrule
270 \multicolumn{5}{@{}l}{\textbf{R. Accessibilité et aires communes}}\\ 272 \multicolumn{5}{@{}l}{\textbf{R. Accessibilité et aires communes}}\\
271 Entrée principale, rampe, seuils & \cinq & & \emph{accessibilité sans obstacle, ouvre-porte} & \inc \\ 273 Entrée principale, rampe, seuils & \cinq & & \emph{accessibilité sans obstacle, ouvre-porte} & \inc \\
@@ -282,15 +284,15 @@ Aménagement, murs de soutènement, clôtures & \cinq & & \emph{stabilité, drai
282 Toiture : accès, équipements en toiture & \cinq & & \emph{unités mécaniques, ancrages, membrane autour des bases} & \inc \\ 284 Toiture : accès, équipements en toiture & \cinq & & \emph{unités mécaniques, ancrages, membrane autour des bases} & \inc \\
283 \midrule 285 \midrule
284 \multicolumn{5}{@{}l}{\textbf{T. Gestion et documents}}\\ 286 \multicolumn{5}{@{}l}{\textbf{T. Gestion et documents}}\\
285−État locatif fourni, baux consultés & \multicolumn{4}{l@{}}{\caseA~état locatif daté \caseA~copies des baux \caseA~registre des avis TAL \caseA~liste des travaux réalisés} \\ 287+État locatif fourni, baux consultés & \wide{\caseA~état locatif daté \caseA~copies des baux \caseA~registre des avis TAL \caseA~liste des travaux réalisés} \\
286−Contrats d'entretien et de service & \multicolumn{4}{l@{}}{\caseA~chauffage \caseA~alarme \caseA~ascenseur \caseA~déneigement \caseA~extermination \caseA~conciergerie} \\ 288+Contrats d'entretien et de service & \wide{\caseA~chauffage \caseA~alarme \caseA~ascenseur \caseA~déneigement \caseA~extermination \caseA~conciergerie} \\
287−Dépenses des trois derniers exercices & \multicolumn{4}{l@{}}{\caseA~fournies \caseA~partielles \caseA~refusées} \\ 289+Dépenses des trois derniers exercices & \wide{\caseA~fournies \caseA~partielles \caseA~refusées} \\
288−Travaux majeurs réalisés (10~ans) et prévus & \multicolumn{4}{l@{}}{\rule{0pt}{10pt}} \\ 290+Travaux majeurs réalisés (10~ans) et prévus & \wide{\rule{0pt}{10pt}} \\
289 \midrule 291 \midrule
290 \multicolumn{5}{@{}l}{\textbf{U. Synthèse}}\\ 292 \multicolumn{5}{@{}l}{\textbf{U. Synthèse}}\\
291−Logements visités / total ; échantillon représentatif ? & \multicolumn{4}{l@{}}{\rule{1cm}{0.4pt} / \rule{1cm}{0.4pt} ; \caseA~oui \caseA~non (hypothèse à déclarer)} \\ 293+Logements visités / total ; échantillon représentatif ? & \wide{\rule{1cm}{0.4pt} / \rule{1cm}{0.4pt} ; \caseA~oui \caseA~non (hypothèse à déclarer)} \\
292−Dépenses en capital à projeter (composante, année, ordre de grandeur) & \multicolumn{4}{l@{}}{\rule{0pt}{10pt}} \\ 294+Dépenses en capital à projeter (composante, année, ordre de grandeur) & \wide{\rule{0pt}{10pt}} \\
293−Désordres à expertiser & \multicolumn{4}{l@{}}{} \\ 295+Désordres à expertiser & \wide{} \\
294 \end{longtable} 296 \end{longtable}
295 \tabsource{conception de l'auteur ; cohérent avec les \cref{ch:28,ch:33} et avec la fiche d'inspection du dossier de cas du \cref{ch:47}.} 297 \tabsource{conception de l'auteur ; cohérent avec les \cref{ch:28,ch:33} et avec la fiche d'inspection du dossier de cas du \cref{ch:47}.}
296 } 298 }
@@ -357,7 +359,7 @@ L'exemple qui suit est entièrement fictif. Il porte sur la maison du dossier de
357 Le \cref{tab:appB:exemple} montre comment le formulaire 1 se remplit sur le terrain. On y voit le passage des faits aux codes : la toiture de 2014, cotée 3 avec un âge apparent de douze ans, n'appelle aucune incidence immédiate mais entre dans l'âge effectif ; le chauffe-eau de 2013 est en fin de vie et reçoit une incidence négative ; la fissure du mur ouest, de faible largeur et sans déversement, est consignée avec sa mesure, photographiée, et renvoyée à une réserve plutôt qu'à une hypothèse extraordinaire parce que rien n'indique un désordre structural ; le sous-sol fini de bonne qualité, le garage et la thermopompe récente donnent au sujet un avantage sur les comparables qui n'en ont pas, ce que la grille d'ajustements du \cref{ch:17} traduira en dollars. La synthèse, enfin, aboutit à une cote générale de 3 et à un âge effectif inférieur à l'âge chronologique, parce que plusieurs composantes de courte durée ont été renouvelées ; c'est ce chiffre que le \cref{ch:24} utilise. 359 Le \cref{tab:appB:exemple} montre comment le formulaire 1 se remplit sur le terrain. On y voit le passage des faits aux codes : la toiture de 2014, cotée 3 avec un âge apparent de douze ans, n'appelle aucune incidence immédiate mais entre dans l'âge effectif ; le chauffe-eau de 2013 est en fin de vie et reçoit une incidence négative ; la fissure du mur ouest, de faible largeur et sans déversement, est consignée avec sa mesure, photographiée, et renvoyée à une réserve plutôt qu'à une hypothèse extraordinaire parce que rien n'indique un désordre structural ; le sous-sol fini de bonne qualité, le garage et la thermopompe récente donnent au sujet un avantage sur les comparables qui n'en ont pas, ce que la grille d'ajustements du \cref{ch:17} traduira en dollars. La synthèse, enfin, aboutit à une cote générale de 3 et à un âge effectif inférieur à l'âge chronologique, parce que plusieurs composantes de courte durée ont été renouvelées ; c'est ce chiffre que le \cref{ch:24} utilise.
358 360
359 {\small\setlength{\tabcolsep}{4pt} 361 {\small\setlength{\tabcolsep}{4pt}
360−\begin{longtable}{@{}L{2.7cm}c>{\centering\arraybackslash}p{0.9cm}L{5.2cm}L{2.5cm}@{}} 362+\begin{longtable}{@{}L{2.7cm}>{\centering\arraybackslash}p{0.8cm}>{\centering\arraybackslash}p{0.9cm}L{5.2cm}L{2.5cm}@{}}
361 \caption{Formulaire 1 rempli pour le sujet du cas 1 (inspection fictive du 20~août 2026 ; données synthétiques)}\label{tab:appB:exemple}\\ 363 \caption{Formulaire 1 rempli pour le sujet du cas 1 (inspection fictive du 20~août 2026 ; données synthétiques)}\label{tab:appB:exemple}\\
362 \toprule 364 \toprule
363 Élément & {État} & {Âge app.} & Observations (n\textsuperscript{o} photo) & Incidence \\ 365 Élément & {État} & {Âge app.} & Observations (n\textsuperscript{o} photo) & Incidence \\
@@ -373,9 +375,9 @@ Le \cref{tab:appB:exemple} montre comment le formulaire 1 se remplit sur le terr
373 \bottomrule 375 \bottomrule
374 \endlastfoot 376 \endlastfoot
375 \multicolumn{5}{@{}l}{\textbf{A. Identification}}\\ 377 \multicolumn{5}{@{}l}{\textbf{A. Identification}}\\
376−Adresse, lot, date & \multicolumn{4}{l@{}}{123, rue des Érables (fictive), Hull ; lot fictif ; 20~août 2026, 9~h~30 à 11~h~15 ; propriétaire présent ; ensoleillé, 24~°C} \\ 378+Adresse, lot, date & \widex{123, rue des Érables (fictive), Hull ; lot fictif ; 20~août 2026, 9~h~30 à 11~h~15 ; propriétaire présent ; ensoleillé, 24~°C} \\
377−Parties non visitées & \multicolumn{4}{l@{}}{Entretoit observé depuis la trappe seulement ; remise verrouillée} \\ 379+Parties non visitées & \widex{Entretoit observé depuis la trappe seulement ; remise verrouillée} \\
378−Documents consultés & \multicolumn{4}{l@{}}{Rôle 2025, certificat de localisation (2019), permis (garage 1998, toiture 2014), zonage résidentiel, hors zone inondable selon la carte en vigueur, DV du vendeur} \\ 380+Documents consultés & \widex{Rôle 2025, certificat de localisation (2019), permis (garage 1998, toiture 2014), zonage résidentiel, hors zone inondable selon la carte en vigueur, DV du vendeur} \\
379 \midrule 381 \midrule
380 \multicolumn{5}{@{}l}{\textbf{B. Site et terrain}}\\ 382 \multicolumn{5}{@{}l}{\textbf{B. Site et terrain}}\\
381 Topographie, drainage & 4 & — & Terrain plat, pente légère vers la rue ; aucune eau stagnante (ph.~1--2) & 0 \\ 383 Topographie, drainage & 4 & — & Terrain plat, pente légère vers la rue ; aucune eau stagnante (ph.~1--2) & 0 \\
@@ -386,7 +388,7 @@ Services & 5 & — & Aqueduc et égout municipaux & 0 \\
386 Zone inondable & non & — & Carte consultée le 19~août 2026 & 0 \\ 388 Zone inondable & non & — & Carte consultée le 19~août 2026 & 0 \\
387 \midrule 389 \midrule
388 \multicolumn{5}{@{}l}{\textbf{C. Fondations et structure}}\\ 390 \multicolumn{5}{@{}l}{\textbf{C. Fondations et structure}}\\
389−Type & \multicolumn{4}{l@{}}{Béton coulé, sous-sol pleine hauteur (2,35~m libre)} \\ 391+Type & \widex{Béton coulé, sous-sol pleine hauteur (2,35~m libre)} \\
390 Murs de fondation & 3 & 28 & Fissure verticale de 1~mm au mur ouest, du haut jusqu'à 40~cm du sol, sèche, sans déversement ; efflorescence légère (ph.~7--8) & 0 (réserve) \\ 392 Murs de fondation & 3 & 28 & Fissure verticale de 1~mm au mur ouest, du haut jusqu'à 40~cm du sol, sèche, sans déversement ; efflorescence légère (ph.~7--8) & 0 (réserve) \\
391 Dalle sous-sol et garage & 4 & 28 & Aucun soulèvement ni fissure en étoile ; dalle du garage plane ; aucun signe de pyrite (ph.~9) & 0 \\ 393 Dalle sous-sol et garage & 4 & 28 & Aucun soulèvement ni fissure en étoile ; dalle du garage plane ; aucun signe de pyrite (ph.~9) & 0 \\
392 Drainage, puisard & 4 & 28 & Pompe de puisard 2021, clapet ; aucun dépôt d'ocre ; eau claire & 0 \\ 394 Drainage, puisard & 4 & 28 & Pompe de puisard 2021, clapet ; aucun dépôt d'ocre ; eau claire & 0 \\
@@ -394,23 +396,23 @@ Humidité, infiltrations & 4 & — & Aucune trace ; DV : aucune infiltration dé
394 Charpente visible & 4 & 28 & Solives de bois d'ingénierie, aucune flèche visible & 0 \\ 396 Charpente visible & 4 & 28 & Solives de bois d'ingénierie, aucune flèche visible & 0 \\
395 \midrule 397 \midrule
396 \multicolumn{5}{@{}l}{\textbf{D. Enveloppe}}\\ 398 \multicolumn{5}{@{}l}{\textbf{D. Enveloppe}}\\
397−Revêtement & \multicolumn{4}{l@{}}{Brique en façade et pignons, vinyle sur les côtés et l'arrière} \\ 399+Revêtement & \widex{Brique en façade et pignons, vinyle sur les côtés et l'arrière} \\
398 État du revêtement & 3 & 28 & Mortier sain ; deux linteaux d'acier avec rouille de surface au-dessus des fenêtres arrière (ph.~12) & $-$ (curable mineur) \\ 400 État du revêtement & 3 & 28 & Mortier sain ; deux linteaux d'acier avec rouille de surface au-dessus des fenêtres arrière (ph.~12) & $-$ (curable mineur) \\
399 Solins, scellants & 3 & 10 & Scellants durcis au pourtour de trois fenêtres & $-$ (curable mineur) \\ 401 Solins, scellants & 3 & 10 & Scellants durcis au pourtour de trois fenêtres & $-$ (curable mineur) \\
400 Soffites, fascias & 4 & 12 & Aluminium 2014, ventilés & 0 \\ 402 Soffites, fascias & 4 & 12 & Aluminium 2014, ventilés & 0 \\
401 Galerie arrière & 3 & 15 & Bois traité, garde-corps conforme en apparence, surface à teindre & 0 \\ 403 Galerie arrière & 3 & 15 & Bois traité, garde-corps conforme en apparence, surface à teindre & 0 \\
402 Porte de garage & 4 & 8 & Isolée, ouvre-porte 2018 & $+$ (garage vs comparables sans garage) \\ 404 Porte de garage & 4 & 8 & Isolée, ouvre-porte 2018 & $+$ (garage vs comparables sans garage) \\
403−Isolation des murs & \multicolumn{4}{l@{}}{Laine minérale visible à une ouverture du sous-sol ; aucune vermiculite ni MIUF déclarée} \\ 405+Isolation des murs & \widex{Laine minérale visible à une ouverture du sous-sol ; aucune vermiculite ni MIUF déclarée} \\
404 \midrule 406 \midrule
405 \multicolumn{5}{@{}l}{\textbf{E. Toiture}}\\ 407 \multicolumn{5}{@{}l}{\textbf{E. Toiture}}\\
406−Type & \multicolumn{4}{l@{}}{Bardeau d'asphalte, pente forte, refait en 2014 (permis)} \\ 408+Type & \widex{Bardeau d'asphalte, pente forte, refait en 2014 (permis)} \\
407 Couvrement & 3 & 12 & Granules intacts, aucun bardeau relevé ; mousse légère côté nord (ph.~14) & 0 \\ 409 Couvrement & 3 & 12 & Granules intacts, aucun bardeau relevé ; mousse légère côté nord (ph.~14) & 0 \\
408 Solins, évents & 4 & 12 & Évents de plastique, solins de la cheminée scellés & 0 \\ 410 Solins, évents & 4 & 12 & Évents de plastique, solins de la cheminée scellés & 0 \\
409 Gouttières & 3 & 12 & Descentes rejetant à 1~m des fondations ; rallonges recommandées & 0 \\ 411 Gouttières & 3 & 12 & Descentes rejetant à 1~m des fondations ; rallonges recommandées & 0 \\
410 Entretoit & 3 & 28 & Vu de la trappe : laine soufflée, env. 25~cm, ventilation apparente, aucune tache ; aucune vermiculite visible & 0 \\ 412 Entretoit & 3 & 28 & Vu de la trappe : laine soufflée, env. 25~cm, ventilation apparente, aucune tache ; aucune vermiculite visible & 0 \\
411 \midrule 413 \midrule
412 \multicolumn{5}{@{}l}{\textbf{F. Fenestration}}\\ 414 \multicolumn{5}{@{}l}{\textbf{F. Fenestration}}\\
413−Type & \multicolumn{4}{l@{}}{PVC, vitrage double, d'origine (1998) sauf deux fenêtres du sous-sol (2016)} \\ 415+Type & \widex{PVC, vitrage double, d'origine (1998) sauf deux fenêtres du sous-sol (2016)} \\
414 État & 3 & 28 & Un verre embué (chambre 3, ph.~16) ; mécanismes fonctionnels & $-$ (curable mineur) \\ 416 État & 3 & 28 & Un verre embué (chambre 3, ph.~16) ; mécanismes fonctionnels & $-$ (curable mineur) \\
415 \midrule 417 \midrule
416 \multicolumn{5}{@{}l}{\textbf{G. Intérieur}}\\ 418 \multicolumn{5}{@{}l}{\textbf{G. Intérieur}}\\
@@ -422,32 +424,32 @@ Sous-sol fini & 4 & 10 & Salle familiale, chambre, salle de bain ; plafond suspe
422 Foyer & 3 & 28 & Foyer au bois d'origine, conduit ramoné selon le propriétaire ; aucun certificat vu & 0 \\ 424 Foyer & 3 & 28 & Foyer au bois d'origine, conduit ramoné selon le propriétaire ; aucun certificat vu & 0 \\
423 \midrule 425 \midrule
424 \multicolumn{5}{@{}l}{\textbf{H. Électricité}}\\ 426 \multicolumn{5}{@{}l}{\textbf{H. Électricité}}\\
425−Entrée et panneau & \multicolumn{4}{l@{}}{200~A, disjoncteurs, cuivre ; espace libre pour 6 circuits} \\ 427+Entrée et panneau & \widex{200~A, disjoncteurs, cuivre ; espace libre pour 6 circuits} \\
426 Câblage visible & 4 & 28 & Aucun aluminium ; boîtes fermées & 0 \\ 428 Câblage visible & 4 & 28 & Aucun aluminium ; boîtes fermées & 0 \\
427 Prises, détecteurs & 4 & — & DDFT aux salles de bain et à la cuisine ; détecteurs de fumée à chaque niveau, CO au sous-sol & 0 \\ 429 Prises, détecteurs & 4 & — & DDFT aux salles de bain et à la cuisine ; détecteurs de fumée à chaque niveau, CO au sous-sol & 0 \\
428 \midrule 430 \midrule
429 \multicolumn{5}{@{}l}{\textbf{I. Plomberie}}\\ 431 \multicolumn{5}{@{}l}{\textbf{I. Plomberie}}\\
430−Distribution, évacuation & \multicolumn{4}{l@{}}{Cuivre et ABS d'origine ; aucun galvanisé} \\ 432+Distribution, évacuation & \widex{Cuivre et ABS d'origine ; aucun galvanisé} \\
431 Chauffe-eau & 2 & 13 & Électrique 60~gal, 2013, corrosion au raccord supérieur, sans bac (ph.~21) & $-$ (remplacement) \\ 433 Chauffe-eau & 2 & 13 & Électrique 60~gal, 2013, corrosion au raccord supérieur, sans bac (ph.~21) & $-$ (remplacement) \\
432 Appareils & 4 & — & Pression normale, aucune fuite & 0 \\ 434 Appareils & 4 & — & Pression normale, aucune fuite & 0 \\
433 \midrule 435 \midrule
434 \multicolumn{5}{@{}l}{\textbf{J. Chauffage, ventilation}}\\ 436 \multicolumn{5}{@{}l}{\textbf{J. Chauffage, ventilation}}\\
435−Système & \multicolumn{4}{l@{}}{Plinthes électriques d'origine + thermopompe murale (2022) au rez-de-chaussée ; aucun mazout} \\ 437+Système & \widex{Plinthes électriques d'origine + thermopompe murale (2022) au rez-de-chaussée ; aucun mazout} \\
436 Appareils & 4 & 4 / 28 & Thermopompe 2022 en bon état ; plinthes fonctionnelles & $+$ (vs comparables sans thermopompe) \\ 438 Appareils & 4 & 4 / 28 & Thermopompe 2022 en bon état ; plinthes fonctionnelles & $+$ (vs comparables sans thermopompe) \\
437 Ventilation & 3 & 28 & Ventilateurs de salles de bain vers l'extérieur ; aucun VRC & 0 \\ 439 Ventilation & 3 & 28 & Ventilateurs de salles de bain vers l'extérieur ; aucun VRC & 0 \\
438 \midrule 440 \midrule
439 \multicolumn{5}{@{}l}{\textbf{K. Environnement intérieur}}\\ 441 \multicolumn{5}{@{}l}{\textbf{K. Environnement intérieur}}\\
440−Radon & \multicolumn{4}{l@{}}{Aucun test déclaré ; aucun système d'atténuation ; réserve type au rapport} \\ 442+Radon & \widex{Aucun test déclaré ; aucun système d'atténuation ; réserve type au rapport} \\
441−Amiante & \multicolumn{4}{l@{}}{Aucun signe (construction 1998)} \\ 443+Amiante & \widex{Aucun signe (construction 1998)} \\
442−Déclarations & \multicolumn{4}{l@{}}{DV : aucun sinistre, aucune réclamation, aucun travail sans permis déclaré} \\ 444+Déclarations & \widex{DV : aucun sinistre, aucune réclamation, aucun travail sans permis déclaré} \\
443 \midrule 445 \midrule
444 \multicolumn{5}{@{}l}{\textbf{L. Synthèse}}\\ 446 \multicolumn{5}{@{}l}{\textbf{L. Synthèse}}\\
445 Cote générale & 3 & — & Entretien normal pour l'âge ; composantes de courte durée partiellement renouvelées ; aucun désordre structural apparent & \\ 447 Cote générale & 3 & — & Entretien normal pour l'âge ; composantes de courte durée partiellement renouvelées ; aucun désordre structural apparent & \\
446−Âges & \multicolumn{4}{l@{}}{Chronologique 28~ans ; effectif estimé 22~ans (toiture, revêtements de sol, cuisine et salle de bain de l'étage renouvelés ; fenêtres et salle de bain du sous-sol d'origine)} \\ 448+Âges & \widex{Chronologique 28~ans ; effectif estimé 22~ans (toiture, revêtements de sol, cuisine et salle de bain de l'étage renouvelés ; fenêtres et salle de bain du sous-sol d'origine)} \\
447−Travaux immédiats & \multicolumn{4}{l@{}}{Chauffe-eau ; scellants ; verre embué ; linteaux à nettoyer et peindre} \\ 449+Travaux immédiats & \widex{Chauffe-eau ; scellants ; verre embué ; linteaux à nettoyer et peindre} \\
448−Moyen terme & \multicolumn{4}{l@{}}{Fenêtres d'origine (5 à 10~ans) ; salle de bain du sous-sol ; asphalte} \\ 450+Moyen terme & \widex{Fenêtres d'origine (5 à 10~ans) ; salle de bain du sous-sol ; asphalte} \\
449−À expertiser & \multicolumn{4}{l@{}}{Aucun ; fissure du mur ouest consignée en réserve avec recommandation de suivi} \\ 451+À expertiser & \widex{Aucun ; fissure du mur ouest consignée en réserve avec recommandation de suivi} \\
450−Photographies, mesures & \multicolumn{4}{l@{}}{24 photographies ; périmètre extérieur mesuré au télémètre, conforme au certificat de localisation} \\ 452+Photographies, mesures & \widex{24 photographies ; périmètre extérieur mesuré au télémètre, conforme au certificat de localisation} \\
451 \end{longtable} 453 \end{longtable}
452 \tabsource{\synth{exemple rédigé pour l'annexe à partir de \texttt{cas1\_gatineau\_sujet.json} ; aucun montant ; la cote 3 et l'âge effectif sont ceux que les \cref{ch:21,ch:24} utilisent.}} 454 \tabsource{\synth{exemple rédigé pour l'annexe à partir de \texttt{cas1\_gatineau\_sujet.json} ; aucun montant ; la cote 3 et l'âge effectif sont ceux que les \cref{ch:21,ch:24} utilisent.}}
453 } 455 }
modified manuscript/chapters/ch03.tex +490 −2
@@ -1,2 +1,490 @@
1−\chapter{Offre, demande et cycles}\label{ch:03} 1+\chapter{Offre, demande et cycles}\label{ch:3}
2−\stubchapter 2+
3+Les deux premiers chapitres ont établi ce que l'évaluateur cherche à mesurer : une valeur marchande, c'est-à-dire le prix le plus probable d'un bien à une date donnée, pour un droit précisément défini. Le présent chapitre s'intéresse à la formation de ce prix à l'échelle du marché. Le logement est un bien durable, produit lentement et consommé pendant des décennies, de sorte que son prix résulte de la rencontre d'une demande qui bouge vite et d'une offre qui bouge lentement. Cette asymétrie explique l'essentiel de ce que l'évaluateur observe sur le terrain : des loyers qui réagissent aux pénuries avec retard, des prix qui s'emballent lorsque les taux d'intérêt baissent, des mises en chantier qui arrivent au moment où la demande s'est déjà retournée, et des marchés régionaux dont les cycles n'ont ni la même amplitude ni la même durée. Le chapitre construit ce raisonnement en trois temps : la mécanique stock-flux et le modèle des quatre quadrants qui relie loyers, prix, construction et stock ; la dynamique des cycles engendrée par les délais de construction et l'inoccupation naturelle ; enfin le coût d'usage, qui relie le prix d'un logement au loyer d'un logement équivalent et aux taux d'intérêt. Les données réelles du Québec, lues dans les tableaux de Statistique Canada et les séries de la Banque du Canada, servent de contrepoint aux modèles, et le chapitre se termine par les indicateurs qu'un évaluateur peut consulter pour qualifier l'état d'un marché à la date d'évaluation.
4+
5+\begin{objectifs}
6+\begin{itemize}
7+\item Distinguer le stock de logements et les flux qui le modifient, et expliquer pourquoi l'offre de logements est inélastique à court terme et élastique à long terme.
8+\item Exposer le modèle des quatre quadrants de DiPasquale et Wheaton, en dériver l'équilibre stationnaire et en tirer la statique comparative d'un choc de taux, de demande ou de coût.
9+\item Définir l'élasticité de l'offre et nommer ses déterminants géographiques, réglementaires et techniques, avec leurs conséquences sur l'amplitude des cycles.
10+\item Formaliser un cycle stock-flux avec délai de livraison et inoccupation naturelle, en établir la condition d'oscillation et mesurer la sensibilité du cycle aux paramètres.
11+\item Dériver le coût d'usage du logement, calculer le ratio prix/loyer qu'il implique et apprécier la sensibilité des prix aux taux d'intérêt.
12+\item Lire les séries publiques québécoises (mises en chantier, taux, inflation, inventaire) pour situer un marché dans son cycle à la date d'évaluation.
13+\end{itemize}
14+\end{objectifs}
15+
16+\section{Stock, flux et ajustement lent}\label{sec:3:stockflux}
17+
18+\subsection{Le logement comme stock}
19+
20+Le parc de logements d'une région est un \motcle{stock} : un nombre de logements existant à une date donnée. Les quantités qui le modifient sont des \motcle{flux} : les mises en chantier et les achèvements l'augmentent, les démolitions, les conversions à d'autres usages et les pertes par sinistre le réduisent. Si l'on note $S_t$ le stock au début de l'année $t$, $C_t$ les logements achevés au cours de l'année et $\delta$ le taux annuel de retrait, l'identité comptable qui gouverne l'évolution du parc s'écrit
21+\begin{equation}\label{eq:3:stockflux}
22+S_{t+1} = S_t + C_t - \delta S_t ,
23+\end{equation}
24+et le stock est stationnaire lorsque la construction compense exactement les retraits, $C = \delta S$. Cette identité, d'apparence triviale, contient la première leçon du chapitre. Au recensement de 2021, le Québec comptait \num{3749035} logements privés occupés \parencite{statcanrec2021type}. En 2025, année la plus active depuis 2021, \num{59864} logements y ont été mis en chantier, toutes régions confondues \parencite{statcanmiseschantier}. Le flux annuel représente donc environ \pct{1.6} du stock. Même si toutes ces unités étaient achevées dans l'année et qu'aucun logement n'était retiré, le parc ne croîtrait que de \pct{1.6} ; avec un taux de retrait de l'ordre d'un demi pour cent, hypothèse que l'\cref{ex:3:1} retient faute de mesure officielle, la croissance nette tombe à \pct{1.1}. Une variation même forte de la construction ne modifie le stock que marginalement d'une année à l'autre. À l'horizon d'une évaluation, qui porte sur une date, le stock est donné.
25+
26+\begin{definition}{Stock, flux et taux de retrait}{3:stock}
27+Le \emph{stock} $S_t$ est le nombre de logements existants à une date. Les \emph{flux} sont les mises en chantier (décision de construire), les achèvements $C_t$ (ajout effectif au stock) et les retraits $\delta S_t$ (démolitions, conversions, sinistres), où $\delta$ est le \emph{taux de retrait}. Le délai entre la mise en chantier et l'achèvement, noté $L$, sépare la décision d'offrir de l'offre effective ; il est de quelques mois pour une maison individuelle et de deux à quatre ans pour un immeuble d'appartements de grande hauteur.
28+\end{definition}
29+
30+La \motcle{durabilité} du logement a une seconde conséquence, soulignée par \textcite{glaeserGyourko2005} : le stock peut croître rapidement lorsque la demande augmente, puisqu'il suffit de construire, mais il ne peut pas décroître rapidement lorsque la demande diminue, puisque personne ne démolit un immeuble en bon état. L'offre est donc asymétrique. Dans une ville en croissance, le prix des logements est ancré au coût de construction, car toute hausse durable au-dessus de ce coût déclenche des mises en chantier ; dans une ville en déclin, le prix peut tomber très en deçà du coût de construction et y rester des décennies, le stock existant se dépréciant lentement. Cette asymétrie est la raison pour laquelle les cycles immobiliers ne sont pas symétriques : les hausses sont bornées par l'offre nouvelle, les baisses ne le sont pas.
31+
32+\subsection{La demande de services de logement}
33+
34+Ce que les ménages demandent n'est pas un logement en tant qu'actif, mais le service que ce logement rend pendant une période : un abri, une localisation, un ensemble d'attributs (\cref{ch:1}). Le prix de ce service est le \motcle{loyer}, qu'il soit versé à un propriétaire ou implicitement supporté par un propriétaire occupant. La demande d'espace d'une région dépend du nombre de ménages, de leurs revenus, de leurs préférences et du loyer $R$ ; dans sa forme la plus simple, on l'écrit comme une fonction décroissante du loyer,
35+\begin{equation}\label{eq:3:demande}
36+D(R) = a - bR, \qquad b > 0,
37+\end{equation}
38+où le paramètre $a$ résume la taille du marché (ménages, revenus, emplois) et où $b$ mesure la sensibilité de la demande au loyer. À court terme, le stock étant donné, le loyer s'ajuste jusqu'à ce que la demande absorbe le stock disponible, $D(R) = S$, aux frictions d'inoccupation près dont traite la \cref{sec:3:cycles}. Un afflux de ménages déplace la demande vers la droite et, le stock ne pouvant suivre, le loyer monte ; c'est le mécanisme qu'ont vécu les marchés québécois entre 2021 et 2024, lorsque la croissance démographique a rencontré un parc locatif dont le taux d'inoccupation était tombé sous un pour cent dans plusieurs régions métropolitaines \parencite{schlLocatif2025}.
39+
40+L'évaluateur retiendra de cette première section un principe simple : à court terme, c'est la demande qui fait le prix, parce que l'offre ne peut pas répondre ; à long terme, c'est le coût de l'offre nouvelle qui ancre le prix, parce que la construction finit par répondre. La durée du « court terme » est précisément ce que les sections suivantes vont mesurer.
41+
42+\section{Le modèle des quatre quadrants}\label{sec:3:quadrants}
43+
44+\subsection{Deux marchés, quatre relations}
45+
46+Le modèle de \textcite{dipasqualeWheaton1992}, développé dans leur manuel \parencite{dipasqualeWheaton1996}, articule en un seul schéma le marché de l'espace, où se forment les loyers, et le marché des actifs, où se forment les prix. Il repose sur quatre relations, chacune occupant un quadrant d'un plan dont l'axe horizontal porte le stock $S$ vers la droite et le prix $P$ vers la gauche, et dont l'axe vertical porte le loyer $R$ vers le haut et la construction $C$ vers le bas (\cref{fig:3:quadrants}).
47+
48+Le premier quadrant, au nord-est, est le marché de l'espace : il contient la courbe de demande \eqref{eq:3:demande} et détermine le loyer qui équilibre la demande et le stock existant. Le deuxième quadrant, au nord-ouest, est le marché des actifs : il convertit le loyer en prix par la capitalisation,
49+\begin{equation}\label{eq:3:actifs}
50+P = \frac{R}{i},
51+\end{equation}
52+où $i$ est le \motcle{taux de capitalisation} exigé par les investisseurs, c'est-à-dire le rendement courant qu'ils acceptent pour détenir de l'immobilier compte tenu des rendements offerts par les autres actifs, du risque et de la croissance attendue des loyers. L'\cref{eq:3:actifs} est l'équation de la capitalisation directe du \cref{ch:29} ; la fonction \texttt{capitalisation\_directe} de la bibliothèque de l'ouvrage la calcule, et le \cref{ch:30} montrera que $i$ s'interprète, sous certaines hypothèses, comme la différence entre le taux d'actualisation et le taux de croissance des loyers \parencite{gordonShapiro1956}. Le troisième quadrant, au sud-ouest, est le secteur de la construction : les promoteurs construisent lorsque le prix dépasse le coût de remplacement, et d'autant plus que l'écart est grand,
53+\begin{equation}\label{eq:3:construction}
54+C = \frac{P - c_0}{c_1} \quad \text{si } P > c_0, \qquad C = 0 \text{ sinon},
55+\end{equation}
56+où $c_0$ est le seuil de coût au-dessous duquel rien ne se construit, et où $c_1$ mesure la hausse de coût marginal qu'entraîne un rythme de construction plus soutenu : terrains plus rares, main-d'œuvre et matériaux plus chers, délais d'approbation plus longs. Le quatrième quadrant, au sud-est, est l'identité stock-flux \eqref{eq:3:stockflux} en régime stationnaire, $S = C/\delta$ : le stock que la construction courante peut entretenir à long terme.
57+
58+\begin{figure}[htbp]
59+\centering
60+\includegraphics[width=\textwidth]{ch03/ch03-fig-quatre-quadrants.pdf}
61+\caption{Le modèle des quatre quadrants pour le marché type du chapitre : le rectangle plein relie l'équilibre stationnaire de référence (loyer \dollars{14400} par an, prix \dollars{288000}, construction \num{1000} logements par an, stock \num{100000} logements) ; le rectangle en tirets est le nouvel équilibre après une baisse du taux de capitalisation de 5 à 4 \%, et le pointillé montre la réaction de court terme, lorsque le stock n'a pas encore bougé : le prix bondit à \dollars{360000} et la construction à \num{2500} logements par an. À long terme, le stock s'accroît, le loyer baisse et le prix revient près de son niveau initial.}\label{fig:3:quadrants}
62+\figsource{\synth{analysis/python/figures/ch03\_quadrants.py ; paramètres pédagogiques de analysis/python/cases/ch03\_cycles.py}}
63+\end{figure}
64+
65+\subsection{L'équilibre stationnaire en forme fermée}
66+
67+Les quatre relations forment une boucle : le stock détermine le loyer, le loyer détermine le prix, le prix détermine la construction, la construction détermine le stock. L'équilibre de long terme est le point où cette boucle se referme sur elle-même.
68+
69+\begin{proposition}{Équilibre stationnaire des quatre quadrants}{3:equilibre}
70+Avec la demande \eqref{eq:3:demande}, la capitalisation \eqref{eq:3:actifs}, l'offre de construction \eqref{eq:3:construction} et la condition stationnaire $C = \delta S$, le stock d'équilibre de long terme est
71+\begin{equation}\label{eq:3:stock-equilibre}
72+S^{*} = \frac{a - b\,i\,c_0}{1 + b\,i\,c_1\,\delta},
73+\end{equation}
74+et les autres variables s'en déduisent : $R^{*} = (a - S^{*})/b$, $P^{*} = R^{*}/i$ et $C^{*} = \delta S^{*}$. Le stock d'équilibre croît avec la demande $a$ et décroît avec le taux de capitalisation $i$, le seuil de coût $c_0$, la pente de l'offre $c_1$ et le taux de retrait $\delta$.
75+\end{proposition}
76+\begin{proof}
77+En régime stationnaire, $S = C/\delta = (P - c_0)/(c_1\delta) = (R/i - c_0)/(c_1\delta)$ et $R = (a - S)/b$. En substituant, $S\,c_1\delta = (a - S)/(bi) - c_0$, soit $S\,(c_1\delta + 1/(bi)) = a/(bi) - c_0$. En multipliant les deux membres par $bi$, on obtient \eqref{eq:3:stock-equilibre}. Les signes des dérivées partielles se lisent directement : le numérateur décroît avec $i$ et $c_0$, le dénominateur croît avec $i$, $c_1$ et $\delta$.
78+\end{proof}
79+
80+Le modèle est illustré tout au long du chapitre par un \emph{marché type} dont les paramètres sont pédagogiques et déclarés : un stock initial de \num{100000} logements, un loyer de \dollars{1200} par mois, soit \dollars{14400} par an, proche du loyer moyen de \dollars{1227} relevé par la SCHL dans la RMR de Québec en octobre 2025 \parencite{schlLocatif2025}, un taux de capitalisation de \pct{5}, à l'intérieur de la fourchette de 4,25 à 6,00 \% publiée par CBRE pour le multirésidentiel de Québec au troisième trimestre de 2026 \parencite{cbrecaprates2026q3}, un taux de retrait de \pct{1} par an et une élasticité-prix de la demande d'espace de $-0{,}5$ au point initial. Ces deux derniers paramètres ne sont pas estimés sur données québécoises ; ils fixent des ordres de grandeur plausibles. On en déduit $b = -\eta S_0/R_0 = 3{,}472$ logements par dollar de loyer annuel, $a = \num{150000}$, un prix initial $P_0 = \dollars{288000}$ par logement et une construction stationnaire $C_0 = \delta S_0 = \num{1000}$ logements par an. Le seuil de coût est fixé à $c_0 = \dollars{240000}$, et la pente $c_1 = (P_0 - c_0)/C_0 = 48$ dollars par logement et par unité de rythme annuel est celle qui rend l'état initial stationnaire. L'\cref{eq:3:stock-equilibre} redonne alors exactement $S^{*} = \num{100000}$, ce que le script \texttt{analysis/python/cases/ch03\_cycles.py} vérifie aussi par itération de point fixe.
81+
82+\subsection{Statique comparative : taux, demande, coûts}
83+
84+La force du modèle tient à ce qu'il distingue la réaction de court terme, lorsque le stock est fixe, de l'équilibre de long terme, lorsque la construction a fait son œuvre. Le \cref{tab:3:statique} présente trois chocs appliqués au marché type.
85+
86+\begin{table}[htbp]
87+\caption{Statique comparative du marché type : réaction de court terme (stock fixe) et équilibre de long terme}\label{tab:3:statique}
88+\centering
89+\small
90+\begin{tabular}{lS[table-format=6.0]S[table-format=6.0]S[table-format=6.0]S[table-format=6.0]S[table-format=6.0]S[table-format=4.0]}
91+\toprule
92+ & \multicolumn{2}{c}{Court terme} & \multicolumn{4}{c}{Long terme} \\
93+\cmidrule(lr){2-3}\cmidrule(lr){4-7}
94+Choc & {$R$ (\$/an)} & {$P$ (\$)} & {$S$ (log.)} & {$R$ (\$/an)} & {$P$ (\$)} & {$C$ (log./an)} \\
95+\midrule
96+Référence ($i$ = 5 \%, $a$ = 150 000, $c_0$ = 240 000 \$) & 14400 & 288000 & 100000 & 14400 & 288000 & 1000 \\
97+Taux de capitalisation : 5 \% $\to$ 4 \% & 14400 & 360000 & 109375 & 11700 & 292500 & 1094 \\
98+Demande $a$ : +10 \% & 18720 & 374400 & 113846 & 14732 & 294646 & 1138 \\
99+Seuil de coût $c_0$ : +10 \% & 14400 & 288000 & 96154 & 15508 & 310154 & 962 \\
100+\bottomrule
101+\end{tabular}
102+\tabsource{\synth{analysis/python/cases/ch03\_cycles.py, fonction \texttt{statique\_comparative}}}
103+\end{table}
104+
105+La baisse du taux de capitalisation de 5 à 4 \% est le choc le plus instructif pour l'évaluateur. À court terme, rien ne change sur le marché de l'espace : le stock et le loyer sont inchangés, et le prix bondit mécaniquement de \dollars{288000} à \dollars{360000}, soit \pct{25}, parce que les investisseurs capitalisent le même loyer à un taux plus bas. La construction réagit à ce prix : elle passe de \num{1000} à \num{2500} logements par an. Mais à mesure que ces logements s'ajoutent au stock, le loyer baisse, et avec lui le prix. À l'équilibre de long terme, le stock a crû de \pct{9.4}, le loyer a reculé de \pct{18.75} et le prix ne dépasse plus que de \pct{1.56} son niveau initial. Le modèle dit donc qu'une baisse durable des taux se traduit d'abord par une hausse des prix, puis par une hausse du stock et une baisse des loyers, le prix revenant près du coût de construction. La hausse initiale des prix n'est pas une erreur du marché ; c'est le signal qui déclenche la construction. Mais un évaluateur qui extrapolerait le prix de court terme comme s'il était permanent se tromperait sur le long terme, et un investisseur qui achèterait au sommet en comptant sur la stabilité des loyers découvrirait que c'est précisément la hausse des prix qui prépare la baisse des loyers.
106+
107+Le choc de demande de \pct{10} produit la séquence inverse par son origine mais semblable par sa forme : à court terme, le loyer et le prix bondissent de \pct{30}, parce que l'élasticité de la demande est faible ; à long terme, le stock a crû de \pct{13.8} et le loyer n'est plus que \pct{2.3} au-dessus de son niveau initial. Enfin, la hausse de \pct{10} du seuil de coût ne change rien à court terme, puisque le stock et la demande sont inchangés, mais réduit le stock de long terme de \pct{3.8} et relève le loyer et le prix d'équilibre de \pct{7.7} : les coûts de construction se transmettent aux prix de l'ensemble du parc, neuf et ancien, par le canal de l'offre nouvelle. C'est la raison pour laquelle le \cref{ch:21} insiste sur la mesure du coût de remplacement neuf même pour des immeubles anciens : il borne le prix de long terme de tous les substituts.
108+
109+\begin{pratique}
110+Le modèle des quatre quadrants fournit à l'évaluateur une grille de lecture de la « conjoncture » qu'il doit décrire dans son rapport. Un prix élevé par rapport au loyer signale un taux de capitalisation bas, donc une dépendance du prix aux taux d'intérêt ; un prix élevé par rapport au coût de construction signale une offre à venir ; un loyer qui monte avec un stock stable signale une pression de demande que l'offre n'a pas encore rejointe. La date d'évaluation fixe le point du cycle ; les ajustements de conditions du marché du \cref{ch:17} corrigent les ventes antérieures jusqu'à cette date, et la fourchette de valeur du \cref{ch:20} doit être d'autant plus large que le marché est loin de son équilibre de long terme.
111+\end{pratique}
112+
113+\section{Élasticités de l'offre et contraintes}\label{sec:3:elasticites}
114+
115+\subsection{Mesurer la réactivité de l'offre}
116+
117+L'\motcle{élasticité de l'offre} mesure la variation relative de la quantité offerte pour une variation relative du prix. Dans le modèle des quatre quadrants, on peut la définir à deux horizons. À court terme, l'élasticité de la construction au prix, au point initial, est
118+\begin{equation}\label{eq:3:elasticite}
119+\varepsilon_C = \frac{\dd C}{\dd P}\,\frac{P}{C} = \frac{1}{c_1}\,\frac{P_0}{C_0} = \frac{P_0}{P_0 - c_0},
120+\end{equation}
121+soit $288\,000/48\,000 = 6$ pour le marché type : une hausse de \pct{1} du prix accroît le rythme de construction de \pct{6}, ce qui est beaucoup, parce que la marge entre le prix et le seuil de coût est étroite. La réactivité de l'offre à l'échelle du stock est mieux résumée par le paramètre composite
122+\begin{equation}\label{eq:3:kappa}
123+\kappa = \frac{1}{b\,i\,c_1},
124+\end{equation}
125+qui apparaîtra dans la dynamique de la \cref{sec:3:cycles} : il mesure la fraction d'un écart de stock que la construction comble en une année, en passant par la chaîne loyer, prix, construction. Pour le marché type, $\kappa = 0{,}12$. Enfin, l'élasticité du stock stationnaire par rapport à la taille de la demande, calculée à partir de l'\cref{eq:3:stock-equilibre}, vaut $1{,}385$ : à long terme, le stock réagit plus que proportionnellement à la demande parce que le loyer d'équilibre baisse à mesure que le stock croît. Ces trois mesures renvoient à des horizons différents, et l'on ne peut pas comparer des élasticités publiées sans savoir laquelle est mesurée.
126+
127+\subsection{Les déterminants de l'élasticité}
128+
129+Qu'est-ce qui rend l'offre d'une région plus ou moins réactive ? \textcite{saiz2010} a montré, pour les aires métropolitaines américaines, que la géographie est un déterminant de premier ordre : la part du territoire rendue inconstructible par les plans d'eau, les océans et les pentes fortes dans un rayon de la ville centre réduit l'élasticité de l'offre, et cette contrainte physique renforce la contrainte réglementaire, les régions géographiquement contraintes étant aussi celles qui réglementent le plus. La réglementation de l'usage du sol, le zonage, les délais d'approbation et les redevances agissent sur le seuil $c_0$ et sur la pente $c_1$ de l'\cref{eq:3:construction}. Le coût des matériaux et de la main-d'œuvre, mesuré au Québec par l'indice des prix de la construction de bâtiments dont le \cref{ch:21} analyse la hausse de \pct{8.6} sur un an à Montréal, agit sur $c_0$. Le \cref{tab:3:determinants} classe ces déterminants selon le paramètre qu'ils affectent et le sens de leur effet.
130+
131+\begin{table}[htbp]
132+\caption{Déterminants de l'élasticité de l'offre de logements et paramètre du modèle qu'ils affectent}\label{tab:3:determinants}
133+\centering
134+\small
135+\begin{tabularx}{\textwidth}{lYcc}
136+\toprule
137+Déterminant & Mécanisme & Paramètre & Effet sur l'élasticité \\
138+\midrule
139+Plans d'eau, pentes fortes, zones inondables & Terrain constructible rare ; coût marginal du terrain croissant & $c_1$ $\uparrow$ & $\downarrow$ \\
140+Zone agricole protégée, périmètre d'urbanisation & Offre de terrain bornée par la réglementation & $c_1$ $\uparrow$ & $\downarrow$ \\
141+Zonage restrictif, hauteurs, densités, stationnement & Moins de logements par terrain ; coût par logement plus élevé & $c_0$ $\uparrow$, $c_1$ $\uparrow$ & $\downarrow$ \\
142+Délais d'approbation, consultations, référendums & Horizon $L$ plus long ; risque et coût de portage & $L$ $\uparrow$, $c_0$ $\uparrow$ & $\downarrow$ (et cycles plus amples) \\
143+Coût des matériaux et de la main-d'œuvre & Seuil de rentabilité relevé & $c_0$ $\uparrow$ & $\downarrow$ à prix donné \\
144+Capacité de l'industrie (entrepreneurs, grues, ouvriers) & Coût marginal croissant du rythme & $c_1$ $\uparrow$ & $\downarrow$ \\
145+Terrains intercalaires, requalification, densification douce & Nouvelle offre de terrain à coût modéré & $c_1$ $\downarrow$ & $\uparrow$ \\
146+\bottomrule
147+\end{tabularx}
148+\tabsource{synthèse de l'auteur d'après \textcite{saiz2010}, \textcite{glaeserGyourkoSaiz2008} et \textcite{dipasqualeWheaton1996} ; classement qualitatif, aucune valeur numérique d'élasticité n'est reproduite.}
149+\end{table}
150+
151+\begin{quebec}
152+Les contraintes recensées au \cref{tab:3:determinants} ont des traductions concrètes au Québec. Le fleuve Saint-Laurent, les rivières des Outaouais et Saint-Charles, le mont Royal et les zones inondables cartographiées par le gouvernement \parencite{zonesInond2026} bornent physiquement les trois grandes agglomérations. La Loi sur la protection du territoire et des activités agricoles \parencite{lptaa} soustrait à l'urbanisation la zone agricole, dont la Commission de protection du territoire agricole du Québec \parencite{cptaq} autorise les exclusions au compte-gouttes ; elle fait de la périphérie de Montréal et de Québec un territoire à offre bornée. La Loi sur l'aménagement et l'urbanisme \parencite{lau} confie aux municipalités le zonage, les densités et les procédures d'approbation que le \cref{ch:8} détaille. Ces institutions ne figent pas l'offre, mais elles la rendent moins élastique qu'elle ne le serait sur un territoire ouvert, et elles orientent sa forme : comme le montre la \cref{sec:3:cycles}, la construction québécoise s'est déplacée massivement de la maison individuelle vers l'appartement.
153+\end{quebec}
154+
155+\subsection{Élasticité, prix et bulles}
156+
157+\textcite{glaeserGyourkoSaiz2008} ont tiré de la relation entre élasticité et cycles une conclusion qui éclaire la lecture des marchés régionaux. Lorsque des anticipations optimistes relèvent la demande d'actifs, les régions à offre inélastique connaissent des hausses de prix fortes et longues, parce que l'offre ne vient pas les contenir ; les régions à offre élastique connaissent des hausses de prix plus courtes et plus modestes, mais une vague de construction qui laisse ensuite un excédent de logements et une baisse des prix. L'élasticité détermine donc si un choc de demande se résout par les prix ou par les quantités. L'asymétrie de \textcite{glaeserGyourko2005} s'y ajoute : dans la région élastique, l'excédent construit pendant l'emballement ne disparaît pas quand la demande se retire, et la baisse des prix peut être durable. Pour l'évaluateur, la conséquence pratique est que la volatilité attendue d'une valeur dépend du marché où se trouve le bien : à prix égal, un logement dans un marché contraint est exposé à des variations de prix plus fortes, et un logement dans un marché élastique est exposé à une concurrence de l'offre neuve qui plafonne sa valeur au coût de remplacement. La perspective historique de \textcite{knollSchularickSteger2017}, qui attribuent la hausse séculaire des prix réels des logements dans quatorze pays depuis 1870 presque entièrement au prix des terrains, et la décomposition de \textcite{davisHeathcote2007}, qui montrent que la volatilité des prix des maisons américaines vient du terrain et non de la structure, convergent vers la même idée : la composante inélastique du logement, le sol, est celle qui porte le cycle.
158+
159+\section{Cycles : mises en chantier, inoccupation naturelle et prix}\label{sec:3:cycles}
160+
161+\subsection{Pourquoi l'ajustement engendre des cycles}
162+
163+Le modèle des quatre quadrants décrit où va le marché ; il ne dit pas comment il y va. \textcite{wheaton1999} a montré que la trajectoire dépend de trois choses : le délai de livraison, la réactivité de l'offre et la manière dont les acteurs forment leurs anticipations. Lorsque les promoteurs décident de construire sur la base du prix courant et que les logements ne sont livrés que plusieurs trimestres plus tard, l'offre répond à une demande qui n'existe plus : la construction décidée au sommet des loyers arrive quand les loyers ont commencé à baisser, elle accentue la baisse, puis l'absence de mises en chantier pendant la baisse prépare la pénurie suivante. Des anticipations rationnelles, qui tiendraient compte des logements en construction, amortiraient ces oscillations ; des anticipations myopes ou extrapolatives les amplifient. L'analyse empirique de \textcite{sivitanidesTortoWheaton2003} sur les marchés commerciaux américains conclut que les taux de capitalisation eux-mêmes se comportent de façon extrapolative, ce qui ajoute au cycle de l'espace un cycle des actifs.
164+
165+Le marché de l'espace n'est pas non plus un marché d'enchères qui se vide à chaque période. Il existe un \motcle{taux d'inoccupation naturel} $v^{*}$, fraction du stock qui demeure vacante en régime normal parce que les ménages déménagent, que les logements se libèrent et se relouent avec délai, et que les propriétaires préfèrent une vacance courte à une baisse immédiate du loyer. Lorsque l'inoccupation observée $v_t$ est inférieure au taux naturel, les loyers montent ; lorsqu'elle lui est supérieure, ils baissent. La forme la plus simple de cet ajustement est proportionnelle,
166+\begin{equation}\label{eq:3:loyer}
167+\frac{R_{t+1} - R_t}{R_t} = -\lambda\,(v_t - v^{*}), \qquad v_t = 1 - \frac{D_t}{S_t},
168+\end{equation}
169+où $\lambda$ mesure la vitesse de réaction des loyers à un point d'inoccupation excédentaire. Cette équation, qui remonte aux travaux sur les marchés de bureaux des années 1980 et que \textcite{dipasqualeWheaton1996} présentent pour le logement, introduit un second délai dans le système : même sans construction, le loyer ne saute pas à son niveau d'équilibre, il s'y rend graduellement.
170+
171+\subsection{Un modèle dynamique et sa condition d'oscillation}
172+
173+Réunissons les éléments. En temps discret annuel, avec un délai de livraison $L$, la construction décidée en $t$ s'ajoute au stock en $t + L$ : $S_{t+1} = (1 - \delta) S_t + C_{t-L+1}$. En substituant la chaîne loyer, prix, construction du modèle statique, on obtient une équation aux différences linéaire pour le stock,
174+\begin{equation}\label{eq:3:dynamique}
175+S_{t+1} = (1 - \delta)\,S_t + \kappa\,(a - S_{t-L}) - \frac{c_0}{c_1}, \qquad \kappa = \frac{1}{b\,i\,c_1},
176+\end{equation}
177+où $\kappa$ est la réactivité définie par l'\cref{eq:3:kappa}. Le comportement de cette équation dépend des racines de son polynôme caractéristique.
178+
179+\begin{proposition}{Condition d'oscillation du modèle stock-flux}{3:oscillation}
180+Pour un délai d'un an ($L = 1$), l'\cref{eq:3:dynamique} a pour polynôme caractéristique $r^{2} - (1 - \delta)\,r + \kappa = 0$. Le stock converge sans oscillation si $\kappa \le (1 - \delta)^{2}/4$ ; il oscille autour de l'équilibre si $\kappa > (1 - \delta)^{2}/4$, avec un module $\sqrt{\kappa}$ et une période de
181+\begin{equation}\label{eq:3:periode}
182+T = \frac{2\pi}{\arccos\!\left(\dfrac{1 - \delta}{2\sqrt{\kappa}}\right)}
183+\end{equation}
184+années ; les oscillations sont amorties si $\kappa < 1$ et explosives si $\kappa > 1$. Pour un délai $L$ quelconque, le polynôme devient $r^{L+1} - (1 - \delta)\,r^{L} + \kappa = 0$ et, à $\kappa$ donné, l'allongement du délai accroît le module de la racine dominante et allonge la période.
185+\end{proposition}
186+\begin{proof}
187+En posant $s_t = S_t - S^{*}$, l'écart à l'équilibre stationnaire, l'\cref{eq:3:dynamique} devient homogène : $s_{t+1} = (1 - \delta)\,s_t - \kappa\,s_{t-L}$. On cherche des solutions de la forme $s_t = r^{t}$, d'où $r^{L+1} - (1 - \delta)\,r^{L} + \kappa = 0$. Pour $L = 1$, le discriminant est $(1 - \delta)^{2} - 4\kappa$ ; les racines sont complexes conjuguées lorsqu'il est négatif, et leur produit vaut $\kappa$, de sorte que leur module commun est $\sqrt{\kappa}$. En écrivant $r = \sqrt{\kappa}\,e^{\pm i\theta}$, la somme des racines $2\sqrt{\kappa}\cos\theta = 1 - \delta$ donne $\theta$, et la période est $2\pi/\theta$. La solution générale $s_t = A\,\kappa^{t/2}\cos(\theta t + \varphi)$ converge si $\sqrt{\kappa} < 1$. Pour $L > 1$, le résultat sur le module s'obtient numériquement ; le script du chapitre le calcule par les racines du polynôme.
188+\end{proof}
189+
190+Pour le marché type ($\delta = 0{,}01$), le seuil d'oscillation est $(1-\delta)^{2}/4 = 0{,}245$. Avec la pente d'offre $c_1 = 48$, la réactivité $\kappa = 0{,}12$ est inférieure au seuil : le stock converge de façon monotone, avec une racine dominante de module $0{,}849$. Si l'offre est quatre fois plus réactive, $c_1 = 12$ et $\kappa = 0{,}48$, les racines sont complexes, de module $0{,}693$, et la période des oscillations est de $8{,}1$ ans pour un délai d'un an, de $10{,}7$ ans pour un délai de deux ans, avec un module qui passe à $0{,}928$ ; à trois ans de délai, le module dépasse l'unité et le système devient instable. Une offre très réactive combinée à des délais longs est la recette des cycles amples et persistants ; une offre peu réactive donne des marchés qui s'ajustent lentement mais sans excès. C'est le résultat central de \textcite{wheaton1999}, et il renverse une intuition courante : ce ne sont pas les marchés contraints qui « cyclent » le plus par les quantités, ce sont les marchés élastiques ; les marchés contraints, eux, cyclent par les prix.
191+
192+\subsection{Simulation d'un cycle}
193+
194+\begin{synthetique}
195+La simulation de cette sous-section est synthétique. Elle est produite par la fonction \texttt{simuler\_cycle} du script \texttt{analysis/python/cases/ch03\_cycles.py}, qui est déterministe (aucun tirage aléatoire ; la graine conventionnelle de l'ouvrage, 20261031, n'intervient pas). Le marché type trimestriel reprend les paramètres de la \cref{sec:3:quadrants} avec une pente d'offre $c_1 = 12$ (réactivité $\kappa = 0{,}48$), le seuil de coût étant recalibré à $c_0 = \dollars{276000}$ pour que l'état initial soit stationnaire ; un taux d'inoccupation naturel $v^{*} = \pct{3}$, entre les taux de 2,4 \% et 2,9 \% observés par la SCHL dans les RMR de Québec et de Montréal en octobre 2025 \parencite{schlLocatif2025} ; une vitesse d'ajustement des loyers $\lambda = 0{,}75$ par trimestre ; un délai de livraison $L = 6$ trimestres. Le choc est une hausse permanente de \pct{6} de la demande, étalée linéairement sur douze trimestres à partir du huitième. Ces valeurs sont des hypothèses pédagogiques, non des estimations ; elles ne décrivent aucun marché réel.
196+\end{synthetique}
197+
198+La \cref{fig:3:cycle} montre la réponse du marché type. La montée de la demande fait d'abord tomber l'inoccupation, de \pct{3} à un creux de \pct{1.17}, parce que le stock ne bouge pas tant que les chantiers décidés en réaction ne sont pas livrés. Les loyers montent en réponse à la pénurie et culminent à \pct{15.0} au-dessus de leur nouveau niveau stationnaire, treize trimestres après le début du choc ; le prix suit le loyer, et les mises en chantier, qui réagissent au prix, atteignent un rythme annuel de \num{4711} logements, soit plus de quatre fois le rythme stationnaire de \num{1089}. Puis les livraisons affluent : le stock dépasse la demande, l'inoccupation grimpe jusqu'à \pct{5.0}, les loyers refluent et passent sous leur niveau d'équilibre, atteignant un creux de \pct{7.0} en deçà trente-cinq trimestres après le début du choc. Les mises en chantier s'arrêtent complètement pendant plusieurs années, le stock se résorbe par les retraits et par la croissance de la demande, et un second cycle, d'amplitude réduite à \pct{17} du premier, s'amorce. La période du cycle est d'environ 47 trimestres, soit près de douze ans. Tous les éléments d'un cycle immobilier observé sont là : la pénurie qui précède la hausse des loyers, la vague de construction qui arrive en retard, la surabondance qui suit, l'arrêt des chantiers et le retour lent à l'équilibre.
199+
200+\begin{figure}[htbp]
201+\centering
202+\includegraphics[width=\textwidth]{ch03/ch03-fig-cycle-simule.pdf}
203+\caption{Simulation d'un cycle stock-flux dans le marché type après une hausse permanente de 6 \% de la demande étalée sur trois ans (zone grisée) : A, le stock rattrape puis dépasse la demande occupée ; B, l'inoccupation tombe sous son taux naturel de 3 \%, puis le dépasse ; C, le loyer culmine à 15 \% au-dessus de son nouveau niveau stationnaire avant de passer 7 \% en deçà ; D, les mises en chantier bondissent puis s'arrêtent complètement pendant plusieurs années.}\label{fig:3:cycle}
204+\figsource{\synth{analysis/python/figures/ch03\_cycle.py ; paramètres pédagogiques, simulation déterministe}}
205+\end{figure}
206+
207+\subsection{Sensibilité du cycle au délai et à la réactivité}
208+
209+La \cref{fig:3:sensibilite} et le \cref{tab:3:sensibilite} font varier les deux paramètres que la \cref{prop:3:oscillation} désigne comme décisifs. Avec un délai de deux trimestres, le loyer ne dépasse son équilibre que de \pct{12.0} et ne passe que \pct{1.2} en deçà : le marché s'ajuste presque sans excès, parce que l'offre arrive avant que les loyers n'aient eu le temps de s'emballer. Avec un délai de douze trimestres, caractéristique des tours d'habitation, le dépassement atteint \pct{16.9} et le creux \pct{18.1}, la période s'allonge à 76 trimestres et l'amortissement d'un cycle à l'autre faiblit. La réactivité de l'offre agit dans le même sens : avec $\kappa = 0{,}12$, le loyer monte de \pct{15.1} mais ne repasse jamais sous son équilibre, parce que l'offre ne construit pas assez pour créer un excédent ; avec $\kappa = 0{,}24$, un léger creux de \pct{1.0} apparaît ; avec $\kappa = 0{,}48$, le cycle complet se déploie. La vitesse d'ajustement des loyers $\lambda$ a un effet plus modeste et ambigu : des loyers plus réactifs montent plus vite et plus haut, mais raccourcissent la période et réduisent la pointe d'inoccupation.
210+
211+\begin{table}[htbp]
212+\caption{Sensibilité du cycle simulé au délai de livraison $L$ et à la réactivité de l'offre $\kappa$ ($\lambda = 0{,}75$ ; écarts du loyer à son niveau stationnaire final)}\label{tab:3:sensibilite}
213+\centering
214+\small
215+\begin{tabular}{S[table-format=2.0]S[table-format=1.2]S[table-format=2.1]S[table-format=-2.1]S[table-format=1.1]S[table-format=4.0]S[table-format=2.0]S[table-format=1.2]}
216+\toprule
217+{$L$ (trim.)} & {$\kappa$} & {Pointe du loyer (\%)} & {Creux du loyer (\%)} & {Inoccupation max. (\%)} & {Chantiers max. (log./an)} & {Période (trim.)} & {Amortissement} \\
218+\midrule
219+2 & 0.48 & 12.0 & -1.2 & 4.5 & 3985 & 39 & 0.01 \\
220+6 & 0.48 & 15.0 & -7.0 & 5.0 & 4711 & 47 & 0.17 \\
221+12 & 0.48 & 16.9 & -18.1 & 5.4 & 5156 & 76 & 0.28 \\
222+6 & 0.24 & 15.4 & -1.0 & 4.0 & 2942 & 70 & 0.00 \\
223+6 & 0.12 & 15.1 & 0.5 & 3.5 & 2001 & {---} & {---} \\
224+12 & 0.12 & 15.8 & -0.2 & 3.6 & 2047 & {---} & {---} \\
225+\bottomrule
226+\end{tabular}
227+\tabsource{\synth{analysis/python/cases/ch03\_cycles.py, fonction \texttt{sensibilite\_cycle} ; l'amortissement est le rapport de la seconde pointe à la première ; « --- » : aucun second cycle}}
228+\end{table}
229+
230+\begin{figure}[htbp]
231+\centering
232+\includegraphics[width=\textwidth]{ch03/ch03-fig-cycle-sensibilite.pdf}
233+\caption{Trajectoire du loyer après le choc de demande selon le délai de livraison (A) et la réactivité de l'offre (B). Les délais longs creusent le cycle et l'allongent ; une offre peu réactive ($\kappa$ = 0,12) s'ajuste lentement mais sans jamais passer sous l'équilibre.}\label{fig:3:sensibilite}
234+\figsource{\synth{analysis/python/figures/ch03\_cycle.py}}
235+\end{figure}
236+
237+\subsection{Le cycle québécois des mises en chantier}
238+
239+Les données réelles ne reproduisent pas la régularité d'une simulation, mais elles en portent les traces. La \cref{fig:3:chantiers} présente les logements mis en chantier au Québec depuis 1990, d'après le tableau 34-10-0135-01 de Statistique Canada, qui diffuse les relevés trimestriels de la SCHL pour toutes les régions \parencite{statcanmiseschantier}. La série décrit trois grands mouvements. Le creux du milieu des années 1990, avec \num{21885} mises en chantier en 1995, suit une période de taux d'intérêt élevés et de faible croissance démographique. La reprise des années 2000 porte la construction à \num{58448} logements en 2004, puis la maintient autour de \num{50000} jusqu'en 2012, avant un repli vers \num{38000} au milieu de la décennie 2010. Le troisième mouvement est le plus brutal : de \num{54066} en 2020, les mises en chantier bondissent à \num{67810} en 2021, record de la période, sous l'effet des taux d'intérêt historiquement bas et d'une demande soutenue, puis s'effondrent à \num{38912} en 2023, soit une baisse de \pct{42.6} en deux ans, au moment même où la pénurie de logements locatifs était la plus aiguë. Elles remontent ensuite à \num{48713} en 2024 et à \num{59864} en 2025, et les trois premiers trimestres de 2026 totalisent \num{42159} logements.
240+
241+\begin{figure}[htbp]
242+\centering
243+\includegraphics[width=\textwidth]{ch03/ch03-fig-mises-chantier-quebec.pdf}
244+\caption{A : logements mis en chantier au Québec, toutes régions, 1990-2026 (totaux annuels et somme mobile sur quatre trimestres ; 2026 compte trois trimestres), avec la période de resserrement monétaire de mars 2022 à juillet 2023 en grisé. B : composition par type d'unité ; la part des maisons individuelles passe de 47 \% en 2005 à 14 \% en 2025.}\label{fig:3:chantiers}
245+\figsource{Statistique Canada, tableau 34-10-0135-01 (SCHL), données trimestrielles non désaisonnalisées, consulté le 2026-10-31 ; Banque du Canada, série V39079 pour la période de resserrement ; calculs de l'auteur (analysis/python/figures/ch03\_mises\_chantier.py).}
246+\end{figure}
247+
248+L'effondrement de 2022-2023 illustre le canal du prix des actifs du modèle des quatre quadrants. Le \cref{tab:3:directeur} retrace la trajectoire du taux directeur de la Banque du Canada : abaissé à \pct{0.25} en mars 2020, il a été relevé dix fois entre mars 2022 et juillet 2023, de 475 points de base au total, jusqu'à \pct{5.00}, puis abaissé neuf fois entre juin 2024 et octobre 2025, jusqu'à \pct{2.25}, avant une première hausse de 25 points de base le 28 octobre 2026 qui l'a porté à \pct{2.50} \parencite{bdcvalet,bdc20261028}. La hausse des taux a relevé le taux de capitalisation exigé et le coût du financement des promoteurs, ce qui, dans le troisième quadrant, a réduit l'écart entre le prix et le coût de construction, lui-même en forte hausse, et donc la construction, alors même que la demande d'espace restait forte et que l'inoccupation tombait. Le rebond de 2024-2025 suit la détente monétaire avec le délai que le modèle prévoit. La composition des mises en chantier, au panneau B, montre une transformation structurelle qui se superpose au cycle : en 2005, \num{23930} maisons individuelles représentaient \pct{47.0} des \num{50910} logements mis en chantier ; en 2025, \num{8477} maisons individuelles n'en représentent plus que \pct{14.2}, et les logements collectifs, appartements, jumelés et maisons en rangée, en représentent \num{51387}, soit \pct{85.8}. Le \cref{tab:3:types} détaille cette évolution. Elle traduit la rareté croissante du terrain constructible dans les agglomérations, la réglementation favorisant la densification et l'évolution des coûts ; elle allonge aussi le délai moyen de livraison, puisque les appartements se construisent plus lentement que les maisons, ce qui, d'après la \cref{sec:3:cycles}, accroît l'amplitude potentielle des cycles.
249+
250+\begin{table}[htbp]
251+\caption{Logements mis en chantier au Québec par type d'unité, années choisies (toutes régions)}\label{tab:3:types}
252+\centering
253+\small
254+\begin{tabular}{lS[table-format=5.0]S[table-format=5.0]S[table-format=5.0]S[table-format=5.0]S[table-format=2.1]}
255+\toprule
256+Année & {Total} & {Maisons individuelles} & {Jumelés et en bande} & {Appartements et autres} & {Part des individuelles (\%)} \\
257+\midrule
258+1990 & 48070 & 24942 & 4830 & 18298 & 51.9 \\
259+2005 & 50910 & 23930 & 3752 & 23228 & 47.0 \\
260+2015 & 37926 & 9698 & 3895 & 24333 & 25.6 \\
261+2021 & 67810 & 14826 & 5105 & 47879 & 21.9 \\
262+2023 & 38912 & 8601 & 2342 & 27969 & 22.1 \\
263+2025 & 59864 & 8477 & 3716 & 47671 & 14.2 \\
264+\bottomrule
265+\end{tabular}
266+\tabsource{Statistique Canada, tableau 34-10-0135-01 (SCHL), sommes annuelles des données trimestrielles non désaisonnalisées, consulté le 2026-10-31 ; calculs de l'auteur (\texttt{mises\_en\_chantier\_annuelles}).}
267+\end{table}
268+
269+\begin{table}[htbp]
270+\caption{Trajectoire du taux cible du financement à un jour de la Banque du Canada, 2020-2026 (dates d'effet dans la série Valet, lendemain de l'annonce)}\label{tab:3:directeur}
271+\centering
272+\small
273+\begin{tabular}{llS[table-format=1.2]S[table-format=1.2]S[table-format=-3.0]}
274+\toprule
275+Phase & Dates & {Taux initial (\%)} & {Taux final (\%)} & {Variation (pb)} \\
276+\midrule
277+Détente pandémique (3 baisses) & 4 mars 2020 -- 27 mars 2020 & 1.75 & 0.25 & -150 \\
278+Resserrement (10 hausses) & 3 mars 2022 -- 13 juillet 2023 & 0.25 & 5.00 & 475 \\
279+Détente (9 baisses) & 6 juin 2024 -- 30 octobre 2025 & 5.00 & 2.25 & -275 \\
280+Première hausse du cycle suivant & 29 octobre 2026 & 2.25 & 2.50 & 25 \\
281+\bottomrule
282+\end{tabular}
283+\tabsource{Banque du Canada, série V39079 (API Valet), observations jusqu'au 2026-10-29, consultée le 2026-10-31 \parencite{bdcvalet,bdc20261028} ; calculs de l'auteur (\texttt{changements\_taux\_directeur}).}
284+\end{table}
285+
286+\begin{quebec}
287+L'inoccupation naturelle et l'ajustement des loyers de l'\cref{eq:3:loyer} se lisent dans l'Enquête sur les logements locatifs de la SCHL, menée chaque octobre dans les immeubles d'initiative privée de trois logements et plus. En octobre 2025, le taux d'inoccupation de la RMR de Québec était de \pct{2.4}, contre \pct{0.9} un an plus tôt, et celui de la RMR de Montréal de \pct{2.9}, contre \pct{2.1} ; le loyer moyen des logements de deux chambres avait progressé de \pct{6.1} à Québec et de \pct{7.2} à Montréal \parencite{schlLocatif2025}. Une inoccupation très inférieure à son niveau naturel, puis une hausse des loyers bien supérieure à l'inflation, puis une remontée de l'inoccupation à mesure que les livraisons de 2021-2022 arrivent sur le marché : c'est la séquence du panneau B de la \cref{fig:3:cycle}. Au Québec, toutefois, l'ajustement des loyers des logements occupés est encadré par les critères de fixation du Tribunal administratif du logement \parencite{talIndices2026}, de sorte que l'\cref{eq:3:loyer} décrit mieux les loyers des logements qui changent de locataire que ceux des baux reconduits ; le \cref{ch:34} analyse cette dualité et ses conséquences pour la valeur des immeubles.
288+\end{quebec}
289+
290+\section{Taux d'intérêt, coût d'usage et prix}\label{sec:3:coutusage}
291+
292+\subsection{L'arbitrage entre louer et posséder}
293+
294+Le marché des actifs du modèle des quatre quadrants capitalise le loyer à un taux $i$ sans dire d'où vient ce taux. Pour un logement occupé par son propriétaire, la relation entre le prix et le loyer d'un logement équivalent s'obtient par un raisonnement d'arbitrage que \textcite{poterba1984} a formalisé et que \textcite{himmelbergMayerSinai2005} ont popularisé comme instrument de diagnostic des marchés. Un ménage qui achète un logement de prix $P$ pour l'occuper pendant un an supporte le coût d'opportunité des fonds immobilisés, $iP$, qu'il s'agisse d'intérêts hypothécaires versés ou de rendement auquel il renonce sur sa mise de fonds ; il paie les taxes foncières, $\tau P$ ; il supporte l'entretien, la dépréciation et le risque de détenir un actif peu liquide, $\delta P$ ; et il bénéficie de la plus-value attendue, $gP$. Le \motcle{coût d'usage} annuel de la propriété est donc
295+\begin{equation}\label{eq:3:cout-usage}
296+u = P\,(i + \tau + \delta - g),
297+\end{equation}
298+et le ménage est indifférent entre louer et posséder lorsque ce coût égale le loyer $R$ d'un logement équivalent. À l'équilibre, il en résulte un ratio prix/loyer qui ne dépend que des taux,
299+\begin{equation}\label{eq:3:prix-loyer}
300+\frac{P}{R} = \frac{1}{i + \tau + \delta - g}.
301+\end{equation}
302+L'\cref{eq:3:prix-loyer} est l'\cref{eq:3:actifs} du marché des actifs, le taux de capitalisation $i$ de DiPasquale et Wheaton étant remplacé par le taux de coût d'usage $i + \tau + \delta - g$ ; elle reprend la formule introduite à la \cref{sec:1:actif} et lui donne un contenu empirique. Au Canada, contrairement aux États-Unis qu'étudie Poterba, les intérêts hypothécaires d'une résidence principale ne sont pas déductibles du revenu imposable, mais le gain en capital sur la résidence principale est exonéré ; le terme $i$ est donc un taux avant impôt, et le terme $g$ un gain net d'impôt, ce qui simplifie la formule par rapport à sa version américaine.
303+
304+\subsection{La sensibilité des prix aux taux}
305+
306+La conséquence la plus importante de l'\cref{eq:3:prix-loyer} pour l'évaluation tient à la petitesse du dénominateur. Si l'on différencie le logarithme du ratio prix/loyer par rapport au taux d'intérêt, à loyer donné,
307+\begin{equation}\label{eq:3:semi-elasticite}
308+\frac{\partial \ln (P/R)}{\partial i} = -\frac{1}{i + \tau + \delta - g},
309+\end{equation}
310+ce qui signifie qu'une hausse d'un point de pourcentage du taux réduit le prix d'équilibre d'un pourcentage égal à l'inverse du taux de coût d'usage. Lorsque ce taux est de \pct{8}, une hausse de 100 points de base fait baisser le prix d'environ \pct{12} ; lorsqu'il est de \pct{4}, la même hausse le fait baisser d'environ \pct{25}. \textcite{himmelbergMayerSinai2005} ont tiré de ce résultat une mise en garde : les marchés où le coût d'usage est bas, parce que les taux sont bas ou les anticipations de plus-value élevées, sont ceux où le prix est le plus sensible aux variations de taux, et un ratio prix/loyer élevé n'y est pas en soi le signe d'une bulle, mais le signe d'une exposition. Le \cref{ch:40} reprendra cette idée pour construire des tests de résistance.
311+
312+La variable la plus délicate de la formule est $g$, la plus-value anticipée. Si les ménages anticipent la poursuite de la hausse récente des prix, $g$ est élevé, le coût d'usage est bas et le prix d'équilibre est élevé : les anticipations extrapolatives sont autoréalisatrices à court terme, ce qui est la mécanique des bulles que décrivent \textcite{caseShiller2003} et \textcite{shiller2015}. Si les ménages anticipent une appréciation égale à l'inflation générale, ce qui est l'hypothèse la plus prudente et celle qui s'accorde avec la perspective historique de \textcite{knollSchularickSteger2017} sur le très long terme, $g$ est stable et le ratio prix/loyer varie surtout avec le taux d'intérêt réel. La \cref{fig:3:coutusage} applique ces deux hypothèses aux données québécoises.
313+
314+\subsection{Le coût d'usage au Québec, 2001-2026}
315+
316+La \cref{fig:3:coutusage} et le \cref{tab:3:coutusage} reconstituent mensuellement le taux de coût d'usage et le ratio prix/loyer qu'il implique, à partir de séries réelles : le taux hypothécaire affiché pour un terme de cinq ans par les banques à charte, série V80691335 de la Banque du Canada ; l'inflation sur douze mois de l'indice des prix à la consommation du Québec, tableau 18-10-0004-01 ; la croissance annualisée sur cinq ans de l'indice des prix des logements neufs du Québec, tableau 18-10-0205-01 \parencite{bdcvalet,statcanipc,statcanipln}. Les deux paramètres fiscaux et techniques sont fixés et déclarés : $\tau = \pct{0.825}$, somme du taux de la taxe foncière générale de la Ville de Québec pour les immeubles de un à cinq logements en 2026 (\num{0.7464} \$ par 100 \$) et de la taxe scolaire 2026-2027 (\num{0.07899} \$ par 100 \$), et $\delta = \pct{2.5}$ pour l'entretien, la dépréciation et la prime de risque, hypothèse pédagogique sans source empirique directe. Le taux affiché surestime le taux effectivement payé ; en août 2026, le taux effectif des fonds avancés pour un terme fixe de cinq ans et plus était de \pct{4.12} pour les prêts assurés et de \pct{4.58} pour les prêts non assurés, contre un taux affiché de \pct{6.19} \parencite{bdctauxhypothecaires2026}. La série du taux affiché a toutefois l'avantage de remonter à 2000 et d'être homogène ; le niveau du coût d'usage doit donc se lire comme une borne supérieure, et c'est sa variation dans le temps qui est instructive.
317+
318+\begin{figure}[htbp]
319+\centering
320+\includegraphics[width=\textwidth]{ch03/ch03-fig-cout-usage.pdf}
321+\caption{Coût d'usage du logement au Québec, janvier 2001 à septembre 2026. A : taux hypothécaire affiché 5 ans, rendement de l'obligation du Canada 5 ans, taux directeur et inflation de l'IPC du Québec sur douze mois. B : taux de coût d'usage $u = i + \tau + \delta - g$ sous deux hypothèses d'anticipation, $g$ égal à l'inflation courante ou à la croissance de l'IPLN sur cinq ans. C : ratio prix/loyer implicite $1/u$ (la courbe IPLN est tronquée à 40 en 2021-2022, lorsque $u$ approche de zéro). La zone grisée marque le resserrement monétaire de 2022-2023.}\label{fig:3:coutusage}
322+\figsource{Banque du Canada, API Valet, séries V80691335, BD.CDN.5YR.DQ.YLD et V39079, observations au 2026-10-29 ; Statistique Canada, tableaux 18-10-0004-01 et 18-10-0205-01, septembre 2026 ; consultés le 2026-10-31 ; paramètres $\tau$ = 0,825 \% et $\delta$ = 2,5 \% déclarés ; calculs de l'auteur (analysis/python/figures/ch03\_cout\_usage.py).}
323+\end{figure}
324+
325+\begin{table}[htbp]
326+\caption{Taux de coût d'usage et ratio prix/loyer implicite au Québec à six dates (taux hypothécaire affiché 5 ans ; $\tau$ = 0,825 \%, $\delta$ = 2,5 \%)}\label{tab:3:coutusage}
327+\centering
328+\small
329+\begin{tabular}{lS[table-format=1.2]S[table-format=1.2]S[table-format=1.2]S[table-format=1.2]S[table-format=1.2]S[table-format=2.1]S[table-format=1.2]S[table-format=2.1]}
330+\toprule
331+ & & & & & \multicolumn{2}{c}{$g$ = inflation IPC} & \multicolumn{2}{c}{$g$ = IPLN 5 ans} \\
332+\cmidrule(lr){6-7}\cmidrule(lr){8-9}
333+Mois & {Taux hyp. (\%)} & {Oblig. 5 ans (\%)} & {Inflation (\%)} & {IPLN 5 ans (\%)} & {$u$ (\%)} & {$P/R$} & {$u$ (\%)} & {$P/R$} \\
334+\midrule
335+Janvier 2001 & 7.79 & 5.22 & 2.76 & 1.63 & 8.35 & 12.0 & 9.49 & 10.5 \\
336+Janvier 2008 & 7.49 & 3.55 & 2.02 & 4.98 & 8.79 & 11.4 & 5.84 & 17.1 \\
337+Janvier 2012 & 5.29 & 1.31 & 2.84 & 3.42 & 5.78 & 17.3 & 5.19 & 19.3 \\
338+Juillet 2020 & 4.94 & 0.35 & 0.30 & 2.35 & 7.96 & 12.6 & 5.91 & 16.9 \\
339+Octobre 2023 & 7.04 & 4.23 & 4.16 & 6.58 & 6.21 & 16.1 & 3.79 & 26.4 \\
340+Septembre 2026 & 6.09 & 3.57 & 3.14 & 2.39 & 6.28 & 15.9 & 7.03 & 14.2 \\
341+\bottomrule
342+\end{tabular}
343+\tabsource{Banque du Canada (Valet : V80691335, BD.CDN.5YR.DQ.YLD, moyennes mensuelles) et Statistique Canada (18-10-0004-01, Québec, ensemble ; 18-10-0205-01, Québec, total maison et terrain), consultés le 2026-10-31 ; calculs de l'auteur (\texttt{serie\_cout\_usage}).}
344+\end{table}
345+
346+Trois lectures se dégagent. D'abord, sous l'hypothèse prudente d'une appréciation égale à l'inflation, le ratio prix/loyer d'équilibre est passé d'environ 12 au début des années 2000 à plus de 17 au début des années 2010, lorsque les taux hypothécaires ont baissé de près de deux points et demi ; cette hausse de près de la moitié du multiple est, à elle seule, une part importante de la hausse des prix relativement aux loyers observée durant la décennie. Ensuite, l'hypothèse extrapolative produit des résultats instables : en octobre 2023, la croissance de l'IPLN sur cinq ans, de \pct{6.58} par an, abaissait le coût d'usage à \pct{3.79} et portait le multiple implicite à 26, et la courbe B de la \cref{fig:3:coutusage} frôle zéro en 2021-2022, ce qui signifie que des ménages anticipant la poursuite des hausses passées pouvaient justifier à peu près n'importe quel prix. C'est exactement le mécanisme que \textcite{caseShiller2003} identifient comme le cœur d'une bulle : non pas un prix élevé, mais un prix soutenu par l'anticipation de sa propre hausse. Enfin, le resserrement de 2022-2023 a relevé le coût d'usage sous l'hypothèse IPC de près de deux points en dix-huit mois, ce qui correspond, par l'\cref{eq:3:semi-elasticite}, à une baisse du prix d'équilibre de l'ordre d'un quart à loyer constant ; les prix québécois n'ont pas baissé d'autant, parce que les loyers ont fortement monté au même moment, que le taux effectif a moins augmenté que le taux affiché et que le stock, on l'a vu, ne s'est pas accru. Le coût d'usage n'est pas un modèle de prévision des prix ; c'est un instrument pour décomposer un niveau de prix en ses composantes, taux, taxes, entretien et anticipations, et pour juger laquelle porte le niveau observé.
347+
348+\subsection{Exemple intégral : une unifamiliale de la région de Québec en octobre 2026}
349+
350+\begin{exemple}{Coût d'usage et ratio prix/loyer d'une unifamiliale au prix médian de la RMR de Québec}{3:coutusage}
351+Au troisième trimestre de 2026, le prix médian des unifamiliales vendues par courtier dans la RMR de Québec était de \dollars{463500} \parencite{apciqt32026}. On cherche le coût annuel qu'un ménage supporte en possédant une telle maison, et le ratio prix/loyer qu'implique ce coût, à la date du 31 octobre 2026. Les paramètres sont les suivants : taux hypothécaire affiché 5 ans de \pct{6.19} (Banque du Canada, semaine du 28 octobre 2026) ou taux effectif non assuré à terme fixe de cinq ans et plus de \pct{4.58} (août 2026) ; taxes $\tau = \pct{0.825}$ (Ville de Québec, 1 à 5 logements, et taxe scolaire) ; entretien, dépréciation et risque $\delta = \pct{2.5}$ (hypothèse) ; plus-value anticipée $g$ égale à l'inflation de l'IPC du Québec de \pct{3.1} (septembre 2026) ou à la variation annuelle de l'IPLN du Québec de \pct{1.3} (septembre 2026). Tous les chiffres sont calculés par la fonction \texttt{exemple\_cout\_usage} du script du chapitre.
352+
353+\emph{Étape 1 — Taux de coût d'usage.} Avec le taux affiché et l'anticipation IPC, $u = 6{,}19 + 0{,}825 + 2{,}5 - 3{,}1 = \pct{6.415}$. Avec le taux effectif, $u = 4{,}58 + 0{,}825 + 2{,}5 - 3{,}1 = \pct{4.805}$. Avec le taux effectif et l'anticipation IPLN, $u = \pct{6.605}$.
354+
355+\emph{Étape 2 — Coût annuel et mensuel.} Au taux affiché, le coût d'usage de la maison médiane est de $\num{463500} \times 0{,}06415 = \dollars{29735}$ par an, soit \dollars{2478} par mois. Au taux effectif, il tombe à \dollars{22273} par an, soit \dollars{1856} par mois ; avec l'anticipation IPLN, il remonte à \dollars{2551} par mois. L'écart entre le taux affiché et le taux effectif vaut à lui seul plus de \dollars{600} par mois, ce qui rappelle que le taux pertinent pour l'arbitrage est celui que le ménage paie réellement, non celui qui est affiché.
356+
357+\emph{Étape 3 — Ratio prix/loyer implicite.} Par l'\cref{eq:3:prix-loyer}, le multiple d'équilibre est de $1/0{,}06415 = 15{,}6$ fois le loyer annuel au taux affiché, de $20{,}8$ au taux effectif avec anticipation IPC et de $15{,}1$ au taux effectif avec anticipation IPLN. Le loyer mensuel d'équilibre qui rendrait un ménage indifférent entre louer et acheter la maison médiane est donc compris entre \dollars{1856} et \dollars{2551} selon les hypothèses. À titre de repère, le loyer moyen d'un appartement de trois chambres et plus dans la RMR de Québec était de \dollars{1475} en octobre 2025 \parencite{schlLocatif2025} ; un tel appartement n'est pas un substitut d'une maison médiane, et la comparaison n'indique qu'un ordre de grandeur. Lue dans l'autre sens, l'\cref{eq:3:prix-loyer} dit qu'un loyer de \dollars{1475} par mois, capitalisé au taux de coût d'usage effectif de \pct{4.805}, justifie un prix de $1\,475 \times 12 / 0{,}04805 = \dollars{368336}$.
358+
359+\emph{Étape 4 — Sensibilité au taux.} Si le taux effectif passait de \pct{4.58} à \pct{5.58}, le multiple d'équilibre tomberait de $20{,}8$ à $17{,}2$, une baisse de \pct{17.2} à loyer constant ; la semi-élasticité de l'\cref{eq:3:semi-elasticite} vaut $-1/0{,}04805 = -20{,}8$, c'est-à-dire qu'une hausse de 10 points de base réduit le prix d'équilibre d'environ \pct{2.1}. Le \cref{tab:3:sens-taux} étend ce calcul à une grille de taux et d'anticipations.
360+\end{exemple}
361+
362+\begin{table}[htbp]
363+\caption{Sensibilité du ratio prix/loyer implicite au taux d'intérêt et à la plus-value anticipée ($\tau$ = 0,825 \%, $\delta$ = 2,5 \%)}\label{tab:3:sens-taux}
364+\centering
365+\small
366+\begin{tabular}{S[table-format=1.2]S[table-format=2.1]S[table-format=2.1]S[table-format=2.1]S[table-format=2.1]}
367+\toprule
368+ & \multicolumn{4}{c}{Plus-value anticipée $g$} \\
369+\cmidrule(lr){2-5}
370+{Taux $i$ (\%)} & {1,3 \%} & {2,0 \%} & {3,1 \%} & {4,0 \%} \\
371+\midrule
372+3.58 & 17.7 & 20.4 & 26.1 & 34.4 \\
373+4.58 & 15.1 & 17.0 & 20.8 & 25.3 \\
374+5.58 & 13.2 & 14.7 & 17.2 & 20.1 \\
375+6.19 & 12.2 & 13.4 & 15.6 & 17.9 \\
376+7.19 & 10.8 & 11.8 & 13.5 & 15.2 \\
377+\bottomrule
378+\end{tabular}
379+\tabsource{calculs de l'auteur, fonction \texttt{ratio\_prix\_loyer} du script \texttt{analysis/python/cases/ch03\_cycles.py} ; 3,58 \% = rendement de l'obligation du Canada 5 ans au 2026-10-29, 4,58 \% = taux effectif non assuré 5 ans et plus (août 2026), 6,19 \% = taux affiché 5 ans (2026-10-28).}
380+\end{table}
381+
382+Le \cref{tab:3:sens-taux} montre que le multiple d'équilibre varie du simple au triple sur une plage de taux et d'anticipations que le Québec a effectivement parcourue en cinq ans. Ce résultat a une portée directe sur la pratique : une évaluation par comparaison qui retient des ventes conclues à un taux de financement très différent de celui de la date d'évaluation doit corriger les conditions du marché, et l'ajustement n'est pas une simple tendance des prix, c'est une variation de la relation entre le prix et le loyer. Le \cref{ch:17} en traite l'exécution, le \cref{ch:31} les conditions de financement, en particulier le taux admissible minimal qui, en imposant aux emprunteurs une qualification à un taux supérieur au taux contractuel, atténue la transmission des baisses de taux aux prix.
383+
384+\section{Indicateurs d'alerte}\label{sec:3:indicateurs}
385+
386+\subsection{Les indicateurs de tension}
387+
388+L'évaluateur doit qualifier, dans son rapport, les conditions du marché à la date d'évaluation. Les sections précédentes fournissent les grandeurs à surveiller ; les sources publiques québécoises les mesurent avec des définitions qu'il faut connaître. Le premier indicateur est le \motcle{nombre de mois d'inventaire}, rapport entre les inscriptions en vigueur à la fin d'une période et le rythme mensuel des ventes,
389+\begin{equation}\label{eq:3:inventaire}
390+\mathit{MI} = \frac{\text{inscriptions en vigueur}}{\text{ventes du trimestre}/3},
391+\end{equation}
392+qui mesure le temps nécessaire pour écouler le stock de propriétés à vendre au rythme courant. Il est d'usage, dans la pratique canadienne du courtage, de qualifier de favorable aux vendeurs un marché qui compte moins d'environ quatre mois d'inventaire, d'équilibré un marché qui en compte de quatre à six, et de favorable aux acheteurs un marché qui en compte plus de six ; ces seuils sont des conventions de métier, non des résultats établis, et ils varient selon le segment. Le second indicateur est le délai de vente médian, que l'APCIQ publie par catégorie de propriété. Le troisième est le ratio des ventes aux nouvelles inscriptions, qui mesure la vitesse à laquelle l'offre nouvelle de propriétés trouve preneur. Le \cref{tab:3:inventaire} calcule le nombre de mois d'inventaire au troisième trimestre de 2026 pour les sept marchés métropolitains du Québec à partir des chiffres de ventes et d'inscriptions publiés par l'APCIQ.
393+
394+\begin{table}[htbp]
395+\caption{Ventes, inscriptions en vigueur et mois d'inventaire, troisième trimestre de 2026, propriétés résidentielles vendues par courtier}\label{tab:3:inventaire}
396+\centering
397+\small
398+\begin{tabular}{lS[table-format=5.0]S[table-format=5.0]S[table-format=4.0]S[table-format=1.1]S[table-format=6.0]}
399+\toprule
400+Territoire & {Ventes T3} & {Inscriptions en vigueur} & {Ventes par mois} & {Mois d'inventaire} & {Médiane unifamiliale (\$)} \\
401+\midrule
402+Province de Québec & 20935 & 42408 & 6978 & 6.1 & 500000 \\
403+RMR de Montréal & 9265 & 20350 & 3088 & 6.6 & 645500 \\
404+RMR de Québec & 2161 & 2204 & 720 & 3.1 & 463500 \\
405+RMR de Gatineau & 1044 & 2256 & 348 & 6.5 & 480000 \\
406+RMR de Sherbrooke & 569 & 825 & 190 & 4.3 & 490750 \\
407+RMR de Trois-Rivières & 372 & 447 & 124 & 3.6 & 395000 \\
408+RMR de Saguenay & 371 & 498 & 124 & 4.0 & 365500 \\
409+\bottomrule
410+\end{tabular}
411+\tabsource{ventes, inscriptions et médianes : APCIQ par le système Centris, communiqué du 14 octobre 2026 et baromètres FSMI du troisième trimestre de 2026 \parencite{apciqt32026} ; mois d'inventaire : calculs de l'auteur (\texttt{indicateurs\_apciq}), inscriptions en vigueur rapportées aux ventes mensuelles moyennes du trimestre.}
412+\end{table}
413+
414+Le tableau révèle une province à deux vitesses. La RMR de Québec, avec 3,1 mois d'inventaire, et celles de Trois-Rivières et de Saguenay, avec 3,6 et 4,0 mois, demeurent des marchés tendus où l'offre de propriétés à vendre est insuffisante ; l'APCIQ y notait en septembre 2026 que l'offre restait de moitié inférieure à sa moyenne historique malgré une hausse de \pct{35} des inscriptions \parencite{apciqsept2026}. Les RMR de Montréal et de Gatineau, avec 6,6 et 6,5 mois, sont passées dans la zone favorable aux acheteurs, après quatorze mois consécutifs de hausse de l'offre à Montréal ; la hausse de \pct{42} des inscriptions à Gatineau sur un an et la baisse de \pct{3} du prix médian des unifamiliales y signalent un retournement que les comparables du cas 1 du \cref{ch:16} devront refléter. Les indicateurs de tension ne mesurent pas la valeur, mais ils déterminent la direction et la vitesse de l'ajustement des prix dans les mois qui suivent la date d'évaluation, et donc le sens de l'ajustement de conditions du marché à appliquer aux ventes antérieures.
415+
416+\subsection{Les indicateurs de valorisation}
417+
418+Les indicateurs de tension décrivent le marché des transactions ; les indicateurs de \motcle{valorisation} comparent le niveau des prix à ses fondamentaux. Le ratio prix/loyer, examiné à la \cref{sec:3:coutusage}, compare le prix au service rendu ; sa déviation par rapport au multiple d'équilibre $1/(i + \tau + \delta - g)$ mesure l'écart entre le prix et le coût d'usage. Le ratio prix/revenu compare le prix médian des logements au revenu médian des ménages ; il mesure l'accessibilité plutôt que la valeur, et il peut rester durablement élevé lorsque les taux sont bas sans qu'il y ait surévaluation, ce qui est l'avertissement de \textcite{himmelbergMayerSinai2005}. Le ratio du prix au coût de remplacement, enfin, mesure l'incitation à construire du troisième quadrant : un prix durablement supérieur au coût de remplacement dans un marché où l'offre peut répondre annonce une vague de construction ; un prix inférieur au coût annonce l'arrêt des chantiers, comme en 2023.
419+
420+\begin{definition}{Bulle immobilière}{3:bulle}
421+Selon \textcite{caseShiller2003}, une \emph{bulle} est une situation où les prix sont soutenus principalement par l'anticipation de hausses futures plutôt que par les fondamentaux, de sorte que des ménages achètent à un prix qu'ils jugeraient excessif s'ils n'attendaient pas de plus-value. Dans l'\cref{eq:3:prix-loyer}, elle correspond à un terme $g$ anticipé supérieur à la croissance que les loyers et les revenus peuvent justifier. Son diagnostic exige des données sur les anticipations, non seulement sur les prix.
422+\end{definition}
423+
424+Le diagnostic d'une bulle n'appartient pas à l'évaluateur, dont la mission est d'estimer le prix le plus probable à la date d'évaluation, quel que soit le jugement que l'on porte sur ce prix. Mais la connaissance du cycle entre dans son rapport de deux manières. D'une part, la définition de la valeur marchande suppose une exposition raisonnable au marché et des parties informées ; lorsque le marché est en retournement rapide, le délai d'exposition s'allonge et la fourchette de prix probables s'élargit, ce que le \cref{ch:20} traduit en incertitude déclarée. D'autre part, les normes de pratique exigent que le rapport décrive les conditions du marché et les tendances pertinentes à la date d'évaluation \parencite{oeaqNormes} ; les indicateurs de ce chapitre, cités avec leur source et leur date, en sont la matière.
425+
426+\begin{quebec}
427+Les séries publiques nécessaires au suivi du cycle au Québec sont, pour les transactions, les statistiques Centris de l'APCIQ (ventes, inscriptions, prix médians, délais de vente, par RMR, par secteur et par catégorie ; diffusion mensuelle et trimestrielle, attribution obligatoire et reproduction des tableaux soumise à autorisation) et les rapports mensuels de JLR fondés sur les actes publiés au Registre foncier \parencite{jlr202609} ; pour les prix, l'indice Teranet--Banque Nationale, construit par la méthode des ventes répétées pour les RMR de Montréal et de Québec \parencite{teranet202609}, dont le \cref{ch:35} examine la méthode, et l'indice des prix des logements neufs de Statistique Canada ; pour le locatif, l'Enquête sur les logements locatifs de la SCHL d'octobre et ses perspectives \parencite{schlLocatif2025,schlpmh2026ete} ; pour la construction, les tableaux 34-10-0135-01 et 34-10-0143-01 de Statistique Canada, qui diffusent les relevés de la SCHL ; pour les taux, l'API Valet de la Banque du Canada, dont le calendrier des huit annonces annuelles est publié d'avance \parencite{bdccalendrier2026}. L'évaluateur qui cite ces sources indique le tableau ou la série, la période et la date de consultation, comme le font les tableaux de ce chapitre.
428+\end{quebec}
429+
430+\begin{erreurs}
431+\begin{itemize}
432+\item Extrapoler le prix de court terme d'un choc de taux comme s'il était permanent : le modèle des quatre quadrants montre que la baisse des taux relève d'abord les prix, puis le stock, puis fait baisser les loyers, le prix revenant vers le coût de construction.
433+\item Confondre élasticité de la construction, réactivité du stock et élasticité de long terme : trois horizons, trois mesures, et des chiffres publiés qui ne sont comparables qu'à horizon égal.
434+\item Lire un ratio prix/loyer ou prix/revenu élevé comme la preuve d'une surévaluation sans le rapporter au coût d'usage : à taux bas, un multiple élevé est un multiple d'équilibre, mais il signale une forte sensibilité aux taux.
435+\item Utiliser le taux hypothécaire affiché comme taux de coût d'usage : l'écart avec le taux effectivement payé dépassait un point et demi en 2026 et change le multiple d'équilibre de plusieurs unités.
436+\item Appliquer une tendance de prix uniforme comme ajustement de conditions du marché lorsque le cycle a changé la relation entre prix et loyers ; l'ajustement doit refléter la variation du coût d'usage, non seulement celle des médianes.
437+\item Prendre une somme partielle pour un total annuel : les fichiers mensuels de Statistique Canada peuvent comporter des mois manquants, et le script du chapitre vérifie le nombre de périodes avant toute somme.
438+\end{itemize}
439+\end{erreurs}
440+
441+\begin{limites}
442+Les modèles de ce chapitre sont linéaires et agrégés. Le marché type est calibré sur des ordres de grandeur publics, mais son élasticité de la demande, son taux de retrait, sa pente d'offre, son taux d'inoccupation naturel et sa vitesse d'ajustement des loyers sont des hypothèses pédagogiques, non des estimations québécoises ; les amplitudes et les périodes du cycle simulé n'ont donc aucune valeur prédictive, et seules les relations qualitatives entre paramètres et cycle sont à retenir. Les anticipations y sont myopes ; des anticipations tournées vers l'avenir amortiraient les oscillations, comme l'a montré Wheaton. La décomposition du coût d'usage repose sur un taux affiché qui surestime le taux effectif, sur un paramètre $\delta$ de \pct{2.5} posé sans source empirique et sur un taux de taxe propre à la Ville de Québec ; les multiples implicites sont des bornes et des ordres de grandeur, non des cibles de prix. Les élasticités de l'offre estimées par Saiz pour les aires métropolitaines américaines n'ont pas été reproduites parce que l'article n'a pu être relu dans sa version intégrale au moment de la rédaction, et aucune estimation comparable n'existe, à notre connaissance, pour les régions métropolitaines du Québec. Les séries de logements en construction et d'achèvements du tableau 34-10-0135-01 s'arrêtent, pour le Québec, au quatrième trimestre de 2022, et la série mensuelle de la RMR de Montréal du tableau 34-10-0143-01 ne comporte pas les mois de juillet à septembre 2025 dans le fichier consulté ; le chapitre n'en cite donc aucun total annuel pour 2025. Les seuils de mois d'inventaire qui qualifient un marché de favorable aux vendeurs ou aux acheteurs sont des conventions de métier non normées.
443+\end{limites}
444+
445+\begin{synthese}
446+\begin{itemize}
447+\item Le logement est un stock que des flux modifient lentement : au Québec, les mises en chantier d'une année représentent environ \pct{1.6} du parc. À court terme, la demande fait le prix ; à long terme, le coût de l'offre nouvelle l'ancre.
448+\item Le modèle des quatre quadrants relie loyer, prix, construction et stock ; son équilibre stationnaire est $S^{*} = (a - bic_0)/(1 + bic_1\delta)$. Une baisse des taux relève d'abord les prix, puis le stock, et finit par faire baisser les loyers ; une hausse des coûts de construction relève les prix de tout le parc.
449+\item L'élasticité de l'offre dépend de la géographie, de la réglementation et des coûts ; les marchés inélastiques résolvent les chocs par les prix, les marchés élastiques par les quantités et la surconstruction.
450+\item Les cycles naissent de la combinaison d'une offre réactive et de délais de livraison : le stock oscille si $\kappa > (1-\delta)^{2}/4$, avec une période $2\pi/\arccos[(1-\delta)/(2\sqrt{\kappa})]$ ; l'inoccupation naturelle et l'ajustement graduel des loyers allongent le cycle.
451+\item Le coût d'usage $u = P(i + \tau + \delta - g)$ relie prix et loyer ; le multiple d'équilibre $1/(i+\tau+\delta-g)$ est d'autant plus sensible aux taux qu'il est élevé, et les anticipations extrapolatives de plus-value sont le ressort des bulles.
452+\item Les indicateurs publics québécois (mises en chantier, inoccupation, loyers, inventaire, taux, inflation) permettent de situer la date d'évaluation dans le cycle ; ils se citent avec tableau, série, période et date de consultation.
453+\end{itemize}
454+\end{synthese}
455+
456+\section*{Exercices}
457+\addcontentsline{toc}{section}{Exercices}
458+
459+\begin{exercice}[1]{Stock et flux au Québec}{ex:3:1}
460+Le Québec comptait \num{3749035} logements privés occupés au recensement de 2021 et \num{59864} logements y ont été mis en chantier en 2025. En supposant que toutes les unités mises en chantier sont achevées dans l'année et que le taux de retrait est de \pct{0.5} par an, calculez le flux brut et le flux net en pourcentage du stock, le nombre d'années nécessaire pour accroître le parc de \pct{10} à ce rythme, et le stock stationnaire que ce rythme de construction pourrait entretenir à long terme. Commentez la vraisemblance de ce dernier chiffre et ce qu'il révèle sur le rôle du taux de retrait.
461+\end{exercice}
462+
463+\begin{exercice}[1]{Mois d'inventaire}{ex:3:2}
464+À partir des ventes et des inscriptions en vigueur du \cref{tab:3:inventaire}, recalculez le nombre de mois d'inventaire des RMR de Québec, de Montréal et de Gatineau. Si les ventes de la RMR de Montréal reculaient de \pct{10} au trimestre suivant sans changement des inscriptions, que deviendrait l'indicateur ? Expliquez pourquoi il faut rapporter les inscriptions en vigueur, qui sont un stock, aux ventes mensuelles, qui sont un flux, et quelle convention sur le nombre de mois du trimestre vous avez adoptée.
465+\end{exercice}
466+
467+\begin{exercice}[2]{Équilibre des quatre quadrants}{ex:3:3}
468+Un marché est décrit par la demande $D = \num{150000} - 3{,}4722\,R$, un taux de capitalisation de \pct{5}, une offre de construction $C = (P - \num{240000})/48$ et un taux de retrait de \pct{1}. Calculez le stock, le loyer, le prix et la construction d'équilibre stationnaire à l'aide de l'\cref{eq:3:stock-equilibre}, puis vérifiez que les quatre relations sont satisfaites. Recalculez l'équilibre si le seuil de coût augmente de \pct{10} et interprétez la variation du prix d'équilibre en termes de transmission des coûts de construction aux prix du parc existant.
469+\end{exercice}
470+
471+\begin{exercice}[2]{Baisse des taux : court terme et long terme}{ex:3:4}
472+Dans le marché de l'\cref{ex:3:3}, le taux de capitalisation passe de 5 à \pct{4}. Calculez le prix et la construction de court terme, le stock étant fixe, puis le stock, le loyer, le prix et la construction d'équilibre de long terme. Expliquez pourquoi le loyer de long terme est inférieur au loyer initial et ce que cela implique pour un investisseur qui achèterait un immeuble locatif au prix de court terme en supposant les loyers stables.
473+\end{exercice}
474+
475+\begin{exercice}[2]{Coût d'usage d'une unifamiliale montréalaise}{ex:3:5}
476+Le prix médian des unifamiliales de la RMR de Montréal était de \dollars{645500} au troisième trimestre de 2026. Avec un taux effectif de \pct{4.58}, un taux de taxe foncière et scolaire combiné de \pct{0.9} (hypothèse de l'exercice), un terme $\delta$ de \pct{2.5} et une plus-value anticipée de \pct{3.1}, calculez le taux de coût d'usage, le coût mensuel d'occupation et le ratio prix/loyer implicite. Refaites le calcul avec une plus-value anticipée de \pct{1.3}, puis avec un taux de \pct{5.58} et $g = \pct{3.1}$. Comparez le coût mensuel au loyer moyen des appartements de trois chambres et plus de la RMR de Montréal en octobre 2025, \dollars{1626}, et discutez les limites de cette comparaison. Quel prix ce loyer justifierait-il au taux de coût d'usage initial ?
477+\end{exercice}
478+
479+\begin{exercice}[3]{Simulation : délais et réactivité}{ex:3:6}
480+À l'aide du script \texttt{analysis/python/cases/ch03\_cycles.py}, simulez le marché type avec un délai de livraison de douze trimestres et une réactivité $\kappa = 0{,}24$ (pente d'offre doublée), puis avec un délai de deux trimestres et $\kappa = 0{,}48$. Pour chaque variante, relevez la pointe et le creux du loyer, l'inoccupation maximale, la période et l'amortissement du cycle, et comparez-les à la simulation de référence. Rédigez une note de 150 mots expliquant pourquoi la construction de tours d'habitation, dont les délais sont longs, tend à produire des cycles plus amples que celle de maisons individuelles dans un marché à offre réactive.
481+\end{exercice}
482+
483+\begin{exercice}[3]{Condition d'oscillation}{ex:3:7}
484+Démontrez la \cref{prop:3:oscillation} pour $L = 1$ à partir de l'\cref{eq:3:dynamique}. Pour le marché type ($\delta = 0{,}01$), calculez le seuil d'oscillation, puis le module et la période des oscillations pour $\kappa = 0{,}48$ et pour $\kappa = 0{,}30$. Déterminez la pente d'offre $c_1$ en deçà de laquelle le marché devient instable ($\kappa > 1$) et celle en deçà de laquelle il commence à osciller, sachant que $\kappa = 1/(b\,i\,c_1)$ avec $b = 3{,}4722$ et $i = 0{,}05$. Interprétez ces seuils : quelle politique d'offre réduit l'amplitude des cycles sans sacrifier l'élasticité de long terme ?
485+\end{exercice}
486+
487+\section*{Pour aller plus loin}
488+\addcontentsline{toc}{section}{Pour aller plus loin}
489+
490+Le cadre de ce chapitre est celui de \textcite{dipasqualeWheaton1992}, dont l'article fondateur présente les quatre quadrants et leur statique comparative, et du manuel \textcite{dipasqualeWheaton1996}, qui en développe les applications au logement, aux bureaux et à la dynamique des loyers et de l'inoccupation. \textcite{wheaton1999} est la référence sur l'origine des cycles dans les délais et l'élasticité de l'offre, et sur le rôle des anticipations ; \textcite{sivitanidesTortoWheaton2003} et \textcite{chervachidzeWheaton2013} prolongent l'analyse au cycle des taux de capitalisation. Sur l'offre, \textcite{saiz2010} établit le lien entre géographie, réglementation et élasticité, \textcite{glaeserGyourkoSaiz2008} en tirent les conséquences pour l'amplitude et la durée des bulles, et \textcite{glaeserGyourko2005} expliquent l'asymétrie des cycles par la durabilité du logement ; la théorie du prix des terrains sous incertitude de \textcite{titman1985} et le modèle de croissance urbaine de \textcite{capozzaHelsley1989} relient l'option de construire au cycle, et \textcite{durantonPuga2015} offrent une synthèse de l'usage du sol urbain. Sur le coût d'usage et le diagnostic des marchés, on lira \textcite{poterba1984}, \textcite{himmelbergMayerSinai2005} et \textcite{caseShiller2003}, puis \textcite{shiller2015} pour la dimension psychologique des bulles ; \textcite{knollSchularickSteger2017} et \textcite{davisHeathcote2007} situent le rôle du terrain dans la hausse séculaire et la volatilité des prix. Le manuel de \textcite{geltnerMillerClaytonEichholtz2014} présente l'ensemble de ces thèmes dans une perspective d'investissement, et \textcite{appraisal2026} les traduit en exigences d'analyse de marché pour le rapport d'évaluation.
modified manuscript/chapters/ch06.tex +4 −4
@@ -183,7 +183,7 @@ Posons $v = (1+r)^{-1}$, $V_t = V(1+g)^t$ et $L_t = L(1+g)^{t-1} = (r-g)V_{t-1}$
183 somme télescopique dont il ne reste que le premier terme, $v^0\,{}_0p_x\,V_0 = V$, puisque ${}_{\omega-x}p_x = 0$. Donc $U_x + N\!P_x^{\text{direct}} = V$, et $N\!P_x^{\text{direct}} = V - U_x$. 183 somme télescopique dont il ne reste que le premier terme, $v^0\,{}_0p_x\,V_0 = V$, puisque ${}_{\omega-x}p_x = 0$. Donc $U_x + N\!P_x^{\text{direct}} = V$, et $N\!P_x^{\text{direct}} = V - U_x$.
184 \end{proof} 184 \end{proof}
185 185
186−La proposition a une portée pratique : elle fournit un contrôle interne du calcul, que le script du chapitre et ses tests appliquent, et elle rappelle que toute hypothèse qui rompt l'identité, par exemple des taux d'actualisation différents pour l'usufruitier et le nu-propriétaire, produit une somme des deux droits différente de la pleine propriété, ce qui n'est pas une erreur mais une information sur les frictions du marché des droits démembrés. Une approximation courante consiste à remplacer la durée aléatoire par un terme fixe égal à l'espérance de vie de l'usufruitier, $e_x$, et à appliquer les \cref{eq:6:usufruit-terme,eq:6:np-terme}. Parce que le facteur d'actualisation est une fonction convexe de la durée, l'inégalité de Jensen implique que l'annuité espérée est inférieure à l'annuité calculée sur la durée espérée : l'approximation surestime l'usufruit et sous-estime la nue-propriété, d'un montant qui dépend de la dispersion de la durée de vie restante et du taux. La \cref{sec:6:exemple} chiffre cet écart ; il est modeste aux taux usuels, mais il n'est pas nul et il est systématique. 186+La proposition a une portée pratique : elle fournit un contrôle interne du calcul, que le script du chapitre et ses tests appliquent, et elle rappelle que toute hypothèse qui rompt l'identité, par exemple des taux d'actualisation différents pour l'usufruitier et le nu-propriétaire, produit une somme des deux droits différente de la pleine propriété, ce qui n'est pas une erreur mais une information sur les frictions du marché des droits démembrés. Une approximation courante consiste à remplacer la durée aléatoire par un terme fixe égal à la durée espérée du droit, c'est-à-dire l'espérance de vie de l'usufruitier $e_x$ augmentée d'une demi-année sous la convention de décompte annuel retenue ici, et à appliquer les \cref{eq:6:usufruit-terme,eq:6:np-terme}. Parce que le facteur d'actualisation est une fonction convexe de la durée, l'inégalité de Jensen implique que l'annuité espérée est inférieure à l'annuité calculée sur la durée espérée : l'approximation surestime l'usufruit et sous-estime la nue-propriété, d'un montant qui dépend de la dispersion de la durée de vie restante et du taux. La \cref{sec:6:exemple} chiffre cet écart ; il est modeste aux taux usuels, mais il n'est pas nul et il est systématique.
187 187
188 \begin{pratique} 188 \begin{pratique}
189 La table de mortalité est une hypothèse de l'évaluation au même titre que le taux d'actualisation, et le rapport doit la nommer. Pour une évaluation réelle, l'évaluateur utilise une table publiée et datée, en précisant le sexe et la période ; les tables complètes de mortalité de Statistique Canada, dont la version diffusée le 13 janvier 2026 couvre le Canada et les provinces, en sont la source publique de référence, et les tables prescrites par l'administration fiscale ou par l'Institut canadien des actuaires s'imposent selon la fin de l'évaluation. L'exemple de ce chapitre emploie une table \emph{synthétique} à seule fin pédagogique ; ses valeurs ne doivent pas être réutilisées dans un rapport. L'âge de l'usufruitier à la date d'évaluation, son sexe et son état de santé connu sont des faits à documenter, et l'usufruit constitué au profit de deux personnes conjointement, qui dure jusqu'au dernier décès, exige une table de survie conjointe. 189 La table de mortalité est une hypothèse de l'évaluation au même titre que le taux d'actualisation, et le rapport doit la nommer. Pour une évaluation réelle, l'évaluateur utilise une table publiée et datée, en précisant le sexe et la période ; les tables complètes de mortalité de Statistique Canada, dont la version diffusée le 13 janvier 2026 couvre le Canada et les provinces, en sont la source publique de référence, et les tables prescrites par l'administration fiscale ou par l'Institut canadien des actuaires s'imposent selon la fin de l'évaluation. L'exemple de ce chapitre emploie une table \emph{synthétique} à seule fin pédagogique ; ses valeurs ne doivent pas être réutilisées dans un rapport. L'âge de l'usufruitier à la date d'évaluation, son sexe et son état de santé connu sont des faits à documenter, et l'usufruit constitué au profit de deux personnes conjointement, qui dure jusqu'au dernier décès, exige une table de survie conjointe.
@@ -369,7 +369,7 @@ L'exemple repose sur deux dossiers synthétiques de l'ouvrage et sur une table d
369 \begin{exemple}{Usufruit viager sur la maison du cas 1 et emphytéose sur l'immeuble du cas 3}{demembrements} 369 \begin{exemple}{Usufruit viager sur la maison du cas 1 et emphytéose sur l'immeuble du cas 3}{demembrements}
370 \emph{Première partie : l'usufruit.} La propriétaire de la maison du cas 1, âgée de 65 ans, souhaite transmettre la nue-propriété à ses enfants en conservant l'usufruit viager (art.~1120, 1123). La valeur de la pleine propriété est $V = \dollars{638000}$. Avec $r = 5$ \% et $g = 1{,}5$ \%, la valeur locative nette cohérente avec $V$ est $L = (r-g)V = \dollars{22330}$ par année, soit environ \dollars{1861} par mois nets des charges incombant à l'usufruitière, un ordre de grandeur plausible pour une maison de cette valeur mais qui reste une hypothèse du modèle. 370 \emph{Première partie : l'usufruit.} La propriétaire de la maison du cas 1, âgée de 65 ans, souhaite transmettre la nue-propriété à ses enfants en conservant l'usufruit viager (art.~1120, 1123). La valeur de la pleine propriété est $V = \dollars{638000}$. Avec $r = 5$ \% et $g = 1{,}5$ \%, la valeur locative nette cohérente avec $V$ est $L = (r-g)V = \dollars{22330}$ par année, soit environ \dollars{1861} par mois nets des charges incombant à l'usufruitière, un ordre de grandeur plausible pour une maison de cette valeur mais qui reste une hypothèse du modèle.
371 371
372−À titre de repère, un usufruit à terme fixe (\cref{eq:6:usufruit-terme,eq:6:np-terme}) vaudrait \dollars{183443} pour dix ans, \dollars{314141} pour vingt ans et \dollars{407260} pour trente ans, laissant à la nue-propriété respectivement 71,2 \%, 50,8 \% et 36,2 \% de la pleine propriété. La table synthétique donne à 65 ans une espérance de vie de 17,9 ans, une probabilité de survie à dix ans de 0,789 et à vingt ans de 0,424. L'\cref{eq:6:usufruit-viager} donne $U_{65} = \dollars{280357}$, soit une annuité viagère de 12,555 fois le fruit annuel, et la nue-propriété vaut $N\!P_{65} = \dollars{357643}$, soit 56,1 \% de la pleine propriété ; le calcul direct par l'\cref{eq:6:np-viager} donne le même montant, conformément à la \cref{prop:partage}. Si l'on avait remplacé la durée aléatoire par un terme fixe de dix-huit ans égal à l'espérance de vie arrondie, la nue-propriété aurait été estimée à 54,3 \%, soit environ \dollars{11000} de moins : l'approximation sous-estime la nue-propriété, comme l'inégalité de Jensen l'annonçait, d'un montant modeste mais systématique. La rente viagère constante de même valeur que l'usufruit, celle que fixerait un tribunal appliquant l'article 1171 à nos hypothèses, serait de \dollars{25335} par an, supérieure au fruit de première année parce qu'elle remplace un flux croissant par un flux constant. 372+À titre de repère, un usufruit à terme fixe (\cref{eq:6:usufruit-terme,eq:6:np-terme}) vaudrait \dollars{183443} pour dix ans, \dollars{314141} pour vingt ans et \dollars{407260} pour trente ans, laissant à la nue-propriété respectivement 71,2 \%, 50,8 \% et 36,2 \% de la pleine propriété. La table synthétique donne à 65 ans une espérance de vie de 17,9 ans, une probabilité de survie à dix ans de 0,789 et à vingt ans de 0,424. L'\cref{eq:6:usufruit-viager} donne $U_{65} = \dollars{280357}$, soit une annuité viagère de 12,555 fois le fruit annuel, et la nue-propriété vaut $N\!P_{65} = \dollars{357643}$, soit 56,1 \% de la pleine propriété ; le calcul direct par l'\cref{eq:6:np-viager} donne le même montant, conformément à la \cref{prop:partage}. Si l'on avait remplacé la durée aléatoire par un terme fixe égal à la durée espérée du droit, soit 18,4 ans, la nue-propriété aurait été estimée à 53,7 \%, soit \dollars{15271} de moins : l'approximation sous-estime la nue-propriété, comme l'inégalité de Jensen l'annonçait, d'un montant modeste mais systématique. La rente viagère constante de même valeur que l'usufruit, celle que fixerait un tribunal appliquant l'article 1171 à nos hypothèses, serait de \dollars{25335} par an, supérieure au fruit de première année parce qu'elle remplace un flux croissant par un flux constant.
373 373
374 Le \cref{tab:6:usufruit} montre comment le partage varie avec l'âge de l'usufruitier : la nue-propriété passe de 43,6 \% à 55 ans à 80,6 \% à 85 ans. La \cref{fig:6:usufruit} trace les courbes de survie de la table synthétique et la part de la nue-propriété selon l'âge pour trois taux d'actualisation. 374 Le \cref{tab:6:usufruit} montre comment le partage varie avec l'âge de l'usufruitier : la nue-propriété passe de 43,6 \% à 55 ans à 80,6 \% à 85 ans. La \cref{fig:6:usufruit} trace les courbes de survie de la table synthétique et la part de la nue-propriété selon l'âge pour trois taux d'actualisation.
375 375
@@ -398,7 +398,7 @@ Si le marché actualise les flux du propriétaire, moins risqués, à 5,5 \% plu
398 \begin{figure}[htbp] 398 \begin{figure}[htbp]
399 \centering 399 \centering
400 \includegraphics[width=\textwidth]{ch06/ch06-fig-usufruit.pdf} 400 \includegraphics[width=\textwidth]{ch06/ch06-fig-usufruit.pdf}
401−\caption{Usufruit viager sur la maison du cas 1. (a) Courbes de survie de la table de mortalité synthétique pour des usufruitiers de 55, 65 et 75 ans. (b) Part de la nue-propriété dans la pleine propriété selon l'âge de l'usufruitier, pour des taux d'actualisation de 4, 5 et 6 \% et une croissance des fruits de 1,5 \% ; la courbe pointillée remplace la durée aléatoire par un terme fixe égal à l'espérance de vie et se situe sous la courbe viagère à 5 \%, conformément à l'inégalité de Jensen.}\label{fig:6:usufruit} 401+\caption{Usufruit viager sur la maison du cas 1. (a) Courbes de survie de la table de mortalité synthétique pour des usufruitiers de 55, 65 et 75 ans. (b) Part de la nue-propriété dans la pleine propriété selon l'âge de l'usufruitier, pour des taux d'actualisation de 4, 5 et 6 \% et une croissance des fruits de 1,5 \% ; la courbe pointillée remplace la durée aléatoire par un terme fixe égal à la durée espérée du droit et se situe sous la courbe viagère à 5 \%, conformément à l'inégalité de Jensen.}\label{fig:6:usufruit}
402 \figsource{\synth{analysis/python/figures/ch06\_usufruit.py ; table de mortalité synthétique à paramètres déclarés}} 402 \figsource{\synth{analysis/python/figures/ch06\_usufruit.py ; table de mortalité synthétique à paramètres déclarés}}
403 \end{figure} 403 \end{figure}
404 404
@@ -524,7 +524,7 @@ Une maison vendue \dollars{520000} avec garantie légale révèle, huit mois apr
524 \end{exercice} 524 \end{exercice}
525 525
526 \begin{exercice}[3]{Usufruit viager et conversion en rente}{ex:6:6} 526 \begin{exercice}[3]{Usufruit viager et conversion en rente}{ex:6:6}
527−Une résidence vaut \dollars{455000} en pleine propriété. L'usufruitière a 72 ans ; le taux d'actualisation est de 4,5 \% et la croissance des fruits de 1 \%. À l'aide du script \texttt{analysis/python/cases/ch06\_demembrements.py} et de sa table de mortalité synthétique : (a) calculez la valeur locative nette cohérente avec $V$, la valeur de l'usufruit, celle de la nue-propriété et la part de cette dernière ; (b) recalculez la nue-propriété avec un terme fixe égal à l'espérance de vie arrondie et commentez l'écart ; (c) déterminez la rente viagère constante de même valeur que l'usufruit (art.~1171) ; (d) indiquez ce que deviendraient l'usufruit et la nue-propriété si l'usufruitier était une personne morale et que l'acte ne fixait aucun terme (art.~1123) ; (e) rédigez en cinq lignes les hypothèses que le rapport devrait déclarer. 527+Une résidence vaut \dollars{455000} en pleine propriété. L'usufruitière a 72 ans ; le taux d'actualisation est de 4,5 \% et la croissance des fruits de 1 \%. À l'aide du script \texttt{analysis/python/cases/ch06\_demembrements.py} et de sa table de mortalité synthétique : (a) calculez la valeur locative nette cohérente avec $V$, la valeur de l'usufruit, celle de la nue-propriété et la part de cette dernière ; (b) recalculez la nue-propriété en remplaçant la durée aléatoire par un terme fixe égal à la durée espérée du droit et commentez l'écart ; (c) déterminez la rente viagère constante de même valeur que l'usufruit (art.~1171) ; (d) indiquez ce que deviendraient l'usufruit et la nue-propriété si l'usufruitier était une personne morale et que l'acte ne fixait aucun terme (art.~1123) ; (e) rédigez en cinq lignes les hypothèses que le rapport devrait déclarer.
528 \end{exercice} 528 \end{exercice}
529 529
530 \begin{exercice}[3]{Emphytéose : durée restante, seuils et renouvellement}{ex:6:7} 530 \begin{exercice}[3]{Emphytéose : durée restante, seuils et renouvellement}{ex:6:7}
modified manuscript/chapters/ch07.tex +9 −9
@@ -48,8 +48,8 @@ La \cref{fig:7:lot} schématise ce que le plan cadastral représente et ce qu'il
48 \draw[thick, brandDark] (6,2.2) rectangle (12,5); 48 \draw[thick, brandDark] (6,2.2) rectangle (12,5);
49 \node[anchor=north west, font=\sffamily\bfseries\small] at (6.1,4.9) {Lot B — fonds dominant}; 49 \node[anchor=north west, font=\sffamily\bfseries\small] at (6.1,4.9) {Lot B — fonds dominant};
50 \node[anchor=north west, font=\sffamily\footnotesize, text=brandGray] at (6.1,4.4) {lot 1~234~568 (fictif), sans accès à la rue}; 50 \node[anchor=north west, font=\sffamily\footnotesize, text=brandGray] at (6.1,4.4) {lot 1~234~568 (fictif), sans accès à la rue};
51−\fill[brandLight] (8,2.8) rectangle (11,4.2); \draw[brandDark] (8,2.8) rectangle (11,4.2); 51+\fill[brandLight] (8.6,2.5) rectangle (11.6,3.9); \draw[brandDark] (8.6,2.5) rectangle (11.6,3.9);
52−\node[font=\sffamily\footnotesize] at (9.5,3.5) {bâtiment}; 52+\node[font=\sffamily\footnotesize] at (10.1,3.2) {bâtiment};
53 % lot C 53 % lot C
54 \draw[thick, brandDark] (6,0) rectangle (12,2.2); 54 \draw[thick, brandDark] (6,0) rectangle (12,2.2);
55 \node[anchor=north west, font=\sffamily\bfseries\small] at (6.1,2.1) {Lot C}; 55 \node[anchor=north west, font=\sffamily\bfseries\small] at (6.1,2.1) {Lot C};
@@ -332,7 +332,7 @@ L'immeuble de cette section est fictif : une copropriété de huit fractions sur
332 332
333 \begin{table}[htbp] 333 \begin{table}[htbp]
334 \caption{Valeur relative et quote-part des huit fractions de l'immeuble fictif selon la méthode déclarée (superficie × coefficient d'étage × coefficient d'orientation)}\label{tab:7:quotes-parts} 334 \caption{Valeur relative et quote-part des huit fractions de l'immeuble fictif selon la méthode déclarée (superficie × coefficient d'étage × coefficient d'orientation)}\label{tab:7:quotes-parts}
335−\centering\footnotesize\setlength{\tabcolsep}{2pt} 335+\centering\footnotesize\setlength{\tabcolsep}{1.5pt}
336 \begin{tabular}{lS[table-format=3.0]lcS[table-format=1.2]S[table-format=1.2]S[table-format=3.2]S[table-format=4.0]} 336 \begin{tabular}{lS[table-format=3.0]lcS[table-format=1.2]S[table-format=1.2]S[table-format=3.2]S[table-format=4.0]}
337 \toprule 337 \toprule
338 Fraction & {Superf. (m\textsuperscript{2})} & Étage & Orient. & {Coef. étage} & {Coef. orient.} & {$v_i$} & {$q_i$ (/10 000)} \\ 338 Fraction & {Superf. (m\textsuperscript{2})} & Étage & Orient. & {Coef. étage} & {Coef. orient.} & {$v_i$} & {$q_i$ (/10 000)} \\
@@ -387,19 +387,19 @@ Depuis le 14 août 2025, le vendeur d'une fraction doit remettre en temps utile
387 387
388 \begin{table}[htbp] 388 \begin{table}[htbp]
389 \caption{Chronologie des principales obligations de la copropriété divise utiles à l'évaluateur (état au 31 octobre 2026)}\label{tab:7:loi16} 389 \caption{Chronologie des principales obligations de la copropriété divise utiles à l'évaluateur (état au 31 octobre 2026)}\label{tab:7:loi16}
390−\centering\small 390+\centering\footnotesize
391−\begin{tabularx}{\textwidth}{lYl} 391+\begin{tabularx}{\textwidth}{L{27mm}YL{30mm}}
392 \toprule 392 \toprule
393 Date & Obligation & Source \\ 393 Date & Obligation & Source \\
394 \midrule 394 \midrule
395−13 juillet 2018 (et dates ultérieures selon les articles) & Loi 141 : refonte du régime d'assurance des copropriétés ; fonds d'auto assurance (art.~1071.1 C.c.Q.) ; évaluation du montant d'assurance pour la reconstruction tous les cinq ans (art.~1073) & \parencite{loi141_2018} \\ 395+13 juillet 2018 (certains articles à des dates ultérieures) & Loi 141 : refonte du régime d'assurance des copropriétés ; fonds d'auto assurance (art.~1071.1 C.c.Q.) ; évaluation du montant d'assurance pour la reconstruction tous les cinq ans (art.~1073) & \parencite{loi141_2018} \\
396 10 janvier 2020 & Loi 16 : entrée en vigueur générale ; syndicat tenu de veiller aux travaux de conservation (art.~1039) ; description des parties privatives au registre (art.~1070) ; transition du promoteur (art.~1104) & \parencite[art.~165]{loi16_2019} \\ 396 10 janvier 2020 & Loi 16 : entrée en vigueur générale ; syndicat tenu de veiller aux travaux de conservation (art.~1039) ; description des parties privatives au registre (art.~1070) ; transition du promoteur (art.~1104) & \parencite[art.~165]{loi16_2019} \\
397 15 octobre 2020 & Assurance responsabilité du copropriétaire : minimum de 1~M\$ (moins de 13 fractions) ou 2~M\$ (13 fractions et plus) & \parencite[art.~1]{reglAssuranceCopropriete} \\ 397 15 octobre 2020 & Assurance responsabilité du copropriétaire : minimum de 1~M\$ (moins de 13 fractions) ou 2~M\$ (13 fractions et plus) & \parencite[art.~1]{reglAssuranceCopropriete} \\
398 15 avril 2021 & Seul un membre de l'Ordre des évaluateurs agréés du Québec peut évaluer le montant d'assurance pour la reconstruction (art.~1073) ; risques couverts de plein droit & \parencite[art.~3--4]{reglAssuranceCopropriete} \\ 398 15 avril 2021 & Seul un membre de l'Ordre des évaluateurs agréés du Québec peut évaluer le montant d'assurance pour la reconstruction (art.~1073) ; risques couverts de plein droit & \parencite[art.~3--4]{reglAssuranceCopropriete} \\
399 15 avril 2022 & Contribution minimale au fonds d'auto assurance (moitié de la plus haute franchise, plafond possible de 100~000~\$) & \parencite[art.~2]{reglAssuranceCopropriete} \\ 399 15 avril 2022 & Contribution minimale au fonds d'auto assurance (moitié de la plus haute franchise, plafond possible de 100~000~\$) & \parencite[art.~2]{reglAssuranceCopropriete} \\
400 21 février 2024 & Loi 31 : la fréquence de l'étude du fonds et les normes du carnet peuvent varier selon l'immeuble (art.~1070.2, 1071) ; contribution annuelle fixée après consultation de l'assemblée (art.~1072) & \parencite{loi31_2024} \\ 400 21 février 2024 & Loi 31 : la fréquence de l'étude du fonds et les normes du carnet peuvent varier selon l'immeuble (art.~1070.2, 1071) ; contribution annuelle fixée après consultation de l'assemblée (art.~1072) & \parencite{loi31_2024} \\
401 14 août 2025 & Entrée en vigueur du Règlement établissant diverses règles en matière de copropriété divise : carnet d'entretien (art.~1070.2), étude du fonds de prévoyance (art.~1071), attestation du syndicat (art.~1068.1), protection des acomptes & \parencite{reglCoproprieteDivise,loi16_2019} \\ 401 14 août 2025 & Entrée en vigueur du Règlement établissant diverses règles en matière de copropriété divise : carnet d'entretien (art.~1070.2), étude du fonds de prévoyance (art.~1071), attestation du syndicat (art.~1068.1), protection des acomptes & \parencite{reglCoproprieteDivise,loi16_2019} \\
402−15 août 2028 (trois ans et un jour) & Fin du délai transitoire pour obtenir le carnet d'entretien et la première étude du fonds de prévoyance ; renflouement du fonds sur au plus dix ans & \parencite{quebecMesuresCoproprietes} \\ 402+15 août 2028 (trois ans et un jour après le 14 août 2025) & Fin du délai transitoire pour obtenir le carnet d'entretien et la première étude du fonds de prévoyance ; renflouement du fonds sur au plus dix ans & \parencite{quebecMesuresCoproprietes} \\
403 \bottomrule 403 \bottomrule
404 \end{tabularx} 404 \end{tabularx}
405 \tabsource{\texttt{sources/notes-A.md}, §3.2 et §8, d'après les textes lus sur LégisQuébec et Publications Québec le 31 octobre 2026 ; la date d'effet précise des articles 639 à 641, 643 et 645 de la Loi 141 n'a pas été isolée (par défaut, 13 juillet 2018).} 405 \tabsource{\texttt{sources/notes-A.md}, §3.2 et §8, d'après les textes lus sur LégisQuébec et Publications Québec le 31 octobre 2026 ; la date d'effet précise des articles 639 à 641, 643 et 645 de la Loi 141 n'a pas été isolée (par défaut, 13 juillet 2018).}
@@ -458,7 +458,7 @@ Le carnet d'entretien fictif de l'immeuble de huit fractions recense huit compos
458 \begin{table}[htbp] 458 \begin{table}[htbp]
459 \caption{Plan de réparations majeures de l'immeuble fictif sur vingt-cinq ans : coût actuel, années prévues et coût indexé à 2,5~\% par année}\label{tab:7:composantes} 459 \caption{Plan de réparations majeures de l'immeuble fictif sur vingt-cinq ans : coût actuel, années prévues et coût indexé à 2,5~\% par année}\label{tab:7:composantes}
460 \centering\footnotesize 460 \centering\footnotesize
461−\begin{tabular}{lS[table-format=6.0]lR{34mm}} 461+\begin{tabularx}{\textwidth}{XS[table-format=6.0]lR{40mm}}
462 \toprule 462 \toprule
463 Composante & {Coût 2026 (\$)} & Années prévues & Coût indexé (\$) \\ 463 Composante & {Coût 2026 (\$)} & Années prévues & Coût indexé (\$) \\
464 \midrule 464 \midrule
@@ -473,7 +473,7 @@ Entrée d'eau et drains & 35000 & 19 & 55\,953 \\
473 \midrule 473 \midrule
474 Total des dépenses prévues & 479000 & & 651\,959 \\ 474 Total des dépenses prévues & 479000 & & 651\,959 \\
475 \bottomrule 475 \bottomrule
476−\end{tabular} 476+\end{tabularx}
477 \tabsource{\synth{\texttt{analysis/python/cases/ch07\_servitudes\_copro.py}} ; horizon de 25 ans conforme à CCQ, r.~8.01, art.~3 ; les coûts et les durées de vie sont des hypothèses pédagogiques, non des barèmes.} 477 \tabsource{\synth{\texttt{analysis/python/cases/ch07\_servitudes\_copro.py}} ; horizon de 25 ans conforme à CCQ, r.~8.01, art.~3 ; les coûts et les durées de vie sont des hypothèses pédagogiques, non des barèmes.}
478 \end{table} 478 \end{table}
479 479
modified manuscript/chapters/ch08.tex +4 −4
@@ -61,7 +61,7 @@ Règlement d'inclusion & Entente sur le logement abordable, social ou familial &
61 61
62 \subsection{La règle juridique comme composante de l'état de l'immeuble} 62 \subsection{La règle juridique comme composante de l'état de l'immeuble}
63 63
64−La fiscalité municipale a tiré les conséquences de ce qui précède dans une disposition que l'évaluateur privé gagne à connaître. Aux fins du rôle, l'état de l'unité d'évaluation « comprend, outre son état physique, sa situation au point de vue économique et juridique […] et l'environnement » \parencite[art.~46 al.~3]{lfm}. La restriction de zonage fait donc partie de l'état de l'immeuble au même titre que l'état de sa toiture, et « l'imposition ou […] la levée […] d'une restriction juridique aux utilisations possibles de l'immeuble » est un motif de modification du rôle en cours de cycle \parencite[art.~174 par.~19°]{lfm}. Le \cref{ch:9} revient sur ces mécanismes ; retenons ici que le droit québécois lui-même considère le zonage comme un attribut de l'immeuble, dont la variation modifie la valeur. 64+La fiscalité municipale a tiré les conséquences de ce qui précède dans une disposition que l'évaluateur privé gagne à connaître. Aux fins du rôle, l'état de l'unité d'évaluation « comprend, outre son état physique, sa situation au point de vue économique et juridique […] et l'environnement » \parencite[art.~46 al.~3]{lfm}. La restriction de zonage fait donc partie de l'état de l'immeuble au même titre que l'état de sa toiture, et « l'imposition ou […] la levée […] d'une restriction juridique aux utilisations possibles de l'immeuble » est un motif de modification du rôle en cours de cycle \parencite[art.~174 par.~19°]{lfm}. Le \cref{ch:09} revient sur ces mécanismes ; retenons ici que le droit québécois lui-même considère le zonage comme un attribut de l'immeuble, dont la variation modifie la valeur.
65 65
66 La pratique professionnelle nord-américaine formalise la même idée dans l'analyse de la \motcle{plus haute et meilleure utilisation} (PHMU, \emph{highest and best use}), dont le premier des quatre critères est que l'usage soit légalement permis, avant d'être physiquement possible, financièrement faisable et maximalement productif \parencite{appraisal2026}. Le mot « permis » appelle une nuance qui occupe une bonne part du présent chapitre : un usage peut être permis de plein droit par la grille, permis par droits acquis, permis sous réserve d'une autorisation discrétionnaire, ou raisonnablement probable au terme d'une modification réglementaire. Chacune de ces situations correspond à un degré d'incertitude différent, et la valeur doit en porter la trace. Le \cref{ch:41} conduit l'analyse complète de la PHMU ; le présent chapitre fournit la lecture juridique qui la précède. 66 La pratique professionnelle nord-américaine formalise la même idée dans l'analyse de la \motcle{plus haute et meilleure utilisation} (PHMU, \emph{highest and best use}), dont le premier des quatre critères est que l'usage soit légalement permis, avant d'être physiquement possible, financièrement faisable et maximalement productif \parencite{appraisal2026}. Le mot « permis » appelle une nuance qui occupe une bonne part du présent chapitre : un usage peut être permis de plein droit par la grille, permis par droits acquis, permis sous réserve d'une autorisation discrétionnaire, ou raisonnablement probable au terme d'une modification réglementaire. Chacune de ces situations correspond à un degré d'incertitude différent, et la valeur doit en porter la trace. Le \cref{ch:41} conduit l'analyse complète de la PHMU ; le présent chapitre fournit la lecture juridique qui la précède.
67 67
@@ -226,7 +226,7 @@ Traitement de la valeur & $V_{\text{conf}} + \Delta\NOI/(R+\lambda)$ & coût de
226 226
227 La Loi modifiant la Loi sur l'aménagement et l'urbanisme et d'autres dispositions (projet de loi n\textsuperscript{o} 16) a été présentée le 21 mars 2023 et sanctionnée le 1\textsuperscript{er} juin 2023, devenant le chapitre 12 des lois de 2023, avec une entrée en vigueur le jour de la sanction sauf exceptions \parencite{loi2023c12}. Parmi ses effets vérifiés pour le présent ouvrage figure la réécriture des dispositions sur la contribution pour fins de parcs (art.~117.1, 117.2 et 117.4), examinées plus haut. La réforme s'inscrit dans un mouvement plus large, au Québec comme ailleurs en Amérique du Nord, qui vise à faciliter la densification des quartiers résidentiels existants pour répondre à la pénurie de logements ; le contenu détaillé de ses autres dispositions n'a pas été dépouillé ici, et l'évaluateur qui doit apprécier la probabilité d'une densification sur un terrain donné consulte le texte à jour de la loi et, surtout, le plan d'urbanisme et le règlement de zonage de la municipalité, qui sont les instruments par lesquels cette politique se concrétise. 227 La Loi modifiant la Loi sur l'aménagement et l'urbanisme et d'autres dispositions (projet de loi n\textsuperscript{o} 16) a été présentée le 21 mars 2023 et sanctionnée le 1\textsuperscript{er} juin 2023, devenant le chapitre 12 des lois de 2023, avec une entrée en vigueur le jour de la sanction sauf exceptions \parencite{loi2023c12}. Parmi ses effets vérifiés pour le présent ouvrage figure la réécriture des dispositions sur la contribution pour fins de parcs (art.~117.1, 117.2 et 117.4), examinées plus haut. La réforme s'inscrit dans un mouvement plus large, au Québec comme ailleurs en Amérique du Nord, qui vise à faciliter la densification des quartiers résidentiels existants pour répondre à la pénurie de logements ; le contenu détaillé de ses autres dispositions n'a pas été dépouillé ici, et l'évaluateur qui doit apprécier la probabilité d'une densification sur un terrain donné consulte le texte à jour de la loi et, surtout, le plan d'urbanisme et le règlement de zonage de la municipalité, qui sont les instruments par lesquels cette politique se concrétise.
228 228
229−L'économie urbaine fournit le cadre pour comprendre pourquoi la densification a un effet sur les prix. La réglementation de l'usage du sol réduit l'élasticité de l'offre de logements, et une offre inélastique transmet les chocs de demande aux prix plutôt qu'aux quantités : \textcite{glaeserGyourkoSaiz2008} montrent que les bulles immobilières sont plus amples et plus longues dans les marchés où l'offre est contrainte, et \textcite{saiz2010} que la contrainte combine la géographie (eau, pentes) et la réglementation. Le \cref{ch:3} et le \cref{ch:5} développent ces mécanismes ; retenons ici leur conséquence pour l'évaluation d'un terrain : la valeur d'un droit de construire est d'autant plus élevée que ce droit est rare, et un assouplissement général du zonage, en augmentant l'offre de droits à bâtir, peut réduire la valeur unitaire de chacun tout en augmentant la valeur des terrains qui en bénéficient. L'effet d'un rezonage ponctuel sur un îlot, mesuré à la \cref{sec:8:exemple}, n'est pas l'effet d'une densification généralisée ; le premier est une rente de rareté, le second la modifie. 229+L'économie urbaine fournit le cadre pour comprendre pourquoi la densification a un effet sur les prix. La réglementation de l'usage du sol réduit l'élasticité de l'offre de logements, et une offre inélastique transmet les chocs de demande aux prix plutôt qu'aux quantités : \textcite{glaeserGyourkoSaiz2008} montrent que les bulles immobilières sont plus amples et plus longues dans les marchés où l'offre est contrainte, et \textcite{saiz2010} que la contrainte combine la géographie (eau, pentes) et la réglementation. Le \cref{ch:03} et le \cref{ch:05} développent ces mécanismes ; retenons ici leur conséquence pour l'évaluation d'un terrain : la valeur d'un droit de construire est d'autant plus élevée que ce droit est rare, et un assouplissement général du zonage, en augmentant l'offre de droits à bâtir, peut réduire la valeur unitaire de chacun tout en augmentant la valeur des terrains qui en bénéficient. L'effet d'un rezonage ponctuel sur un îlot, mesuré à la \cref{sec:8:exemple}, n'est pas l'effet d'une densification généralisée ; le premier est une rente de rareté, le second la modifie.
230 230
231 \subsection{Le règlement d'inclusion} 231 \subsection{Le règlement d'inclusion}
232 232
@@ -264,7 +264,7 @@ Art.~105 & Lot adjacent à un chemin public desservi : 60 m (habitation), 120 m
264 \end{table} 264 \end{table}
265 265
266 \begin{quebec}[Vérifier la zone agricole et ses droits acquis] 266 \begin{quebec}[Vérifier la zone agricole et ses droits acquis]
267−La Commission offre des services en ligne pour la demande d'autorisation, la déclaration de droits acquis et la consultation de la cartographie de la zone agricole \parencite{cptaq}. L'évaluateur qui reçoit un mandat en milieu rural vérifie d'abord si le lot est compris dans la zone agricole, puis si une décision de la Commission ou une déclaration de droits acquis le concerne, et il en joint la référence au rapport. Aux fins du rôle, la valeur imposable aux fins scolaires du terrain d'une exploitation agricole enregistrée est limitée à \dollars{375} l'hectare \parencite[art.~231.3]{lfm}, et les immeubles agricoles forment une catégorie de taux de taxe distincte ; le \cref{ch:9} et le \cref{ch:25} en traitent. Les modifications réglementaires annoncées par la Commission pour l'été 2026 n'ont pas été vérifiées pour le présent ouvrage. 267+La Commission offre des services en ligne pour la demande d'autorisation, la déclaration de droits acquis et la consultation de la cartographie de la zone agricole \parencite{cptaq}. L'évaluateur qui reçoit un mandat en milieu rural vérifie d'abord si le lot est compris dans la zone agricole, puis si une décision de la Commission ou une déclaration de droits acquis le concerne, et il en joint la référence au rapport. Aux fins du rôle, la valeur imposable aux fins scolaires du terrain d'une exploitation agricole enregistrée est limitée à \dollars{375} l'hectare \parencite[art.~231.3]{lfm}, et les immeubles agricoles forment une catégorie de taux de taxe distincte ; le \cref{ch:09} et le \cref{ch:25} en traitent. Les modifications réglementaires annoncées par la Commission pour l'été 2026 n'ont pas été vérifiées pour le présent ouvrage.
268 \end{quebec} 268 \end{quebec}
269 269
270 \section{Effets sur la valeur : option de redéveloppement et plus haute et meilleure utilisation}\label{sec:8:valeur} 270 \section{Effets sur la valeur : option de redéveloppement et plus haute et meilleure utilisation}\label{sec:8:valeur}
@@ -486,7 +486,7 @@ Pour les droits acquis, la sensibilité au taux de risque est convexe : les prem
486 486
487 La lecture d'un règlement de zonage est une compétence pratique que les chapitres précédents supposaient acquise ; elle mérite une méthode. Le règlement se compose d'un texte, qui définit les termes, les classes d'usages et les règles générales, d'un plan de zonage, qui délimite les zones et leur attribue un code (souvent une lettre d'usage dominant et un numéro, comme « H-412 » ou « RB-27 »), et de la grille, qui condense pour chaque zone les usages et les normes. La \cref{fig:8:grille} schématise une grille type. La lecture se fait en cinq étapes, résumées dans l'encadré pratique qui suit, et appliquées ici au sujet du dossier de Gatineau (cas 1) : un cottage à étages de 1998, de \msq{165} habitables, sur un terrain de \msq{620} dans le secteur de Hull, décrit au \cref{ch:16}, que l'on suppose situé dans une zone fictive « H-1 » dont la grille est celle de la colonne H1 du \cref{tab:8:grille-h2}. 487 La lecture d'un règlement de zonage est une compétence pratique que les chapitres précédents supposaient acquise ; elle mérite une méthode. Le règlement se compose d'un texte, qui définit les termes, les classes d'usages et les règles générales, d'un plan de zonage, qui délimite les zones et leur attribue un code (souvent une lettre d'usage dominant et un numéro, comme « H-412 » ou « RB-27 »), et de la grille, qui condense pour chaque zone les usages et les normes. La \cref{fig:8:grille} schématise une grille type. La lecture se fait en cinq étapes, résumées dans l'encadré pratique qui suit, et appliquées ici au sujet du dossier de Gatineau (cas 1) : un cottage à étages de 1998, de \msq{165} habitables, sur un terrain de \msq{620} dans le secteur de Hull, décrit au \cref{ch:16}, que l'on suppose situé dans une zone fictive « H-1 » dont la grille est celle de la colonne H1 du \cref{tab:8:grille-h2}.
488 488
489−\begin{figure}[htbp] 489+\begin{figure}[tb]
490 \centering 490 \centering
491 \begin{tikzpicture}[every node/.style={font=\sffamily\scriptsize}, cell/.style={draw=brandGrayLight, minimum height=5.2mm, anchor=north west, inner sep=1.5pt}, head/.style={cell, fill=brandPrimary, text=white, font=\sffamily\scriptsize\bfseries}, grp/.style={cell, fill=brandLight, font=\sffamily\scriptsize\bfseries, text=brandDark}] 491 \begin{tikzpicture}[every node/.style={font=\sffamily\scriptsize}, cell/.style={draw=brandGrayLight, minimum height=5.2mm, anchor=north west, inner sep=1.5pt}, head/.style={cell, fill=brandPrimary, text=white, font=\sffamily\scriptsize\bfseries}, grp/.style={cell, fill=brandLight, font=\sffamily\scriptsize\bfseries, text=brandDark}]
492 \def\gw{52mm}\def\gc{17mm} 492 \def\gw{52mm}\def\gc{17mm}
modified manuscript/chapters/ch09.tex +2 −2
@@ -455,7 +455,7 @@ Valeur au rôle fictif (\$) & 468 000 & 502 400 & 524 800 & 465 600 & 482 500 &
455 \caption{Les deux dossiers de contestation du cas 1 en regard (données synthétiques ; taux de Gatineau 2026, secteur de Hull, unité de voisinage au taux médian)}\label{tab:9:dossier} 455 \caption{Les deux dossiers de contestation du cas 1 en regard (données synthétiques ; taux de Gatineau 2026, secteur de Hull, unité de voisinage au taux médian)}\label{tab:9:dossier}
456 \centering 456 \centering
457 \small 457 \small
458−\begin{tabular}{lS[table-format=6.2]S[table-format=6.2]} 458+\begin{tabular}{lS[table-format=-6.2]S[table-format=-6.2]}
459 \toprule 459 \toprule
460 Élément & {Sujet (123, rue des Érables, fictive)} & {Acheteur de G0258} \\ 460 Élément & {Sujet (123, rue des Érables, fictive)} & {Acheteur de G0258} \\
461 \midrule 461 \midrule
@@ -482,7 +482,7 @@ L'exemple a mis en évidence la première et la plus importante des sources d'é
482 \begin{equation}\label{eq:9:ecart-attendu} 482 \begin{equation}\label{eq:9:ecart-attendu}
483 \E\!\left[\frac{P_t}{V}\right] \approx \frac{1}{\mathrm{PM}}\cdot\frac{I_t}{I_{\text{réf}}} , 483 \E\!\left[\frac{P_t}{V}\right] \approx \frac{1}{\mathrm{PM}}\cdot\frac{I_t}{I_{\text{réf}}} ,
484 \end{equation} 484 \end{equation}
485−où $I$ est un indice de prix du sous-marché (\cref{ch:35}). Pour un rôle au niveau de 92,4 \% et un marché qui progresse de 4,46 \% par an, le prix attendu dépasse la valeur au rôle de 8,2 \% à la date de référence, de 15,7 \% à l'entrée en vigueur dix-huit mois plus tard et de 28,8 \% au dernier jour du cycle. L'évaluateur qui utilise la valeur au rôle comme indication, ou comme variable d'un modèle, doit la corriger de ces deux facteurs ; \textcite{clappGiaccotto1992} ont montré comment les valeurs au rôle peuvent servir, précisément parce qu'elles sont une évaluation de masse contemporaine, à construire des indices de prix, méthode que le \cref{ch:35} présente. 485+où $I$ est un indice de prix du sous-marché (\cref{ch:35}). Pour un rôle au niveau de 92,4 \% et un marché qui progresse de 4,46 \% par an, le prix attendu dépasse la valeur au rôle de 8,2 \% à la date de référence, de 15,5 \% à l'entrée en vigueur dix-huit mois plus tard et de 31,6 \% au dernier jour du cycle. L'évaluateur qui utilise la valeur au rôle comme indication, ou comme variable d'un modèle, doit la corriger de ces deux facteurs ; \textcite{clappGiaccotto1992} ont montré comment les valeurs au rôle peuvent servir, précisément parce qu'elles sont une évaluation de masse contemporaine, à construire des indices de prix, méthode que le \cref{ch:35} présente.
486 486
487 Les autres sources d'écart sont systématiques et prévisibles. L'unité d'évaluation ne coïncide pas toujours avec le bien vendu (\cref{sec:9:cadre}) ; les meubles attachés à demeure sont inclus dans la valeur au rôle et parfois exclus du prix ; les immeubles locatifs sont évalués libres de baux (art.~45.1) alors que leur prix reflète les loyers en place ; l'état de l'unité est celui de la date de référence, de sorte qu'une rénovation terminée après cette date n'entre au rôle qu'au prochain cycle, à moins qu'elle ne déclenche une modification en vertu de l'art.~174 ; enfin, la dispersion propre de l'évaluation de masse, mesurée par le COD, fait qu'un immeuble donné s'écarte typiquement de 5 à 15 \% du niveau du rôle sans qu'il y ait d'erreur au sens de la loi. La valeur au rôle est donc une donnée précieuse, exhaustive, publique et établie par un professionnel selon des normes, mais c'est une donnée à décoder, non une indication de valeur à la date d'évaluation. 487 Les autres sources d'écart sont systématiques et prévisibles. L'unité d'évaluation ne coïncide pas toujours avec le bien vendu (\cref{sec:9:cadre}) ; les meubles attachés à demeure sont inclus dans la valeur au rôle et parfois exclus du prix ; les immeubles locatifs sont évalués libres de baux (art.~45.1) alors que leur prix reflète les loyers en place ; l'état de l'unité est celui de la date de référence, de sorte qu'une rénovation terminée après cette date n'entre au rôle qu'au prochain cycle, à moins qu'elle ne déclenche une modification en vertu de l'art.~174 ; enfin, la dispersion propre de l'évaluation de masse, mesurée par le COD, fait qu'un immeuble donné s'écarte typiquement de 5 à 15 \% du niveau du rôle sans qu'il y ait d'erreur au sens de la loi. La valeur au rôle est donc une donnée précieuse, exhaustive, publique et établie par un professionnel selon des normes, mais c'est une donnée à décoder, non une indication de valeur à la date d'évaluation.
488 488
added references/lib-ch05.bib +103 −0
@@ -0,0 +1,103 @@
1+% ==============================================================================
2+% lib-ch05.bib — Chapitre 5 (Économie urbaine et rente foncière), rédigé le 2026-10-31.
3+% Toutes les citations par clé de ch05.tex utilisent des entrées déjà présentes dans references/library.bib :
4+% ricardo1817, vonthunen1826, alonso1964, muth1969, mills1967, durantonPuga2015, capozzaHelsley1989,
5+% capozzaHelsley1990, rosenthalHelsley1994, davisHeathcote2007, knollSchularickSteger2017,
6+% albouyEhrlichShin2018, dipasqualeWheaton1996, poterba1984, himmelbergMayerSinai2005, rosen1974,
7+% lancaster1966, desrosiersTheriaultVilleneuve2000, desrosiersLaganaTheriault2001,
8+% desrosiersTheriaultKestensVilleneuve2002, kestensTheriaultDesrosiers2006, dubeTheriaultDesrosiers2013,
9+% dubeLegrosTheriaultDesrosiers2014, theriaultDesrosiers2011, appraisal2026, dqroles, apciqgatineaut32026,
10+% lfm, lip, vqtaux2026, gatineaureglement994, gatmutations, ledevoirmtl2026, mtltaux2026, mtlmutations2026,
11+% taxescolaire2026.
12+% Les sept entrées ci-dessous sont NOUVELLES et vérifiées (API Crossref, 2026-10-31). Elles ne sont PAS citées
13+% par clé dans ch05.tex (pour éviter une citation non définie avant fusion) : le texte les nomme en toutes
14+% lettres (Oates 1969 ; Tiebout 1956 ; Yinger 1982 ; Brueckner 1987 ; Coffey et Shearmur 2001/2002).
15+% À fusionner dans library.bib par l'orchestrateur, puis remplacer les mentions par \textcite{…}.
16+% ==============================================================================
17+
18+@article{oates1969,
19+ author = {Oates, Wallace E.},
20+ title = {The Effects of Property Taxes and Local Public Spending on Property Values: An Empirical Study of Tax Capitalization and the Tiebout Hypothesis},
21+ journaltitle = {Journal of Political Economy},
22+ year = {1969},
23+ volume = {77},
24+ number = {6},
25+ pages = {957--971},
26+ doi = {10.1086/259584},
27+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
28+}
29+
30+@article{tiebout1956,
31+ author = {Tiebout, Charles M.},
32+ title = {A Pure Theory of Local Expenditures},
33+ journaltitle = {Journal of Political Economy},
34+ year = {1956},
35+ volume = {64},
36+ number = {5},
37+ pages = {416--424},
38+ doi = {10.1086/257839},
39+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
40+}
41+
42+@article{yinger1982,
43+ author = {Yinger, John},
44+ title = {Capitalization and the Theory of Local Public Finance},
45+ journaltitle = {Journal of Political Economy},
46+ year = {1982},
47+ volume = {90},
48+ number = {5},
49+ pages = {917--943},
50+ doi = {10.1086/261101},
51+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
52+}
53+
54+@incollection{brueckner1987,
55+ author = {Brueckner, Jan K.},
56+ title = {The Structure of Urban Equilibria: A Unified Treatment of the {Muth}-{Mills} Model},
57+ booktitle = {Handbook of Regional and Urban Economics},
58+ editor = {Mills, Edwin S.},
59+ volume = {2},
60+ publisher = {Elsevier},
61+ address = {Amsterdam},
62+ year = {1987},
63+ pages = {821--845},
64+ doi = {10.1016/S1574-0080(87)80006-8},
65+ isbn = {9780444879707},
66+ note = {Chapitre 20 ; métadonnées confirmées par Crossref le 2026-10-31}
67+}
68+
69+@article{coffeyShearmur2001,
70+ author = {Coffey, William J. and Shearmur, Richard G.},
71+ title = {Intrametropolitan Employment Distribution in {Montreal}, 1981--1996},
72+ journaltitle = {Urban Geography},
73+ year = {2001},
74+ volume = {22},
75+ number = {2},
76+ pages = {106--129},
77+ doi = {10.2747/0272-3638.22.2.106},
78+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
79+}
80+
81+@article{shearmurCoffey2002,
82+ author = {Shearmur, Richard and Coffey, William J.},
83+ title = {A Tale of Four Cities: Intrametropolitan Employment Distribution in {Toronto}, {Montreal}, {Vancouver}, and {Ottawa}--{Hull}, 1981--1996},
84+ journaltitle = {Environment and Planning A},
85+ year = {2002},
86+ volume = {34},
87+ number = {4},
88+ pages = {575--598},
89+ doi = {10.1068/a33214},
90+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
91+}
92+
93+@article{mcmillen1996,
94+ author = {McMillen, Daniel P.},
95+ title = {One Hundred Fifty Years of Land Values in {Chicago}: A Nonparametric Approach},
96+ journaltitle = {Journal of Urban Economics},
97+ year = {1996},
98+ volume = {40},
99+ number = {1},
100+ pages = {100--124},
101+ doi = {10.1006/juec.1996.0025},
102+ note = {Métadonnées confirmées par Crossref le 2026-10-31 ; non cité au ch. 5, utile au ch. 19 (gradients non paramétriques)}
103+}
added references/lib-ch06.bib +12 −0
@@ -0,0 +1,12 @@
1+% Nouvelles références du chapitre 6 — à fusionner dans library.bib par l'orchestrateur.
2+% Non citée dans ch06.tex (pour éviter une citation non définie avant fusion) ; l'encadré « En pratique » de la section 6.3
3+% nomme la source en toutes lettres (« tables complètes de mortalité de Statistique Canada, version diffusée le 13 janvier 2026 »).
4+
5+@online{statcanTableMortalite,
6+ author = {{Statistique Canada}},
7+ title = {Tableau 13-10-0114-01 --- Espérance de vie et autres éléments de la table complète de mortalité, estimations sur trois ans, Canada, toutes les provinces sauf l'Île-du-Prince-Édouard},
8+ year = {2026},
9+ note = {Fréquence annuelle ; date de diffusion : 13 janvier 2026 ; page du tableau consultée le 31 octobre 2026 (titre et métadonnées vérifiés ; valeurs non téléchargées)},
10+ url = {https://www150.statcan.gc.ca/t1/tbl1/fr/tv.action?pid=1310011401},
11+ urldate = {2026-10-31}
12+}
modified references/library.bib +96 −0
@@ -4442,6 +4442,102 @@
4442 note = {Frais de gestion : forfait de 5~\%, frais réels admissibles jusqu'à 10~\% des revenus annuels de l'immeuble} 4442 note = {Frais de gestion : forfait de 5~\%, frais réels admissibles jusqu'à 10~\% des revenus annuels de l'immeuble}
4443 } 4443 }
4444 4444
4445+@article{oates1969,
4446+ author = {Oates, Wallace E.},
4447+ title = {The Effects of Property Taxes and Local Public Spending on Property Values: An Empirical Study of Tax Capitalization and the Tiebout Hypothesis},
4448+ journaltitle = {Journal of Political Economy},
4449+ year = {1969},
4450+ volume = {77},
4451+ number = {6},
4452+ pages = {957--971},
4453+ doi = {10.1086/259584},
4454+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
4455+}
4456+
4457+@article{tiebout1956,
4458+ author = {Tiebout, Charles M.},
4459+ title = {A Pure Theory of Local Expenditures},
4460+ journaltitle = {Journal of Political Economy},
4461+ year = {1956},
4462+ volume = {64},
4463+ number = {5},
4464+ pages = {416--424},
4465+ doi = {10.1086/257839},
4466+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
4467+}
4468+
4469+@article{yinger1982,
4470+ author = {Yinger, John},
4471+ title = {Capitalization and the Theory of Local Public Finance},
4472+ journaltitle = {Journal of Political Economy},
4473+ year = {1982},
4474+ volume = {90},
4475+ number = {5},
4476+ pages = {917--943},
4477+ doi = {10.1086/261101},
4478+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
4479+}
4480+
4481+@incollection{brueckner1987,
4482+ author = {Brueckner, Jan K.},
4483+ title = {The Structure of Urban Equilibria: A Unified Treatment of the {Muth}-{Mills} Model},
4484+ booktitle = {Handbook of Regional and Urban Economics},
4485+ editor = {Mills, Edwin S.},
4486+ volume = {2},
4487+ publisher = {Elsevier},
4488+ address = {Amsterdam},
4489+ year = {1987},
4490+ pages = {821--845},
4491+ doi = {10.1016/S1574-0080(87)80006-8},
4492+ isbn = {9780444879707},
4493+ note = {Chapitre 20 ; métadonnées confirmées par Crossref le 2026-10-31}
4494+}
4495+
4496+@article{coffeyShearmur2001,
4497+ author = {Coffey, William J. and Shearmur, Richard G.},
4498+ title = {Intrametropolitan Employment Distribution in {Montreal}, 1981--1996},
4499+ journaltitle = {Urban Geography},
4500+ year = {2001},
4501+ volume = {22},
4502+ number = {2},
4503+ pages = {106--129},
4504+ doi = {10.2747/0272-3638.22.2.106},
4505+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
4506+}
4507+
4508+@article{shearmurCoffey2002,
4509+ author = {Shearmur, Richard and Coffey, William J.},
4510+ title = {A Tale of Four Cities: Intrametropolitan Employment Distribution in {Toronto}, {Montreal}, {Vancouver}, and {Ottawa}--{Hull}, 1981--1996},
4511+ journaltitle = {Environment and Planning A},
4512+ year = {2002},
4513+ volume = {34},
4514+ number = {4},
4515+ pages = {575--598},
4516+ doi = {10.1068/a33214},
4517+ note = {Métadonnées confirmées par Crossref le 2026-10-31}
4518+}
4519+
4520+@article{mcmillen1996,
4521+ author = {McMillen, Daniel P.},
4522+ title = {One Hundred Fifty Years of Land Values in {Chicago}: A Nonparametric Approach},
4523+ journaltitle = {Journal of Urban Economics},
4524+ year = {1996},
4525+ volume = {40},
4526+ number = {1},
4527+ pages = {100--124},
4528+ doi = {10.1006/juec.1996.0025},
4529+ note = {Métadonnées confirmées par Crossref le 2026-10-31 ; non cité au ch. 5, utile au ch. 19 (gradients non paramétriques)}
4530+}
4531+
4532+@online{statcanTableMortalite,
4533+ author = {{Statistique Canada}},
4534+ title = {Tableau 13-10-0114-01 --- Espérance de vie et autres éléments de la table complète de mortalité, estimations sur trois ans, Canada, toutes les provinces sauf l'Île-du-Prince-Édouard},
4535+ year = {2026},
4536+ note = {Fréquence annuelle ; date de diffusion : 13 janvier 2026 ; page du tableau consultée le 31 octobre 2026 (titre et métadonnées vérifiés ; valeurs non téléchargées)},
4537+ url = {https://www150.statcan.gc.ca/t1/tbl1/fr/tv.action?pid=1310011401},
4538+ urldate = {2026-10-31}
4539+}
4540+
4445 @legislation{reglCertificatLocalisation, 4541 @legislation{reglCertificatLocalisation,
4446 author = {{Québec}}, 4542 author = {{Québec}},
4447 title = {Règlement sur la norme de pratique relative au certificat de localisation}, 4543 title = {Règlement sur la norme de pratique relative au certificat de localisation},
modified solutions/ch06.tex +1 −1
@@ -54,7 +54,7 @@ Hypothèses : $V = \dollars{455000}$, $r = 4{,}5$ \%, $g = 1$ \%, usufruitière
54 54
55 \emph{(a)} Valeur locative nette cohérente : $L = (r - g)V = 0{,}035 \times \dollars{455000} = \dollars{15925}$ par an. Espérance de vie à 72 ans selon la table synthétique : 13,0 ans. Par l'\cref{eq:6:usufruit-viager}, $U_{72} = \dollars{158934}$ ; nue-propriété $N\!P_{72} = V - U_{72} = \dollars{296066}$, soit 65,1 \% de la pleine propriété ; le calcul direct par l'\cref{eq:6:np-viager} donne le même montant (\cref{prop:partage}). 55 \emph{(a)} Valeur locative nette cohérente : $L = (r - g)V = 0{,}035 \times \dollars{455000} = \dollars{15925}$ par an. Espérance de vie à 72 ans selon la table synthétique : 13,0 ans. Par l'\cref{eq:6:usufruit-viager}, $U_{72} = \dollars{158934}$ ; nue-propriété $N\!P_{72} = V - U_{72} = \dollars{296066}$, soit 65,1 \% de la pleine propriété ; le calcul direct par l'\cref{eq:6:np-viager} donne le même montant (\cref{prop:partage}).
56 56
57−\emph{(b)} Avec un terme fixe de 13 ans (\cref{eq:6:usufruit-terme,eq:6:np-terme}) : $U_{13} = \dollars{162802}$ et $N\!P_{13} = \dollars{455000} \times (1{,}01/1{,}045)^{13} = \dollars{292198}$, soit 64,2 \%. L'approximation surestime l'usufruit et sous-estime la nue-propriété de \dollars{3868} (0,85 point) : c'est l'effet de convexité du facteur d'actualisation (inégalité de Jensen), modeste à ce taux mais systématique. 57+\emph{(b)} La durée espérée du droit sous la convention de décompte annuel est le nombre espéré de fruits, $n_{\text{eff}} = \sum_t {}_{t-1}p_{72} = 13{,}49$ ans (l'espérance de vie plus une demi-année). Avec ce terme fixe (\cref{eq:6:np-terme}) : $N\!P = \dollars{455000} \times (1{,}01/1{,}045)^{13{,}49} = \dollars{287350}$, soit 63,2 \%, et $U = \dollars{167650}$. L'approximation surestime l'usufruit et sous-estime la nue-propriété de \dollars{8716} (1,9 point) : c'est l'effet de concavité de l'annuité en fonction de la durée (inégalité de Jensen), modeste à ce taux mais systématique. Avec un terme entier de 13 ans, on obtiendrait $N\!P_{13} = \dollars{292198}$ (64,2 \%), plus proche du résultat viager par le simple effet de l'arrondi.
58 58
59 \emph{(c)} La rente viagère constante de même valeur actuelle que l'usufruit vaut $U_{72}$ divisé par l'annuité viagère $\sum_t {}_{t-1}p_{72}\,(1+r)^{-t}$ : \dollars{17038} par an, supérieure au fruit de première année (\dollars{15925}) parce qu'elle remplace un flux croissant de 1 \% par an par un flux constant. C'est l'ordre de grandeur qu'un tribunal appliquant l'article 1171 retiendrait sous ces hypothèses ; il tiendrait aussi compte « de l'étendue du droit, de sa durée, ainsi que des fruits et revenus qui en sont tirés ». 59 \emph{(c)} La rente viagère constante de même valeur actuelle que l'usufruit vaut $U_{72}$ divisé par l'annuité viagère $\sum_t {}_{t-1}p_{72}\,(1+r)^{-t}$ : \dollars{17038} par an, supérieure au fruit de première année (\dollars{15925}) parce qu'elle remplace un flux croissant de 1 \% par an par un flux constant. C'est l'ordre de grandeur qu'un tribunal appliquant l'article 1171 retiendrait sous ces hypothèses ; il tiendrait aussi compte « de l'étendue du droit, de sa durée, ainsi que des fruits et revenus qui en sont tirés ».
60 60
modified solutions/ch09.tex +63 −0
@@ -1 +1,64 @@
1 % Solutions du chapitre 9 — Évaluation foncière municipale et contestation 1 % Solutions du chapitre 9 — Évaluation foncière municipale et contestation
2+% Chiffres recalculés par analysis/python/cases/ch09_ratios.py (fonction exercices) et vérifiés par analysis/python/tests/test_ch09.py (classe TestExercices).
3+
4+\begin{solution}{ex:9:1}{Facteur comparatif et évaluation uniformisée}
5+Le facteur comparatif est l'inverse de la proportion médiane (\cref{eq:9:facteur}) : $F = 1/0{,}92 = 1{,}0870$. L'évaluation uniformisée de la maison est $V^{u} = 1{,}0870 \times \dollars{468000} = \dollars{508695.65}$. La taxe scolaire porte sur la tranche excédant 25~000~\$ : $(508\,695{,}65 - 25\,000) \times 0{,}07899/100 = \dollars{382.07}$.
6+
7+Deux maisons de même valeur réelle dans deux municipalités ont la même évaluation uniformisée, quelle que soit la proportion médiane de chaque rôle : si la première est inscrite à 92 \% de sa valeur réelle et la seconde à 100 \%, la première est multipliée par $1/0{,}92$ et la seconde par 1, et les deux produits sont égaux à la valeur réelle. C'est précisément la fonction de l'uniformisation de l'art.~264 : rendre comparables des rôles dont les niveaux diffèrent, pour une taxe dont le taux est unique au Québec (LIP, art.~303 et suivants). L'uniformisation ne corrige toutefois que le \emph{niveau} ; une maison surévaluée par rapport à ses voisines dans son propre rôle reste surévaluée après multiplication par le facteur.
8+\end{solution}
9+
10+\begin{solution}{ex:9:2}{Compte de taxes à Gatineau}
11+\emph{Maison raccordée.} Taux ad valorem municipaux : $5{,}232 + 1{,}417 + 0{,}830 + 0{,}036 = 7{,}515$~\$ par 1~000~\$, d'où une taxe municipale de $468\,000 \times 7{,}515 / 1\,000 = \dollars{3517.02}$. Évaluation uniformisée : $468\,000 \times 1{,}02 = \dollars{477360}$ ; taxe scolaire : $(477\,360 - 25\,000) \times 0{,}0007899 = \dollars{357.32}$. Compensation pour les matières résiduelles : \dollars{178.83}. Total : $\dollars{3517.02} + \dollars{357.32} + \dollars{178.83} = \dollars{4053.17}$.
12+
13+\emph{Maison non raccordée.} Les crédits de $0{,}386 + 0{,}523 = 0{,}909$~\$ par 1~000~\$ ramènent le taux municipal à 6,606~\$ et la taxe municipale à $\dollars{3091.61}$ ; la taxe scolaire et la compensation sont inchangées, et le total est de \dollars{3627.76}, soit \dollars{425.41} de moins.
14+
15+\emph{Part indépendante de la valeur.} Seule la compensation de \dollars{178.83} est fixe, soit 4,4 \% du compte de la maison raccordée ; tout le reste varie avec la valeur inscrite, au taux marginal de $7{,}515 + 1{,}02 \times 0{,}7899 = 8{,}321$~\$ par 1~000~\$. Une réduction de \dollars{10000} de la valeur inscrite vaudrait donc \dollars{83.21} par exercice. Noter que l'exercice retient le facteur réel de 1,02 publié par la Ville pour 2026, alors que l'exemple du chapitre applique au rôle fictif son propre facteur de 1,0818 ; c'est pourquoi la taxe scolaire diffère (357,32~\$ contre 380,16~\$).
16+\end{solution}
17+
18+\begin{solution}{ex:9:3}{Une petite étude de ratios}
19+Les ratios (\cref{eq:9:ratio}) sont : $412/450 = 0{,}9156$ ; $455/480 = 0{,}9479$ ; $398/445 = 0{,}8944$ ; $520/560 = 0{,}9286$ ; $610/690 = 0{,}8841$ ; $470/500 = 0{,}9400$ ; $388/400 = 0{,}9700$ ; $545/600 = 0{,}9083$. Classés : 0,8841 ; 0,8944 ; 0,9083 ; 0,9156 ; 0,9286 ; 0,9400 ; 0,9479 ; 0,9700. La médiane est la moyenne des 4\textsuperscript{e} et 5\textsuperscript{e} valeurs, $(0{,}9156 + 0{,}9286)/2 = 0{,}9221$ ; la moyenne simple est 0,9236 ; le ratio pondéré est $\sum V / \sum P = 3\,798\,000 / 4\,125\,000 = 0{,}9207$.
20+
21+\emph{COD} (\cref{eq:9:cod}) : les écarts absolus à la médiane valent 0,0065 ; 0,0258 ; 0,0277 ; 0,0065 ; 0,0380 ; 0,0179 ; 0,0479 ; 0,0138, de moyenne 0,0230, d'où $\mathrm{COD} = 100 \times 0{,}0230 / 0{,}9221 = 2{,}50$. \emph{PRD} (\cref{eq:9:prd}) : $0{,}9236 / 0{,}9207 = 1{,}0031$. \emph{Écart type relatif} (\cref{eq:9:ecart-type-relatif}) : la somme des carrés des écarts à la médiane divisée par $n - 1 = 7$ donne une variance de 0,000822, un écart-type de 0,0287 et un ETR de $0{,}0287 / 0{,}9221 = 3{,}11$ \%.
22+
23+\emph{Épuration} (\cref{eq:9:epuration}) : l'intervalle est $[0{,}9221 - 2 \times 0{,}0287\ ;\ 0{,}9221 + 2 \times 0{,}0287] = [0{,}8647\ ;\ 0{,}9794]$ ; le plus petit ratio, 0,8841, et le plus grand, 0,9700, y sont contenus : aucune vente n'est retirée et la proportion médiane est 0,9221, soit 92,2 \%.
24+
25+\emph{Conformité.} Le niveau de 0,922 est dans la plage de 0,90 à 1,10 de l'IAAO, mais il est inférieur au plancher de 95 \% qu'exige l'art.~13 du r.~13 pour un rôle équilibré : l'évaluateur devrait relever les valeurs d'environ 8 \% avant le dépôt. Le COD de 2,50 est \emph{inférieur} à 5, ce qui, pour l'IAAO, est un signal d'alerte de \emph{sales chasing} plutôt qu'une qualité ; avec huit ventes toutefois, aucune conclusion statistique n'est solide. L'ETR de 3,11 \% respecte largement le plafond de 14 \% applicable à un indice de concentration de 85 \%, mais la norme ne s'applique formellement qu'à partir de 30 ventes. Le PRD de 1,0031 est dans la plage de 0,98 à 1,03. Pour conclure sur l'équité verticale, il faudrait un échantillon beaucoup plus grand, couvrant toute l'étendue des valeurs, et l'examen des ratios par tranche de valeur en plus du PRD et du PRB ; sur huit ventes, le PRB vaut $-0{,}071$ avec une erreur-type de 0,043, et son intervalle de confiance à 95 \% couvre zéro.
26+\end{solution}
27+
28+\begin{solution}{ex:9:4}{Droits de mutation et facteur comparatif}
29+Pour une base de \dollars{575000} (\cref{eq:9:mutation}) :
30+
31+\emph{Barème général} : $0{,}005 \times 62\,900 + 0{,}01 \times (315\,000 - 62\,900) + 0{,}015 \times (575\,000 - 315\,000) = 314{,}50 + 2\,521{,}00 + 3\,900{,}00 = \dollars{6735.50}$.
32+
33+\emph{Montréal} : les deux premières tranches sont identiques (2~835,50~\$), puis $0{,}015 \times (552\,300 - 315\,000) = 3\,559{,}50$ et $0{,}02 \times (575\,000 - 552\,300) = 454{,}00$, soit \dollars{6849.00}.
34+
35+\emph{Gatineau} : $2\,835{,}50 + 0{,}015 \times (500\,000 - 315\,000) + 0{,}03 \times (575\,000 - 500\,000) = 2\,835{,}50 + 2\,775{,}00 + 2\,250{,}00 = \dollars{7860.50}$.
36+
37+\emph{Base réelle à Gatineau.} La valeur uniformisée est $620\,000 \times 1{,}02 = \dollars{632400}$, supérieure au prix ; la base d'imposition est donc 632~400~\$ (LDMI, art.~1.1 et 2 al.~2) et le droit vaut $2\,835{,}50 + 2\,775{,}00 + 0{,}03 \times (632\,400 - 500\,000) = 2\,835{,}50 + 2\,775{,}00 + 3\,972{,}00 = \dollars{9582.50}$, soit \dollars{1722} de plus que sur le prix. L'acheteur qui a payé moins que l'évaluation uniformisée est taxé comme s'il avait payé cette dernière ; il a donc un intérêt direct, outre la taxe foncière annuelle, à faire réduire la valeur inscrite, et la vente elle-même, si elle est de gré à gré, en est la meilleure preuve. Inversement, la règle protège la municipalité contre les contreparties stipulées artificiellement basses.
38+\end{solution}
39+
40+\begin{solution}{ex:9:5}{Taille de l'échantillon réglementaire}
41+Par l'\cref{eq:9:liste-base} : pour 1~000 unités, $1\,000 / (15{,}5 + 1) = 60{,}6$, arrondi à 61 (supérieur au plancher de 30), soit 6,1 \% des unités ; pour 10~000, $10\,000 / 25{,}5 = 392{,}2$, soit 393 (3,9 \%) ; pour 103~355, $103\,355 / 118{,}855 = 869{,}6$, soit 870 (0,84 \%) ; pour 514~614, $514\,614 / 530{,}114 = 970{,}8$, soit 971 (0,19 \%). La fraction décroît parce que la précision d'une médiane dépend du nombre absolu d'observations : l'erreur-type d'une médiane est, pour une distribution donnée, proportionnelle à $1/\sqrt{n}$ et ne dépend pas de la taille de la population dont l'échantillon est tiré. La formule plafonne d'ailleurs la liste de base vers 1~000 ventes pour les très grandes municipalités ($N/(0{,}001 N) = 1\,000$ lorsque $N$ est très grand).
42+
43+Si la municipalité de 1~000 unités ne compte que 24 ventes admissibles au cours du deuxième exercice précédent, la liste de base de 61 ventes est incomplète : l'art.~7 du r.~10 permet de la compléter par des ventes antérieures, sans remonter au-delà du quatrième exercice précédent, et, si la liste demeure incomplète, l'art.~19 al.~2 prévoit une pondération par catégories. Quant à la norme d'écart type relatif de l'art.~14 du r.~13, elle ne s'applique pas lorsque moins de 30 ventes d'au moins 5~000~\$ sont disponibles sur les deuxième, troisième et quatrième exercices précédents ; avec 28 ventes au total, elle est écartée, et seule la norme de niveau (95 à 105 \%) demeure.
44+\end{solution}
45+
46+\begin{solution}{ex:9:6}{Échéancier d'une contestation du rôle 2027-2029 de Gatineau}
47+\begin{itemize}
48+\item \emph{Date de référence au marché} : 1\textsuperscript{er} juillet 2025, soit le 1\textsuperscript{er} juillet du deuxième exercice précédant 2027 (art.~46 al.~1).
49+\item \emph{Avis d'évaluation} : avant le 1\textsuperscript{er} mars 2027 (art.~81 ; dans les 60 jours du dépôt pour une unité d'au moins 3~000~000~\$).
50+\item \emph{Demande de révision} : avant le 1\textsuperscript{er} mai 2027, donc au plus tard le 30 avril 2027 (art.~130), sur la formule prescrite et avec les frais (art.~129 et 135).
51+\item \emph{Réponse de l'évaluateur} : au plus tard le 1\textsuperscript{er} septembre 2027 ; l'organisme peut, avant le 15 août, reporter au 1\textsuperscript{er} novembre 2027 ou, avec le consentement de la municipalité, jusqu'au 1\textsuperscript{er} avril 2028 (art.~138.3).
52+\item \emph{Entente et recours, réponse du 1\textsuperscript{er} septembre 2027} : entente possible jusqu'au 1\textsuperscript{er} octobre 2027 (30\textsuperscript{e} jour, art.~138.4) ; recours au Tribunal avant le 31\textsuperscript{e} jour qui suit l'expiration de ce délai, soit au plus tard le 31 octobre 2027 (art.~138.5).
53+\item \emph{Réponse du 15 juin 2027} : entente jusqu'au 15 juillet 2027 ; recours au plus tard le 14 août 2027. Le délai court de l'expédition de la réponse, non de l'échéance légale du 1\textsuperscript{er} septembre : une réponse hâtive raccourcit d'autant le temps disponible.
54+\item \emph{Avis expédié le 20 mars 2027} : l'avis étant expédié après février, la demande peut être déposée dans les 60 jours de l'expédition (art.~131), soit jusqu'au 19 mai 2027, ce qui prolonge le délai général du 30 avril.
55+\item \emph{Démolition du garage le 10 mai 2027} : c'est un événement du par.~6\textsuperscript{o} de l'art.~174 (destruction ou démolition) ; l'évaluateur modifie le rôle pour refléter la diminution de valeur, l'état étant apprécié immédiatement après l'événement mais aux conditions du marché du 1\textsuperscript{er} juillet 2025 (art.~46 al.~2). La modification prend effet à la date de l'événement, le 10 mai 2027, qui n'est pas antérieure au premier jour de l'exercice précédent (art.~177 par.~5\textsuperscript{o}). L'avis de modification expédié le 30 juillet 2027 (art.~180) ouvre le délai de l'art.~132 : la demande doit être déposée avant le 61\textsuperscript{e} jour qui suit l'expédition, soit au plus tard le 28 septembre 2027, le 1\textsuperscript{er} mai 2027 étant déjà passé.
56+\end{itemize}
57+Les dates du régime général sont celles calculées par la fonction \texttt{echeancier} du script du chapitre (\cref{tab:9:delais}).
58+\end{solution}
59+
60+\begin{solution}{ex:9:7}{Régressivité simulée et choix de la variable proxy}
61+La simulation de la fonction \texttt{exercices} (clé \texttt{ex7}, graine 20261031) produit 400 ventes dont la valeur inscrite est proportionnelle à la valeur réelle élevée à la puissance 0,9 : médiane des ratios 0,934, COD 8,26, PRD 1,0159 et PRB $-0{,}068$ avec une erreur-type de 0,010. Le PRD excède 1 conformément à la \cref{prop:prd}, puisque le ratio $r = c\,P^{\gamma - 1}$ décroît avec la valeur lorsque $\gamma = 0{,}9 < 1$ ; il reste toutefois dans la plage de 0,98 à 1,03 de l'IAAO, parce que la dispersion des valeurs simulées (écart-type de 0,35 en logarithme) est modérée et que le PRD dépend de la covariance entre prix et ratio. Le PRB, lui, sort de la plage de $\pm 0{,}05$ et son intervalle de confiance exclut largement zéro : il détecte une régressivité que le PRD, dans cet échantillon, laisse passer. Son interprétation est directe : le ratio baisse de 6,8 \% chaque fois que la valeur double, ce qui correspond à l'élasticité théorique $\gamma - 1 = -0{,}10$ par doublement, soit $2^{-0{,}1} - 1 = -6{,}7$ \%.
62+
63+Sur le rôle fictif du cas 1, le PRB calculé avec la valeur proxy de l'IAAO vaut 0,064 (erreur-type 0,010) et celui calculé avec le seul prix rajusté vaut 0,020 (erreur-type 0,011). Les deux variantes divergent parce que, dans ce jeu, l'erreur du rôle est la seule source de dispersion des ratios rajustés : une unité dont la valeur inscrite a été tirée au-dessus de la norme a un ratio élevé \emph{et} une valeur proxy élevée, puisque la valeur inscrite entre pour moitié dans la proxy ; la corrélation ainsi créée est mécanique et n'a rien à voir avec une iniquité verticale. La proxy de l'IAAO est conçue pour atténuer le biais symétrique qui apparaîtrait si l'on régressait sur le seul prix lorsque celui-ci est mesuré avec erreur ; elle est préférable quand les erreurs de prix et de rôle sont d'ampleur comparable, mais elle surestime la progressivité quand l'erreur du rôle domine, et c'est le cas ici par construction. Devant le Tribunal, l'expert présenterait les deux variantes avec leurs erreurs-types, accompagnées des médianes par tranche de valeur (\cref{tab:9:ratios}), qui sont stables de 0,919 à 0,933 et tranchent en faveur de l'équité verticale ; il s'abstiendrait de fonder une conclusion sur une statistique dont le mécanisme n'est pas expliqué.
64+\end{solution}
modified sources/registry.csv +9 −0
@@ -290,6 +290,15 @@ SRC-E-065,jeu_de_donnees,Profil financier des municipalités locales 2024-2025 (
290 SRC-E-066,rapport,Rapport mensuel sur le marché immobilier au Québec — août 2026 (RMR Ottawa-Gatineau),JLR (Equifax),2026-09,https://solutions.jlr.ca/hubfs/Etudes_et_rapports/2026-08_Rapport_Mensuel.pdf?hsLang=fr,2026-10-31,verifie,ch. 13; 45,"Industrie (actes publiés au Registre foncier). Unifamiliale 522 741 $ (août 2026), 12 mois 495 000 $ ; 2-5 log. 545 750 $." 290 SRC-E-066,rapport,Rapport mensuel sur le marché immobilier au Québec — août 2026 (RMR Ottawa-Gatineau),JLR (Equifax),2026-09,https://solutions.jlr.ca/hubfs/Etudes_et_rapports/2026-08_Rapport_Mensuel.pdf?hsLang=fr,2026-10-31,verifie,ch. 13; 45,"Industrie (actes publiés au Registre foncier). Unifamiliale 522 741 $ (août 2026), 12 mois 495 000 $ ; 2-5 log. 545 750 $."
291 SRC-E-067,article,Banque du Canada — décision du 28 octobre 2026 (analyse),Desjardins Études économiques,2026-10-28,https://www.desjardins.com/fr/epargne-placements/etudes-economiques/canada-bdc-28-octobre-2026.html,2026-10-31,verifie,ch. 3,"Secondaire (institution financière) ; confirme +25 pb à 2,50 %, première hausse depuis juillet 2023." 291 SRC-E-067,article,Banque du Canada — décision du 28 octobre 2026 (analyse),Desjardins Études économiques,2026-10-28,https://www.desjardins.com/fr/epargne-placements/etudes-economiques/canada-bdc-28-octobre-2026.html,2026-10-31,verifie,ch. 3,"Secondaire (institution financière) ; confirme +25 pb à 2,50 %, première hausse depuis juillet 2023."
292 SRC-O-001,loi,Loi sur l'intérêt (L.R.C. 1985 ch. I-15) art. 6,Canada (ministère de la Justice),texte consolidé consulté le 2026-10-31,https://laws-lois.justice.gc.ca/fra/lois/i-15/page-1.html,2026-10-31,verifie,29;30;31;annexe conventions,"art. 6 lu : taux « calculé annuellement ou semestriellement, mais non d'avance » ; fonde la composition semestrielle de traite.finance.Hypotheque" 292 SRC-O-001,loi,Loi sur l'intérêt (L.R.C. 1985 ch. I-15) art. 6,Canada (ministère de la Justice),texte consolidé consulté le 2026-10-31,https://laws-lois.justice.gc.ca/fra/lois/i-15/page-1.html,2026-10-31,verifie,29;30;31;annexe conventions,"art. 6 lu : taux « calculé annuellement ou semestriellement, mais non d'avance » ; fonde la composition semestrielle de traite.finance.Hypotheque"
293+SRC-05-001,article,"The Effects of Property Taxes and Local Public Spending on Property Values: An Empirical Study of Tax Capitalization and the Tiebout Hypothesis (Oates), Journal of Political Economy 77(6) 957-971",University of Chicago Press,1969,https://doi.org/10.1086/259584,2026-10-31,verifie,5,Métadonnées confirmées par l'API Crossref le 2026-10-31 ; entrée oates1969 dans lib-ch05.bib (non citée par clé)
294+SRC-05-002,article,"A Pure Theory of Local Expenditures (Tiebout), Journal of Political Economy 64(5) 416-424",University of Chicago Press,1956,https://doi.org/10.1086/257839,2026-10-31,verifie,5,Crossref ; tiebout1956 dans lib-ch05.bib
295+SRC-05-003,article,"Capitalization and the Theory of Local Public Finance (Yinger), Journal of Political Economy 90(5) 917-943",University of Chicago Press,1982,https://doi.org/10.1086/261101,2026-10-31,verifie,5,Crossref ; yinger1982 dans lib-ch05.bib
296+SRC-05-004,chapitre,"The Structure of Urban Equilibria: A Unified Treatment of the Muth-Mills Model (Brueckner), Handbook of Regional and Urban Economics vol. 2, 821-845",Elsevier,1987,https://doi.org/10.1016/S1574-0080(87)80006-8,2026-10-31,verifie,5,Crossref ; ISBN 9780444879707 ; brueckner1987 dans lib-ch05.bib
297+SRC-05-005,article,"Intrametropolitan Employment Distribution in Montreal, 1981-1996 (Coffey et Shearmur), Urban Geography 22(2) 106-129",Taylor & Francis (Bellwether),2001,https://doi.org/10.2747/0272-3638.22.2.106,2026-10-31,verifie,5,Crossref ; coffeyShearmur2001 dans lib-ch05.bib
298+SRC-05-006,article,"A Tale of Four Cities: Intrametropolitan Employment Distribution in Toronto, Montreal, Vancouver, and Ottawa-Hull, 1981-1996 (Shearmur et Coffey), Environment and Planning A 34(4) 575-598",SAGE (Pion),2002,https://doi.org/10.1068/a33214,2026-10-31,verifie,5,Crossref ; shearmurCoffey2002 dans lib-ch05.bib
299+SRC-05-007,article,"One Hundred Fifty Years of Land Values in Chicago: A Nonparametric Approach (McMillen), Journal of Urban Economics 40(1) 100-124",Elsevier,1996,https://doi.org/10.1006/juec.1996.0025,2026-10-31,verifie,5,Crossref ; mcmillen1996 dans lib-ch05.bib ; non mentionné dans le texte (réserve pour le ch. 19)
300+SRC-06-001,donnees,"Tableau 13-10-0114-01 — Espérance de vie et autres éléments de la table complète de mortalité, estimations sur trois ans, Canada, toutes les provinces sauf l'Île-du-Prince-Édouard",Statistique Canada,Fréquence annuelle ; date de diffusion 2026-01-13,https://www150.statcan.gc.ca/t1/tbl1/fr/tv.action?pid=1310011401,2026-10-31,verifie,6,"Page du tableau ouverte (titre, fréquence, date de diffusion lus) ; aucune valeur de la table n'a été téléchargée ni citée : le chapitre renvoie à cette source pour les évaluations réelles et emploie une table synthétique déclarée pour l'exemple."
301+SRC-06-002,loi,"Code civil du Québec (RLRQ, c. CCQ-1991) — articles complémentaires lus pour le chapitre 6",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,6,"Complément de SRC-A-001 : texte refondu téléchargé (curl, User-Agent navigateur) et articles lus intégralement : 1009, 1022, 1030, 1110-1118, 1121, 1124-1126, 1129-1130, 1137, 1151-1152, 1162-1163, 1171, 1173, 1175-1176, 1182, 1186, 1189, 1191, 1199-1200, 1203, 1209-1210, 1727-1729, 2945, 2947 (voir ch06-claims.csv)."
293 SRC-07-001,reglement,"Règlement sur la norme de pratique relative au certificat de localisation (RLRQ, c. A-23, r. 10 ; D. 1058-2002)",Québec (LégisQuébec),À jour au 1er juillet 2026,"https://www.legisquebec.gouv.qc.ca/fr/document/rc/A-23,%20r.%2010",2026-10-31,verifie,7;12,"Texte intégral extrait (18 articles) ; art. 2, 9, 10, 13, 14 cités dans ch07 ; clé lib-ch07.bib reglCertificatLocalisation" 302 SRC-07-001,reglement,"Règlement sur la norme de pratique relative au certificat de localisation (RLRQ, c. A-23, r. 10 ; D. 1058-2002)",Québec (LégisQuébec),À jour au 1er juillet 2026,"https://www.legisquebec.gouv.qc.ca/fr/document/rc/A-23,%20r.%2010",2026-10-31,verifie,7;12,"Texte intégral extrait (18 articles) ; art. 2, 9, 10, 13, 14 cités dans ch07 ; clé lib-ch07.bib reglCertificatLocalisation"
294 SRC-07-002,loi,"Loi favorisant la réforme du cadastre québécois (RLRQ, c. R-3.1)",Québec (LégisQuébec),À jour au 15 octobre 2026,https://www.legisquebec.gouv.qc.ca/fr/document/lc/R-3.1,2026-10-31,partiellement_verifie,7,Art. 1 et 8.1 lus ; le reste de la loi (abrogé en grande partie) non dépouillé ; clé lib-ch07.bib loiReformeCadastre 303 SRC-07-002,loi,"Loi favorisant la réforme du cadastre québécois (RLRQ, c. R-3.1)",Québec (LégisQuébec),À jour au 15 octobre 2026,https://www.legisquebec.gouv.qc.ca/fr/document/lc/R-3.1,2026-10-31,partiellement_verifie,7,Art. 1 et 8.1 lus ; le reste de la loi (abrogé en grande partie) non dépouillé ; clé lib-ch07.bib loiReformeCadastre
295 SRC-08-001,page_web,"Projet de loi n° 16 — Loi modifiant la Loi sur l'aménagement et l'urbanisme et d'autres dispositions (43e législature, 1re session)",Assemblée nationale du Québec,"Présenté le 21 mars 2023 ; sanctionné le 1er juin 2023 (LQ 2023, c. 12)",https://www.assnat.qc.ca/fr/travaux-parlementaires/projets-loi/projet-loi-16-43-1.html,2026-10-31,verifie,8,"Page lue par WebFetch : titre exact, auteure (ministre des Affaires municipales), cheminement parlementaire, sanction, chapitre 12 de 2023, entrée en vigueur le jour de la sanction « sauf exceptions ». Aucune note explicative sur la page ; PDF du projet de loi non ouvert." 304 SRC-08-001,page_web,"Projet de loi n° 16 — Loi modifiant la Loi sur l'aménagement et l'urbanisme et d'autres dispositions (43e législature, 1re session)",Assemblée nationale du Québec,"Présenté le 21 mars 2023 ; sanctionné le 1er juin 2023 (LQ 2023, c. 12)",https://www.assnat.qc.ca/fr/travaux-parlementaires/projets-loi/projet-loi-16-43-1.html,2026-10-31,verifie,8,"Page lue par WebFetch : titre exact, auteure (ministre des Affaires municipales), cheminement parlementaire, sanction, chapitre 12 de 2023, entrée en vigueur le jour de la sanction « sauf exceptions ». Aucune note explicative sur la page ; PDF du projet de loi non ouvert."
modified verification/calculations.csv +30 −0
@@ -137,3 +137,33 @@ CALC-08-007,8,"Grille p × T de la prime espérée (r = 8 %) et exemple p = 0,75
137 CALC-08-008,8,"Droits acquis : RNE duplex 22 620 ; RNE maison 19 320 ; ΔRNE 3 300 ; V_Δ = 3 300/(0,055+λ) pour λ ∈ {0 ; 1 ; 2 ; 5 %} ; horizon 25 ans ; V_conf + V_Δ (λ = 2 %) = 474 000",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestOutils::test_droits_acquis,60 000 ; 50 769 ; 44 000 ; 31 429 ; 44 830 ; 40 772 ; 37 252 ; 29 152 ; 474 000,60 000 ; 50 769 ; 44 000 ; 31 429 ; 44 830 ; 40 772 ; 37 252 ; 29 152 ; 474 000,verifie,2026-10-31 137 CALC-08-008,8,"Droits acquis : RNE duplex 22 620 ; RNE maison 19 320 ; ΔRNE 3 300 ; V_Δ = 3 300/(0,055+λ) pour λ ∈ {0 ; 1 ; 2 ; 5 %} ; horizon 25 ans ; V_conf + V_Δ (λ = 2 %) = 474 000",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestOutils::test_droits_acquis,60 000 ; 50 769 ; 44 000 ; 31 429 ; 44 830 ; 40 772 ; 37 252 ; 29 152 ; 474 000,60 000 ; 50 769 ; 44 000 ; 31 429 ; 44 830 ; 40 772 ; 37 252 ; 29 152 ; 474 000,verifie,2026-10-31
138 CALC-08-009,8,"Contribution pour fins de parcs (site 2 400 m², 960 000 $) : 240 m² ou 96 000 $ ; zone agricole : V_agr 75 000, V_aut 157 500, V attendue 90 796",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestOutils::test_parcs_et_agricole,240 ; 96 000 ; 90 796,240 ; 96 000 ; 90 796,verifie,2026-10-31 138 CALC-08-009,8,"Contribution pour fins de parcs (site 2 400 m², 960 000 $) : 240 m² ou 96 000 $ ; zone agricole : V_agr 75 000, V_aut 157 500, V attendue 90 796",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestOutils::test_parcs_et_agricole,240 ; 96 000 ; 90 796,240 ; 96 000 ; 90 796,verifie,2026-10-31
139 CALC-08-010,8,"Exercices 8.1 à 8.7 (solutions/ch08.tex) : 3 logements/324 m² ; 310 m²/125 000 $ ; ΔRNE 6 060, 101 000, 67 333, 56 203 ; δ 0,05 → 5,13 % ; 125 837 / 145 675 ; V_L 308 255 / 267 345, prime 28 255 ; dV/dλ, 42 857",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestExercices,voir solutions,identiques,verifie,2026-10-31 139 CALC-08-010,8,"Exercices 8.1 à 8.7 (solutions/ch08.tex) : 3 logements/324 m² ; 310 m²/125 000 $ ; ΔRNE 6 060, 101 000, 67 333, 56 203 ; δ 0,05 → 5,13 % ; 125 837 / 145 675 ; V_L 308 255 / 267 345, prime 28 255 ; dV/dλ, 42 857",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestExercices,voir solutions,identiques,verifie,2026-10-31
140+CALC-05-001,5,Gradient exponentiel du modèle monocentrique simulé gamma = t/(beta y) et demi-distance,analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_gradient_et_frontiere,0.02917 /km ; 23.8 km,0.02917 /km ; 23.8 km,verifie,2026-10-31
141+CALC-05-002,5,Frontière urbaine d_bar (r = ra) et identité r(d_bar) = ra,analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_gradient_et_frontiere,32.29 km ; p(d_bar) = 85.97,32.29 km ; 85.97,verifie,2026-10-31
142+CALC-05-003,5,Condition de Muth p'(d) q(d) = -t vérifiée numériquement sur la solution fermée,analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_condition_de_muth_numerique,-700 à 1e-6 rel.,-700,verifie,2026-10-31
143+CALC-05-004,5,"Prix exact vs exponentiel à 10 et 25 km, q(0)/q(10)/q(d_bar), rente et densité à 10 km (tab. 5.2)",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_valeurs_tableau,191.61/194.23 (+1.4 %) ; 114.18/125.40 (+9.8 %) ; 92.3/114.3/200.3 m² ; 28.92 ; 0.396,idem,verifie,2026-10-31
144+CALC-05-005,5,"Frontières entre usages d'Alonso (commerces/dense, dense/pavillonnaire, pavillonnaire/agricole)",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_alonso,9.47 ; 14.29 ; 32.22 km,9.47 ; 14.29 ; 32.22 km,verifie,2026-10-31
145+CALC-05-006,5,Cas 1 : effectifs et médianes par tranche de distance (tab. 5.3),analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestCas1::test_tranches,n = 116/67/37/97/100/64/30/89 ; 3600 et 2684 $/m² ; terrain 1184 m²,idem,verifie,2026-10-31
146+CALC-05-007,5,"Cas 1 : gradients brut (-1.020 %/km), contrôlé (-1.083), aire urbaine ≤16 km (+0.266), quadratique (0.900 ; -0.0697 ; sommet 6.5 km ; -0.493 à 10 km ; -1.89 à 20 km)",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestCas1::test_gradients,voir description,idem,verifie,2026-10-31
147+CALC-05-008,5,"Cas 1 : coefficient dist_centre du modèle de référence (-0.357 %/km, e.-t. 0.265, t = -1.35), effets de secteur, gradients implicites entre médianes, 1 km = 5 969 $",analysis/python/cases/ch05_rente.py ; traite.cas1.hedonique,analysis/python/tests/test_ch05.py::TestCas1::test_modele_reference,-0.357 ; -2.2/+8.9/-22.1/-23.1 % ; -0.345 et -0.973 %/km ; 5969 $ ; 29050 $,idem,verifie,2026-10-31
148+CALC-05-009,5,"Cas 4 : valeur par logement, RNE par logement et taux pondéré par RMR ; identité écart = contrib RNE + contrib taux (tab. 5.5)",analysis/python/cases/ch05_rente.py ; traite.cas4.sommaire,analysis/python/tests/test_ch05.py::TestCas4::test_decomposition,Montréal 206237 … Saguenay 101969 ; Québec -0.248/-0.249 ; Gatineau +0.077/-0.190,idem,verifie,2026-10-31
149+CALC-05-010,5,"Valeur résiduelle du terrain du cas 1 (C_N 397 567,33 ; dépréciation 30 % hypothétique ; V 551 029) et levier",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestResidu::test_valeur_residuelle,272 732 $ (49.5 %) ; levier 2.02 ; -5 % → -10.1 % ; -10 % → -20.2 %,idem,verifie,2026-10-31
150+CALC-05-011,5,Décomposition de Capozza–Helsley à 10 km (simulation),analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestResidu::test_capozza,40 + 25 + 538.4 + 60 = 663.4 $/m² (81 %),663.4,verifie,2026-10-31
151+CALC-05-012,5,Capitalisation d'un écart de taxe : exact -dT/(i+tau1) vs approché -dT/i ; 10 pb et 22.4 pb sur 500 000 $ à i = 5 %,analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestTaxe::test_formule_exacte_et_approchee,-8621 (-1.72 %) vs -10000 ; -18906 (-3.78 %) vs -22400 ; ratio 1.16,idem,verifie,2026-10-31
152+CALC-05-013,5,"Taux 2026 : écart Québec–Gatineau 22.4 pb ; taux effectifs 0.5122 (Gatineau, F 1.02) et 0.6785 (Québec, F hypothétique 1.10) ; sujet cas 1 : 2 445 $ + 370 $ ; écart 6+ Québec : 466 $/an, 8 473 $ ; part de la taxe dans le coût d'usage 14 %",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestTaxe::test_taux_2026,voir description,idem,verifie,2026-10-31
153+CALC-05-014,5,Grille de sensibilité écart de taux × taux de capitalisation (tab. 5.7),analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestTaxe::test_grille,-5000 … -125000 ; ratio 4 %/7 % = 1.75,idem,verifie,2026-10-31
154+CALC-05-015,5,Exercices 5.1 à 5.7 (solutions/ch05.tex),analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestExercices,voir solutions,idem,verifie,2026-10-31
155+CALC-06-001,6,Table de mortalité synthétique Gompertz–Makeham (A=0.0004 B=0.000025 c=1.102 ; ω=111) : espérances de vie et survies,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestMortalite,e_55 25.9 ; e_65 17.9 ; e_75 11.1 ; e_85 6.2 ; 10p65 0.789 ; 20p65 0.424,idem,verifie,2026-10-31
156+CALC-06-002,6,Valeur de la pleine propriété du cas 1 (traite.cas1 prédiction hédonique) arrondie et valeur locative nette L=(r−g)V,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_valeur_cas1_et_loyer,637 952.85 → 638 000 ; L = 22 330 $/an (1 861 $/mois),idem,verifie,2026-10-31
157+CALC-06-003,6,Usufruit à terme fixe 10/20/30 ans (U ; NP ; NP/V) et identité NP = V((1+g)/(1+r))^n,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_terme_fixe,183 443/454 557 (71.2 %) ; 314 141/323 859 (50.8 %) ; 407 260/230 740 (36.2 %),idem,verifie,2026-10-31
158+CALC-06-004,6,Usufruit viager 55/65/75/85 ans : U ; NP ; NP/V ; annuité viagère ; rente équivalente (art. 1171) ; identité U + NP_direct = V,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_viager,65 ans : 280 357 / 357 643 (56.1 %) ; 12.555 ; 25 335 $/an ; 55 : 43.6 % ; 75 : 69.0 % ; 85 : 80.6 %,idem,verifie,2026-10-31
159+CALC-06-005,6,Approximation par la durée espérée (n_eff = e_x + 1/2) à 65 ans et inégalité de Jensen (NP viager ≥ NP approx) sur 50–95 ans × 3 taux,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_approximation_terme_fixe_sous_estime_np,n_eff 18.36 ; NP 53.7 % ; écart 15 271 $,idem,verifie,2026-10-31
160+CALC-06-006,6,Grille NP/V âge (55–85) × taux (4/5/6 %) et monotonie,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_grille_sensibilite,65 ans : 65.4 / 56.1 / 48.4 % ; écart 2 pts de taux ≈ 108 000 $,idem,verifie,2026-10-31
161+CALC-06-007,6,Emphytéose de référence (RNE_1 cas 3 = 89 955.75 ; r 7 % ; g 2.5 % ; rente 30 000 ; n = 35) : V pleine ; V emph ; rentes ; reprise ; somme,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestEmphyteose::test_reference,1 999 017 ; 1 166 242 (58.3 %) ; 388 430 ; 444 344 ; 832 774 ; somme = V,idem,verifie,2026-10-31
162+CALC-06-008,6,Grille emphytéose selon la durée restante (60 → 5 ans) et identité somme = V pour n = 1…100,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestEmphyteose,60 ans : 71.3 % ; 20 ans : 41.8 % ; 5 ans : 13.2 %,idem,verifie,2026-10-31
163+CALC-06-009,6,Emphytéose avec taux du propriétaire 5.5 % : V prop et excédent de la somme sur V,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestEmphyteose::test_taux_distincts,1 190 025 ; somme 2 356 268 ; +357 251,idem,verifie,2026-10-31
164+CALC-06-010,6,Part indivise 50 % du cas 1 avec décote 0/10/20 %,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_indivision,319 000 ; 287 100 ; 255 200,idem,verifie,2026-10-31
165+CALC-06-011,6,Servitude de non-construction 120 m² / 620 m² par l'élasticité prix-terrain du modèle hédonique cas 1 (0.0937),analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_servitude,ΔV 12 725 $ (2.0 %),idem,verifie,2026-10-31
166+CALC-06-012,6,Rang hypothécaire : produit net 560 000 ; créances 455 000 / 90 000 / 40 000,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_rang,3e rang recouvre 15 000 (37.5 %),idem,verifie,2026-10-31
167+CALC-06-013,6,Droits de mutation 2026 (tranches 62 900 / 315 000 ; 0.5/1/1.5 %) sur 638 000 $ et sur 750 000 $ avec taux municipal 2 % > 500 000 $,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_mutation,314.50 + 2 521.00 + 4 845.00 = 7 680.50 (1.204 %) ; 9 360.50 + 1 250.00 = 10 610.50,idem,verifie,2026-10-31
168+CALC-06-014,6,Quantum d'un vice caché (prix 520 000 ; réparations 46 000 ; plus-value 9 000 ; autres 6 500) et budget registre 5 comparables,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_vice_et_registre,37 000 (7.1 %) ; 43 500 si vendeur connaissait ; 15 $,idem,verifie,2026-10-31
169+CALC-06-015,6,Exercices 6.1 à 6.7 (solutions/ch06.tex),analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestExercices,voir solutions/ch06.tex,idem,verifie,2026-10-31
added verification/chapters/ch05-calculations.csv +16 −0
@@ -0,0 +1,16 @@
1+id,chapitre,description,script,test,resultat_attendu,resultat_obtenu,statut,date
2+CALC-05-001,5,Gradient exponentiel du modèle monocentrique simulé gamma = t/(beta y) et demi-distance,analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_gradient_et_frontiere,0.02917 /km ; 23.8 km,0.02917 /km ; 23.8 km,verifie,2026-10-31
3+CALC-05-002,5,Frontière urbaine d_bar (r = ra) et identité r(d_bar) = ra,analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_gradient_et_frontiere,32.29 km ; p(d_bar) = 85.97,32.29 km ; 85.97,verifie,2026-10-31
4+CALC-05-003,5,Condition de Muth p'(d) q(d) = -t vérifiée numériquement sur la solution fermée,analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_condition_de_muth_numerique,-700 à 1e-6 rel.,-700,verifie,2026-10-31
5+CALC-05-004,5,"Prix exact vs exponentiel à 10 et 25 km, q(0)/q(10)/q(d_bar), rente et densité à 10 km (tab. 5.2)",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_valeurs_tableau,"191.61/194.23 (+1.4 %) ; 114.18/125.40 (+9.8 %) ; 92.3/114.3/200.3 m² ; 28.92 ; 0.396","idem",verifie,2026-10-31
6+CALC-05-005,5,"Frontières entre usages d'Alonso (commerces/dense, dense/pavillonnaire, pavillonnaire/agricole)",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestMonocentrique::test_alonso,9.47 ; 14.29 ; 32.22 km,9.47 ; 14.29 ; 32.22 km,verifie,2026-10-31
7+CALC-05-006,5,Cas 1 : effectifs et médianes par tranche de distance (tab. 5.3),analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestCas1::test_tranches,"n = 116/67/37/97/100/64/30/89 ; 3600 et 2684 $/m² ; terrain 1184 m²","idem",verifie,2026-10-31
8+CALC-05-007,5,"Cas 1 : gradients brut (-1.020 %/km), contrôlé (-1.083), aire urbaine ≤16 km (+0.266), quadratique (0.900 ; -0.0697 ; sommet 6.5 km ; -0.493 à 10 km ; -1.89 à 20 km)",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestCas1::test_gradients,"voir description","idem",verifie,2026-10-31
9+CALC-05-008,5,"Cas 1 : coefficient dist_centre du modèle de référence (-0.357 %/km, e.-t. 0.265, t = -1.35), effets de secteur, gradients implicites entre médianes, 1 km = 5 969 $",analysis/python/cases/ch05_rente.py ; traite.cas1.hedonique,analysis/python/tests/test_ch05.py::TestCas1::test_modele_reference,"-0.357 ; -2.2/+8.9/-22.1/-23.1 % ; -0.345 et -0.973 %/km ; 5969 $ ; 29050 $","idem",verifie,2026-10-31
10+CALC-05-009,5,"Cas 4 : valeur par logement, RNE par logement et taux pondéré par RMR ; identité écart = contrib RNE + contrib taux (tab. 5.5)",analysis/python/cases/ch05_rente.py ; traite.cas4.sommaire,analysis/python/tests/test_ch05.py::TestCas4::test_decomposition,"Montréal 206237 … Saguenay 101969 ; Québec -0.248/-0.249 ; Gatineau +0.077/-0.190","idem",verifie,2026-10-31
11+CALC-05-010,5,"Valeur résiduelle du terrain du cas 1 (C_N 397 567,33 ; dépréciation 30 % hypothétique ; V 551 029) et levier",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestResidu::test_valeur_residuelle,"272 732 $ (49.5 %) ; levier 2.02 ; -5 % → -10.1 % ; -10 % → -20.2 %","idem",verifie,2026-10-31
12+CALC-05-011,5,Décomposition de Capozza–Helsley à 10 km (simulation),analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestResidu::test_capozza,40 + 25 + 538.4 + 60 = 663.4 $/m² (81 %),663.4,verifie,2026-10-31
13+CALC-05-012,5,"Capitalisation d'un écart de taxe : exact -dT/(i+tau1) vs approché -dT/i ; 10 pb et 22.4 pb sur 500 000 $ à i = 5 %",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestTaxe::test_formule_exacte_et_approchee,"-8621 (-1.72 %) vs -10000 ; -18906 (-3.78 %) vs -22400 ; ratio 1.16","idem",verifie,2026-10-31
14+CALC-05-013,5,"Taux 2026 : écart Québec–Gatineau 22.4 pb ; taux effectifs 0.5122 (Gatineau, F 1.02) et 0.6785 (Québec, F hypothétique 1.10) ; sujet cas 1 : 2 445 $ + 370 $ ; écart 6+ Québec : 466 $/an, 8 473 $ ; part de la taxe dans le coût d'usage 14 %",analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestTaxe::test_taux_2026,"voir description","idem",verifie,2026-10-31
15+CALC-05-014,5,Grille de sensibilité écart de taux × taux de capitalisation (tab. 5.7),analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestTaxe::test_grille,"-5000 … -125000 ; ratio 4 %/7 % = 1.75","idem",verifie,2026-10-31
16+CALC-05-015,5,Exercices 5.1 à 5.7 (solutions/ch05.tex),analysis/python/cases/ch05_rente.py,analysis/python/tests/test_ch05.py::TestExercices,"voir solutions","idem",verifie,2026-10-31
added verification/chapters/ch05-claims.csv +18 −0
@@ -0,0 +1,18 @@
1+id,chapitre,affirmation,source_id,verification,date,statut,notes
2+CLM-05-001,5,"Ville de Québec, taux de taxe foncière 2026 : 0,7464 $/100 $ (1 à 5 logements) et 0,7697 $ (6 logements et plus), règlement R.V.Q. 3492 ; rôle 2025-2027, marché au 1er juillet 2023",SRC-E-027 ; SRC-B-025,notes-B.md §tableau des villes et notes-E.md ; clés vqtaux2026 et vqrole2025,2026-10-31,verifie,
3+CLM-05-002,5,"Ville de Gatineau, règlement 994-2025 : taux de base 5,224 $/1 000 $ pour 2026 ; annexe I = taux de la taxe générale résidentielle par unité de voisinage",SRC-E-028,notes-E.md ; clé gatineaureglement994 (note de l'entrée),2026-10-31,verifie,
4+CLM-05-003,5,"Gatineau : taux résidentiels par unité de voisinage de 1,613 à 7,544 $/1 000 $ (médiane 5,233 sur 1 092 unités)",SRC-E-028,Dépouillement de l'annexe I consigné dans notes-E.md (calc.) ; non refait dans ce chapitre,2026-10-31,partiellement_verifie,Présenté dans le texte comme un dépouillement non revérifié
5+CLM-05-004,5,"Facteur comparatif 2026 : Gatineau 1,02 ; Montréal 1,00",SRC-B-? (gatmutations ; mtlmutations2026),Notes des entrées library.bib gatmutations et mtlmutations2026 (pages municipales consultées le 2026-10-31),2026-10-31,verifie,
6+CLM-05-005,5,"Montréal 2026 : taxe foncière générale résidentielle 0,4631 $/100 $ ; taxes d'arrondissement en sus ; document officiel des taux non lisible",SRC-E-031 ; SRC-B-023 ; SRC-B-024,Le Devoir 2026-01-12 (source secondaire) ; page montreal.ca (SRC-E-030 inaccessible),2026-10-31,partiellement_verifie,À confirmer sur le PDF officiel « Taux de taxes 2026 »
7+CLM-05-006,5,"Taxe scolaire 2026-2027 : 0,07899 $/100 $ d'évaluation uniformisée ajustée, exemption de 25 000 $ (LIP art. 303 à 303.6)",SRC-E-026 ; SRC-B-035,Communiqué CSS des Hautes-Rivières (secondaire) ; LIP lue dans notes-B,2026-10-31,partiellement_verifie,Avis officiel (2026) 158 G.O. 1 520 non consulté
8+CLM-05-007,5,"LFM : valeur réelle et date de référence (art. 42-46) ; taux variés par catégorie, taux de base = catégorie résiduelle, terrains vagues desservis jusqu'au quadruple (art. 244.29-244.49) ; proportion médiane et facteur comparatif (art. 264)",SRC-B-? (lfm),notes-B.md §LFM (texte à jour au 15 octobre 2026),2026-10-31,verifie,
9+CLM-05-008,5,"Oates (1969) : 53 municipalités du New Jersey ; à dépenses données un taux de taxe plus élevé est associé à des valeurs plus faibles ; dépenses scolaires associées à des valeurs plus fortes ; appui à Tiebout (1956)",SRC-05-001 ; SRC-05-002,Métadonnées Crossref (DOI 10.1086/259584 ; 10.1086/257839) vérifiées le 2026-10-31 ; contenu d'après la connaissance de la littérature,2026-10-31,partiellement_verifie,Référence complète dans lib-ch05.bib ; non citée par clé (absente de library.bib)
10+CLM-05-009,5,"Yinger (1982) : la capitalisation rend le tri de Tiebout efficace ; complète si l'offre de logements est fixe",SRC-05-003,Crossref DOI 10.1086/261101 vérifié ; contenu d'après la littérature,2026-10-31,partiellement_verifie,lib-ch05.bib
11+CLM-05-010,5,"Brueckner (1987) : exposition unifiée du modèle de Muth–Mills, Handbook of Regional and Urban Economics vol. 2",SRC-05-004,Crossref DOI 10.1016/S1574-0080(87)80006-8 vérifié,2026-10-31,verifie,lib-ch05.bib
12+CLM-05-011,5,"Coffey et Shearmur : répartition intramétropolitaine de l'emploi à Montréal 1981-1996 (Urban Geography 2001) ; comparaison Toronto, Montréal, Vancouver, Ottawa–Hull (Environment and Planning A 2002)",SRC-05-005 ; SRC-05-006,Crossref DOI 10.2747/0272-3638.22.2.106 et 10.1068/a33214 vérifiés,2026-10-31,verifie,lib-ch05.bib ; mention en toutes lettres dans le texte
13+CLM-05-012,5,"Knoll, Schularick et Steger (2017) : environ 80 % de la hausse des prix réels des logements depuis 1950 attribuable au prix des terrains",SRC-D (knollSchularickSteger2017),Résumé de l'article (AER 107(2)) ; clé dans library.bib,2026-10-31,verifie,
14+CLM-05-013,5,"Davis et Heathcote (2007) : part du terrain dans la valeur des logements en hausse depuis les années 1970 ; volatilité des prix des logements provenant du terrain",SRC-D (davisHeathcote2007),Résumé de l'article (JME 54(8)) ; formulation prudente sans chiffre de part,2026-10-31,verifie,
15+CLM-05-014,5,"Albouy, Ehrlich et Shin (2018) : part du terrain variable selon les métropoles, croissante avec la taille et la productivité",SRC-D (albouyEhrlichShin2018),Résumé de l'article (REStat 100(3)),2026-10-31,verifie,
16+CLM-05-015,5,"APCIQ T3 2026 : médiane unifamiliale Aylmer 530 000 $ > Hull 475 000 $ (Aylmer plus éloigné et plus cher)",SRC-E-002,notes-E.md et README des données synthétiques ; clé apciqgatineaut32026,2026-10-31,verifie,
17+CLM-05-016,5,"Degré de capitalisation kappa des écarts de taxe : aucune estimation québécoise récente connue ; valeurs 0,6 et 1 = bornes de travail",—,Déclaré comme non vérifié dans l'encadré limites,2026-10-31,non_verifie,
18+CLM-05-017,5,"Paramètres de la simulation monocentrique (y 80 000 ; t 700 ; beta 0,30 ; alpha 0,30 ; p0 260 ; r0 80 ; ra 2 ; i 5 %) : hypothèses pédagogiques, non des estimations",—,Déclarés dans ch05_rente.PARAMS et tab. 5.2,2026-10-31,non_verifie,Ordres de grandeur seulement
added verification/chapters/ch05-figures.csv +6 −0
@@ -0,0 +1,6 @@
1+fichier,chapitre,script,donnees,type_donnees,legende_courte,statut
2+ch05/ch05-fig-gradient-monocentrique.pdf,5,analysis/python/figures/ch05_gradient.py,analysis/python/cases/ch05_rente.py (PARAMS et ALONSO ; paramètres pédagogiques déclarés),synthetique,"Modèle monocentrique simulé : courbes d'enchère d'Alonso et enveloppe ; gradients de prix, de rente du sol et de densité de Muth–Mills [simulation, paramètres déclarés]",verifie
3+ch05/ch05-fig-surface-rente.pdf,5,analysis/python/figures/ch05_surface.py,paramètres déclarés dans le script (deux centres exponentiels + rente agricole),synthetique,"Surface de rente bicentrique simulée (courbes de niveau) [simulation, paramètres déclarés]",verifie
4+ch05/ch05-fig-prix-distance-cas1.pdf,5,analysis/python/figures/ch05_cas1_distance.py,data/synthetic/cas1_gatineau_ventes.csv,synthetique,"Cas 1 : prix par m² habitable et distance au centre, médianes par tranche, gradient exponentiel ajusté [données synthétiques]",verifie
5+ch05/ch05-fig-capitalisation-taxe.pdf,5,analysis/python/figures/ch05_capitalisation.py,analysis/python/cases/ch05_rente.py (capitalisation_taxe) ; taux 2026 Québec/Gatineau (vqtaux2026 ; gatineaureglement994),schema,"Sensibilité de la capitalisation d'un écart de taxe foncière selon le taux de capitalisation et le degré de capitalisation [calculs, aucune transaction]",verifie
6+ch05/ch05-fig-valeur-logement-rmr.pdf,5,analysis/python/figures/ch05_rmr.py,data/synthetic/cas4_portefeuille.csv,synthetique,"Cas 4 : valeur par logement par RMR et décomposition de l'écart avec Montréal (RNE par logement vs taux) [données synthétiques]",verifie
added verification/chapters/ch05-registry.csv +8 −0
@@ -0,0 +1,8 @@
1+id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes
2+SRC-05-001,article,"The Effects of Property Taxes and Local Public Spending on Property Values: An Empirical Study of Tax Capitalization and the Tiebout Hypothesis (Oates), Journal of Political Economy 77(6) 957-971",University of Chicago Press,1969,https://doi.org/10.1086/259584,2026-10-31,verifie,5,"Métadonnées confirmées par l'API Crossref le 2026-10-31 ; entrée oates1969 dans lib-ch05.bib (non citée par clé)"
3+SRC-05-002,article,"A Pure Theory of Local Expenditures (Tiebout), Journal of Political Economy 64(5) 416-424",University of Chicago Press,1956,https://doi.org/10.1086/257839,2026-10-31,verifie,5,"Crossref ; tiebout1956 dans lib-ch05.bib"
4+SRC-05-003,article,"Capitalization and the Theory of Local Public Finance (Yinger), Journal of Political Economy 90(5) 917-943",University of Chicago Press,1982,https://doi.org/10.1086/261101,2026-10-31,verifie,5,"Crossref ; yinger1982 dans lib-ch05.bib"
5+SRC-05-004,chapitre,"The Structure of Urban Equilibria: A Unified Treatment of the Muth-Mills Model (Brueckner), Handbook of Regional and Urban Economics vol. 2, 821-845",Elsevier,1987,https://doi.org/10.1016/S1574-0080(87)80006-8,2026-10-31,verifie,5,"Crossref ; ISBN 9780444879707 ; brueckner1987 dans lib-ch05.bib"
6+SRC-05-005,article,"Intrametropolitan Employment Distribution in Montreal, 1981-1996 (Coffey et Shearmur), Urban Geography 22(2) 106-129",Taylor & Francis (Bellwether),2001,https://doi.org/10.2747/0272-3638.22.2.106,2026-10-31,verifie,5,"Crossref ; coffeyShearmur2001 dans lib-ch05.bib"
7+SRC-05-006,article,"A Tale of Four Cities: Intrametropolitan Employment Distribution in Toronto, Montreal, Vancouver, and Ottawa-Hull, 1981-1996 (Shearmur et Coffey), Environment and Planning A 34(4) 575-598",SAGE (Pion),2002,https://doi.org/10.1068/a33214,2026-10-31,verifie,5,"Crossref ; shearmurCoffey2002 dans lib-ch05.bib"
8+SRC-05-007,article,"One Hundred Fifty Years of Land Values in Chicago: A Nonparametric Approach (McMillen), Journal of Urban Economics 40(1) 100-124",Elsevier,1996,https://doi.org/10.1006/juec.1996.0025,2026-10-31,verifie,5,"Crossref ; mcmillen1996 dans lib-ch05.bib ; non mentionné dans le texte (réserve pour le ch. 19)"
added verification/chapters/ch06-calculations.csv +16 −0
@@ -0,0 +1,16 @@
1+id,chapitre,description,script,test,resultat_attendu,resultat_obtenu,statut,date
2+CALC-06-001,6,Table de mortalité synthétique Gompertz–Makeham (A=0.0004 B=0.000025 c=1.102 ; ω=111) : espérances de vie et survies,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestMortalite,"e_55 25.9 ; e_65 17.9 ; e_75 11.1 ; e_85 6.2 ; 10p65 0.789 ; 20p65 0.424",idem,verifie,2026-10-31
3+CALC-06-002,6,Valeur de la pleine propriété du cas 1 (traite.cas1 prédiction hédonique) arrondie et valeur locative nette L=(r−g)V,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_valeur_cas1_et_loyer,"637 952.85 → 638 000 ; L = 22 330 $/an (1 861 $/mois)",idem,verifie,2026-10-31
4+CALC-06-003,6,Usufruit à terme fixe 10/20/30 ans (U ; NP ; NP/V) et identité NP = V((1+g)/(1+r))^n,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_terme_fixe,"183 443/454 557 (71.2 %) ; 314 141/323 859 (50.8 %) ; 407 260/230 740 (36.2 %)",idem,verifie,2026-10-31
5+CALC-06-004,6,Usufruit viager 55/65/75/85 ans : U ; NP ; NP/V ; annuité viagère ; rente équivalente (art. 1171) ; identité U + NP_direct = V,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_viager,"65 ans : 280 357 / 357 643 (56.1 %) ; 12.555 ; 25 335 $/an ; 55 : 43.6 % ; 75 : 69.0 % ; 85 : 80.6 %",idem,verifie,2026-10-31
6+CALC-06-005,6,Approximation par la durée espérée (n_eff = e_x + 1/2) à 65 ans et inégalité de Jensen (NP viager ≥ NP approx) sur 50–95 ans × 3 taux,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_approximation_terme_fixe_sous_estime_np,"n_eff 18.36 ; NP 53.7 % ; écart 15 271 $",idem,verifie,2026-10-31
7+CALC-06-006,6,Grille NP/V âge (55–85) × taux (4/5/6 %) et monotonie,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestUsufruit::test_grille_sensibilite,"65 ans : 65.4 / 56.1 / 48.4 % ; écart 2 pts de taux ≈ 108 000 $",idem,verifie,2026-10-31
8+CALC-06-007,6,Emphytéose de référence (RNE_1 cas 3 = 89 955.75 ; r 7 % ; g 2.5 % ; rente 30 000 ; n = 35) : V pleine ; V emph ; rentes ; reprise ; somme,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestEmphyteose::test_reference,"1 999 017 ; 1 166 242 (58.3 %) ; 388 430 ; 444 344 ; 832 774 ; somme = V",idem,verifie,2026-10-31
9+CALC-06-008,6,Grille emphytéose selon la durée restante (60 → 5 ans) et identité somme = V pour n = 1…100,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestEmphyteose,"60 ans : 71.3 % ; 20 ans : 41.8 % ; 5 ans : 13.2 %",idem,verifie,2026-10-31
10+CALC-06-009,6,Emphytéose avec taux du propriétaire 5.5 % : V prop et excédent de la somme sur V,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestEmphyteose::test_taux_distincts,"1 190 025 ; somme 2 356 268 ; +357 251",idem,verifie,2026-10-31
11+CALC-06-010,6,Part indivise 50 % du cas 1 avec décote 0/10/20 %,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_indivision,"319 000 ; 287 100 ; 255 200",idem,verifie,2026-10-31
12+CALC-06-011,6,Servitude de non-construction 120 m² / 620 m² par l'élasticité prix-terrain du modèle hédonique cas 1 (0.0937),analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_servitude,"ΔV 12 725 $ (2.0 %)",idem,verifie,2026-10-31
13+CALC-06-012,6,Rang hypothécaire : produit net 560 000 ; créances 455 000 / 90 000 / 40 000,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_rang,"3e rang recouvre 15 000 (37.5 %)",idem,verifie,2026-10-31
14+CALC-06-013,6,Droits de mutation 2026 (tranches 62 900 / 315 000 ; 0.5/1/1.5 %) sur 638 000 $ et sur 750 000 $ avec taux municipal 2 % > 500 000 $,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_mutation,"314.50 + 2 521.00 + 4 845.00 = 7 680.50 (1.204 %) ; 9 360.50 + 1 250.00 = 10 610.50",idem,verifie,2026-10-31
15+CALC-06-014,6,Quantum d'un vice caché (prix 520 000 ; réparations 46 000 ; plus-value 9 000 ; autres 6 500) et budget registre 5 comparables,analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestAutres::test_vice_et_registre,"37 000 (7.1 %) ; 43 500 si vendeur connaissait ; 15 $",idem,verifie,2026-10-31
16+CALC-06-015,6,Exercices 6.1 à 6.7 (solutions/ch06.tex),analysis/python/cases/ch06_demembrements.py,analysis/python/tests/test_ch06.py::TestExercices,voir solutions/ch06.tex,idem,verifie,2026-10-31
added verification/chapters/ch06-figures.csv +5 −0
@@ -0,0 +1,5 @@
1+fichier,chapitre,script,donnees,type_donnees,legende_courte,statut
2+ch06/organigramme-quel-droit (TikZ),6,manuscript/chapters/ch06.tex,,schema,"Organigramme « quel droit évalue-t-on ? » : démembrement, modalité ou pleine propriété grevée (art. 947, 1009, 1119 C.c.Q.)",verifie
3+ch06/fiche-index-immeubles (TikZ),6,manuscript/chapters/ch06.tex,,schema,"Lecture d'une fiche immobilière de l'index des immeubles (exemple fictif) : chaîne des titres et charges réelles opposables",verifie
4+ch06/ch06-fig-usufruit.pdf,6,analysis/python/figures/ch06_usufruit.py,"analysis/python/cases/ch06_demembrements.py (table de mortalité synthétique Gompertz–Makeham ; V du cas 1 via traite.cas1)",synthetique,"Courbes de survie synthétiques et part de la nue-propriété selon l'âge de l'usufruitier (r = 4/5/6 %) avec approximation par la durée espérée [données synthétiques]",verifie
5+ch06/ch06-fig-emphyteose.pdf,6,analysis/python/figures/ch06_emphyteose.py,"analysis/python/cases/ch06_demembrements.py (RNE du cas 3 via traite.cas3 ; hypothèses r = 7 %, g = 2,5 %, rente 30 000 $)",synthetique,"Partage de la pleine propriété entre emphytéote et propriétaire (rentes, reprise) selon la durée restante, seuils 40 et 50 ans [données synthétiques]",verifie
added verification/chapters/ch06-registry.csv +3 −0
@@ -0,0 +1,3 @@
1+id,type,titre,organisme,version_ou_date,url,date_consultation,statut,utilise_dans,notes
2+SRC-06-001,donnees,"Tableau 13-10-0114-01 — Espérance de vie et autres éléments de la table complète de mortalité, estimations sur trois ans, Canada, toutes les provinces sauf l'Île-du-Prince-Édouard",Statistique Canada,"Fréquence annuelle ; date de diffusion 2026-01-13",https://www150.statcan.gc.ca/t1/tbl1/fr/tv.action?pid=1310011401,2026-10-31,verifie,6,"Page du tableau ouverte (titre, fréquence, date de diffusion lus) ; aucune valeur de la table n'a été téléchargée ni citée : le chapitre renvoie à cette source pour les évaluations réelles et emploie une table synthétique déclarée pour l'exemple."
3+SRC-06-002,loi,"Code civil du Québec (RLRQ, c. CCQ-1991) — articles complémentaires lus pour le chapitre 6",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,6,"Complément de SRC-A-001 : texte refondu téléchargé (curl, User-Agent navigateur) et articles lus intégralement : 1009, 1022, 1030, 1110-1118, 1121, 1124-1126, 1129-1130, 1137, 1151-1152, 1162-1163, 1171, 1173, 1175-1176, 1182, 1186, 1189, 1191, 1199-1200, 1203, 1209-1210, 1727-1729, 2945, 2947 (voir ch06-claims.csv)."
modified verification/chapters/ch08-claims.csv +2 −2
@@ -11,12 +11,12 @@ CLM-08-009,8,"LAU art. 145.15-145.16 (PIIA) ; 145.30.1-145.30.3 (règlement d'in
11 CLM-08-010,8,"Loi modifiant la Loi sur l'aménagement et l'urbanisme et d'autres dispositions (PL 16) : présentée le 21 mars 2023, sanctionnée le 1er juin 2023, LQ 2023 c. 12, en vigueur le jour de la sanction sauf exceptions",SRC-B-039;SRC-08-001,Page du projet de loi n° 16 (Assemblée nationale) lue par WebFetch le 2026-10-31 ; notes-B.md,2026-10-31,verifie,Contenu détaillé des autres mesures de la réforme NON dépouillé (déclaré dans limites) 11 CLM-08-010,8,"Loi modifiant la Loi sur l'aménagement et l'urbanisme et d'autres dispositions (PL 16) : présentée le 21 mars 2023, sanctionnée le 1er juin 2023, LQ 2023 c. 12, en vigueur le jour de la sanction sauf exceptions",SRC-B-039;SRC-08-001,Page du projet de loi n° 16 (Assemblée nationale) lue par WebFetch le 2026-10-31 ; notes-B.md,2026-10-31,verifie,Contenu détaillé des autres mesures de la réforme NON dépouillé (déclaré dans limites)
12 CLM-08-011,8,"De grandes villes, dont Montréal, ont adopté un règlement d'inclusion en vertu des art. 145.30.1 et s.",SRC-B-038,Mention « Règlement pour une métropole mixte » dans normes-B.csv (NRM-B-072, colonne effet) ; règlement municipal non consulté,2026-10-31,partiellement_verifie,Paramètres non cités dans le texte 12 CLM-08-011,8,"De grandes villes, dont Montréal, ont adopté un règlement d'inclusion en vertu des art. 145.30.1 et s.",SRC-B-038,Mention « Règlement pour une métropole mixte » dans normes-B.csv (NRM-B-072, colonne effet) ; règlement municipal non consulté,2026-10-31,partiellement_verifie,Paramètres non cités dans le texte
13 CLM-08-012,8,"Procédure de modification du règlement de zonage : consultation publique et, selon les cas, approbation par les personnes habiles à voter",SRC-B-038,Connaissance générale de la LAU ; articles non relevés dans notes-B.md,2026-10-31,partiellement_verifie,Formulation générale sans numéro d'article ; à préciser à l'harmonisation (art. 123 et s. LAU) 13 CLM-08-012,8,"Procédure de modification du règlement de zonage : consultation publique et, selon les cas, approbation par les personnes habiles à voter",SRC-B-038,Connaissance générale de la LAU ; articles non relevés dans notes-B.md,2026-10-31,partiellement_verifie,Formulation générale sans numéro d'article ; à préciser à l'harmonisation (art. 123 et s. LAU)
14−CLM-08-013,8,"LFM art. 46 al. 3 (état juridique et environnement) ; art. 174 par. 19° (restriction juridique) ; art. 231.3 (375 $/ha scolaire)",SRC-B-030,normes-B.csv NRM-B-014, 031, 036 ; notes-B.md,2026-10-31,verifie,SRC-B-030 = LFM si tel est l'identifiant du registre B (sinon voir registry-B.csv « Loi sur la fiscalité municipale ») 14+CLM-08-013,8,"LFM art. 46 al. 3 (état juridique et environnement) ; art. 174 par. 19° (restriction juridique) ; art. 231.3 (375 $/ha scolaire)",SRC-B-001,normes-B.csv NRM-B-014, 031, 036 ; notes-B.md,2026-10-31,verifie,
15 CLM-08-014,8,"LPTAA art. 26, 28-29, 31.1, 40, 58-58.2, 61.1, 62 al. 2, 101-103, 105 (60 m / 120 m)",SRC-B-040,normes-B.csv NRM-B-075 à 081 ; notes-B.md §ch. 25,2026-10-31,verifie, 15 CLM-08-014,8,"LPTAA art. 26, 28-29, 31.1, 40, 58-58.2, 61.1, 62 al. 2, 101-103, 105 (60 m / 120 m)",SRC-B-040,normes-B.csv NRM-B-075 à 081 ; notes-B.md §ch. 25,2026-10-31,verifie,
16 CLM-08-015,8,"Modifications réglementaires de la CPTAQ annoncées pour le 2 juillet 2026",SRC-B-041,Non vérifié (notes-B.md « Points non vérifiés » n° 11) ; signalé comme tel dans l'encadré,2026-10-31,non_verifie, 16 CLM-08-015,8,"Modifications réglementaires de la CPTAQ annoncées pour le 2 juillet 2026",SRC-B-041,Non vérifié (notes-B.md « Points non vérifiés » n° 11) ; signalé comme tel dans l'encadré,2026-10-31,non_verifie,
17 CLM-08-016,8,"Cadre des zones inondables en vigueur le 1er mars 2026, modifié le 29 juillet 2026 ; LQE art. 46.0.2 al. 3 par. 2.1° ; classes d'intensité (probabilité 25 ans > 70 / 70-20 / 20-7 % × profondeur > 60 / 30-60 / 0-30 cm ; embâcles = très élevée) ; nouvelle résidence permise sous conditions (faible, faible courant, mobilité long terme) et interdite (littoral, rive, très élevée/élevée/modérée, grand courant, mobilité court terme) ; reconstruction en littoral art. 83",SRC-B-045;SRC-B-048;SRC-B-049;SRC-B-050;SRC-B-042,notes-B.md §43.2 ; normes-B.csv NRM-B-088 à 092,2026-10-31,verifie,Correspondance ancienne/nouvelle génération et règles détaillées par classe NON extraites (déclaré) 17 CLM-08-016,8,"Cadre des zones inondables en vigueur le 1er mars 2026, modifié le 29 juillet 2026 ; LQE art. 46.0.2 al. 3 par. 2.1° ; classes d'intensité (probabilité 25 ans > 70 / 70-20 / 20-7 % × profondeur > 60 / 30-60 / 0-30 cm ; embâcles = très élevée) ; nouvelle résidence permise sous conditions (faible, faible courant, mobilité long terme) et interdite (littoral, rive, très élevée/élevée/modérée, grand courant, mobilité court terme) ; reconstruction en littoral art. 83",SRC-B-045;SRC-B-048;SRC-B-049;SRC-B-050;SRC-B-042,notes-B.md §43.2 ; normes-B.csv NRM-B-088 à 092,2026-10-31,verifie,Correspondance ancienne/nouvelle génération et règles détaillées par classe NON extraites (déclaré)
18 CLM-08-017,8,"LQE art. 31.68 : liste municipale publique des terrains contaminés ; permis conditionnels (LAU 120-121)",SRC-B-042,normes-B.csv NRM-B-085 ; LAU 120-121 non lus (notes-B n° 10),2026-10-31,partiellement_verifie,Le texte ne cite que l'art. 31.68 LQE 18 CLM-08-017,8,"LQE art. 31.68 : liste municipale publique des terrains contaminés ; permis conditionnels (LAU 120-121)",SRC-B-042,normes-B.csv NRM-B-085 ; LAU 120-121 non lus (notes-B n° 10),2026-10-31,partiellement_verifie,Le texte ne cite que l'art. 31.68 LQE
19 CLM-08-018,8,"Laroda 2025 CSC 44 : cession excédentaire pour fins de parcs → réserve de terrains → indemnité = valeur marchande des terrains à la date pertinente (15 déc. 2015)",SRC-B-075,Cause en bref de la CSC (notes-B.md) ; arrêt intégral non lu,2026-10-31,partiellement_verifie,Aucun extrait textuel cité 19 CLM-08-018,8,"Laroda 2025 CSC 44 : cession excédentaire pour fins de parcs → réserve de terrains → indemnité = valeur marchande des terrains à la date pertinente (15 déc. 2015)",SRC-B-075,Cause en bref de la CSC (notes-B.md) ; arrêt intégral non lu,2026-10-31,partiellement_verifie,Aucun extrait textuel cité
20−CLM-08-019,8,"PHMU : quatre critères (légalement permis, physiquement possible, financièrement faisable, maximalement productif)",SRC-D-003,appraisal2026 (library.bib) ; doctrine standard,2026-10-31,verifie, 20+CLM-08-019,8,"PHMU : quatre critères (légalement permis, physiquement possible, financièrement faisable, maximalement productif)",SRC-D-001,appraisal2026 (library.bib) ; doctrine standard,2026-10-31,verifie,
21 CLM-08-020,8,"Données ouvertes de zonage : Ville de Québec « Zonage municipal — Zones » (métadonnées 2026-10-04) et Ville de Gatineau « Zonage » (2025-04-24), CC-BY 4.0",SRC-B-019;SRC-B-021,registry-B.csv ; library.bib vqzonage/gatzonage,2026-10-31,verifie, 21 CLM-08-020,8,"Données ouvertes de zonage : Ville de Québec « Zonage municipal — Zones » (métadonnées 2026-10-04) et Ville de Gatineau « Zonage » (2025-04-24), CC-BY 4.0",SRC-B-019;SRC-B-021,registry-B.csv ; library.bib vqzonage/gatzonage,2026-10-31,verifie,
22 CLM-08-021,8,"Effet d'un rezonage de +6 à +9 %, prime d'option de 22,7 %, surplus dérogatoire 44 000 $, valeur attendue agricole 90 796 $",,DONNÉES SYNTHÉTIQUES / hypothèses pédagogiques déclarées (encadré synthetique + limites) ; aucun marché réel,2026-10-31,verifie,Ne pas citer comme référence empirique 22 CLM-08-021,8,"Effet d'un rezonage de +6 à +9 %, prime d'option de 22,7 %, surplus dérogatoire 44 000 $, valeur attendue agricole 90 796 $",,DONNÉES SYNTHÉTIQUES / hypothèses pédagogiques déclarées (encadré synthetique + limites) ; aucun marché réel,2026-10-31,verifie,Ne pas citer comme référence empirique
added verification/chapters/ch08.md +39 −0
@@ -0,0 +1,39 @@
1+# Chapitre 8 — Zonage et urbanisme : bilan de rédaction (2026-10-31)
2+
3+## Compteurs
4+- Prose : ≈ 11 850 mots hors tableaux, figures et équations (≈ 15 100 avec la regex brute de `tools/check_manuscript.py`) ; 39 pages compilées (chapitre + solutions + bibliographie du chapitre).
5+- Figures : 6 — 3 PDF Matplotlib synthétiques (`ch08-fig-carte-zones.pdf`, `ch08-fig-rezonage-paires.pdf`, `ch08-fig-option-sensibilite.pdf`) + 3 schémas TikZ dans le `.tex` (hiérarchie des instruments LAU, arbre de décision des recours, grille des usages et des normes).
6+- Tableaux : 9 (instruments LAU, dispositions LAU, quatre mécanismes comparés, dispositions LPTAA, grille H1/H2 fictive, paires et doubles différences, valeur résiduelle, droits acquis selon λ, sensibilité p × T).
7+- Équations numérotées : 12 (logements admissibles, COS, contribution parcs, surplus dérogatoire perpétuel et à horizon fini, valeur attendue en zone agricole, max usage/redéveloppement, valeur résiduelle, espérance pondérée, paires, DiD 2×2, DiD par régression) ; 1 définition, 1 proposition avec démonstration, 1 exemple intégral.
8+- Exercices : 7 (niveaux 1, 1, 2, 2, 2, 3, 3) ; solutions détaillées dans `solutions/ch08.tex`, chiffres testés (`TestExercices`).
9+- Encadrés : objectifs, synthetique, exemple, pratique (lecture d'une grille en 5 étapes), 3 × quebec (zones inondables 2026 ; zone agricole/CPTAQ ; où trouver le zonage), erreurs, limites, synthese.
10+- Citations : 30 clés, toutes déjà dans `references/library.bib` (lau, lptaa, lqe, lfm, zonesInond2026, loi2023c12, laroda2025, cptaq, vqzonage, gatzonage, appraisal2026, binPolasky2004, glaeserGyourkoSaiz2008, saiz2010, glaeserGyourko2005, rosenthalHelsley1994, dyeMcmillen2007, mcmillenOsullivan2013, clappSalavei2010, clappBardosWong2012, munneke1996, munnekeWomack2020, titman1985, capozzaHelsley1990, cunningham2006, kestensTheriaultDesrosiers2006, theriaultDesrosiers2011, byrne1996, geltnerMillerClaytonEichholtz2014). `lib-ch08.bib` : 1 entrée nouvelle (`assnatPL16`, page du PL 16 lue le 2026-10-31), non citée.
11+
12+## Contrôles
13+- `tools/compile_chapter.sh 8` → `OK ch08 : 39 pages, 0 references/citations non definies, 0 overfull hbox`.
14+- `python3 -m pytest -q analysis/python/tests/test_ch08.py` → 20 passed.
15+- `python3 tools/check_manuscript.py --no-log` exécuté (aucun problème propre à ch08 signalé ; les figures sont inscrites dans `verification/chapters/ch08-figures.csv`, pas dans le CSV global, conformément à la règle de collision).
16+- PDF relu (planche de contact + pages 3, 5, 11, 13, 20, 23, 27, 28) : aucun débordement ; la grille TikZ occupe le haut de la p. 27.
17+- Convention `\cref` sans article : toutes les occurrences portent l'article ou la préposition (grep vérifié : « le/Le \cref », « la/La \cref », « du \cref », « et \cref », « l'\cref{eq} »).
18+
19+## Données synthétiques
20+`data/synthetic/ch08_zonage_lots.csv` (400 lots) et `ch08_zonage_ventes.csv` (482 ventes) écrits par `analysis/python/cases/ch08_zonage.py` (graine 20261031) ; section ajoutée en fin de `data/synthetic/README.md` (ajout seul, rien d'autre modifié). La municipalité « Val-Fictif » est entièrement fictive ; prime de rezonage injectée 0,03 + 0,0015·max(âge − 20, 0) en ln P ; aucune calibration sur un marché réel (ordres de grandeur du cas 1 pour la zone H1). Hypothèses de coûts/loyers/valeurs agricoles dans le dictionnaire `EXEMPLE` du script.
21+
22+## Fichiers livrés
23+`manuscript/chapters/ch08.tex`, `solutions/ch08.tex`, `analysis/python/cases/ch08_zonage.py`, `analysis/python/figures/ch08_{carte_zones,rezonage_paires,option_sensibilite}.py`, `analysis/python/tests/test_ch08.py`, `assets/figures/ch08/*.pdf`, `data/synthetic/ch08_zonage_*.csv`, `verification/chapters/ch08-{figures,calculations,claims,registry}.csv`, `references/lib-ch08.bib`, ce bilan. Rien n'a été écrit dans les CSV globaux de `verification/`, dans `sources/registry.csv` ni dans `library.bib` ; `traite/*.py` inchangé (seule `comparables.ajustement_temps_taux` et `ventes_appariees` sont réutilisées).
24+
25+## Points non vérifiés ou partiellement vérifiés (voir ch08-claims.csv)
26+1. LAU art. 117.6 (évaluation du site pour la contribution aux parcs par un évaluateur agréé) : non lu ; mentionné avec réserve explicite (CLM-08-005).
27+2. Intitulé de la loi 2026, c. 18 ayant modifié l'art. 118 LAU : non vérifié ; le chapitre cite le texte consolidé (CLM-08-007).
28+3. Contenu de la réforme 2023, c. 12 au-delà des art. 117.1-117.4 : non dépouillé (page MAMH Muni-Express redirigée vers un moteur de recherche ; page de l'Assemblée nationale sans notes explicatives) ; le texte le déclare (CLM-08-010).
29+4. Règlement d'inclusion de Montréal : mention générique seulement, règlement non consulté (CLM-08-011).
30+5. Procédure de modification du zonage (consultation, approbation référendaire) : formulation générale sans numéro d'article (CLM-08-012) — à préciser à l'harmonisation.
31+6. Zones inondables : correspondance ancienne/nouvelle génération et règles par classe non extraites (déclaré dans l'encadré) ; LAU 120-121 non lus (CLM-08-016, 017).
32+7. Laroda 2025 CSC 44 : résumé d'après la « cause en bref », arrêt non lu (CLM-08-018).
33+8. Modifications réglementaires CPTAQ de juillet 2026 : non vérifiées (CLM-08-015).
34+
35+## Suggestions pour l'harmonisation
36+- Le ch. 41 (PHMU) peut réutiliser `valeur_residuelle_redeveloppement`, `prime_option` et `valeur_attendue_rezonage` (candidates à un module `traite/developpement.py`) et reprendre la maison de 1958 de Val-Fictif comme cas de démolition-reconstruction ; le ch. 43 reprend l'encadré « zones inondables 2026 » sans le dupliquer (renvoi croisé déjà posé).
37+- Le ch. 25 (terrain) et le ch. 36 (identification causale) peuvent renvoyer aux équations (8.3), (8.9) et (8.12)-(8.14) ; le ch. 17 à la fonction `apparier` pour les ventes appariées.
38+- Si `library.bib` intègre `assnatPL16`, ajouter `\parencite{assnatPL16}` à la première phrase de la section 8.4.1.
39+- Le chapitre compte 9 sections (les 7 de l'ARCHITECTURE + exemple intégral + sensibilité) ; les sections 8.7-8.8 pourraient être fusionnées en une seule si l'auteur préfère coller strictement au plan.
modified verification/claims.csv +17 −0
@@ -240,3 +240,20 @@ CLM-08-018,8,Laroda 2025 CSC 44 : cession excédentaire pour fins de parcs → r
240 CLM-08-019,8,"PHMU : quatre critères (légalement permis, physiquement possible, financièrement faisable, maximalement productif)",SRC-D-003,appraisal2026 (library.bib) ; doctrine standard,2026-10-31,verifie, 240 CLM-08-019,8,"PHMU : quatre critères (légalement permis, physiquement possible, financièrement faisable, maximalement productif)",SRC-D-003,appraisal2026 (library.bib) ; doctrine standard,2026-10-31,verifie,
241 CLM-08-020,8,"Données ouvertes de zonage : Ville de Québec « Zonage municipal — Zones » (métadonnées 2026-10-04) et Ville de Gatineau « Zonage » (2025-04-24), CC-BY 4.0",SRC-B-019;SRC-B-021,registry-B.csv ; library.bib vqzonage/gatzonage,2026-10-31,verifie, 241 CLM-08-020,8,"Données ouvertes de zonage : Ville de Québec « Zonage municipal — Zones » (métadonnées 2026-10-04) et Ville de Gatineau « Zonage » (2025-04-24), CC-BY 4.0",SRC-B-019;SRC-B-021,registry-B.csv ; library.bib vqzonage/gatzonage,2026-10-31,verifie,
242 CLM-08-021,8,"Effet d'un rezonage de +6 à +9 %, prime d'option de 22,7 %, surplus dérogatoire 44 000 $, valeur attendue agricole 90 796 $",,DONNÉES SYNTHÉTIQUES / hypothèses pédagogiques déclarées (encadré synthetique + limites) ; aucun marché réel,2026-10-31,verifie,Ne pas citer comme référence empirique 242 CLM-08-021,8,"Effet d'un rezonage de +6 à +9 %, prime d'option de 22,7 %, surplus dérogatoire 44 000 $, valeur attendue agricole 90 796 $",,DONNÉES SYNTHÉTIQUES / hypothèses pédagogiques déclarées (encadré synthetique + limites) ; aucun marché réel,2026-10-31,verifie,Ne pas citer comme référence empirique
243+CLM-05-001,5,"Ville de Québec, taux de taxe foncière 2026 : 0,7464 $/100 $ (1 à 5 logements) et 0,7697 $ (6 logements et plus), règlement R.V.Q. 3492 ; rôle 2025-2027, marché au 1er juillet 2023",SRC-E-027 ; SRC-B-025,notes-B.md §tableau des villes et notes-E.md ; clés vqtaux2026 et vqrole2025,2026-10-31,verifie,
244+CLM-05-002,5,"Ville de Gatineau, règlement 994-2025 : taux de base 5,224 $/1 000 $ pour 2026 ; annexe I = taux de la taxe générale résidentielle par unité de voisinage",SRC-E-028,notes-E.md ; clé gatineaureglement994 (note de l'entrée),2026-10-31,verifie,
245+CLM-05-003,5,"Gatineau : taux résidentiels par unité de voisinage de 1,613 à 7,544 $/1 000 $ (médiane 5,233 sur 1 092 unités)",SRC-E-028,Dépouillement de l'annexe I consigné dans notes-E.md (calc.) ; non refait dans ce chapitre,2026-10-31,partiellement_verifie,Présenté dans le texte comme un dépouillement non revérifié
246+CLM-05-004,5,"Facteur comparatif 2026 : Gatineau 1,02 ; Montréal 1,00",SRC-B-? (gatmutations ; mtlmutations2026),Notes des entrées library.bib gatmutations et mtlmutations2026 (pages municipales consultées le 2026-10-31),2026-10-31,verifie,
247+CLM-05-005,5,"Montréal 2026 : taxe foncière générale résidentielle 0,4631 $/100 $ ; taxes d'arrondissement en sus ; document officiel des taux non lisible",SRC-E-031 ; SRC-B-023 ; SRC-B-024,Le Devoir 2026-01-12 (source secondaire) ; page montreal.ca (SRC-E-030 inaccessible),2026-10-31,partiellement_verifie,À confirmer sur le PDF officiel « Taux de taxes 2026 »
248+CLM-05-006,5,"Taxe scolaire 2026-2027 : 0,07899 $/100 $ d'évaluation uniformisée ajustée, exemption de 25 000 $ (LIP art. 303 à 303.6)",SRC-E-026 ; SRC-B-035,Communiqué CSS des Hautes-Rivières (secondaire) ; LIP lue dans notes-B,2026-10-31,partiellement_verifie,Avis officiel (2026) 158 G.O. 1 520 non consulté
249+CLM-05-007,5,"LFM : valeur réelle et date de référence (art. 42-46) ; taux variés par catégorie, taux de base = catégorie résiduelle, terrains vagues desservis jusqu'au quadruple (art. 244.29-244.49) ; proportion médiane et facteur comparatif (art. 264)",SRC-B-? (lfm),notes-B.md §LFM (texte à jour au 15 octobre 2026),2026-10-31,verifie,
250+CLM-05-008,5,Oates (1969) : 53 municipalités du New Jersey ; à dépenses données un taux de taxe plus élevé est associé à des valeurs plus faibles ; dépenses scolaires associées à des valeurs plus fortes ; appui à Tiebout (1956),SRC-05-001 ; SRC-05-002,Métadonnées Crossref (DOI 10.1086/259584 ; 10.1086/257839) vérifiées le 2026-10-31 ; contenu d'après la connaissance de la littérature,2026-10-31,partiellement_verifie,Référence complète dans lib-ch05.bib ; non citée par clé (absente de library.bib)
251+CLM-05-009,5,Yinger (1982) : la capitalisation rend le tri de Tiebout efficace ; complète si l'offre de logements est fixe,SRC-05-003,Crossref DOI 10.1086/261101 vérifié ; contenu d'après la littérature,2026-10-31,partiellement_verifie,lib-ch05.bib
252+CLM-05-010,5,"Brueckner (1987) : exposition unifiée du modèle de Muth–Mills, Handbook of Regional and Urban Economics vol. 2",SRC-05-004,Crossref DOI 10.1016/S1574-0080(87)80006-8 vérifié,2026-10-31,verifie,lib-ch05.bib
253+CLM-05-011,5,"Coffey et Shearmur : répartition intramétropolitaine de l'emploi à Montréal 1981-1996 (Urban Geography 2001) ; comparaison Toronto, Montréal, Vancouver, Ottawa–Hull (Environment and Planning A 2002)",SRC-05-005 ; SRC-05-006,Crossref DOI 10.2747/0272-3638.22.2.106 et 10.1068/a33214 vérifiés,2026-10-31,verifie,lib-ch05.bib ; mention en toutes lettres dans le texte
254+CLM-05-012,5,"Knoll, Schularick et Steger (2017) : environ 80 % de la hausse des prix réels des logements depuis 1950 attribuable au prix des terrains",SRC-D (knollSchularickSteger2017),Résumé de l'article (AER 107(2)) ; clé dans library.bib,2026-10-31,verifie,
255+CLM-05-013,5,Davis et Heathcote (2007) : part du terrain dans la valeur des logements en hausse depuis les années 1970 ; volatilité des prix des logements provenant du terrain,SRC-D (davisHeathcote2007),Résumé de l'article (JME 54(8)) ; formulation prudente sans chiffre de part,2026-10-31,verifie,
256+CLM-05-014,5,"Albouy, Ehrlich et Shin (2018) : part du terrain variable selon les métropoles, croissante avec la taille et la productivité",SRC-D (albouyEhrlichShin2018),Résumé de l'article (REStat 100(3)),2026-10-31,verifie,
257+CLM-05-015,5,APCIQ T3 2026 : médiane unifamiliale Aylmer 530 000 $ > Hull 475 000 $ (Aylmer plus éloigné et plus cher),SRC-E-002,notes-E.md et README des données synthétiques ; clé apciqgatineaut32026,2026-10-31,verifie,
258+CLM-05-016,5,"Degré de capitalisation kappa des écarts de taxe : aucune estimation québécoise récente connue ; valeurs 0,6 et 1 = bornes de travail",—,Déclaré comme non vérifié dans l'encadré limites,2026-10-31,non_verifie,
259+CLM-05-017,5,"Paramètres de la simulation monocentrique (y 80 000 ; t 700 ; beta 0,30 ; alpha 0,30 ; p0 260 ; r0 80 ; ra 2 ; i 5 %) : hypothèses pédagogiques, non des estimations",—,Déclarés dans ch05_rente.PARAMS et tab. 5.2,2026-10-31,non_verifie,Ordres de grandeur seulement
modified verification/figures.csv +9 −0
@@ -50,3 +50,12 @@ ch08/ch08-fig-option-sensibilite.pdf,8,analysis/python/figures/ch08_option_sensi
50 ch08/schema-hierarchie-lau (TikZ),8,manuscript/chapters/ch08.tex,,schema,"Hiérarchie des instruments de la LAU : orientations, schéma (art. 5), plan d'urbanisme, règlements, permis",verifie 50 ch08/schema-hierarchie-lau (TikZ),8,manuscript/chapters/ch08.tex,,schema,"Hiérarchie des instruments de la LAU : orientations, schéma (art. 5), plan d'urbanisme, règlements, permis",verifie
51 ch08/schema-recours (TikZ),8,manuscript/chapters/ch08.tex,,schema,"Arbre de décision : conformité, zone de contraintes, droits acquis, dérogation mineure/PIIA, PPCMOI/modification",verifie 51 ch08/schema-recours (TikZ),8,manuscript/chapters/ch08.tex,,schema,"Arbre de décision : conformité, zone de contraintes, droits acquis, dérogation mineure/PIIA, PPCMOI/modification",verifie
52 ch08/schema-grille-usages (TikZ),8,manuscript/chapters/ch08.tex,,schema,"Schéma d'une grille des usages et des normes (zones H-1, H-2, C-3 fictives) : usages, densité, implantation, lotissement, notes",verifie 52 ch08/schema-grille-usages (TikZ),8,manuscript/chapters/ch08.tex,,schema,"Schéma d'une grille des usages et des normes (zones H-1, H-2, C-3 fictives) : usages, densité, implantation, lotissement, notes",verifie
53+ch05/ch05-fig-gradient-monocentrique.pdf,5,analysis/python/figures/ch05_gradient.py,analysis/python/cases/ch05_rente.py (PARAMS et ALONSO ; paramètres pédagogiques déclarés),synthetique,"Modèle monocentrique simulé : courbes d'enchère d'Alonso et enveloppe ; gradients de prix, de rente du sol et de densité de Muth–Mills [simulation, paramètres déclarés]",verifie
54+ch05/ch05-fig-surface-rente.pdf,5,analysis/python/figures/ch05_surface.py,paramètres déclarés dans le script (deux centres exponentiels + rente agricole),synthetique,"Surface de rente bicentrique simulée (courbes de niveau) [simulation, paramètres déclarés]",verifie
55+ch05/ch05-fig-prix-distance-cas1.pdf,5,analysis/python/figures/ch05_cas1_distance.py,data/synthetic/cas1_gatineau_ventes.csv,synthetique,"Cas 1 : prix par m² habitable et distance au centre, médianes par tranche, gradient exponentiel ajusté [données synthétiques]",verifie
56+ch05/ch05-fig-capitalisation-taxe.pdf,5,analysis/python/figures/ch05_capitalisation.py,analysis/python/cases/ch05_rente.py (capitalisation_taxe) ; taux 2026 Québec/Gatineau (vqtaux2026 ; gatineaureglement994),schema,"Sensibilité de la capitalisation d'un écart de taxe foncière selon le taux de capitalisation et le degré de capitalisation [calculs, aucune transaction]",verifie
57+ch05/ch05-fig-valeur-logement-rmr.pdf,5,analysis/python/figures/ch05_rmr.py,data/synthetic/cas4_portefeuille.csv,synthetique,Cas 4 : valeur par logement par RMR et décomposition de l'écart avec Montréal (RNE par logement vs taux) [données synthétiques],verifie
58+ch06/organigramme-quel-droit (TikZ),6,manuscript/chapters/ch06.tex,,schema,"Organigramme « quel droit évalue-t-on ? » : démembrement, modalité ou pleine propriété grevée (art. 947, 1009, 1119 C.c.Q.)",verifie
59+ch06/fiche-index-immeubles (TikZ),6,manuscript/chapters/ch06.tex,,schema,Lecture d'une fiche immobilière de l'index des immeubles (exemple fictif) : chaîne des titres et charges réelles opposables,verifie
60+ch06/ch06-fig-usufruit.pdf,6,analysis/python/figures/ch06_usufruit.py,analysis/python/cases/ch06_demembrements.py (table de mortalité synthétique Gompertz–Makeham ; V du cas 1 via traite.cas1),synthetique,Courbes de survie synthétiques et part de la nue-propriété selon l'âge de l'usufruitier (r = 4/5/6 %) avec approximation par la durée espérée [données synthétiques],verifie
61+ch06/ch06-fig-emphyteose.pdf,6,analysis/python/figures/ch06_emphyteose.py,"analysis/python/cases/ch06_demembrements.py (RNE du cas 3 via traite.cas3 ; hypothèses r = 7 %, g = 2,5 %, rente 30 000 $)",synthetique,"Partage de la pleine propriété entre emphytéote et propriétaire (rentes, reprise) selon la durée restante, seuils 40 et 50 ans [données synthétiques]",verifie
53 62
Menu

Theme