Jump to content
julci

Kleine Software zum Tracken von Vorabpauschalen - ETF Steuernotizbuch

Recommended Posts

julci
Posted

Hallo zusammen, 

 

ich habe aus verschiedenen Gründe einen großen Teil meines ETF-Portfolios bei Interactive Brokers (ua da ich es als Sicherheit für Optionshandel und insbesondere Box Spreads nutze).

Häufig habe ich hier im Forum und anderswo gelesen, dass die steuerliche Komplexität so hoch sei, dass sich das so nicht lohnt bei einem ausländischen Broker. Insbesondere die Vorabpauschalen seien schwierig zu berücksichtigen und insbesondere nachzuverfolgen.

Diese Beiträge haben größtenteils Recht, es ist kompliziert und aufwendig. Ich habe auch kein Tool gefunden mit dem ein Tracking möglich ist, auch mit Excel bin ich daran gescheitert (es mag irgendwie gehen, ich bin aber kein Excel-Gott).

 

Dennoch wollte ich nur so eine steuerliche Komplexität nicht als unüberwindbares Hindernis für meine Anlagestrategie akzeptieren, daher habe ich eine kleines Programm mit GUI geschrieben wo ich ETF-Aktivitäten (kann man einfach vom Broker oder PP übernehmen) und tatsächlich gezahlte Vorabpauschalen (kann man aus der eigenen Steuersoftware bekommen) über Jahre eintragen kann die dann bei Verkauf berücksichtigt werden können. Im Kern betrachtet das Tool jede einzelne "Charge" von Anteilen (also gleiches Anschaffungsdatum- und Kurs von im Depot vorhandenen Anteilen) und berechnet daraus jegliche Werte (mit FIFO-Prinzip). Das Speicherformat ist eine reine CSV-Datei.

 

Tatsächlich habe ich nun bereits eine Steuererklärung mit Hilfe des Tools gemacht (mit Verkauf und Anrechnung einer Vorabpauschale) und tracke meine ETF-Bestände damit nun seit knapp 2 Jahren. 

Da ich das Gefühl habe, dass diese Fragestellungen auch ein paar weitere Leute betreffen möchte ich es hiermit teilen (ist komplett OpenSource, kein kommerzielles Interesse). 

Natürlich kann ich keinerlei Gewähr für die Richtigkeit der Berechnungen übernehmen und empfehle dringend die Werte genau zu prüfen. Ich freue mich über jedes Feedback, Fragen und Verbesserungsvorschläge. Ich weiß, es ist nicht besonders schön anzusehen, ich habe es rein auf Funktion ausgelegt und bin kein Designer. Ist auch meine erste GUI-Anwendung mit Python. 

 

Auf Github gibt es weitere Informationen, Bilder, eine Anleitung und das Programm kann runtergeladen werden (für Windows gibt es eine reine exe, für Linux empfehle ich aktuell eine Installation per pip): https://github.com/just1436/etf-steuernotizbuch/

 

Bildschirmfoto vom 2025-11-03 20-54-33.png

Share this post


Link to post
chirlu
Posted
Zitat

Mit dem Button Vorabpauschale eintragen können für einzelne Kalenderjahre Vorabpauschalen eingetragen werden. Es sind die Werte für die Vorabpauschale einzutragen, nicht etwa der Wert der bezahlten Steuer darauf. Pro Kalenderjahr ist natürlich nur eine Vorabpauschale erlaubt.

 

Ich finde es schon einmal beruhigend, dass dir der Unterschied zwischen der Vorabpauschale und der Steuer darauf bewusst ist. Die falsche Bezeichnung im Screenshot („gezahlte Vorabpauschalen“) hatte mich da schon Schlimmes befürchten lassen. :'( Wie geht das Programm damit um, wenn sich die eingetragene Vorabpauschale auf mehrere Tranchen (bei dir „Chargen“) bezieht, die womöglich im Vorjahr in unterschiedlichen Monaten angeschafft worden sind? Und wie wird Teilfreistellung berücksichtigt?

Share this post


Link to post
stagflation
Posted

