# Ce qui a été vérifié · What was verified

Deux vérifications indépendantes du notebook livré, le 4 octobre 2026 : une par un réviseur distinct (Codex, Python 3.12.7, machine de l'équipe), une au
moment de l'assemblage de ce dossier (Claude, Python 3.13.16, environnement propre avec les versions épinglées). Les deux donnent les mêmes chiffres.

Two independent checks of the delivered notebook, on 4 October 2026: one by a separate reviewer (Codex, Python 3.12.7, team machine), one when this
folder was assembled (Claude, Python 3.13.16, clean environment with the pinned versions). Both give the same figures.

## Chiffres reproduits · Reproduced figures

| Mesure · Measure | Valeur · Value |
|---|---:|
| Hausse effective 2026 · 2026 effective increase | **4.8047 %** |
| Hausse contractuelle 2026 · 2026 contractual increase | **6.3780 %** |
| Paires de baux consécutifs, même unité · Same-unit consecutive lease pairs | 3,179 |
| Rôle 2026 (baux à échéance connus au 31 déc. 2025) · 2026 roster (leases ending in 2026, known at 31 Dec 2025) | 928 units |
| Part attendue de renouvellements · Expected renewal share | 60 % |
| Trois lectures · Three readings (momentum / bridge / anchor) | 3.86 % / 7.52 % / 3.03 % |
| Par immeuble · By building (effective) | The Met 4.3 · Le Carlyle 4.5 · Lévesque 4.7 · Daniel-Johnson 4.9 · Saint-Elzéar 5.0 · Westpark 5.1 |

## Validation sur le passé · Backtest

Rejouée au 31 décembre de chaque année, contre ce qui s'est produit · Replayed as at 31 December of each year, against what happened:

| Année cible · Target year | Prévu · Forecast | Réel · Actual | Erreur · Error (pp) |
|---|---:|---:|---:|
| 2020 | 1.76 | 2.77 | −1.00 |
| 2021 | 2.74 | 3.75 | −1.01 |
| 2022 | 3.75 | 4.72 | −0.97 |
| 2023 | 4.47 | 2.18 | +2.29 |
| 2024 | 2.62 | 1.95 | +0.67 |
| 2025 | 2.93 | 3.83 | −0.90 |

| Erreur moyenne absolue · Mean absolute error (pp) | 2020–2025 | 2023–2025 (fenêtre exigée · required window) |
|---|---:|---:|
| Notre méthode · Our method | **1.14** | 1.29 |
| Moyenne historique · All-history average | 1.28 | **1.14** |
| Trois dernières années · Trailing three years | 1.41 | 1.42 |
| L'an dernier · Last year | 1.29 | 1.55 |

Lecture honnête : sur six ans la méthode bat les trois références simples; sur la fenêtre exigée 2023–2025, la moyenne historique fait mieux. Les deux
chiffres sont dans le notebook (section 7.5) et sur la diapositive 11. · Honest reading: over six years the method beats the three simple references;
on the required 2023–2025 window the all-history average does better. Both figures are in the notebook (section 7.5) and on slide 11.

## Tests et exécution · Tests and execution

- 84 tests automatiques, tous réussis, dans les deux environnements · 84 automated tests, all passing, in both environments
  (`04_Technique_Technical/Code_complet_modules_et_tests_Full_code_and_tests/Competition Submission/tests`).
- Les deux notebooks s'exécutent de bout en bout sans erreur (38 cellules de code chacun), en moins d'une minute · Both notebooks run end to end with no
  error (38 code cells each), in under a minute.
- Les quatre CSV du concours lus à l'exécution sont ceux du paquet officiel (mêmes SHA-256 que `manifest.json` de JADCO) · The four competition CSVs read
  at run time are those of the official package (same SHA-256 as JADCO's `manifest.json`).
- Aucune sortie de notebook n'affiche une ligne du CRM (test `test_no_crm_row_dump_and_no_errors_in_outputs`) · No notebook output shows a CRM row.
- `MANIFEST.sha256.json` à la racine donne l'empreinte de chaque fichier de ce dossier · `MANIFEST.sha256.json` at the root gives the hash of every file in this folder.

## Limites, dites clairement · Limits, stated plainly

- Les six années de backtest ont toutes été examinées pendant le développement : c'est une validation rétrospective, pas un jeu de test jamais vu. ·
  All six backtest years were looked at during development: this is retrospective validation, not a never-seen test set.
- L'enveloppe 2,5 %–7,1 % autour de 4,80 % est « centrale ± plus grande erreur annuelle passée ». Ce n'est pas un intervalle de confiance; la bande de la
  simulation Monte Carlo (diapositive 13, module `simulation.py`) n'a couvert le réel que 2 années sur 5. · The 2.5%–7.1% envelope around 4.80% is "central ± largest past annual error". It is not
  a confidence interval; the Monte Carlo simulation band (slide 13, module `simulation.py`) covered the actual outcome in only 2 of 5 years.
- « Perçu » / « encaissé » / « collected » désigne le champ `sRentEffective` fourni (loyer après concessions enregistrées), pas un relevé d'encaissements.
  Le film d'une minute dit « what tenants actually paid » : il faut l'entendre dans ce sens. · "Collected" means the supplied `sRentEffective` field (rent
  after recorded concessions), not a cash-receipts ledger. The one-minute film says "what tenants actually paid": read it in that sense.
- L'ajustement de concession par immeuble (section 8b) réconcilie les deux prévisions du modèle; ce n'est pas une mesure causale isolée des mois gratuits. ·
  The per-building concession adjustment (section 8b) reconciles the model's two forecasts; it is not an isolated causal measure of free months.
- Le pourcentage de base du TAL (3,1 % pour 2026) n'est pas un plafond, et il a été publié après l'origine du 31 décembre 2025 : il sert de scénario,
  pas d'intrant. La date de première occupation de The Met (exemption ontarienne) n'est pas dans l'extrait. · The TAL base percentage (3.1% for 2026) is
  not a cap, and it was published after the 31 December 2025 origin: it is used as a scenario, not as an input. The Met's first-occupancy date (Ontario
  exemption) is not in the extract.
- `PromoPay` est interprété comme un crédit unique par bail (ce que les fréquences observées soutiennent); cela reste une hypothèse de travail à confirmer
  par JADCO. · `PromoPay` is read as a one-time credit per lease (which the observed frequencies support); it remains a working assumption for JADCO to confirm.
- Cet extrait ne permet pas de calculer l'occupation, l'inoccupation ou l'absorption; aucun de ces chiffres n'est cité. Le « taux d'inoccupation » de la
  simulation facultative est une hypothèse synthétique, étiquetée comme telle. · This extract cannot give occupancy, vacancy or absorption; none is quoted.
  The "vacancy rate" in the optional simulation is a synthetic assumption, labelled as such.
- Les 150 résidents de la simulation sont fictifs : une démonstration d'orchestration logicielle, pas un comportement observé de locataires. · The 150
  residents in the simulation are fictional: a demonstration of software orchestration, not observed tenant behaviour.
