Simulateur Jeanbrun complet — Projection 20 ans
À quoi sert ce simulateur ?
Simulateur composite qui modélise un investissement immobilier locatif sous le dispositif loi Jeanbrun (Budget 2026) sur toute la durée de détention (20 ans par défaut), en agrégeant trois briques :
jeanbrun— amortissement fiscal du bien (intermédiaire, social, très social) et économie d'impôt sur la période d'engagement (9, 12 ou 15 ans).credit— tableau d'amortissement mensuel du crédit amortissable (intérêts, capital, assurance).pv-immo-engine— calcul de la plus-value immobilière à la cession (abattement durée de détention, IR 19 %, PS 17,2 %, surtaxe art. 1609 nonies G).
Il répond aux questions que pose un CGP sur le cas pratique complet du mémento : financement, loyers revalorisés, charges, IR + PS foncier année par année, effort d'épargne mensuel, valeur revalorisée à la cession, PV nette et gain patrimonial à terme.
Constantes fiscales 2026
- Revenus fonciers nus : PS 17,2 % (CSG 9,2 + CRDS 0,5 + PS 7,5) — carve-out LFSS 2026 art. 12 / CSS L.136-8 IV.
- Plus-value immobilière particulière : IR 19 % + PS 17,2 % (même carve-out) + éventuelle surtaxe.
- Abattements durée de détention : IR 6 %/an de la 6ᵉ à la 21ᵉ, puis 4 % à la 22ᵉ (exonération totale 22 ans). PS 1,65 %/an de la 6ᵉ à la 21ᵉ, 1,6 % à la 22ᵉ, puis 9 %/an jusqu'à la 30ᵉ (exonération totale 30 ans).
À ne pas confondre avec le LMNP (revenus BIC de location meublée) qui, lui, passe à 18,6 % en 2026.
Hypothèses du modèle
- Régime réel d'imposition foncière : loyers nets de vacance − charges − intérêts d'emprunt − assurance − amortissement Jeanbrun = résultat foncier.
- Déficit foncier reportable sur les revenus fonciers des années suivantes. L'imputation sur le revenu global (10 700 € / an) n'est pas modélisée — le déficit reste 100 % foncier.
- Amortissement Jeanbrun : taux et plafonds tirés de
settings.json, base = 80 % du prix + travaux éligibles (≥ 30 % du prix pour l'ancien avec travaux). - Plus-value à la cession : seul le prix d'acquisition nu est revalorisé (frais et travaux restent au prix d'origine dans la base). Cohérent avec
shared/pv-immo-engine.js. - Patrimoine net au terme = valeur bien revalorisée − capital restant dû − impôt PV cession.
- Gain net au terme = patrimoine net + cumul cash-flow 20 ans − apportEur initial.
Entrées principales
| Catégorie | Champ | Unité |
|---|---|---|
| Acquisition | prixAcquisition, fraisAcquisition, travauxRenovation, typeLogement, typeBien | EUR, enum |
| Engagement | anneesEngagement | 9, 12 ou 15 ans |
| Crédit | apportEur, tauxCredit, dureeCreditMois, tauxAssurance | EUR, %, mois, % |
| Exploitation | loyerEurParMois, revalorisationLoyer, vacanceLocative, chargesCopro, taxeFonciere, gestionLocative, revalorisationCharges | EUR, % décimal |
| Fiscalité | tmiDecimal, partsFiscales, declarationCommune | décimal, nombre, booléen |
| Cession | dureeDetention, revalorisationBien | années, % décimal |
Sorties clés
bilan.effort_mensuel_moyen— effort d'épargne moyen sur la durée.bilan.gain_net_terme— patrimoine net au terme + cumul cash-flow − apportEur.bilan.total_economie_jeanbrun— cumul de l'économie d'impôt due à l'amortissement Jeanbrun sur la période d'engagement (référence issue dejeanbrun/simulate.js).projection[]— ligne par année : loyers, charges, intérêts, amortissement JB, résultat foncier, IR, PS, cash-flow net, effort mensuel.credit.annees[]— amortissement crédit agrégé par année (intérêts, capital, assurance, CRD).plus_value— détail du calcul à la cession (abattements, IR, PS, surtaxe).
Intégration
- Branche CSS partagée (
../styles.css), pas de build. - Utilise les factories
createPlansStore,createHandleRoute,createClickHandler,createMarkdownFetcher,showModal,renderDashboardShell,makeTopbar. - SSO Capital Explorer : flow OAuth porté côté serveur (
server/src/auth.ts), token lu depuislocalStoragepar../cx-sso-gate.js— aucuncx-auth.jsà inclure. - Chargement des dépendances en navigateur :
jeanbrun/simulate.jsetcredit/simulate.jssont inclus puis leurs globaux sont capturés danswindow.__jb_loietwindow.__jb_creditavant que./simulate.jsne redéfinissesimulate.