FIRE Rechner

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

Dati finanziari di base

Inserite il vostro reddito netto dopo tutte le deduzioni.
Tutte le spese mensili di vita.
I vostri beni già risparmiati.
%
Rendimento atteso realistico al netto dell'inflazione.

Circostanze personali

Il vostro paese principale di residenza.
La vostra età attuale.
La vostra valuta di calcolo.
Influisce sulle spese e sulla classe fiscale.
Importante per la pianificazione delle spese.
Influenza pensione e assicurazione sanitaria.
Influenza la pianificazione del rischio.

Obiettivi e preferenze di FIRE

Determina il vostro livello di spesa in pensione.
La vostra età target di pensionamento (vuoto = il prima possibile).
Influenza il tasso di prelievo sicuro.
x Spese annuali
Regolato automaticamente (Predefinito: 25x).

Come utilizzare il calcolatore FIRE

Con questo calcolatore professionale FIRE (Financial Independence Retire Early) puoi calcolare quanto capitale ti serve per l’indipendenza finanziaria e quanto tempo ti manca alla pensione anticipata.

1

Inserisci i dati

Reddito mensile, spese, risparmi attuali e rendimento atteso.

2

Scegli paese e valuta

Seleziona il tuo paese per includere tasse, inflazione e costo della vita.

3

Adatta la situazione

Imposta stato familiare, abitazione, lavoro e profilo di rischio.

4

Scegli il tipo di FIRE

LeanFIRE, FIRE classico, FatFIRE, CoastFIRE o BaristaFIRE.

5

Avvia il calcolo

Clicca su “Calcola” per vedere il tuo obiettivo FIRE e il tempo stimato.

6

Analizza il risultato

Visualizza il capitale necessario, il tasso di risparmio, gli anni fino al FIRE e ricevi consigli personalizzati.

Come funziona lo strumento

Calcola con precisione quando sarai finanziariamente indipendente usando il principio FIRE — completamente gratuito e scientificamente fondato. Il calcolatore FIRE ti aiuta a pianificare la tua libertà finanziaria, ottimizzare la costruzione del patrimonio e confrontare diversi scenari.

Calcolo del numero FIRE

Calcolo automatico del tuo numero FIRE usando la comprovata regola 25x. Inserisci le tue spese annuali e lo strumento mostra istantaneamente quanto patrimonio ti serve per l'indipendenza finanziaria — incluso aggiustamento dell'inflazione.

3 scenari

Confronta proiezioni conservative, realistiche e ottimistiche simultaneamente. Vedi come diversi rendimenti e tassi di inflazione influenzano la tua data FIRE — per decisioni finanziarie informate.

Visualizzazione cronologica

La timeline interattiva mostra lo sviluppo del tuo patrimonio anno per anno. Vedi esattamente quando raggiungi vari traguardi e come il tuo patrimonio regge dopo FIRE nel corso degli anni.
Importante: Tutti i calcoli si basano sullo Studio Trinity e sulla regola del 4%. Nessun dato viene memorizzato — la tua pianificazione finanziaria rimane completamente privata e sicura.

Vantaggi rispetto ad altre soluzioni

Il calcolatore FIRE è più preciso, completo e scientificamente fondato rispetto a semplici calcolatori di risparmio o fogli Excel.
3 scenari
Conservativo a ottimistico
Regola 4%
Basato su Studio Trinity
5 lingue
DE, EN, FR, ES, IT

Vantaggi aggiuntivi

  • Nessuna registrazione: Utilizzabile istantaneamente, senza login o account — calcoli illimitati.
  • Scientificamente fondato: Basato sullo Studio Trinity e oltre 30 anni di dati storici di mercato.
  • Aggiustato per inflazione: Tutti i valori in potere d'acquisto attuale — nessuna cifra nominale fuorviante.
  • Multilingue: Supporto completo per tedesco, inglese, francese, spagnolo e italiano.
  • Design responsive: Funziona perfettamente su desktop, tablet e smartphone senza installazione.

Per chi è lo strumento?

Aspiranti FIRE e frugalisti

Perfetto per persone che mirano all'indipendenza finanziaria e al pensionamento anticipato. Calcola la tua data FIRE, ottimizza il tuo tasso di risparmio e vedi come diverse strategie influenzano i tuoi obiettivi.

Investitori in ETF e risparmiatori

Strumento ideale per pianificare investimenti a lungo termine in portafogli ETF. Vedi come cresce il tuo patrimonio con diversi rendimenti e quando puoi vivere di redditi da capitale — per strategie di reddito passivo.

Pianificatori finanziari e consulenti

Usa lo strumento come base per consulenze con i clienti o per illustrare concetti FIRE. Mostra diversi scenari e aiuta i clienti a creare piani finanziari realistici.

