SPB Git
244.0 KB · 783 lines csv
1id,chapitre,description,script,test,resultat_attendu,resultat_obtenu,statut,date2CALC-16-01,16,Entonnoir de sélection (600→236→40→27→16→5),analysis/python/cases/ch16_selection.py,analysis/python/tests/test_ch16.py::test_entonnoir_et_comparables,600;236;40;27;16;5,600;236;40;27;16;5,verifie,2026-10-313CALC-16-02,16,Comparables retenus et prix,analysis/python/cases/ch16_selection.py,analysis/python/tests/test_ch16.py::test_entonnoir_et_comparables,G0574 598000;G0404 506500;G0468 624500;G0477 538000;G0575 513500,idem,verifie,2026-10-314CALC-16-03,16,Indication brute $/m² médian × 165 m²,analysis/python/cases/ch16_selection.py,analysis/python/tests/test_ch16.py::test_indication_brute,551029,551029,verifie,2026-10-315CALC-16-04,16,Statistiques $/m² candidats (méd/min/max) et prix bruts (min/max/moy/méd),analysis/python/cases/ch16_selection.py,analysis/python/tests/test_ch16.py::test_indication_brute,3286/2361/4140 ; 506500/624500/556100/538000,idem,verifie,2026-10-316CALC-16-05,16,Sensibilité (48 combinaisons) min/max/écart-type,analysis/python/cases/ch16_selection.py,analysis/python/tests/test_ch16.py::test_sensibilite,525768/608014/24069,idem,verifie,2026-10-317CALC-16-06,16,Solutions des exercices 16.1 16.3 16.4 16.5 16.7,solutions/ch16.tex,analysis/python/tests/test_ch16.py::test_solutions_exercices,569902 ; 0.509/2.504/1.807 ; 28200 ; 0.590/0.262/0.148 ; k*=4.27,idem,verifie,2026-10-318CALC-21-001,21,Coûts directs du devis cas 1 (33 postes),analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestDevis::test_totaux_cites,298826.17,298826.17,verifie,2026-10-319CALC-21-002,21,Coûts indirects du devis cas 1 (5 postes) et taux I/D,analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestDevis::test_totaux_cites,62598.68 ; 20.95 %,62598.68 ; 20.95 %,verifie,2026-10-3110CALC-21-003,21,Regroupement du devis en 7 blocs (somme = D+I),analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestDevis::test_regroupement,361424.85,361424.85,verifie,2026-10-3111CALC-21-004,21,Incitatif 10 % sur D+I et coût neuf C_N = D(1+τI)(1+τE),analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestDevis::test_identite_multiplicative,36142.49 ; 397567.33,36142.49 ; 397567.33,verifie,2026-10-3112CALC-21-005,21,Variante assiette directs seuls et écart D·τI·τE,analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestDevis::test_variante_assiette_direct,391307.47 ; 6259.87,391307.47 ; 6259.87,verifie,2026-10-3113CALC-21-006,21,Coûts unitaires ($/m² et $/pi²) sur 165 m² habitables et 190 m² bruts,analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestDevis::test_unitaires,2409 / 223.8 ; 2092 / 194.4,2409 / 223.8 ; 2092 / 194.4,verifie,2026-10-3114CALC-21-007,21,Fourchette Altus 155-215 $/pi² appliquée à 2045 pi² bruts et 1776 pi² habitables,analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestDevis::test_comparaison_altus,316997-439705 (milieu 378351) ; 275287-381849,idem,verifie,2026-10-3115CALC-21-008,21,Lecture IPCB Montréal 18-10-0289-01 (valeurs du tableau 21.4),analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestIPCB::test_valeurs_tableau,maison individuelle 66.1→116.5 ; résidentiel 65.5→117.8,idem,verifie,2026-10-3116CALC-21-009,21,Variation annuelle IPCB T3 2025→T3 2026 et ratios d'indexation,analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestIPCB::test_ratios_et_variations,8.57 % ; 1.7625 ; 1.620 ; 6.15 %/an,idem,verifie,2026-10-3117CALC-21-010,21,Exemples d'indexation (C_N en $ de 2021/2019 ; 290 000 $ de 2019 → 2026 ; erreur de série),analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestIPCB::test_indexation_exemples,294507 ; 245366 ; 469889 ; −5.9 %,idem,verifie,2026-10-3118CALC-21-011,21,Grille de sensibilité indirects × incitatif (min/max/étendue),analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestSensibilite::test_grille,351420-436436 (24.2 %),idem,verifie,2026-10-3119CALC-21-012,21,Tornade (indirects ±5 pts ; incitatif 5-15 % ; indice ±8.6 %),analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestSensibilite::test_tornade,381132-414003 ; 379496-415639 ; 366171-431655,idem,verifie,2026-10-3120CALC-21-013,21,Ajustement de taille (élasticités −0.05 à −0.20 ; 140 et 200 m² ; barème 2300 $/m²),analysis/python/cases/ch21_cout_neuf.py,analysis/python/tests/test_ch21.py::TestSensibilite::test_elasticite,477287/463711 ; 340112/348599 ; 386871 vs 379500,idem,verifie,2026-10-3121CALC-21-014,21,Exercices 21.1 à 21.7 (solutions),analysis/python/tests/test_ch21.py,analysis/python/tests/test_ch21.py::TestExercices,voir solutions/ch21.tex,idem,verifie,2026-10-3122CALC-29-001,29,RBP contractuel du cas 3 (12 baux × 12),analysis/python/cases/ch29_capitalisation.py (traite.cas3.revenus),analysis/python/tests/test_ch29.py::test_valeurs_citees_revenus,165540,165540.00,verifie,2026-10-3123CALC-29-002,29,"RBE = RBP(1−3,9 %) + autres revenus 9 360 $",analysis/python/cases/ch29_capitalisation.py,analysis/python/tests/test_ch29.py::test_valeurs_citees_revenus,168443.94,168443.94,verifie,2026-10-3124CALC-29-003,29,"Dépenses normalisées hors réserve (taxes sur rôle 2 200 000 $, postes 2025 × 1,03, gestion 4 % RBE)",analysis/python/cases/ch29_capitalisation.py (traite.cas3.depenses_normalisees),analysis/python/tests/test_ch29.py::test_valeurs_citees_revenus,70385.19,70385.19,verifie,2026-10-3125CALC-29-004,29,RNE normalisé après réserve 8 103 $ (= RNE année 1 des ch. 30 et 47),analysis/python/cases/ch29_capitalisation.py (traite.cas3.rne),analysis/python/tests/test_ch29.py::test_coherence_avec_cas3_partage,89955.75,89955.75,verifie,2026-10-3126CALC-29-005,29,"Taux extraits : médiane / moyenne / pondérée RNE / Q1 / Q3 / min / max sur 40 ventes 6-30 log., 24 mois",analysis/python/cases/ch29_capitalisation.py (traite.cas3.taux_extraits),analysis/python/tests/test_ch29.py::test_valeurs_citees_taux,"4,415 / 4,404 / 4,332 / 4,153 / 4,638 / 3,72 / 5,47 %","4,415 / 4,404 / 4,332 / 4,153 / 4,638 / 3,72 / 5,47 %",verifie,2026-10-3127CALC-29-006,29,"Régression R = a + b1(état−3) + b2(n−12) : a, b1, b2, R², σ résiduel",analysis/python/cases/ch29_capitalisation.py,analysis/python/tests/test_ch29.py::test_valeurs_citees_taux,"4,567 % ; −0,0441 pt ; −0,0227 pt ; 0,156 ; 0,383 pt","4,567 % ; −0,0441 pt ; −0,0227 pt ; 0,156 ; 0,383 pt",verifie,2026-10-3128CALC-29-007,29,Médiane des 10 ventes les plus proches (distance taille/état/âge/quartier/date),analysis/python/cases/ch29_capitalisation.py::comparables_proches,analysis/python/tests/test_ch29.py::test_valeurs_citees_taux,"4,52 %","4,52 %",verifie,2026-10-3129CALC-29-008,29,"Valeur par capitalisation directe V = 89 955,75 / 0,04415 (identique à cas3.tout()['valeur_capitalisation'])",analysis/python/cases/ch29_capitalisation.py,analysis/python/tests/test_ch29.py::test_valeurs_citees_valeur,2037502.89,2037502.89,verifie,2026-10-3130CALC-29-009,29,"Valeurs alternatives : taux de régression 4,567 % ; médiane des proches 4,52 % ; Q3 ; Q1",analysis/python/cases/ch29_capitalisation.py,analysis/python/tests/test_ch29.py::test_valeurs_citees_valeur,1 969 694 ; 1 990 172 ; 1 939 747 ; 2 166 303 $,1 969 694 ; 1 990 172 ; 1 939 747 ; 2 166 303 $,verifie,2026-10-3131CALC-29-010,29,"Constante hypothécaire f (4,12 % composé semestriellement, 480 mois)",analysis/python/cases/ch29_capitalisation.py (traite.finance.Hypotheque),analysis/python/tests/test_ch29.py::test_bande_et_rcd,"5,0789 %","5,0789 %",verifie,2026-10-3132CALC-29-011,29,"Bande d'investissement : R_E impliqué par R = 4,415 % avec M = 0,75 ; R pour R_E = 6 %",analysis/python/cases/ch29_capitalisation.py (traite.finance.taux_bande_investissement),analysis/python/tests/test_ch29.py::test_valeurs_citees_construction,"2,42 % ; 5,309 %","2,42 % ; 5,309 %",verifie,2026-10-3133CALC-29-012,29,"Formule RCD : R = 1,20 × 0,75 × f et valeur",analysis/python/cases/ch29_capitalisation.py (traite.finance.taux_par_rcd),analysis/python/tests/test_ch29.py::test_valeurs_citees_construction,"4,571 % ; 1 967 946 $","4,571 % ; 1 967 946 $",verifie,2026-10-3134CALC-29-013,29,"Gordon : R = 7,25 − 2,25 ; 7,25 − 3,10 ; g implicite = 7,25 − 4,415",analysis/python/cases/ch29_capitalisation.py (traite.finance.taux_gordon),analysis/python/tests/test_ch29.py::test_gordon,"5,00 % ; 4,15 % ; 2,835 %","5,00 % ; 4,15 % ; 2,835 %",verifie,2026-10-3135CALC-29-014,29,"Ellwood/Akerson : P (10 ans), SFF(7,25 %,10), Δ = 1,0225^10 − 1, R(Δ=0), R(Δ), R sans dette, Δ implicite, Y implicite ; égalité Ellwood = Akerson",analysis/python/cases/ch29_capitalisation.py (traite.finance.taux_ellwood/taux_akerson),analysis/python/tests/test_ch29.py::test_ellwood_egal_akerson,"12,25 % ; 0,071527 ; 24,92 % ; 4,965 % ; 3,182 % ; 5,468 % ; 7,68 % ; 10,70 %","12,25 % ; 0,071527 ; 24,92 % ; 4,965 % ; 3,182 % ; 5,468 % ; 7,68 % ; 10,70 %",verifie,2026-10-3136CALC-29-015,29,"Multiplicateurs : MRB médian des 40 ventes, V par MRB (RBP contrat / marché), MRN = 1/R, MRB implicite du sujet",analysis/python/cases/ch29_capitalisation.py,analysis/python/tests/test_ch29.py::test_valeurs_citees_multiplicateurs_coherence,"13,54 ; 2 241 412 $ ; 2 518 927 $ ; 22,65 ; 12,31","13,54 ; 2 241 412 $ ; 2 518 927 $ ; 22,65 ; 12,31",verifie,2026-10-3137CALC-29-016,29,"Cohérence : taxes sur rôle vs sur valeur indiquée (écart, effet capitalisé) ; taux avant réserve équivalent ; erreur taux avant réserve sur RNE après réserve",analysis/python/cases/ch29_capitalisation.py,analysis/python/tests/test_ch29.py::test_valeurs_citees_multiplicateurs_coherence,"880,88 $ ; 19 952 $ ; 4,81 % ; 1 869 136 $","880,88 $ ; 19 952 $ ; 4,81 % ; 1 869 136 $",verifie,2026-10-3138CALC-29-017,29,RNE aux loyers de marché et valeur (erreur « capitaliser le marché avec baux en place »),analysis/python/cases/ch29_capitalisation.py,analysis/python/tests/test_ch29.py::test_valeurs_citees_multiplicateurs_coherence,"108 864,54 $ ; 2 465 788 $ (+21,0 %)","108 864,54 $ ; 2 465 788 $ (+21,0 %)",verifie,2026-10-3139CALC-29-018,29,"Droits de mutation Montréal 2026 : base = max(prix, rôle × 1,00) = 2 200 000 $ ; droits ; droits sur le prix",analysis/python/cases/ch29_capitalisation.py::droits_mutation,analysis/python/tests/test_ch29.py::test_droits_mutation_bareme,"45 460,50 $ ; 40 763,07 $ (2,23 % du prix)","45 460,50 $ ; 40 763,07 $ (2,23 % du prix)",verifie,2026-10-3140CALC-29-019,29,"Sensibilité : grille V(R, RNE±5 %) 3,75-5,25 % ; ∂V/∂R = −V/R ; V(R±25 pb) exact vs linéaire",analysis/python/cases/ch29_capitalisation.py,analysis/python/tests/test_ch29.py::test_valeurs_citees_sensibilite,"−115 374 $/25 pb ; 1 928 312 $ (−5,36 % vs −5,66 %) ; 2 159 802 $","−115 374 $/25 pb ; 1 928 312 $ (−5,36 % vs −5,66 %) ; 2 159 802 $",verifie,2026-10-3141CALC-29-020,29,Exercices 29.1 à 29.8 (toutes les valeurs des solutions),analysis/python/cases/ch29_capitalisation.py::exercices,analysis/python/tests/test_ch29.py::test_exercices,voir solutions/ch29.tex,identiques (tolérances 1 $ / 1e-6),verifie,2026-10-3142CALC-30-01,30,RNE normalisé année 1 du cas 3 (RBP 165 540 ; RBE 168 444 ; dépenses 70 385 + réserve 8 103),analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_valeurs_citees_dcf,89956,89955.75,verifie,2026-10-3143CALC-30-02,30,Taux global médian extrait des 40 comparables et valeur par capitalisation directe,analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_valeurs_citees_dcf,"4,415 % ; 2 037 503",0.04415 ; 2037502.89,verifie,2026-10-3144CALC-30-03,30,Projection 11 ans (RBP 165 540 → 259 911 ; RNE 89 956 → 159 658) ; identités RNE = RBE − DE − RR et CF = RNE − CAPEX,analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_tableau_dcf_identites,RNE_11 = 159 658,159658.38,verifie,2026-10-3145CALC-30-04,30,"Valeur terminale : VT brute 3 193 168 ; nette (2,5 %) 3 113 338 ; VA (×0,496623) 1 546 156 ; erreur si actualisée à T+1 = 104 519",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_valeur_terminale,3193168 ; 3113338 ; 1546156 ; 104519,3193167.52 ; 3113338.33 ; 1546156.00 ; 104518.71,verifie,2026-10-3146CALC-30-05,30,"Valeur DCF = VA flux 662 410 + VA VT 1 546 156 = 2 208 566 ; part VT 70,0 % ; écart vs capitalisation directe +171 063 (8,4 %)",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_valeurs_citees_dcf,2208566,2208565.91,verifie,2026-10-3147CALC-30-06,30,"TRI de l'investisseur non endetté payant V0 = r = 7,25 % ; VAN(r) = 0 ; MIRR(r,r) = r ; délai de récupération 9,42 ans",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_van_au_tri_nulle_sans_levier,0.0725,0.07250000,verifie,2026-10-3148CALC-30-07,30,"Taux implicites : R implicite DCF 4,07 % ; g implicite (r − R_med) 2,835 % ; g_T 2,25 % ; croissance RNE annualisée 5,90 % ; TRI si payé V_cap 8,25 %",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_taux_implicites,0.0407 ; 0.02835 ; 0.0225 ; 0.0590 ; 0.0825,0.040730 ; 0.028350 ; 0.022500 ; 0.059050 ; 0.082521,verifie,2026-10-3149CALC-30-08,30,"Financement (cas3.financement) : prêt RCD 1 475 959 (contrainte RCD) ; RPV 66,83 % ; SD 74 963 ; constante 5,079 % ; mise 732 606 ; solde 120 paiements 1 295 148 ; i_m 0,34042 % ; effectif 4,1624 %",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_levier,1475959 ; 74963 ; 732606 ; 1295148,1475959.45 ; 74963.13 ; 732606.46 ; 1295148.22,verifie,2026-10-3150CALC-30-09,30,"TRI des fonds propres avec levier 11,22 % (5 changements de signe ; VAN(TRI)=0) ; MIRR (4,12 % / 7,25 %) 10,61 % ; cash-on-cash an 1 2,05 %",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_levier,0.1122 ; 0.1061,0.112192 ; 0.106112,verifie,2026-10-3151CALC-30-10,30,"Proposition 30.1 : DCF = NOI_1/(r−g) pour T = 1, 5, 10, 25, 60 si R_T = r − g ; part VT = ((1+g)/(1+r))^T ; coûts de vente : V_G [1 − c_v q^T]",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_proposition_gordon,égalité à 1e-10 relatif,OK,verifie,2026-10-3152CALC-30-11,30,"Sensibilité R_T 4,25 → 5,75 % : V 2 481 417 → 2 006 893 (+12,4 % → −9,1 %) ; surfaces V(r,R_T) et V(r,g) monotones",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_sensibilite_monotone,2481417 ; 2006893,2481416.97 ; 2006893.39,verifie,2026-10-3153CALC-30-12,30,"Tornade : amplitude max = croissance des loyers de marché 368 235 ; scénarios : encadrement serré 1 912 046 (−13,4 %), hausse des taux 1 947 889 (−11,8 %) ; TRI FP si payé base 7,48 % / 8,31 % ; RCD min 1,04",analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_tornade_et_scenarios,368235 ; 1912046 ; 1947889,368235.05 ; 1912046.35 ; 1947889.41,verifie,2026-10-3154CALC-30-13,30,Solutions des exercices 30.1 à 30.8 (fonction exercices()),analysis/python/cases/ch30_dcf.py,analysis/python/tests/test_ch30.py::test_exercices_coherence,voir solutions/ch30.tex,OK,verifie,2026-10-3155CALC-47-001,47,RBP contractuel = 12 × somme des loyers,analysis/python/cases/ch47_dossier.py,analysis/python/tests/test_ch47.py::test_identites_revenus_depenses,165540,165540.00,verifie,2026-10-3156CALC-47-002,47,RBE = RBP(1−0,039) + 9 360,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_identites_revenus_depenses,168443.94,168443.94,verifie57CALC-47-003,47,Dépenses normalisées hors réserve (taxes recalculées ; gestion 4 % RBE ; +3 %),analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,70385.19,70385.19,verifie,2026-10-3158CALC-47-004,47,RNE normalisé = RBE − DE − réserve 8 103,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,89955.75,89955.75,verifie,2026-10-3159CALC-47-005,47,Taux global : médiane de 40 ventes (moyenne 4,404 ; pondérée 4,332 ; Q1 4,1525 ; Q3 4,6375),analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees60CALC-47-006,47,Valeur par capitalisation directe RNE/0,04415,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_capitalisation_et_dcf,2037502.89,2037502.89,verifie61CALC-47-007,47,Projection DCF 10 ans (rotation 15 % ; g_c 3,1 ; g_m 3,5 ; g_d 3,0 ; CAPEX 85k/40k/120k) : RNE_11,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,159658.3862CALC-47-008,47,Valeur terminale brute RNE_11/0,05 et nette ×0,975,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_capitalisation_et_dcf,3193167.52 / 3113338.33,3193167.52 / 3113338.3363CALC-47-009,47,Valeur DCF (r 7,25 %) = VA flux 662 409,91 + VA terminale 1 546 156,00 ; part terminale 70,0 %,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_capitalisation_et_dcf64CALC-47-010,47,OLS ln(prix/logement) : élasticité loyer 1,1707 ; taille 0,0079/log. ; R² 0,635,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,1.1707 / 0.007965CALC-47-011,47,Comparaison par unité : prix/logement pondéré 155 908,56 × 12,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,1870902.67,1870902.67,verifie66CALC-47-012,47,MRB médian des 10 comparables 11,94 × RBP contractuel,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,1976547.60,1976547.60,verifie67CALC-47-013,47,Prêt max RCD 1,20 à 4,12 % / 480 mois (constante 5,0789 %) ; prêt RPV 75 % de V_dcf 1 656 424,43,analysis/python/traite/cas3.py,test_ch47.py::test_valeurs_citees68CALC-47-014,47,Service de la dette 74 963,13 ; paiement mensuel 6 246,93 ; solde après 60 mois 1 394 739,19 ; après 120 mois 1 295 148,22,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees69CALC-47-015,47,TRI fonds propres (achat à V_dcf) 11,22 % ; VAN nulle au TRI ; point mort 92,7 %,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_financement_identites,0.1122 / 0.927,0.1122 / 0.92770CALC-47-016,47,Scénarios de renouvellement an 6 : SD +200 pb 95 920,20 ; RCD an 6 à +300 pb 1,222,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,95920.20 / 1.222,95920.20 / 1.22271CALC-47-017,47,APH Select 40 ans (RPV 85 %,RCD 1,10) à la valeur finale : prêt,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,1610137.58,1610137.5872CALC-47-018,47,Monte-Carlo 10 000 tirages graine 20261031 : médiane / q05 / q95 / moyenne / écart-type,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_monte_carlo_citations_et_reproductibilite,2191607.87 / 1735194.21 / 2876902.35 / 2233505.68 / 350442.57,idem,verifie,2026-10-3173CALC-47-019,47,Monte-Carlo : P(RCD1<1,20) 0,4936 ; P(RCD1<1,00) 0 ; P(RCD6<1,20 | +200 pb) 0,0140 ; P(V<cap) 0,3094 ; P(V<rôle) 074CALC-47-020,47,Projection vectorisée (MC) reproduit cas3.projection_dcf aux paramètres de base (rtol 1e-12),analysis/python/cases/ch47_dossier.py,test_ch47.py::test_projection_vectorisee_reproduit_cas3,identique,identique,verifie,2026-10-3175CALC-47-021,47,Tornade : amplitude taux d'actualisation 636 535 ; croissance loyers marché 459 632 ; écart terminal 320 404,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_projection_vectorisee_reproduit_cas3 (V_base),636534.56,636534.56,verifie,2026-10-3176CALC-47-022,47,Réconciliation 45/35/20 → 2 064 054,90 arrondie à 2 060 000 ; ratio/rôle 0,9364 ; MRB 12,44 ; taux implicite 4,367 %,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees77CALC-47-023,47,Droits de mutation Montréal 2026 sur 2 060 000 (7 tranches),analysis/python/cases/ch47_dossier.py,test_ch47.py::test_droits_mutation_montreal,41325.50,41325.50,verifie,2026-10-3178CALC-47-024,47,Valeur libre de baux (loyers de marché) : RNE 108 864,54 ; valeur 2 465 788,04,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees,2465788.04,2465788.0479CALC-47-025,47,Financement à la valeur finale : mise de fonds 584 040,55 ; RPV 71,65 % ; TRI FP 13,83 % ; TRI sans levier 8,11 %,analysis/python/cases/ch47_dossier.py,test_ch47.py::test_valeurs_citees80CALC-47-026,47,Exercices 1 à 7 (RNE 88 207,65 ; 88 949,51 ; V Q1/Q3 ; rotation 10/25 % ; prêt à 5,12 % 1 283 814,77 ; APH ; MC inoccupation 6 % P=0,9262),analysis/python/cases/ch47_dossier.py81CALC-01-01,1,Modèle hédonique de référence cas 1 : n ; k ; R² ; R² ajusté ; sigma,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_modele_et_dispersion,"600;16;0,853;0,849;0,083","600;16;0,8530;0,8492;0,0830",verifie,2026-10-3182CALC-01-02,1,Résidus : écart-type ; part des ventes à ±10 % ; à ±5 % ; asymétrie ; aplatissement,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_modele_et_dispersion,"0,082;0,745;0,448;≈0;≈0","0,0820;0,745;0,448;-0,070;-0,247",verifie,2026-10-3183CALC-01-03,1,Sujet : médiane ; moyenne (Duan 1,00335) ; mode ; IP 95 % (espérance conditionnelle log-normale),analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_esperance_conditionnelle_sujet,635 821;637 953;631 455;[539 682 ; 749 087],idem,verifie84CALC-01-04,1,P(|P/V−1| > 10 %) ; > 5 % ; > 20 % pour sigma = 0,083,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_probabilites_ecart,"0,251;0,557;0,028","0,251;0,557;0,0281",verifie85CALC-01-05,1,Contributions au sujet : garage ; sous-sol ; étages ; superficie ; âge (net) ; tendance ; identité const + Σβx = ln V,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_contributions,20 291;13 829;18 860;53 893;−84 497;57 385,idem,verifie,2026-10-3186CALC-01-06,1,Rendements décroissants : élasticité ; prix moyen ; prix marginal ; +10 m² ; 10 m² suivants,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_rendements_decroissants,"0,539;3 853;2 077;20 491;19 958",idem,verifie,2026-10-3187CALC-01-07,1,Anticipation : 0,364 %/mois ; 4,46 %/an ; 26,0 mois ; facteur 1,0992 ; valeur à la référence 578 436 vs rôle 468 000,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_anticipation88CALC-01-08,1,Conformité : sujet relocalisé Aylmer / Gatineau / Buckingham / Masson-Angers,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_conformite,"692 518 (+8,9 %);621 798 (−2,2 %);494 999 (−22,1 %);488 712 (−23,1 %)",idem,verifie,2026-10-3189CALC-01-09,1,Comparables ch. 16 : écart prix/valeur estimée G0574 ; G0404 ; G0468 ; G0477 ; G0575,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_comparables_ch16,"+0,7 %;−14,9 %;−9,9 %;−10,5 %;−8,0 %",idem,verifie,2026-10-3190CALC-01-10,1,Modèle de recherche (sim. 20 000) : prix de réserve/m ; prix moyen/m ; CV ; délai moyen (théorique) ; point fixe vérifié,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_recherche,"1,0267;1,068;0,0317;5,08 (5,05)",idem,verifie,2026-10-3191CALC-01-11,1,Recherche : sensibilité au coût de détention 0,2/0,4/0,8/1,5 % (prix de réserve ; délai ; prix moyen ; CV),analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_recherche92CALC-01-12,1,PHMU (hypothèses déclarées) : valeur résiduelle unifamiliale / duplex / triplex,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_phmu,170 000;160 000;140 000,idem,verifie,2026-10-3193CALC-01-13,1,Sensibilité à sigma (0,04–0,16) : moyenne/médiane ; mode/médiane ; bornes IP ; P(>5 %) ; P(>10 %) ; n pour ±2 %,analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_sensibilite_sigma,tableau 1.8 ; n = 16/36/68/142/251,idem94CALC-01-14,1,Solutions des exercices 1.2 à 1.7 (contributions ; rendements ; log-normale ; Gordon/coût d'usage ; prix de réserve uniforme ; lambda d'ancrage),analysis/python/cases/ch01_valeur_prix.py,analysis/python/tests/test_ch01.py::test_solutions_exercices,"16 964/20 958 ; 3 853/2 077/50 241 ; 503 613/492 852/[395 206;632 581]/0,427 ; 600 000/30 000/39 000 ; W=1,0553, T=4,47 ; λ=0,437",idem,verifie,2026-10-3195CALC-02-01,2,Écart contractuel/marché du cas 3 (RBP contrat ; RBP marché ; écart ; écart net de vacance 3,9 %),analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::test_ecart_contractuel,"165540 ; 186036 ; 20496 (11,0 %) ; 19697",idem,verifie96CALC-02-02,2,Écarts par logement (tableau 2.4) ; logement 103 : 319 $/mois ; 3 828 $/an ; ratio 0,695 ; ratio moyen 0,884,analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::test_ecart_contractuel,"1176;2592;3828;264;2412;588;2460;2244;336;2640;1152;804 ; 0,695 ; 0,884",idem97CALC-02-03,2,Décomposition DCF : V_locateur (= cas3.tout dcf) ; V_pleine libre de baux ; V_locataires ; part,analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::test_decomposition_dcf,"2208566 ; 2235712 ; 27146 ; 1,21 %",idem,verifie,2026-10-3198CALC-02-04,2,Composantes : RNE1 89 956 / 108 865 ; RBE1 168 444 / 188 141 ; VA flux 662 410 / 699 966 ; VA VT 1 546 156 / 1 535 746 ; écarts RNE années 1-6 et 11,analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::test_decomposition_dcf,18909;13166;8821;3692;1241;-394;…;-1075,idem,verifie,2026-10-3199CALC-02-05,2,Capitalisation naïve de l'écart au taux médian 4,415 % : Vcap contrat / marché / écart,analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::test_capitalisation_naive_et_formules,2037503 ; 2465788 ; 428285,idem,verifie100CALC-02-06,2,"Formule fermée éq. 2.8 : Δ1 = 19 697, r 7,25 %, g 3,5 % : sans rotation ; ρ = 15 % ; horizon 10 ans",analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::test_formule_fermee_rotation;test_capitalisation_naive_et_formules,"525244 ; 102188 (dénominateur 0,19275) ; 88094",idem,verifie,2026-10-31101CALC-02-07,2,Sensibilité rotation (0/1/2/3/6 logements/an) × taux (6,25/7,25/8,25 %) : V_locataires et part (tableau 2.6),analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::test_sensibilite,"397186 ; 59858 ; 27146 ; 17360 ; 5195 (à 7,25 %) ; part 18,39-18,50 % → 0,17-0,30 % ; facteur 76"102CALC-02-08,2,Identité d'additivité droit temporaire + réversion = pleine propriété (Gordon) et formule fermée vs somme brute,analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::test_additivite_droit_temporaire_et_reversion;test_formule_fermee_rotation,somme = V_pleine à 1e-12 ; série = formule à 1e-9,idem,verifie,2026-10-31103CALC-02-09,2,Solutions : ex. 2.3 (15 591 ; 26 578 ; 52 800) ; ex. 2.4 (309 341 ; 290 659 ; 696 581 ; 51,6 % ; viager 8 ans 192 361 / 407 639) ; ex. 2.5 (1,0985 ; 514 084) ; ex. 2.6 (159 168 ; 93 795) ; ex. 2.7 (79 254 ; 2 287 820) ; encadré (1 955 638 ; 252 928),analysis/python/cases/ch02_droits.py,analysis/python/tests/test_ch02.py::TestExercices,idem,idem104CALC-10-01,10,Contrôle lexical strict des 12 éléments : extraits fictifs A/B/C/D (éléments détectés),analysis/python/cases/ch10_controle_rapport.py,analysis/python/tests/test_ch10.py::test_extrait_complet_et_lacunaires,A 2;B 10;C 6;D 12,A 2;B 10;C 6;D 12,verifie,2026-10-31105CALC-10-02,10,Éléments non détectés (lexique strict) A ; B ; C,analysis/python/cases/ch10_controle_rapport.py,analysis/python/tests/test_ch10.py::test_extrait_complet_et_lacunaires,"A {1,2,4,5,6,7,9,10,11,12} ; B {6,10} ; C {2,3,4,9,11,12}",idem,verifie,2026-10-31106CALC-10-03,10,"Lexique souple : A détecte 5/12 (manquants 2,4,5,7,9,10,11) ; B/C/D inchangés",analysis/python/cases/ch10_controle_rapport.py,analysis/python/tests/test_ch10.py::test_extrait_complet_et_lacunaires;test_lexique_souple_jamais_plus_severe,"5 ; {2,4,5,7,9,10,11}",idem,verifie,2026-10-31107CALC-10-04,10,Taux de conformité τ̂ = détectés/12 (tableau 10.9),analysis/python/cases/ch10_controle_rapport.py,analysis/python/tests/test_ch10.py::test_taux_conformite_identite,"0,167 ; 0,417 ; 0,833 ; 0,500 ; 1,000","0,167 ; 0,417 ; 0,833 ; 0,500 ; 1,000",verifie,2026-10-31108CALC-10-05,10,"Probabilité de détection P_n = 1-(1-d)^n pour d ∈ {0,5;0,7;0,9} et n ∈ {1;2;3} (tableau 10.8)",analysis/python/cases/ch10_controle_rapport.py,analysis/python/tests/test_ch10.py::test_p_detection,"0,500/0,750/0,875 ; 0,700/0,910/0,973 ; 0,900/0,990/0,999",idem,verifie,2026-10-31109CALC-10-06,10,"Incidence d'une hypothèse extraordinaire (extrait B fictif) : 612 000 − 575 000 ; espérance à p = 0,6 ; p = 0,25",analysis/python/cases/ch10_controle_rapport.py,analysis/python/tests/test_ch10.py::test_incidence_hypothese,"37 000 $ (6,43 %) ; 597 200 $ ; 584 250 $","37 000 $ (6,43 %) ; 597 200 $ ; 584 250 $ (ex. 10.5 d : calcul manuel)",verifie,2026-10-31110CALC-10-07,10,"Formation continue (r. 127.1) : 26 h + report 5 h, 2 h éthique → déficit éthique 1 h, report 1 h ; 33 h/3 h → conforme, report 3 h",analysis/python/cases/ch10_controle_rapport.py,analysis/python/tests/test_ch10.py::test_conservation_et_formation,non conforme ; report 1 ; conforme ; report 3,idem,verifie,2026-10-31111CALC-10-08,10,Conservation minimale du dossier (r. 133 art. 6) : 2026-11-15 + 5 ans,analysis/python/cases/ch10_controle_rapport.py,analysis/python/tests/test_ch10.py::test_conservation_et_formation,2031-11-15,2031-11-15,verifie,2026-10-31112CALC-10-09,10,"Matrice normes-C : 100 dispositions, 17 domaines, 28 chapitres ; OEAQ+Code des professions 43 ; ch10 visé par 51 ; moyenne 1,70 chapitre/disposition ; 51 % multi-chapitres ; max 4 (tableau 10.7)",analysis/python/cases/ch10_matrice_normes.py,analysis/python/tests/test_ch10.py::test_matrice_normes,"100;17;28;43;51;1,70;51 %;4",idem,verifie,2026-10-31113CALC-10-10,10,"Familles : hors Québec 27, finance 20, NPP 15, déontologie 14, règlements 14, données 10 ; dont ch10 : 10,1,12,14,14,0",analysis/python/cases/ch10_matrice_normes.py,analysis/python/tests/test_ch10.py::test_matrice_normes,27;20;15;14;14;10,27;20;15;14;14;10,verifie,2026-10-31114CALC-10-11,10,"Chronologie : 8 documents sur 10 en vigueur/référence au 2026-10-31 ; délai publication→effet IVS 2025 = 366 j, RICS = 51 j",analysis/python/cases/ch10_matrice_normes.py,analysis/python/tests/test_ch10.py::test_chronologie,8 ; 366 ; 51,8 ; 366 ; 51,verifie,2026-10-31115CALC-10-12,10,"Solution ex. 10.6 c : probabilité d'échapper à deux contrôles indépendants (0,95 ; 0,7) = 0,05 × 0,3",—,calcul manuel (solutions/ch10.tex),"0,015 (détection 98,5 %)","0,015",verifie,2026-10-31116CALC-07-01,7,"Ventes appariées (n=12) : moyenne, médiane, écart-type, erreur-type, t, IC 95 %",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestServitude::test_paires_citees,"-20333 ; -19000 ; 10026 ; 2894 ; -7,03 ; [-26703 ; -13963]",idem,verifie,2026-10-31117CALC-07-02,7,"Effet relatif de la servitude : moyenne des ratios, rapport des moyennes, semi-log exp(β)−1 ; prix moyen sans",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestServitude::test_paires_citees,"-4,51 % ; -4,46 % ; -4,54 % (β=-0,0465) ; 455 792",idem,verifie,2026-10-31118CALC-07-03,7,Identités : moyenne des différences = différence des moyennes ; s_d (n−1) ; ET = s_d/√n ; concordance avec traite.comparables.ventes_appariees,analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestServitude::test_identites_paires,identités à 1e-9,idem,verifie,2026-10-31119CALC-07-04,7,"Modèle de la bande : 120 m² × 180 $/m² × 0,5",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestServitude::test_modele_bande,"21 600 ; 10 800 ; 17,1 % du terrain",idem,verifie,2026-10-31120CALC-07-05,7,"Quotes-parts en dix-millièmes (somme 10 000) ; Σv = 716,91 ; ΣS = 710 m²",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestCopropriete::test_quotes_parts,935;1352;974;1408;1196;1644;1186;1305,idem,verifie,2026-10-31121CALC-07-06,7,Répartition des charges : 40 000 + 21 891 + 5 000 = 66 891 (général) + 3 200 (stationnements) = 70 091 ; F1 6 254 ; F4 10 218 ; F6 11 797,analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestCopropriete::test_repartition,Σ contributions = budget ; valeurs citées,idem,verifie,2026-10-31122CALC-07-07,7,Contribution minimale au fonds d'auto assurance (r. 4.1 art. 2) : moitié de la franchise 10 000 → 5 000,analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestCopropriete::test_auto_assurance,5000 ; 3000 ; 0,idem,verifie,2026-10-31123CALC-07-08,7,Dépenses prévues 25 ans : 479 000 $ (2026) ; 651 959 $ courants ; fenêtres an 14 = 197 816 ; toiture an 7 = 89 151,analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestFondsPrevoyance::test_depenses,idem,idem,verifie,2026-10-31124CALC-07-09,7,"Cotisation de seuil A* = 21 891 (plancher 0), min = 0 an 14, solde an 25 = 239 241, A_25 = 39 595 ; plancher 25 000 → 23 228 ; récurrence F_t vérifiée",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestFondsPrevoyance::test_cotisation_seuil,idem,idem,verifie,2026-10-31125CALC-07-10,7,"Scénarios : cotisation actuelle 12 000 → négatif an 13, min -233 300 an 22, fin -182 783 ; règle 0,5 % = 21 000 → min -16 660 an 14",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestFondsPrevoyance::test_scenarios,idem,idem,verifie,2026-10-31126CALC-07-11,7,"Toiture seule : 89 151 ; SFF(2 %,7) = 0,13451 ; versement 11 992 ; accumulation exacte",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestFondsPrevoyance::test_toiture_sff,idem,idem,verifie,2026-10-31127CALC-07-12,7,"Sensibilité A* (π 1,5-3,5 % × r 1-3 %) : 19 342 à 24 442 ; monotonie",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestFondsPrevoyance::test_sensibilite,idem,idem,verifie,2026-10-31128CALC-07-13,7,"Déficit de capitalisation : solde requis 235 908 − 85 000 = 150 908 ; ajustements F1 -14 110, F4 -21 248, F6 -24 809",analysis/python/cases/ch07_servitudes_copro.py,analysis/python/tests/test_ch07.py::TestFondsPrevoyance::test_incidence_valeur,idem,idem,verifie,2026-10-31129CALC-07-14,7,Solutions des exercices 7.1 à 7.7 (82 $ ; quotes-parts ; paires n=6 ; bande 13 860 ; toiture ; script 21 409/23 228/17 304/25 625 ; PV 11 929 ; indivision 322 000/297 500),solutions/ch07.tex,analysis/python/tests/test_ch07.py::TestExercices,idem,idem,verifie,2026-10-31130CALC-08-001,8,Jeu synthétique Val-Fictif : 400 lots (H1 200 dont 36 rezonés ; H2 60 ; H3 60 ; C 60 ; P 20) ; 482 ventes dont 305 en H1 et 29 traitées,analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestDonneesSynthetiques::test_structure,400 ; 36 ; 482 ; 305 ; 29,400 ; 36 ; 482 ; 305 ; 29,verifie,2026-10-31131CALC-08-002,8,"Ventes appariées (29 paires, témoin ajusté temps/superficies/âge) : différence moyenne, médiane, écart-type, erreur-type",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestPaires::test_resume_cite,32 285 $ ; 19 944 $ ; 51 335 $ ; 9 533 $,32 285 $ ; 19 944 $ ; 51 335 $ ; 9 533 $,verifie,2026-10-31132CALC-08-003,8,"Ventes appariées en % du témoin ajusté : moyenne, médiane, IC95, < 40 ans (n=16), ≥ 40 ans (n=13) ; prime moyenne injectée",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestPaires::test_resume_cite,"9,29 % ; 6,28 % ; [4,32 ; 14,26] ; 4,85 % ; 14,75 % ; 6,15 %","9,29 % ; 6,28 % ; [4,32 ; 14,26] ; 4,85 % ; 14,75 % ; 6,15 %",verifie,2026-10-31133CALC-08-004,8,"Doubles différences H1 (n=305 ; cases 134/112/30/29) : δ 2×2 et δ régression (e.-t.), en log et en %",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestDiD::test_valeurs_citees,"0,1061 → 11,19 % ; 0,0657 (0,0208) → 6,79 % ; σ 0,0709","0,1061 → 11,19 % ; 0,0657 (0,0208) → 6,79 % ; σ 0,0709",verifie,2026-10-31134CALC-08-005,8,Lecture de la grille H2 : lot 600 m² conforme (min 450) ; logements = min(4 ; ⌊600/150⌋) = 4 ; plancher = 0,60 × 600 = 360 m²,analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestOutils::test_grille,4 ; 360,4 ; 360,verifie135CALC-08-006,8,"Valeur résiduelle quadruplex : GDV 2 088 000 ; directs 1 044 000 ; indirects 125 280 ; démolition 30 000 ; marge 313 200 ; financement 62 640 ; reste 512 880 ; parcs 46 625 ; V_L 466 255 ; prime 86 255 (22,7 %)",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestOutils::test_redeveloppement,"466 254,55 ; 86 254,55","466 254,55 ; 86 254,55",verifie,2026-10-31136CALC-08-007,8,"Grille p × T de la prime espérée (r = 8 %) et exemple p = 0,75, T = 2, coût 8 000 $ → V = 427 462 $",analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch08.py::TestOutils::test_grille_attendue,55 462 ; 82 998 ; 17 118 ; 427 462,55 462 ; 82 998 ; 17 118 ; 427 462,verifie,2026-10-31137CALC-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-31138CALC-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-31139CALC-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-31140CALC-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-31141CALC-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-31142CALC-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-31143CALC-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.22 (+1.4 %) ; 114.18/125.40 (+9.8 %) ; 92.3/114.3/200.3 m² ; 28.92 ; 0.396,idem,verifie,2026-10-31144CALC-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-31145CALC-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-31146CALC-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-31147CALC-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-31148CALC-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-31149CALC-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-31150CALC-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-31151CALC-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-31152CALC-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-31153CALC-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-31154CALC-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-31155CALC-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-31156CALC-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-31157CALC-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-31158CALC-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-31159CALC-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-31160CALC-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-31161CALC-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-31162CALC-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-31163CALC-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-31164CALC-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-31165CALC-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-31166CALC-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-31167CALC-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-31168CALC-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-31169CALC-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-31170CALC-04-001,4,Recensement 2021 Québec : ménages 3 749 035 ; propriétaires 2 245 600 (59,9 %) ; locataires 1 497 005 ; Canada 66,5 %,analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestRecensement::test_totaux,3749035 ; 0.599 ; 0.665,3749035 ; 0.5990 ; 0.6646171CALC-04-002,4,Parts par type (Québec) : maison individuelle 44,6 % ; app. < 5 étages 33,2 % ; duplex 7,2 % ; app. ≥ 5 étages 6,0 % ; jumelée 5,3 % ; rangée 2,6 % ; Canada 52172CALC-04-003,4,Taux de propriété par type (Québec) : maison 92,2 % ; duplex 42,9 % ; app. < 5 étages 21,0 % ; app. ≥ 5 étages 28,7 % ; solde des modes = 6 430 logements fournis,analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestRecensement::test_taux_propriete_par_type173CALC-04-004,4,Indice de dissimilarité Québec/Canada sur 8 types (eq. 4.2) ; duplex + app. < 5 étages = 1 512 395 ménages (40,3 %),analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestRecensement::test_dissimilarite,0.1715 ; 1512395 ; 0.403,0.1715 ; 1512395 ; 0.4034,verifie174CALC-04-005,4,Ménages locataires par RMR 2021 (98-10-0231-01) : Montréal 837 470/1 835 705 = 45,6 % ; Québec 161 800/387 955 = 41,7 % ; Ottawa-Gatineau (ensemble) 34,6 % ; province 39,9 % ; Canada 33,1 %,analysis/python/cases/ch04_marches.py175CALC-04-006,4,Population RMR 2025 (17-10-0148-01) et TCAC 2020-2025 (eq. 4.3) : Montréal 1,08 % ; Québec 1,46 % ; Gatineau 1,18 % ; Sherbrooke 1,55 % ; Trois-Rivières 1,56 % ; Saguenay 0,96 % ; var. 2024-2025 Montréal 0176CALC-04-007,4,"IPLN sept. 2026 (18-10-0205-01) : Montréal 159,5 (+1,2 % a/a ; +59,5 % depuis déc. 2016 ; +35,6 % janv. 2020–déc. 2022 ; +76,1 % janv. 2000–déc. 2016) ; Québec 144,2 (+1,9 % ; +25,0 % 2020-22) ; Gatineau 116,6 (+0,3 % ; +9,2 %) ; Sherbrooke 112,1 (+7,3 %) ; Trois-Rivières 119,4 ; province 150,0 (+30,2 %) ; Canada 120,2 (−2,0 % ; sommet août 2022 126,1 ; −4,7 %) ; composantes Montréal maison 169,9 / terrain 132,6, province 158,3 / 128,0",analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestIPLN,voir description,identiques (lecture du CSV brut),verifie,2026-10-31177CALC-04-008,4,"SCHL ELL oct. 2025 : inoccupation (tous) Montréal 2,9 (2,1) ; Québec 2,4 (0,9) ; Gatineau 3,8 (1,9) ; Sherbrooke 2,7 (1,4) ; Trois-Rivières 2,7 (0,9) ; Saguenay 1,3 (1,6) ; loyer 2 ch. 1 346 / 1 277 / 1 460 / 1 062 / 1 016 / 985 ; univers 667 266 / 118 693 / 33 553 / 41 949 / 22 505 / 16 241",analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestSCHL::test_valeurs_citees,voir description,identiques (lecture du xlsx brut),verifie,2026-10-31178CALC-04-009,4,Variation brute vs « même échantillon » (eq. 4.5-4.6) : Montréal 2 ch. 1176→1346 = +14,5 % brute vs +7,2 % estimative ; Sherbrooke +6,0 % brute vs +9,8 % estimative ; tous logements Gatineau +4,5 %,Saguenay +12179CALC-04-010,4,Mois d'inventaire T3 2026 (eq. 4.7) = inscriptions/(ventes/3) : province 6,1 ; Montréal 6,6 ; Québec 3,1 ; Gatineau 6,5 ; Sherbrooke 4,4 ; Trois-Rivières 3,6 ; Saguenay 4180CALC-04-011,4,"Rapports de prix et MRB implicite (eq. 4.8) : plex/unifamiliale Montréal 1,33, Québec 1,29 ; copro/unifamiliale 0,67, 0,72 ; MRB plex 3 log. au loyer 2 ch. : Montréal 17,8 ; Québec 13,1 ; Gatineau 11,8 ; Sherbrooke 14,2 ; Trois-Rivières 11,5 ; Saguenay 10,5",analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestAPCIQ::test_rapports_et_mrb,voir description,1.333 ; 1.294 ; 0.674 ; 0.723 ; 17.76 ; 13.05 ; 11.75 ; 14.24 ; 11.48 ; 10.53,verifie,2026-10-31181CALC-04-012,4,"Banque du Canada (Valet) : taux directeur 2,50 % (2026-10-29) ; min 0,25 % (2009-04-21) ; 0,25 % en mars 2022 → 5,00 % le 2023-07-13 (dix hausses) ; 2,25 % le 2025-10-30 ; hyp. 5 ans affiché 6,19 % (2026-10-28), max 8,75 % (2000-05-24), min 4,64 % (2015-04-08) ; obligations 5 ans 3,58 %, 10 ans 3,84 % (2026-10-29)",analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestBanqueDuCanada,voir description,identiques (lecture des CSV Valet),verifie,2026-10-31182CALC-04-013,4,"Droits de mutation 2026 (eq. 4.9) : 500 000 $ → 5 610,50 $ (1,12 %) tous barèmes ; 645 500 $ : province 7 793, Montréal 8 259, Gatineau 9 975,50, Québec 9 248 ; 860 500 $ : 11 018 / 12 559 / 16 425,50 / 15 175,50 ; 1,5 M$ : 20 610,50 / 27 325,50 / 35 610,50 / 34 360,50 ; continuité aux bornes et monotonie du taux effectif (prop. 4.1)",analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestMutations,voir description,identiques,verifie,2026-10-31183CALC-04-014,4,"Prix soutenable (eq. 4.10-4.11) : prêt 400 000 $ à 4,12 % sur 25 ans → 2 130,18 $/mois ; à paiement constant : 3,00 % → 562 653 $ (+12,5 %) ; 6,19 % → 408 931 $ (−18,2 %) ; 7,00 % → 380 164 $ (−24,0 %) ; semi-élasticité −10,7 %/pt (3→3,5 %) vs −9,0 %/pt (6,19→7 %) ; élasticité −0,33 (3 %) vs −0,56 (6 %)",analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestTauxEtPrix;TestExercices::test_ex6,voir description,2130.18 ; 562652.61 ; 408930.96 ; 380163.94 ; −0.1071 ; −0.0901 ; −0.325 ; −0.557,verifie,2026-10-31184CALC-04-015,4,"Exercices 4.1-4.6 : 54,8 % / 33,3 % (QC) vs 46,2 % / 39,5 % (CA) ; 4,35 / 3,60 / 5,65 mois ; 1 105,71 $, +10,57 % vs +6 % ; Gatineau 9 210,50 $ (1,49 %) et 8 664,50 $ sur base 601 800 $ (1,55 % du prix) ; TCAC 1,46 %, 1 044 650 (2035), ISQ 0,57 %/an ; 540 666 $ et 458 582 $",analysis/python/cases/ch04_marches.py (exercices),analysis/python/tests/test_ch04.py::TestExercices,voir description,identiques,verifie,2026-10-31185CALC-04-016,4,"Mises en chantier Québec (34-10-0135-01, sommes annuelles) : 2000 24 695 ; 2005 50 910 ; 2021 67 810 ; 2023 38 912 ; 2025 59 864 ; individuelles 15 349 (62 %) → 8 477 (14 %) ; part appartements 29,1 % → 79,6 % ; moyennes 2000-2019 44 205 et 2020-2025 54 412",analysis/python/cases/ch04_marches.py,analysis/python/tests/test_ch04.py::TestMisesEnChantier,voir description,identiques (lecture du CSV brut),verifie,2026-10-31186CALC-3-01,3,"Paramètres dérivés du marché type (b, a, P0, C0, c1)",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestQuatreQuadrants::test_parametres_derives,"b 3,4722 ; a 150 000 ; P0 288 000 ; C0 1 000 ; c1 48","b 3,4722 ; a 150 000 ; P0 288 000 ; C0 1 000 ; c1 48",verifie,2026-10-31187CALC-3-02,3,"Équilibre stationnaire en forme fermée S* = (a − b i c0)/(1 + b i c1 δ) = itération de point fixe ; identités P = R/i, C = δS, C = (P − c0)/c1",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestQuatreQuadrants::test_equilibre_ferme_egal_iteratif,S* 100 000 ; R* 14 400 ; P* 288 000 ; C* 1 000,idem (rel. 1e-6),verifie,2026-10-31188CALC-3-03,3,"Baisse du taux de capitalisation 5 % → 4 % : court terme P 360 000 ; long terme S 109 375, R 11 700, P 292 500, C 1 093,75",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestQuatreQuadrants::test_baisse_du_taux,"360 000 ; 109 375 ; 11 700 ; 292 500 ; 1 093,75","idem (abs 0,5)",verifie,2026-10-31189CALC-3-04,3,"Statique comparative (tableau 3.1) : demande +10 % (R ct 18 720, S lt 113 846, R lt 14 732, +30 % / +2,31 %) ; coût +10 % (S 96 154, P +7,69 %) ; taux (P lt +1,56 %, R lt −18,75 %)",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestQuatreQuadrants::test_statique_comparative,voir description,"idem (abs 0,5 ; 0,05 pt)",verifie,2026-10-31190CALC-3-05,3,"Élasticités au point initial : construction/prix 6,0 ; κ = 1/(b i c1) = 0,12 ; stock stationnaire/demande 1,385",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestQuatreQuadrants::test_elasticites,"6,0 ; 0,12 ; 1,385","6,00 ; 0,1200 ; 1,385",verifie,2026-10-31191CALC-3-06,3,"Simulation dynamique : état initial stationnaire (sans choc S, R constants, v = v*) ; c0 recalibré 276 000 ; κ 0,48",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDynamique::test_etat_initial_stationnaire,"constant ; 276 000 ; 0,48",idem,verifie,2026-10-31192CALC-3-07,3,"État stationnaire après choc (+6 %) : S 108 902, R 14 453 (1 204 $/mois), C 1 089/an ; convergence de la simulation à T = 600",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDynamique::test_stationnaire_apres_choc,108 902 ; 14 453 ; convergence rel. 2e-3,idem,verifie,2026-10-31193CALC-3-08,3,"Mesures du cycle de référence (L = 6, κ = 0,48, λ = 0,75) : pointe loyer +15,0 % à t = 13, creux −7,0 % à t = 35, v min 1,17 %, v max 5,0 %, chantiers max 4 711/an, période 47 trim., amortissement 0,17",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDynamique::test_mesures_du_cycle_cite,voir description,"idem (abs 0,1 pt)",verifie,2026-10-31194CALC-3-09,3,"Sensibilité (tableau 3.3) : L = 12 creux −18,1 % ; L = 2 creux −1,2 % ; κ = 0,12 pas de second cycle ; période croissante avec L",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDynamique::test_sensibilite,voir description,idem,verifie,2026-10-31195CALC-3-10,3,"Condition d'oscillation L = 1 : seuil (1−δ)²/4 = 0,2450 ; κ = 0,12 réel (module 0,849) ; κ = 0,48 complexe, module 0,693, période 8,1 ans ; κ = 1,2 instable ; L = 3 à κ = 0,48 instable (module 1,014) ; forme fermée = racines numpy",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDynamique::test_condition_oscillation,voir description,idem (rel. 1e-9),verifie,2026-10-31196CALC-3-11,3,"Mises en chantier Québec (34-10-0135-01) : sommes annuelles 1990 48 070 ; 2000 24 695 ; 2005 50 910 ; 2015 37 926 ; 2020 54 066 ; 2021 67 810 ; 2022 57 107 ; 2023 38 912 ; 2024 48 713 ; 2025 59 864 ; 2026 (3 trim.) 42 159 ; −42,6 % 2021→2023 ; +53,8 % 2023→2025 ; tableau 3.4 par type",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDonneesReelles::test_mises_en_chantier_quebec,voir description,idem (exact),verifie,2026-10-31197CALC-3-12,3,34-10-0143-01 : RMR de Montréal 2024 = 17 570 (12 mois) ; 2025 = 21 138 sur 9 mois seulement (juillet-septembre absents) ; Québec centres 10 000+ 2025 = 54 220 (12 mois),analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDonneesReelles::test_montreal_incomplet,17 570 ; 21 138 (9 mois) ; 54 220,idem,verifie,2026-10-31198CALC-3-13,3,"Taux directeur (V39079) : 23 changements depuis 2020 ; +475 pb du 2022-03-03 au 2023-07-13 (10 hausses) ; −275 pb du 2024-06-06 au 2025-10-30 (9 baisses) ; 2,50 % le 2026-10-29",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDonneesReelles::test_taux_directeur,voir description,idem,verifie,2026-10-31199CALC-3-14,3,"Taux effectifs A4 août 2026 : assuré fixe ≥ 5 ans 4,12 % (V122667780) ; non assuré 4,58 % (V122667786)",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDonneesReelles::test_taux_effectifs_a4,"4,12 ; 4,58",idem,verifie,2026-10-31200CALC-3-15,3,"IPC Québec sept. 2026 167,7 (+3,14 % a/a) ; loyer 174,2 (+3,3 %) ; IPLN Québec 150,0 (+1,28 %)",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDonneesReelles::test_ipc_ipln,voir description,idem,verifie,2026-10-31201CALC-3-16,3,"Série coût d'usage 2001-01 → 2026-09 (tableau 3.6 : taux hyp. 7,79/7,49/5,29/4,94/7,04/6,09 ; inflation 2,76/2,02/2,84/0,30/4,16/3,14 ; P/R IPC 12,0/11,4/17,3/12,6/16,1/15,9) ; identité P/R × u = 1 ; u_IPLN < 1,5 % en 2021-2022",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestDonneesReelles::test_serie_cout_usage,voir description,"idem (0,01)",verifie,2026-10-31202CALC-3-17,3,"Exemple intégral (463 500 $) : u affiché/IPC 6,415 % → 29 735 $/an, 2 478 $/mois, P/R 15,6 ; u effectif/IPC 4,805 % → 22 273 $/an, 1 856 $/mois, P/R 20,8 ; effectif/IPLN 6,605 % → 2 551 $/mois, P/R 15,1 ; +100 pb → P/R 17,2 (−17,2 %) ; semi-élasticité −20,8 ; prix implicite d'un loyer de 1 475 $ : 368 336 $ ; τ = 0,82539 %",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestCoutUsageExemple::test_exemple_cite,voir description,"idem (abs 0,5 $ ; 5e-5)",verifie,2026-10-31203CALC-3-18,3,"Grille de sensibilité P/R (tableau 3.7) : 1/(i + 0,00825 + 0,025 − g) pour i ∈ {3,58 ; 4,58 ; 5,58 ; 6,19 ; 7,19} et g ∈ {1,3 ; 2,0 ; 3,1 ; 4,0}",analysis/python/cases/ch03_cycles.py (ratio_prix_loyer),analysis/python/tests/test_ch03.py::TestCoutUsageExemple::test_formules,"ex. 4,58/3,1 → 20,8 ; 6,19/3,1 → 15,6 ; 3,58/4,0 → 34,4",valeurs du tableau recalculées à la main depuis la formule testée,verifie,2026-10-31204CALC-3-19,3,"Mois d'inventaire T3 2026 (APCIQ) : province 6,1 ; Montréal 6,6 ; Québec 3,1 ; Gatineau 6,5 ; Sherbrooke 4,3 ; Trois-Rivières 3,6 ; Saguenay 4,0",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py::TestIndicateurs::test_mois_inventaire,voir description,"idem (0,005)",verifie,2026-10-31205CALC-3-20,3,"Solutions des exercices 1 à 7 (fonction exercices) : flux 1,597 % ; net 1,097 % ; 8,7 ans ; 11,97 M ; mois d'inventaire ; équilibres 4Q ; coût d'usage Montréal 2 625 $/mois, P/R 20,5 → 17,0 ; variantes de simulation ; seuils c1 5,76 et 23,5",analysis/python/cases/ch03_cycles.py,analysis/python/tests/test_ch03.py (fonctions sous-jacentes testées ; valeurs d'exercices imprimées par le script),voir solutions/ch03.tex,idem,verifie,2026-10-31206CALC-09-001,9,Ratios bruts rôle/prix des 600 ventes du cas 1 : médiane ; COD ; PRD ; PRB (e.-t.),analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestEtude::test_valeurs_citees_brut,"0,9136 ; 6,90 ; 1,0015 ; 0,0327 (0,0114)","0,9136 ; 6,90 ; 1,0015 ; 0,0327 (0,0114)",verifie,2026-10-31207CALC-09-002,9,Taux de variation mensuel du marché (modèle hédonique partagé traite.cas1) et annuel,analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestEtude::test_valeurs_citees_rajuste,"0,3642 % / mois ; 4,46 % / an","0,3642 % ; 4,46 %",verifie,2026-10-31208CALC-09-003,9,Ratios rajustés au 2024-07-01 : médiane ; COD ; PRD ; PRB (e.-t.) ; PRB de contrôle (log2 prix seul),analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestEtude::test_valeurs_citees_rajuste,"0,9245 ; 6,12 ; 0,9988 ; 0,0640 (0,0099) ; 0,0196 (0,0106)",idem,verifie,2026-10-31209CALC-09-004,9,"Épuration r. 10 (médiane ± 2σ, σ sur n−1 autour de la médiane) : σ ; bornes ; ventes retirées ; proportion médiane ; facteur comparatif",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestEtude::test_epuration_et_facteur,"0,0708 ; [0,7830 ; 1,0661] ; 29 (13 basses, 16 hautes) ; 0,9244 ; 1,0818",idem,verifie,2026-10-31210CALC-09-005,9,"Statistiques après épuration (n = 571) : COD ; PRD ; PRB ; écart type relatif annexe III (brut, rajusté, épuré) ; plafond r. 13",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestEtude::test_epuration_et_facteur,"5,48 ; 0,9990 ; 0,0489 ; 0,0870 / 0,0766 / 0,0660 ; 0,14",idem,verifie,2026-10-31211CALC-09-006,9,"Médianes des ratios par secteur (0,920-0,931) ; par type (0,926 ; 0,922) ; par tranche de prix (0,919-0,933) ; par année brut/rajusté (2023 : 0,9538/0,9111 ; 2026 : 0,8692/0,9408)",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestEtude::test_sous_groupes,voir script,conforme,verifie,2026-10-31212CALC-09-007,9,"Liste de base r. 10 art. 5 : max(30 ; N/(15,5+0,001N)) pour N = 1 000 ; 10 000 ; 103 355 ; 514 614",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestIdentitesRatio::test_liste_de_base,61 ; 393 ; 870 ; 971,61 ; 393 ; 870 ; 971,verifie,2026-10-31213CALC-09-008,9,Taux de voisinage de l'annexe I du règlement 994-2025 (Gatineau 2026) : n ; min ; médiane ; moyenne ; max ($/1 000 $),analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestEtude::test_taux_voisinage,"1 092 ; 1,613 ; 5,232 ; 5,377 ; 7,544",idem,verifie,2026-10-31214CALC-09-009,9,Sujet au 2024-07-01 : prédiction hédonique (Duan) et IC 95 % ; comparables ± 12 mois (5) médiane/moyenne ajustée ; valeur réelle retenue,analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestDossiers::test_sujet,580 375 (491 138-681 251) ; 565 414 / 563 175 ; 573 000,idem,verifie,2026-10-31215CALC-09-010,9,"Grille des 5 comparables à la date de référence (G0264, G0334, G0404, G0388, G0188) : ajustements en cascade, prix ajustés 602 082 / 620 958 / 492 375 / 565 414 / 535 048 ; identité prix + Σ ajustements = prix ajusté",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestDossiers::test_sujet,voir tableau 9.8,conforme,verifie,2026-10-31216CALC-09-011,9,"Dossier du sujet : ratio personnel ; écart à la PM ; valeur à inscrire (art. 147 : V/F) ; variation ; compte de taxes 2026 (Hull, voisinage médian) ; variation annuelle ; frais",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestDossiers::test_sujet;TestTaxes::test_compte_sujet,"0,8168 ; −11,6 % ; 529 681 ; +61 681 ; 4 076,01 (municipal 3 517,02 à 7,515/1 000 ; uniformisée 506 275 ; scolaire 380,16 ; 178,83) ; +516,24/an ; 80 $ (TAQ 93,20 $)",idem,verifie,2026-10-31217CALC-09-012,9,"Dossier acheteur G0258 (2024-07-04, 509 500 $, rôle 592 100 $) : prix rajusté ; ratio ; valeur à inscrire ; réduction ; taxes 5 114,66 → 4 099,55 ; gain annuel ; gain triennal ; frais ; gain net ; seuil de rentabilité",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestDossiers::test_acheteur,"509 317 ; 1,1625 ; 470 813 ; 121 287 ; 1 015,11 ; 3 045,34 ; 325 ; 2 720,34 ; 12 944",idem,verifie,2026-10-31218CALC-09-013,9,"Sensibilité du gain net triennal (écart −10 % à +10 % × taux min/médian/max) : 9 lignes, toutes positives, décroissantes",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestDossiers::test_sensibilite,médiane : 3 902 → 1 538 ; min : 2 075 → 733 ; max : 5 070 → 2 053,idem,verifie,2026-10-31219CALC-09-014,9,"Droits de mutation 2026 sur 573 000 $ (général, Montréal, Gatineau) ; exemple facteur (prix 450 000, base 468 000 × 1,02 = 477 360)",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestDossiers::test_mutations;TestTaxes::test_droits_mutation,"6 705,50 ; 6 809,00 ; 7 800,50 ; 5 270,90 vs 4 860,50",idem,verifie,2026-10-31220CALC-09-015,9,"Écart attendu prix/valeur au rôle : F × (1+g)^m − 1 pour m = 0 ; 1,5 ; 4,5 ans (PM 0,9244, g 4,46 %)",analysis/python/cases/ch09_ratios.py (formule eq. 9.14),calcul direct (voir ch09.md),"8,2 % ; 15,5 % ; 31,6 %","8,2 % ; 15,5 % ; 31,6 %",verifie,2026-10-31221CALC-09-016,9,"Échéancier légal du rôle fictif 2026-2028 et du rôle 2027-2029 de Gatineau (art. 46, 70-71, 81, 130, 138.3-138.5)",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestDossiers::test_echeancier,2026-04-30 ; 2026-09-01 ; 2026-10-01 ; 2026-10-31 / 2027-04-30 …,idem,verifie,2026-10-31222CALC-09-017,9,"Exercices 1-5 et 7 (facteur 1,0870 ; compte 4 053,17 / 3 627,76 ; étude de 8 ratios médiane 0,9221, COD 2,50, PRD 1,0031, ETR 0,0311 ; mutations 6 735,50 / 6 849 / 7 860,50 / 9 582,50 ; liste de base ; simulation régressive PRD 1,0159, PRB −0,0681)",analysis/python/cases/ch09_ratios.py,analysis/python/tests/test_ch09.py::TestExercices,voir solutions/ch09.tex,conforme,verifie,2026-10-31223CALC-09-018,9,"Identités : COD/PRD/PRB nuls ou unitaires pour un rôle proportionnel ; PRD > 1 et PRB < 0 pour un rôle régressif (γ = 0,9) ; biais positif du PRB avec proxy IAAO quand l'erreur du rôle domine (simulation)",analysis/python/tests/test_ch09.py,analysis/python/tests/test_ch09.py::TestIdentitesRatio,vrai,vrai,verifie,2026-10-31224CALC-17-01,17,Mêmes cinq comparables et prix que le ch. 16,analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_memes_comparables_que_ch16,G0574 598000;G0404 506500;G0468 624500;G0477 538000;G0575 513500,idem,verifie,2026-10-31225CALC-17-02,17,Prix ajustés par la cascade hédonique (traite.cas1.ajustements_hedoniques),analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_prix_ajustes_et_statistiques,640247;541222;572793;568853;584862 ; moyenne 581595 ; médiane 572793,640247;541222;572793;568853;584862 ; 581595 ; 572793,verifie,2026-10-31226CALC-17-03,17,Ajustements bruts (%) et identité prix de vente + Σ ajustements = prix ajusté,analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_identite_somme_des_ajustements,"brut 19,8;10,9;17,6;22,4;26,8 ; identité exacte",idem (écart < 1e-6 $),verifie,2026-10-31227CALC-17-04,17,Identité P_aj_j = exp(x_s'β)·exp(e_j) ; moyenne exp(e)−1 des 5 comparables ; prédiction hédonique,analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_identite_prix_ajuste_egal_prediction_fois_residu,"point 635821 ; Duan 637953 ; moyenne exp(e)−1 = −8,53 % ; moyenne log −9,07 %",idem,verifie,2026-10-31228CALC-17-05,17,Cascade G0404 (ordre conventionnel et ordre inverse : même total),analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_cascade_g0404,"temps 28733 ; superficie 8953 ; terrain 7279 ; âge −10242 ; total 541222 ; ordre inverse : temps 29054, âge −9407, total 541222",idem,verifie,2026-10-31229CALC-17-06,17,Formes additive / multiplicative / mixte (écarts < 0,5 %),analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_formes_additive_multiplicative_mixte,"G0574 additif 641341 vs multiplicatif 640247 ; |écart| < 0,4 % (additif) et < 0,5 % (mixte)",idem,verifie230CALC-17-07,17,Ajustement de temps G0404 par cinq écritures,analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_ajustement_de_temps,"coefficient 28733 = taux composé 4,46 % = indices ; génération 4,43 % → 28558 ; linéaire 27998 ; g mensuel 0,364 %",idem,verifie,2026-10-31231CALC-17-08,17,Ventes appariées garage et sous-sol (critères : même secteur/type/qualité/piscine,superficie ±5 %,âge ±5 ans,dates ≤ 12 mois,alignement temporel),analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_paires232CALC-17-09,17,Halvorsen–Palmquist et Kennedy sur les indicatrices du modèle,analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_halvorsen_palmquist_kennedy,"garage 3,297 / 3,295 % ; Buckingham −25,04 → −22,15 / −22,35 %",idem,verifie,2026-10-31233CALC-17-10,17,Poids inverse du brut et réconciliation,analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_ponderation_et_reconciliation,"poids 0,179;0,327;0,202;0,159;0,133 ; valeur pondérée 575565 ; moyenne 581595 ; étendue 17,2 %",idem,verifie,2026-10-31234CALC-17-11,17,Analyse relative et encadrement,analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_analyse_qualitative,4 inférieurs + G0468 supérieur ; encadrement [598000 ; 624500],idem,verifie,2026-10-31235CALC-17-12,17,Sensibilité de la valeur pondérée (coefficients ±1,96 ET ; taux 3–6 % ; omissions),analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_sensibilite,omission temps 545208 ; omission qualité 597252 ; taux 3–6 % étendue 16734 ; superficie étendue < 1000 ; max étendue 30357,idem,verifie236CALC-17-13,17,Solutions des exercices 17.1 à 17.7,analysis/python/cases/ch17_ajustements.py,analysis/python/tests/test_ch17.py::test_solutions_exercices,"17.1 551500 ; 17.2 28587/28954/28039 ; 17.3 15083/15250/11151/4552 ; 17.4 4,60/4,58 et −22,12/−22,37 ; 17.5 523640/525000/524700 ; 17.6 poids 0,254/0,508/0,238 valeur 576556 ; 17.7 moyenne 579001 pondérée 573963",idem,verifie,2026-10-31237CALC-18-01,18,"Modèle de référence (traite.cas1.hedonique) : n, k, R², R² ajusté, σ",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_modele_reference_retrouve_les_lois,"600 ; 16 ; 0,853 ; 0,849 ; 0,083","600 ; 16 ; 0,8530 ; 0,8492 ; 0,0830",verifie,2026-10-31238CALC-18-02,18,Coefficients clés et couverture des paramètres de génération (IC 95 %),analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_modele_reference_retrouve_les_lois,"ln_S 0,5391 (0,0127) ; ln_T 0,0937 ; qualité 0,0611 ; garage 0,0324 ; Buckingham −0,2504 (0,0718) ; const 13,2074 → 544 400 $ ; 15/15 couverts",idem,verifie,2026-10-31239CALC-18-03,18,Croissance mensuelle et annuelle implicites vs croissance de génération,analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_modele_reference_retrouve_les_lois,"0,364 %/mois ; 4,46 %/an ; vraie 4,43 %",idem,verifie,2026-10-31240CALC-18-04,18,"Diagnostics : Breusch–Pagan (Koenker), Jarque–Bera, asymétrie, aplatissement, étendue des résidus",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_diagnostics,"LM 16,09 ddl 15 p 0,38 ; JB 2,11 p 0,35 ; −0,07 ; 2,75 ; [−0,238 ; 0,224] ; 7,0 % > 0,15",idem,verifie,2026-10-31241CALC-18-05,18,"VIF (âge 11,85 ; distance 43,7 ; Buckingham 30,3 ; Masson-Angers 28,0 ; Aylmer 8,0 ; Gatineau 4,15 ; physiques < 2)",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_diagnostics,voir description,idem,verifie,2026-10-31242CALC-18-06,18,"Distances de Cook (seuil 4/n = 0,0067 ; 29 au-dessus ; max 0,022 G0541) et I de Moran des résidus (8 voisins)",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_diagnostics,"29 ; 0,022 ; G0541 ; I −0,013 z −0,59 p 0,56",idem,verifie,2026-10-31243CALC-18-07,18,"Six variantes : R², EQM $, COD, prédiction du sujet (semi-log 637 953 ; linéaire 615 985 ; log-log 627 260 ; Box–Cox 635 171 ; sans secteurs 664 342 ; trimestrielles 649 980)",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_variantes,voir tab:18:variantes,idem,verifie,2026-10-31244CALC-18-08,18,"Box–Cox : λ̂ 0,157 ; IC 95 % [−0,036 ; 0,353] ; RV vs λ=0 : 2,5 ; vs λ=1 : 66",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_variantes,"0,157 ; [−0,036 ; 0,353] ; 2,5 ; 66",idem,verifie,2026-10-31245CALC-18-09,18,"Omission des secteurs : distance −0,0036 → −0,0117 ; terrain 0,0937 → 0,0419 ; σ 0,083 → 0,104 ; sujet +4,1 %",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_variantes,voir description,idem,verifie,2026-10-31246CALC-18-10,18,Prix implicites au sujet (2 084 $/m² ; 96 $/m² terrain ; −2 308 $/an ; 2 319 $/mois ; qualité 40 182 ; garage 21 031 ; sous-sol 14 183 ; piscine 17 023 ; étages 19 502 ; Aylmer 56 886 ; Gatineau −14 070) et corrections de Kennedy,analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_prix_implicites,voir tab:18:prix-implicites,idem,verifie,2026-10-31247CALC-18-11,18,"Prédiction du sujet : ln 13,3627 ; naïve 635 821 ; Duan ×1,00335 = 637 953 ; log-normale 638 016 ; x'Vx 0,000105 (1,5 %) ; s_p 0,0836 ; IC 95 % [539 682 ; 749 087] ; IC 80 % [571 192 ; 707 764]",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_prediction_et_intervalle,voir description,idem,verifie,2026-10-31248CALC-18-12,18,"Prédiction au 2024-07-01 (580 375 $) et ratio rôle fictif du sujet 468 000 / 580 375 = 0,81",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_prediction_et_intervalle,"580 375 ; 0,806",idem,verifie,2026-10-31249CALC-18-13,18,"Statistiques de ratio du modèle : in-sample COD 6,68 PRD 1,007 PRB −0,058 médiane 0,997 ; validation croisée 10 plis COD 6,83 RMSE 40 888 erreur abs. médiane 5,67 %",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_ratios_et_validation_croisee,voir tab:18:ratios,idem,verifie,2026-10-31250CALC-18-14,18,"Rôle fictif vs prix ramenés au 2024-07-01 : médiane 0,925 COD 6,12 PRD 0,999 PRB 0,064 ; sans rajustement : 0,914 / 6,90",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_ratios_et_validation_croisee,voir description,idem,verifie,2026-10-31251CALC-18-15,18,"Indice trimestriel (15 trimestres, 2026T3 = 122,0 vs tendance 116,5 ; 22 ventes ; IC +3,6 %) ; écart abs moyen 2,57 % max 5,03 %",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_indice_et_sensibilite,voir fig:18:indice,idem,verifie,2026-10-31252CALC-18-16,18,"Sensibilité à l'échantillon : Hull 186 → 625 967 ; 18 mois 236 → 640 098 ; étages 330 → 629 272 ; sans Cook 571 → 636 872 ; 110-230 m² 495 → 635 048 ; étendue 2,2 %",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_indice_et_sensibilite,voir tab:18:sensibilite,idem,verifie,2026-10-31253CALC-18-17,18,"Résidus des cinq comparables du ch. 16 (G0574 +0,007 ; G0404 −0,161 ; G0468 −0,104 ; G0477 −0,111 ; G0575 −0,084 ; moyenne −8,7 %)",analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_residus_des_comparables,voir description,idem,verifie,2026-10-31254CALC-18-18,18,Solutions des exercices 18.1 à 18.8 (chiffres des solutions/ch18.tex),analysis/python/cases/ch18_hedonique.py,analysis/python/tests/test_ch18.py::test_solutions_exercices,voir solutions/ch18.tex,idem,verifie,2026-10-31255CALC-11-001,11,Facteur de majoration C_N/D des coûts de composantes (coût neuf ch. 21 / coûts directs),analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestFiche::test_couverture_du_devis,1.33043,1.33043,verifie,2026-10-31256CALC-11-002,11,Fiche d'état : 20 composantes couvrant les 33 postes directs ; Σ coûts neufs = 397 567,33 $ ; courte/moyenne durée 224 956,09 $ (56,6 %) ; structure 172 611,24 $ (43,4 %),analysis/python/cases/ch11_inspection.py257CALC-11-003,11,"Âges effectifs cités (bardeaux 12,00 ; gouttières 23,38 ; fenêtres 21,50 ; VRC 20 (borné) ; structure 29,00 ; vie restante 31)",analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestFiche::test_valeurs_citees ; TestConvention::test_cas_limites,"12 ; 23,375 ; 21,5 ; 20 ; 29 ; 31","12 ; 23,375 ; 21,5 ; 20 ; 29 ; 31",verifie,2026-10-31258CALC-11-004,11,"Propriétés de la convention a_eff = (1−λ)a + λφ(c)L bornée : bornes [0, L], monotonie en a et c, a_eff = a si φ(c)L = a",analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestConvention,propriétés vraies,propriétés vraies,verifie,2026-10-31259CALC-11-005,11,"Indice d'état pondéré I_E = 2,809 ; répartition des notes {2: 7, 3: 8, 4: 4, 5: 1} ; fraction moyenne de vie consommée 0,547 (32,8 ans / 60)",analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestFiche::test_indice_etat,"2,809 ; 0,547","2,809 ; 0,547",verifie,2026-10-31260CALC-11-006,11,Travaux immédiats (5) : total curable 10 479,98 $ = 2,64 % de C_N ; entrée 3 438,43 $ ; thermos 2 788,93 $,analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestTravaux261CALC-11-007,11,"Dépréciation ventilée : courte durée 130 584,55 $ ; base longue 165 569,69 $ ; longue 80 025,35 $ ; total 221 089,88 $ = 55,61 % ; contribution 176 477,45 $ ; identités (somme, base = C_N − curable − Σ courtes)",analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestDepreciation,221089.88 ; 55.61 %,221089.88 ; 55.61 %,verifie,2026-10-31262CALC-11-008,11,"Âge-vie simple : 29 ans → 192 157,55 $ (48,33 %) ; 28 ans → 185 531,42 $ (46,67 %) ; écart ventilée − âge-vie = 28 932,34 $",analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestDepreciation::test_valeurs_citees,192157.55 ; 185531.42 ; 28932.34,192157.55 ; 185531.42 ; 28932.34,verifie,2026-10-31263CALC-11-009,11,"Sensibilité λ × état de la structure (25 cellules) : 63,68 % à λ = 0 ; 46,24-66,02 % à λ = 0,5 ; 27,38-66,94 % à λ = 1 ; monotonie en état ; indépendance de l'état à λ = 0",analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestSensibilite,grille du tableau 11.8,grille du tableau 11.8,verifie,2026-10-31264CALC-11-010,11,"Valeur de l'information : radon (p 10 %, C 3 000 $, t 50 $) VEI 250 $ ; pyrite (5 %, 25 000 $, 1 200 $) 50 $ ; pyrite (2 %) −700 $ ; seuil p* = t/C = 0,048 ; p* radon 50/3000 ≈ 1,7 %",analysis/python/cases/ch11_inspection.py,analysis/python/tests/test_ch11.py::TestValeurInformation,250 ; 50 ; −700 ; 0,048,250 ; 50 ; −700 ; 0,048265CALC-11-011,11,"Exercices : ex. 3 âges effectifs (13,5 ; 6 ; 21,25 ; 30) ; ex. 4 ventilée 159 350 $ (53,12 %) vs âge-vie 150 000 $ ; ex. 5 VEI 700 $, p* 0,045 et 0,02 ; ex. 6 λ = 0,25 → 59,77 % (28,5 ans), λ = 0,75 → 50,93 % (29,5 ans)",analysis/python/cases/ch11_inspection.py ; traite.cout,analysis/python/tests/test_ch11.py::TestExercices,voir solutions/ch11.tex,voir solutions/ch11.tex,verifie,2026-10-31266CALC-12-001,12,"Superficies du sujet : aire au sol 7,92 × 12,00 ; périmètre ; aire des étages (2 niveaux) ; périmètre des étages",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPlan::test_superficies_sujet,"95,04 ; 39,84 ; 190,08 ; 79,68","95,04 ; 39,84 ; 190,08 ; 79,68",verifie,2026-10-31267CALC-12-002,12,"Superficie habitable = 2 × (7,36 × 11,44) − trémie 3,40 ; nette (− cloisons 5,06) ; habitable + sous-sol fini 70",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPlan::test_superficies_sujet,"165,0 ; 159,9 ; 235,0","164,9968 ; 159,9368 ; 234,9968",verifie,2026-10-31268CALC-12-003,12,Formule des murs A_int/A = 1 − tP/A + 4t²/A (= calcul direct) ; rapport brute/habitable,analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPlan::test_formule_murs,"0,8859 ; 1,152","0,8859 ; 1,152",verifie,2026-10-31269CALC-12-004,12,"Conversions : 1 pi² = 0,3048² m² ; 165 m² = 1 776 pi² ; 190,08 m² = 2 046 pi²",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestConversions::test_facteurs,"0,09290304 ; 1 776 ; 2 046","0,09290304 ; 1 776,0 ; 2 046,0",verifie,2026-10-31270CALC-12-005,12,"Prix unitaires implicites du sujet (V = 637 953 $, traite.cas1.predire) selon la convention",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPrixUnitaires::test_valeurs,6 712 / 3 989 / 3 866 / 3 356 / 2 715 $/m²,6 712 / 3 989 / 3 866 / 3 356 / 2 715 $/m²,verifie,2026-10-31271CALC-12-006,12,"Prix marginal ∂V/∂S = β V/S avec β = 0,539 (traite.cas1.hedonique)",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPropagation::test_derivee,2 084 $/m² ; rapport au prix moyen = β,"2 084,25 $/m² ; 0,5391",verifie,2026-10-31272CALC-12-007,12,"Erreur de 5 % sur S : linéaire 17 195 $ (2,695 %) ; exact +17 002 / −17 398 $ ; naïf 31 898 $ ; 10 % : +5,27 / −5,52 %",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPropagation::test_cinq_pour_cent,17 195 ; 17 002 ; −17 398 ; 31 898,"17 195,07 ; 17 001,60 ; −17 398,19 ; 31 897,64",verifie,2026-10-31273CALC-12-008,12,"Mélange de conventions : sujet brut (190,08) vs habitable (165) → +7,93 % = +50 573 $ ; inverse −7,35 % = −46 858 $",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPropagation::test_melange_conventions,"+7,93 % ; 50 573 $ ; −7,35 % ; −46 858 $","+7,9274 % ; 50 573,11 $ ; −7,3451 % ; −46 858,45 $",verifie,2026-10-31274CALC-12-009,12,"Ajustement de superficie du comparable G0404 (506 500 $, 160 m²) : +8 472 $ ; avec S erronée 170 m² : −8 086 $ ; erreur −16 558 $ (approx. −17 065 $)",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPropagation::test_comparable,8 472 ; −8 086 ; −16 558,"8 471,94 ; −8 085,79 ; −16 557,72",verifie,2026-10-31275CALC-12-010,12,"Variance combinée β√(σs² + σc²/n) : 2 %/2 %/5 → 1,181 % = 7 535 $ (part du sujet 83,3 %) ; sujet seul 6 878 $ ; comparables seuls 3 076 $ ; 5 %/2 % → 17 468 $",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestPropagation::test_variance_combinee,7 535 ; 6 878 ; 3 076 ; 17 468,7 535 ; 6 878 ; 3 076 ; 17 468,verifie,2026-10-31276CALC-12-011,12,"Atténuation : Var(ẽ) = 0,0609 ; sd(ln S) = 0,2487 ; λ(0,10) = 0,859, β̂ moyen 0,465 ; λ(0,20) = 0,604, β̂ 0,328 ; 200 réplications, graine 20261031",analysis/python/cases/ch12_mesurage.py,analysis/python/tests/test_ch12.py::TestAttenuation::test_theorie_et_simulation,"0,0609 ; 0,859/0,465 ; 0,604/0,328","0,06092 ; 0,8590/0,4651 ; 0,6037/0,3280",verifie,2026-10-31277CALC-12-012,12,"Exercices 1, 3, 4, 5, 6 : 1 176 pi² = 109,25 m², 42,67 m ; 87,36 m², 171,52 m², 1,154 ; 2 042,86 $/m², 8 580 $, +8 523/−8 639 $, 15 600 $ ; +7,91 %, 10 447 $, 55 572 $ ; λ = 0,905, 0,488",analysis/python/tests/test_ch12.py,analysis/python/tests/test_ch12.py::TestExercices,voir solutions/ch12.tex,idem,verifie,2026-10-31278CALC-19-01,19,I de Moran des résidus (W knn8) : référence / sans secteur / sans secteur ni distance / ln P,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_moran_residus_avec_et_sans_secteur,-0.0136 (z -0.63) ; 0.3237 (z 17.11) ; 0.3595 ; 0.2013,idem (esda : z 17.11),verifie,2026-10-31279CALC-19-02,19,Corrélogramme des résidus sans secteur (bandes 0-0.5 et 2-3 km ; inversion au-delà de 8 km),analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_correlogramme,0.225 ; 0.261 ; 12-15 km : -0.286,idem,verifie,2026-10-31280CALC-19-03,19,Tests LM sans secteur (LM-err/LM-lag/RLM-err/RLM-lag) et référence,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_tests_lm,285.18 / 116.21 / 170.06 / 1.09 (p 0.297) ; référence tous p > 0.1,idem (spreg identique),verifie,2026-10-31281CALC-19-04,19,SAR/SEM/SDM sans secteur par MV concentrée : rho 0.4385 (0.0412) ; lambda 0.6486 (0.0447) ; rho SDM 0.5089 ; logL 510.71/554.23/590.58/606.72 ; AIC -995.4/-1080.5/-1153.2/-1163.4 ; référence logL 650.00 AIC -1266.0,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_sar_sem_sdm,voir description,idem (spreg ML_Lag/ML_Error à 1e-6),verifie,2026-10-31282CALC-19-05,19,Effets directs/indirects/totaux ln_S : SAR 0.5715/0.4206/0.9921 (= beta/(1-rho)) ; SDM 0.5484/0.0666/0.6150,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_effets_directs_indirects,voir description,idem,verifie,2026-10-31283CALC-19-06,19,GWR noyau gaussien : bande CV 4.99 km (mgwr 4.87) ; tr(S) 44.8 ; AICc -1233.2 vs -994.8 (MCO) et -1264.9 (référence) ; R² 0.861 ; localisation par secteur vs référence vs générateur,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_gwr,Buckingham -0.313 / -0.344 / -0.342 ; Aylmer 0.003 / 0.057 / 0.062,idem,verifie,2026-10-31284CALC-19-07,19,Effets fixes : grilles 5/3/2 km (19/39/67 cellules) AIC -1252.1/-1240.4/-1225.4 ; 14 trimestres AIC -1253.8 ; indice 2026T3 0.199,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_effets_fixes,voir description,idem,verifie,2026-10-31285CALC-19-08,19,Variogramme sans secteur : gamma(0-1 km) 0.00699 ; max 0.01702 ; exponentiel pépite 0.00455 palier partiel 0.00897 portée 5.0 (borne) ; krigeage sujet -0.0597 (var 0.00567),analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_variogramme_krigeage,voir description,idem,verifie,2026-10-31286CALC-19-09,19,Spatio-temporel (2 km / 12 mois) : 582 ventes retenues ; I 0.305 ; rho_st 0.3696 (0.0532) ; I résidus 0.128 ; SEM-st lambda 0.7485 AIC -1154.8,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_spatio_temporel,voir description,idem,verifie,2026-10-31287CALC-19-10,19,Validation croisée EQM log : 0.0841 / 0.1053 / 0.0878 / 0.0882 / 0.0950 / 0.0860,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_validation_croisee,voir description,idem,verifie,2026-10-31288CALC-19-11,19,Indications sujet : 637 953 / 664 342 / 624 799 / 633 352 / 654 429 / 627 519 $,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_indications_sujet,voir description,idem,verifie,2026-10-31289CALC-19-12,19,Sensibilité à W : rho 0.2359 (k=4) → 0.6537 (k=16) ; lambda 0.5066 → 0.7855 ; I stable 0.32-0.33,analysis/python/cases/ch19_spatial.py,analysis/python/tests/test_ch19.py::test_sensibilite,voir description,idem,verifie,2026-10-31290CALC-19-13,19,Solutions des exercices 19.1 (I = 0.6917 ; alternés -1) 19.3 19.4 19.5 19.6 (krigeage 0.0489 var 0.00869) 19.7 (SEM k=4/8/16 : 656 724 / 633 352 / 628 672 $),solutions/ch19.tex,analysis/python/tests/test_ch19.py::test_solutions_exercices et ::test_solution_exercice_7,voir description,idem,verifie,2026-10-31291CALC-19-14,19,Fonctions génériques ajoutées à traite.hedonique (sem_mv sar_mv tests_lm_spatial effets_sar gwr variogramme krigeage W spatio-temporelle),analysis/python/traite/hedonique.py,analysis/python/tests/test_ch19.py (8 tests de simulation),recouvrement des paramètres simulés ; identités (total = direct + indirect ; W_st nilpotente ; krigeage exact),idem,verifie,2026-10-31292CALC-22-001,22,Cohérence avec le ch. 21 : D / I / C_N inchangés (38 postes) et bordereau q × p = montant,analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestCoherenceCh21,298826.17 ; 62598.68 ; 397567.33 ; 361424.85,idem,verifie,2026-10-31293CALC-22-002,22,"Dimensions de base du plan coté : aire au sol, périmètre, garage, sous-sol ; invariance du périmètre en L",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestGeometrie::test_empreinte_et_perimetre,95.04 m² ; 39.84 m ; 24.95 m² ; 70.09 m²,idem,verifie,2026-10-31294CALC-22-003,22,"Superficies selon les conventions : aire des étages MEFQ, périmètre des étages, habitable, nette hors sol, sous-sol net et fini",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestGeometrie::test_superficies_conventions,190.08 (2046 pi²) ; 79.68 m ; 165.13 (1777 pi²) ; 135.37 (58.56 + 76.81) ; 58.65 ; 49.31,idem,verifie,2026-10-31295CALC-22-004,22,Couverture des niveaux par les pièces (somme des aires brutes = 95.04 / 95.04 / 70.09) et longueurs de cloisons,analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestGeometrie::test_pieces_couvrent_les_niveaux ; test_cloisons,21.52 / 47.94 / 20.80 m ; séparation 10.26 m,idem,verifie,2026-10-31296CALC-22-005,22,"Formules élémentaires : aire décalée A + P·e + 4e², prismoïde (exact pour un tronc de pyramide), facteur de pente √(1+p²)",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestGeometrie::test_formules_elementaires,identités à 1e-9 ; 1.1180,idem,verifie,2026-10-31297CALC-22-006,22,"Quantités géométriques des 17 postes mesurés (excavation 408.94 m³, fondations 36.79 m³, dalle 95.04, drain 42.24 m, charpente 324.65, fermes 111.62, couverture 124.79, revêtement 238.79, isolation 419.82, gypse/peinture 733.00, bois franc 103.56, céramique 31.81, flottant 70.09, gouttières 48.80 m, balcon 14.10, entrée 55.00)",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestQuantites::test_mesures_citees ; test_details_cites,voir description (tolérance 0.05),idem,verifie,2026-10-31298CALC-22-007,22,"Dénombrements : 16 fenêtres (6/8/2), 3 portes ext., 1 porte de garage, 2 escaliers, 14 portes int. (4/7/3), 14 appareils, 26 semaines",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestQuantites::test_denombrements,exact,idem,verifie,2026-10-31299CALC-22-008,22,"Métré de contrôle : verdicts (20 conformes, 2 à préciser, 2 à justifier, 14 forfaits) ; écarts cités (gypse +18.2 %, bois franc +9.0 %, céramique −9.1 %, excavation −2.6 %, fondations −3.2 %, charpente −1.6 %) ; planchers hors sol 135.37 vs 130",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestVerification::test_verdicts ; test_ecarts_cites,voir description,idem,verifie,2026-10-31300CALC-22-009,22,Effet du métré de contrôle sur D et C_N (ΔD = +3410.22 $ = +1.14 % ; D' = 302236.39 ; C_N' = 401318.58 ; ΔC_N = +3751.24 $ = +0.94 % ; ΔC_N = ΔD × 1.10 ; multiplicateur 1.3304),analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestVerification::test_effet_metre_controle,voir description,idem,verifie,2026-10-31301CALC-22-010,22,Sensibilité : erreur uniforme ±5/±10 % par bloc (enveloppe ±7739 $ = 1.95 % ; tous les directs ±32871 $ = 8.27 %) ; linéarité ΔC_N = e·M·1.10,analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestSensibilitePropagation::test_sensibilite,voir description,idem,verifie,2026-10-31302CALC-22-011,22,"Propagation : Herfindahl 0.0539 (18.6 postes effectifs), σ_D/D = 1.16 % (σ = 5 %), σ_D = 3467.78 $, poste max charpente 13.2 % ; bornes 1/n ≤ H ≤ 1",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestSensibilitePropagation::test_propagation,voir description,idem,verifie,2026-10-31303CALC-22-012,22,"Pertes et chutes (taux illustratifs) : gypse 694.4, bardeaux 137.5 ; surplus valorisé au prix posé 11283.78 $ ; répartition par type d'unité (mesuré 174351.56 / dénombré 89850.00 / forfait 97223.29)",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestSensibilitePropagation::test_pertes ; test_repartition_types,voir description,idem,verifie,2026-10-31304CALC-22-013,22,"Coûts unitaires de C_N selon la convention (190.08 → 2092 ; 165.13 → 2408 ; 135.37 → 2937 $/m²) et ratios nette/habitable 82.0 %, nette/étages 71.2 %",analysis/python/cases/ch22_metre.py,analysis/python/tests/test_ch22.py::TestGeometrie::test_couts_unitaires_conventions,voir description,idem,verifie,2026-10-31305CALC-22-014,22,Exercices 22.1 à 22.7 (solutions),analysis/python/tests/test_ch22.py,analysis/python/tests/test_ch22.py::TestExercices,voir solutions/ch22.tex,idem,verifie,2026-10-31306CALC-13-001,13,"Structure du CSV brut 18-10-0289-01 : lignes, colonnes, membres des 3 dimensions, vecteurs, périodes",analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestIPCB::test_structure,318954 lignes ; 16 col. ; 25 géo ; 16 types ; 24 divisions ; 8750 vecteurs ; 1981-01 à 2026-07 (183),318954 ; 16 ; 25 ; 16 ; 24 ; 8750 ; 1981-01 à 2026-07 (183),verifie,2026-10-31307CALC-13-002,13,IPCB Montréal bâtiments résidentiels : 2017T1 65.5 ; 2023T1 99.9 ; 2025T3 108.5 ; 2026T3 117.8 ; var. annuelle ; facteurs,analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestIPCB::test_series_citees,+8.57 % ; 1.798 (2017T1→2026T3) ; 1.179 (2023T1→2026T3),8.571 % ; 1.7985 ; 1.1792,verifie,2026-10-31308CALC-13-003,13,IPCB RMR de Québec bâtiments résidentiels : début 2023T1 (15 obs.) ; 98.8 → 124.8 ; var. annuelle ; facteur,analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestIPCB::test_series_citees,+9.19 % ; 1.263,9.186 % ; 1.2632,verifie,2026-10-31309CALC-13-004,13,"Trois indices rebasés T1 2017 = 100 au T3 2026 (IPCB Mtl résid., IPLN Mtl, IPC Québec ; moyennes trimestrielles des séries mensuelles)",analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestIndices::test_rebasage,179.8 ; 159.0 ; 132.2,179.85 ; 158.98 ; 132.17,verifie,2026-10-31310CALC-13-005,13,"Dictionnaire du rôle v2.5 (PDF) : 2 pages, 62 codes distincts, répartition par section 21/2/17/5/17, 24 répétitifs",analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestDictionnaireEtRoles::test_dictionnaire,62 ; {1:21 2:2 3:17 4:5 5:17} ; 24,62 ; {1:21 2:2 3:17 4:5 5:17} ; 24,verifie,2026-10-31311CALC-13-006,13,Index des rôles 2026 : 1134 municipalités ; URL Gatineau RL81017_2026.xml,analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestDictionnaireEtRoles::test_index_roles,1134,1134,verifie,2026-10-31312CALC-13-007,13,"RFU 2026 : évaluation imposable uniformisée Montréal 430.75 G$, Québec 105.22 G$, Gatineau 60.01 G$ ; facteurs 1.00/1.08/1.02 ; parts par catégorie ; identité somme des postes = imposable",analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestRFU::test_structure_et_villes,Gatineau 1 log. 56.5 % ; Montréal logements+condos 60.6 % ; Québec 40.2/38.8 % ; total RFU 2077.9 G$ ; 3 villes 31.1 %,56.5 ; 60.6 ; 40.2/38.8 ; 2077.9 ; 31.1 ; écart somme/imposable 0 $,verifie,2026-10-31313CALC-13-008,13,"SCHL ELL oct. 2025, six RMR : inoccupation 2024/2025, loyer 2 ch. 2024/2025, univers, variation brute vs estimative, vacants implicites",analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestSCHL::test_tableau,Montréal brute 14.5 % vs estim. 7.2 % ; vacants 19351 ; Saguenay 211 ; Sherbrooke brute < estimative,14.456 % ; 7.2 ; 19350.7 ; 211.1 ; 6.0 < 9.8,verifie,2026-10-31314CALC-13-009,13,"Biais de datation b = (1+g)^(delta/12) - 1 : grille g ∈ {-3,0,3,6,10} × delta ∈ {1,2,3,6}",analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestDatation::test_biais,6 %/3 mois : 1.47 ; 10 %/3 : 2.41 ; 10 %/6 : 4.88 ; -3 %/6 : -1.51,1.467 ; 2.411 ; 4.881 ; -1.512,verifie,2026-10-31315CALC-13-010,13,Sensibilité loyer 1300 $ indexé Montréal 2 ch. : variation brute vs estimative ; écart mensuel/annuel ; valeur 12 log. à 4.5 %,analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestExercices::test_ex4_indexation,1487.93 vs 1393.60 ; 94 $/mois ; 1132 $/an ; ≈ 300 000 $,1487.93 ; 1393.60 ; 94.33 ; 1131.9 ; 301840,verifie,2026-10-31316CALC-13-011,13,Exercice 1 : coût registre foncier 25 actes + 25 index à 1 $ + 3 états certifiés (16 + 16 $),analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestExercices::test_ex1_registre,146 $,146 $,verifie,2026-10-31317CALC-13-012,13,Exercice 2 : prix 612 000 - 12 000 meubles ; délai 75 j = 2.464 mois ; facteur 1.06^(2.464/12) ; écart,analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestExercices::test_ex2_prix_corrige,600 000 $ ; 1.0120 ; 7 222 $,600000 ; 1.01204 ; 7222.04,verifie,2026-10-31318CALC-13-013,13,Exercice 5 : IPCB résidentiel Montréal/Québec/composite : facteurs 2023T1→2026T3 et TCAC ; 2019T3→2026T3 ; 350 000 $ indexé,analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestExercices::test_ex5_ipcb_quebec,1.1792 (4.82 %) ; 1.2632 (6.90 %) ; 1.1391 (3.79 %) ; 1.6453 ; 1.7406 ; 442 105 / 412 713 / 398 671 $,idem (test vert),verifie,2026-10-31319CALC-13-014,13,"Exercice 6 (chiffres fictifs) : couverture 1044/1500, appariement 920/1044, moyenne mixte, biais",analysis/python/cases/ch13_sources.py,analysis/python/tests/test_ch13.py::TestExercices::test_ex6_couverture,0.696 ; 0.881 ; 493 280 $ ; 16 720 $ (3.39 %),0.696 ; 0.8812 ; 493280 ; 16720 (3.39 %),verifie,2026-10-31320CALC-14-001,14,Jeu brut reproductible (graine 20261031) et identique au fichier : 618 inscriptions ; 127 anomalies (109 lignes + 18 doublons) ; rôle 600,analysis/python/cases/ch14_nettoyage.py,analysis/python/tests/test_ch14.py::test_brut_reproductible_et_identique_au_fichier,618;127;600,618;127;600,verifie,2026-10-31321CALC-14-002,14,Comptes d'anomalies injectées par type (tab. 14.1),analysis/python/cases/ch14_nettoyage.py,analysis/python/tests/test_ch14.py::test_anomalies_injectees,18;5;8;12;10;9;6;8;6;20;15;10,idem,verifie,2026-10-31322CALC-14-003,14,Entonnoir 618→600 (R1)→595 (R4)→587 (R7)→587 (I1)→581 (S1)→579 (E1),analysis/python/cases/ch14_nettoyage.py,analysis/python/tests/test_ch14.py::test_entonnoir_et_journal,618;600;595;587;587;581;579,618;600;595;587;587;581;579,verifie,2026-10-31323CALC-14-004,14,Journal : 144 lignes ; R1 18 ; R2 10 ; R3 8 ; R4 5 ; R5 12 ; R6 15 ; R7 8 ; G1 15 ; I1 45 ; S1 6 ; E1 2,analysis/python/cases/ch14_nettoyage.py,analysis/python/tests/test_ch14.py::test_entonnoir_et_journal,144,144,verifie,2026-10-31324CALC-14-005,14,Corrections R2/R3/R5 restituent les valeurs du jeu propre (dates ; prix net ; superficie),analysis/python/cases/ch14_nettoyage.py,analysis/python/tests/test_ch14.py::test_corrections_restituent_les_valeurs_propres,écart ≤ 0.5,écart ≤ 0.5,verifie,2026-10-31325CALC-14-006,14,Exclusions S1 : B0003 B0006 B0021 B0105 B0173 B0558 (4 liées + 2 faux positifs) ; E1 : B0039 (t −5.84 ; D 0.084) ; B0410 (t −6.70 ; D 0.048),analysis/python/cases/ch14_nettoyage.py,analysis/python/tests/test_ch14.py::test_entonnoir_et_journal,idem,idem,verifie,2026-10-31326CALC-14-007,14,Itérations E1 : n 581→579 ; σ 0.0897→0.0837 ; Cook max 0.084 < 1 ; 25 obs > 4/n ; 18 leviers > 2k/n,analysis/python/cases/ch14_nettoyage.py,analysis/python/tests/test_ch14.py::test_iterations_regression,581;579;0.0897;0.0837;25;18,581;579;0.0897;0.0837;25;18,verifie,2026-10-31327CALC-14-008,14,Identités : tr(H) = k ; D_i = r_i² h/(k(1−h)) = forme par réestimation ; t_i = r_i sqrt((n−k−1)/(n−k−r_i²)),analysis/python/cases/ch14_nettoyage.py (diagnostics ; cook_direct),analysis/python/tests/test_ch14.py::test_identites_levier_cook,égalité à 1e-6,égalité à 1e-6,verifie,2026-10-31328CALC-14-009,14,Constante 1/Φ⁻¹(0.75) = 1.4826 ; 1.4826·MAD → σ (simulation 200 000 N(0;2)),scipy.stats.norm,analysis/python/tests/test_ch14.py::test_constante_mad_et_score,1.4826 ; 2.00 ± 1 %,1.4826 ; 2.00,verifie,2026-10-31329CALC-14-010,14,Masquage Hull (tab. 14.3) : n 193 ; s 1.395 ; 1.4826·MAD 0.181 ; 2 vs 10 signalées ; 2 prix à 1 $,analysis/python/cases/ch14_nettoyage.py (illustration_masquage),analysis/python/tests/test_ch14.py::test_masquage,193;1.395;0.181;2;10,193;1.395;0.181;2;10,verifie,2026-10-31330CALC-14-011,14,Modèles (tab. 14.6) : brut n 573 R² 0.039 σ 1.231 lnS 0.2009 préd 565 471 ; règles σ 0.1132 ; S1 σ 0.0897 ; nettoyé n 579 R² 0.850 σ 0.0837 lnS 0.5335 préd 637 017 ; référence n 600 R² 0.853 σ 0.0830 lnS 0.5391 préd 637 953,analysis/python/cases/ch14_nettoyage.py (comparer_modeles),analysis/python/tests/test_ch14.py::test_modeles_avant_apres,idem,idem,verifie,2026-10-31331CALC-14-012,14,Écart nettoyé − référence ≤ 0.44 erreur-type sur les 16 coefficients,analysis/python/cases/ch14_nettoyage.py,analysis/python/tests/test_ch14.py::test_modeles_avant_apres,< 0.5,0.44,verifie,2026-10-31332CALC-14-013,14,Géocodage (tab. 14.5) : erreurs médianes 6/18/47/177/1199 m ; voisins conservés 99.1/97.1/93.1/76.1/17.6 % ; rayon modifié 0/0/0.33/1.33/6.67 % ; 103 ventes dans 3 km ; médiane Rayleigh 1.1774σ,analysis/python/cases/ch14_nettoyage.py (simulation_geocodage),analysis/python/tests/test_ch14.py::test_geocodage,idem,idem,verifie,2026-10-31333CALC-14-014,14,Appariement (tab. 14.7) : 367 (59.4 %) ; 198 (32.0 %) ; 45 (7.3 %) ; 8 (1.3 %) ; 3 ambigus ; 0 faux,analysis/python/cases/ch14_nettoyage.py (appariement_role),analysis/python/tests/test_ch14.py::test_appariement,idem,idem,verifie,2026-10-31334CALC-14-015,14,Imputations (tab. 14.8) : suppression n 535 lnT 0.0969 préd 640 921 ; médiane 0.0941 / 637 017 ; régression 0.0940 / 637 166 ; indicateur 0.0945 / 638 354 ; coef manq_terrain −0.0215,analysis/python/cases/ch14_nettoyage.py (comparer_imputations),analysis/python/tests/test_ch14.py::test_imputations,idem,idem,verifie,2026-10-31335CALC-14-016,14,Sensibilité (tab. 14.9) : 12 combinaisons ; 6 liées détectées partout ; faux positifs 22 (2.5;2.5) / 2 (3.5;3) / 0 (4;3) ; σ 0.0783–0.0838 ; prédiction 633 813–638 476,analysis/python/cases/ch14_nettoyage.py (sensibilite_seuils),analysis/python/tests/test_ch14.py::test_sensibilite_seuils,idem,idem,verifie,2026-10-31336CALC-14-017,14,Variante MNAR (sol. 14.7) : suppression n 536 lnT 0.1007 préd 638 976 ; médiane 0.0977 / 636 195 ; régression 0.0972 / 636 224 ; indicateur 0.0978 / 638 201 ; coef manq_terrain −0.0502 (e.-t. 0.0143),analysis/python/cases/ch14_nettoyage.py (variante_mnar_terrain),analysis/python/tests/test_ch14.py::test_variante_mnar,idem,idem,verifie,2026-10-31337CALC-14-018,14,Solutions 14.1–14.5 : méd 3260 MAD 110 z 16.68 / zc 2.65 ; 1776 pi² = 165.0 m² ; r −3.074 t −3.097 D 0.0246 ; εδ −0.0347 (−3.4 %) σ 0.173 ; poids FS 16.35 / 11.18 / 0.78,solutions/ch14.tex,analysis/python/tests/test_ch14.py::test_solutions_exercices,idem,idem,verifie,2026-10-31338CALC-15-01,15,Mois d'inventaire T3 2026 par RMR (inscriptions / (ventes/3)) : province/Montréal/Québec/Gatineau/Sherbrooke/Trois-Rivières/Saguenay,analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_mois_inventaire_et_absorption,"6,1 ; 6,6 ; 3,1 ; 6,5 ; 4,3 ; 3,6 ; 4,0","6,08 ; 6,59 ; 3,06 ; 6,48 ; 4,35 ; 3,60 ; 4,03",verifie,2026-10-31339CALC-15-02,15,Taux d'absorption mensuel = 1/MI (Québec 32,7 % ; Montréal 15,2 %) et ratio stock/flux = MI / (délai unifamiliale en mois) : Montréal 5,0 ; Gatineau 5,8 ; Québec 3,2,analysis/python/cases/ch15_segmentation.py340CALC-15-03,15,Parts des ventes par secteur de Gatineau : APCIQ T3 2026 (1 044) vs jeu synthétique (600) ; Hull 16,7 % vs 31,0 %,analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_parts_secteurs_gatineau,"33,1/16,7/19,3/10,3/20,6 vs 33,3/31,0/20,8/14,8/0",idem341CALC-15-04,15,Test de Chow par secteur (G=5 k0=12) : SCR contraint 4,0245 / classique 6,4024 / libre 3,7360 ; F pentes 0,948 (44;540) p 0,570 ; F classique 8,029 (48;540) ; Wald HC1 54342CALC-15-05,15,Coefficients hédoniques par secteur (HC1) : ln_S 0,513 (Aylmer) à 0,558 (Masson-Angers) ; qualité 0,048 à 0,078 ; tendance 0,0030 à 0,0044343CALC-15-06,15,"Tests de Chow pour les autres partitions : Est regroupé p 0,426 ; type (k0=11, « etages » retiré) F p 0,079 / Wald p 0,0096 ; période F p 0,034 / classique 0,024 / Wald 0,037 (non rejeté à 1 %) ; k-moyennes k=2 p 0,588 ; k=5 p 0,427 / Wald 0,057",analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_chow_autres_partitions,voir tableau 15.8,idem,verifie,2026-10-31344CALC-15-07,15,"Classification k-moyennes (20 init., graine 20261031) et Ward : silhouette k=2 0,417 ; k=3 0,225 ; k=5 0,188 (Ward 0,156) ; k optimal 2 ; ARI k-moyennes/secteurs 0,213 (k=2) et 0,124 (k=5) ; segment Est = 42 Buckingham + 47 Masson-Angers ; silhouette manuelle = sklearn",analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_classification,voir tableaux 15.5 et 15.6,idem,verifie,2026-10-31345CALC-15-08,15,"Sensibilité au jeu de variables : attributs seuls silhouette 0,221 / ARI 0,001 ; coordonnées seules 0,735 / ARI k=5 0,986 ; les deux 0,417 / 0,124",analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_classification,voir tableau 15.10,idem,verifie,2026-10-31346CALC-15-09,15,"Validation croisée 10 plis : RMSE log 0,1053 (sans segment) ; 0,0839 (indicatrices de secteur, référence) ; 0,0888 (équation par secteur) ; 0,0942 (équation par segment k=5) ; erreurs abs. médianes 7,08 / 5,81 / 6,26 / 6,71 %",analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_validation_croisee,voir tableau 15.9,idem,verifie,2026-10-31347CALC-15-10,15,"Cas 3 (traite.cas3.revenus) : RBP contrat 165 540 $, marché 186 036 $, écart 20 496 $ = 11,0 % du marché ; par type 15,8 / 11,1 / 4,9 % ; loyers de marché à 98,5 / 99,4 / 94,4 % des moyennes SCHL zone 9",analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_locatif,"20 496 ; 11,0 ; 15,8 ; 11,1 ; 4,9",idem,verifie,2026-10-31348CALC-15-11,15,"SCHL zone 9 : parts de l'univers 12,5/27,8/50,5/9,1 % (somme 44 554) ; écart loyer inoccupé/occupé 1 ch. 22,9 %, RMR tous 27,1 % ; prime du parc neuf 55,2 %, part 1,41 % ; zone = 6,7 % de l'univers RMR ; 3 ch.+ zone vs RMR +7,6 %",analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_locatif,voir texte §15.6,idem,verifie,2026-10-31349CALC-15-12,15,"Rattrapage des loyers : rotation 15 % / 9,4 % / 8,5 % → an 1 : 3 074 / 1 927 / 1 742 $ ; horizon 6,7 / 10,6 / 11,8 ans ; part en 5 ans 55,6 / 39,0 / 35,9 %",analysis/python/cases/ch15_segmentation.py,analysis/python/tests/test_ch15.py::test_locatif;test_solutions_exercices,idem,idem,verifie,2026-10-31350CALC-15-13,15,"Solutions des exercices 15.1 (4,35 mois ; 23,0 % ; 5,80), 15.3 (4 059 ; 80,1 %), 15.4 (s = 0,644), 15.5 (F 0,948 / 8,03 ; quantiles 1,40 / 1,38), 15.6 (0,556 / 0,390 / 0,359 ; 15,8 % ; 22,9 %) ; 1 − 0,95^6 = 26,5 %",solutions/ch15.tex,analysis/python/tests/test_ch15.py::test_solutions_exercices,idem,idem,verifie,2026-10-31351CALC-31-01,31,"Taux mensuel canadien et taux effectif pour 4,12 % composé semestriellement ; comparaison i/12",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_taux_canadien_et_effectif,"0,34042 % ; 4,1624 % ; 0,34333 %",0.0034042 ; 0.041624 ; 0.0034333,verifie,2026-10-31352CALC-31-02,31,Identités de l'hypothèque : PMT × facteur VA = capital ; solde prospectif = solde du tableau ; solde final nul ; Σ capital = capital ; f = 12·PMT/M_0 ; C_k géométrique,analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_identites_hypotheque,identités à 1e-9,identités vérifiées,verifie,2026-10-31353CALC-31-03,31,"Dimensionnement du prêt du cas 3 : prêt RPV 1 656 424 ; prêt RCD 1 475 959 (liant) ; RPV 66,83 % ; mise 732 606 ; PMT 6 246,93 ; SD 74 963 ; f 5,0789 %",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_valeurs_citees_financement,"1 475 959 ; 74 963 ; 0,050789",1475959.45 ; 74963.13 ; 0.0507894,verifie,2026-10-31354CALC-31-04,31,"Intérêts/capital an 1 (60 016 / 14 947) ; soldes 60 et 120 mois (1 394 739 / 1 295 148) ; RCD 1,20 ; flux après dette 14 993 ; cash-on-cash 2,05 % ; point mort 92,7 % / 87,8 %",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_valeurs_citees_financement,voir description,60016.26 / 14946.86 ; 1394739.19 / 1295148.22 ; 0.020465 ; 0.92697 / 0.87803,verifie,2026-10-31355CALC-31-05,31,"Convention canadienne vs américaine sur le prêt du cas 3 : PMT 6 246,93 vs 6 279,21 ; SD +387 $ ; f 5,1052 % ; solde 60 : 1 395 377",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_conventions,"6 279,21 ; +387",6279.21 ; 387.43,verifie,2026-10-31356CALC-31-06,31,"Extraits du tableau d'amortissement (mois 1 : I 5 024,50 / C 1 222,42 ; part d'intérêts 80,4 %) ; Σ intérêts 40 ans 1 522 566",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_tableau_extraits,"5 024,50 ; 1 522 566",5024.50 ; 1522565.6,verifie,2026-10-31357CALC-31-07,31,"Prêt max par RCD ⇒ RCD = seuil ; grille taux × amortissement × RCD ; 40 ans/25 ans = 1,258 ; seuil de liaison R = RCD·f·LTV = 4,571 %",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_pret_max_par_rcd_donne_rcd_seuil;test_seuil_rpv_max_par_rcd,"1,258 ; 4,571 %",1.2582 ; 0.045710,verifie,2026-10-31358CALC-31-08,31,"Règles résidentielles : MQR 6,58 % (4,58 + 2) et 5,25 % (plancher) ; mise de fonds minimale 20 000 / 40 000 / 75 000 / 125 000 ; capacité 594 162 → 491 344 (−17,3 %)",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_regles_residentielles,voir description,0.0658 ; 0.0525 ; 20000/40000/75000/125000 ; 594161.56 → 491343.62,verifie,2026-10-31359CALC-31-09,31,"Barème des primes APH (prime_aph) : 4,10 % (RPV 72,9 %, 40 ans), 5,35 % (76,2 %, 45 ans), 5,60 % (78,8 %, 50 ans) ; cohérence avec ch. 47 (5,10 / 6,35 / 6,60)",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_prime_aph_bareme;test_aph_select,"0,0410 ; 0,0535 ; 0,0560",0.0410 ; 0.0535 ; 0.0560,verifie,2026-10-31360CALC-31-10,31,Variante APH Select sur la valeur DCF : prêts 1 610 138 / 1 682 397 / 1 741 328 (RCD liant) ; SD 81 778 ; mise 598 428 → 467 238 ; primes 66 016 → 97 514,analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_aph_select,voir description,1610138 / 1682397 / 1741328 ; 81777.96 ; 66015.64 / 97514.38,verifie,2026-10-31361CALC-31-11,31,"Test de résistance RCD : taux +100/+200/+300 pb → SD 86 183 / 97 988 / 110 279 ; RCD 1,044 / 0,918 / 0,816 ; prêt qualifié 1 283 815 / 1 129 149 / 1 003 298",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_stress_rcd,voir description,86182.63 / 97987.52 / 110278.87 ; 1.0438 / 0.9180 / 0.8157,verifie,2026-10-31362CALC-31-12,31,"Levier courant : R_E = (R − Mf)/(1 − M) = R + (R − f)D/E = 2,05 % (base DCF) ; 2,67 % (base capitalisation directe)",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_levier_courant_formule,"0,0205 ; 0,0267",0.020465 ; 0.026699,verifie,2026-10-31363CALC-31-13,31,"Levier par RPV (0 → 85 %) : TRI FP 7,25 → 15,24 % croissant ; cash-on-cash 4,07 → −1,63 % décroissant ; à 75 % RCD 1,07 et flux min −69 617 ; à 85 % RCD 0,94",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_levier_par_rpv_monotone,voir description,0.0725 → 0.1524 ; 0.0407 → −0.0163 ; 1.0693 ; −69616.75,verifie,2026-10-31364CALC-31-14,31,"Proposition : y_E > y ⇔ y > k ; cas 3 y = 7,25 % > k = 4,06 % ⇒ TRI FP 11,22 % ; contre-exemple dette à 9 % ⇒ TRI FP < 7,25 % ; dette au TRI = y ⇒ y_E = y",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_proposition_levier_positif,"k 0,0406 ; y_E = y à 1e-9",0.040615 ; vérifié,verifie,2026-10-31365CALC-31-15,31,"Risque : σ_E = σ/(1 − M) ; multiplicateur 3,01 au RPV 66,8 %",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_risque_levier,"3,01",3.0147,verifie,2026-10-31366CALC-31-16,31,"Renouvellement exact : solde 1 394 739 sur 420 mois ; +0/100/200/300 pb → PMT 6 246,93 / 7 098,10 / 7 993,35 / 8 926,64 ; SD 74 963 / 85 177 / 95 920 / 107 120 (= ch. 47) ; RCD an 6 1,746 / 1,537 / 1,365 / 1,222 ; TRI FP 11,22 / 10,78 / 10,32 / 9,86 % ; approx ch. 30 : 11,22 / 10,03 / 8,81 / 7,57 % ; seuils RCD 1,20 à +317 pb, 1,00 à +502 pb",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_renouvellement_exact,voir description,toutes valeurs reproduites,verifie,2026-10-31367CALC-31-17,31,"Sensibilité SD et RCD au taux et à l'amortissement : 480 mois RCD < 1 au-delà de 5,44 % ; 300 mois à 4,12 % RCD 0,954 ; équivalence 25→40 ans ≈ 212 pb",analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_sensibilite_service_dette,"0,954 ; 5,44 %",0.9537 ; 0.05445,verifie,2026-10-31368CALC-31-18,31,Exercices 1-7 (conventions 850 000 $ ; prêt 1 M$ 480 vs 300 mois ; prêt max 16 logements + APH ; levier courant ; mise de fonds/MQR/LTI 720 000 $ ; renouvellement +150 pb ; levier 50 % vs 85 %),analysis/python/cases/ch31_financement.py,analysis/python/tests/test_ch31.py::test_exercices_coherence,voir solutions/ch31.tex,toutes valeurs reproduites,verifie,2026-10-31369CALC-25-001,25,Jeu synthétique de 200 ventes de terrains (graine 20261031) : 156 desservis ; somme des prix ; reproductibilité,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestJeuTerrains::test_reproductibilite,200 ; 156 ; 52 123 500 $,200 ; 156 ; 52 123 500 $,verifie,2026-10-31370CALC-25-002,25,Modèle hédonique des terrains : élasticité ln T ; non desservi ; mois ; R² ; prédiction du terrain du sujet,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestHedoniqueTerrains,"0,5267 ; −0,2939 ; 0,0028 ; 0,895 ; 253 412 $","0,5267 ; −0,2939 ; 0,0028 ; 0,895 ; 253 412 $",verifie,2026-10-31371CALC-25-003,25,Entonnoir de sélection des terrains (200 → 101 → 29 → 21 → 20 → 5) et comparables T059 T004 T030 T038 T049,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestComparaison::test_entonnoir_et_selection,5 comparables à Hull,5 comparables à Hull,verifie,2026-10-31372CALC-25-004,25,Grille d'ajustements des terrains (cascade hédonique) : prix ajustés ; identité P_aj = P + ΣA ; brut ≥ |net|,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestComparaison::test_grille_identites,265 383 ; 259 943 ; 274 166 ; 294 813 ; 232 086 $,idem,verifie,2026-10-31373CALC-25-005,25,Réconciliation (poids inverse du brut) : valeur pondérée ; moyenne ; médiane ; étendue ; $/m²,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestComparaison::test_reconciliation,"267 388 ; 265 278 ; 265 383 ; 23,5 % ; 431 $/m²",idem,verifie,2026-10-31374CALC-25-006,25,Allocation : part du terrain Hull (médiane ; Q1 ; Q3) ; sur grille ch17 ; sur prédiction hédonique,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestAllocationExtraction::test_allocation,"48,2 % ; 42,4 ; 54,3 ; 280 412 ; 307 584 $",idem,verifie,2026-10-31375CALC-25-007,25,Prix implicite marginal du terrain (cas 1) : β ln T × P/T ; contribution marginale ; facteur d'âge 28 ans ; dépréciation implicite,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestAllocationExtraction::test_prix_implicite_marginal,"96,4 $/m² ; 59 750 $ ; 0,8852 ; 20,8 %",idem,verifie,2026-10-31376CALC-25-008,25,Extraction sur les 5 comparables du ch. 16 (âge-vie 60 ans vs dépréciation de marché) ; médianes transposées à 620 m²,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestAllocationExtraction::test_extraction_comparables,354 826 $ ; 242 545 $,354 826 $ ; 242 545 $,verifie,2026-10-31377CALC-25-009,25,Technique résiduelle cas 3 : C_B ; R_B ; revenus ; V_L ; identité RNE = R_L V_L + R_B C_B ; écart vs capitalisation ; R_L implicite,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestResiduelle::test_cas_de_base,"1 140 000 ; 6,25 % ; 71 250 / 18 706 ; 498 820 $ ; −19,6 % ; 2,08 %",idem,verifie,2026-10-31378CALC-25-010,25,Sensibilité résiduelle (δ × n × R_L) : cellules citées dont valeur négative et −38,6 % pour +50 pb,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestResiduelle::test_sensibilite,−256 531 ; 306 018 ; 750 946 ; 1 233 254 $,idem,verifie379CALC-25-011,25,Lotissement actualisé : prix du lot ; produit ; flux ; VA (traite.finance.van) ; statique ; ratio,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestLotissement::test_cas_de_base,"254 486 ; 3 053 830 ; 1 230 878 ; 1 579 602 $ ; 40,3 %",idem,verifie,2026-10-31380CALC-25-012,25,Sensibilité du lotissement (absorption,taux,prix ±10 %,viabilisation,profit),analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestLotissement::test_sensibilite381CALC-25-013,25,Rente foncière : perpétuelle ; Gordon ; bail 40 ans + réversion,analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestRenteEtSynthese::test_rente,220 000 ; 366 667 ; 294 278 $,idem,verifie,2026-10-31382CALC-25-014,25,"Valeur du terrain retenue pour le sujet du cas 1 (= valeur extraite par le ch. 24, confirmée) et parts de la grille ch17 / prédiction hédonique",analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestRenteEtSynthese::test_valeur_retenue,"277 000 $ (447 $/m²) ; 47,6 % ; 43,4 %",idem,verifie,2026-10-31383CALC-25-015,25,Exercices 25.1 à 25.7 (unités,allocation,extraction G0477,résiduelle,élasticité,lotissement 2 lots/an à 12 %,rente)384CALC-23-001,23,Cohérence avec le ch. 21 : D ; I ; E ; C_N du devis cas 1,analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestStructure::test_coherence_ch21,298826.17 ; 62598.68 ; 36142.49 ; 397567.33,idem,verifie,2026-10-31385CALC-23-002,23,Structure complète des 38 postes (part du bloc et part de C_N ; somme des parts = 1),analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestStructure::test_structure_complete,supervision 57.04 % de I ; 8.98 % de C_N,idem,verifie,2026-10-31386CALC-23-003,23,Ratios des 5 postes indirects (% D ; % D+I ; % C_N) et total hors supervision,analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestStructure::test_ratios_indirects,20.95 ; 17.32 ; 15.75 % ; hors supervision 9.00 % de D,idem,verifie,2026-10-31387CALC-23-004,23,Coûts directs par nature dominante (convention du chapitre),analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestStructure::test_parts_nature,mixte 64.5 % ; matériaux 21.7 % ; main-d'œuvre 7.8 % ; services 3.2 % ; équipement 2.8 %,idem,verifie,2026-10-31388CALC-23-005,23,Taux documentés BdC lus dans data/raw (affiché 5 ans ; fonds avancés août 2026),analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestFinancement::test_taux_documentes,6.19 % ; 4.58 / 4.34 / 3.90 / 4.19 %,idem,verifie,2026-10-31389CALC-23-006,23,Formules d'intérêts intérimaires (continu L·i·T/2 ; mensuel ×(n+1)/n ; capitalisé ; mise de fonds d'abord ; i·T implicite),analysis/python/traite/finance.py,analysis/python/tests/test_ch23.py::TestFinancement::test_formules_interets,identités exactes,idem,verifie,2026-10-31390CALC-23-007,23,Vérification du forfait de financement du cas 1 (base hors financement ; intérêts 6 mois à 6.19 % ; i·T implicite ; durée implicite),analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestFinancement::test_financement_cas1,352895.22 ; 5461.05 / 6371.23 / 6426.29 ; 0.04834 ; 9.4 mois ; C_N 394191.90,idem,verifie,2026-10-31391CALC-23-008,23,Grille intérêts durée × taux et C_N correspondant (linéarité),analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestFinancement::test_grille,3529 → 23820 $ ; C_N 392067 → 414387 $,idem,verifie,2026-10-31392CALC-23-009,23,Taxes de vente par profil (TPS 5 % ; TVQ 9.975 % ; remboursements RC4028) sur 577567 $,analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestTaxes::test_profils,86491 (14.98 %) ; 57612 (9.98 %) ; 0 ; TTC 664058 / 635180 / 577567,idem,verifie,2026-10-31393CALC-23-010,23,Remboursements TPS (général et premiers acheteurs) et TVQ aux seuils ; interpolation linéaire signalée,analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestTaxes::test_remboursements,6120 (340 k$) ; 6300 (350 k$) ; 3150 (400 k$) ; 0 (450 k$) ; 4987.50 TVQ (250 k$),idem,verifie,2026-10-31394CALC-23-011,23,Marges (m_p = m_c/(1+m_c)) ; rendement implicite du capital ; transmission salariale,analysis/python/traite/finance.py;analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestIncitatif,9.09 % ; 13.4 %/an (9 mois) ; ΔD 8367/9562/11953 $,idem,verifie,2026-10-31395CALC-23-012,23,IPCB par région et type (T3 2025 ; T3 2026 ; var. a/a ; var. depuis T1 2020 ; couverture Québec 2023T1),analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestIPCB,Montréal rés. 108.5→117.8 (+8.57 % ; +62.0 %) ; Québec +9.2 % ; O-G ont. +4.6 % ; composite +2.7 % ; pic 18.9 % 2022T1,idem,verifie,2026-10-31396CALC-23-013,23,IPCB Montréal maison individuelle par division (var. 2020T1-2022T4 et a/a),analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestIPCB::test_divisions,bois +85.1 % / +8.7 % ; béton +29.0 % / +15.4 % ; agrégat +36.0 % / +8.6 %,idem,verifie,2026-10-31397CALC-23-014,23,Transposition multilogement cas 3 (hypothèses déclarées) : D ; I ; E ; C_N ; par logement ; par m² ; variante 18 mois 7 %,analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestMultilogement::test_cas3,1552717.60 ; 312868.76 ; 186558.64 ; 2052145.00 ; 171012 ; 2487/2114 ; 2076595.18,idem,verifie,2026-10-31398CALC-23-015,23,Tornade du coût neuf (durée ; taux ; indirects ; salaires ; incitatif),analysis/python/cases/ch23_structure_couts.py,analysis/python/tests/test_ch23.py::TestSensibilite::test_tornade,394192-406206 ; 395948-405653 ; 381132-414003 ; 397567-408086 ; 379496-415639,idem,verifie,2026-10-31399CALC-23-016,23,Exercices 23.1 à 23.7 (solutions),analysis/python/tests/test_ch23.py,analysis/python/tests/test_ch23.py::TestExercices,voir solutions/ch23.tex,idem,verifie,2026-10-31400CALC-24-001,24,"Âges du sujet : chronologique 28, effectif structure 29 (convention ch. 11), vie restante 31, indice d'état 2,809, âge effectif pondéré 32,8",analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestAges,28 ; 29 ; 31 ; 2.809 ; 32.8,idem,verifie,2026-10-31401CALC-24-002,24,"Âge-vie simple (28/60 et 29/60), âge-vie modifiée (curable 10 479,98 + reste × 29/60)",analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestPhysique::test_quatre_lectures,185531.42 (46.67 %) ; 192157.55 (48.33 %) ; 197572.20 (49.70 %),idem,verifie,2026-10-31402CALC-24-003,24,Dépréciation ventilée (import ch11_inspection) : curable + 18 composantes + longue durée ; identité de base et proposition d'écart,analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestPhysique,10479.98 + 130584.55 + 80025.35 = 221089.88 (55.61 %) ; base longue 165569.69 ; écart vs âge-vie 28932.33,idem,verifie,2026-10-31403CALC-24-004,24,"Désuétude fonctionnelle curable (salle d'eau) : 16 000 − coût à neuf 8 394,69 (direct 6 309,76 × 1,33043)",analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestDesuetudes::test_salle_eau,7605.31,7605.31,verifie,2026-10-31404CALC-24-005,24,"Exemples incurables : 75 $/mois × (12 × 19,82) ; 6 000/0,045 × 0,70 ; paires (520 000 − 490 000) × 0,60",analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestDesuetudes::test_exemples,17838.00 ; 133333.33 → 93333.33 ; 18000,idem,verifie,2026-10-31405CALC-24-006,24,"Valeur du terrain par secteur extraite des ventes ≤ 10 ans (600 ventes, prix ramenés au 2026-09-01, C_N transposé) ; Hull médiane → V_L retenue",analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestExtraction::test_valeur_terrain,"Hull 276953.99 (13 ventes, 50,5 %) → 277 000 $ (447 $/m²) ; Aylmer 321579 ; Gatineau 270089 ; Buckingham 182678 ; Masson-Angers 175657",idem,verifie,2026-10-31406CALC-24-007,24,Extraction D = C_N − (P_adj − V_L) sur 600 ventes ; médianes par tranche ; ajustements linéaire / quadratique / origine,analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestExtraction,tranches 3.8/14.3/19.2/24.4/30.5/33.1/40.3 % ; 0.0878+0.00447a (R² 0.228) ; 0.0107+0.00891a−0.0000514a² (R² 0.250) ; 0.619 %/an → 162 ans ; δ(28) = 22.00 %,idem,verifie,2026-10-31407CALC-24-008,24,"Profils : prix neuf hédonique du sujet, α, hédonique total/bâtiment et générateur total/bâtiment à 28 ans",analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestProfils,720727 $ ; α 0.384 ; 11.48 → 18.65 % ; 12.23 → 19.86 %,idem,verifie,2026-10-31408CALC-24-009,24,"Valeur par le coût : (A) ventilée 277 000 + 397 567,33 − 221 089,88 − 7 605,31 ; (B) extraction D = 22,00 % × C_N = 87 461,05",analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestValeur::test_deux_lectures,A 445872.14 (57.52 %) ; B 579500.97 → 580 000 $ (D 95066.36 = 23.91 % ; contribution 302500.97) ; écart 133628.83,idem,verifie,2026-10-31409CALC-24-010,24,Erreur d'ordre : désuétude externe 10 % sur C_N vs sur base restante,analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestValeur::test_ordre_externe,39756.73 vs 30250.10 ; écart 9506.64,idem,verifie,2026-10-31410CALC-24-011,24,Grille âge-vie modifiée (vie 50-100 × âge effectif 20-37) ; variantes d'extraction ; tornade,analysis/python/cases/ch24_depreciation.py,analysis/python/tests/test_ch24.py::TestSensibilite,22.1-74.7 % ; δ(28) 19.68-27.20 % ; terrain ±15 % → 537951-621051 ; indice → 554944-606170 ; extraction → 558807-588716 ; ventilée → 445872,idem,verifie,2026-10-31411CALC-24-012,24,Exercices 24.1 à 24.7 (solutions),analysis/python/tests/test_ch24.py,analysis/python/tests/test_ch24.py::TestExercices,voir solutions/ch24.tex,idem,verifie,2026-10-31412CALC-26-001,26,"RBP contractuel / au marché / écart du cas 3 (traite.cas3.revenus ; identiques aux ch. 2, 27, 29, 30, 47)",analysis/python/cases/ch26_etat_locatif.py (indicateurs),analysis/python/tests/test_ch26.py::test_valeurs_citees_etat_locatif,165 540 / 186 036 / 20 496 $,165 540 / 186 036 / 20 496 $,verifie,2026-10-31413CALC-26-002,26,Écart moyen pondéré δ̄ = Σ(Lm−Lc)/ΣLm ; ratio pondéré ; moyenne simple des ratios,analysis/python/cases/ch26_etat_locatif.py (indicateurs),analysis/python/tests/test_ch26.py::test_valeurs_citees_etat_locatif,"11,02 % ; 0,890 ; 0,884","11,02 % ; 0,890 ; 0,884",verifie,2026-10-31414CALC-26-003,26,Part des baux sous le marché à 5 / 10 / 20 % (nombre de logements) ; concentration de l'écart sur 3 baux,analysis/python/cases/ch26_etat_locatif.py (indicateurs),analysis/python/tests/test_ch26.py::test_valeurs_citees_etat_locatif,"8 / 6 / 2 (66,7 / 50,0 / 16,7 %) ; 44,2 %","8 / 6 / 2 ; 44,2 %",verifie,2026-10-31415CALC-26-004,26,Ancienneté moyenne / médiane / max ; écart mensuel moyen ; loyers moyens contrat / marché ; $/m² contrat / marché ; mois avant échéance,analysis/python/cases/ch26_etat_locatif.py (tableau_etat/indicateurs),analysis/python/tests/test_ch26.py::test_valeurs_citees_etat_locatif,"6,33 / 6,5 / 18 ans ; 142,33 $ ; 1 149,58 / 1 291,92 $ ; 16,72 / 18,79 $/m² ; 9,9 mois",identiques,verifie,2026-10-31416CALC-26-005,26,"Durée espérée d'occupation E[n] = 1/ρ pour ρ = 8,5 / 9,4 / 15 / 13 %",analysis/python/cases/ch26_etat_locatif.py (esperance_duree),analysis/python/tests/test_ch26.py::test_survie_et_duree,"11,76 / 10,64 / 6,67 / 7,69 ans","11,76 / 10,64 / 6,67 / 7,69 ans",verifie,2026-10-31417CALC-26-006,26,"VA espérée de l'écart par logement Δ₁/(r−g+ρ(1+g)) (Δ₁ net de 3,9 %) ; totaux à ρ = 8,5 / 9,4 / 15 % et sans rotation ; logement 103 et 104",analysis/python/cases/ch26_etat_locatif.py (va_ecart_logements),analysis/python/tests/test_ch26.py::test_valeurs_citees_va_et_sensibilite,156 977 / 146 128 / 102 188 / 525 244 $ ; 103 : 29 318 / 27 292 / 19 085 / 98 099 $ ; 104 : 1 316 $ (15 %),identiques (±1 $),verifie,2026-10-31418CALC-26-007,26,Cohérence avec le chapitre 2 : Σ VA par logement à ρ = 15 % = 102 188 $ ; sans rotation 525 244 $ ; Δ₁ net total 19 697 $ ; formule fermée = série explicite,analysis/python/cases/ch26_etat_locatif.py,analysis/python/tests/test_ch26.py::test_coherence_chapitre_2 ; ::test_formule_fermee_egale_serie,102 188 ; 525 244 ; 19 697 $,102 188 ; 525 244 ; 19 697 $,verifie,2026-10-31419CALC-26-008,26,"Sensibilité : VA agrégée pour ρ ∈ {5, 8,5, 9,4, 15, 25 %} × r ∈ {6,25, 7,25, 8,25 %} (g 3,5 %) et × g ∈ {2,5, 3,5, 4,5 %} (r 7,25 %)",analysis/python/cases/ch26_etat_locatif.py (sensibilite_va),analysis/python/tests/test_ch26.py::test_valeurs_citees_va_et_sensibilite,tableau 26.7 du chapitre (p. ex. 220 691 ; 66 487 ; 107 779 ; 97 148 ; 97 872 ; 106 902 $),identiques (±1 $),verifie,2026-10-31420CALC-26-009,26,"Loyer économique sur la valeur au rôle 2 200 000 $ (R médian 4,415 %) : RNE*, DE hors gestion, RBE*, RBP*, loyer mensuel ; identité sur la valeur par capitalisation (= loyer contractuel)",analysis/python/cases/ch26_etat_locatif.py (loyer_economique),analysis/python/tests/test_ch26.py::test_loyer_economique_identite ; ::test_valeurs_citees_economique_normalisation,"97 130 ; 63 647,43 ; 175 917 ; 173 316 $ ; 1 203,59 $/mois ; identité 1 149,58 $",identiques,verifie,2026-10-31421CALC-26-010,26,"Tarif D 2026 : coût mensuel par mois (redevance 0,46154 $/j ; 7,065 ¢ ≤ 40 kWh/j ; 11,142 ¢ au-delà) pour le profil 12 000 kWh ; coût annuel, moyenne mensuelle, part redevance, kWh en T2, mois > seuil ; loyer nu 1 450 − moyenne ; indexation 3 %",analysis/python/cases/ch26_etat_locatif.py (normalisation_electricite),analysis/python/tests/test_ch26.py::test_tarif_d_structure ; ::test_valeurs_citees_economique_normalisation,"1 073,34 $ ; 89,45 $ ; 15,7 % ; 1 400 kWh ; 3 mois ; 1 360,55 $ ; 92,13 $ ; janvier 175,45 $ ; juillet 49,63 $",identiques,verifie,2026-10-31422CALC-26-011,26,"Calendrier des avis (bail 2026-07-01 → 2027-06-30 ; bail de 6 mois → 2026-12-31) : fenêtre d'avis, réponse, demande TAL, reprise, nouveau locataire 10 j / 2 mois",analysis/python/cases/ch26_etat_locatif.py (calendrier),analysis/python/tests/test_ch26.py::test_calendrier,2026-12-30 → 2027-03-30 ; 2027-04-30 ; 2027-05-30 ; 2026-12-30 ; 2027-07-11 ; 2027-09-01,identiques,verifie,2026-10-31423CALC-26-012,26,Indemnité d'éviction minimale du logement 103 (18 ans × 728 $),calcul direct dans le texte (éq. indemnite),—,13 104 $,13 104 $,verifie,2026-10-31424CALC-26-013,26,"Cas 2 : RBP contrat / marché / écart ; écart pondéré ; ancienneté moyenne ; baux > 10 % sous le marché ; RC 383 $ (ratio 0,732) ; RBE",analysis/python/cases/ch26_etat_locatif.py (cas2_etat ; traite.cas2.revenus),analysis/python/tests/test_ch26.py::test_valeurs_citees_cas2,"41 832 / 49 332 / 7 500 $ ; 15,2 % ; 4,0 ans ; 2 ; 40 577,04 $",identiques,verifie,2026-10-31425CALC-26-014,26,"Perte d'une année d'indexation à 3,1 % sur 165 540 $ (≈ 5 100 $) ; VA de l'écart RC du cas 2 à ρ = 13 % (≈ 26 000 $)",calcul direct (165 540 × 0,031 = 5 132 $ ; 12×383×0,97/(0,0725−0,035+0,13×1426CALC-26-015,26,"Exercices 26.1 à 26.7 (toutes les valeurs des solutions : calendrier, indicateurs 6 logements, normalisation 14 000 kWh, VA logement 103, loyer économique triplex, art. 1955, bail commercial)",analysis/python/cases/ch26_etat_locatif.py (exercices),analysis/python/tests/test_ch26.py::test_exercices,voir solutions/ch26.tex,"identiques (tolérances 1 $ / 0,01 $ / 5e-5)",verifie,2026-10-31427CALC-27-001,27,RBP contractuel du cas 3 (12 baux × 12 ; 13 795 $/mois),analysis/python/cases/ch27_revenus.py (traite.cas3.revenus),analysis/python/tests/test_ch27.py::test_valeurs_citees_cas3,165540,165540.00,verifie,2026-10-31428CALC-27-002,27,RBP au marché du cas 3 (15 503 $/mois × 12) et déficit de loyer,analysis/python/cases/ch27_revenus.py,analysis/python/tests/test_ch27.py::test_valeurs_citees_cas3,186036 ; 20496 (11,02 %),186036.00 ; 20496.00 (0.1102),verifie429CALC-27-003,27,"Provision inoccupation et pertes 3,9 % du RBP contractuel ; loyers effectifs",analysis/python/cases/ch27_revenus.py,analysis/python/tests/test_ch27.py::test_valeurs_citees_cas3,6456.06 ; 159083.94,6456.06 ; 159083.94,verifie,2026-10-31430CALC-27-004,27,RBE cas 3 = RBP(1−v) + autres 9 360 $ ; RBE/RBP ; par logement ; par m²,analysis/python/cases/ch27_revenus.py (traite.finance.revenu_brut_effectif),analysis/python/tests/test_ch27.py::test_valeurs_citees_cas3,168443.94 ; 1,0175 ; 14037 ; 204,17,168443.94 ; 1.0175 ; 14037.00 ; 204.17431CALC-27-005,27,Taux d'occupation économique cas 3 = (1−v)·RBP_c/RBP_m,analysis/python/cases/ch27_revenus.py,analysis/python/tests/test_ch27.py::test_valeurs_citees_cas3,0,8551,0.8551,verifie432CALC-27-006,27,"Variantes de convention : v sur tous les revenus (−365,04 $) ; RBE aux loyers de marché",analysis/python/cases/ch27_revenus.py,analysis/python/tests/test_ch27.py::test_valeurs_citees_cas3,168078.90 ; 188140.60,168078.90 ; 188140.60,verifie,2026-10-31433CALC-27-007,27,"Décomposition déclarée de v : frictionnel 15 % × 1/12 = 1,25 % ; résiduel 2,65 %",analysis/python/cases/ch27_revenus.py (traite.finance.taux_vacance_frictionnelle),analysis/python/tests/test_ch27.py::test_valeurs_citees_cas3,0,0125 ; 0,0265,0.0125 ; 0.0265434CALC-27-008,27,"État locatif par type (3½ : 15,8 % ; 4½ : 11,1 % ; 5½ : 4,9 % ; total 11,0 % ; ancienneté 9,0/5,8/2,5/6,3 ans)",analysis/python/cases/ch27_revenus.py (par_type_cas3),analysis/python/tests/test_ch27.py::test_par_type_cas3,15.76;11.07;4.93;11.02,15.76;11.07;4.93;11.02,verifie,2026-10-31435CALC-27-009,27,"Cas 2 : RBP 41 832 ; marché 49 332 ; déficit 7 500 (15,2 %) ; provision 3 % ; RBE ; RBE marché ; θ ; variante occupant",analysis/python/cases/ch27_revenus.py (traite.cas2.revenus),analysis/python/tests/test_ch27.py::test_cascade_cas2,41832;49332;7500;1254.96;40577.04;47852.04;0.8225;40953.96,idem,verifie,2026-10-31436CALC-27-010,27,"Lecture SCHL : inoccupation et rotation par RMR 2024/2025 (tableaux 1.1.1 et 1.1.6, fichier Québec)",analysis/python/cases/ch27_revenus.py (schl_inoccupation_rmr; schl_rotation_rmr),analysis/python/tests/test_ch27.py::test_schl_lectures,"Mtl 2,1/2,9 ; 11,1/9,4 ; Qc 0,9/2,4 ; 13,9/13,0 ; Gat 1,9/3,8 ; 17,3/16,2 ; Sher 1,4/2,7 ; 10,4/12,0 ; T-R 0,9/2,7 ; 10,2/10,1 ; Sag 1,6/1,3 ; 13,3/12,6",idem,verifie,2026-10-31437CALC-27-011,27,"Lecture SCHL : inoccupation et rotation selon la taille (RMR et île de Montréal, tableaux 1.3.1 et 1.3.4)",analysis/python/cases/ch27_revenus.py (schl_taille_montreal),analysis/python/tests/test_ch27.py::test_schl_lectures,"île 2,3/2,2/3,9/3,8/5,1/3,1 ; RMR 2,1/2,1/3,4/3,7/5,7/2,9 ; rotation RMR 7,6/8,5/9,4/12,3/14,2/9,4",idem,verifie,2026-10-31438CALC-27-012,27,"Lecture SCHL : quartiles (RMR : 1,3/1,9/3,0/4,9), loyers inoccupés/occupés île (1 573/1 275 ; 2 ch. 1 815/1 349), année de construction île (2015+ : 5,6)",analysis/python/cases/ch27_revenus.py,analysis/python/tests/test_ch27.py::test_schl_lectures,idem,idem,verifie,2026-10-31439CALC-27-013,27,"IPC loyer Québec (18-10-0004-01) : sept. 2026 174,2 / sept. 2025 168,6 = +3,32 % ; TCAC 10 ans 4,02 % ; 5 ans 6,49 %",analysis/python/cases/ch27_revenus.py (ipc_loyer_quebec),analysis/python/tests/test_ch27.py::test_ipc_loyer,3.32 ; 4.02,3.32 ; 4.02,verifie,2026-10-31440CALC-27-014,27,"Grille frictionnelle v_f = ρ·d/12 (ρ 5-25 %, d 0,5-3 mois)",analysis/python/cases/ch27_revenus.py (grille_frictionnelle),analysis/python/tests/test_ch27.py::test_grille_et_sensibilite,"9,4 %×1 mois = 0,78 ; 13 %×2 = 2,17 ; 15 %×1 = 1,25",idem,verifie,2026-10-31441CALC-27-015,27,"Sensibilité à v (R = 4,415 %) : RBE, RNE, valeur pour v = 2,0/2,9/3,9/5,0/6,0/8,0 % ; pentes −1 655,40 / −1 589,18 / −35 995,11 $ par point",analysis/python/cases/ch27_revenus.py (sensibilite_v ; traite.cas3.rne),analysis/python/tests/test_ch27.py::test_grille_et_sensibilite,"V(2,9) 2073497.99 ; V(3,9) 2037502.89 ; V(8) 1889922.94",idem,verifie,2026-10-31442CALC-27-016,27,"Trajectoires RBP : TAL seul, rotation 9,4 %, rotation 15 %, marché ; RBP année 10 ; TCAC ; sommes ; valeurs DCF",analysis/python/cases/ch27_revenus.py (trajectoires_cas3 ; traite.cas3.projection_dcf ; valeur_dcf),analysis/python/tests/test_ch27.py::test_trajectoires,"217886.81/247211.89/251101.39/253547.97 ; 3,10/4,56/4,74/3,50 % ; V_DCF 1756414.23/2140916.43/2208565.91",idem,verifie,2026-10-31443CALC-27-017,27,"Cohérence inter-chapitres : RBE, RBP, projection de base et V_DCF = traite.cas3.tout() (ch. 29, 30, 47)",analysis/python/cases/ch27_revenus.py,analysis/python/tests/test_ch27.py::test_cascade_cas3_identites;test_trajectoires,égalité à 1e-12,égalité,verifie,2026-10-31444CALC-27-018,27,"Exercices 27.1-27.8 (RBP 78 360/87 000 ; RBE 80 025,60/79 833,60/79 929,60 ; v_f Québec 1,083/1,625 % ; concession 1 191,67 ; cas 2 ; mini-projection 47 400→62 177,79 ; V(2,9)/V(5,9) ; ratios SCHL 1,234/1,345/3,77)",analysis/python/cases/ch27_revenus.py (exercices ; mini_projection),analysis/python/tests/test_ch27.py::test_exercices;test_mini_projection,voir solutions/ch27.tex,idem,verifie,2026-10-31445CALC-27-019,27,"Nouvelles fonctions de bibliothèque : traite.finance.taux_vacance_frictionnelle, loyer_effectif_concession (identités : linéarité, 12 mois = ρ, 1/12 ≡ 2/24, erreurs sur arguments négatifs)",analysis/python/traite/finance.py,analysis/python/tests/test_ch27.py::test_vacance_frictionnelle_identites;test_loyer_effectif_concession,identités vraies,identités vraies,verifie,2026-10-31446CALC-32-001,32,"RBP contractuel du cas 2 (3 baux × 12) et RBP aux loyers de marché ; écart 7 500 $ (15,2 %) ; loyer relatif ρ_s",analysis/python/cases/ch32_plex.py (traite.cas2.revenus),analysis/python/tests/test_ch32.py::test_coherence_cas2_partage,41832;49332;0.848,41832.00;49332.00;0.8480,verifie,2026-10-31447CALC-32-002,32,"RBE = RBP(1−3 %) ; dépenses normalisées (gestion imputée 4 % du RBE = 1 623,08 $ ; réserve 1 800 $) ; RNE normalisé ; ratio 45,7 %",analysis/python/cases/ch32_plex.py (traite.cas2.rne),analysis/python/tests/test_ch32.py::test_coherence_cas2_partage,40577.04;18543.08;22033.96;0.457,40577.04;18543.08;22033.9584;0.4570,verifie,2026-10-31448CALC-32-003,32,"RNE aux loyers de marché (mêmes dépenses, gestion 4 % du RBE de marché)",analysis/python/cases/ch32_plex.py::calculer,analysis/python/tests/test_ch32.py::test_sensibilite,29017.96,29017.96,verifie,2026-10-31449CALC-32-004,32,"Indicateurs des 127 ventes (60 duplex, 67 triplex, 4 quartiers, 24 mois) : MRB médian 19,68 (triplex 19,82), taux médian 3,17 % (Q1 2,76, Q3 3,62), prix/logement 285 667 $ (triplex 281 000 $), prix/m² 3 200 $",analysis/python/cases/ch32_plex.py (traite.cas2.indicateurs_marche),analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,127;19.82;0.0317;281000,127;19.82;0.0317;281000,verifie,2026-10-31450CALC-32-005,32,Indicateurs médians par taille et par quartier (tableau 32.3),analysis/python/cases/ch32_plex.py::indicateurs_par_groupe,analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,duplex 583 500 $ / triplex 843 000 $ ; Limoilou 718 000 $,583500;843000;718000,verifie,2026-10-31451CALC-32-006,32,"Identité R = (1−v)(1−d)/MRB sur chaque vente (v = 2,4 %, d = ratio de la vente)",analysis/python/cases/ch32_plex.py::decomposition_taux,analysis/python/tests/test_ch32.py::test_identite_mrb_taux,écart max < 2e-4,< 2e-4,verifie,2026-10-31452CALC-32-007,32,"Décomposition R_c = ρ R_m (dépenses proportionnelles) ; taux au marché médian 3,41 % vs 3,17 % au contrat ; ρ médian 0,947 ; MRB marché médian 18,33",analysis/python/cases/ch32_plex.py::decomposition_taux,analysis/python/tests/test_ch32.py::test_decomposition_rho,0.0341;0.0317;0.947,0.0341;0.0317;0.9468,verifie,2026-10-31453CALC-32-008,32,"Régression taux = a + b(ρ−1) sur 127 ventes : a = 3,451 %, b = 0,0284, R² 0,071, σ 0,685 % ; avec état et taille : a 3,426 %, b_ρ 0,0302, b_état −0,0007, b_n −0,0006, R² 0,080 ; ln MRB = 2,9109 − 0,9564(ρ−1), R² 0,108",analysis/python/cases/ch32_plex.py::regression_taux_loyer_relatif,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,0.03451;0.0284;-0.9564,0.034514;0.02838;-0.9564,verifie,2026-10-31454CALC-32-009,32,"Indications brutes des 127 ventes : MRB 829 110,24 $ ; capitalisation 695 077,55 $ ; par logement 843 000 $ ; au m² 838 400 $ (identiques à traite.cas2.tout, ch. 46)",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_indicateurs,829110.24;695077.55;843000;838400,829110.24;695077.55;843000.00;838400.00,verifie,2026-10-31455CALC-32-010,32,"Taux ajusté au loyer relatif du sujet 3,02 % → V_cap 729 549 $ ; MRB ajusté 21,25 → 888 878 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,0.0302;729549;888878,0.030202;729549.19;888877.79,verifie,2026-10-31456CALC-32-011,32,"Sélection de 5 comparables triplex Limoilou parmi 28 candidats par distance d'attributs (6 caractéristiques, échelles et poids déclarés) : Q0187, Q0222, Q0243, Q0207, Q0235",analysis/python/cases/ch32_plex.py::selection_comparables (traite.comparables.distance_attributs),analysis/python/tests/test_ch32.py::test_comparables_selection,28 candidats ; 5 retenus,28;5,verifie,2026-10-31457CALC-32-012,32,"Médianes des 5 comparables : prix/logement 306 000 $, MRB 22,05, taux 2,97 %, prix/m² 3 352,73 $ → indications 918 000 $, 922 395,60 $, 741 884 $, 878 415 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,918000;922396;741884;878415,918000;922395.60;741884.12;878414.55,verifie,2026-10-31458CALC-32-013,32,"Indication pondérée 0,40 × 918 000 + 0,35 × 922 396 + 0,25 × 729 549 = 872 425,76 $ ≈ 870 000 $ ; taux implicite 2,53 % ; MRB implicite 20,86 ; 290 809 $/log. ; 3 330 $/m² ; +76,2 % vs rôle 495 000 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,872426;870000;0.0253;20.86,872425.76;870000;0.02526;20.855,verifie,2026-10-31459CALC-32-014,32,"Explication de l'écart capitalisation/comparaison : RNE au ratio médian des ventes (35,7 %) 26 091 $ → 863 880 $ ; indexation du prix/logement des 127 ventes (ancienneté médiane 11,3 mois, 7,29 %/an) → 900 926 $",analysis/python/cases/ch32_plex.py::indications,analysis/python/tests/test_ch32.py::test_valeurs_citees_regression_et_indications,863880;900926,863879.94;900926.12,verifie,2026-10-31460CALC-32-015,32,"Prime d'occupation (R* = 5,00 %, borne basse CBRE Québec basse hauteur B) : 440 679 $ + 139 680 $ + 292 067 $ (33,5 %) = 872 426 $ ; en taux : 5,00 → R_m 3,33 % → R_c 2,53 %",analysis/python/cases/ch32_plex.py::prime_occupant,analysis/python/tests/test_ch32.py::test_prime_occupant,440679.17;139680;292067;0.335,440679.17;139680.00;292066.59;0.3348,verifie,2026-10-31461CALC-32-016,32,Mise de fonds minimale assurée (Finances Canada 2024) : 450 000 → 22 500 ; 843 000 → 59 300 ; 870 000 → 62 000 ; 1 200 000 → 95 000 ; 1 500 000 → 125 000 ; 1 600 000 → non assurable,analysis/python/cases/ch32_plex.py::mise_de_fonds_minimale_assuree,analysis/python/tests/test_ch32.py::test_mise_de_fonds_minimale,22500;59300;62000;95000;125000;NaN,22500;59300;62000;95000;125000;nan,verifie,2026-10-31462CALC-32-017,32,"Financement de l'acheteur-occupant : prêt 808 000 $ (RPV 92,9 %), 4,12 % composé semestriellement, 300 mois → 4 302,97 $/mois, 51 635,62 $/an, constante 6,39 % ; intérêts an 1 32 654,64 $, capital an 1 18 980,98 $ ; solde après 60 mois 704 858,60 $ ; TAM 6,12 % → 5 227,41 $/mois",analysis/python/cases/ch32_plex.py::financement_occupant (traite.finance.Hypotheque),analysis/python/tests/test_ch32.py::test_financement_occupant,4302.97;51635.62;5227.41;704858.60,4302.9687;51635.6243;5227.4114;704858.6046,verifie,2026-10-31463CALC-32-018,32,"Coût net d'occupation (reprise du RC) : 51 635,62 + 16 920 + 2 219,60 − 28 389,96 = 42 385,26 $/an = 3 532,11 $/mois ; hors capital (−1 719,02) 1 813,08 $/mois vs loyer de marché 1 430 $ (+26,8 %)",analysis/python/cases/ch32_plex.py::cout_occupation,analysis/python/tests/test_ch32.py::test_financement_occupant,42385.26;3532.11;1813.08,42385.2643;3532.1054;1813.0821,verifie,2026-10-31464CALC-32-019,32,"Sensibilité au loyer relatif (ρ 0,85/0,90/0,95/1,00) : V_cap taux ajusté 731 244 / 771 019 / 807 385 / 840 764 ; V_cap taux médian 698 021 / 770 478 / 842 936 / 915 393 ; V_MRB 924 605 / 978 994 / 1 033 382 / 1 087 771 ; écart 74 629 $ à ρ = 1",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,monotonie ; RNE(ρ=1) = RNE marché,ok,verifie,2026-10-31465CALC-32-020,32,"Sensibilité au taux (2,50 → 4,00 % par 25 pb) : 881 358 ; 801 235 ; 734 465 ; 677 968 ; 629 542 ; 587 572 ; 550 849 $",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,V = RNE/R,ok,verifie,2026-10-31466CALC-32-021,32,"Scénarios de financement (tableau 32.8 C) : 30 ans 3 897,25 $/mois ; MF 10 % 4 169,83 ; non assuré 20 % à 4,58 % 3 883,19 (hors capital 2 044,28) ; +100 pb 4 754,72 (2 458,56) ; +200 pb 5 227,41 (3 108,26)",analysis/python/cases/ch32_plex.py::sensibilite,analysis/python/tests/test_ch32.py::test_sensibilite,ordre des coûts,ok,verifie,2026-10-31467CALC-32-022,32,"Élasticité de la valeur capitalisée aux loyers (dépenses fixes) = RBE/RNE = 40 577/22 034 = 1,84",analysis/python/cases/ch32_plex.py (calcul direct),—,1.84,1.8416,verifie,2026-10-31468CALC-32-023,32,"Contrôle investisseur : 80 % du prix (696 000 $) non assuré 4,58 %/25 ans → SD 46 598 $, RCD 0,47, flux −24 564 $",analysis/python/cases/ch32_plex.py (traite.finance.Hypotheque),—,46598;0.47;-24564,46598;0.473;-24564,verifie,2026-10-31469CALC-32-024,32,"Exercices 32.1 à 32.7 (MRB 18,75 ; mises de fonds ; décomposition 105,4 pb ; coût d'occupation 2e 3 668,88 $ ; régression ; pondérations 856 648 / 805 809 / 920 198 ; VA du manque à gagner 4 335,85 / 12 835,08 / 40 791,47 $)",analysis/python/cases/ch32_plex.py::exercices,analysis/python/tests/test_ch32.py::test_exercices,voir solutions/ch32.tex,ok,verifie,2026-10-31470CALC-25-016,25,"Rapprochement avec le ch. 24 (appel de ch24_depreciation.extraction) : 13 ventes récentes de Hull, médiane 276 954 $ → 277 000 $, part 50,5 % ; écarts : comparaison −3,5 % (0,60 écart-type pondéré), allocation +1,2 %, extraction marché −12,4 %, hédonique terrains −8,5 % ; médiane des trois indications = 277 000 $",analysis/python/cases/ch25_terrain.py,analysis/python/tests/test_ch25.py::TestRenteEtSynthese::test_rapprochement_ch24,277 000 $ confirmé,277 000 $ confirmé,verifie,2026-10-31471CALC-28-001,28,"RBE du cas 3 = 165 540 × (1 − 0,039) + 9 360",analysis/python/cases/ch28_depenses.py (traite.cas3.revenus),analysis/python/tests/test_ch28.py::test_valeurs_citees_cas3,168443.94,168443.94,verifie,2026-10-31472CALC-28-002,28,"Dépenses normalisées hors réserve (taxes rôle × taux ; postes 2025 × 1,03 ; gestion 4 % RBE)",analysis/python/cases/ch28_depenses.py (traite.cas3.depenses_normalisees),analysis/python/tests/test_ch28.py::test_valeurs_citees_cas3,70385.19,70385.19,verifie,2026-10-31473CALC-28-003,28,"Dépenses totales (réserve 8 103 $ comprise) et ratio 46,6 % du RBE",analysis/python/cases/ch28_depenses.py,analysis/python/tests/test_ch28.py::test_valeurs_citees_cas3,78488.19 ; 0.466,78488.19 ; 0.4660,verifie,2026-10-31474CALC-28-004,28,RNE₁ = RBE − DE − RR ; par logement (12) ; par m² (825 m²),analysis/python/cases/ch28_depenses.py (traite.cas3.rne),analysis/python/tests/test_ch28.py::test_identite_rne;test_valeurs_citees_cas3,89955.75 ; 7496.31 ; 109.04,89955.75 ; 7496.31 ; 109.04,verifie,2026-10-31475CALC-28-005,28,"Cohérence avec traite.cas3.tout() utilisé par les ch. 29, 30 et 47 (RNE, dépenses, taux médian, V)",analysis/python/cases/ch28_depenses.py,analysis/python/tests/test_ch28.py::test_coherence_avec_cas3_partage,identité,identité (rel 1e-12),verifie,2026-10-31476CALC-28-006,28,"Classement : fixes 23 317,78 (29,7 %), variables 47 067,41 (60,0 %) dont gestion 6 737,76, réserve 8 103 (10,3 %) ; fixes = 13,8 % du RBE",analysis/python/cases/ch28_depenses.py::classement,analysis/python/tests/test_ch28.py::test_classement_somme;test_valeurs_citees_cas3,23317.78 ; 47067.41 ; 8103.00,23317.78 ; 47067.41 ; 8103.00,verifie,2026-10-31477CALC-28-007,28,"Groupes en % du RBE : taxes 7,08 ; assurances 6,76 ; énergie 4,37 ; entretien 6,97 ; conciergerie et services 10,11 ; honoraires 2,49 ; gestion 4,00 ; réserve 4,81",analysis/python/cases/ch28_depenses.py::classement,analysis/python/tests/test_ch28.py::test_valeurs_citees_cas3,voir description,conforme,verifie,2026-10-31478CALC-28-008,28,"Historique 2023-2025 : totaux 66 992 / 70 438 / 70 693 ; +5,5 % ; TCAC 2,7 % ; variations par poste",analysis/python/cases/ch28_depenses.py::historique_cas3,analysis/python/tests/test_ch28.py::test_historique,66992 ; 70438 ; 70693 ; 0.055 ; 0.027,66992 ; 70438 ; 70693 ; 0.0552 ; 0.0273,verifie,2026-10-31479CALC-28-009,28,"Écart de normalisation : dépenses déclarées 2025 70 693 vs normalisées 78 488,19 (+7 795,19) ; RNE historique 97 750,94 ; surévaluation 176 561 $ (8,7 %) à 4,415 %",analysis/python/cases/ch28_depenses.py,analysis/python/tests/test_ch28.py::test_historique,7795.19 ; 97750.94 ; 176561,7795.19 ; 97750.94 ; 176561,verifie,2026-10-31480CALC-28-010,28,"Normalisation alternative (moyenne indexée à 3 %) : assurances 12 437,31 vs 11 391,80 (+1 045,51) ; entretien −130,75 ; conciergerie +131,24 ; déneigement −266,55 ; honoraires −163,69 ; électricité −107,53",analysis/python/cases/ch28_depenses.py::normalisation_alternative,analysis/python/tests/test_ch28.py::test_normalisation_alternative,voir description,"conforme (0,01 $)",verifie,2026-10-31481CALC-28-011,28,"Démonstration réserve/taux : R' = R + RR/V = 4,8127 % (+39,8 pb) ; V' = 1 869 136 ; ΔV = RR/R' = 168 367 ; erreur −8,26 % = −RR/(RNE+RR) ; inverse +9,0 %",analysis/python/cases/ch28_depenses.py::demonstration_reserve,analysis/python/tests/test_ch28.py::test_demonstration_reserve,identités + valeurs,identités (1e-6) + valeurs (1 $),verifie,2026-10-31482CALC-28-012,28,"Réserve par composantes (hypothèses pédagogiques) : linéaire 687,62 $/log. (8 251,43) ; fonds 3 % 580,71 $/log. (6 968,47) ; fonds 5 % 518,77 ; limite i→0 = linéaire",analysis/python/cases/ch28_depenses.py::reserve_par_composantes (traite.finance.facteur_fonds_amortissement),analysis/python/tests/test_ch28.py::test_reserve_composantes,687.62 ; 580.71 ; 518.77,687.62 ; 580.71 ; 518.77,verifie,2026-10-31483CALC-28-013,28,"Équivalence VA des remplacements perpétuels C/((1+i)^N − 1) et VA de la réserve au fonds d'amortissement RR/i (C = 26 400, N = 12, i = 3 %) : 62 006,64 ; RR = 1 860,20",analysis/python/cases/ch28_depenses.py::exercices (ex7),analysis/python/tests/test_ch28.py::test_equivalence_reserve_capex,62006.64 ; 1860.20,62006.64 ; 1860.20,verifie,2026-10-31484CALC-28-014,28,"CAPEX programmés 85 000 (2027) + 40 000 (2029) + 120 000 (2032) : VA à 7,25 % = 177 647,94 ; annuité équivalente 10 ans = 25 586,15 ; double comptage → RNE 64 369,60, V 1 457 975 (−28,4 %)",analysis/python/cases/ch28_depenses.py::equivalence_capex,analysis/python/tests/test_ch28.py::test_equivalence_capex_dossier;test_exercices,177647.94 ; 25586.15 ; 1457975,177647.94 ; 25586.15 ; 1457975,verifie,2026-10-31485CALC-28-015,28,"Loyers au marché : RBE 188 140,60 ; RNE 108 864,54 ; ratio 42,1 % ; loyer moyen 1 291,92 vs 1 149,58 contractuel",analysis/python/cases/ch28_depenses.py::calculer,analysis/python/tests/test_ch28.py::test_valeurs_citees_marche_et_comparables,188140.60 ; 108864.54 ; 0.421,188140.60 ; 108864.54 ; 0.4214,verifie,2026-10-31486CALC-28-016,28,"Comparables (40) : ratio médian 39,85 %, Q1 37,88, Q3 41,85, min 31,0, max 46,3 ; corrélation ratio–loyer −0,04 ; courbe iso-dépenses passe par les deux points du sujet",analysis/python/cases/ch28_depenses.py::ratio_iso_depenses,analysis/python/tests/test_ch28.py::test_valeurs_citees_marche_et_comparables,0.3985 ; 0.3788 ; 0.4185,0.3985 ; 0.3788 ; 0.4185,verifie,2026-10-31487CALC-28-017,28,"Sensibilité réserve (0 → 1 200 $/log.) : RNE 98 058,75 → 83 658,75 ; ΔV +9,0 % → −7,0 % ; 100 $/log. +7,7 %",analysis/python/cases/ch28_depenses.py::sensibilites,analysis/python/tests/test_ch28.py::test_sensibilites,voir description,conforme,verifie,2026-10-31488CALC-28-018,28,"Sensibilité taxe : compte indexé 5,3 % 11 194,44 (−1,1 %) ; +10 pb 12 388,20 (−2,4 %) ; Gatineau 6+ 15 320,80 (−5,7 %) ; Québec 6+ 16 933,40 (−7,5 %)",analysis/python/cases/ch28_depenses.py::sensibilites,analysis/python/tests/test_ch28.py::test_sensibilites,voir description,conforme,verifie,2026-10-31489CALC-28-019,28,"Sensibilité gestion : 0 % +7,5 % ; 3 % +1,9 % ; 5 % −1,9 % ; 6 % −3,7 % ; 10 % −11,2 % ; ∂V/∂DE = −1/R = −22,65 ; élasticité RNE/dépenses −0,873 ; élasticité RNE/RBE 1,80 ; 25 pb ≡ 4 820,78 $ de dépenses",analysis/python/cases/ch28_depenses.py::sensibilites,analysis/python/tests/test_ch28.py::test_sensibilites,voir description,conforme,verifie,2026-10-31490CALC-28-020,28,Pentes citées (légende fig. 28.5) : 12/R = 272 $ par $ de réserve/log. ; 2 200/R ≈ 49 830 $ par 10 pb de taxe ; RBE/100/R = 38 153 $ par point de gestion,analysis/python/cases/ch28_depenses.py,analysis/python/tests/test_ch28.py::test_sensibilites,272 ; 49830 ; 38153,271.8 ; 49830 ; 38153,verifie,2026-10-31491CALC-28-021,28,"Indexation IPC Québec (18-10-0004-01, v41691783) : 124,7 (2015-04) → 167,7 (2026-09) = +34,5 % ; barème SCHL 2015 indexé : entretien 672 $, salaires 403 $, réserve 134 $",analysis/python/cases/ch28_depenses.py::indexation_ipc,analysis/python/tests/test_ch28.py::test_indexation_ipc,1.3448 ; 672.4 ; 403.4 ; 134.5,1.3448 ; 672.4 ; 403.4 ; 134.5,verifie,2026-10-31492CALC-28-022,28,"Cas 2 : RBE 40 577,04 ; gestion imputée 1 623,08 ; dépenses hors réserve 16 743,08 ; totales 18 543,08 ; ratio 45,7 % ; RNE 22 033,96 ; 7 344,65 $/log. ; 84,10 $/m² ; fixes 52,7 % ; dépenses 6 181,03 $/log., 70,78 $/m²",analysis/python/cases/ch28_depenses.py::cas2_detail (traite.cas2.rne),analysis/python/tests/test_ch28.py::test_cas2,voir description,"conforme (0,01 $)",verifie,2026-10-31493CALC-28-023,28,"Cas 2 : vérification des taxes de Québec 2026 : 495 000 × 0,7464 % = 3 694,68 + 3 × (386 + 195) = 5 437,68 vs 5 900 déclaré (écart 462,32) ; scolaire (495 000 − 25 000) × 0,07899 % = 371,25 vs 470",analysis/python/cases/ch28_depenses.py::cas2_detail,analysis/python/tests/test_ch28.py::test_cas2,5437.68 ; 462.32 ; 371.25,5437.68 ; 462.32 ; 371.25,verifie,2026-10-31494CALC-28-024,28,"Exercices 28.1 à 28.7 (solutions/ch28.tex) : RBE 118 800, RNE 79 999,70, ratio 32,66 % ; écart 1 046,00 → 23 692 $ ; taxe 1 006,24 → −22 791 $ ; réserve 687,62 / 580,71 / 518,77 ; comparable 20 log. : 4,439 % / 4,768 %, V' 1 886 540 (−6,91 %) ; cas 2 sans gestion 23 657,04, +7,37 % ; CAPEX 25 586,15, V 1 457 975",analysis/python/cases/ch28_depenses.py::exercices,analysis/python/tests/test_ch28.py::test_exercices,voir description,conforme,verifie,2026-10-31495CALC-33-001,33,Lecture SCHL île de Montréal : 6-19 unités inoccupation 2,2 % / loyer 2 ch. 1 177 $ / tous 1 162 $ ; 100+ : 5,1 % / 1 966 $ ; 2015+ : 5,6 % / 1 882 $,analysis/python/cases/ch33_six_logements.py,analysis/python/tests/test_ch33.py::test_schl_lecture_coherente_avec_notes,"2,2 ; 1177 ; 1162 ; 5,1 ; 1966 ; 5,6 ; 1882"496CALC-33-002,33,Cas 4 : sommaire par RMR (n RMR = 48 ; 888 logements ; valeur 143 363 000 ; taux pondéré 5,19 % ; 161 445 $/log.),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_sommaire_cas4_identites,"143363000 ; 0,051945 ; 161445","143363000 ; 0,051945 ; 161445",verifie497CALC-33-003,33,Cas 4 : taux pondéré Montréal 4,49 % ; Gatineau 5,44 % ; Trois-Rivières 6,29 % ; valeur/log. Montréal 206 237 ; Gatineau 184 173 ; Québec 125 455 ; Saguenay 101 969,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_sommaire_cas4_identites,"0,044948 ; 0,054359 ; 0,062883 ; 206237 ; 184173 ; 125455 ; 101969"498CALC-33-004,33,Effet de taille cas 3 : pente −2,27 pb/logement ; 12→36 = −54,6 pb (régression traite.cas3.taux_extraits),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_effet_taille,"-2,27 ; -54,6","-2,27 ; -54,6"499CALC-33-005,33,Effet de taille cas 4 : coefficient ln(n/12) = −0,0315 (ET HC1 0,0122) ; doublement −2,16 % ; 12→36 Montréal état 3 = −15,7 pb,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_effet_taille500CALC-33-006,33,Effets cas 4 (traite.cas4.effets_regionaux) : état −3,96 %/point ; inondable +7,9 % ; sol +5,5 % ; RMR Gatineau +19,6 % ; Québec +26,8 % ; Sherbrooke +25,3 % ; Trois-Rivières +40501CALC-33-007,33,Unités cas 3 (V = 2 060 000) : 171 667 $/log. ; 2 497 $/m² ; 93 636 $/chambre (22 chambres) ; MRB 12,44 (contrat) et 11,07 (marché) ; taux implicite 4,37 % ; 16,72 $/m²/mois,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_unites_cas3502CALC-33-008,33,Valeur finale du ch. 47 (2 060 000 $) reprise comme constante : égale à ch47_dossier.reconciliation.valeur_finale,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_valeur_finale_ch47_coherente,2060000,2060000,verifie,2026-10-31503CALC-33-009,33,Proposition 33.1 : MRB = (1−v)(1−ρ)/R ; cas 3 : (1−0,039)(1−0,466)/0,04415 = 11,63,analysis/python/cases/ch33_six_logements.py,—504CALC-33-010,33,P45 : RNE 366 800 ; taux Montréal cas 3 4,415 % → 8 308 041 ; Gatineau pondéré 5,436 % → 6 747 739 ; médiane 5,710 % → 6 423 818 ; régression 5,461 % → 6 716 534 (186 570 $/log.),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_p45_identites_et_valeurs505CALC-33-011,33,P45 contrefactuels : si Montréal 4,565 % → 8 034 343 ; si 12 logements 5,654 % → 6 487 875 ; si état 3 5,245 % → 6 993 820 ; taux fichier 5,10 % → 7 192 157,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_p45_identites_et_valeurs506CALC-33-012,33,Décomposition multiplicative : Montréal 12 log. état 2 âge 72 = 4,726 % ; effet taille −16,1 pb ; effet RMR +89,6 pb ; produit = 5,461 % ; écart Montréal/régression +23,7 %,analysis/python/cases/ch33_six_logements.py507CALC-33-013,33,Facteur de Duan de la régression cas 4 : 1,0011 ; prédiction R̂ = exp(xβ)×Duan,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_p45_identites_et_valeurs,"1,0011","1,0011",verifie508CALC-33-014,33,P45 financement (hyp. amortissement 480 mois) : dette 5 416 000 à 5,17 % → service 318 363 $ ; RCD 1,15 ; RPV 75,4 % (dossier) et 80,6 % (régression),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_p45_identites_et_valeurs509CALC-33-015,33,Sensibilité P45 : +25 pb → −4,38 % ; −25 pb → +4,80 % ; ±50 pb → −8,39 % / +10,08 % ; grille RMR × état (Montréal état 2 223 176 $/log. ; Trois-Rivières 159 220 ; Gatineau état 1 179 173 / état 5 210 645),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_sensibilite510CALC-33-016,33,Courbe de taille Gatineau état 2 : 6 log. 5,78 % (176 323 $/log.) → 72 log. 5,34 % (190 693 $/log.),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_sensibilite,"0,0578 ; 176323 ; 0,0534 ; 190693",idem511CALC-33-017,33,Un point de base : 12 299 $ pour P45 ; 2 265 $ par million à 4,415 % ; 1 831 $ par million à 5,461 %,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_sensibilite,12299 ; 2265 ; 1831,idem512CALC-33-018,33,Ex. 33.1 : 16 log./1 040 m²/26 ch. → 2 746 667 / 2 596 848 / 2 434 545 $ ; écart max 12,8 %,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_exercices,"2746667 ; 2596848 ; 2434545 ; 0,128",idem,verifie513CALC-33-019,33,Ex. 33.2 : rôle 1 800 000 ; taxe 5 log. 16 340,20 ; 6 log. 17 340,60 ; écart taux 419,40 ; total 1 000,40 ; capitalisé à 5,5 % 7 625 $,analysis/python/cases/ch33_six_logements.py514CALC-33-020,33,Ex. 33.3 : R36 = 4,021 % ; valeur/log. 164 141 → 186 426 (+13,6 %),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_exercices,"0,04021 ; 164141 ; 186426 ; 0,1358",idem515CALC-33-021,33,Ex. 33.4 : écart 1 591 507 $ (+23,7 %),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_exercices,"1591507 ; 0,237",idem,verifie516CALC-33-022,33,Ex. 33.5 : ΔRBP 5 760 ; ΔRNE 5 319,48 ; ΔV 97 406 (1,45 %),analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_exercices,"5760 ; 5319,48 ; 97406 ; 0,0145",idem517CALC-33-023,33,Ex. 33.6 : 24 log. état 3 45 ans : Montréal 4,52 % ; Québec 5,74 ; Gatineau 5,41 ; Sherbrooke 5,67 ; Trois-Rivières 6,34 ; Saguenay 6,01 ; IC Gatineau [14518CALC-33-024,33,Ex. 33.7 : coût 2026 6 988 800 ; total 8 088 800 (337 033 $/log.) ; RBP 568 800 ; RBE 536 947 ; RNE 365 124 ; V 8 113 869 (4,50 %) et 7 686 823 (4,75 %) ; taux implicite 4,51 %,analysis/python/cases/ch33_six_logements.py,test_ch33.py::test_exercices,"6988800 ; 8088800 ; 365124 ; 8113869 ; 7686823 ; 0,0451"519CALC-34-01,34,"Pourcentage de base 2026 selon l'art. 3.1 à partir des moyennes annuelles de l'IPC Québec (A 161,033 ; B 157,158 ; C 153,583 ; D 146,983) vs 3,1 % publié par le TAL",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_pourcentage_base_reproduit_tal,"3,1 %","3,095 %",verifie,2026-10-31520CALC-34-02,34,"Pourcentage de base 2025 selon l'art. 3.1 (A 157,158 ; B 153,583 ; C 146,983 ; D 137,792) vs 4,5 % publié",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_pourcentage_base_reproduit_tal,"4,5 %","4,496 %",verifie,2026-10-31521CALC-34-03,34,"Historique contrefactuel 2006-2026 de la formule : plancher à zéro, lissage (écart-type formule < écart-type inflation), inflation 2023 = 6,67 %",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_historique_coherent,"formule 2023 : 3,75 % ; 2024 : 4,98 %","0,0375 ; 0,0498",verifie,2026-10-31522CALC-34-04,34,"Règles des art. 4 (taux net = max(variation − |base|, 0) si variation > 0), 5 (part = 12 L / revenus) et 15.1 (arrondi demi vers le haut)",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_taux_net_art_4 ; ::test_part_attribuable ; ::test_arrondi_art_15_1,"net(8 %, 3,1 %) = 4,9 % ; 750,50 → 751 ; 750,49 → 750","0,049 ; 751 ; 750",verifie,2026-10-31523CALC-34-05,34,"Fixation nouvelle méthode, cas de contrôle (loyer 1 000 $, part 10 %, taxes +10 %, scolaire +2 %, assurances +10 %, immobilisations 60 000 $, services 1 200 $/an, base 3 %) : composantes 30 + 14 + 7 + 25 + 10 = 86 $",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_fixation_nouvelle_composantes,86 $ ; nouveau loyer 1 086 $,86 ; 1086,verifie,2026-10-31524CALC-34-06,34,"Exemple logement 103 (728 $ ; marché 1 047 $ ; part 4,995 % sur revenus 174 900 $), variante A : base 22,57 $, taxes/assurances nulles (−4,2 % ; +1,9 % ; −12,3 %), nouveau loyer 751 $ (+23 $, 3,16 %)",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_exemple_logement_103_valeurs_citees,751 $,"751 ; 22,568 $",verifie,2026-10-31525CALC-34-07,34,"Exemple logement 103, variante B (taxes +8 % → net 4,9 % → 2,17 $ ; assurances +10 % → net 6,9 % → 3,62 $ ; immobilisations 85 000 $ → 17,69 $) : total 46,05 $, nouveau loyer 774 $ (6,32 %)",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_exemple_logement_103_valeurs_citees,774 $,"774 ; 46,05 $",verifie,2026-10-31526CALC-34-08,34,"Reconstitution pédagogique de l'ancienne méthode (pourcentages 2026 des avis avant 2026) pour le logement 103 : 755 $ (A) et 786 $ (B) ; années de rattrapage à 3,1 %/an marché figé : 11,9",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_exemple_logement_103_valeurs_citees,"755 ; 786 ; 11,9","755 ; 786 ; 11,9",verifie,2026-10-31527CALC-34-09,34,"Forme fermée E[q_t] = q0 a^t + ρ(1−a^t)/(1−a) = récursion = Monte-Carlo (20 000 trajectoires, écart max < 0,006) ; q_10 = 0,9249 pour q0 0,695, ρ 15 %",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_forme_fermee_egale_recursion_et_simulation,"0,9249",0.9249,verifie,2026-10-31528CALC-34-10,34,"Limite q_∞ = ρ/(1−(1−ρ)δ) : 0,9316 / 0,9786 / 0,9885 pour ρ = 5/15/25 % (g_c 3,1 %, g_m 3,5 %) ; = 1 si g_c = g_m ; convergence de la forme fermée",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_limite_et_monotonie,"0,9316 ; 0,9786 ; 0,9885",0.93159 ; 0.97857 ; 0.98854,verifie,2026-10-31529CALC-34-11,34,"Cas 3 : rapport de loyer de l'immeuble 0,8898 (2026) → 0,9904 (déterministe) / 0,9618 (espérance) / 0,8560 (sans relocation) en 2036",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_trajectoire_cas3,"0,9904 ; 0,9618 ; 0,8560",0.9904 ; 0.9618 ; 0.8560,verifie,2026-10-31530CALC-34-12,34,projection_scenario (paramètres du dossier) reproduit traite.cas3.projection_dcf colonne par colonne (tol. 1e-6) ; 2 logements relocalisés par an,analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_projection_locale_reproduit_module_commun,identité,identité,verifie,2026-10-31531CALC-34-13,34,"Valeur de base 2 208 566 $ et scénario « encadrement serré » du ch. 30 (base 2 %, rotation 8 %, marché 3 %) 1 912 046 $ reproduits",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_valeur_base_et_scenario_ch30,2 208 566 ; 1 912 046,2208565.91 ; 1912046.35,verifie,2026-10-31532CALC-34-14,34,"Grille rotation (5/15/25 %) × base (2/3,1/4 %) : 1 974 822 à 2 340 208 $ ; monotone croissante en rotation et en base ; cellules citées",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_grille_monotone_et_valeurs_citees,9 cellules du tableau 34.7,1974822 ; 2140916 ; 2284775 ; 2118624 ; 2208566 ; 2326053 ; 2174597 ; 2231655 ; 2340208,verifie,2026-10-31533CALC-34-15,34,"Scénarios complémentaires : indexation seule 1 756 414 ; φ = 0,5 2 056 076 ; encadrement renforcé 1 701 507 ; récupération 5 % CAPEX 2 289 503 ; espérance 2 091 629 ; tout au marché 2 267 398 ; VA de l'écart 56 008 (base) / 184 956 (indexation seule)",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_scenarios_complementaires,valeurs du tableau 34.8,toutes à ±1 $,verifie,2026-10-31534CALC-34-16,34,Rattrapage partiel réduit le RBP dès l'année 2 ; récupération CAPEX n'agit qu'à partir de l'année 3 (travaux 2027) et ajoute ≈ 5 % × 85 000 = 4 250 $,analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_rattrapage_partiel_et_recuperation,4 250 $ (±2 %),≈ 4 250,verifie,2026-10-31535CALC-34-17,34,"Élasticités (mode espérance, différences centrées) : ≈ 11 900 $ par point de rotation ; ≈ 131 200 $ par point de pourcentage de base",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_elasticites,11 877 ; 131 236,11877 ; 131236,verifie,2026-10-31536CALC-34-18,34,"Exercices 1 à 7 (3,084 % ; 10,12 $ ; 1 194 $ ; q∞ 0,9664 ; 2 049 073 / 1 829 294 / 2 148 793 $ ; indemnité 13 104 $, 3,8 ans ; dérivées 1,34 et 0,16)",analysis/python/cases/ch34_tal.py,analysis/python/tests/test_ch34.py::test_exercices,voir solutions/ch34.tex,conformes,verifie,2026-10-31537CALC-35-01,35,"Vérité de génération : β = ln(1,0443)/12 par mois ; indice au milieu de 2026T3, base 2023T1",analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_verite_et_donnees,"0,003614 ; 4,43 %/an ; 116,37","0,003614 ; 4,43 ; 116,37",verifie,2026-10-31538CALC-35-02,35,"Indice hédonique à indicatrices trimestrielles (traite.hedonique.indice_dummies_temps) : k, σ, R² aj., valeur 2026T3 et IC 95 %, EAM, largeur IC",analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_indice_hedonique_identites,"29 ; 0,083 ; 0,849 ; 122,04 [117,72 ; 126,52] ; EAM 2,81 ; 7,47 %",idem,verifie,2026-10-31539CALC-35-03,35,Identité : imputation géométrique (Laspeyres = Paasche = Fisher) = indice à indicatrices quand les coefficients sont communs (prop. imputation-td),analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_indice_hedonique_identites,écart max < 1e-9,"8,5e-14",verifie,2026-10-31540CALC-35-04,35,Indice chaîné par périodes adjacentes : I_t = I_{t-1} exp(δ_t) ; valeur finale ; EAM,analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_indice_hedonique_identites,"121,69 ; EAM 4,01","121,69 ; 4,01",verifie,2026-10-31541CALC-35-05,35,"Médiane et moyenne géométrique : indices finaux, maximum, EAM, croissance totale ; décomposition exacte ln(moy. géo.) = composition + τ ; corrélation écart/composition",analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_mediane_et_composition,"128,63 ; max 133,68 ; moy. géo. 127,78 ; EAM médiane 10,97 ; hausse 28,63 % ; identité exacte ; corr 0,86",idem (identité à 1e-9),verifie,2026-10-31542CALC-35-06,35,"Jeu de reventes synthétique (generer_reventes, graine 20261031) : paires, rénovées, intervalle médian/moyen/min/max, part < 12 mois, é.-t. ln ratio, reproductibilité",analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_reventes_synthetiques,"220 ; 47 ; 10 ; 12,8 ; 3 ; 38 ; 55,9 % ; 0,144 ; identique à la régénération",idem,verifie,2026-10-31543CALC-35-07,35,BMN (traite.hedonique.ventes_repetees_bmn) : forme fermée (D'D)^{-1}D'y = lstsq ; σ_η ; valeur finale et IC ; e.-t. finale ; EAM ; largeur IC,analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_bmn_identites,"écart < 1e-10 ; 0,1455 ; 120,68 [109,78 ; 132,65] ; 0,0483 ; 3,02 ; 20,83 %",idem,verifie,2026-10-31544CALC-35-08,35,Case–Shiller (ventes_repetees_case_shiller) : coefficients de la variance (toutes paires ; sans rénovées) vs loi de génération ; poids = 1/√var ; |CS − BMN| ; valeur finale ; EAM,analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_case_shiller,"0,02079 − 0,00023·Δ ; 0,01574 + 0,00053·Δ ; théorie 0,01445 + 0,0012·Δ ; < 0,5 pt ; 120,48 ; 2,90",idem,verifie,2026-10-31545CALC-35-09,35,"SPAR géométrique et arithmétique (valeur_role_2025) : valeurs finales, EAM, é.-t. ln(P/A), ratio médian, identité du rapport des sommes",analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_spar,"115,06 ; 114,36 ; 1,26 ; 0,087 ; 1,095",idem,verifie,2026-10-31546CALC-35-10,35,"Ajustement de conditions du marché de G0404 (506 500 $, 2025T2 → 2026T3, 15,2 mois) selon l'indice : vérité, tendance, hédonique, chaîné, BMN, CS, SPAR, médiane",analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_ajustement_et_sensibilite,28 558 ; 28 733 ; 44 760 ; 30 987 ; 32 406 ; 32 359 ; 26 575 ; 44 009 $,idem,verifie,2026-10-31547CALC-35-11,35,"Sensibilité : révision BMN de 2025T2 (millésimes 2025T2/2025T4/2026T3) et de 2024T4 ; filtres 12/18 mois et oracle ; sous-échantillons 50 %/25 % (EAM, é.-t. finale) ; fenêtre hédonique 8 trimestres",analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_ajustement_et_sensibilite,"116,39 → 114,69 → 113,42 ; 114,45 → 109,99 ; hausses 20,68/17,98/19,41/18,39 % ; EAM 3,02/2,76/6,56/2,01 ; 4,26 & 4,77 ; 6,46 & 8,96 ; écart max 0,37 %",idem,verifie,2026-10-31548CALC-35-12,35,"Solutions des exercices 35.1 à 35.8 (composition 3,79 % ; indices exp(τ) ; BMN à la main β = (0,0461 ; 0,1093) ; poids CS 1/0,902/0,807/0,737 ; SPAR 103,36/103,16 ; ajustements G0404 ; géométrique 1,1247 vs arithmétique 1,125 vs pondéré 1,1333)",analysis/python/cases/ch35_indices.py,analysis/python/tests/test_ch35.py::test_solutions_exercices,voir solutions/ch35.tex,idem,verifie,2026-10-31549CALC-35-13,35,IPLN (18-10-0205-01) : variation sur douze mois en septembre 2026 par RMR et Canada ; sommets de la variation annuelle,analysis/python/figures/ch35_figures.py,—,"Montréal 1,2 ; Québec 1,9 ; Gatineau 0,3 ; Sherbrooke 1,2 ; Trois-Rivières 3,0 ; Canada −2,0 ; sommets 21,9 (2021-09), 14,3 (2021-05), 6,7 (2020-12), 12,2 (Canada 2021-08)",idem (calcul direct sur data/raw),verifie,2026-10-31550CALC-20-01,20,Indications héritées : comparaison pondérée (ch. 17) ; hédonique et intervalle de prédiction (ch. 18) ; coût neuf (ch. 21),analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_indications_heritees,"575565 (é.-t. pondéré 33997 ; poids 0,179/0,327/0,202/0,159/0,133) ; 637953 ; IP [539682 ; 749087] ; C_N 397567,33",idem,verifie,2026-10-31551CALC-20-02,20,Cascade hédonique vectorisée (grille_rapide) = traite.cas1.ajustements_hedoniques pour les 16 candidats ; identité P_aj = exp(x_s'β)·exp(e_j),analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_grille_rapide_reproduit_la_bibliotheque,égalité à 1e-9 près ; valeur à 5 comparables = 575565,idem,verifie,2026-10-31552CALC-20-03,20,"Résidus moyens exp(e)−1 : 5 retenus, 11 autres candidats, 16 candidats",analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_residus_candidats,"−8,53 % ; −1,71 % ; −3,84 %",idem,verifie,2026-10-31553CALC-20-04,20,"Bootstrap B = 2000 (graine 20261031) : candidats (A), ajustements (B), paramétrique (B'), conjoint (C), prédiction ; décomposition des variances ; corrélations",analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_bootstrap,"é.-t. A 18160 (q5 552872, q95 611283) ; B 2672 ; B' 2751 ; C 18385 (q5 552095, q95 611779) ; prédiction 6531 ; Var(C) ≈ Var(A)+Var(B) à 5 % ; ρ(C,pred) 0,088 ; ρ(B,pred) 0,425 ; 99,7 % des réplications sous la prédiction",idem,verifie,2026-10-31554CALC-20-05,20,Énumération exhaustive des C(16,5) = 4368 sous-ensembles de 5 candidats,analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_exhaustif,"n 4368 ; moyenne 606317 ; é.-t. 20492 ; min 550231 ; max 661670 ; rang de la sélection 279 (6,4 %) ; 93,5 % sous la prédiction ; moyenne par nombre de retenus 625135/612161/600996/591335/582926/575565",idem,verifie555CALC-20-06,20,Élargissement de l'échantillon : indication par comparaison pour k = 5 … 16 candidats (modèle fixe),analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_elargissement,"k=5 575565 ; k=10 592737 ; k=16 604689 (moyenne 611401 ; résidu moyen −3,84 %)",idem,verifie,2026-10-31556CALC-20-07,20,"Indication par le coût reprise du ch. 24 (ch24_depreciation.py) : V_L 277000 (13 ventes récentes de Hull, médiane 276954), D extraite 22,00 % = 87461,05, D fonctionnelle 7605,31, D totale 95066,36 (23,91 %), valeur 579500,97 → 580000 ; lecture ventilée 445872,14 ; C_N + V_L 674567",analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_cout,idem (identité V = V_L + C_N − D vérifiée),idem,verifie,2026-10-31557CALC-20-08,20,Diagnostics d'extraction avec V_L = 277000 : D_marché à la prédiction hédonique et à la comparaison ; contre-exemple hypothèses d'usage (allocation 30 % × comparaison = 172669 ; âge-vie 28/60 = 185531 → 384705 ; extraction −67716),analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_cout,"36614 (9,21 %) ; 99002 (24,90 %) ; 384705 ; −67716",idem,verifie,2026-10-31558CALC-20-09,20,Bootstrap de l'indication par le coût (mêmes rééchantillons des 600 ventes que le modèle ; terrain extrait des ventes récentes de Hull ; profil quadratique) ; écart-type de spécification (7 variantes d'extraction du ch. 24),analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_bootstrap_cout,"é.-t. 23575 (q5 552142, q95 628078) ; é.-t. V_L 29803 ; é.-t. taux 0,0419 ; ρ(coût,pred) 0,225 ; ρ(coût,comp) 0,018 ; spécification 2377 ; total en quadrature 23695",idem,verifie,2026-10-31559CALC-20-10,20,"Poids de variance minimale (MCG) : optimalité vérifiée contre 200 perturbations ; formule à deux indications = MCG 2×2 ; poids négatif pour ρ = 0,9",analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_poids_optimaux_et_mcg,"w_comp optimal à deux indications : 0,280 (ρ=0) ; 0,261 (0,088) ; 0,199 (0,3) ; 0,023 (0,6) ; −0,647 (0,9)",idem,verifie,2026-10-31560CALC-20-11,20,"Six schémas de pondération ; conclusion raisonnée 0,40/0,45/0,15 ; bootstrap de la combinaison ; fourchettes",analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_combinaison_chiffres,"égale 597673 (532741 avec le coût d'usage) ; inverse variance 0,240/0,616/0,144 → 614579 (é.-t. 9892) ; MCG 0,248/0,655/0,097 → 616823 ; raisonnée 604230 (é.-t. 10450) → 605000 ; bootstrap q5 592310, q95 622009 → 590000–625000 ; fourchette conclue 575000–640000 (10,7 %) ; écarts +5,1 % / −5,2 %",idem,verifie,2026-10-31561CALC-20-12,20,"Espérance du prix du sujet selon la loi de génération (constante estimée sur 600 ventes, e.-t. 0,0034) et écarts des indications",analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_verite_synthetique,"641159 [636930 ; 645415] ; hédonique −0,5 % ; comparaison −10,2 % ; coût −9,6 % ; conclusion −5,6 %",idem,verifie,2026-10-31562CALC-20-13,20,"Solutions des exercices 1 à 7 (poids inverses de la variance, IC/IP, poids avec corrélation, bootstrap à la main, coût sous hypothèses d'usage et extraction, pondérations alternatives et k = 8/16, incidence d'une hypothèse)",analysis/python/cases/ch20_reconciliation.py,analysis/python/tests/test_ch20.py::test_solutions_exercices,"ex1 628552 (é.-t. 11142) ; ex2 IC [625586 ; 650596], IP [539740 ; 749047], rapport 8,36 ; ex3 w1 0,0435 (ρ=0,3), −0,0526 (0,5) ; ex4 586150, é.-t. 14954, [567650 ; 611650] ; ex5 453240, 450590, 99002, 36614, 335452 ; ex6 610469→610000, 594872→595000, 615880→615000, k=8 é.-t. 18086 ; ex7 Δ 14000, E 600800",idem,verifie,2026-10-31563CALC-36-01,36,Vérité du choc simulé : ATT global / cohorte A / cohorte B / fenêtre 2×2 (profil δ(k) déclaré),analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_plan_et_verite,0.0454 / 0.0484 / 0.0356 / 0.04625,idem,verifie,2026-10-31564CALC-36-02,36,DiD 2×2 cohorte A (témoins Montréal) : cellules 10.1379/10.2450/10.3696/10.4234 ; δ = 0.0534 (ET HC1 0.0201) ; variante 35 témoins 0.0468 (0.0177) ; placebo 2019T3 0.0155 (0.0101),analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_did_2x2,0.0534 ; 0.0468 ; 0.0155,idem,verifie,2026-10-31565CALC-36-03,36,TWFE statique : effets communs 0.0905 (ET 0.0047 / HC1 0.0053 / grappes 0.0198) ; RMR×trimestre 0.0702 (0.0054 / 0.0064 / 0.0264) ; within bidirectionnel = 0.0905 ; rapports 4.2 et 4.9,analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_twfe_et_erreurs_types,0.0905 ; 0.0702,"idem (linearmodels : 0.090460, ET grappes 0.0196 ; statsmodels cluster : 0.0198 ; HC1 identique 0.005289)",verifie,2026-10-31566CALC-36-04,36,Étude d'événement TWFE (RMR×t) k = −8…8 : coefficients et ET en grappes du tableau 36.4 ; pente pré (k −7…−2) 0.0011,analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_event_study,k=3 : 0.0410 (0.0138) ; k≥8 : 0.0817 (0.0270),idem,verifie,2026-10-31567CALC-36-05,36,Décomposition de Goodman-Bacon cas 4 : poids 0.6658/0.2721/0.0476/0.0146 ; β 0.0844/0.1224/0.0080/0.0403 ; Σ s·β = TWFE = 0.0905 (identité 1e-10),analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_bacon_cas4,Σ poids = 1 ; pondéré = TWFE,idem,verifie,2026-10-31568CALC-36-06,36,Callaway–Sant'Anna (témoins même RMR) : A 0.0528 (boot 0.0154) ; B 0.0406 (0.0183) ; global 0.0481 (0.0116) ; variante tous témoins A 0.0509 / B 0.0521 / global 0.0514,analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_callaway_santanna,0.0481 (vrai 0.0454),idem,verifie,2026-10-31569CALC-36-07,36,Contrôle synthétique cohorte A : effet post 0.0363 (vrai 0.0484) ; RMSPE pré 0.0031 / post 0.0397 ; ratio 12.9 rang 1/36 ; 11 poids > 0.5 % (P02 0.142 … P05 0.022),analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_controle_synthetique_cas4,0.0363 ; p = 1/36,idem,verifie,2026-10-31570CALC-36-08,36,Discontinuité spatiale (simulation transversale,saut vrai 0.05) : h 0.5 → 0.034 (0.034 ; n 93) ; h 1 → 0.0316 (0.0247 ; 202) ; h 2 → 0.058 (0.0183 ; 400) ; naïf 0.1136,analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_discontinuite,toutes à < 1 ET de 0.05,idem,verifie571CALC-36-09,36,Laboratoire (effets croissants) : TWFE 0.0233 (0.0061) vs vrai 0.0692 ; comparaison interdite −0.0356 (poids 0.3265) ; CS 0.0601 (0.0073) ; cohortes 0.0893 / 0.0310,analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_laboratoire,TWFE à > 7 ET de la vérité,idem,verifie,2026-10-31572CALC-36-10,36,Sensibilité tendances parallèles violées (+0.01/an) : 2×2 0.0734 (= 0.0534 + 0.02) ; TWFE 0.1227 ; pente pré 0.0036 ; TWFE + tendance 0.0609 ; 2×2 détendancé 0.0426 ; témoins : 0.0468/0.0534/0.0445/0.0308,analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_sensibilite_et_temoins,biais 2×2 = 0.02 exactement,idem,verifie,2026-10-31573CALC-36-11,36,Solutions : ex1 0.05 → 5.13 % ; ex2 within 0.20 vs MCO 0.425 ; ex3 4.64/6.16/2.12 et ρ implicite 0.56 ; ex5 poids 0.5/0.5 et TWFE 0.005 vs ATT 0.0675 ; ex6 0.045/0.0817/−0.015 ; ex7 variantes SC 0.0452 (Montréal) / 0.0375 (hors) / placebo −0.0055,analysis/python/cases/ch36_panel.py,analysis/python/tests/test_ch36.py::test_solutions_exercices + test_solution_exercice_7,voir solutions/ch36.tex,idem,verifie,2026-10-31574CALC-36-12,36,Fonctions génériques traite.panel : within = indicatrices (1e-8) ; grappes unitaires = HC1 ; TWFE retrouve δ constant ; event study retrouve profil ; Bacon identité + CS corrige TWFE biaisé ; SC retrouve poids exacts (0.5/0.3/0.2) ; RDD retrouve saut 0.1,analysis/python/traite/panel.py,analysis/python/tests/test_ch36.py (7 tests génériques),tolérances déclarées,idem,verifie,2026-10-31575CALC-38-01,38,Projection des 600 ventes du cas 1 en NAD83 / MTM zone 9 (EPSG 32189) : coordonnées du sujet ; facteur d'échelle ; étendue,analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_projection_et_distances,"x = 364 315,8 m ; y = 5 031 566,3 m ; k = 0,999943 ; 42,2 × 27,5 km",idem (pyproj 3.7.2 / PROJ 9.5.1),verifie,2026-10-31576CALC-38-02,38,Écarts maximaux à la distance géodésique WGS84 (sujet → 600 ventes) : MTM 9 / équirectangulaire locale / haversine,analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_projection_et_distances,"1,2 m (0,0065 %) ; 82,8 m (0,51 %) ; 70,8 m (0,28 %)",idem,verifie,2026-10-31577CALC-38-03,38,Rapport distance de Manhattan / euclidienne du sujet aux 600 ventes (moyenne,médiane,max),analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_projection_et_distances,"1,33 ; 1,37 ; ≤ √2",idem578CALC-38-04,38,Géométries fictives : aires des classes A et B et du tampon de 300 m ; longueurs du cours d'eau et du corridor,analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_geometries_et_jointure,"31,0 ; 50,3 ; 15,0 km² ; 43,8 ; 24,5 km",idem (shapely 2.1.2),verifie,2026-10-31579CALC-38-05,38,Jointure spatiale (within) : ventes en classe A / B / tampon 300 m par secteur ; égalité lancer de rayon (traite.geo) = shapely,analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_geometries_et_jointure,"31 (Hull 14, Aylmer 17) ; 57 (19, 38) ; 17 (Hull 14) ; identité vraie",idem,verifie,2026-10-31580CALC-38-06,38,Grille hexagonale R = 1 200 m : cellules / occupées / ≥ 5 ventes ; bornes et GVF des trois classifications ; pondération surfacique vers carrés de 4 km,analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_grille_classification_et_surfacique,"374 / 69 / 30 ; GVF 0,952 / 0,909 / 0,964 ; EAM 2,95 ventes, max 14,9, total estimé 598,3 / 600",idem,verifie,2026-10-31581CALC-38-07,38,IDW du résidu sans secteur au sujet (p = 1,2,3) et EQM leave-one-out ; comparaison krigeage ch. 19 (−0,060 ; 0,088),analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_idw_sujet582CALC-38-08,38,Modèle de référence + 5 variables géospatiales fictives : coefficients,t,F conjoint,R²,EMD,analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_modeles_augmentes583CALC-38-09,38,Mêmes variables sans indicatrices de secteur et sans secteur ni gradient (faux positifs par confusion),analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_modeles_augmentes,"sans secteur : zone A 0,0614 (t 3,78) ; zone B 0,0424 (2,99) ; ln A 0,1359 (10,9) ; F 33,4 ; sans gradient : 0,0578 ; 0,0502 ; ln A 0,0596 (14,1) ; F 99,4",idem,verifie,2026-10-31584CALC-38-10,38,Sensibilité au rayon du tampon (100–1 000 m) : n dans tampon,coefficients et t (référence et sans secteur),analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_sensibilite_tampon,"n = 4 → 57 ; référence jamais |t| > 1,96, IC ± 7,2 → ± 2,2 points ; sans secteur t = −2,13 (300 m), −2,72 (750), −3,56 (1 000)",idem,verifie585CALC-38-11,38,Faux positifs : 500 disques aléatoires par rayon (0,5 / 1 / 2 km),part |t| > 1,96 par spécification et erreur-type,Bonferroni,écart-type des t,analysis/python/cases/ch38_sig.py586CALC-38-12,38,Cas 4 : part de la valeur en zone inondable (total et par RMR) ; coefficient inondable et sol des effets régionaux ; distances géodésiques entre RMR ; étendue Lambert,analysis/python/cases/ch38_sig.py + traite.cas4,analysis/python/tests/test_ch38.py::test_cas4,"6,66 % ; Québec 28,8 % (5,0 pts), Saguenay 18,5 %, Montréal 2,6 % ; 0,0756 (0,0347) → +7,9 % ; sol +5,5 % ; Mtl–Qc 236 km, Qc–TR 116, Gat–Sag 478 ; 379 × 343 km",idem,verifie,2026-10-31587CALC-38-13,38,Capitalisation d'une perte annuelle espérée : p1 des bornes 70/20/7 % sur 25 ans ; décote pour D = 15/8/3 %,R = 5,5 %,V = 637 953 $,analysis/python/cases/ch38_sig.py,analysis/python/tests/test_ch38.py::test_capitalisation,"4,70 / 0,89 / 0,29 % ; 12,82 / 1,29 / 0,16 % ; 81 805 / 8 246 / 1 009 $"588CALC-38-14,38,Solutions des exercices 1 à 5 (facteurs d'échelle,trois distances,point dans polygone et tampon,indice gravitaire,capitalisation et EMD),solutions/ch38.tex (traite.geo),analysis/python/tests/test_ch38.py::test_solutions_1_a_5589CALC-38-15,38,Solutions des exercices 6 et 7 (disques de 3 km × 1 000 tirages ; HC3 à 0,5 km ; grilles 800 / 1 200 / 2 000 m et carrés 2 km),analysis/python/cases/ch38_sig.py (exercice_6,exercice_7),analysis/python/tests/test_ch38.py::test_solutions_6_et_7,"réf. 4,5 % (HC1 5,3) ; sans secteur 89,2 %, Bonferroni 50,5 % ; HC3 23,4 % ; part intercellulaire 35,6 / 28,6 / 25,0 / 30,2 %",idem590CALC-42-01,42,"Part de F4 dans le déficit du ch. 7 (q4 0,1408 × 150 908) ; prix marginal du m² (0,60 × 3 650)",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestFraction::test_passif_et_prix_marginal,21 248 ; 2 190,idem,verifie,2026-10-31591CALC-42-02,42,"Prix observés des 5 comparables fictifs (modèle déflaté × bruit, arrondis à 500 $)",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestFraction::test_prix_observes,373 000 ; 326 500 ; 364 000 ; 373 500 ; 330 500,idem,verifie,2026-10-31592CALC-42-03,42,"Ajustements de la grille (marché, étage, orientation, stationnement, superficie, charges, syndicat) et prix ajustés ; identité P_aj = P + ΣA ; brut/net",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestFraction::test_ajustements_cites;test_signe_syndicat_et_charges,"390 935 ; 367 010 ; 375 475 ; 382 191 ; 373 416 ; brut F2 5,3 %, C4 20,0 %",idem,verifie,2026-10-31593CALC-42-04,42,"Réconciliation : poids inverses du brut (F2 0,419), valeur pondérée, moyenne, médiane, min, max, étendue ; valeur du modèle de génération dans la fourchette",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestFraction::test_reconciliation,"381 052 ; 377 805 ; 375 475 ; 367 010 ; 390 935 ; 6,3 % ; modèle 375 183",idem,verifie,2026-10-31594CALC-42-05,42,Sensibilité de la valeur pondérée à R_c (5-12 %) et κ (0-1) ; monotonies,analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestFraction::test_sensibilite,"386 889 (κ=0, 5 %) à 379 437 (κ=1, 12 %)",idem,verifie,2026-10-31595CALC-42-06,42,Cotisation spéciale de 150 908 $ répartie selon q_i ; ratio aux charges annuelles normalisées (A* = 21 891 $),analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestCotisationSpeciale::test_repartition,"F1 14 110 (2,26 ans) ; F4 21 248 (2,08) ; F6 24 809 ; Σ = 150 908",idem,verifie,2026-10-31596CALC-42-07,42,"F4 louée 1 700 $/mois : RBP, RBE (v 2,1 %), dépenses, RNE avec/sans cotisation au fonds, taux implicite, MRB, valeur d'investissement à 5,25 %",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestLocative::test_rne_et_taux,"20 400 ; 19 972 ; 15 117 ; 4 855 / 7 937 ; 1,27 % / 2,08 % ; 18,7 ; 92 472",idem,verifie,2026-10-31597CALC-42-08,42,"Financement acheteur 380 000 $ : divise (mise 5 %, 4,12 %, 25 ans, composition semestrielle) vs part indivise (mise 20 %, hypothèse) ; TAM ; droits de mutation 2026",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestFinancement::test_divise_vs_indivise,"19 000 / 361 000 / 1 922 $/mois / coût 3 049 / TAM 6,12 % → 2 336 ; 76 000 / 304 000 / 1 619 ; écart 57 000 ; mutation 3 810,50",idem,verifie,2026-10-31598CALC-42-09,42,"Valeur en bloc : RBP, RBE (v 3 %), DE (42 %), RNE, V = RNE/5,25 %, par logement, MRB",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestConversion::test_bloc,"146 700 ; 142 299 ; 59 766 ; 82 533 ; 1 572 065 ; 196 508 ; 10,7",idem,verifie,2026-10-31599CALC-42-10,42,Valeurs libres des 8 fractions (passif nul) et somme ; cohérence F4 libre = F4 sujet + part du déficit,analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestConversion::test_valeurs_libres,F1 276 481 … F6 430 539 ; F4 396 431 ; Σ 2 802 191,idem,verifie,2026-10-31600CALC-42-11,42,"Calendrier des ventes (ρ 12 %, δ 20 %, T 6) : produit brut par année et identité de somme",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestConversion::test_calendrier_identite,1 705 343 ; 131 622 ; 115 827 ; 101 928 ; 89 697 ; 526 219,idem,verifie,2026-10-31601CALC-42-12,42,"Flux nets, V_conv = VAN à 10 % (traite.finance.van), prime, frais de vente, portage, somme nette ; variante vente occupée an 1",analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestConversion::test_faisabilite,"flux −305 000 ; 1 595 097 ; … ; 495 304 ; V_conv 1 692 804 ; prime 120 739 (+7,7 %) ; 106 825 ; 106 784 ; 2 152 027 ; variante 1 884 780",idem,verifie,2026-10-31602CALC-42-13,42,Sensibilité V_conv à ρ (5-30 %) × δ (10-30 %) ; vente occupée ; point mort des valeurs libres ; r = 8 % et 12 %,analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestConversion::test_sensibilite_conversion,"1 531 692 à 1 893 849 ; θ* = 0,937 ; 1 768 600 ; 1 623 172",idem,verifie,2026-10-31603CALC-42-14,42,Exercices 1 à 7 (quote-part et charges ; attestation ; capitalisation des charges ; grille à un comparable ; loyer pour 4 % ; variantes de conversion ; indivision → divise),analysis/python/cases/ch42_copro.py,analysis/python/tests/test_ch42.py::TestExercices,"9 900 / 825 ; 13 430 ; 15 750 / 21 000 / 10 500 / 50 400 ; 294 280 (brut 19,6 %) ; 2 627 $/mois ; −44 742, 1 893 849, +120 000 ; 924 000 / 1 110 000 / 126 000 / 42 000",idem,verifie,2026-10-31604CALC-43-001,43,"Cas 4, effets_regionaux : coefficient inondable (se HC1) → effet % du taux, IC95, Kennedy ; coefficient sol ; part de la valeur en zone inondable",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestPrimeTaux,"0,0756 (0,0347) → +7,86 % [0,77 ; 15,44], Kennedy 7,79 % ; sol 0,0536 (0,0288) → +5,50 % ; 6,66 %","0,0756 (0,0347) → +7,86 % [0,77 ; 15,44], Kennedy 7,79 % ; sol 0,0536 (0,0288) → +5,50 % ; 6,66 %",verifie,2026-10-31605CALC-43-002,43,"Décote de valeur impliquée par la prime de taux : 1 − exp(−γ) (estimée) et 1 − 1/1,05 (déclarée)",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestPrimeTaux::test_coefficients_cites,"−7,29 % ; −4,76 %","−7,29 % ; −4,76 %",verifie,2026-10-31606CALC-43-003,43,"Cas 4, DiD sur ln RNE (choc injecté 2019T2 : −0,25/−0,12/−0,06 puis −0,05) : cellules, 2×2 naïf (se), par strate RMR, p de randomisation exacte (17 296 affectations)",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestDiDCas4,"10,0063/10,1607/10,0995/10,1409 ; −0,1129 (0,0252) ; −0,0794 ; p 0,0052 et 0,0240","10,0063/10,1607/10,0995/10,1409 ; −0,1129 (0,0252) ; −0,0794 ; p 0,0052 et 0,0240",verifie,2026-10-31607CALC-43-004,43,"Cas 4, TWFE immeuble + RMR×trimestre : effet transitoire et permanent (se grappes) ; étude d'événement k=−7, 0, 1, 2, 12 ; effet valeur Δln RNE − Δln R estimé vs déclaré",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestDiDCas4::test_valeurs_citees,"−0,1653 (0,0263) ; −0,0888 (0,0466) ; 0,0208 / −0,2625 / −0,1278 / −0,0620 / −0,0912 ; −15,16 % vs −9,41 %","−0,1653 (0,0263) ; −0,0888 (0,0466) ; 0,0208 / −0,2625 / −0,1278 / −0,0620 / −0,0912 ; −15,16 % vs −9,41 %",verifie,2026-10-31608CALC-43-005,43,"Rivière-Fictive : 625 lots (175 exposés : 25/50/50/50 ; 141 avec vue dont 54 hors zone), 1 014 ventes (302 exposées, 695 après), vérités ln : avant −0,0499, après −0,0763, stigmate −0,0263",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestRiviereFictive::test_structure,"625 ; 175 ; 141/54 ; 1 014 ; 302 ; 695 ; −0,0499 ; −0,0763 ; −0,0263","625 ; 175 ; 141/54 ; 1 014 ; 302 ; 695 ; −0,0499 ; −0,0763 ; −0,0263",verifie,2026-10-31609CALC-43-006,43,"Ventes appariées (206 paires après 2019) : moyenne $, moyenne %, médiane %, IC95, vérité ; par classe (TE/E/M/F) ; par vue (0/1)",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestRiviereFictive::test_paires,"−19 113 $ ; −4,83 % ; −5,35 % ; [−6,15 ; −3,51] ; −7,26 % ; −8,47/−5,97/−5,37/−1,30 % ; −3,62/−5,91 %","−19 113 $ ; −4,83 % ; −5,35 % ; [−6,15 ; −3,51] ; −7,26 % ; −8,47/−5,97/−5,37/−1,30 % ; −3,62/−5,91 %",verifie,2026-10-31610CALC-43-007,43,"Hédoniques : (a) exposé sans vue ; (b) avec vue (+ coef vue) ; (c) par classe avant et × après, vue ; (d) DiD régression exposé, exposé×après ; 2×2 ; effectifs",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestRiviereFictive::test_hedoniques,"−0,0447 (0,0052) ; −0,0501 (0,0059), vue 0,0132 ; TE −0,1035 E −0,0564 M −0,0426 F −0,0043 ; ×après −0,0218/−0,0430/−0,0193/−0,0095 ; vue 0,0417 ; DiD −0,0316 (0,0092), −0,0269 (0,0107) ; 2×2 −0,0237 ; 223/489/96/206",idem,verifie,2026-10-31611CALC-43-008,43,"Terrain contaminé (hyp. fictives : V_p 2,1 M$, coût 206 500 $ +25 %, 15 mois, 6,5 %, stigmate 5 %) : VA propre stigmatisée, VA coût, coût du délai, stigmate, V_c, écart % ; sensibilité (s, T) et (coût ×k)",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestModelesValeur::test_contamination,"1 843 979 ; 248 163 ; 151 021 ; 105 000 ; 1 595 816 (−24,01 %) ; 1 780 814 … 1 331 391 ; ×2 → 1 347 653",idem,verifie,2026-10-31612CALC-43-009,43,"Sinistre P41 (hyp. fictives : remise 240 000 $, 4 log. × 5 mois, 6,5 %, stigmate 5 %, indemnité 85 % − 10 000 $) : VA perte d'usage, stigmate, V_après (%), indemnité, position assuré, perte nette, part non assurée ; sensibilité stigmate",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestModelesValeur::test_sinistre,"27 603 ; 85 700 ; 1 360 697 (−20,61 %) ; 194 000 ; 1 554 697 ; 159 303 ; 45,1 % ; 1 446 397 … 1 189 297",idem,verifie,2026-10-31613CALC-43-010,43,"Pyrite : dépréciation curable (25 000 + 2 000) vs incurable (1 800/0,055)",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestModelesValeur::test_pyrite,27 000 ; 32 727,27 000 ; 32 727,verifie,2026-10-31614CALC-43-011,43,"Exercices 1 à 7 (solutions/ch43.tex) : HP −7,96 %, Kennedy −7,99 %, IC [−11,68 ; −4,10] ; 2 285 714 / 2 119 149 / −7,29 % / −10,07 % ; 730 841 / 110 208 / 620 633 ; 14 226 / 786 574 / 893 574 / 86 426 ; −0,06 → −5,82 % ; 17 296, p variantes (−0,02 : 0,033/0,138 ; −0,10 : 0,0001/0,002 ; placebo 2017T2 : p 0,44) ; p* 0,048, 27 000 / 32 727",analysis/python/cases/ch43_risques.py,analysis/python/tests/test_ch43.py::TestExercices,voir description,"idem (variantes de l'ex. 6 calculées hors test, script modifié à la main : CHOC_PERMANENT ∈ {−0,02 ; −0,10}, placebo 2017T2 sans choc)",verifie,2026-10-31615CALC-44-001,44,"Facture annuelle au tarif D (1er avril 2026) pour 22 000 kWh : accès 168,46 + tranche 1 (14 600 kWh) 1 031,49 + tranche 2 (7 400 kWh) 824,51 = 2 024,46 $ ; prix moyen 9,20 ¢/kWh ; prix marginal 11,142 ¢/kWh",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestTarifD,2024.46 ; 0.0920 ; 0.11142,idem,verifie,2026-10-31616CALC-44-002,44,"Économie marginale : 1 000 kWh évités au-dessus du seuil = 111,42 $ ; 15 000 → 14 000 kWh (franchissement du seuil) = 86,96 $",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestTarifD::test_economie_marginale,111.42 ; 86.96,idem,verifie,2026-10-31617CALC-44-003,44,"Mesure A (thermopompe climat froid, hypothèses déclarées) : coût 16 500, LogisVert 120 × 36 = 4 320, net 12 180 ; 3 300 kWh = 367,69 $/an ; VAN −7 286,54 ; TRI −5,84 % ; VA économies 4 893,46 ; IR 0,402 ; annuité 1 140,37 ; CEE net 34,56 ¢, brut 46,81 ¢ ; délai jamais",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestMesures::test_thermopompe,-7286.54 ; -0.0584 ; 4893.46 ; 0.3456,idem,verifie,2026-10-31618CALC-44-004,44,"Mesure B (isolation entretoit) : coût 95 × 44 = 4 180, Rénoclimat 2 000, net 2 180 ; 880 kWh = 98,05 $/an ; 31 ans ; VAN 224,60 ; TRI 5,29 % ; délai simple 16,89, actualisé 27,40 ; VA 2 404,60 ; IR 1,103 ; CEE net 15,12 ¢, brut 28,99 ¢",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestMesures::test_isolation,224.60 ; 0.0529 ; 16.89 ; 27.40 ; 0.1512,idem,verifie,2026-10-31619CALC-44-005,44,"Combinaison A+B non additive : 880 + 0,30 × (11 000 − 880) = 3 916 kWh (vs 4 180) ; VAN −8 553,09 ; VA 5 806,91 (0,91 % de 637 953 $) ; coût 20 680 (3,24 %)",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestMesures::test_combinaison_non_additive,3916 ; -8553.09 ; 5806.91,idem,verifie,2026-10-31620CALC-44-006,44,"Décision incrémentale en fin de vie : appareil standard 10 481,32 × 1,33043 = 13 944,66, LogisVert 1 800 ; surcoût climat froid 2 555,34, bonification 2 520, net 35,34 ; 2 200 kWh = 245,12 $/an ; VA 3 262,31 ; VAN +3 226,97",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestMesures::test_decision_incrementale,35.34 ; 3226.97,idem,verifie,2026-10-31621CALC-44-007,44,Identités : VAN = −coût net + VA ; cumul actualisé final = VAN ; VAN(TRI) = 0 ; flux_t+1/flux_t = 1 + g ; annuité = coût net × CRF,analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestMesures::test_identites,écarts < 1e-6,idem,verifie,2026-10-31622CALC-44-008,44,"Seuils d'équilibre (A) : g = 14,40 % ; 8 683 kWh (78,9 % du chauffage) ; coût net 4 893,46 (subvention 11 606,54)",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestSeuilsEtSensibilite::test_seuils_thermopompe,0.1440 ; 8683 ; 11606.54,idem,verifie,2026-10-31623CALC-44-009,44,"Grille VAN taux × croissance : A de −9 383 à −4 573 (toutes négatives, monotone) ; B de −1 251 à +3 784 ; durée A : −9 573 (10 ans, 10 %) à −1 719 (25 ans, 2 %) ; tornade A (7 paramètres)",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestSeuilsEtSensibilite,"monotonie ; cellule de base = VAN ; subvention 0/6 700 → −11 606,54 / −4 906,54",idem,verifie,2026-10-31624CALC-44-010,44,"Lectures de la contribution (A) : VA/coût 0,297 ; VA/net 0,402 ; primes 2,32 / 4,20 / 5,36 % × 637 952,85 = 14 800,51 / 26 794,02 / 34 194,27 ; VA restante après 5 ans 3 923,88, après 10 ans 2 360,94",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestContribution,14800.51 ; 26794.02 ; 34194.27 ; 3923.88 ; 2360.94,idem,verifie,2026-10-31625CALC-44-011,44,"Paires qualité 4 vs 3 (cas 1 ; tolérances 25 m², 10 ans, 18 mois, 5 km ; prix bas ramené par 0,364 %/mois) : n = 30 ; médiane 5,78 % (25 082,63 $) ; moyenne 4,65 % ; σ 13,64 % ; erreur-type 2,49 % ; IC95 −0,23..9,53 % ; hédonique exp(0,06108)−1 = 6,30 % ; contribution 36 891,23 (paires) / 40 181,62 (hédonique) ; coût hypothèse 65 000 → ratios 0,568 / 0,618 ; VAN −28 108,77",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestContribution::test_paires_qualite,30 ; 0.0578 ; 0.0465 ; 0.0630 ; 36891.23,idem,verifie,2026-10-31626CALC-44-012,44,"Composantes du sujet à ≥ 90 % de vie utile (fiche ch. 11) : VRC 1,000 ; entrée asphaltée 1,000 ; aménagement paysager 0,950 ; gouttières 0,935 ; balcon 0,935",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestContribution::test_fin_de_vie,5 composantes,idem,verifie,2026-10-31627CALC-44-013,44,"Exercices : ex1 1 578,78 / 2 470,14 ; ex2 1 200 / 2 880 / 55 833 BTU/h / 6 700 ; ex3 fenêtres VAN −16 213,20, CEE 183,96 ¢, sans sub −20 713,20 ; ex4 CEE 15,12 / 28,99 / 21,83 ¢, VAN sans sub −1 775,40 ; ex5 14 800,51 / 34 194,27 / 5 806,91 / 10 700,48 ; ex6 = CALC-44-008 ; ex7 n 59 (médiane 6,04 %) et 4 (0,92 %), Kennedy 6,298 %",analysis/python/cases/ch44_renovation.py,analysis/python/tests/test_ch44.py::TestExercices,voir description,idem,verifie,2026-10-31628CALC-39-01,39,"Postérieure NIG sous a priori de référence = MCO : m_n = β̂, a_n = (n−k)/2 = 292, ν = 584, b_n = SCR/2 = 2,0122, E[σ|y] = 0,0832 ; 15/15 paramètres vrais couverts à 95 %",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_nig_reference_coincide_avec_mco,"m_n = β̂ (1e-9) ; 292 ; 584 ; 2,0122 ; 0,0832 ; 15/15",identique,verifie,2026-10-31629CALC-39-02,39,"A priori propre vague (V0 = 1e4 I, a0 = b0 = 1e-3) : a_n = 300,001, ν = 600, E[σ] = 0,0821, |m_n − β̂| < 1e-4 ; sujet 95 % [540 678 ; 747 707]",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_prior_propre_vague,"300,001 ; 0,0821 ; [540 678 ; 747 707]",identique,verifie,2026-10-31630CALC-39-03,39,"Prédictive de Student du sujet (600 ventes) : loc 13,3627, échelle 0,08364, part coefficients 1,49 %, médiane 635 821 $, 90 % [553 979 ; 729 754], 95 % [539 504 ; 749 334] ; écart < 0,1 % avec l'IC ch. 18 [539 682 ; 749 087]",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_predictive_student_vs_ic_frequentiste,"[539 504 ; 749 334] ; écart < 0,1 %","[539 504 ; 749 334] ; écart 0,03 %",verifie,2026-10-31631CALC-39-04,39,"Cohérence séquentielle : postérieure(344 ventes 2023-24) comme a priori + 256 ventes 2025-26 = postérieure(600) à 1e-8 près (m_n, V_n, a_n, b_n)",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_coherence_sequentielle,écart < 1e-8,"3,7e-12",verifie,2026-10-31632CALC-39-05,39,"Petit marché (40 ventes ≤ 3 km, ≤ 18 mois, 12 colonnes, ν = 28) : référence ln_S 0,611 (0,067), médiane 650 965 $, largeur 39,5 % ; κ = 1 : 0,543 (0,016), 630 978 $, 33,2 % ; κ = 4 : sd 0,028 ; κ = 16 : sd 0,042 ; Hull seul 623 894 $ [526 381 ; 739 471], ln_S 0,540 (0,025)",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_petit_echantillon_et_prior_informatif,valeurs du tab:39:petit,identiques,verifie,2026-10-31633CALC-39-06,39,"Gibbs par blocs (4 chaînes × 3 000, brûlage 1 000) : R̂ < 1,01 et ESS > 2 000 pour tous les paramètres ; un paramètre à la fois : dist_centre R̂ 1,065 / ESS 91, α_MA 1,062 / 94",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_gibbs_diagnostics,"bloc : R̂ ≤ 1,002, ESS ≥ 2 985 ; naïf : ESS < 300 pour dist_centre et α_MA",identique,verifie,2026-10-31634CALC-39-07,39,"Modèle hiérarchique (600 ventes) : σ 0,0832 (0,0024) ; τ médiane 0,181, 90 % [0,089 ; 0,494] ; α0 13,021 (0,147) ; effets relatifs à Hull : Gatineau −0,015, Aylmer 0,098, Buckingham −0,207, Masson-Angers −0,224 (effets fixes −0,022 / 0,085 / −0,250 / −0,263 ; vrais −0,0215 / 0,1096 / −0,1844 / −0,2044 tous couverts) ; B_s 0,999/0,999/0,998/0,995/0,995",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_hierarchique_retrouve_les_lois,valeurs du tab:39:hier,"identiques (Monte-Carlo, tolérance 0,01)",verifie,2026-10-31635CALC-39-08,39,"Prédictive hiérarchique du sujet (8 000 tirages) : médiane 634 748 $, moyenne 637 727 $ (Duan ch. 18 : 637 953 $), 90 % [554 564 ; 729 004], 95 % [540 309 ; 749 431] ; sd log 0,0834 dont 0,0103 pour la moyenne",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_predictive_hierarchique,"moyenne à moins de 0,5 % de 637 953 $","637 727 $ (−0,04 %)",verifie,2026-10-31636CALC-39-09,39,"Expérience Masson-Angers n = 5/10/20/47 : effet fixe −0,342/−0,321/−0,280/−0,263 ; effet aléatoire −0,300/−0,282/−0,239/−0,224 ; B 0,970/0,984/0,990/0,996 ; prédictive sujet MA (26,9 km) médiane fixe 418 591 → 448 726 $, largeur 95 % 36,1 → 33,4 % ; hiérarchique 421 106 → 448 829 $, 36,1 → 33,1 %",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_formule_retrecissement_et_experience,"effet aléatoire > effet fixe et plus proche de α0 pour chaque n ; B(5) = 0,970",vérifié,verifie,2026-10-31637CALC-39-10,39,"Formule de rétrécissement : B(5 ; σ = 0,083 ; τ = 0,15) = 0,9423 ; B(5 ; τ = 0,05) = 0,6447 ; n pour B = ½ : 0,31 et 2,76",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_formule_retrecissement_et_experience,"0,9423 ; 0,6447",identique,verifie,2026-10-31638CALC-39-11,39,"Sensibilité à l'a priori sur τ (uniforme, IG(0,001;0,001), IG(1;0,01), τ fixé 0,157) : τ médiane 600 ventes 0,181/0,149/0,129/0,157 ; effet MA −0,224/−0,211/−0,200/−0,221 ; avec 5 ventes −0,300/−0,285/−0,269/−0,283",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_sensibilite_prior_tau,"étendue de l'effet MA(5) < 0,05 selon l'a priori","0,031",verifie,2026-10-31639CALC-39-12,39,"Critères : elpd_WAIC pooling 497,8 / effets fixes 633,2 / hiérarchique 632,9 (e.-t. 17,5 / 16,2 / 16,3) ; p_WAIC 12,4 / 16,0 / 16,1 ; LOO exact 497,8 / 633,1 ; LOO tronqué 497,8 / 633,1 / 632,9 ; WAIC −995,7 / −1 266,3 / −1 265,7",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_criteres,|WAIC − LOO exact| < 1 ; Δ(fixe − pooling) > 100 ; |fixe − hiér.| < 2,vérifié,verifie,2026-10-31640CALC-39-13,39,"Récupération sur données simulées depuis les lois du générateur (graine 3, n = 600) : conjugué ≥ 13/15 couverts, E[σ] ≈ 0,085 ; Gibbs : σ ≈ 0,085, ≥ 3/4 primes de secteur couvertes, R̂ < 1,05",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_recuperation_sur_donnees_simulees,couverture et σ,vérifié,verifie,2026-10-31641CALC-39-14,39,"Diagnostics sur chaînes de contrôle : iid → R̂ ∈ [0,99 ; 1,02], ESS > 0,7 mn ; AR(1) φ = 0,9 → ESS ∈ [200 ; 800] ; chaîne décalée de 3 e.-t. → R̂ > 1,5 ; identités WAIC",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_rhat_et_ess_sur_chaines_independantes,voir test,vérifié,verifie,2026-10-31642CALC-39-15,39,"Exercices : ex1 m_n 3 440,8 / s_n 120 / w 0,64 / n0 2,25 (s0 = 400 : 3 492,9 / 140,4 / 0,877) ; ex2 P(>650 k$) 0,396, P(<550 k$) 0,042, 80 % [571 126 ; 707 845] ; ex3 B = 0,942/0,970/0,985/0,994, effet rétréci −0,2873, sd 0,0360 vs 0,0371 ; ex4 t_584 1,9640, t_20 2,0860, +6,2 %, [534 030 ; 757 014] ; ex5 R̂ 1,0077 et 1,2855, ESS 444 ; ex6 κ = 0,25 / 100 : 0,541 (0,008) 629 664 $ / 0,599 (0,053) 644 128 $, const Gatineau 631 263 $, const Buckingham 628 165 $, prior Hull 2023-24 : 0,530 (0,028) 628 160 $ ; ex7 α0 13,008 (0,041), MA −0,219",analysis/python/cases/ch39_bayes.py,analysis/python/tests/test_ch39.py::test_exercices,valeurs des solutions,"identiques (ex6 b-c et ex7 d calculés hors script, 2026-10-31)",verifie,2026-10-31643CALC-37-01,37,"Plis aléatoires identiques à ceux de ch18_hedonique.validation_croisee (graine 20261031) ; hédonique en validation croisée : RMSE log, RMSE $, MdAPE, COD, PRD, PRB",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_plis_identiques_au_chapitre_18;test_reproductibilite_et_reference,"0,0839 ; 40 889 $ ; 5,68 % ; 6,83 ; 1,007 ; −0,059","0,0839 ; 40 889 $ ; 5,68 % ; 6,83 ; 1,007 ; −0,059",verifie,2026-10-31644CALC-37-02,37,"Validation croisée aléatoire des modèles d'arbres : arbre (prof. 3), forêt (500), gradient boosting (prof. 2, ν 0,03, 1200), XGBoost — RMSE log / COD / MdAPE / PRB",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_comparaison_aleatoire,"arbre 0,1468/11,63 ; forêt 0,1067/8,64/7,52/−0,196 ; GBM 0,0931/7,42/6,22/−0,088 ; XGB 0,0921/7,33/6,09/−0,081",idem,verifie,2026-10-31645CALC-37-03,37,"Blocs spatiaux stratifiés par secteur (k-moyennes k=2 par secteur, 10 blocs) : RMSE log / COD par modèle",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_validation_spatiale_et_temporelle,"hédo 0,0857/7,00 ; arbre 0,1537/12,12 ; forêt 0,1120/8,96 ; GBM 0,0967/7,62 ; XGB 0,0948/7,53",idem,verifie,2026-10-31646CALC-37-04,37,"Validation prospective (499 ventes 2023-2025 → 101 ventes 2026) : RMSE log, biais log, ratio médian, COD ; boosting détendancé ; boosting feuilles ≥ 1",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_validation_spatiale_et_temporelle,"hédo 0,0855/−1,0 %/0,988/6,96 ; GBM 0,0950/−3,4 %/0,966/7,41 ; forêt 0,1283/−6,0 %/0,934/9,47 ; arbre 0,1737/−8,5 %/0,931/12,35 ; détendancé −1,8 %/0,0928/7,44 ; feuilles≥1 −13,4 %/0,1631 ; β_mois 0,00342 ; 14 ventes > mois 17",idem,verifie,2026-10-31647CALC-37-05,37,Un secteur exclu à la fois : COD global et biais par secteur (hédonique avec secteur exclu prédit au niveau de référence ; arbres),analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_un_secteur_exclu,"hédo COD 10,44, biais Buck +23,4 %, M-A +26,1 % ; GBM 8,59 (Buck −0,6 %, M-A +7,2 %, Gat −6,8 %, Ayl −7,1 %) ; forêt 10,21 ; arbre 15,65 ; XGB 8,87",idem,verifie,2026-10-31648CALC-37-06,37,"Scénario non linéaire ln P† = ln P + 0,12·1[q≥4, âge≥40] − 0,10·1[25≤âge≤45] (76 et 235 ventes) : COD hédo / forêt / GBM / XGB / hédo respécifié ; coefficients respécifiés",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_scenario_non_lineaire,"8,15 / 9,17 / 7,46 / 7,40 / 6,85 ; prime 0,129 (0,012), mur −0,092 (0,008), σ 0,083, R² 0,864",idem,verifie,2026-10-31649CALC-37-07,37,"TreeSHAP du boosting : base 13,0732 (476 010 $), efficacité (Σφ + base = prédiction), importances moyennes |φ|, φ du sujet, interactions (base et scénario)",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_shap,"erreur d'efficacité < 1e-9 ; superficie 0,111, âge 0,043, mois 0,040, lon 0,032, qualité 0,031 ; secteurs ≤ 0,0016 ; sujet : mois 0,0986, superficie 0,0871, âge 0,0322, terrain −0,0127 ; interaction âge×qualité 0,0068 (scénario) vs max 0,0031 (base)",idem,verifie,2026-10-31650CALC-37-08,37,Importance par permutation hors échantillon (10 plis × 10 permutations) du boosting et de la forêt,analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_shap,"GBM : EQM base 0,00867 ; superficie 0,0348, âge 0,0061, mois 0,0046, lon 0,0042, qualité 0,0042 ; forêt : base 0,0114, superficie 0,0300",idem,verifie,2026-10-31651CALC-37-09,37,Prédiction du sujet par chaque modèle (600 ventes) avec facteur de Duan hors échantillon ; cascade SHAP du sujet,analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_sujet_et_pdp,"hédo 637 953 (cas1) / 638 011 ; XGB 613 976 ; GBM 605 825 (brut 604 595, facteur 1,0020) ; forêt 586 818 ; arbre 549 573 ; cumul cascade 525 340 → 604 595",idem,verifie,2026-10-31652CALC-37-10,37,"Dépendance partielle (superficie, âge) : concordance boosting/hédonique avec la loi de génération (corr. > 0,99, écart max < 0,04) ; scénario : creux 25-45 ans reproduit par le boosting",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_sujet_et_pdp,vérifié par assertions,idem,verifie,2026-10-31653CALC-37-11,37,"Courbes d'apprentissage (staged_predict, 10 plis) : optimum et RMSE min par profondeur ; sensibilité aux hyperparamètres (13 réglages)",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_courbes_et_sensibilite,"prof. 1 : 1198 it., 0,0887 ; prof. 2 : 730, 0,0923 ; prof. 4 : 367, 0,0966 (entraînement 0,0116) ; grille : souches 0,0887 meilleur ; ν 0,10 0,0988 ; forêt 100 arbres 0,1065",idem,verifie,2026-10-31654CALC-37-12,37,"Exercices 37.1-37.7 : division d'arbre (seuil 113,5, gain 0,338), variance de forêt (limite 0,00432, B=233), boosting pas à pas (F3 12,8542, m 43,7), Shapley (70,83/35,83/23,33), métriques AVM (RMSE log 0,0503, MdAPE 4,51, COD 4,42, PRD 1,006, PRB −0,034)",analysis/python/cases/ch37_ml.py,analysis/python/tests/test_ch37.py::test_solutions_exercices,voir solutions/ch37.tex,idem,verifie,2026-10-31655CALC-40-001,40,Monte-Carlo cas 3 (MC_LOIS ch47 ; graine 20261031 ; N = 10 000) : médiane de la valeur identique au ch. 47,analysis/python/cases/ch40_montecarlo.py,analysis/python/tests/test_ch40.py::test_chiffres_identiques_au_ch47,2191607.87,2191607.87,verifie,2026-10-31656CALC-40-002,40,Quantiles 5 % et 95 % de la valeur identiques au ch. 47,ch40_montecarlo.py,test_ch40.py::test_chiffres_identiques_au_ch47,1735194.21 ; 2876902.35,1735194.21 ; 2876902.35,verifie,2026-10-31657CALC-40-003,40,Moyenne et écart-type de la valeur ; P(RCD1<1,20) ; P(RCD1<1) ; P(RCD6 +200 pb < 1,20),ch40_montecarlo.py,test_ch40.py::test_chiffres_identiques_au_ch47,2233505.68 ; 350442.57 ; 0,4936 ; 0 ; 0658CALC-40-004,40,evaluer() (chemin ch. 40) reproduit monte_carlo() (ch. 47) tirage par tirage ; valeur_deterministe() = V_DCF (2 208 565.91) et = 1 947 889 pour r 8 % / R_T 5,5 % (ch. 30),ch40_montecarlo.py,test_ch40.py::test_valeur_deterministe_reproduit_dcf,égalité exacte,égalité exacte,verifie659CALC-40-005,40,Moments théoriques des lois (log-normale : moyenne 0,0408 ; triangulaire (0,08 ; 0,15 ; 0,25) : moyenne 0,16 écart-type 0,03488 q05 0660CALC-40-006,40,Élicitation : inversion exacte des quantiles 5/95 % (log-normale médiane 0,03888 sigma_ln 0,2934 ; normale),ch40_montecarlo.py::parametres_depuis_quantiles,test_ch40.py::test_moments_lois_formules_fermees,q05 = 0,024 ; q95 = 0661CALC-40-007,40,Cholesky 2×2 (0,005 ; 0,0064 ; 0,78) : L L' = Sigma ; corrélation r–R_T théorique 0,781 = empirique 0,781 ; Spearman 0,769 vs (6/pi) arcsin(rho/2) = 0662CALC-40-008,40,Copule gaussienne (50 000 tirages) : marginales exactes et Spearman ≈ 0,766,ch40_montecarlo.py::copule_gaussienne,test_ch40.py::test_cholesky_et_copule,±0,01,ok663CALC-40-009,40,Erreur type théorique (N = 10 000) : moyenne 3 504 ; q05 4 756 ; médiane 4 135 ; q95 10 621 ; P(RCD1<1,20) 0,0050 — vs empirique sur 300 répétitions : 3 590 ; 4 654 ; 4 277 ; 10 862 ; 0,0052,ch40_montecarlo.py::erreurs_theoriques/repetitions,test_ch40.py::test_erreur_monte_carlo,accord à ±35 %664CALC-40-010,40,Graine 20261031 : médiane à z = −2,87 de la moyenne des 300 répétitions (2 203 873) ; rang 1/300 ; q05 z = −2,11 ; q95 z = −1,79 ; moyennes des 300 : 2 246 514 / 1 745 027 / 2 896 383,ch40_montecarlo.py::tout (graine_traite),imprimé (non testé : diagnostic),—665CALC-40-011,40,Convergence (suite de 100 000 tirages) : médiane 2 203 500 ; q05 1 744 070 ; q95 2 895 770 ; après 100 tirages 2 186 860 / 2 859 840 ; après 1 000 : 2 188 350 / 2 865 010 ; après 10 000 : 2 207 230 / 2 901 010,ch40_montecarlo.py::convergence,test_ch40.py::test_convergence_et_pente (N_max 20 000),médiane ≈ 2 204 000 ± 15 000,ok,verifie,2026-10-31666CALC-40-012,40,Pente log-log de l'écart-type empirique de la médiane selon N (40 répétitions ; N de 250 à 8 000),ch40_montecarlo.py::se_empirique_selon_N,test_ch40.py::test_convergence_et_pente,−0,5,−0,501667CALC-40-013,40,N requis (eq. 40.n-requis) : médiane ±5 000 $ → 26 267 ; ±1 000 $ → 656 665 ; probabilité ±1 pt → 9 604 ; ±0,5 pt → 38 415,ch40_montecarlo.py::n_requis,test_ch40.py::test_erreur_monte_carlo,26267 ; 9604 ; 38415,idem,verifie668CALC-40-014,40,Hypercube latin : un point par strate ; mêmes lois que tirer() ; rapport des variances simple/LHS (N = 1 000 ; 100 répétitions) : moyenne 105,4 ; écart-type 3,1 ; médiane 2,8 ; q05 1,4 ; q95 1,9 ; P(V<2M) 2,6 ; P(RCD1<1669CALC-40-015,40,VaR 5 % = 473 372 (21,4 %) ; CVaR 5 % = 557 097 (25,2 %) ; VaR 10 % = 385 254 ; CVaR 10 % = 491 208 (référence V_DCF 2 208 566) ; normale : q05 1 657 079 ; CVaR5 → 1 510 643,ch40_montecarlo.py::mesures_risque/cvar_normale,test_ch40.py::test_mesures_risque_et_rcd_analytique,±1 $,ok670CALC-40-016,40,RCD1 affine en v : pente −2,12 ; v* = 0,039 → P exacte 0,5 ; v1 = 13,33 % → P exacte 2e-5 (0,21 tirage attendu) ; la fonction affine reproduit le RCD1 simulé à 1e-10,ch40_montecarlo.py::rcd1_analytique671CALC-40-017,40,Stress déterministes : hausse des taux 1 947 889 (−11,8 % ; P 20,7 %) ; inoccupation 6 % 2 128 580 (−3,6 % ; 42,3 %) ; croissance faible 1 954 800 (−11,5 % ; 21,4 %) ; 3 quantiles 90 % 1 717 180 (−22672CALC-40-018,40,Stress inversé : v (RCD1 = 1) 13,33 % ; r (V = 2 M$) 7,718 % ; R_T (V = V_cap) 5,622 % ; g_m (V = V_cap) 2,326 %,ch40_montecarlo.py::stress_inverse,test_ch40.py::test_stress_et_inverse673CALC-40-019,40,Indices de Sobol (N = 20 000 ; 180 000 évaluations) : r 0,528/0,535 ; g_m 0,248/0,255 ; delta 0,134/0,144 ; g_d 0674CALC-40-020,40,Corrélations de Spearman avec la valeur : R_T −0,782 ; r −0,711 ; g_m 0,487 ; delta 0,347 ; g_d −0,211 ; v −0,145 ; rotation 0675CALC-40-021,40,Tornade (ch. 47) : amplitudes r 636 535 ; g_m 459 632 ; delta 320 404 ; g_d 185 540 ; v 117 049 ; CAPEX 92 066 ; rotation 90 738,ch47_dossier.py::tornade (importée),test_ch47.py,idem ch47,idem,verifie,2026-10-31676CALC-40-022,40,Portefeuille cas 4 (48 immeubles ; horizon 1 an ; sigma_R 50 pb ; rho 0,30/0,60 ; amortissement 480 mois ; 23 prêts ≤ 2028 renouvelés à +200 pb) : valeur 2026 143 363 000 ; déterministe 147 935 699 ; écart-type 10 295 448 ; q05 133 871 911 ; VaR5 14 063 788 ; CVaR5 17 388 940 ; ratio diversification 0,643 ; E[n<1,20] 10,19 ; E[n<1] 4,93 ; déterministe 5 et 1677CALC-40-023,40,Structure factorielle : corrélation empirique des log-valeurs ≈ 0,60 intra-RMR et 0,30 inter-RMR ; indépendance : écart-type 3 207 240 ratio 0,201 ; parfaite : 15 931 300 ratio 0,998 ; E[n<1,20] indépendant de la corrélation,ch40_montecarlo.py::simuler_portefeuille/comparer_structures_correlation678CALC-40-024,40,Choc de revenu sigma_g = 10 % : q95(n<1) 8 / 10 / 11 ; P(n<1 > 10) 0 / 1,9 % / 5,1 % selon la structure,ch40_montecarlo.py::comparer_structures_correlation,imprimé (non testé),—,—679CALC-40-025,40,Exercices : ex1 médiane 0,03888 P(v>5 %) 0,1957 ; ex2 P(rot>20 %) tri 0,147 PERT 0,092 ; ex3 N 26 267 / 656 665 / 9 604 / 38 415 ; ex4 r 7,85 % R_T 5,399 % Spearman 0680CALC-40-026,40,Solution 5 : P(V < 75 % de 2 208 566) = 2,1 % (212 tirages sur 10 000),ch40_montecarlo.py (vérification ad hoc),—,≈ 2 %,0,0212681CALC-41-001,41,"Coûts du cas 1 repris du ch. 21 : D, I, C_N ; D+I par m² habitable ; ratio IPCB plex/maison T3 2026 ; D+I/m² plex",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_couts_ch21,"298 826 $ ; 62 599 $ ; 397 567 $ ; 2 190,45 $/m² ; 1,0172 ; 2 228,06 $/m²","298 826 $ ; 62 599 $ ; 397 567 $ ; 2 190,45 $/m² ; 1,0172 ; 2 228,06 $/m²",verifie,2026-10-31682CALC-41-002,41,"Prix de sortie (modèle hédonique cas 1, âge 0, Duan) : sujet 637 953 ; U 720 727 ; D 550 726 → 495 654 (×0,90), GDV 991 307 ; T 480 573 → 408 487 (×0,85), GDV 1 225 460 ; Q GDV 1 371 384",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_prix_sortie,637 953 ; 720 727 ; 495 654 ; 991 307 ; 408 487 ; 1 225 460 ; 1 371 384,637 953 ; 720 727 ; 495 654 ; 991 307 ; 408 487 ; 1 225 460 ; 1 371 384,verifie,2026-10-31683CALC-41-003,41,Tests légal et physique (zone fictive H-2f) : logements admissibles 3 ; aire max 372 m² ; aires brutes 194/282/353/400 ; Q non permis ; empreinte 256 m²,analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestQuatreTests,3 ; 372 ; 194/282/353/400 ; Q non permis,3 ; 372 ; 194/282/353/400 ; Q non permis,verifie,2026-10-31684CALC-41-004,41,"Résidu de développement, convention promoteur (frais 4 %, marge 15 % GDV, parcs 10 %, prêt 75 % à 6,19 %, portage 6,19 %) : V_L U/D/T/Q ; reste, F, marge, frais ; statique T ; parcs T",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_valeurs_citees_promoteur,"158 849 / 190 541 / 229 265 / 244 935 $ ; T : reste 275 967, F 18 239, marge 183 819, frais 49 018 ; statique 250 879 ; parcs 22 927","158 849 / 190 541 / 229 265 / 244 935 $ ; T : reste 275 967, F 18 239, marge 183 819, frais 49 018 ; statique 250 879 ; parcs 22 927",verifie,2026-10-31685CALC-41-005,41,"Convention construction sur commande (marge 10 % des coûts, sans frais ni parcs) : V_L U/D/T ; marge U",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_valeurs_citees_occupant,266 187 / 330 792 / 399 479 $ ; 39 824 $,266 187 / 330 792 / 399 479 $ ; 39 824 $,verifie,2026-10-31686CALC-41-006,41,Triplex vendu en bloc au prix par logement des triplex du cas 2 (traite.cas2) : 281 000 $ ; GDV 843 000 $ ; reste négatif ; V_L −28 102 $,analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestIntrants::test_en_bloc_cas2,281 000 ; 843 000 ; −28 102,281 000 ; 843 000 ; −28 102,verifie,2026-10-31687CALC-41-007,41,Identités : reste = GDV − frais − C − D − F − M ; V_L(1+τ)(1+r)^T = reste ; parcs = τ V_L ; F = L·i·T_eff/2 ; forme linéaire a·GDV − b ; version statique = ch08.valeur_residuelle_redeveloppement,analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_identites ; ::test_version_statique_egale_ch08,identités à 1e-10,identités à 1e-10,verifie,2026-10-31688CALC-41-008,41,"Conclusions PHMU : terrain vacant U (promoteur seul : T) ; bien amélioré S0 ; contribution du bâtiment 323 000 $ ; seuils GDV triplex 1 776 390 $ (+45,0 %) et 1 296 396 $ (+5,8 %)",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_seuils_et_conclusion,"U ; S0 ; 323 000 ; 1 776 390 (+45,0 %) ; 1 296 396 (+5,8 %)","U ; S0 ; 323 000 ; 1 776 390 (+45,0 %) ; 1 296 396 (+5,8 %)",verifie,2026-10-31689CALC-41-009,41,"Sensibilité V_L triplex : prix ±15 % 105 569/352 962 ; coût ±10 % 286 246/172 285 ; marge 10/20 % 280 169/178 362 ; durée 12/24 mois 241 459/217 582 ; taux 5/7,5 % 236 137/221 939 ; parcs 0 % 252 192 ; frais 2/6 % 249 627/208 904",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestResiduel::test_sensibilite_citee,voir description,voir description,verifie,2026-10-31690CALC-41-010,41,"Arbre binomial (σ 10 %, Δt 5 ans, r 2 %, y 4,5 %) : u 1,2506 ; d 0,7996 ; Φ 0,8860 ; q 0,1915 ; disc 0,9057 ; a 0,6729 ; b 1 195 378 ; nœuds GDV 1 532 535 / 979 914 / 1 916 556 / 1 225 460 / 783 568 ; exercice uu 94 322 ; continuation t1 16 357 ; prime 2 837 (0,47 %) ; frontière t1 1 874 959",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestOption,voir description,voir description,verifie,2026-10-31691CALC-41-011,41,Sensibilité de la prime (V_act 600/450/300 k$ × σ 5/10/15/20/25 %) : 0/2 837/21 420/47 939/77 556 ; 0/7 348/29 116/59 015/95 946 ; 0/23 568/58 416/95 247/132 208,analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestOption::test_sensibilite_option,voir description,voir description,verifie,2026-10-31692CALC-41-012,41,"Capozza–Helsley (R_A 27 000 ; R_T 55 146 ; C 716 656 ; g 551 ; σ 5 515 ; r 4,5 %) : α 3,92e-5 ; seuil certitude 59 250 (+7,4 %) ; prime 13 249 ; R* 72 498 (+31,5 %) ; limite σ→0 et racine de l'équation caractéristique",analysis/python/cases/ch41_phmu.py,analysis/python/tests/test_ch41.py::TestCapozzaHelsley,voir description,voir description,verifie,2026-10-31693CALC-41-013,41,"Solutions des exercices : ex2 670 555 / 821 400 ; ex3 F 32 033, V_L 407 908, statique 459 970, élasticité 2,88 ; ex5 u 1,3985, q 0,2815, américaine 45 636, européenne 37 007, nœud haut 178 960 > 145 121 ; ex6 α 5,79e-5, prime 9 266, R* 57 266 ; ex7 183 529/223 981/269 989, seuil 1 280 327 (+4,5 %), primes 14 897 / 47 091",analysis/python/cases/ch41_phmu.py ; analysis/python/cases/ch08_zonage.py,analysis/python/tests/test_ch41.py::TestExercices,voir description,voir description,verifie,2026-10-31694CALC-46-001,46,RBP contractuel = 12 × (1 047 + 1 188 + 1 251) ; RBP marché = 12 × (1 430 + 1 430 + 1 251) ; ρ = 0,848,analysis/python/cases/ch46_dossier.py,analysis/python/tests/test_ch46.py::test_coherence_cas2_et_ch32,41832 ; 49332 ; 0.848,41832.00 ; 49332.00 ; 0.8480,verifie695CALC-46-002,46,RBE = RBP × (1 − 0,03),ch46_dossier.py (traite.cas2.revenus),test_ch46.py::test_coherence_cas2_et_ch32,40577.04,40577.04,verifie696CALC-46-003,46,Taxe municipale 2026 = 495 000 × 0,7464 % + 3 × (386 + 195),ch46_dossier.py::taxes_2026,test_ch46.py::test_taxes_2026_et_rne,5437.68,5437.68,verifie697CALC-46-004,46,Taxe scolaire 2026-2027 = (495 000 − 25 000) × 0,07899 %,ch46_dossier.py::taxes_2026,test_ch46.py::test_taxes_2026_et_rne,371.25,371.25,verifie698CALC-46-005,46,Écart taxes déclarées (6 370) − recalculées (5 808,93),ch46_dossier.py::base_normalisee,test_ch46.py::test_taxes_2026_et_rne,561.07,561.07,verifie699CALC-46-006,46,Gestion imputée = 4 % × RBE ; dépenses hors réserve ; dépenses totales ; ratio,ch46_dossier.py (traite.cas2.rne),test_ch46.py::test_taxes_2026_et_rne,1623.08 ; 16182.01 ; 17982.01 ; 0.443,1623.08 ; 16182.01 ; 17982.01 ; 0.4432,verifie,2026-10-31700CALC-46-007,46,RNE₁ normalisé = RBE − DE − RR ; RNE déclaré (ch. 32) ; RNE aux loyers de marché,ch46_dossier.py::base_normalisee,test_ch46.py::test_taxes_2026_et_rne,22595.03 ; 22033.96 ; 29579.03,22595.03 ; 22033.96 ; 29579.03,verifie,2026-10-31701CALC-46-008,46,Sélection des 5 comparables triplex Limoilou par distance d'attributs (identiques au ch. 32),ch46_dossier.py (ch32_plex.selection_comparables),test_ch46.py::test_coherence_cas2_et_ch32,Q0187 Q0222 Q0243 Q0207 Q0235,Q0187 Q0222 Q0243 Q0207 Q0235,verifie,2026-10-31702CALC-46-009,46,Régression auxiliaire ln(prix/logement) sur 127 ventes : R² ; σ ; coefficient mois −0,00599 → croissance implicite 7,45 %/an,ch46_dossier.py::regression_auxiliaire,test_ch46.py::test_regression_et_grille,R² ≈ 0.727 ; g = exp(−12β) − 1,0.7273 ; 0.0973 ; 0.0745703CALC-46-010,46,Coefficient du loyer relatif non significatif (t = 1,18 < 2) → ajustement nul ; stationnement nul (tous ont une case),ch46_dossier.py::grille_ajustements,test_ch46.py::test_regression_et_grille,colonnes nulles,0 ; 0,verifie704CALC-46-011,46,Grille : prix ajusté = prix + Σ ajustements ; brut = Σ|A|/P ; Q0243 → 383 849 $/log. ; brut 12,6 %,ch46_dossier.py::grille_ajustements (traite.comparables),test_ch46.py::test_regression_et_grille,383849.14 ; 0.126,383849.14 ; 0.1257,verifie705CALC-46-012,46,Prix par logement pondéré (poids ∝ 1/brut) et indication par comparaison × 3,ch46_dossier.py::grille_ajustements (poids_inverse_brut ; reconciliation),test_ch46.py::test_regression_et_grille,340122.25 ; 1020366.74,340122.25 ; 1020366.74,verifie,2026-10-31706CALC-46-013,46,Écart-type pondéré des prix ajustés (par logement ; immeuble) et erreur-type de la moyenne pondérée,ch46_dossier.py::grille_ajustements,test_ch46.py::test_reconciliation (fourchette),34516 ; 103548 ; 47848,34516.03 ; 103548.10 ; 47847.85,verifie,2026-10-31707CALC-46-014,46,MRB médian des 5 comparables × RBP = 22,05 × 41 832 ; MRB ajusté au ρ du sujet (pente −0,956) : 24,38 → 1 019 940,ch46_dossier.py::indications_revenu,test_ch46.py::test_coherence_cas2_et_ch32 ; test_revenu,922395.60 ; 24.38708CALC-46-015,46,Taux ajusté au loyer relatif = 3,451 % + 0,0284 × (0,848 − 1) = 3,02 % ; capitalisation du RNE normalisé,ch46_dossier.py (ch32_plex.regression_taux_loyer_relatif ; finance.capitalisation_directe),test_ch46.py::test_revenu709CALC-46-016,46,Capitalisation aux taux médian (3,17 %) ; Q1 (2,76 %) ; Q3 (3,615 %) ; médiane des comparables (2,97 %) ; RNE déclaré au taux ajusté (ch. 32),ch46_dossier.py::indications_revenu,test_ch46.py::test_revenu ; test_coherence710CALC-46-017,46,Taux implicite de l'indication par comparaison (RNE / V_comp) ; aux loyers de marché ; écart au taux ajusté en pb,ch46_dossier.py::indications_revenu,test_ch46.py::test_revenu,0.0221 ; 0.0290 ; 81,0.022144 ; 0.028989 ; 80.6,verifie,2026-10-31711CALC-46-018,46,Coût : 2 409 × (262/165)^−0,10 = 2 300,14 ; × 118,5/116,5 = 2 339,63 $/m² ; C_N = 612 983 ; a_eff = 0,5×78 + 0712CALC-46-019,46,Dépréciation extraite du marché à 920 000 $ et terrain 279 000 $ : C_N − (P − V_L) < 0 (−4,6 %) ; terrain nécessaire pour égaler : 725 889 $ (2 342 $/m²),ch46_dossier.py::depreciation_extraite ; exercices()[7],test_ch46.py::test_cout,négative,−28016.50 ; 2341.58,verifie713CALC-46-020,46,Valeur pondérée 0,40 × 1 020 367 + 0,35 × 922 396 + 0,25 × 748 126 ; arrondi 5 000 $ ; fourchette ± erreur-type arrondie vers l'extérieur,ch46_dossier.py::reconciliation,test_ch46.py::test_reconciliation,918017 ; 920000 ; 870000-970000714CALC-46-021,46,Ratios implicites : $/logement ; $/m² ; MRB ; taux (contrat ; marché) ; ratio au rôle (× 1,08) ; écart avec ch. 32,ch46_dossier.py::reconciliation,test_ch46.py::test_reconciliation,306667 ; 3511 ; 21.99 ; 0.0246/0.0322 ; 1.86 (1.72) ; +50000,306666.67 ; 3511.45 ; 21.99 ; 0.02456/0.03215 ; 1.859 (1.721) ; 50000,verifie715CALC-46-022,46,Pondérations alternatives : 45/30/25 ; égale ; 60/40/0 ; 20/20/60 ; inverse variance (0,689/0,185/0,125),ch46_dossier.py::reconciliation ; exercices()[6],test_ch46.py::test_exercices_et_figures,922915 ; 896963 ; 981178 ; 837428 ; 968084716CALC-46-023,46,Mise de fonds minimale assurée à 920 000 $ = 0,05 × 500 000 + 0,10 × 420 000 ; prêt ; RPV,ch46_dossier.py::financement (ch32_plex.mise_de_fonds_minimale_assuree),test_ch46.py::test_financement,67000 ; 853000 ; 0.927,67000 ; 853000 ; 0.9272717CALC-46-024,46,Hypothèque 4,12 % composé semestriellement 300 mois : i_m ; versement ; service ; constante ; intérêts/capital an 1 ; solde 60 ; capital 5 ans ; solde final nul,ch46_dossier.py::financement (traite.finance.Hypotheque),test_ch46.py::test_financement,0.003406 ; 4542.61 ; 54511.37 ; 0.0639 ; 34473.28/20038.09 ; 744114.34 ; 108885.66 ; 0,0.0034042 ; 4542.61 ; 54511.37 ; 0.0639 ; 34473.28/20038.09 ; 744114.34 ; 108885.66 ; 0.00,verifie718CALC-46-025,46,Taux admissible minimal max(4,12 % + 2 % ; 5,25 %) = 6,12 % ; versement de référence,ch46_dossier.py (finance.taux_admissible_minimal),test_ch46.py::test_financement,0.0612 ; 5518.54719CALC-46-026,46,Droits de mutation Ville de Québec 2026 sur 920 000 $ (0,5/1/1,5/2,5/3 %) ; base = max(prix ; 495 000 × 1,08) ; liquidités = mise + droits,ch46_dossier.py::droits_mutation_quebec,test_ch46.py::test_financement720CALC-46-027,46,Coût net d'occupation RC = SD + DE' + 0,0358 × MF − loyers nets (2e + 3e × 12 × 0,97) ; mensuel ; hors capital (− capital moyen 5 ans / 12),ch46_dossier.py::financement (ch32_plex.cout_occupation),test_ch46.py::test_financement,44878.94 ; 3739.91 ; 1925.15,44878.94 ; 3739.91 ; 1925.15721CALC-46-028,46,Variantes de financement (30 ans ; 10 % ; 20 % non assuré 4,58 % ; +100 pb ; +200 pb) : versement et coût hors capital,ch46_dossier.py::financement (variantes) ; grille_cout_occupation,test_ch46.py::test_exercices_et_figures (figure),4114.30/1971.14 ; 4409.48/1919.79 ; 4106.36/2169.94 ; 5019.52/2606.57 ; 5518.54/3292.46,idem (script),verifie722CALC-46-029,46,Part du versement couverte par les loyers bruts des 2 logements conservés (2 439 / 4 542,61) ; RCD d'un investisseur RNE/SD,ch46_dossier.py::financement,test_ch46.py::test_financement,0.537 ; 0.41,0.5369 ; 0.4145,verifie723CALC-46-030,46,Reprise RC : Δ₁ = 383 × 12 × 0,97 ; VA 10 ans sans rotation (g_m 3,5 % ; g_TAL 3,1 % ; r 6 %) ; VA sous rotation 13 % (éq. 26 va-ecart) ; différence ; variantes 9,4 % et 20 %,ch46_dossier.py::va_ecart_rc ; exercices()[2],test_ch46.py::test_reprise724CALC-46-031,46,Exercice 5 au prix de 895 000 $ : mise 64 500 ; prêt 830 500 ; versement 4 422,79 ; TAM 5 372,98 ; droits 16 210,50 ; coût net 3 612,63 ; hors capital 1 845,74 ; 2e étage 3 749,40 / 1 982725CALC-46-032,46,Exercice 4 : RNE au ratio médian des ventes 40 577,04 × (1 − 0,357) = 26 091,04 ; capitalisation à 3,02 % = 863 880 ; taux implicite 2,56 % ; écart restant 46 pb,ch46_dossier.py::exercices()[4]726CALC-48-001,48,Sommaire du portefeuille : 48 immeubles ; 888 logements ; valeur 143 363 000 ; RNE 7 447 030 ; dette 85 766 000,analysis/python/cases/ch48_portefeuille.py,analysis/python/tests/test_ch48.py::test_sommaire_identites,48 ; 888 ; 143363000 ; 7447030 ; 85766000,48 ; 888 ; 143363000 ; 7447030 ; 85766000,verifie,2026-10-31727CALC-48-002,48,Taux global pondéré = RNE agrégé / valeur agrégée (eq. 48.taux-pondere) ; médiane et moyenne simple des 48 taux,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_sommaire_identites,"5,19 % ; 5,59 % ; 5,46 %","5,1945 % ; 5,585 % ; 5,456 %",verifie,2026-10-31728CALC-48-003,48,RPV agrégé 59,8 % ; valeur/logement 161 445 $ ; part de la valeur en zone inondable 6,66 % ; sols 3,54 %,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_sommaire_identites,"0,5982 ; 161445 ; 0,0666 ; 0,0354"729CALC-48-004,48,Sommaire par RMR (valeur Montréal 65 171 000 ; taux pondéré 4,49 % ; 206 237 $/log. ; Saguenay 6,39 % ; 101 969 $/log.),analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_sommaire_identites,"65171000 ; 0,0449 ; 206237 ; 0,0639 ; 101969","65171000 ; 0,044948 ; 206237,34 ; 0,063936 ; 101968,75"730CALC-48-005,48,Indices de Herfindahl (eq. 48.hhi) : par RMR 0,280 (n équiv. 3,6) ; par immeuble 0,0364 (27,5) ; part des 5 plus grands 30,8 %,analysis/python/cases/ch48_portefeuille.py731CALC-48-006,48,Régression semi-log du taux (eq. 48.modele) : coefficients identiques à traite.cas4.effets_regionaux ; Gatineau +19,6 % ; ln n −0,0315 ; inondable +7,9 % ; R² 0,883 ; sigma 0,0537 ; Duan 1,0011732CALC-48-007,48,P45 : taux prédit 5,461 % → valeur 6 716 534 $ (identique au ch. 33),analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_modele_de_masse_coherent_avec_cas4_et_ch33,"0,05461 ; 6716534","0,054610 ; 6716534,09",verifie733CALC-48-008,48,Somme des valeurs prédites 142 572 511 $ vs somme des indications 143 363 000 $ (−0,55 %),analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_modele_de_masse_coherent_avec_cas4_et_ch33,"142572511 ; −0,0055","142572510,99 ; −0,00551",verifie734CALC-48-009,48,Statistiques de ratio IAAO (traite.hedonique.statistiques_ratio) portefeuille : médiane 1,002 ; COD 3,83 ; PRD 1,005 ; PRB 0,001 (se 0,006),analysis/python/cases/ch48_portefeuille.py735CALC-48-010,48,Ratios extrêmes : P25 1,115 (7,00 vs 6,28 %) ; P28 0,904 ; P09 0,908 ; P15 1,085 ; P38 1736CALC-48-011,48,Croissance tendancielle du RNE agrégé 3,03 %/an (eq. 48.croissance) ; volatilité agrégée 1,34 % ; médiane immeubles 2,92 % / 3,23 % ; RNE 2016T1 annualisé 5 474 240 → 2026T2 7 447 028,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_dynamique_rne737CALC-48-012,48,Croissance agrégée par RMR : Gatineau 4,78 % ; Montréal 3,20 ; Québec 2,67 ; Sherbrooke 2,30 ; Trois-Rivières 2,15 ; Saguenay 1,53738CALC-48-013,48,Choc pandémique (eq. 48.choc) : portefeuille −2,53 % ; Québec −1,55 ; Trois-Rivières −4,01 ; variation glissante 4 trim. min −0,12 % (2021T1),analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_dynamique_rne739CALC-48-014,48,Corrélations des variations trimestrielles de ln RNE : intra-RMR 0,155 (221 paires) ; inter-RMR 0,171 (907) ; hors pandémie ≈ 0 ; agrégats régionaux 0,35 à 0,63,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_dynamique_rne740CALC-48-015,48,Risque inondation : 3 immeubles 9 546 000 $ (6,66 % valeur ; 7,6 % RNE) ; majoration du taux +7,86 % ; décote de valeur −7,29 % = e^{−β}−1 (eq. 48.decote) ; P36 +45 pb,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_risques_et_reconciliation741CALC-48-016,48,Risque sols : 2 immeubles 5 073 000 $ (3,54 %) ; majoration +5,50 % ; décote −5,21 % ; +26 pb,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_risques_et_reconciliation,"5073000 ; 0,0354 ; 0,0550 ; −0,0521 ; 26"742CALC-48-017,48,Dette (480 mois) : service 4 617 283 $ ; RCD agrégé 1,613 ; médian 1,798 ; min 0,939 (P16) ; 5 imm. < 1,20 (17 218 000 $) ; 1 < 1,00 ; constante pondérée 5,38 % ; levier négatif 20 imm. (57 % valeur)743CALC-48-018,48,P45 : SD 318 363 $ ; RCD 1,152 (480 mois) ; 0,954 (300 mois) — cohérent avec ch. 33 (1,15 / 0,95),analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_dette_identites744CALC-48-019,48,Échéancier : 2027 21 748 000 (25,4 %) ; 2028 30 867 000 (36,0 %) ; 2029 10 146 000 ; 2030 4 730 000 ; 2031 18 275 000 ; 2027-2028 = 61,3 %,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_dette_identites,"21748000 ; 30867000 ; 10146000 ; 4730000 ; 18275000 ; 0,613"745CALC-48-020,48,Renouvellement (eq. 48.renouvellement et 48.capacite) RNE constant : RCD agrégé +0/+100/+200 pb = 1,613/1,418/1,258 ; imm. < 1,20 : 5/7/16 ; < 1,00 : 1/4/7 ; injection 1 631 775 / 4 178 882 / 7 413 155 $,analysis/python/cases/ch48_portefeuille.py746CALC-48-021,48,Variantes : amortissement 300 mois (RCD 1,304 ; 13 < 1,20 ; 5 < 1,00 ; constante 6,66 % ; +200 pb RCD 1,094 injection 11 760 592) ; RNE croissant +200 pb (RCD 1,366 ; 10 ; 3 ; 5 395 891)747CALC-48-022,48,P45 renouvellement 2028 : solde 5 329 169 $ ; à 7,17 % sur 456 mois SD 404 324 $ ; RCD 0,907 ; capacité RCD 4 028 826 $ ; injection 1 300 342 $,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_dette_identites,"5329169 ; 404324 ; 0,907 ; 4028826 ; 1300342","5329168,74 ; 404323,53 ; 0,90719 ; 4028826,25 ; 1300342,49"748CALC-48-023,48,Monte-Carlo corrélation déclarée (10 000 tirages graine 20261031) : médiane 143 349 709 ; moyenne 143 527 636 ; écart-type 6 267 078 ; CV 4,37 % ; q05 133 506 790 ; q95 154 224 548,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_monte_carlo_reproductible_et_diversification,"143349709 ; 143527636 ; 6267078 ; 0,0437 ; 133506790 ; 154224548","143349709,0 ; 143527635,7 ; 6267077,6 ; 0,04366 ; 133506789,6 ; 154224547,5",verifie749CALC-48-024,48,VaR 95 % (eq. 48.var) : portefeuille 9 856 210 $ ; somme des VaR individuelles 14 283 432 $ ; ratio 0,690 ; indépendant 2 517 633 (0,179) ; parfait 14 296 704 (0,999) ; ES95 12 358 203,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_monte_carlo_reproductible_et_diversification,"9856210 ; 14283432 ; 0,690 ; 2517633 ; 0,179 ; 14296704 ; 0,999 ; 12358203"750CALC-48-025,48,Probabilités (déclaré) : RPV > 65 % 2,96 % ; > 70 % 0,03 % ; > 75 % 0 ; baisse > 10 % 0,83 % ; V < 130 M$ 1,27 % ; parfait : 9,78 / 0,68 / 4751CALC-48-026,48,Diversification par RMR : VaR Montréal 5 055 475 vs somme 6 526 478 (0,775) ; somme des VaR régionales 11 380 268 (0,797) ; portefeuille/régions 0,866,analysis/python/cases/ch48_portefeuille.py,script (impression),"5055475 ; 6526478 ; 0,775 ; 11380268 ; 0,797 ; 0,866"752CALC-48-027,48,Démonstration analytique (prop. 48.1) : sigma_ln individuel médian 0,0627 ; portefeuille 0,0389 (déclaré) ; parfait 0,0627 ; indépendant 0,0120,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_monte_carlo_reproductible_et_diversification753CALC-48-028,48,Allocation : classement par lambda = (R+g−3,84 %)/sigma et drapeaux ; conserver P10 P24 P02 P25 P39 P37 ; céder P46 P44 P28 P34 P41 P26 ; après cession 42 imm. 121 898 000 $ taux 5,30 % RPV 59,5 % produit net 7 795 700 $,analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_frontiere_et_allocation,"listes ; 121898000 ; 0,0530 ; 0,595 ; 7795700"754CALC-48-029,48,Frontière (eq. 48.frontiere) : mu RMR 7,70/8,44/10,22/8,04/8,44/7,93 % ; sigma 4755CALC-48-030,48,Réconciliation : valeur retenue 143 400 000 $ (arrondi 100 000) ; 161 486 $/log. ; taux implicite 5,19 % ; RPV 59,8 % ; MRB 11,25 ; fonds propres 57 634 000 ; fourchette MC −6,9 %/+7,6 %,analysis/python/cases/ch48_portefeuille.py756CALC-48-031,48,Exercice 1 (Sherbrooke) : taux pondéré 5,740 % ; moyenne simple 5,667 % ; médiane 5,71 % ; valeur au taux moyen 18 363 822 $ (+1,28 %),analysis/python/cases/ch48_portefeuille.py,test_ch48.py::test_sommaire_identites757CALC-48-032,48,Exercice 2 : taux prédit TR 24 log. inondable 6,841 % (sans Duan 6,833) ; hors zone 6,343 % ; Montréal 4,525 % ; valeurs 2 192 675 / 2 364 969 / 3 314 944 $ ; écart −7,29 % ; 49,8 pb758CALC-48-033,48,Exercice 4 : ratios IAAO Montréal (n = 17) médiane 1,007 ; pondéré 0,985 ; COD 4,37 ; PRD 1,016 ; PRB −0,015 (se 0,012)759CALC-48-034,48,Exercice 5 : P36 croissance 2,01 % volatilité 3,29 % ; Québec agrégé 2,67 % ; choc Québec −1,55 % ; R+g 8,15 %,analysis/python/cases/ch48_portefeuille.py760CALC-48-035,48,Exercice 6 : rho taux 0,90/0,95 : q05 131 200 853 ; q95 156 508 072 ; CV 5,39 % ; VaR 12 162 147 ; ratio 0,854 ; P(RPV>75 %) 0,analysis/python/cases/ch48_portefeuille.py,script (fonction exercices)761CALC-48-036,48,Exercice 7 : cession P36 P41 P43 : produit net 3 951 080 $ ; RNE perdu 566 928 ; reste 133 817 000 $ taux 5,14 % RPV 60,1 % RCD 1,587 ; CV 4,30 % ; VaR 9 058 169 ; ratio 0,694,analysis/python/cases/ch48_portefeuille.py762CALC-45-001,45,Entonnoir ch. 16 : 600 → 236 → 40 → 27 → 16 → 5 (G0574 G0404 G0468 G0477 G0575),analysis/python/cases/ch45_dossier.py (import ch16_selection via traite.cas1),test_ch45.py::test_selection_ch16,identique au ch. 16,identique,verifie,2026-10-31763CALC-45-002,45,Indication brute $/m² médian × 165 m²,ch45_dossier.heritage,test_selection_ch16,551 029,551 029.41,verifie,2026-10-31764CALC-45-003,45,Prix ajustés de la grille ch. 17,ch45_dossier.heritage (traite.cas1.ajustements_hedoniques),test_grille_ch17,640 247 / 541 222 / 572 793 / 568 853 / 584 862,identiques,verifie,2026-10-31765CALC-45-004,45,Poids inverse du brut et valeur pondérée (eq. 45.3-45.4),ch17_ajustements.reconcilier,test_grille_ch17,"0,179/0,327/0,202/0,159/0,133 ; 575 565",identiques,verifie,2026-10-31766CALC-45-005,45,Prédiction hédonique Duan ; IP 95 % ; IP 80 % ; IC 95 % de la valeur,ch18_hedonique.prediction_sujet ; ch20 ex2,test_hedonique_ch18,637 953 ; 539 682–749 087 ; 571 192–707 764 ; 625 586–650 596,identiques (IC ±5 $),verifie,2026-10-31767CALC-45-006,45,Coût neuf C_N = D(1+τ_I)(1+τ_E) (eq. 45.6),ch21_cout_neuf.cout_neuf_sujet,test_cout_ch21_ch24_ch25,"397 567,33 (D 298 826,17 ; I 62 598,68 ; E 36 142,49)",identiques,verifie,2026-10-31768CALC-45-007,45,"Dépréciation extraite 22,00 % = 87 461,05 ; salle d'eau 7 605,31 ; total 95 066,36 (23,91 %)",ch24_depreciation.main (via ch20),test_cout_ch21_ch24_ch25,identiques au ch. 24,identiques,verifie,2026-10-31769CALC-45-008,45,"Valeur par le coût 277 000 + 397 567,33 − 95 066,36 = 579 500,97 → 580 000 (eq. 45.7)",ch24_depreciation ; traite.cout.valeur_par_cout,test_cout_ch21_ch24_ch25,"579 500,97",identique,verifie,2026-10-31770CALC-45-009,45,Terrain : comparaison 267 388 ; hédonique 253 412 ; extraction médiane 276 954 (13 ventes) ; retenue 277 000,ch25_terrain.comparaison / extraction_recente_ch24,test_cout_ch21_ch24_ch25,identiques au ch. 25,identiques,verifie,2026-10-31771CALC-45-010,45,"Fiche ch. 11 : âge effectif 29 ; curable 10 479,98 ; ventilée 221 089,88 (55,61 %) ; indice 2,81",ch11_inspection.fiche/travaux/depreciation,test_inspection_ch11_mesurage_ch12,identiques au ch. 11,identiques,verifie,2026-10-31772CALC-45-011,45,"Superficies ch. 12 : 95,04 ; 190,08 ; 165 ; 159,9 ; 235 ; 22,33 ; 620",ch12_mesurage.superficies,test_inspection_ch11_mesurage_ch12,identiques au ch. 12,identiques (±0,01),verifie773CALC-45-012,45,"Rôle 468 000 ; valeur réelle 2024-07-01 573 000 ; PM 0,9244 ; F 1,0818 ; ratio 0,8168 ; compte 2026 4 076,01",ch09_ratios.etude/dossier_sujet,test_role_taxes_ch09,identiques au ch. 9,identiques,verifie,2026-10-31774CALC-45-013,45,"Réconciliation : 0,40/0,45/0,15 → 604 229,92 ; é.-t. 10 450 ; conclusion 605 000 ; fourchette 575 000–640 000 ; bande 90 % 590 000–625 000",ch20_reconciliation.tout,test_reconciliation_ch20,identiques au ch. 20,identiques,verifie,2026-10-31775CALC-45-014,45,Droits de mutation Gatineau 2026 à 605 000 (eq. 45.1) ; barème général,ch09_ratios.droits_mutation(BAREME_MUTATION_GAT / QC),test_mutation,"8 760,50 ; 7 185,50","8 760,50 ; 7 185,50",verifie,2026-10-31776CALC-45-015,45,Mise de fonds minimale 5 % × 500 000 + 10 % × 105 000 (eq. 45.8) ; prime 4 % (eq. 45.9),ch45_dossier.mise_de_fonds_minimale / taux_prime,test_mise_de_fonds_et_prime ; test_financement_minimal,35 500 ; 22 780,35 500 ; 22 780,verifie,2026-10-31777CALC-45-016,45,"Paiement mensuel 592 280 $ à 4,12 % (composition semestrielle) sur 300 mois (eq. 45.10) ; SD ; solde à 60 mois ; intérêts an 1",traite.finance.Hypotheque,test_financement_minimal,"3 154,16 ; 37 849,94 ; 516 675,31 ; 23 936,50",identiques,verifie,2026-10-31778CALC-45-017,45,"MQR max(4,12+2 ; 5,25) = 6,12 % (eq. 45.11) ; paiement 3 831,80 ; revenu min ABD 134 507 ; ATD 132 858 (eq. 45.12)",traite.finance.taux_admissible_minimal ; ch45_dossier.financement,test_financement_minimal,identiques,identiques (±0,05 $),verifie779CALC-45-018,45,"Variantes 10 % / 20 % / 30 ans : paiements 2 989,60 ; 2 700,38 ; 2 856,76 ; contrainte ATD à 20 %",ch45_dossier.financement,test_financement_variantes,identiques,identiques,verifie,2026-10-31780CALC-45-019,45,"Renouvellement +100/+200/+300 pb : 3 428,76 ; 3 714,57 (+17,8 %) ; 4 010,94",ch45_dossier.renouvellement,test_renouvellement,identiques,identiques,verifie,2026-10-31781CALC-45-020,45,Valeur du prêteur 575 000 : prêt max 546 250 ; mise 58 750 ; supplément 23 250,ch45_dossier.valeur_d_emprunt,test_valeur_emprunt,identiques,identiques,verifie,2026-10-31782CALC-45-021,45,"Exercices 1-7 (unités, mutation aux bornes, mises de fonds, valeur du prêteur, renouvellement, terrain, drain)",ch45_dossier.exercices,test_exercices,voir solutions/ch45.tex,identiques,verifie,2026-10-31783
Files · 380d4cc85d87848f79a44865d2c4ae6bad753c29
Menu

Theme