# Progress — WP18 ## 2026-10-20 — Phase 0 (setup) - Dépôt créé depuis le gabarit UQO (HARMONISATION.md), dépôt spbgit wp18_uqo.git, CLAUDE.md déposé. ## 2026-10-20 — Phase 0 (audit de style) : FAIT - Les 17 WP locaux (`immobilier/*`, `finance/*`) et le gabarit `_modele-working-paper/` inspectés (préambule, métadonnées \WP…, sections, flottants, bibliographie, annexes, latexmk ; lecture détaillée WP2, WP5, WP8, WP10, WP16). Aucun fichier manquant. - Livrable : `research/wp_style_audit.md` — couverture/numéro, typographie, résumé/mots-clés/JEL, structure des sections adaptée à un papier théorique, figures/tables (fragments générés + macros `numbers.tex` comme WP16), citations natbib/aer, annexes, compilation ; **convention amsthm proposée** (Assumption/Definition en style `definition`, Proposition/Lemma/Corollary/Theorem en `plain`, Remark, `proof` dans `appendix_proofs.tex`, numérotation globale comme WP8) ; dérogations à consigner dans le README. - Preuve : grep des 17 `main.tex` (15/17 `\bibliographystyle{aer}` ; WP8 seul avec `\newtheorem`), pages PDF 39–82. ## 2026-10-20 — Phase 1 (revue de littérature vérifiée + nouveauté) : FAIT - Méthode : 131 requêtes Crossref (`query.bibliographic`, rows 3–4, JSON brut par entrée dans `research/verification/*.crossref*.json`), résolution doi.org testée sur 12 DOI (302 vers l'éditeur), pages Banque du Canada / Statistique Canada / SCHL / NBER / AEA / IDEAS lues pour 38 résumés. Outil OpenAlex indisponible (MCP fermé) ; SSRN/ScienceDirect 403. - Livrables : `research/literature_matrix.csv` (**72 références vérifiées**, 66 avec DOI, 6 avec URL officielle), `paper/references.bib` (72 entrées, mêmes données ; compilation test natbib+aer : 0 avertissement BibTeX), `research/literature_review.md` (≈4 300 mots, 9 sections par mécanismes + lacunes), `research/novelty_matrix.csv` (4 contributions × 5 papiers les plus proches, verdicts), `research/inaccessible_sources.md` (2 sources du brief non identifiées — Uzeda, Alexander & Bazel ; 3 BoC/WP non vérifiables écartés ; 26 références vérifiées mais périphériques, réintégrables). - Verdicts de nouveauté : (i) seuil d'accession — **incrémental** (Ortalo-Magné & Rady 2006, KMV 2020, FLVN 2017 ; nouveau = héritage + secteur locatif + caractérisation analytique conditionnelle à la segmentation/offre) ; (ii) persistance — **nouveau en théorie, établi empiriquement** (Daysal et al. 2023, Charles & Hurst 2002 ; multiplicité à ne pas promettre) ; (iii) inflation surprise — **incrémental** sur la revalorisation directe (Doepke-Schneider, GKS 2017, Meh et al. 2010), **potentiellement nouveau** sur la marge d'entrée et le terme de 5 ans canadien ; (iv) offre × contrat → mobilité — **incrémental** (KMN 2011, Grossmann et al. 2021, Chambers et al. 2009), nouveau seulement comme statique comparative d'une mesure de mobilité. - Blocages : aucune source vérifiée d'élasticité de l'offre canadienne (paramètre illustratif à prévoir) ; « Uzeda » et « Alexander & Bazel » à préciser par l'auteur ; Muellbauer et al. 2015 (BoC) à revérifier pour la calibration. - Prochaines étapes : Phase 2 (spécification du modèle, agent parallèle) doit (1) rendre explicite le paramètre de segmentation propriétaire/locatif et l'élasticité de l'offre, (2) tenir le processus de revenus fixe entre quantiles d'héritage dans la base, (3) prévoir trois contrats (FRM long, FRM renouvelable 5 ans, ARM) et deux régimes d'indexation des loyers pour toute expérience d'inflation, (4) formuler (ii) comme distribution stationnaire à deux classes de tenure avec demi-vie, sans promettre la multiplicité. ## 2026-10-20 — Phase 2 (modèle, propositions, preuves, benchmark 2-3 périodes) : FAIT - **Modèle** : `research/model_specification.md` (≈7 300 mots). Partie A = benchmark à trois étapes de vie (acheteur / payeur / vendeur-donateur) et générations de deux périodes, transfert inter vivos reçu au moment de l'achat, demande unitaire de logement, hypothèque nominale (principal `B_nom = P(1-θ)p`, amortissement `a` à l'étape 2, FRM vs ARM/terme renouvelé), dépôts nominaux, prêteur risque-neutre (résidu des réévaluations), marchés propriétaire et locatif segmentés avec élasticités `ε`, `ε_r`, indexation salaires/loyers `η_w`, `η_ρ`. Partie B = modèle OLG complet directement implémentable (J = 12 périodes de 5 ans, revenu de Markov Rouwenhorst, tailles de logement avec minimum, hypothèques nominales à paiement constant sur N périodes, FRM/ARM/terme-k, refinancement, LTV + DSTI nominal, don à j_g = 7 et succession à J, bailleurs avec arbitrage et paramètre de segmentation σ, construction stock-flux, prêteur avec bilan, ERC stationnaire + transition MIT, états/grilles/EGM/Young/Broyden, statistiques de mobilité et bien-être). - **Propositions et preuves** : `paper/appendix_proofs.tex` (amsthm : 6 hypothèses, 2 lemmes, 9 propositions, 1 corollaire, 3 remarques de lacunes ; compilable seul via `cd paper && latexmk -pdf appendix_proofs_standalone.tex`, 12 p., 0 référence non définie ; artefacts nettoyés, PDF non commité conformément à HARMONISATION §2). Résumé des statuts : `research/propositions.md`. Hypothèses abandonnées/affaiblies : `research/failed_hypotheses.md`. - **Résultats analytiques** : (1) seuil d'accession fermé `b̂ = (dp − Λρ)/(1−Λ) − y_1` = borne de faisabilité + composante de préférence (consommation du marginal) ; (2) signes : ↑ en p, θ, κ_b, κ_s, m, π̄ anticipée (effet de « tilt »), ↓ en ρ, χ, y_1 — tous des effets de liquidité (neutres pour un ménage non contraint, Prop. 3) ; (4) multiplicateur de levier `(1−κ_s)/d`, seuil de croissance d'équilibre `g*` **indépendant du LTV**, seuil de dette négative `x*` ; (5) persistance intergénérationnelle fermée `λ = G(ŷ_R) − G(ŷ_R − e_3 p)` = corrélation de tenure parent-enfant, demi-vie, nulle si la maison n'est pas une richesse nette en fin de vie ; (6) existence de l'équilibre stationnaire (TVI) et unicité sous la condition de dominance (C) ; corollaire offre fixe (taux de propriété figé, prix et composition absorbent tout) ; (7) neutralité des prix sans segmentation ; (8) comptabilité de l'inflation surprise : FRM = ARM pour une surprise de niveau, FRM > ARM pour une surprise persistante, l'ARM perd à l'étape 3 ssi φ_r > R, identité à somme nulle avec le prêteur, condition exacte de gain ; (9) impact GE d'une surprise : dp ≥ 0, dρ ≤ 0, dμ ≥ 0 (= 0 à stock fixe : effet de composition pur), seuil ↑, mobilité ascendante q_RO ↓, persistance λ ↑, vendeurs gagnants, nouveaux acheteurs perdants possibles. - **Benchmark numérique** : `src/toy_model.py` (formules fermées HTM, optimiseur général pour *vérifier* A4 et non la supposer, chaîne dynastique, équilibre stationnaire, comptabilité, impact GE, simulation myope diagnostique) ; `tests/test_toy_model.py` : **44 tests passent** (`.venv/bin/python -m pytest tests/` ; venv `.venv` avec numpy 2.5.4, scipy 1.18.1, pytest 9.1.1 épinglés dans `requirements.txt`) : identités budgétaires état par état (2 tenures × 2 contrats × 3 surprises × 2 expériences), trajectoire dette nominale/réelle, identité de Fisher, seuil fermé = seuil optimisé (1e-14), inégalités d'Euler strictes sur le support des transferts, croisement unique, signes des 9 statiques comparatives, chaîne de Markov (valeur propre, distribution stationnaire), apurement des deux marchés, condition (C), offre fixe, non-segmentation, somme nulle, ordre FRM/ARM, signes d'impact, impact croissant quand l'offre est moins élastique, transition myope = impact puis retour. - **Résultats surprenants ou négatifs** : le seuil de croissance d'équilibre ne dépend pas du levier ; la persistance par classes absorbantes est un cas limite sans risque (remplacée par une demi-vie) ; sans segmentation, ni crédit, ni héritage, ni inflation ne bougent les prix ; les effets GE d'une surprise de 10 % sont minuscules dans le benchmark (dp = +0,03 %) parce que le prix absorbe le déplacement de demande ; une version à deux périodes a été abandonnée (hypothèque-ballon ⇒ richesse immobilière nette négative) ; la simulation myope montre une oscillation d'éviction entre cohortes (unités détenues deux périodes, valeur propre ≈ −1) à surveiller en Phase 3. - **Hypothèses fortes** : A4 (ménages contraints à la marge, vérifiée numériquement dans le benchmark mais à vérifier dans le modèle complet), A6 (anticipations statiques pour l'impact), demande unitaire de logement, prêteur extérieur au système dynastique, offre « par période » en Partie A. - **Prochaines étapes (Phase 3)** : implémenter la Partie B selon §B.9–B.12 ; vérifier A4 au seuil, le croisement unique pour les épargnants, la condition (C) le long de la courbe d'apurement et chercher des équilibres multiples sous offre quasi fixe ; transition à anticipations parfaites avec stock durable ; expériences 1–10 du CLAUDE.md ; ne jamais étiqueter GE un résultat à prix fixes. ## 2026-10-20 — Phase 3 (implémentation numérique) : EN COURS ### Jalon 3.0 — conception (écrit avant le code) - Modèle implémenté = Partie B de `model_specification.md` avec les réductions suivantes, toutes documentées dans `configs/baseline.yaml` et `research/results_audit.md` : 1. **État** `(j, z, h, b^m, n_m, a)` ; le taux contractuel FRM n'est pas un état : en transition, `n_m` et la date `t` identifient la date d'origination et donc le taux (refinancement = nouvelle origination). 2. **Branches** : stay / refinance / move / sell-and-rent / rent / buy. Toutes les branches sauf *stay* ne dépendent de l'état que par le **cash-on-hand** → fonctions de valeur `W^B_j(z,x)`, `W^R_j(z,x)`, `W^F_j(z,h,x)` sur une grille de cash ; *stay* sur la grille d'état complète. VFI rétrograde par âge avec recherche sur grille de `a'` (EGM non retenu : choix discrets × contraintes LTV/DSTI × hypothèque sur grille rendent l'enveloppe supérieure plus fragile que la recherche exhaustive, et le coût numba de la recherche est faible). 3. **Distribution** : panel Monte-Carlo de dynasties (paires parent–enfant, phases équiréparties, graine fixe, nombres aléatoires communs) plutôt qu'un histogramme de Young : le lien dynastique (don à l'âge 1 ET succession à l'âge 7, corrélés par l'état du parent) exige la loi jointe parent–enfant, que l'histogramme ne porte pas. Sensibilité à la taille du panel rapportée (exp. 10). 4. **Anticipation de la succession** : loterie à K = 5 points (moyennes conditionnelles par quintile de la distribution simulée des successions), objet d'équilibre (inconnue du Broyden) ; approximation : l'anticipation est inconditionnelle à l'état propre (le lien réalisé est exact dans le panel). 5. **Contrats** : FRM (taux d'origination à vie), TERM5 (k = 1 : réinitialisation à chaque frontière de période = ARM à la fréquence quinquennale, cf. §B.5), ARM (variante stylisée : repricing intra-période, aucune érosion). En ERC stationnaire les trois sont identiques ; ils ne diffèrent qu'en transition. 6. **Normalisation** : `p* = p^{r*} = 1` dans la base par choix des échelles d'offre `H̄`, `H̄_r` (calibration = demande simulée à prix unitaire), comme chez KMV. - Algorithme ERC : Broyden amorti sur `(p, p^r, loterie K)` avec Jacobien initial par différences finies ; transition MIT : tir en espace des séquences sur `(p_t, p^r_t)_{t dette 2,4) ; terme 5 ans persistant : p₀ ≈ −1,6 %. ### Jalon 3.3 — run complet (lancé 09:26 après deux faux départs : glob zsh et processus `spawn` orphelins) - Découverte pendant le premier run complet : **discontinuité réelle de l'excès de demande** (saut de 1,5 % de la demande locative entre p̃_r = 0,9730 et 0,9735 dans `eps_200_theta005`) causée par des **atomes de la distribution de cash** (entrants sans don et locataires contraints à a = 0 partagent le même cash à z donné et basculent de tenure simultanément). Remède : composante de revenu transitoire i.i.d. non anticipée (σ = 0,03 par période, `income.sigma_transitory`), réalisée avant les décisions, qui étale les atomes ; la fonction redevient continue (racine encadrée) ; identités budgétaires vérifiées avec le revenu réalisé (test dédié). Documenté dans `results_audit.md` §0. - Étape stationnaire : **48/48 scénarios convergés en ERC** (résidus relatifs < 5e-4, sauf `sample_small` arrêté au plancher de bruit 7,8e-4, étiqueté) en 17 min (9 processus) ; base en 8 s (p* = 1,0000, loterie en 5 tours). - Balayage de multiplicité : excès de demande propriétaire strictement décroissant en p sur [0,80 ; 1,25] avec une seule racine, pour la base, ε = 0,05 et ε = 0,05 × θ = 0,05 ; dμ/dp < 0 partout (analogue de la condition (C)) → **aucun équilibre multiple**. - Transitions (16, 2 en parallèle, Jacobien FD sur 8 processus chacune) lancées à t = 21,7 min. - `research/results_audit.md` : §0 (algorithme), §1–3, §5a, §6–8, §10 rédigés avec les chiffres du run complet ; §4, §5b, §9 en attente des transitions. ### Jalon 3.4 — run complet terminé (`all_done` à 59,8 min ; 09:26 → 10:26) - Étapes : base 8 s ; 48 scénarios stationnaires 17 min (9 processus) ; balayage de multiplicité 5 min ; 16 transitions 50 min (2 en parallèle) ; bien-être 1 min ; `robustness.py` OK. - Convergence : 48/48 ERC stationnaires (dont `sample_small` au plancher de bruit 7,8e-4) ; transitions : 12/16 convergées (résidu ≤ 1,5e-3), 3 arrêtées au plancher de bruit juste au-dessus (frm_level 2,2e-3, unindexed_wages 2,0e-3, fixed_supply 3,1e-3 — étiquetées `GE NOT CONVERGED`), 1 échec du tir à froid (`rate_shock_theta005`, choc de taux réel sous θ = 0,05 : résidu initial 0,17, pas de Broyden rejetés) → **pré-phase de tâtonnement amorti** ajoutée à `solve_transition` (gros chocs) + option `--rerun-transition … --warm-from …` ; relance en cours. - Résultats contraires aux propositions (détaillés dans `results_audit.md`) : (i) **le prix réel baisse** après une surprise d'inflation (p₀ ≈ −0,5 %) parce que les ménages sont créanciers nominaux nets (dépôts 4,1 > dette 2,5) — Prop. 9 suppose l'inverse ; (ii) la neutralité sans segmentation (Prop. 7) ne tient pas avec marge intensive (p₀ = −0,39 % vs −0,45 %) ; (iii) le seuil d'accession n'est pas monotone en θ pour le z médian en EP (valeur d'option d'attendre), dans la sensibilité de grille ; (iv) aucun équilibre multiple (balayages monotones) ; (v) l'élasticité d'offre de long terme ne compte presque pas à l'impact (élasticité d'impact εδ_H). - Résultats conformes : ordre des contrats FRM = terme 5 ans > ARM (niveau), FRM > terme > ARM (persistant), terme pénalisé par une réponse de taux réel (Prop. 8) ; identité à somme nulle ; absorption de 80–90 % de la réponse de propriété par les prix ; persistance intergénérationnelle nulle sans transferts (Prop. 5) ; tilt de l'inflation anticipée par la contrainte DSTI nominale (Prop. 3) ; q_RO ↓ et λ ↑ à l'impact (Prop. 9.3, effets de composition < 0,1 pp). ### Jalon 3.5 — Phase 3 livrée (10:40) - `rate_shock_theta005` relancé deux fois (départ à chaud puis tâtonnement 80 pas + Jacobien) : le tir s'arrête au résidu 8,8e-3 (étiqueté `GE NOT CONVERGED`), p₀ = −16,2 % cohérent avec θ = 0,20 (−15,5 %) et θ = 0,40 (−14,6 %). Bilan transitions : 12/16 convergées à 1,5e-3, 3 à 2–3e-3, 1 à 8,8e-3 — toutes étiquetées avec leur résidu dans `diagnostics.csv` et la Table 6. - Livrables finaux : 14 figures (PDF + PNG), 9 tables LaTeX + `numbers.tex` (164 macros), `results/data/` (358 fichiers CSV/JSON commités, 5,6 Mo ; `.npz`/`.pkl`/journaux exclus), `research/results_audit.md` (brouillon par expérience avec étiquettes identité / théorie / simulation GE / PE), 69 tests verts, `make simulate` reproductible (60 min). - Temps de calcul (18 cœurs) : base 8 s ; ERC stationnaire 45–300 s ; transition 2,5–8 min ; run complet 59,8 min + relances 13 min. ## 2026-10-20 — Phase 4 (audit final, réconciliation théorie–simulation, manuscrit v1.0) : FAIT ### A. Audit final — `research/results_audit.md` (version finale) - Par expérience (1–10) : hypothèse, paramètres, algorithme, convergence (résidus réels ; non convergés nommés : `frm_level` 2,2e-3, `frm_level_unindexed_wages` 2,0e-3, `frm_level_fixed_supply` 3,1e-3, `rate_shock_theta005` 8,8e-3 ; `sample_small` 7,8e-4), résultats, limites, robustesse, et étiquette de ce qui est réellement soutenu : **identité / théorie / simulation GE / simulation PE (prix fixes) / A6 / conjecture**. Décompte exact : 45 ERC stationnaires (44 dans la tolérance), 5 relances PE, 3 balayages de multiplicité, 16 transitions (12 dans la tolérance). - **Les trois désaccords théorie–simulation classés et réconciliés** (tableau dédié) : (1) Prop. 9 — la prémisse « hypothèque = seule position nominale » n'était pas énoncée (impliquée par A4) ; rendue explicite (**Assumption 7**), Prop. 9 restreinte, **Corollary 2** prouvé : signe de $dp$ = signe de $\Xi = \mu^* g(\hat y_O)(\delta_3 p^* - Rn^O) - (1-\mu^*) g(\hat y_R) Rn^R$ ; la baisse simulée est le cas $\Xi<0$ ; les deux écarts résiduels (loyer qui baisse au lieu de monter : marge intensive ; seuil qui monte : dépôts des entrants) nommés dans Remark 3 et rapportés comme résultats. (2) Prop. 7 — « demande unitaire » mise dans l'énoncé (Remark 2) ; résultat Part B rapporté (−0,39 % vs −0,45 %, effet de richesse sur la demande totale). (3) Prop. 2 — restriction exacte nommée : contrainte LTV serrée + décision de tenure une fois pour toutes ($V^R$ indépendant de $\theta$) (Remark 1) ; non-monotonie au $z$ médian rapportée avec sa sensibilité de grille ±0,07. Ni la théorie ni les simulations n'ont été forcées. - `research/propositions.md` réécrit (statuts P / P-scoped / C / N + colonne « Sim ») ; `research/failed_hypotheses.md` complété (§10–15 : signe de $dp$, neutralité, monotonie en $\theta$, multiplicité non trouvée, élasticité de l'offre sans effet mesurable sur la mobilité, moments non soutenus). - Preuves : `paper/appendix_proofs.tex` réorganisé (énoncés dans `sections/equilibrium.tex`, lemmes + preuves + remarques de lacune en annexe A ; preuve commune Prop. 9 / Cor. 2) ; `appendix_proofs_standalone.tex` = modèle + énoncés + preuves, compile (22 p., 0 erreur). ### B. Porte d'intégrité - `make test` : 69 tests verts (21 s). Figures/tables référencées : toutes présentes (`make paper` copie `results/figures/*.pdf` → `paper/figures/`, `results/tables/*.tex` → `paper/tables/`). Chaque chiffre du texte est une macro de `numbers.tex` (≈ 2 500 macros, dont les jumeaux `…Abs` pour les valeurs négatives et le signe moins `\ensuremath{-}`) ; vérification par script : 0 macro utilisée non définie. Bibliographie : 72 entrées, 0 avertissement BibTeX. ### C. Manuscrit — `paper/main.tex` v1.0 - Métadonnées : WP 18, titre + sous-titre, October 2026, Version 1.0, résumé 217 mots avec résultats réels (dont négatifs), 7 mots-clés, JEL R21, R31, D31, D91, E31, G51 (E44 écarté : pas de friction de marché financier au-delà des contraintes des ménages). `\hypersetup{pdftitle,pdfauthor}` ; amsthm selon `wp_style_audit.md` §6. - Sections (`paper/sections/`) : introduction, literature (critique, par mécanismes, 72 réf. seulement), model (Part A + Part B), equilibrium (A1–A7, Prop. 1–9, Cor. 1–2, Remarks 1–3, concepts d'équilibre Part B), computation, baseline, inflation, supply_policy_welfare, sensitivity_conclusion ; annexes A (preuves), B (algorithme, paramètres, diagnostics, robustesse), C (notation). Sections du gabarit inutilisées supprimées. - Figures : 13 dans le texte + 1 en annexe (titres dans l'image retirés, légendes LaTeX) ; tables : 5 dans le texte + 4 en annexe (tables larges en `\resizebox` + note en minipage ; colonne « p peak » redondante retirée de la table d'inflation). ### D. QA - `cd paper && make` : 0 `!`, 0 référence/citation indéfinie, 0 avertissement BibTeX, overfull max 3,7 pt (< 10 pt). PDF : 65 pages = 2 (titre, résumé) + **45 pages de texte principal** (p. 3–47) + références (6) + annexes (12). Page 1 et page 2 vérifiées avec python3 -I + fitz (Working Paper No. 18, titre, auteur, October 2026, Version 1.0 ; Abstract / Keywords / JEL). Relecture intégrale du texte extrait : cohérence chiffres/tables, formulation des nombres négatifs corrigée (macros `…Abs`), légende Fig. 7 alignée sur la figure, libellés des lignes de la table de bien-être. - `make all` : test → simulate (sauté, résultats présents) → figures → tables → paper, EXIT 0. `make clean` garde `main.pdf`. - README.md final (gabarit UQO : Status v1.0 not yet submitted, Quick start, Data = calibration illustrative, Notes = dérogations). ### Verdict de maturité Papier théorique complet et reproductible, résultats honnêtement étiquetés ; calibration illustrative et deux moments non soutenus (profil de propriété après 65 ans, part des dons) ; cible réaliste : *Journal of Housing Economics* ou *Regional Science and Urban Economics* (ou *Canadian Journal of Economics* après une calibration des positions nominales nettes par âge et tenure à la Meh–Terajima et un motif de legs sur le logement — prochaines étapes nommées dans la conclusion).