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.
%
Realistische Renditeerwartung nach Inflation.

Persönliche Umstände

Ihr Hauptwohnsitzland.
Ihr aktuelles Lebensalter.
Ihre Berechnungswährung.
Beeinflusst Ausgaben und Steuerklasse.
Important for expenditure planning.
Beeinflusst Renten- und Krankenversicherung.
Beeinflusst Risikoplanung.

FIRE-Ziele & Präferenzen

Bestimmt Ihre Ausgabenhöhe im Ruhestand.
Ihr Zielrentenalter (leer = so früh wie möglich).
Beeinflusst Safe Withdrawal Rate.
x Annual expenditure
Wird automatisch angepasst (Standard: 25x).

So verwenden Sie den FIRE-Rechner

Mit diesem professionellen FIRE-Rechner (Financial Independence Retire Early) können Sie berechnen, wie viel Vermögen Sie für finanzielle Unabhängigkeit benötigen und wie lange Ihr Weg zur Rente dauert.

1

Angaben machen

Geben Sie Ihr monatliches Einkommen, Ihre Ausgaben, aktuelles Vermögen und gewünschte Rendite ein.

2

Land & Währung wählen

Wählen Sie Ihr Land, damit Steuern, Inflation und Lebenshaltungskosten berücksichtigt werden.

3

Lebenssituation anpassen

Passen Sie Familienstand, Wohnsituation, Beschäftigung und Risikoprofil an.

4

FIRE-Typ wählen

Entscheiden Sie sich für LeanFIRE, klassisches FIRE, FatFIRE, CoastFIRE oder BaristaFIRE.

5

Berechnung starten

Klicken Sie auf „Berechnen“, um Ihr FIRE-Ziel und die voraussichtliche Zeit bis zur finanziellen Unabhängigkeit zu sehen.

6

Ergebnis analysieren

Sehen Sie Ihr benötigtes Vermögen, Sparrate, Zeit bis FIRE und erhalten Sie individuelle Empfehlungen.

Wie das Tool funktioniert

Berechnen Sie präzise, wann Sie finanziell unabhängig sein werden nach dem FIRE-Prinzip — komplett kostenlos und wissenschaftlich fundiert. Der FIRE-Rechner hilft Ihnen, Ihre finanzielle Freiheit zu planen, den Vermögensaufbau zu optimieren und verschiedene Szenarien zu vergleichen.

FIRE-Zahl Berechnung

Automatische Berechnung Ihrer FIRE-Zahl nach der bewährten 25x-Regel. Geben Sie Ihre jährlichen Ausgaben ein und das Tool zeigt sofort, wie viel Vermögen Sie für finanzielle Unabhängigkeit benötigen — inklusive Inflationsanpassung.

3 Szenarien

Vergleichen Sie konservative, realistische und optimistische Prognosen gleichzeitig. Sehen Sie, wie unterschiedliche Renditen und Inflationsraten Ihr FIRE-Datum beeinflussen — für fundierte Finanzentscheidungen.

Timeline-Visualisierung

Interaktive Zeitleiste zeigt Ihre Vermögensentwicklung Jahr für Jahr. Sehen Sie genau, wann Sie verschiedene Meilensteine erreichen und wie Ihr Vermögen nach FIRE über die Jahre hält.
Wichtig: Alle Berechnungen basieren auf der Trinity-Studie und der 4%-Regel. Es werden keine Daten gespeichert — Ihre Finanzplanung bleibt komplett privat und sicher.

Vorteile gegenüber anderen Lösungen

Der FIRE-Rechner ist präziser, umfassender und wissenschaftlich fundierter als einfache Sparrechner oder Excel-Tabellen.
3 Szenarien
Konservativ bis optimistisch
4%-Regel
Trinity-Studie basiert
5 Sprachen
DE, EN, FR, ES, IT

Weitere Vorteile

  • Keine Registrierung: Sofort nutzbar, ohne Login oder Account — unbegrenzt viele Berechnungen möglich.
  • Wissenschaftlich fundiert: Basiert auf der Trinity-Studie und über 30 Jahren historischer Marktdaten.
  • Inflationsbereinigt: Alle Werte in heutiger Kaufkraft — keine irreführenden Nominalzahlen.
  • Mehrsprachig: Volle Unterstützung für Deutsch, Englisch, Französisch, Spanisch und Italienisch.
  • Responsive Design: Funktioniert perfekt auf Desktop, Tablet und Smartphone ohne Installation.

Für wen ist das Tool geeignet?

FIRE-Anwärter & Frugalisten

Perfekt für Menschen, die finanzielle Unabhängigkeit und Frührente anstreben. Berechnen Sie Ihr FIRE-Datum, optimieren Sie Ihre Sparquote und sehen Sie, wie verschiedene Strategien Ihre Ziele beeinflussen.

ETF-Anleger & Sparer

Ideales Tool für die Planung langfristiger Investments in ETF-Portfolios. Sehen Sie, wie Ihr Vermögen bei unterschiedlichen Renditen wächst und wann Sie von Kapitalerträgen leben können — für passive Einkommensstrategien.

Finanzplaner & Berater

Nutzen Sie das Tool als Basis für Kundengespräche oder zur Veranschaulichung von FIRE-Konzepten. Zeigen Sie verschiedene Szenarien und helfen Sie Klienten, realistische Finanzpläne zu erstellen.

