FIRE Rechner

Ein professioneller FIRE-Rechner (Financial Independence Retire Early) zur Berechnung Ihrer finanziellen Unabhängigkeit.

Données financières de base

Saisissez vos revenus nets après toutes déductions.
Toutes les dépenses mensuelles de la vie.
Vos actifs déjà épargnés.
%
Espérance de rendement réaliste après inflation.

Circonstances personnelles

Votre pays principal de résidence.
Votre âge actuel.
Votre devise de calcul.
Affecte les dépenses et la classe d'imposition.
Important pour la planification des dépenses.
Influence la pension et l'assurance maladie.
Influence la planification des risques.

Objectifs et préférences de FIRE

Détermine votre niveau de dépenses à la retraite.
Votre âge cible de retraite (vide = le plus tôt possible).
Influence le taux de retrait sans risque.
x Dépenses annuelles
Ajusté automatiquement (Par défaut: 25x).

Comment utiliser le calculateur FIRE

Avec ce calculateur FIRE professionnel (Financial Independence Retire Early), estimez le capital nécessaire pour l’indépendance financière et le temps restant avant la retraite anticipée.

1

Saisissez vos données 

Revenu mensuel, dépenses, épargne actuelle et rendement attendu.

2

Choisissez pays et devise 

Sélectionnez votre pays pour inclure impôts, inflation et coût de la vie.

3

Adaptez votre situation 

Statut familial, logement, emploi et profil de risque.

4

Choisissez le type de FIRE 

LeanFIRE, FIRE classique, FatFIRE, CoastFIRE ou BaristaFIRE.

5

Lancez le calcul 

Cliquez sur « Calculer » pour voir votre objectif FIRE et le temps estimé.

6

Analysez le résultat 

Découvrez le capital requis, le taux d’épargne, les années jusqu’au FIRE et recevez des recommandations personnalisées.

Comment fonctionne l'outil

Calculez précisément quand vous serez financièrement indépendant selon le principe FIRE — totalement gratuit et scientifiquement fondé. Le calculateur FIRE vous aide à planifier votre liberté financière, optimiser la constitution de patrimoine et comparer différents scénarios.

Calcul du nombre FIRE

Calcul automatique de votre nombre FIRE selon la règle éprouvée des 25x. Entrez vos dépenses annuelles et l'outil montre instantanément le patrimoine nécessaire pour l'indépendance financière — avec ajustement de l'inflation.

3 scénarios

Comparez simultanément les projections conservatrices, réalistes et optimistes. Voyez comment différents rendements et taux d'inflation affectent votre date FIRE — pour des décisions financières éclairées.

Visualisation chronologique

La chronologie interactive montre l'évolution de votre patrimoine année par année. Voyez exactement quand vous atteignez divers jalons et comment votre patrimoine résiste après FIRE au fil des ans.
Important : Tous les calculs sont basés sur l'étude Trinity et la règle des 4%. Aucune donnée n'est stockée — votre planification financière reste totalement privée et sécurisée.

Avantages par rapport aux autres solutions

Le calculateur FIRE est plus précis, complet et scientifiquement fondé que les simples calculateurs d'épargne ou feuilles Excel.
3 scénarios
Conservateur à optimiste
Règle 4%
Basé sur l'étude Trinity
5 langues
DE, EN, FR, ES, IT

Avantages supplémentaires

  • Aucune inscription : Utilisable instantanément, sans connexion ni compte — calculs illimités.
  • Scientifiquement fondé : Basé sur l'étude Trinity et plus de 30 ans de données de marché historiques.
  • Ajusté à l'inflation : Toutes les valeurs en pouvoir d'achat actuel — pas de chiffres nominaux trompeurs.
  • Multilingue : Support complet pour l'allemand, l'anglais, le français, l'espagnol et l'italien.
  • Design responsive : Fonctionne parfaitement sur ordinateur, tablette et smartphone sans installation.

Pour qui est cet outil ?

Aspirants FIRE & frugalistes

Parfait pour les personnes visant l'indépendance financière et la retraite anticipée. Calculez votre date FIRE, optimisez votre taux d'épargne et voyez comment différentes stratégies affectent vos objectifs.

Investisseurs ETF & épargnants

Outil idéal pour planifier des investissements à long terme dans des portefeuilles ETF. Voyez comment votre patrimoine croît avec différents rendements et quand vous pouvez vivre des revenus du capital — pour des stratégies de revenus passifs.

Planificateurs financiers & conseillers

Utilisez l'outil comme base pour les consultations clients ou pour illustrer les concepts FIRE. Montrez différents scénarios et aidez les clients à créer des plans financiers réalistes.

Conseils pour une utilisation optimale

  1. Rendements réalistes : Utilisez 5-7% pour des portefeuilles ETF diversifiés (MSCI World historiquement ~7% réel). Soyez conservateur avec les investissements risqués.
  2. Tenir compte de l'inflation : Calculez avec 2-3% d'inflation à long terme. L'outil montre toutes les valeurs ajustées à l'inflation en pouvoir d'achat actuel.
  3. Augmenter le taux d'épargne : Même de petites augmentations (100-200€ de plus par mois) peuvent économiser des années jusqu'à FIRE — testez différents scénarios !
  4. Tampon de sécurité : Prévoyez 10-20% de patrimoine en plus que le nombre FIRE pur pour les dépenses imprévues et les fluctuations du marché.
  5. Mises à jour régulières : Révisez votre planification annuellement et ajustez les hypothèses aux développements réels — la flexibilité est importante !