Von mir gibt es erst einmal :thumbsup::thumbsup::thumbsup: dafür, dass Du eine Software geschrieben hast und auch dafür, dass Du sie als Open Source über GitHub verfügbar machst! Python ist eine gute Wahl für solche Projekte. Und matplotlib ist ein wunderbares Tool zum Zeichnen von Diagrammen.

 

Ich werde mir das Programm in den nächsten Tagen anschauen. 

Share this post


Link to post
julci
Posted
vor 6 Stunden von chirlu:

 

Ich finde es schon einmal beruhigend, dass dir der Unterschied zwischen der Vorabpauschale und der Steuer darauf bewusst ist. Die falsche Bezeichnung im Screenshot („gezahlte Vorabpauschalen“) hatte mich da schon Schlimmes befürchten lassen. :'( Wie geht das Programm damit um, wenn sich die eingetragene Vorabpauschale auf mehrere Tranchen (bei dir „Chargen“) bezieht, die womöglich im Vorjahr in unterschiedlichen Monaten angeschafft worden sind? Und wie wird Teilfreistellung berücksichtigt?

Danke für die Rückmeldung, du hast Recht, "gezahlt" könnte irreführend sein. Ich wollte nicht "berechnet" schreiben, da das unversierte Nutzer dazu verführen könnte diese auf irgendwelchen Online-Rechnern zu berechnen (leider sind die meisten Online-Rechner zu ungenau, berücksichtigen zB nicht die unterjährige Anschaffung). Ich selbst nehme dazu den Wert der tatsächlich abgegebenen Steuererklärung aus WISO, dort ist der Wert nachvollziehbar akkurat. Werde es wohl zu "In früheren Steuererklärungen angegebene Vorabpauschalen" oder so ändern. 

 

Zu unterjähriger Anschaffung in verschiedenen Monaten: Tatsächlich ein wichtiger Punkt der die Situation nochmal deutlich komplizierter werden lässt als es sein müssten. Hier eine möglichst einfache Darstellung: 

- Ich berechne für jede Charge die Anzahl der angebrochenen gehaltenen Monate des Vorjahrs.

- Dann multipliziere ich die Anzahl der Anteile der einzelnen Chargen mit dieser Monatszahl.

- Dann nehme ich die Vorabpauschale des Jahres zu dessen Beginn diese angefallen ist und teile diese gemäß dem berechneten Produkt auf. Beispiel: 

  - Charge 1 von 20 Anteilen  das ganze Jahr gehalten (nicht im Vorjahr gekauft) -> 12 Monate * 20 Anteile = 240 MonatAnteile

  - Charge 2 von 10 Anteilen im Dezember gekauft -> 1 Monat * 10 Anteile = 10 MonateAnteile 

  - Angenommen die Vorabpauschale ist 25€ gewesen

  - Dann wird 25€ / (240 MonateAnteile+10 MonateAnteile) = 0,1 (€/MonateAnteile) gerechnet um den Gewichtungsfaktor zu bekommen

  - Für Charge 1 folgt: 240 MonateAnteile * 0,1€/MonateAnteile = 24€ (Für diese Charge für dieses Jahr abziehbare Vorabpauschale) 

  - Für Charge 2 folgt: 10 MonateAnteile * 0,1€/MonateAnteile = 1€ (Für diese Charge für dieses Jahr abziehbare Vorabpauschale)

  -> In Summe sind es wieder 25€

 

Hier der entsprechende Code-Ausschnitt (es ist etwas anders geschrieben, ist aber das selbe nur quasi "andersrum"). Die Funktion "gibAnzahlVorjahresmonateEinerVorabpauschale" addiert hierbei die Vorjahresmonate aller Positionen, die im Vorjahr oder früher angeschafft wurden. 

