Unités et conventions
Les montants saisis dans « Hypothèses communes » sont en euros. Les taux sont en pourcentage par an pour le prêt. Les scores ville (tension, risque) sont des indices 0–100 saisis par toi.
Quand une formule parle de « charges annuelles », il s’agit de : charges mensuelles × 12 + impôt foncier annuel (champ taxe). Le loyer est typiquement mensuel ; il est annualisé dans les formules qui suivent.
Coefficient de scénario (par ligne d’outil)
Chaque ligne d’outil porte un coefficient multiplicateur. Il ne change pas la logique du type d’outil : il décale le stress ou l’optimisme (loyer, prix, budget, revente, score ou coût location cumulé selon le cas — voir page Outils, bloc repliable par ligne).
Rendement (kind « yield »)
Après application du coefficient sur le prix et le loyer, on calcule le loyer annuel net de vacance : loyer_mensuel × 12 × (1 − vacance/100). Les charges annuelles sont déduites pour le net.
Les libellés qualitatifs sur le rendement net (%) sont : « solide » si net ≥ 6 %, « acceptable » si ≥ 4.5 %, sinon « fragile ».
- rendement_brut_% = loyer_annuel / prix_achat × 100
- rendement_net_% = (loyer_annuel − charges_annuelles) / prix_achat × 100
Cashflow (kind « cashflow »)
Le coefficient s’applique au loyer uniquement. Le cashflow mensuel affiché est : (loyer annuel / 12) − mensualité de crédit − charges mensuelles − (impôt foncier / 12).
« confortable » si le cashflow mensuel ≥ 150 €, « équilibre » si ≥ 0 €, sinon « négatif ».
- cashflow_mois = loyer_mensuel_net_vacance − crédit_mensuel − charges_mensuelles − taxe/12
Capacité d’emprunt (kind « borrow »)
Mensualité maximale autorisée = revenus_nets_mensuels × 0.35 − autres_crédits_mensuels (ratio 35 % type endettement).
Le capital empruntable est la valeur actuelle d’une annuité constante égale à cette mensualité, sur la durée au taux nominal mensuel (taux/12). Taux nul : capital = mensualité × nombre de mois.
Budget affiché = capital + apport, puis × coefficient de la ligne d’outil.
- r_mensuel = taux_annuel_% / 100 / 12
- n_mois = durée_ans × 12
- capital = mensualité_max × (1 − (1 + r)^−n) / r (si r > 0)
Marge achat-revente (kind « flip »)
Coût d’entrée = prix + travaux + frais annexes (sans coefficient sur ces postes).
Marge brute = prix de revente × coefficient − coût d’entrée. Taux de marge = marge / coût d’entrée × 100.
Verdict : « défendable » si taux ≥ 15 %, « limite » si ≥ 10 %, sinon « risque ».
Acheter vs louer (kind « buyRent »)
Total côté achat : prix + frais annexes + mensualité de crédit × 12 × durée (en années). La mensualité n’est pas recalculée dans le moteur : c’est la valeur saisie.
Total côté location : loyer × 12 × durée × coefficient. Le gagnant est le total le plus bas.
Score ville (kind « cityScore »)
Score brut = pondération empirique interne, puis × coefficient de ligne.
Pondérations actuelles : tension × 0.42, risque × (-0.25), et (loyer/prix) × 1000 × 0.33 (proxy de rendement local, prix au moins 1 pour éviter division par zéro).
Verdict après coefficient : « prioritaire » si score ≥ 30, « à étudier » si ≥ 24, sinon « secondaire ».
- score = tension×0.42 + risque×(-0.25) + (loyer/prix)×1000×0.33
Couverture par parcours (J'achète · J'investis · Je développe)
Chaque ligne d’outil est associée aux profils pour lesquels elle est la plus parlante (étiquettes « Parcours concernés » sur la page Outils). Ce n’est pas exclusif : tu peux lancer n’importe quel scénario avec les mêmes hypothèses.
En pratique : rendement (yield) orienté investissement locatif ; acheter vs louer (buyRent) orienté résidence / arbitrage ; marge (flip) orienté opération revente / travaux.
Emprunt, cashflow et score ville sont tagués pour plusieurs profils ; un filtre optionnel permet de masquer les lignes moins centrales pour le parcours sélectionné.
Sorties structurées (interface)
Chaque ligne affiche une synthèse, un niveau de vigilance (favorable / surveiller / à risque) dérivé des seuils du moteur, puis un détail par indicateur. Le bouton « Au dossier » exporte la synthèse et les lignes en texte brut pour un copier-coller banque ou partenaire.
Les libellés de niveau sont indicatifs et calés sur les constantes du fichier simulator-constants (rendement net, cashflow, marge flip, score ville, couverture budget / prix pour l’emprunt, arbitrage serré pour acheter vs louer).
Sensibilité rapide, export & session
Les pastilles de sensibilité appliquent une variation ponctuelle sur les hypothèses communes (taux, vacance, charges, loyer) et recalculent les trois indicateurs résumé : rendement net cible banque, cashflow net mensuel, capacité d’emprunt 35 %. C’est un complément des coefficients par ligne d’outil : ici on bouge les entrées, là on garde les entrées et on change le profil de scénario.
L’export JSON télécharge les hypothèses saisies et, pour chaque ligne d’outil, le résultat structuré (synthèse, niveau, indicateurs). Le champ engineVersion reprend la version du moteur pour savoir à quelle logique le fichier correspond.
L’import JSON recharge uniquement la clé inputs (un export complet ou un fichier minimal { "inputs": { … } }). Le lien partageable encode les mêmes hypothèses en base64url dans le paramètre d’URL h, avec journey pour le parcours ; au chargement, h est retiré de la barre d’adresse après application pour éviter les URLs interminables.
Sur la page Outils, les hypothèses communes et l’onglet Parcours (si l’URL ne impose pas déjà journey) sont mémorisés dans le stockage local du navigateur, versionnés avec engineVersion : un changement de version moteur invalide l’ancienne session pour éviter des chiffres incohérents.
Version et évolutions
Référence technique : moteur v1.6.0. Toute modification des seuils ou formules doit être reflétée ici et dans src/lib/simulator-constants.ts pour rester traçable.
Les routes publiques /outils et /methode exposent des métadonnées (titre, description, mots-clés, canoniques) et du JSON-LD (liste des simulateurs avec ancres ; page méthode liée au site) pour le référencement et les aperçus sociaux.
Sur la page Outils, l’interface vise une meilleure accessibilité : repère principal nommé, régions par ligne d’outil avec titre relié en aria-labelledby, défilement respectant prefers-reduced-motion, focus après « Voir le calcul », champs de recherche et filtres étiquetés, tableaux de sensibilité avec légende masquée visuellement, groupes de pastilles avec rôle et aria-pressed.