Tipps für optimale Nutzung

  1. Realistische Renditen: Nutzen Sie 5-7% für diversifizierte ETF-Portfolios (MSCI World historisch ~7% real). Seien Sie konservativ bei risikoreichen Anlagen.
  2. Inflation einrechnen: Rechnen Sie langfristig mit 2-3% Inflation. Das Tool zeigt alle Werte inflationsbereinigt in heutiger Kaufkraft.
  3. Sparquote erhöhen: Schon kleine Erhöhungen (100-200€ mehr monatlich) können Jahre bis FIRE sparen — testen Sie verschiedene Szenarien!
  4. Sicherheitspuffer: Planen Sie 10-20% mehr Vermögen als die reine FIRE-Zahl für unerwartete Ausgaben und Marktschwankungen ein.
  5. Regelmäßige Updates: Überprüfen Sie Ihre Planung jährlich und passen Sie Annahmen an reale Entwicklungen an — Flexibilität ist wichtig!

Häufig gestellte Fragen (FAQ)

Der FIRE-Rechner ist ein kostenloses Tool zur Berechnung Ihrer finanziellen Unabhängigkeit nach dem FIRE-Prinzip (Financial Independence, Retire Early). Geben Sie Ihr Vermögen, Einkommen, Ausgaben und Sparrate ein — das Tool berechnet automatisch, wann Sie finanziell unabhängig sind und wie lange Ihr Vermögen reicht. Es nutzt die 4%-Regel und berücksichtigt Inflation, Rendite und verschiedene Szenarien.

FIRE steht für "Financial Independence, Retire Early" — ein Finanzkonzept, bei dem Sie genug Vermögen aufbauen, um von den Kapitalerträgen zu leben. Die 4%-Regel besagt, dass Sie jährlich 4% Ihres Vermögens entnehmen können, ohne dass es aufgebraucht wird. Für 40.000 € Jahresausgaben benötigen Sie also 1 Million € Vermögen (40.000 ÷ 0,04 = 1.000.000).

Sie benötigen: Aktuelles Vermögen, monatliches Nettoeinkommen, monatliche Ausgaben, monatliche Sparrate, erwartete jährliche Rendite (z.B. 7% für Aktien-ETFs) und Inflationsrate (historisch ca. 2-3%). Optional können Sie Ihr Alter, Renteneintritt und gewünschtes FIRE-Alter angeben — das Tool berechnet dann individuelle Zeitpläne und zeigt verschiedene Szenarien.

Die Berechnungen basieren auf bewährten Finanzmodellen wie der Trinity-Studie und der 4%-Regel. Die Genauigkeit hängt von Ihren Annahmen ab — Renditen und Inflation schwanken in der Realität. Das Tool bietet konservative (niedrige Rendite) und optimistische (hohe Rendite) Szenarien. Nutzen Sie realistische Werte: 5-7% Rendite für diversifizierte ETF-Portfolios, 2-3% Inflation für langfristige Planung.

Die FIRE-Zahl ist das Vermögen, das Sie für finanzielle Unabhängigkeit benötigen. Berechnung: Jahresausgaben × 25 (entspricht der 4%-Regel). Beispiel: Bei 30.000 € Jahresausgaben ist Ihre FIRE-Zahl 750.000 € (30.000 × 25). Das Tool zeigt Ihnen, wie lange es dauert, bis Sie diese Zahl erreichen, basierend auf Ihrer aktuellen Sparrate und erwarteten Rendite.

Ja, das Tool bietet drei Szenarien: Konservativ (niedrige Rendite, hohe Inflation), Realistisch (moderate Werte) und Optimistisch (hohe Rendite, niedrige Inflation). Sie können auch Parameter wie Sparrate oder Rendite ändern und sofort sehen, wie sich dies auf Ihr FIRE-Datum auswirkt. Dies hilft Ihnen, verschiedene Strategien zu testen und Risiken einzuschätzen.

Ja, der FIRE-Rechner berücksichtigt die Inflation vollständig. Alle zukünftigen Werte werden inflationsbereinigt dargestellt (in heutiger Kaufkraft). Dies bedeutet: Wenn das Tool sagt, Sie benötigen 800.000 €, sind das 800.000 € in heutigen Euro, nicht in nominalen Euro in 20 Jahren. Die Inflation wird automatisch in die Vermögensentwicklung und Entnahmepläne eingerechnet.

Eine höhere Sparrate verkürzt Ihre Zeit bis zur finanziellen Unabhängigkeit dramatisch. Beispiel: Bei 1.000 € Sparrate statt 500 € halbiert sich die Dauer oft nicht nur, sondern verkürzt sich noch stärker (Zinseszins-Effekt). Das Tool zeigt Ihnen sofort, wie viele Jahre Sie durch höhere Sparraten gewinnen. Selbst kleine Erhöhungen (100-200 € mehr) können Jahre einsparen.

Ja, der FIRE-Rechner eignet sich auch für Barista-FIRE oder Coast-FIRE. Für Barista-FIRE (Teilzeitarbeit zur Deckung laufender Kosten) reduzieren Sie die jährlichen Entnahmen und planen ein Nebeneinkommen ein. Für Coast-FIRE (Vermögen wächst bis zur Rente) geben Sie Ihre Sparrate als 0 ein und berechnen, wie lange das bestehende Vermögen bis zur Rente wächst.

Ja, der FIRE-Rechner ist 100% kostenlos ohne versteckte Kosten oder Registrierung. Alle Berechnungen erfolgen lokal in Ihrem Browser — keine Daten werden an Server gesendet oder gespeichert. Ihre finanziellen Informationen bleiben privat und sicher. Das Tool ist DSGVO-konform und kann unbegrenzt oft genutzt werden, um verschiedene Finanzstrategien zu testen.

Bewertung

5.0 von 5 Sternen · 4 Bewertungen
Anzeige
Anzeige
Anzeige
} 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(); } });