def gibSpezielleVorabpauschaleProAnteilEinerPosition(vorabpauschale, position):
    vorabpauschaleHoeheProVorjahresmonate = vorabpauschale.hoehe/gibAnzahlVorjahresmonateEinerVorabpauschale(vorabpauschale)
    vorabpauschaleHoeheProVorjahresmonateProAnteil = vorabpauschaleHoeheProVorjahresmonate / gibAnzahlAnteileZuDatum(vorabpauschale.datumFaelligkeit)

    if position.kaufdatumWert.tm_year < vorabpauschale.datumFaelligkeit.tm_year - 1: #nicht im Vorjahr gekauft?
        return vorabpauschaleHoeheProVorjahresmonateProAnteil * 12 * len(berechnePositionenZuDatum(vorabpauschale.datumFaelligkeit)) # Wert pro Vorjahresmonate * 1 Jahr * Anzahl der Positionen
    else: #im Vorjahr gekauft
        return vorabpauschaleHoeheProVorjahresmonateProAnteil * (13 - position.kaufdatumWert.tm_mon) * len(berechnePositionenZuDatum(vorabpauschale.datumFaelligkeit)) # Wert pro Vorjahresmonate * Monate gehalte * Anzahl der Positionen

 

Ich muss leider sagen, dass in der Übersicht der Wert unten rechts (pro Anteil: ...) noch ein einfacher Durchschnittswert ist. Denke den werde ich rausnehmen da es verwirrend ist und evtl. fälschlicherweise darauf hindeutet, dass die aufwendige Berechnung nicht gemacht wird. 

 

Die Teilfreistellung wird an allen Punkten berücksichtigt an denen eine tatsächliche Steuerlast berechnet wird. Soweit ich es sehe ist die Teilfreistellung nur für diesen letzten Schritt relevant. Das ist eigentlich schon eine Zusatzfunktion, der Kern der Software ist eigentlich ja nur, den Gewinn pro verkaufter Charge zu ermitteln. Der Steuersatz wird dann ja durch das Finanzamt berechnet. Trotzdem fand ich es cool so eine Steuersimulation einzubauen da der Aufwand gering war. Ich fand immer diese Steuersimulation der Comdirect super um schon vor einem Verkauf steuerliche Auswirkungen sehen zu können. Auf den Screenshots in Github siehst du auch die beiden Punkte an denen sie berücksichtigt wird: Im "Jahressteuerbericht" und in der "Steuersimulation", jeweils im letzten Schritt. 

Die Höhe der Teilfreistellung wird bei der Anlage des WP festgelegt und dann immer im CSV gespeichert. Diese kann 0%, 15, 30%, 60% und 80% betragen. 

 

 

Share this post


Link to post
chirlu
Posted
vor 20 Stunden von julci:

Werde es wohl zu "In früheren Steuererklärungen angegebene Vorabpauschalen" oder so ändern. 

 

Der Gesetzgeber nennt es „angesetzte“ Vorabpauschalen, so in § 19 Abs. 1 S. 2 InvStG:

Zitat

Der Gewinn ist um die während der Besitzzeit angesetzten Vorabpauschalen zu vermindern.

 

vor 20 Stunden von julci:

- Ich berechne für jede Charge die Anzahl der angebrochenen gehaltenen Monate des Vorjahrs.

- Dann multipliziere ich die Anzahl der Anteile der einzelnen Chargen mit dieser Monatszahl.

- Dann nehme ich die Vorabpauschale des Jahres zu dessen Beginn diese angefallen ist und teile diese gemäß dem berechneten Produkt auf.

 

Ja, das sollte einigermaßen sinnvolle Werte ergeben (ohne den Code jetzt näher angeschaut zu haben).

 

vor 20 Stunden von julci:

Die Teilfreistellung wird an allen Punkten berücksichtigt an denen eine tatsächliche Steuerlast berechnet wird. Soweit ich es sehe ist die Teilfreistellung nur für diesen letzten Schritt relevant. 

 

Es setzt voraus, dass der Benutzer die Vorabpauschalen auch „vor Teilfreistellung“ eingibt. Das könnte bei jemandem, der sie in der KAP-INV selbst berechnet, besser klappen als bei jemandem, der Werte aus der Abrechnung einer deutschen Bank übernimmt.

Share this post


Link to post
Emitter
Posted · Edited by Emitter
Am 3.11.2025 um 23:25 von julci:

Ich habe auch kein Tool gefunden mit dem ein Tracking möglich ist, auch mit Excel bin ich daran gescheitert (es mag irgendwie gehen, ich bin aber kein Excel-Gott).

