SPB Git

Repository Public Research preview

RAPPORT_CONTRE_VERIFICATION.md 16.0 KB

# Rapport de contre-vérification — Agent 8 (révision indépendante, volet numérique)

Date : 2026-11-02. Objet : verification_calculs.py → resultats.json / RESULTATS_CALCULS.md (séances refondues IMM1003 S08–S09 et IMM1033 S08). Script de contre-calcul : contre_verification.py (même dossier). Aucune sortie du moteur n'a été modifiée ; les points relevés sont signalés, non corrigés.

# 1. Méthode

  • Lecture de RESULTATS_CALCULS.md et du code source du moteur, uniquement pour fixer les conventions (catalogue d'ajustements, séquence 5 transactionnels puis 8 lignes de propriété additives, signe « comparable → sujet », temps = prix courant × 0,17 % × mois, localisation ± 5 % du prix ajusté transactionnel, terrain 6 $/pi² si |écart| ≥ 1 000 pi², net/brut sur tous les ajustements en % du prix de vente, arrondi ROUND_HALF_UP au dollar ligne par ligne, valeur conclue au 5 000 $ ; chaîne IMM1033 : directs nus → +8 % CG → +7 % FG → +8 % profit EG, contingences 5 % des nus, permis MAX(4,70 ‰ × (D+C) ; 335 $ × logements), GCR 2 656,68 $/unité si ≤ 5 logements, intérêts (D+C) × i × T/12 × ½ avec i = 4,70 + 2,05, honoraires 4 % des directs du cours, assurance 0,8 % de D+C, juridique forfait, profit 11 % de l'assiette ; méthode par période ; TPS/TVQ ; équivalence au comptant).
  • Écriture de contre_verification.py en Python pur : aucune importation du moteur, données d'entrée recopiées des énoncés (sujets, comparables, catalogue, paramètres 1033, divisions des directs nus, ventes du marché, aires et résidus de la régression), fonctions réécrites de zéro (grille, réconciliation, équivalence au comptant avec facteur d'annuité en somme explicite, OLS, chaîne de coût, calendrier par période, taxes).
  • Comparaison à resultats.json : tolérance 1 $ sur les montants, 0,05 point sur les pourcentages à 0,1, 0,01 sur les coefficients et pourcentages à 0,01. Les 51 contrôles « verifications_originaux » ont été recalculés de façon autonome (valeur recalculée et verdict ✓/✗), sans réutiliser les formules du moteur.
  • Exécution : python3 contre_verification.py (affiche les écarts seulement) ou --tout (tableau complet « élément | moteur | contre-calcul | écart | verdict »).

# 2. Bilan chiffré

Volet Valeurs contrôlées OK Écarts
Catalogue (cohérence des entrées) 7 7 0
IMM1003 S08 — 4 grilles ligne par ligne (130), réconciliation (10), exemples des critères (19) 159 159 0
IMM1003 S09 — 5 grilles (162), réconciliation ± C4 (13), sensibilités (10), régression (8), paires (6), revente (3), capitalisation (1), équivalence au comptant (5), ordre séquentiel/additif (3), valeurs aberrantes (7), ex. % vs $ (1) 219 219 0
IMM1033 S08 — chaîne (22 + 5 GCR + ratios), intérêts simplifiés + 2 calendriers de 14 lignes (121), sensibilités taux/durée (18), retard (4), extraction marché (16), taxes 4 scénarios + locatif (41), honoraires (6), profit vs marge (7), exemples simples (7) 260 259 1
Vérification des decks originaux (51 contrôles : valeur recalculée + verdict + 3 compteurs + 1 contrôle supplémentaire) 103 102 1
Total 748 746 2

Aucune valeur numérique produite par le moteur ne diffère de mon contre-calcul (les deux écarts portent sur un contrôle mal construit et sur une note textuelle, voir § 3) : les 9 grilles (chaque ligne, cumul, prix ajusté transactionnel, total de propriété, indication, net/brut en $ et %, seuils, $/pi²), les réconciliations (435 289 → 435 000 $ ; 446 081 → 445 000 $ ; sans C4 449 149 → 450 000 $), les dix sensibilités S09, la régression (β0 = 247 673, β1 = 151,91, R² = 0,81, t = 6,61, σ = 7 972), les paires, la revente (4,05 % ; 2,00 %/an composé ; 0,17 %/mois simple), la capitalisation (25 714 $), les équivalences au comptant (8 170 $ à 3 ans ; 12 988 $ à 5 ans), l'exemple d'ordre (397 800 vs 398 000, écart −200), les 21 postes de la chaîne IMM1033 (coût total 1 246 774 $ ; 230,88 $/pi² hors sol ; 173,16 $/pi² brut ; 207 796 $/logement ; GCR applicable → 1 264 468 $), les intérêts (40 122 / 38 107 / 38 002 $) et les 28 lignes de calendrier, les sensibilités, le retard de 6 mois, l'extraction (médiane 1 325 000 $, 18,0 %, −5,9 %), les 5 scénarios de taxes, les 4 méthodes d'honoraires, profit vs marge (9,91 % ; 138 825 $ ; 12,36 %) et les exemples simples (124 805 ; 1 304 / 3 760 / 335 ; 15,7 %) sont exacts au dollar.