Foire aux questions (FAQ)

Le calculateur FIRE est un outil gratuit pour calculer votre indépendance financière selon le principe FIRE (Financial Independence, Retire Early). Entrez vos actifs, revenus, dépenses et taux d'épargne — l'outil calcule automatiquement quand vous serez financièrement indépendant et combien de temps votre patrimoine durera. Il utilise la règle des 4% et prend en compte l'inflation, les rendements et divers scénarios.

FIRE signifie "Financial Independence, Retire Early" — un concept financier où vous constituez suffisamment de patrimoine pour vivre des rendements du capital. La règle des 4% stipule que vous pouvez retirer 4% de votre patrimoine annuellement sans l'épuiser. Pour 40 000 € de dépenses annuelles, vous avez besoin de 1 million € d'actifs (40 000 ÷ 0,04 = 1 000 000).

Vous avez besoin de : Actifs actuels, revenu net mensuel, dépenses mensuelles, taux d'épargne mensuel, rendement annuel attendu (par exemple, 7% pour les ETF actions) et taux d'inflation (historiquement ~2-3%). Optionnellement, entrez votre âge, l'âge de retraite et l'âge FIRE souhaité — l'outil calcule alors des calendriers individuels et montre divers scénarios.

Les calculs sont basés sur des modèles financiers éprouvés comme l'étude Trinity et la règle des 4%. La précision dépend de vos hypothèses — les rendements et l'inflation fluctuent en réalité. L'outil offre des scénarios conservateurs (faible rendement) et optimistes (rendement élevé). Utilisez des valeurs réalistes : 5-7% de rendement pour les portefeuilles ETF diversifiés, 2-3% d'inflation pour la planification à long terme.

Le nombre FIRE est le patrimoine dont vous avez besoin pour l'indépendance financière. Calcul : Dépenses annuelles × 25 (équivalent à la règle des 4%). Exemple : Avec 30 000 € de dépenses annuelles, votre nombre FIRE est 750 000 € (30 000 × 25). L'outil montre combien de temps il faut pour atteindre ce nombre en fonction de votre taux d'épargne actuel et des rendements attendus.

Oui, l'outil offre trois scénarios : Conservateur (faible rendement, forte inflation), Réaliste (valeurs modérées) et Optimiste (rendement élevé, faible inflation). Vous pouvez également modifier des paramètres comme le taux d'épargne ou les rendements et voir immédiatement comment cela affecte votre date FIRE. Cela vous aide à tester différentes stratégies et à évaluer les risques.

Oui, le calculateur FIRE prend entièrement en compte l'inflation. Toutes les valeurs futures sont affichées ajustées de l'inflation (en pouvoir d'achat actuel). Cela signifie : Si l'outil dit que vous avez besoin de 800 000 €, ce sont 800 000 € en euros d'aujourd'hui, pas en euros nominaux dans 20 ans. L'inflation est automatiquement intégrée dans l'évolution du patrimoine et les plans de retrait.

Un taux d'épargne plus élevé raccourcit considérablement votre temps jusqu'à l'indépendance financière. Exemple : Avec un taux d'épargne de 1 000 € au lieu de 500 €, la durée ne fait souvent pas que se diviser par deux, mais se raccourcit encore plus (effet des intérêts composés). L'outil montre immédiatement combien d'années vous gagnez grâce à des taux d'épargne plus élevés. Même de petites augmentations (100-200 € de plus) peuvent économiser des années.

Oui, le calculateur FIRE convient également pour le Barista FIRE ou le Coast FIRE. Pour le Barista FIRE (travail à temps partiel pour couvrir les coûts courants), réduisez les retraits annuels et planifiez un revenu d'appoint. Pour le Coast FIRE (le patrimoine croît jusqu'à la retraite), définissez votre taux d'épargne à 0 et calculez combien de temps le patrimoine existant croît jusqu'à la retraite.

Oui, le calculateur FIRE est 100% gratuit sans frais cachés ni inscription. Tous les calculs sont effectués localement dans votre navigateur — aucune donnée n'est envoyée ou stockée sur des serveurs. Vos informations financières restent privées et sécurisées. L'outil est conforme au RGPD et peut être utilisé un nombre illimité de fois pour tester différentes stratégies financières.

Évaluation