Ich habe ein rudimentäres Exceltool geschrieben, siehe Signatur. War aber eine andere Motivation, nicht Tracking, sondern um vorherzusehen, wie viel Cash man auf das Verrechnungskonto Anfang des Jahres packen muss. (Und um wie viel sich das Jahreseinkommen bei der Familienversicherung erhöht.)

Share this post


Link to post
stagflation
Posted · Edited by stagflation

Das Berechnen der Vorabpauschalen geht recht gut mit einer Tabellenkalkulation.

 

Eine gute Tabellenkalkulation, mit der man Tranchen tracken kann, habe ich aber noch nicht gesehen. Gibt es so etwas? Es ist vermutlich schwierig - und man bräuchte neben Formeln viel zusätzlichen Programm-Code. Insofern ist die Idee, ein Python-Programm zu schreiben, naheliegend. Aber auch hier stößt man auf ein Problem. Wenn man es richtig gut machen will, muss man erheblichen Aufwand in das Programm stecken.

 

Meine Anlagestruktur ändert sich gelegentlich und auch die Auswertungen, die ich möchte. Ab und zu ändern sich auch die gesetzlichen Vorgaben oder die Art und Weise, wie Broker Vorabpauschalen abrechnen und die Steuern abführen. Wenn man ein Programm schreibt, wird man also häufig nachprogrammieren und nachtesten müssen. Dieser Aufwand ist mir zu hoch. Deshalb tracke ich die Chargen zurzeit händisch in LibreOffice Calc-Tabellen. Dass nervt zwar, ist aber (für mich) immer noch die schnellste und flexibelste Methode.

Share this post


Link to post
julci
Posted
vor 7 Stunden von stagflation:

Eine gute Tabellenkalkulation, mit der man Tranchen tracken kann, habe ich aber noch nicht gesehen. Gibt es so etwas? Es ist vermutlich schwierig - und man bräuchte neben Formeln viel zusätzlichen Programm-Code.

Theoretisch ist sowas wahrscheinlich mit inkludiertem VB-Code bei Excel oder so möglich. Ich kann sowas aber nicht. 

 

vor 7 Stunden von stagflation:

Ab und zu ändern sich auch die gesetzlichen Vorgaben oder die Art und Weise, wie Broker Vorabpauschalen abrechnen und die Steuern abführen

Ist das tatsächlich bisher seit der Einführung in 2018 passiert? Was wurde an der grundlegenden Methode geändert? Soweit ich weiß hat sich lediglich der Basiszinssatz wie vorgesehen geändert (zeitweise 0%).

 

vor 7 Stunden von stagflation:

Wenn man ein Programm schreibt, wird man also häufig nachprogrammieren und nachtesten müssen.

Ich habe versucht das Programm möglichst offen und einfach zu halten. In den gespeicherten CSV-Dateien sind nur enthalten:
- Metadaten des Fonds (Name, Broker, ISIN, % Teilfreistellung)

- Transaktionsdaten

- bereits angefallene Vorabpauschalen pro Jahr

(Infos zu einzelnen Chargen werden hier nicht gespeichert da nicht erforderlich. Eventuell baue ich in Zukunft mal eine Exportfunktion für externe Verwendung)

Alles (bis vielleicht auf die Höhe der Teilfreistellung) sollte sich auch in Zukunft nicht (rückwirkend) ändern. Transaktionsdaten sind fix, Vorabpauschalen versteuert und damit auf jeden Fall in Zukunft anrechenbar. 

Aus diesen Daten kann man nach heutiger Gesetzgebung alles steuerlich relevante berechnen und das tut mein Programm. Klar, es bezieht sich auf die heutige Gesetzgebung, bei einer neuen Gesetzgebung wäre es anzupassen. Aber die gespeicherten Dateien sind so jederzeit einfach in LibreOffice verwendbar (ich selbst nutze ansonsten außer PP auch LibreOffice für mein finanzielles Tracking).

 

Das Programm hat übrigens gerade mal 900 Zeilen, davon nochmal viel GUI-Zeug.  Denke man findet sich in dem Code schnell zurecht wenn mal eine Änderung erforderlich ist. 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...