Cohérence interne vérifiée : poids = 100 (S08, S09, S09 sans C4) ; valeurs conclues dans l'étendue des indications ; signes conformes (C3 S08, « supérieur » sur tous les attributs, reçoit −94 617 $ ; C2 S08, inférieur, +45 500 $) ; cascade 1,08 × 1,07 × 1,08 = +24,80 % ; permis : le proportionnel (4 789 $) l'emporte sur le minimum (2 010 $) ; Σ divisions = 785 000 $ ; marge 11/111 = 9,91 % ; GCR exclu (6 > 5) ; JVM/logement 242 796 $ ≥ 225 000 $ → remboursement TVQ locatif nul ; seul C4 dépasse le seuil de 10 % des valeurs aberrantes ; aucun double comptage mécanique détecté (chaque attribut n'est ajusté qu'une fois ; le financement est retranché avant le temps, conformément à la séquence).

# 3. Les deux écarts relevés et les points du tableau de vérification des decks

# 3.1 Écart (1) — contrôle « hypothèque 400 000 $ assumable 2 % vs 5 % — deck 12 000 $ » (IMM1003 S09 original)

Le moteur déclare ce contrôle ✓ en comparant les 12 000 $ du deck à equivalence_comptant(100 000 $, 2 %, 5 %, 5 ans) = 12 988 $ (tolérance 1 000 $). Or le deck parle d'une hypothèque de 400 000 $. Recalculé sur 400 000 $ (mêmes hypothèses : intérêts seulement, 5 ans, marché 5 %), l'avantage est de 51 954 $ ; avec un amortissement classique sur 25 ans et un terme de 5 ans, le différentiel d'intérêts de 3 points actualisé reste de l'ordre de 50 000 $. Le « ✓ » est donc un faux positif du tableau de vérification (erreur de contrôle, pas d'arithmétique) : le 12 000 $ du deck original n'est pas étayé et ne devrait pas être présenté comme vérifié. Il faudrait soit poser explicitement « solde 100 000 $, 5 ans » dans la diapositive, soit refaire le calcul sur 400 000 $.

# 3.1 bis Écart (2) — note textuelle « ≈ 231 000 $/logement » (taxes, locatif 6 logements)

La note du scénario locatif_6_logements justifie le remboursement TVQ nul par une JVM « ≈ 231 000 $/logement ». Or la base retenue par le moteur lui-même est 1 456 774 $ (coût total + terrain), soit 242 796 $/logement (1 246 774 / 6 = 207 796 $ sans terrain). La conclusion (≥ 225 000 $ → 0 $) ne change pas, mais le chiffre cité dans la note est faux (probablement un reliquat d'une version antérieure du cas). Erreur de texte du moteur, à corriger dans la note.

# 3.2 Autres observations sur les 51 contrôles (tous recalculés ; verdicts concordants sauf 3.1)

  • « temps C1–C4 (5 %/an) » : les valeurs exactes sont 3 625 / 6 917 / 1 917 / 10 625 $ ; le moteur les arrondit à la centaine (3 600 / 6 900 / 1 900 / 10 600) avant de conclure ✓. Le deck original arrondissait, c'est acceptable, mais le .md affiche « Recalculé 3 600 » comme si c'était la valeur exacte.
  • Les 4 ✗ arithmétiques du moteur sont confirmés : reprise 100 000 $ (10 000 vs 8 170 / 12 988 $), remboursement TVQ à 350 000 $ (9 975 vs 0 $), taxes nettes (36 138 vs 46 112,50 $).
  • « taux directeur 2,25 % » : contrôle factuel, non calculable. Vérifié en ligne : Desjardins (étude économique du 28 oct. 2026) rapporte une hausse de 25 pb à 2,50 %, première hausse depuis juillet 2023 ; RBC et nesto, pré-décision, affichaient 2,25 %. Une seule source post-décision : à confirmer sur le site de la Banque du Canada avant publication. Le préférentiel 4,70 % et la prime de 2,05 % ne sont pas sourcés dans le moteur (« approximation »).
  • « honoraires / directs 8 logements 18,8 % » et « assurances/légal 35 500 $ dont GCR 15 000 $ pour un 6 logements » : exacts arithmétiquement, mais la note du moteur a raison de les juger invraisemblables (GCR non applicable à 6 logements).

# 4. Remarques de plausibilité et d'hypothèses

  1. Temps +0,17 %/mois (+2 %/an) alors que le marché de Gatineau se détend. Le communiqué APCIQ du 14 octobre 2026 indique que « la détente du marché freine les prix » dans la RMR de Gatineau au T3 2026. Un taux positif de 2 %/an appliqué à des ventes de mars à août 2026 gonfle toutes les indications (de 2 346 à 6 148 $ par comparable). La sensibilité calculée par le moteur le montre : à 0 %/mois la valeur pondérée S09 tombe à 441 591 $ (−4 490 $) et à −0,25 %/mois à 434 988 $ (−11 093 $), soit un cran de 5 000 $ sur la valeur conclue (440 000 ou 435 000 $ au lieu de 445 000 $). Le taux doit être sourcé (Baromètre APCIQ T3 2026, Gatineau) ou présenté comme hypothèse de cours assumée, et l'exercice de sensibilité devrait être exploité en classe.
  2. Base des intérêts intercalaires. La formule (D+C) × i × T/12 × ½ ne porte que sur les directs et contingences : elle exclut le terrain (210 000 $, décaissé au jour 1 et portant intérêt sur toute la durée : ≈ 16 500 $ à 6,75 % sur 14 mois si financé), les honoraires (39 189 $, engagés en amont), le permis et l'assurance. C'est la convention du TP2 et elle est appliquée correctement, mais le cours devrait dire explicitement que c'est une approximation minorante. Par ailleurs, la méthode par période (38 107 $ linéaire, 38 002 $ en S) est inférieure de 5 % à la méthode ½ (40 122 $) parce que les décaissements sont supposés en fin de mois (solde moyen 13/28 au lieu de ½) : si l'on décaisse en début de mois, la méthode par période donne plus que 40 122 $. Le sens de l'écart dépend donc d'une convention de timing, ce qui mérite une phrase dans la diapositive.
  3. Temps calculé sur un prix déjà corrigé (séquence). Pour C3 S09, l'ajustement de temps (5 236 $) est calculé sur 440 000 $ (prix + toiture 15 000 $), et pour C1 S09 sur 401 830 $ (après financement). C'est conforme à la séquence annoncée, mais discutable pour les dépenses après achat (le marché n'a pas « apprécié » une dépense future). L'écart est faible (178 $) ; à expliciter plutôt qu'à changer.
  4. Convention net/brut. Les grilles refondues incluent le temps et le financement dans le net/brut (C1 S09 brut 15,9 % dont 8 170 + 6 148 $ transactionnels), alors que le deck S09 original les excluait (7,9 / 11,8 %). Il faut une seule convention dans les trois séances et dans le TP2. Deux comparables dépassent le seuil net de 15 % (C3 S08 −20,1 % ; C4 S09 −16,6 %) et sont néanmoins conservés à 5 % : cohérent avec le discours « poids faible », mais le corrigé doit dire pourquoi on ne les écarte pas.
  5. Chevauchement âge / état. Le catalogue cumule −2 000 $/an d'âge et −8 000 $ pour « très bon » état (C3 S08 : −3 ans d'écart mais +6 000 $ d'âge car le comparable est plus vieux, −8 000 $ d'état ; C4 S09 : −6 000 $ d'âge et −8 000 $ d'état, plus −5 % de localisation et −22 500 $ d'aire). Il n'y a pas de double comptage mécanique, mais les deux attributs sont corrélés ; la grille d'état est asymétrique (très bon −8 000, moyen +12 000) sans justification affichée.
  6. Extraction du profit. Les quatre ventes (hypothèse pédagogique) impliquent des profits de 12,6 à 22,0 % (médiane 18,0 %) contre 11 % retenu, et un coût total inférieur de 5,9 % au bâtiment implicite médian. Cohérent, mais le cours doit expliquer pourquoi 11 % est retenu (ou présenter 11 % comme borne basse). Le ratio indirects/directs de 10,6 % est plausible ; les 8,4 % d'indirects et 9,9 % de profit sur le total aussi.
  7. Équivalence au comptant. Le modèle « intérêts seulement, capital à l'échéance » convient à un solde de prix de vente (C1 S09), pas à une hypothèque assumable amortie (deck S09, voir 3.1). Le facteur d'annuité est affiché arrondi (2,72 ; 4,33) mais utilisé en pleine précision : un étudiant qui refait le calcul avec 2,72 obtient 5 440 $ au lieu de 5 446 $ (écart 6 $, sans effet après arrondi au 5 000 $).
  8. TPS/TVQ. Les seuils (TPS 36 % max 6 300 $, dégressif 350–450 k$ ; TVQ 50 % max 9 975 $, dégressif 200–300 k$ ; remboursement « premier acheteur » 100 % ≤ 1 M$) sont conformes aux règles que je connais ; le remboursement TVQ locatif (36 %, max 7 182 $, nul si ≥ 225 000 $/logement) aussi. La base locative « JVM = coût total + terrain » est une approximation (la JVM à l'achèvement est une valeur de marché, pas un coût) ; avec le marché du cas (≈ 1 325 000 $ bâtiment + terrain) la TPS/TVQ brute serait plus élevée, le résultat net (TPS 0 $, TVQ non remboursée) reste le même.
  9. GCR et permis. La prime GCR (2 656,68 $/unité) et la portée « ≤ 5 logements » n'ont pas pu être confirmées en ligne (sources contradictoires sur les plex de 5 logements ; tarif 2026 non trouvé) : à vérifier sur garantiegcr.com. Le permis est calculé sur (D+C) incluant contingences et profit de l'entrepreneur général ; la Ville de Gatineau tarifie sur la valeur déclarée des travaux, ce qui peut différer : à expliciter.
  10. Présentation des calendriers. Les 14 décaissements arrondis du calendrier linéaire somment à 1 018 962 $ (écart −6 $ sur D+C) et ceux de la courbe en S à 1 018 968 $ ; l'intérêt du mois 1 est nul par construction (décaissement en fin de mois). À mentionner sous le tableau pour éviter les questions d'étudiants. De même, l'étiquette « × 0,17 % » est figée dans le libellé de la ligne « 5. Temps » même quand le taux varie dans les sensibilités (sans effet sur les chiffres publiés).
  11. Ordres de grandeur. 348–352 $/pi² pour un bungalow de 1 200 pi² à Hull et 290 $/pi² pour le sujet S09 (445 000 / 1 500) sont plausibles pour 2026 ; 230,88 $/pi² hors sol pour un six logements neuf de 5 400 pi² (207 796 $/logement) est dans la fourchette basse mais défendable pour une construction bois/brique sans ascenseur. Le rôle 2025 du sujet S09 (385 000 $) vs valeur conclue 445 000 $ (+15,6 %) est cohérent avec un rôle établi au 1er juillet 2023.

# 5. Conclusion

Le moteur est numériquement exact : 746 valeurs sur 748 concordent au dollar (ou au centième de point) avec un recalcul entièrement indépendant ; les deux divergences sont un contrôle mal construit du tableau « Vérification des decks originaux » (hypothèque de 400 000 $ validée à partir d'un cas de 100 000 $, qui devrait passer de ✓ à « non étayé ») et une note textuelle erronée (« ≈ 231 000 $/logement » au lieu de 242 796 $, sans effet sur le résultat). Les conventions sont appliquées de manière uniforme et la cohérence interne (signes, poids, étendues, cascade, minimum du permis, divisions, marge) est confirmée. Les réserves portent sur des hypothèses à sourcer ou à expliciter dans les diapositives : taux de temps +2 %/an dans un marché en détente, base et timing des intérêts intercalaires, convention net/brut, prime GCR et taux préférentiel/prime, profit 11 % vs 18 % extrait du marché. Aucune modification de verification_calculs.py n'est requise pour les chiffres ; une correction du contrôle 3.1, de la note 3.1 bis et des notes de présentation (arrondis des contrôles « temps 5 %/an », sommes des calendriers) sont recommandées.

Sources consultées : Desjardins — BdC 28 octobre 2026 ; nesto — calendrier BdC 2026 ; APCIQ / Le Soleil, communiqué du 14 oct. 2026 ; RBQ — plan de garantie.

Files main
Menu

Theme