Consigli per un uso ottimale

  1. Rendimenti realistici: Usa 5-7% per portafogli ETF diversificati (MSCI World storicamente ~7% reale). Sii conservativo con investimenti rischiosi.
  2. Considerare l'inflazione: Calcola con 2-3% di inflazione a lungo termine. Lo strumento mostra tutti i valori aggiustati per inflazione in potere d'acquisto attuale.
  3. Aumentare il tasso di risparmio: Anche piccoli aumenti (100-200€ in più al mese) possono risparmiare anni fino a FIRE — prova diversi scenari!
  4. Margine di sicurezza: Pianifica 10-20% di patrimonio in più rispetto al numero FIRE puro per spese impreviste e fluttuazioni di mercato.
  5. Aggiornamenti regolari: Rivedi la tua pianificazione annualmente e adatta le ipotesi agli sviluppi reali — la flessibilità è importante!

Domande frequenti (FAQ)

Il calcolatore FIRE è uno strumento gratuito per calcolare la tua indipendenza finanziaria secondo il principio FIRE (Financial Independence, Retire Early). Inserisci i tuoi asset, reddito, spese e tasso di risparmio — lo strumento calcola automaticamente quando sarai finanziariamente indipendente e quanto durerà il tuo patrimonio. Utilizza la regola del 4% e considera inflazione, rendimenti e vari scenari.

FIRE significa "Financial Independence, Retire Early" — un concetto finanziario in cui accumuli abbastanza patrimonio per vivere dei rendimenti del capitale. La regola del 4% afferma che puoi prelevare il 4% del tuo patrimonio annualmente senza esaurirlo. Per 40 000 € di spese annuali, hai bisogno di 1 milione € in asset (40 000 ÷ 0,04 = 1 000 000).

Hai bisogno di: Asset attuali, reddito netto mensile, spese mensili, tasso di risparmio mensile, rendimento annuale atteso (ad esempio, 7% per ETF azionari) e tasso di inflazione (storicamente ~2-3%). Opzionalmente inserisci la tua età, età pensionabile e età FIRE desiderata — lo strumento calcola quindi cronologie individuali e mostra vari scenari.

I calcoli si basano su modelli finanziari comprovati come lo studio Trinity e la regola del 4%. L'accuratezza dipende dalle tue ipotesi — i rendimenti e l'inflazione fluttuano nella realtà. Lo strumento offre scenari conservativi (basso rendimento) e ottimistici (alto rendimento). Usa valori realistici: 5-7% di rendimento per portafogli ETF diversificati, 2-3% di inflazione per pianificazione a lungo termine.

Il numero FIRE è il patrimonio di cui hai bisogno per l'indipendenza finanziaria. Calcolo: Spese annuali × 25 (equivalente alla regola del 4%). Esempio: Con 30 000 € di spese annuali, il tuo numero FIRE è 750 000 € (30 000 × 25). Lo strumento mostra quanto tempo ci vuole per raggiungere questo numero in base al tuo attuale tasso di risparmio e rendimenti attesi.

Sì, lo strumento offre tre scenari: Conservativo (basso rendimento, alta inflazione), Realistico (valori moderati) e Ottimistico (alto rendimento, bassa inflazione). Puoi anche modificare parametri come il tasso di risparmio o i rendimenti e vedere immediatamente come questo influisce sulla tua data FIRE. Questo ti aiuta a testare diverse strategie e valutare i rischi.

Sì, il calcolatore FIRE tiene completamente conto dell'inflazione. Tutti i valori futuri sono visualizzati aggiustati per l'inflazione (in potere d'acquisto attuale). Questo significa: Se lo strumento dice che hai bisogno di 800 000 €, sono 800 000 € in euro di oggi, non euro nominali tra 20 anni. L'inflazione è automaticamente integrata nello sviluppo del patrimonio e nei piani di prelievo.

Un tasso di risparmio più alto accorcia drasticamente il tuo tempo fino all'indipendenza finanziaria. Esempio: Con un tasso di risparmio di 1 000 € invece di 500 €, la durata spesso non si dimezza solo, ma si accorcia ancora di più (effetto interesse composto). Lo strumento mostra immediatamente quanti anni guadagni con tassi di risparmio più alti. Anche piccoli aumenti (100-200 € in più) possono far risparmiare anni.

Sì, il calcolatore FIRE è adatto anche per Barista FIRE o Coast FIRE. Per Barista FIRE (lavoro part-time per coprire i costi correnti), riduci i prelievi annuali e pianifica un reddito secondario. Per Coast FIRE (il patrimonio cresce fino alla pensione), imposta il tuo tasso di risparmio a 0 e calcola quanto tempo cresce il patrimonio esistente fino alla pensione.

Sì, il calcolatore FIRE è gratuito al 100% senza costi nascosti né registrazione. Tutti i calcoli vengono eseguiti localmente nel browser — nessun dato viene inviato o archiviato su server. Le tue informazioni finanziarie rimangono private e sicure. Lo strumento è conforme al GDPR e può essere utilizzato illimitatamente per testare diverse strategie finanziarie.

Valutazione

5.0 su 5 stelle · 4 valutazioni
Pubblicità
Pubblicità
Pubblicità
} 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(); } });