.focs-sim {
--focs-bleu: #023170;
--focs-bleu-80: #355A8D;
--focs-bleu-60: #6782AA;
--focs-bleu-40: #9AABC7;
--focs-bleu-20: #CCD4E3;
--focs-bleu-10: #E6EAF1;
--focs-blanc: #FFFFFF;
font-family: 'Montserrat', system-ui, -apple-system, sans-serif !important;
font-weight: 400 !important;
color: var(--focs-bleu) !important;
background: var(--focs-blanc) !important;
font-size: 0.875rem !important;
line-height: 1.65 !important;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
.focs-sim > * {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
.focs-sim strong, .focs-sim b, .focs-sim small, .focs-sim span, .focs-sim td, .focs-sim th, .focs-sim p, .focs-sim li, .focs-sim label, .focs-sim div { color: var(--focs-bleu) !important; }
.focs-sim *, .focs-sim *::before, .focs-sim *::after {
color: var(--focs-bleu) !important;
box-sizing: border-box !important;
letter-spacing: normal !important;
}
.focs-sim .focs-slbl {
font-size: 11px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin: 40px 0 18px !important;
padding-top: 0 !important;
border-top: none !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-r2 {
display: grid !important;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) !important;
gap: 24px !important;
margin-bottom: 20px !important;
}
.focs-sim .focs-f {
display: flex !important;
flex-direction: column !important;
gap: 6px !important;
}
.focs-sim .focs-f label {
font-size: 10.5px !important;
font-weight: 600 !important;
color: var(--focs-bleu) !important;
text-transform: uppercase !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-f input, .focs-sim .focs-f select {
font-size: 13.5px !important;
font-family: 'Montserrat', sans-serif !important;
padding: 9px 0 !important;
border: 0 !important;
border-bottom: 1px solid var(--focs-bleu) !important;
background: transparent !important;
color: var(--focs-bleu) !important;
outline: none !important;
-webkit-appearance: none !important;
appearance: none !important;
transition: border-color 0.2s ease !important;
width: 100% !important;
}
.focs-sim .focs-f input:focus, .focs-sim .focs-f select:focus {
border-bottom-color: var(--focs-bleu) !important;
}
.focs-sim .focs-f select {
padding-right: 24px !important;
cursor: pointer !important;
}
.focs-sim .focs-ck {
display: flex !important;
align-items: flex-start !important;
gap: 12px !important;
padding: 6px 0 !important;
background: transparent !important;
border: none !important;
font-size: 13px !important;
color: var(--focs-bleu) !important;
margin-bottom: 4px !important;
cursor: pointer !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ck:hover {
background: transparent !important;
}
.focs-sim .focs-ck input[type="checkbox"] {
appearance: none !important;
-webkit-appearance: none !important;
width: 16px !important;
height: 16px !important;
border: 1px solid var(--focs-bleu) !important;
background: var(--focs-blanc) !important;
cursor: pointer !important;
flex-shrink: 0 !important;
margin-top: 2px !important;
transition: all 0.15s ease !important;
position: relative !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
}
.focs-sim .focs-ck input[type="checkbox"]:checked {
background: var(--focs-bleu) !important;
border-color: var(--focs-bleu) !important;
}
.focs-sim .focs-ck input[type="checkbox"]:checked::after {
content: "\eb7b";
font-family: 'remixicon' !important;
font-style: normal !important;
font-weight: normal !important;
color: var(--focs-blanc) !important;
font-size: 14px !important;
line-height: 1 !important;
position: absolute !important;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
}
.focs-sim .focs-ck-d {
font-size: 11px !important;
color: var(--focs-bleu) !important;
margin-top: 5px !important;
line-height: 1.5 !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-f-d {
font-size: 11px !important;
color: var(--focs-bleu) !important;
line-height: 1.5 !important;
font-family: 'Montserrat', sans-serif !important;
margin-top: -2px !important;
margin-bottom: 4px !important;
font-weight: 400 !important;
}
.focs-sim .focs-btn {
width: 100% !important;
padding: 16px 20px !important;
font-size: 11.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
background: var(--focs-bleu) !important;
color: var(--focs-blanc) !important;
border: none !important;
border-radius: 0 !important;
cursor: pointer !important;
margin-top: 36px !important;
transition: opacity 0.2s ease !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-btn:hover {
opacity: 0.85 !important;
}
.focs-sim .focs-res {
margin-top: 56px !important;
}
.focs-sim .focs-kg {
display: grid !important;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important;
gap: 32px !important;
margin-bottom: 48px !important;
}
.focs-sim .focs-kc {
background: var(--focs-blanc) !important;
border: none !important;
padding: 4px 0 8px !important;
}
.focs-sim .focs-kl {
font-size: 10.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 10px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-kv {
font-family: 'Abhaya Libre', serif !important;
font-size: 26px !important;
font-weight: 400 !important;
color: var(--focs-bleu) !important;
line-height: 1.1 !important;
}
.focs-sim .focs-ks {
font-size: 11px !important;
color: var(--focs-bleu) !important;
margin-top: 6px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-cd {
background: var(--focs-blanc) !important;
border: none !important;
padding: 8px 0 8px !important;
margin-bottom: 40px !important;
}
.focs-sim .focs-ct {
font-size: 12px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 18px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ri {
display: flex !important;
justify-content: space-between !important;
align-items: baseline !important;
padding: 9px 0 !important;
border-bottom: 1px solid var(--focs-bleu) !important;
font-size: 13px !important;
gap: 12px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ri:last-child {
border-bottom: none !important;
}
.focs-sim .focs-rl {
color: var(--focs-bleu) !important;
flex: 1 !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-rv {
font-weight: 500 !important;
color: var(--focs-bleu) !important;
white-space: nowrap !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-al {
border: none !important;
padding: 6px 0 !important;
font-size: 12px !important;
line-height: 1.65 !important;
margin: 12px 0 16px !important;
background: var(--focs-blanc) !important;
color: var(--focs-bleu) !important;
font-family: 'Montserrat', sans-serif !important;
font-style: italic !important;
}
.focs-sim .focs-ot {
width: 100% !important;
border-collapse: collapse !important;
font-size: 12.5px !important;
margin-top: 16px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ot th {
font-size: 10.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
padding: 12px 12px !important;
background: var(--focs-blanc) !important;
text-align: left !important;
border-bottom: 1px solid var(--focs-bleu) !important;
}
.focs-sim .focs-ot td {
padding: 11px 12px !important;
border-bottom: 1px solid var(--focs-bleu) !important;
vertical-align: middle !important;
}
.focs-sim .focs-ot tr:last-child td {
border-bottom: none !important;
}
.focs-sim .focs-ot .focs-best td {
background: var(--focs-blanc) !important;
font-weight: 600 !important;
color: var(--focs-bleu) !important;
border-bottom: 1px solid var(--focs-bleu) !important;
}
.focs-sim .focs-lbo2 {
display: grid !important;
grid-template-columns: 1fr 1fr !important;
gap: 20px !important;
margin: 20px 0 !important;
}
.focs-sim .focs-lbc {
background: var(--focs-blanc) !important;
border: none !important;
padding: 4px 0 8px !important;
}
.focs-sim .focs-lbh {
font-size: 11.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 14px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-tpsch {
display: flex !important;
flex-direction: column !important;
align-items: center !important;
gap: 10px !important;
padding: 16px 0 8px !important;
}
.focs-sim .focs-tpsn {
border: 1px solid var(--focs-bleu) !important;
padding: 14px 22px !important;
min-width: 260px !important;
text-align: left !important;
background: var(--focs-blanc) !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-tpsn-main {
background: var(--focs-bleu) !important;
border-color: var(--focs-bleu) !important;
}
.focs-sim .focs-tpsn-main .focs-tpsnl,
.focs-sim .focs-tpsn-main .focs-tpsnn,
.focs-sim .focs-tpsn-main .focs-tpsnd {
color: var(--focs-blanc) !important;
}
.focs-sim .focs-tpsnl {
font-size: 10px !important;
text-transform: uppercase !important;
color: var(--focs-bleu-60) !important;
margin-bottom: 6px !important;
font-weight: 600 !important;
}
.focs-sim .focs-tpsnn {
font-family: 'Abhaya Libre', serif !important;
font-size: 19px !important;
color: var(--focs-bleu) !important;
line-height: 1.1 !important;
margin-bottom: 4px !important;
}
.focs-sim .focs-tpsnd {
font-size: 11.5px !important;
color: var(--focs-bleu-80) !important;
line-height: 1.5 !important;
}
@media (max-width: 1024px) {
.focs-sim .focs-r2 {
grid-template-columns: 1fr !important;
}
.focs-sim .focs-kg {
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
}
}
@media (max-width: 768px) {
.focs-sim .focs-kg {
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
}
.focs-sim .focs-lbo2 {
grid-template-columns: 1fr !important;
}
}
Portefeuille nanti
Valeur du portefeuille (€) Valeur de marché des actifs financiers donnés en nantissement
Ratio de nantissement (%) Quotité prêtée sur la valeur du portefeuille (loan-to-value) - typiquement 50 à 80 % selon la qualité des actifs
Type d'actif nanti La nature du support conditionne la décote appliquée par la banque
Compte-titres ordinaireContrat d'assurance-vieOPCVM / fonds
Plus-value latente (€) Plus-value non réalisée qui serait imposée en cas de cession des titres
Crédit Lombard
Taux du crédit Lombard (%) Taux d'intérêt annuel du crédit in fine adossé au portefeuille
Durée du crédit (ans) Durée du crédit in fine - remboursement du capital au terme
Rendement attendu du portefeuille (%) Performance annuelle moyenne anticipée du portefeuille conservé
Taux de réinvestissement post-cession (%) Rendement du capital net réinvesti dans le scénario de cession directe
Tranche marginale d'imposition TMI du foyer - repère pour la comparaison avec le scénario de cession
30 %41 %45 %
Simuler le crédit Lombard
L'affichage du calendrier nécessite votre consentement préalable pour l'activation des cookies liés à Calendly.
Modifier ce paramètre (function(){
const root = document.querySelector('.focs-lom');
const $ = id => root.querySelector('#'+id);
const v = id => parseFloat($(id).value.replace(/[^0-9,.-]/g,'').replace(',','.'))||0;
const vb = id => $(id).checked;
const vs = id => $(id).value;
const fmt = n => Math.round(n).toLocaleString('fr-FR')+' €';
const pct2 = n => (n*100).toFixed(2).replace('.',',')+' %';
const pct1 = n => (n*100).toFixed(1).replace('.',',')+' %';
const pct0 = n => Math.round(n*100)+' %';
const CAL_SLUG = '/d/ctrz-9cg-sfd/rendez-vous-decouverte';function formatFrenchNumber(el){
const raw = String(el.value).replace(/[^0-9,.-]/g,'').replace(',','.');
const n = parseFloat(raw);
if(isNaN(n)||raw===''){el.value='';return;}
el.value = Math.round(n).toLocaleString('fr-FR');
}
function unformatFrenchNumber(el){
el.value = String(el.value).replace(/\s/g,'').replace(/[^\d,.-]/g,'').replace(',','.');
}
root.querySelectorAll('.focs-num').forEach(el => {
formatFrenchNumber(el);
el.addEventListener('focus', function(){ unformatFrenchNumber(this); });
el.addEventListener('blur', function(){ formatFrenchNumber(this); });
});function buildHtml(id,html){
const el=$(id);
el.style.display='block';
el.innerHTML=html;
}function calc(){
const val=v('lom_val');
const ltv=Math.max(0,v('lom_ltv')/100);
const tx=v('lom_tx')/100;
const dur=Math.max(1,v('lom_dur'));
const rdt=v('lom_rdt')/100;
const rei=v('lom_rei')/100;
const pv=Math.max(0,v('lom_pv'));
const tmi=vs('lom_tmi');
const act=vs('lom_act');const actLbl = act==='av' ? 'Contrat d’assurance-vie' : act==='opc' ? 'OPCVM / fonds' : 'Compte-titres ordinaire';const montantCredit = val*ltv;
const interetsAnnuels = montantCredit*tx;
const coutTotalCredit = interetsAnnuels*dur;
const gainPortefeuille = val*(Math.pow(1+rdt,dur)-1);
const impotCession = pv*0.30;
const gainNetLombard = gainPortefeuille - coutTotalCredit;
const gainNetCession = (val - impotCession)*Math.pow(1+rei,dur) - val;
const ratioEff = tx>0 ? rdt/tx : 0;
const seuilAppel = ltv>0 ? montantCredit/ltv : 0;
const baisseMax = 1-ltv;const lombardGagne = gainNetLombard >= gainNetCession;
const ecart = Math.abs(gainNetLombard - gainNetCession);let h=`
Montant empruntable
${fmt(montantCredit)}
${pct0(ltv)} de la valeur nantie
Coût total du crédit
${fmt(coutTotalCredit)}
${fmt(interetsAnnuels)} / an sur ${Math.round(dur)} ans
Gain net Lombard
${fmt(gainNetLombard)}
Performance − coût du crédit
Économie fiscale vs cession
${fmt(impotCession)}
PFU 30 % non déclenché
`;h+=`
Détail du crédit Lombard - ${actLbl}
Valeur du portefeuille nanti ${fmt(val)}
Montant du crédit (${pct0(ltv)} de la valeur) ${fmt(montantCredit)}
Intérêts annuels (${pct1(tx)}) ${fmt(interetsAnnuels)}
Coût total sur ${Math.round(dur)} ans (in fine) ${fmt(coutTotalCredit)}
Performance brute du portefeuille conservé ${fmt(gainPortefeuille)}
Ratio d'efficience (rendement / taux) ${ratioEff.toFixed(2).replace('.',',')}
`;if(ratioEff<1.2){
h+=`
Effet de levier peu rentable : le ratio d'efficience (${ratioEff.toFixed(2).replace('.',',')}) est inférieur à 1,20. Le rendement attendu du portefeuille (${pct1(rdt)}) couvre insuffisamment le coût du crédit (${pct1(tx)}). Le levier n'est pertinent que si le rendement dépasse nettement le taux Lombard.
`;
} else {
h+=`
Ratio d'efficience de ${ratioEff.toFixed(2).replace('.',',')} : le rendement attendu (${pct1(rdt)}) dépasse le coût du crédit (${pct1(tx)}). L'effet de levier est favorable sous réserve de la réalisation du rendement.
`;
}h+=`
Risque d'appel de marge
Seuil de valorisation de couverture ${fmt(seuilAppel)}
Baisse maximale tolérée du portefeuille ${pct0(baisseMax)}
Ratio de nantissement retenu ${pct0(ltv)}
`;h+=`
Appel de marge si le portefeuille baisse de plus de ${pct0(baisseMax)}. En deçà du seuil de couverture, la banque peut exiger un apport de garantie complémentaire ou la cession forcée d'actifs. Prévoir une marge de sécurité et une réserve de liquidités.
`;h+=`
Comparatif - crédit Lombard vs cession directe + réinvestissement
Stratégie Fiscalité immédiate Coût du levier Position financière à ${Math.round(dur)} ans Gain net Crédit Lombard Portefeuille conservé et nanti ${fmt(0)} ${fmt(coutTotalCredit)} ${fmt(val+gainNetLombard)} ${fmt(gainNetLombard)} Cession + réinvestissement PFU 30 % puis replacement à ${pct1(rei)} ${fmt(impotCession)} ${fmt(0)} ${fmt(val+gainNetCession)} ${fmt(gainNetCession)}
`;h+=`
Stratégie ${lombardGagne?'Lombard':'de cession'} plus favorable de ${fmt(ecart)} sur ${Math.round(dur)} ans dans les hypothèses retenues. La comparaison est établie au PFU (30 %) sur la plus-value latente ; le repère de TMI (${tmi} %) et le type d'actif (${actLbl}) sont fournis à titre de contexte.
`;h+=`
Neutralité fiscale du crédit Lombard : le nantissement du portefeuille ne constitue pas un fait générateur d'imposition. La plus-value latente (${fmt(pv)}) reste non réalisée et l'antériorité fiscale des titres est préservée.
`;
h+=`
Hypothèses de rendement : le rendement du portefeuille (${pct1(rdt)}) et le taux de réinvestissement (${pct1(rei)}) sont supposés constants et capitalisés annuellement, hors fiscalité des revenus intermédiaires. Toute variation modifie sensiblement le résultat.
`;
h+=`
Risque d'appel de marge : une baisse du portefeuille supérieure à ${pct0(baisseMax)} peut déclencher un appel de couverture. Le crédit in fine suppose de disposer du capital au terme (${fmt(montantCredit)}). Simulation à caractère indicatif et non contractuel.
`;buildHtml('lom_r',h);
}$('lom-calc-btn').addEventListener('click', calc);
})();