Rechenmodell des Zinseszinsrechners
Diese Seite dokumentiert, wie der Zinseszinsrechner auf finanzfacts.de und die gleichnamige Android-App rechnen. Beide nutzen denselben Rechenkern. Er ist gegen eine unabhängige Zweitimplementierung mit Dezimalarithmetik geprüft: über 11.000 zufällige Szenarien mit allen Optionen liefern dort bis auf zehn Stellen dieselben Ergebnisse.
Alle Prozentwerte sind Prozentzahlen (7 bedeutet 7 %). Geldbeträge in Euro, ohne Zwischenrundung gerechnet. Rechtsstand Oktober 2026.
1. Zeitachse
- Start ist der erste Tag des Startmonats
startMonth(1 bis 12) im JahrstartYear. - Interne Zeit
tin Monaten ab Start (Gleitkommazahl). Ein Jahr = 12 Monate. Eine Woche = 12/52 Monate, zwei Wochen = 12/26 Monate, ein Tag = 12/365 Monate. - Alle berechneten Zeitpunkte werden auf 9 Nachkommastellen gerundet (
round(t*1e9)/1e9), damit z. B. 52 Wochen exakt t = 12 ergeben. - Laufzeit
T(Monate, > 0, darf gebrochen sein). SpardauerSmit 0 <= S <= T. - Absoluter Monatsindex:
a(t) = (startMonth - 1) + t. - Jedes Ereignis hat eine Seite: Ende-Seite (gehört zur Periode, die bei t endet) oder Anfangs-Seite (gehört zur Periode, die bei t beginnt).
- Kalenderjahr eines Ereignisses:
startYear + floor((a(t) - 1e-7)/12)auf der Ende-Seite,startYear + floor((a(t) + 1e-7)/12)auf der Anfangs-Seite. - Kalendermonat (1 bis 12) analog:
floor(a ± 1e-7) mod 12 + 1. - Reihenfolge bei gleichem t: (1) alle Ende-Seite-Ereignisse, (2) Vorabpauschale-Berechnung zum Jahresende, (3) Monats-Schnappschuss, (4) alle Anfangs-Seite-Ereignisse. Innerhalb einer Gruppe: Zinsgutschrift vor Einzahlung vor Entnahme; Steuer der Vorabpauschale vor Einzahlungen; Einzahlungen vor Sonderzahlungen vor Entnahmen.
2. Einzahlungen
- Startkapital
K0(>= 0) bei t = 0, Anfangs-Seite. - Sparrate
d(>= 0) im Intervallivmit Intervalllänge L: w = 12/52, 2w = 12/26, m = 1, q = 3, h = 6, y = 12. - Zeitpunkt
timing: pre(vorschüssig, Anfang der Periode): Zahlungen bei t = k·L für k = 0, 1, 2, … solange k·L < S − 1e-9. Anfangs-Seite.post(nachschüssig, Ende der Periode): t = k·L für k = 1, 2, … solange k·L <= S + 1e-9. Ende-Seite.- Dynamik
dyn(% p.a.): Betrag = d · (1 + dyn/100)^j mit j = floor((tp + 1e-9)/12), wobei tp der Beginn der Zahlungsperiode ist (pre: tp = t, post: tp = t − L). - Sonderzahlungen
extras: Liste {month: ganze Zahl m mit 0 <= m < T, amount}. Positiv = Einzahlung, negativ = Entnahme (Bruttoverkauf). Anfangs-Seite bei t = m.
3. Anlageart mode
3a. etf (Fonds/ETF, thesaurierend, Kursmodell)
- Rendite
r(% p.a., effektiv) für Anlagejahr 1, optional Phasenphases= Liste {year: n >= 2, r}. Rendite im Anlagejahr j (t in [12(j−1), 12j)) ist die der Phase mit dem größten year <= j, sonst r. Für t < 0 gilt r. - Laufende Kosten
ter(% p.a.). Nettowachstum im Jahr j: g_j = (1 + r_j)(1 − ter) − 1 (als Dezimalzahlen). - Anteilspreis P(0) = 1. P(t) wächst stetig geometrisch: innerhalb eines Anlagejahres P(t2) = P(t1) · (1 + g_j)^((t2 − t1)/12). Für t < 0 rückwärts mit g_1.
- Kaufkosten je Einzahlung (auch Startkapital und positive Sonderzahlungen):
costFix(€) undcostPct(% vom Einzahlungsbetrag). Kosten c = min(E, costFix + E·costPct/100). Angelegt wird E − c. Anschaffungskosten (Steuer) = E (Kosten erhöhen die Anschaffungskosten). - Jeder Kauf erzeugt ein Los: Anteile u = (E − c)/P(t), Anschaffungskosten je Anteil b = E/u, bisher versteuerte Vorabpauschale je Anteil v = 0, Kaufjahr und Kaufmonat (Kalender, gemäß Seite).
- Depotwert V(t) = Summe Anteile · P(t).
3b. zins (Zinskonto, Tagesgeld, Festgeld, Sparbuch)
- Nominalzins r (% p.a.) mit denselben Phasen wie oben (TER und Kaufkosten entfallen).
- Guthaben B, aufgelaufene, noch nicht gutgeschriebene Zinsen A.
- Zwischen zwei Ereignissen: A += B · r(t)/100 · Δt/12 (lineare Verzinsung, abschnittsweise je Rendite-Phase).
- Zinsgutschrift
credit: y, h, q, m (alle 12/n Monate ab Start), d (täglich, alle 12/365 Monate) oderend(nur am Laufzeitende). Gutschriften bei t = j·Lc für j >= 1 und t < T − 1e-9, zusätzlich immer eine Schlussgutschrift bei t = T. Ende-Seite. - Bei Gutschrift: I = A, A = 0. Steuer s = Steuerbuchung(I). Ohne Ausschüttung: B += I − s. Mit
payout= true (Zinsen werden ausgezahlt): wenn I − s >= 0, wird I − s ausgezahlt und B bleibt; sonst B += I − s.
4. Steuern (tax.on)
- Steuersatz bei Kirchensteuersatz k (0, 8 oder 9 %, als Dezimalzahl kd): q = (1 + 0,055 + kd)/(4 + kd). Ohne Kirchensteuer 26,375 %.
- Sparerpauschbetrag
fsa(€ pro Kalenderjahr, Standard 1.000). - Teilfreistellung
tf(%): Aktienfonds 30, Mischfonds 15, Immobilienfonds 60, Auslands-Immobilienfonds 80, sonst 0. Im Moduszinsimmer 0. - Steuerbuchung im Kalenderjahr y mit steuerpflichtigem Betrag x (darf negativ sein):
- Zustand je Jahr: X (Summe x im Jahr), paid (bereits gezahlte Steuer im Jahr), L (Verlustvortrag zu Jahresbeginn).
- Wechsel in ein neues Jahr (für jedes übersprungene Jahr einzeln): L = max(0, L − X), X = 0, paid = 0.
- Buchung: X += x; due = max(0, X − L − fsa) · q; Steuer = due − paid (negativ = Erstattung); paid = due.
- Zinsmodus: x = I (Zinsgutschrift) im Jahr der Gutschrift.
- ETF-Verkauf von Bruttobetrag G zum Preis P: verkaufte Anteile G/P nach FIFO (älteste Lose zuerst). x = Summe über verkaufte Teil-Lose u · (P − b − v) · (1 − tf/100). Steuer wird vom Verkaufserlös abgezogen (Nettoerlös = G − Steuer).
- Vorabpauschale (nur ETF): für jedes Kalenderjahresende bei t_b mit a(t_b) Vielfaches von 12 und 0 < t_b < T − 1e-9. Jahr Y = Kalenderjahr, das bei t_b endet.
- Basiszins BZ_Y aus Tabelle (2018 0,87; 2019 0,52; 2020 0,07; 2021 −0,45; 2022 −0,05; 2023 2,55; 2024 2,29; 2025 2,53; 2026 3,20 %), für spätere Jahre
bzFuture(% , Standard 3,20). Negativer Basiszins zählt als 0. - P1 = P(t_b − 12) (Jahresanfang), P2 = P(t_b) (Jahresende). Je Anteil: VPu = max(0, min(P1 · 0,7 · BZ, P2 − P1)).
- Für jedes Los im Bestand (nach allen Ende-Seite-Ereignissen bei t_b): Faktor f = 1, wenn Kaufjahr < Y, sonst f = (13 − Kaufmonat)/12. Vorabpauschale des Loses = u · VPu · f; v += VPu · f.
- Summe VP: Steuerbuchung mit x = VP · (1 − tf/100) im Jahr Y + 1 (Anfangs-Seite bei t_b). Diese Steuer zahlt der Anleger vom Verrechnungskonto (externer Abfluss), das Depot bleibt unverändert.
- Ohne Steuern: Steuer immer 0, keine Vorabpauschale.
5. Entnahmeplan (wd.on)
- Beginn t_w =
wd.start(Monate ab Start), Betrag W, Intervall m (1), q (3), y (12), Zeitpunkt pre oder post, Dynamikwd.dyn(% p.a.). - pre: Entnahmen bei t = t_w + k·Lw (k >= 0) solange t < T − 1e-9, Anfangs-Seite. post: k >= 1 solange t <= T + 1e-9, Ende-Seite.
- Betrag = W · (1 + dyn/100)^floor((tp − t_w + 1e-9)/12) mit tp = Beginn der Entnahmeperiode (pre: t, post: t − Lw).
wd.net= false (Brutto): ETF verkauft G = min(Betrag, V); Auszahlung = G − Steuer. Zinsmodus: Auszahlung = min(Betrag, B).wd.net= true (Netto, nur ETF relevant): Verkauf G so, dass G − Steuer(G) = Betrag; reicht das Depot nicht, wird alles verkauft.- Kann ein Betrag nicht voll ausgezahlt werden, gilt das Kapital als aufgebraucht (Zeitpunkt merken). Spätere Entnahmen zahlen, was noch da ist.
- Negative Sonderzahlungen werden wie Brutto-Entnahmen behandelt.
6. Ergebnis
- Monats-Schnappschüsse bei t = 1, 2, …, floor(T) und zusätzlich bei T, falls T gebrochen ist. Wert = V (ETF) bzw. B (Zins).
- Endwert brutto = Wert bei T.
- Endwert netto: ETF = Endwert − Steuer bei hypothetischem Komplettverkauf bei T (Ende-Seite, Steuerzustand wird nicht verändert). Zins = B.
- Real (Kaufkraft heute) = nominal / (1 + infl/100)^(t/12).
- Rendite nach Kosten und Steuern p.a. = interner Zinsfuß der Anleger-Zahlungsströme (Diskontierung (1 + x)^(−t/12)): −Einzahlungen (brutto), +Netto-Entnahmen, −Steuern aus Vorabpauschale, +ausgezahlte Zinsen, + Endwert netto bei T.
- Erträge: ETF = Endwert brutto − Summe angelegter Beträge (nach Kaufkosten) + Summe Bruttoverkäufe. Zins = Summe gutgeschriebener Zinsen (brutto).
7. Monte-Carlo (nur ETF)
- Monatliche Log-Renditen ~ N(ln(1 + g)/12, σ²/12) ab Januar des Startjahres, σ = Volatilität p.a. Innerhalb eines Monats geometrische Interpolation. Zufallsgenerator mit festem Seed.
Prüfung
Der Rechenkern läuft gegen eine zweite, unabhängig programmierte Referenz (Python, Dezimalarithmetik) und gegen geschlossene Formeln (Rentenbarwert, Sparbuchformel, Annuität) sowie Lehrbuchbeispiele zur Vorabpauschale. Findest du eine Abweichung, nutze bitte das Feedback-Formular auf der Rechnerseite.