5.0 sur 5 étoiles · 4 évaluations
Publicité
Publicité
Publicité
} public function shortcode_handler($atts) { errorContainer.style.display = 'block'; } else { errorContainer.style.display = 'none'; } return isValid; } function showValidationErrors() { const errors = []; if (!document.getElementById('monthlyIncome').value || parseFloat(document.getElementById('monthlyIncome').value) <= 0) { errors.push(tStrings.error_income); } if (!document.getElementById('monthlyExpenses').value || parseFloat(document.getElementById('monthlyExpenses').value) <= 0) { errors.push(tStrings.error_expenses); } if (!document.getElementById('currentSavings').value || parseFloat(document.getElementById('currentSavings').value) < 0) { errors.push(tStrings.error_savings); } if (!document.getElementById('expectedReturn').value || parseFloat(document.getElementById('expectedReturn').value) <= 0) { errors.push(tStrings.error_return); } if (errors.length > 0 && validationErrorsContainer) { const errorsList = errors.map(error => `
  • ${error}
  • `).join(''); validationErrorsContainer.innerHTML = `
    ${tStrings.error_headline}
    `; validationErrorsContainer.style.display = 'block'; } form.classList.add('was-validated'); } function generateCountrySpecificRecommendations(landConfig, savingsRate, yearsToFire) { const recommendations = []; if (landConfig.taxRate > 0.4) { recommendations.push('Nutzen Sie steuerbegünstigte Sparformen wie betriebliche Altersvorsorge oder ETF-Sparpläne'); } if (landConfig.inflationRate > 0.03) { recommendations.push('Investieren Sie in inflationsgeschützte Anlagen wie Immobilien-REITs oder Rohstoff-ETFs'); } if (landConfig.healthcareCost > 0.15) { recommendations.push('Planen Sie einen erhöhten Gesundheitskostenpuffer und private Krankenversicherung ein'); } if (landConfig.costOfLivingIndex > 120) { recommendations.push('Erwägen Sie geografische Arbitrage - Sparen in teurem Land, leben in günstigerem Land'); } if (savingsRate < 20) { recommendations.push('Erhöhen Sie Ihre Sparrate auf mindestens 20% für eine realistische FIRE-Strategie'); } if (yearsToFire > 30) { recommendations.push('Optimieren Sie Ihre Ausgaben oder erhöhen Sie Ihr Einkommen für einen schnelleren FIRE-Weg'); } if (landConfig.safeWithdrawalRate < 0.035) { recommendations.push('In diesem Land wird eine konservativere Entnahmestrategie empfohlen'); } return recommendations; } function generateAdvancedRecommendations(config) { const { landConfig, familyConfig, housingConfig, employmentConfig, careerConfig, riskConfig, savingsRate, yearsToFire, fireType, age, familyStatus, housingStatus } = config; const recommendations = []; // Länderspezifische Empfehlungen if (landConfig.taxRate > 0.4) { recommendations.push('Nutzen Sie steuerbegünstigte Sparformen wie betriebliche Altersvorsorge oder ETF-Sparpläne'); } if (landConfig.inflationRate > 0.03) { recommendations.push('Investieren Sie in inflationsgeschützte Anlagen wie Immobilien-REITs oder Rohstoff-ETFs'); } if (landConfig.healthcareCost > 0.15) { recommendations.push('Planen Sie einen erhöhten Gesundheitskostenpuffer und private Krankenversicherung ein'); } // FIRE-Typ spezifische Empfehlungen if (fireType === 'leanfire') { recommendations.push('LeanFIRE erfordert konsequente Ausgabenkontrolle - erwägen Sie geografische Arbitrage'); } else if (fireType === 'fatfire') { recommendations.push('FatFIRE benötigt höhere Einkommen oder längere Sparzeit - fokussieren Sie auf Einkommenssteigerung'); } else if (fireType === 'baristafire') { recommendations.push('BaristaFIRE ermöglicht frühere Teilzeit-Arbeit - planen Sie Übergangseinkommenquellen'); } // Familienstatus-spezifische Empfehlungen if (familyStatus.includes('family') || familyStatus === 'single_parent') { recommendations.push('Mit Kindern steigen die Ausgaben - berücksichtigen Sie Bildungskosten und längere Sparzeit'); recommendations.push('Sichern Sie Ihre Familie durch ausreichende Lebens- und Berufsunfähigkeitsversicherung ab'); } if (familyStatus === 'couple') { recommendations.push('Als Paar können Sie Dual-Income-Strategien und steuerliche Vorteile nutzen'); } // Wohnsituation-spezifische Empfehlungen if (housingStatus === 'renting') { recommendations.push('Als Mieter sollten Sie Immobilien-Investments für Diversifikation erwägen'); } else if (housingStatus === 'owned_with_mortgage') { recommendations.push('Erwägen Sie eine Balance zwischen Hypotheken-Tilgung und Investment-Aufbau'); } else if (housingStatus === 'owned_without_mortgage') { recommendations.push('Ohne Hypothek haben Sie mehr finanziellen Spielraum für Investments'); } // Beschäftigungstyp-spezifische Empfehlungen if (employmentConfig.incomeStability < 1.0) { recommendations.push('Bei unsicherem Einkommen bauen Sie einen größeren Notfallpuffer auf (6-12 Monate Ausgaben)'); } if (employmentConfig.pensionFactor > 1.2) { recommendations.push('Als Selbstständiger müssen Sie Ihre Rente komplett selbst finanzieren - erhöhen Sie die Sparrate'); } // Allgemeine Sparraten-Empfehlungen if (savingsRate < 20) { recommendations.push('Erhöhen Sie Ihre Sparrate auf mindestens 20% für eine realistische FIRE-Strategie'); } else if (savingsRate > 50) { recommendations.push('Ihre hohe Sparrate ist vorbildlich - achten Sie auf eine ausgewogene Work-Life-Balance'); } // Alter-spezifische Empfehlungen if (age < 25) { recommendations.push('Sie haben Zeit auf Ihrer Seite - nutzen Sie den Zinseszinseffekt mit langfristigen Investments'); } else if (age > 45) { recommendations.push('Später Start erfordert höhere Sparraten oder realistischere FIRE-Ziele'); } // Zeitrahmen-spezifische Empfehlungen if (yearsToFire > 30) { recommendations.push('Optimieren Sie Ihre Ausgaben oder erhöhen Sie Ihr Einkommen für einen schnelleren FIRE-Weg'); } else if (yearsToFire < 10) { recommendations.push('Sie sind auf einem sehr guten Weg - bleiben Sie konsequent bei Ihrer Strategie'); } return recommendations; } // PDF Export Funktion - Erweitert mit umfassenden Details window.exportFireToPDF = function() { console.log('📄 FIRE PDF Export gestartet...'); try { if (typeof window.jspdf === 'undefined' && typeof window.jsPDF === 'undefined') { alert('PDF-Bibliothek nicht verfügbar. Bitte versuchen Sie es später erneut.'); return; } const jsPDFInstance = window.jspdf || window.jsPDF; const doc = new jsPDFInstance.jsPDF({orientation:'p',unit:'pt',format:'a4'}); const pageWidth = doc.internal.pageSize.getWidth(); const pageHeight = doc.internal.pageSize.getHeight(); const margin = 40; let y = margin + 20; const lineHeight = 16; const sectionSpacing = 25; const primary = [30,90,160]; const secondary = [220,53,69]; const success = [40,167,69]; const grayText = [70,70,70]; const lightGray = [150,150,150]; // Aktuelle Daten für PDF sammeln const formData = { monthlyIncome: parseFloat(document.getElementById('monthlyIncome').value) || 0, monthlyExpenses: parseFloat(document.getElementById('monthlyExpenses').value) || 0, currentSavings: parseFloat(document.getElementById('currentSavings').value) || 0, expectedReturn: parseFloat(document.getElementById('expectedReturn').value) || 0, country: document.getElementById('country').value || '', age: parseInt(document.getElementById('age').value) || 0, currency: document.getElementById('currency').value || 'EUR', familyStatus: document.getElementById('familyStatus').value || '', housingStatus: document.getElementById('housingStatus').value || '', employmentType: document.getElementById('employmentType').value || '', fireType: document.getElementById('fireType').value || '', riskTolerance: document.getElementById('riskTolerance').value || '', retirementAge: parseInt(document.getElementById('retirementAge').value) || null, savingsGoal: parseFloat(document.getElementById('savingsGoal').value) || 25 }; // Berechnungen für PDF const monthlySavings = formData.monthlyIncome - formData.monthlyExpenses; const annualSavings = monthlySavings * 12; const savingsRate = formData.monthlyIncome > 0 ? (monthlySavings / formData.monthlyIncome) * 100 : 0; const targetAmount = formData.monthlyExpenses * 12 * formData.savingsGoal; // Funktion für neue Seite function addNewPage() { doc.addPage(); y = margin + 20; } // Funktion für Seitenumbruch prüfen function checkPageBreak(neededSpace) { if (y + neededSpace > pageHeight - margin) { addNewPage(); } } // Funktion für Überschriften function addHeading(text, level = 1) { checkPageBreak(30); // Abstand vor Überschrift (außer erste) if (y > margin + 20) { y += level === 1 ? 15 : 10; } doc.setFont('helvetica','bold'); doc.setFontSize(level === 1 ? 18 : 14); doc.setTextColor(primary[0],primary[1],primary[2]); doc.text(text, margin, y); y += level === 1 ? 25 : 20; } // Funktion für normalen Text function addText(text, color = grayText, size = 11) { checkPageBreak(lineHeight + 5); doc.setFont('helvetica','normal'); doc.setFontSize(size); doc.setTextColor(color[0], color[1], color[2]); const lines = doc.splitTextToSize(text, pageWidth - 2*margin); doc.text(lines, margin, y); y += lines.length * lineHeight + 5; } // Funktion für Werte-Paare function addValuePair(label, value, color = grayText) { checkPageBreak(lineHeight + 5); doc.setFont('helvetica','bold'); doc.setFontSize(11); doc.setTextColor(grayText[0], grayText[1], grayText[2]); doc.text(label + ':', margin, y); doc.setFont('helvetica','normal'); doc.setTextColor(color[0], color[1], color[2]); // Sicherstellen, dass value ein String ist const valueStr = typeof value === 'string' ? value : String(value); doc.text(valueStr, margin + 180, y); y += lineHeight + 3; } // Funktion für Formatierung function formatCurrency(amount) { return formatInternationalCurrency(amount, getCurrencyByBrowserLanguage(), true); } function formatPercent(value) { if (isNaN(value) || value === null || value === undefined) return '0%'; return (value * 100).toFixed(1) + '%'; } function formatNumber(value) { if (isNaN(value) || value === null || value === undefined) return '0'; return String(value); } // === PDF INHALT BEGINNT === // Header mit Logo-Bereich doc.setFont('helvetica','bold'); doc.setFontSize(24); doc.setTextColor(primary[0],primary[1],primary[2]); doc.text('FIRE-Berechnung', margin, y); y += 20; doc.setFont('helvetica','normal'); doc.setFontSize(12); doc.setTextColor(grayText[0],grayText[1],grayText[2]); doc.text('Financial Independence Retire Early - Persoenliche Analyse', margin, y); y += 12; // Datum und Quelle doc.setFont('helvetica','normal'); doc.setFontSize(10); doc.setTextColor(lightGray[0], lightGray[1], lightGray[2]); doc.text('Erstellt am: ' + new Date().toLocaleDateString('de-DE', { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' }), margin, y); y += 10; doc.setFont('helvetica','italic'); doc.setFontSize(9); doc.text('Berechnung von Toolkitdaily.com - Ihr Toolkit fuer Finanzrechner', margin, y); y += sectionSpacing; // Trennlinie doc.setDrawColor(lightGray[0], lightGray[1], lightGray[2]); doc.setLineWidth(1); doc.line(margin, y, pageWidth - margin, y); y += 20; // 1. ZUSAMMENFASSUNG addHeading('ZUSAMMENFASSUNG IHRER FIRE-ZIELE'); const fireResult = document.querySelector('.result-primary h3'); if (fireResult) { doc.setFont('helvetica','bold'); doc.setFontSize(16); doc.setTextColor(success[0], success[1], success[2]); checkPageBreak(25); const resultText = fireResult.textContent.trim().replace(/[^\x00-\x7F]/g, ""); doc.text('ZIEL: ' + resultText, margin, y); y += 25; } // Wichtige Kennzahlen addValuePair('Benoetigtes FIRE-Vermoegen', formatCurrency(targetAmount), primary); addValuePair('Aktueller Fortschritt', formatCurrency(formData.currentSavings), grayText); addValuePair('Noch zu sparen', formatCurrency(Math.max(0, targetAmount - formData.currentSavings)), secondary); addValuePair('Monatliche Sparrate', formatCurrency(monthlySavings), monthlySavings > 0 ? success : secondary); addValuePair('Sparquote', formatPercent(savingsRate / 100), savingsRate > 20 ? success : grayText); y += 10; // 2. PERSÖNLICHE ANGABEN addHeading('IHRE PERSOENLICHEN DATEN', 2); addValuePair('Alter', formatNumber(formData.age) + ' Jahre'); addValuePair('Land', formData.country.charAt(0).toUpperCase() + formData.country.slice(1)); addValuePair('Waehrung', formData.currency); addValuePair('Familienstatus', formData.familyStatus); addValuePair('Wohnsituation', formData.housingStatus); addValuePair('Beschaeftigungsart', formData.employmentType); addValuePair('FIRE-Strategie', formData.fireType.toUpperCase()); addValuePair('Risikobereitschaft', formData.riskTolerance); if (formData.retirementAge) { addValuePair('Gewuenschtes Rentenalter', formatNumber(formData.retirementAge) + ' Jahre'); } y += 10; // 3. FINANZIELLE SITUATION addHeading('IHRE FINANZIELLE SITUATION', 2); addValuePair('Monatliches Einkommen', formatCurrency(formData.monthlyIncome), success); addValuePair('Monatliche Ausgaben', formatCurrency(formData.monthlyExpenses), secondary); addValuePair('Monatliche Ersparnis', formatCurrency(monthlySavings), monthlySavings > 0 ? success : secondary); addValuePair('Jaehrliche Ersparnis', formatCurrency(annualSavings), monthlySavings > 0 ? success : secondary); addValuePair('Aktuelles Vermoegen', formatCurrency(formData.currentSavings)); addValuePair('Erwartete Rendite', formatNumber(formData.expectedReturn) + '% p.a.'); y += 10; // 4. DETAILIERTE BERECHNUNG addHeading('DETAILLIERTE BERECHNUNGSGRUNDLAGEN', 2); addText('Die FIRE-Berechnung basiert auf der wissenschaftlich fundierten 4%-Regel (Trinity-Studie). ' + 'Diese besagt, dass Sie bei einem Vermoegen von 25x Ihrer jaehrlichen Ausgaben dauerhaft ' + 'von den Ertraegen leben koennen, ohne das Kapital anzugreifen.'); addValuePair('Jaehrliche Ausgaben', formatCurrency(formData.monthlyExpenses * 12)); addValuePair('FIRE-Multiplikator', formatNumber(formData.savingsGoal) + 'x'); addValuePair('Zielvermoegen (Basis)', formatCurrency(formData.monthlyExpenses * 12 * formData.savingsGoal)); // Länderspezifische Anpassungen (falls verfügbar) if (typeof countryConfig !== 'undefined' && countryConfig[formData.country]) { const countryData = countryConfig[formData.country]; y += 10; addText('Laenderspezifische Anpassungen fuer ' + formData.country.charAt(0).toUpperCase() + formData.country.slice(1) + ':'); addValuePair('Durchschn. Steuersatz', formatPercent(countryData.taxRate)); addValuePair('Inflationsrate', formatPercent(countryData.inflationRate)); addValuePair('Lebenshaltungskosten-Index', formatNumber(countryData.costOfLivingIndex)); addValuePair('Gesundheitskosten-Anteil', formatPercent(countryData.healthcareCost)); addValuePair('Safe Withdrawal Rate', formatPercent(countryData.safeWithdrawalRate)); } // 5. ZEITBERECHNUNG checkPageBreak(100); addHeading('ZEITPLAN BIS ZUR FINANZIELLEN UNABHAENGIGKEIT', 2); if (monthlySavings > 0) { const monthsToFire = Math.log((targetAmount * (formData.expectedReturn/100/12)) / monthlySavings + 1) / Math.log(1 + formData.expectedReturn/100/12); const yearsToFire = monthsToFire / 12; const targetYear = new Date().getFullYear() + Math.ceil(yearsToFire); addValuePair('Zeit bis FIRE', formatNumber(Math.ceil(yearsToFire)) + ' Jahre (' + formatNumber(Math.ceil(monthsToFire)) + ' Monate)'); addValuePair('Voraussichtliches FIRE-Jahr', formatNumber(targetYear)); addValuePair('Ihr Alter bei FIRE', formatNumber(formData.age + Math.ceil(yearsToFire)) + ' Jahre'); // Meilensteine y += 10; addText('Wichtige Meilensteine auf Ihrem FIRE-Weg:'); const milestones = [0.25, 0.5, 0.75, 1.0]; milestones.forEach(milestone => { const milestoneAmount = targetAmount * milestone; const currentProgress = formData.currentSavings / targetAmount; if (milestone > currentProgress) { const monthsToMilestone = Math.log((milestoneAmount * (formData.expectedReturn/100/12)) / monthlySavings + 1) / Math.log(1 + formData.expectedReturn/100/12); const yearsToMilestone = monthsToMilestone / 12; const milestoneYear = new Date().getFullYear() + Math.ceil(yearsToMilestone); addValuePair( `${formatNumber(milestone * 100)}% erreicht (${formatCurrency(milestoneAmount)})`, `${formatNumber(milestoneYear)} (in ${formatNumber(Math.ceil(yearsToMilestone))} Jahren)` ); } }); } else { addText('WARNUNG: Mit aktuellen Ausgaben hoeher als Einnahmen ist FIRE nicht erreichbar. ' + 'Reduzieren Sie Ihre Ausgaben oder erhoehen Sie Ihr Einkommen.', secondary); } // 6. OPTIMIERUNGSEMPFEHLUNGEN checkPageBreak(150); addHeading('EMPFEHLUNGEN ZUR OPTIMIERUNG', 2); const recommendations = []; if (savingsRate < 10) { recommendations.push('NIEDRIGE SPARQUOTE: Versuchen Sie, mindestens 10-20% zu sparen.'); } else if (savingsRate < 20) { recommendations.push('VERBESSERUNG: Erhoehen Sie Ihre Sparquote auf mindestens 20% fuer schnelleren FIRE-Erfolg.'); } else if (savingsRate >= 50) { recommendations.push('HERVORRAGEND: Ihre Sparquote ist ausgezeichnet! Achten Sie auf Work-Life-Balance.'); } if (formData.expectedReturn < 4) { recommendations.push('RENDITE: Pruefen Sie risikoreichere Anlagen fuer hoehere Renditen (ETFs, Aktien).'); } else if (formData.expectedReturn > 10) { recommendations.push('WARNUNG: Ihre Rendite-Erwartung ist sehr optimistisch. Seien Sie konservativ.'); } if (formData.familyStatus.includes('family')) { recommendations.push('FAMILIE: Als Familie planen Sie zusaetzlich fuer Bildungskosten und hoehere Ausgaben.'); } if (formData.employmentType === 'self_employed') { recommendations.push('SELBSTSTAENDIG: Als Selbststaendiger bauen Sie einen groesseren Notfallpuffer auf (6-12 Monate).'); } if (formData.housingStatus === 'renting') { recommendations.push('MIETER: Als Mieter koennen Immobilien-Investments zur Diversifikation sinnvoll sein.'); } recommendations.push('BILDUNG: Bilden Sie sich kontinuierlich weiter: Buecher, Podcasts, Finanzblogs.'); recommendations.push('REVIEW: Ueberpruefen Sie Ihre FIRE-Strategie jaehrlich und passen Sie sie an.'); recommendations.push('DIVERSIFIKATION: Achten Sie auf Diversifikation: Nicht alles in eine Anlageklasse.'); recommendations.forEach(rec => { addText('• ' + rec); }); // 7. WICHTIGE HINWEISE checkPageBreak(100); addHeading('WICHTIGE HINWEISE UND DISCLAIMER', 2); addText('Diese Berechnung dient nur zur Orientierung und ersetzt keine professionelle Finanzberatung. ' + 'Folgende Faktoren sollten zusaetzlich beruecksichtigt werden:'); const disclaimers = [ 'Inflation kann Ihre Kaufkraft ueber die Jahre verringern', 'Steuern auf Kapitalertraege variieren je nach Land und Anlageart', 'Marktkrisen koennen Ihre Anlagen zeitweise stark beeintraechtigen', 'Gesundheitskosten koennen im Alter deutlich steigen', 'Lebenserwartung und Gesundheit sind individuelle Faktoren', 'Politische und wirtschaftliche Veraenderungen koennen Einfluss haben', 'Die historische 4%-Regel gilt nicht fuer alle Marktphasen', 'Diversifikation ueber verschiedene Anlageklassen ist wichtig' ]; disclaimers.forEach(disclaimer => { addText('• ' + disclaimer); }); // Footer auf jeder Seite function addFooter() { const totalPages = doc.internal.getNumberOfPages(); for (let i = 1; i <= totalPages; i++) { doc.setPage(i); doc.setFont('helvetica','italic'); doc.setFontSize(8); doc.setTextColor(lightGray[0], lightGray[1], lightGray[2]); doc.text('FIRE-Berechnung erstellt von Toolkitdaily.com', margin, pageHeight - 20); doc.text('Seite ' + formatNumber(i) + ' von ' + formatNumber(totalPages), pageWidth - margin - 60, pageHeight - 20); } } addFooter(); // PDF speichern const fileName = `FIRE-Berechnung_${formData.country}_${new Date().toISOString().split('T')[0]}.pdf`; doc.save(fileName); console.log('PDF erfolgreich erstellt:', fileName); } catch(err) { console.error('PDF Export Fehler:', err); alert('Fehler beim PDF-Export: ' + err.message); } }; // Link teilen Funktion - ohne Popup, zeigt Status direkt am Button window.shareFireResults = function() { console.log('🔗 FIRE Link teilen...'); const shareButton = document.getElementById('shareButton'); const originalText = shareButton.innerHTML; try { shareButton.innerHTML = ' Erstelle Link...'; shareButton.disabled = true; const formData = { monthlyIncome: document.getElementById('monthlyIncome').value, monthlyExpenses: document.getElementById('monthlyExpenses').value, currentSavings: document.getElementById('currentSavings').value, expectedReturn: document.getElementById('expectedReturn').value, country: document.getElementById('country').value, age: document.getElementById('age').value, currency: document.getElementById('currency').value, familyStatus: document.getElementById('familyStatus').value, housingStatus: document.getElementById('housingStatus').value, employmentType: document.getElementById('employmentType').value, fireType: document.getElementById('fireType').value, riskTolerance: document.getElementById('riskTolerance').value, retirementAge: document.getElementById('retirementAge').value, savingsGoal: document.getElementById('savingsGoal').value }; const params = new URLSearchParams(formData); const shareUrl = window.location.origin + window.location.pathname + '?' + params.toString(); if (navigator.clipboard) { navigator.clipboard.writeText(shareUrl).then(() => { shareButton.innerHTML = ' Link kopiert!'; shareButton.classList.remove('btn-info'); shareButton.classList.add('btn-success'); setTimeout(() => { shareButton.innerHTML = originalText; shareButton.classList.remove('btn-success'); shareButton.classList.add('btn-info'); shareButton.disabled = false; }, 3000); }).catch(() => { fallbackCopyToClipboard(shareUrl, shareButton, originalText); }); } else { fallbackCopyToClipboard(shareUrl, shareButton, originalText); } } catch (error) { console.error('❌ Link teilen Fehler:', error); shareButton.innerHTML = ' Fehler!'; shareButton.classList.remove('btn-info'); shareButton.classList.add('btn-danger'); setTimeout(() => { shareButton.innerHTML = originalText; shareButton.classList.remove('btn-danger'); shareButton.classList.add('btn-info'); shareButton.disabled = false; }, 3000); } }; // Fallback für ältere Browser - mit Button-Feedback function fallbackCopyToClipboard(text, button, originalText) { const textArea = document.createElement('textarea'); textArea.value = text; textArea.style.position = 'fixed'; textArea.style.left = '-999999px'; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { const successful = document.execCommand('copy'); if (successful) { button.innerHTML = ' Link kopiert!'; button.classList.remove('btn-info'); button.classList.add('btn-success'); } else { throw new Error('Copy command failed'); } } catch (error) { console.error('❌ Fallback Copy Fehler:', error); button.innerHTML = ' Fehler beim Kopieren'; button.classList.remove('btn-info'); button.classList.add('btn-warning'); } document.body.removeChild(textArea); setTimeout(() => { button.innerHTML = originalText; button.classList.remove('btn-success', 'btn-warning'); button.classList.add('btn-info'); button.disabled = false; }, 3000); } // Neue Berechnung starten window.resetFireForm = function() { console.log('🔄 FIRE Formular zurücksetzen...'); const form = document.getElementById('fireForm'); if (form) { form.reset(); // Validierungsmarkierungen entfernen document.querySelectorAll('.is-invalid').forEach(el => { el.classList.remove('is-invalid'); }); // Fehlermeldungen ausblenden const errorContainer = document.getElementById('validationErrorsContainer'); if (errorContainer) { errorContainer.style.display = 'none'; } // Ergebnis-Container ausblenden const resultContainer = document.getElementById('resultContainer'); if (resultContainer) { resultContainer.style.display = 'none'; } // URL-Parameter entfernen const url = window.location.origin + window.location.pathname; window.history.replaceState({}, document.title, url); // Zum Formular scrollen document.getElementById('fireForm').scrollIntoView({ behavior: 'smooth' }); } console.log('✅ FIRE Formular zurückgesetzt'); }; function displayResults(results) { if (!resultContainer) return; const formatCurrency = (amount) => { return formatInternationalCurrency(amount, getCurrencyByBrowserLanguage(), true); }; const formatPercent = (value) => { return (value * 100).toFixed(1) + '%'; }; const formatYears = (years) => { if (years < 1) { return `${Math.ceil(years * 12)} Monate`; } return `${Math.floor(years)} Jahre und ${Math.ceil((years % 1) * 12)} Monate`; }; // Empfehlungen als HTML formatieren const recommendationsHtml = results.recommendations.length > 0 ? results.recommendations.map(rec => `
  • ${rec}
  • `).join('') : '
  • Ihre aktuelle Strategie ist gut ausbalanciert für dieses Land.
  • '; // Aktualisiere die Werte im existierenden HTML-Template document.getElementById('fire-result-value').textContent = `${results.yearsToFire > 0 ? formatYears(results.yearsToFire) : 'Bereits erreicht!'}`; document.getElementById('jahre-display').textContent = results.yearsToFire > 0 ? Math.round(results.yearsToFire) : '0'; document.getElementById('vermoegen-display').textContent = formatCurrency(results.fireNumber); document.getElementById('sparrate-display').textContent = formatCurrency(results.monthlySavings); // Deadline-Check aktualisieren const deadlineCheck = document.getElementById('deadline-check'); const deadlineMessage = document.getElementById('deadline-message'); if (results.yearsToFire <= 0) { deadlineCheck.className = 'alert alert-success'; deadlineMessage.textContent = 'Gratulation! Sie haben bereits die finanzielle Unabhängigkeit erreicht!'; deadlineCheck.style.display = 'block'; } else if (results.yearsToFire > 50) { deadlineCheck.className = 'alert alert-warning'; deadlineMessage.textContent = `Mit der aktuellen Strategie dauert es ${Math.round(results.yearsToFire)} Jahre. Erhöhen Sie Ihre Sparrate oder überprüfen Sie Ihre Ausgaben.`; deadlineCheck.style.display = 'block'; } else { deadlineCheck.style.display = 'none'; } // Detaillierte FIRE-Analyse Tabelle befüllen const analysisTable = document.getElementById('fire-analysis-table'); analysisTable.innerHTML = `FIRE-Zahl (${results.savingsGoal.toFixed(1)}x Ausgaben)${formatCurrency(results.fireNumber)}Angepasst für ${results.selectedCountry}Aktueller Fortschritt${results.currentFireProgress.toFixed(1)}% ${results.currentFireProgress > 50 ? 'Gut' : results.currentFireProgress > 20 ? 'Mittel' : 'Niedrig'} Monatliches FIRE-Sparziel${formatCurrency(results.monthlyFireTarget)} ${results.monthlySavings >= results.monthlyFireTarget ? 'Erreicht' : 'Untererfüllt'} Sparquote${results.savingsRate.toFixed(1)}% ${results.savingsRate >= 50 ? 'Exzellent' : results.savingsRate >= 20 ? 'Gut' : 'Verbesserungsbedarf'} Safe Withdrawal Rate${formatPercent(results.countryConfig.safeWithdrawalRate)}Länderspezifisch `; // Optimierungsvorschläge befüllen const fireTips = document.getElementById('fire-tips'); const tipsList = results.recommendations.length > 0 ? results.recommendations : [ 'Ihre aktuelle Strategie ist gut ausbalanciert.', 'Überprüfen Sie regelmäßig Ihre Ausgaben.', 'Diversifizieren Sie Ihre Investitionen.', 'Berücksichtigen Sie Inflation in Ihrer Planung.', 'Bauen Sie einen Notfallfonds auf.' ]; fireTips.innerHTML = tipsList.map(tip => `
    ${tip}
    ` ).join(''); // FIRE-Interpretation aktualisieren const interpretation = document.getElementById('fire-interpretation'); let interpretationText = ''; let alertClass = 'alert-secondary'; if (results.yearsToFire <= 0) { interpretationText = 'Exzellent! Sie haben die finanzielle Unabhängigkeit bereits erreicht. Fokussieren Sie sich nun auf den Erhalt und das Management Ihres Vermögens.'; alertClass = 'alert-success'; } else if (results.yearsToFire <= 15) { interpretationText = `Sehr gut! Mit ${Math.round(results.yearsToFire)} Jahren bis zur FIRE sind Sie auf einem ausgezeichneten Weg. Ihre Sparquote von ${results.savingsRate.toFixed(1)}% ist beeindruckend.`; alertClass = 'alert-success'; } else if (results.yearsToFire <= 25) { interpretationText = `Gut! ${Math.round(results.yearsToFire)} Jahre bis zur FIRE ist ein realistisches Ziel. Überprüfen Sie regelmäßig Ihre Strategie und passen Sie sie bei Bedarf an.`; alertClass = 'alert-info'; } else if (results.yearsToFire <= 40) { interpretationText = `Solide Basis! Mit ${Math.round(results.yearsToFire)} Jahren haben Sie noch Zeit für Optimierungen. Erhöhen Sie schrittweise Ihre Sparrate oder reduzieren Sie Ausgaben.`; alertClass = 'alert-warning'; } else { interpretationText = `Herausforderung! ${Math.round(results.yearsToFire)} Jahre sind sehr lang. Überdenken Sie grundlegend Ihre Einnahmen- und Ausgabenstruktur. Professionelle Beratung kann hilfreich sein.`; alertClass = 'alert-danger'; } interpretation.className = `alert ${alertClass}`; interpretation.textContent = interpretationText; // Eingaben-Übersicht aktualisieren document.getElementById('einkommen-result').textContent = formatCurrency(parseFloat(document.getElementById('monthlyIncome').value) || 0); document.getElementById('ausgaben-result').textContent = formatCurrency(parseFloat(document.getElementById('monthlyExpenses').value) || 0); document.getElementById('ersparnisse-result').textContent = formatCurrency(parseFloat(document.getElementById('currentSavings').value) || 0); document.getElementById('rendite-result').textContent = (parseFloat(document.getElementById('expectedReturn').value) || 0) + '%'; document.getElementById('fire-typ-result').textContent = document.querySelector('select[name="fireType"] option:checked').textContent || '-'; document.getElementById('land-result').textContent = results.selectedCountry.charAt(0).toUpperCase() + results.selectedCountry.slice(1); document.getElementById('alter-result').textContent = (parseFloat(document.getElementById('currentAge').value) || 0) + ' Jahre'; document.getElementById('sparquote-result').textContent = results.savingsRate.toFixed(1) + '%'; resultContainer.style.display = 'block'; if (validationErrorsContainer) validationErrorsContainer.style.display = 'none'; } // Tooltips aktivieren if (typeof $ !== 'undefined' && $.fn.tooltip) { $('[data-toggle="tooltip"]').tooltip(); } });