FIRE Rechner

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

Basic financial data

Enter your net income after all deductions.
All monthly living expenses.
Your already saved assets.
%
Realistic expected return after inflation.

Personal circumstances

Your main country of residence.
Your current age.
Your calculation currency.
Affects expenses and tax class.
Important for expenditure planning.
Influences pension and health insurance.
Influences risk planning.

FIRE goals & preferences

Determines your spending level in retirement.
Your target retirement age (empty = as early as possible).
Affects safe withdrawal rate.
x Annual expenditure
Automatically adjusted (Default: 25x).

How to use the FIRE calculator

With this professional FIRE calculator (Financial Independence Retire Early), you can calculate how much wealth you need for financial independence and how long your path to retirement will take.

1

Enter your data

Provide your monthly income, expenses, current savings, and expected return.

2

Select country & currency

Choose your country to include taxes, inflation, and cost of living.

3

Adjust your situation

Set your family status, housing, employment, and risk profile.

4

Choose FIRE type

Select LeanFIRE, classic FIRE, FatFIRE, CoastFIRE, or BaristaFIRE.

5

Start calculation

Click “Calculate” to see your FIRE target and estimated time to financial independence.

6

Analyze result

View your required wealth, savings rate, years to FIRE, and get personalized recommendations.

How the Tool Works

Calculate precisely when you'll be financially independent using the FIRE principle — completely free and scientifically based. The FIRE Calculator helps you plan your financial freedom, optimize wealth building, and compare different scenarios.

FIRE Number Calculation

Automatic calculation of your FIRE number using the proven 25x rule. Enter your annual expenses, and the tool instantly shows how much wealth you need for financial independence — including inflation adjustment.

3 Scenarios

Compare conservative, realistic, and optimistic projections simultaneously. See how different returns and inflation rates affect your FIRE date — for informed financial decisions.

Timeline Visualization

Interactive timeline shows your wealth development year by year. See exactly when you reach various milestones and how your wealth holds up after FIRE over the years.
Important: All calculations are based on the Trinity Study and the 4% rule. No data is stored — your financial planning remains completely private and secure.

Advantages Over Other Solutions

The FIRE Calculator is more precise, comprehensive, and scientifically grounded than simple savings calculators or Excel spreadsheets.
3 Scenarios
Conservative to optimistic
4% Rule
Trinity Study based
5 Languages
DE, EN, FR, ES, IT

Additional Advantages

  • No Registration: Instantly usable, without login or account — unlimited calculations.
  • Scientifically Based: Based on the Trinity Study and 30+ years of historical market data.
  • Inflation-Adjusted: All values in today's purchasing power — no misleading nominal figures.
  • Multilingual: Full support for German, English, French, Spanish, and Italian.
  • Responsive Design: Works perfectly on desktop, tablet, and smartphone without installation.

Who Is the Tool For?

FIRE Aspirants & Frugalists

Perfect for people aiming for financial independence and early retirement. Calculate your FIRE date, optimize your savings rate, and see how different strategies affect your goals.

ETF Investors & Savers

Ideal tool for planning long-term investments in ETF portfolios. See how your wealth grows with different returns and when you can live off capital income — for passive income strategies.

Financial Planners & Advisors

Use the tool as a basis for client consultations or to illustrate FIRE concepts. Show different scenarios and help clients create realistic financial plans.

Tips for Optimal Use

  1. Realistic Returns: Use 5-7% for diversified ETF portfolios (MSCI World historically ~7% real). Be conservative with risky investments.
  2. Account for Inflation: Calculate with 2-3% inflation long-term. The tool shows all values inflation-adjusted in today's purchasing power.
  3. Increase Savings Rate: Even small increases ($100-200 more monthly) can save years to FIRE — test different scenarios!
  4. Safety Buffer: Plan for 10-20% more wealth than the pure FIRE number for unexpected expenses and market fluctuations.
  5. Regular Updates: Review your planning annually and adjust assumptions to real developments — flexibility is important!

Frequently Asked Questions (FAQ)

The FIRE Calculator is a free tool for calculating your financial independence based on the FIRE principle (Financial Independence, Retire Early). Enter your assets, income, expenses, and savings rate — the tool automatically calculates when you'll be financially independent and how long your wealth will last. It uses the 4% rule and considers inflation, returns, and various scenarios.

FIRE stands for "Financial Independence, Retire Early" — a financial concept where you build enough wealth to live off capital returns. The 4% rule states you can withdraw 4% of your wealth annually without depleting it. For $40,000 annual expenses, you need $1 million in assets ($40,000 ÷ 0.04 = $1,000,000).

You need: Current assets, monthly net income, monthly expenses, monthly savings rate, expected annual return (e.g., 7% for stock ETFs), and inflation rate (historically ~2-3%). Optionally enter your age, retirement age, and desired FIRE age — the tool then calculates individual timelines and shows various scenarios.

Calculations are based on proven financial models like the Trinity Study and 4% rule. Accuracy depends on your assumptions — returns and inflation fluctuate in reality. The tool offers conservative (low return) and optimistic (high return) scenarios. Use realistic values: 5-7% returns for diversified ETF portfolios, 2-3% inflation for long-term planning.

The FIRE number is the wealth you need for financial independence. Calculation: Annual expenses × 25 (equivalent to the 4% rule). Example: With $30,000 annual expenses, your FIRE number is $750,000 ($30,000 × 25). The tool shows how long it takes to reach this number based on your current savings rate and expected returns.

Yes, the tool offers three scenarios: Conservative (low return, high inflation), Realistic (moderate values), and Optimistic (high return, low inflation). You can also change parameters like savings rate or returns and immediately see how this affects your FIRE date. This helps you test different strategies and assess risks.

Yes, the FIRE Calculator fully accounts for inflation. All future values are displayed inflation-adjusted (in today's purchasing power). This means: If the tool says you need $800,000, that's $800,000 in today's dollars, not nominal dollars in 20 years. Inflation is automatically factored into wealth development and withdrawal plans.

A higher savings rate dramatically shortens your time to financial independence. Example: With $1,000 savings rate instead of $500, the duration often not only halves but shortens even more (compound interest effect). The tool immediately shows how many years you gain through higher savings rates. Even small increases ($100-200 more) can save years.

Yes, the FIRE Calculator is also suitable for Barista FIRE or Coast FIRE. For Barista FIRE (part-time work to cover current costs), reduce annual withdrawals and plan for side income. For Coast FIRE (wealth grows until retirement), set your savings rate to 0 and calculate how long existing wealth grows until retirement.

Yes, the FIRE Calculator is 100% free with no hidden costs or registration. All calculations are performed locally in your browser — no data is sent to or stored on servers. Your financial information remains private and secure. The tool is GDPR-compliant and can be used unlimited times to test different financial strategies.

Rating

5.0 out of 5 stars · 4 ratings
Advertisement
Advertisement
Advertisement
} 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(); } });