Zum Inhalt springen
boolvector8

pyfifovap: Tool zur Steuerberechnung mit Portfolio Performance-Exporten (inkl. FIFO, TFS, VAP)

Empfohlene Beiträge

boolvector8
· bearbeitet von boolvector8
Typo

Hallo zusammen,

 

hiermit möchte ich kurz ein Software-Werkzeug vorstellen, das zur Steuerplanung eingesetzt werden kann: pyfifovap. Es berechnet auf Basis von Portfolio Performance-Exporten den steuerpflichtigen Gewinn von Wertpapieren nach dem FIFO-Prinzip - inklusive Teilfreistellung (TFS) und bereits angefallener Vorabpauschalen (VAP) im Fall von Fonds wie ETFs.

 

Konkret kann es helfen bei Fragen wie bspw.

  • Welche Chargen werden bei einem Verkauf nach FIFO zuerst herangezogen, und welcher steuerliche Anschaffungspreis gilt dafür (inkl. bereits versteuerter VAP)?
  • Wie viel steuerpflichtigen Kapitalertrag realisiere ich, wenn ich aus einem von mehreren Depots eine bestimmte Menge entnehme - z. B. zur Ausnutzung des Sparer-Pauschbetrags oder Grundfreibetrags?
  • Welche Steuer (KESt + Soli + ggf. Kirchensteuer) fiele dafür konkret an?

 

Als Ergebnis entsteht eine XLSX-Datei mit einer Übersicht sowie einem Detail-Tab für jedes Wertpapier in jedem Depot (Screenshot siehe Github).

 

Weiteres:

  • Es ist ein Planungswerkzeug, kein Ersatz für Steuerberatung und nicht für die Steuererklärung gedacht.
  • Das Programm ist noch jung und kann Fehler enthalten.
  • VAP und TFS müssen pro Wertpapier als vereinfachte Eingangswerte gepflegt werden
    • Beispiel: IE00BK5BQT80 (Vanguard FTSE All-World Acc ETF) hat 30% Teilfreistellung und im Jahr 2023 1,637814250 EUR Vorabpauschale vor TFS je Anteil gehabt
  • Es deckt nur KESt-pflichtige Wertpapiere ab (keine Kryptowährungen etc.)
  • Voraussetzung sind sauber gepflegte Buchungen in PP mit Basiswährung EUR
    • Wertpapiere notiert in Fremdwährungen werden derzeit für USD und GBP unterstützt, weitere Währungen wären aber trivial hinzuzufügen.
  • Man muss ein Python-Skript starten können.

 

Der Code ist offen einsehbar, es wird kein kommerzielles Interesse verfolgt: https://github.com/nspo/pyfifovap 

 

Über Rückmeldungen, konstruktive Kritik und Fehlerberichte freue ich mich.

Viele Grüße

Diesen Beitrag teilen


Link zum Beitrag
SlowHand7

Was ist da nun der Benefit gegenüber PP?

Diesen Beitrag teilen


Link zum Beitrag
Bast
vor 7 Stunden von SlowHand7:

Was ist da nun der Benefit gegenüber PP?

Berechnung der folgenden Fragen, insbesondere der ersten Frage:

vor 7 Stunden von boolvector8:
  • Welche Chargen werden bei einem Verkauf nach FIFO zuerst herangezogen, und welcher steuerliche Anschaffungspreis gilt dafür (inkl. bereits versteuerter VAP)?
  • Wie viel steuerpflichtigen Kapitalertrag realisiere ich, wenn ich aus einem von mehreren Depots eine bestimmte Menge entnehme - z. B. zur Ausnutzung des Sparer-Pauschbetrags oder Grundfreibetrags?
  • Welche Steuer (KESt + Soli + ggf. Kirchensteuer) fiele dafür konkret an?

Oder kannst Du das in PP?

 

@boolvector8: Eine Noob-Frage: Ist das für Linux oder läuft das auch auf MacOS?

Diesen Beitrag teilen


Link zum Beitrag
boolvector8
5 hours ago, Bast said:

 

@boolvector8: Eine Noob-Frage: Ist das für Linux oder läuft das auch auf MacOS?

Das ist prinzipiell unabhängig vom Betriebssystem lauffähig, eigentlich muss nur Python installiert sein. Aber da es aktuell ein Kommandozeilenprogramm ist, sind Linux-Nutzer wahrscheinlich am ehesten mit so etwas vertraut o:)

 

Wenn es Nachfrage gibt, kann ich die Anleitung bei Gelegenheit mal so überarbeiten, dass es für Normalo-Windows-User und Normalo-MacOS-User etwas leichter wird.

 

Falls du es mit einer KI-generierten Anleitung - also ohne Garantien! - versuchen möchtest (kann ich leider nicht selbst ausführen mangels MacOS-Rechner, sieht aber soweit nachvollziehbar aus):

 

Quote

Unter macOS geht es am einfachsten so:

1. Python 3 installieren – entweder mit dem offiziellen Installer von python.org
   (am einfachsten ohne Vorkenntnisse):
   https://www.python.org/downloads/macos/
   ... oder per Homebrew (https://brew.sh) mit:
   brew install python

2. pyfifovap herunterladen – auf GitHub oben über "Code -> Download ZIP" und entpacken
   (oder per "git clone"):
   https://github.com/nspo/pyfifovap

3. Terminal im entpackten Ordner öffnen (Tipp: im Terminal "cd " eintippen und dann den
   Ordner aus dem Finder ins Terminal ziehen) und einmalig eine virtuelle Umgebung mit den
   Abhängigkeiten anlegen:


   python3 -m venv .venv
   source .venv/bin/activate
   pip install -r requirements.txt

4. Ausführen (mit den eigenen Exporten aus Portfolio Performance):


   python main.py -b Alle_Buchungen.csv -w "Wertpapiere_(Standard).csv"

Die virtuelle Umgebung (Schritt 3) empfehle ich, weil aktuelle Python-Versionen unter macOS
ein globales "pip install" sonst häufig mit der Meldung "externally-managed-environment"
blockieren. Beim nächsten Start reichen dann "source .venv/bin/activate" und der
"python main.py ..."-Aufruf.

 

Diesen Beitrag teilen


Link zum Beitrag
Mojo-cutter

Danke für das Bereitstellen der Software. 
Für Interessierte, ich habe Claude.ai (opus 4.8) drauf schauen lassen:
 

Zitat

Sicherheit: sauber, mit einer dokumentierten Ausnahme. Reines Python (1.400 Zeilen über 3 Dateien), kein eval/exec/subprocess/Sockets. Einziger Internet-Kontakt ist yfinance — im Code verifiziert: ausschließlich in der ForexHelper-Klasse für Fremdwährungskurse, mit --offline-Flag zum kompletten Abschalten. Die README-Aussage „keine Depotdaten gehen ins Netz” deckt sich mit dem Code. GPL-3.0, Tests + CI vorhanden. Einschränkungen wie gehabt: junges Projekt (18 Sterne, 1 Entwickler, keine Releases), der Autor selbst schreibt „kann Fehler beinhalten, keine Steuerberatung” — Ergebnisse also gegen Broker-Abrechnungen bzw. mit Steuerberater plausibilisieren.


Interessant fand ich auch, habe es aber noch nicht geprüft ob es tatsächlich funktioniert:

Zitat

Ich (claude.ai) kann es voraussichtlich direkt hier in meiner Umgebung ausführen. PyPI und GitHub sind in meiner Sandbox erreichbar; mit --offline entfällt der Yahoo-Zugriff (dein Depot ist ohnehin überwiegend EUR-notiert). Du müsstest also nichts lokal installieren: CSVs hochladen, ich lasse pyfifovap laufen, prüfe das Ergebnis-XLSX und verdrahte die relevanten Zahlen (Chargen-Reihenfolge, EM-Bond-Verlust, VAP-Bestand) mit dem Modell. Ob es fehlerfrei durchläuft, sehe ich erst mit echten Daten — das ist eine Erwartung, kein Versprechen.

 

Diesen Beitrag teilen


Link zum Beitrag
migieger
vor 20 Stunden von Mojo-cutter:

Interessant fand ich auch, habe es aber noch nicht geprüft ob es tatsächlich funktioniert:

Zitat

Ich (claude.ai) kann es voraussichtlich direkt hier in meiner Umgebung ausführen. PyPI und GitHub sind in meiner Sandbox erreichbar; mit --offline entfällt der Yahoo-Zugriff (dein Depot ist ohnehin überwiegend EUR-notiert). Du müsstest also nichts lokal installieren: CSVs hochladen, ich lasse pyfifovap laufen, prüfe das Ergebnis-XLSX und verdrahte die relevanten Zahlen (Chargen-Reihenfolge, EM-Bond-Verlust, VAP-Bestand) mit dem Modell. Ob es fehlerfrei durchläuft, sehe ich erst mit echten Daten — das ist eine Erwartung, kein Versprechen.

 


Du würdest sicher nur Testdaten zu Anthropic hochladen, oder?
 

Diesen Beitrag teilen


Link zum Beitrag
Mojo-cutter
vor 5 Stunden von migieger:

Du würdest sicher nur Testdaten zu Anthropic hochladen, oder?

Warum? Mir ist mein Depot anonym genug. Wenn ich da Sorge habe, darf ich es hier auch nicht teilen. Oder warum fragst du?

Diesen Beitrag teilen


Link zum Beitrag
Cinquetti
Am 10.6.2026 um 12:32 von Mojo-cutter:

Danke für das Bereitstellen der Software. 
Für Interessierte, ich habe Claude.ai (opus 4.8) drauf schauen lassen:


Ich mach relativ viel mit Claude und Python in meinen Hobbyprojekten.

Hier sind die Erkenntnisse von meinem Python-Specialist-Skill.
@boolvector8 Ich hoffe das hilft Dir:

  1. Geld als Decimal statt float (der eine echte Korrektheits-Punkt)
    In SecurityLot.purchased_value, parse_money_to_eur() etc. läuft alles über float.
    Du hast das selbst im Kommentar markiert (# Yes, as float at the moment). Für ein Steuer-Werkzeug ist das der heikelste Punkt: float kann sich bei Summen/Verrechnung im Cent-Bereich verschieben, und genau diese Cent landen am Ende in der KESt-Berechnung.
    Standard für Geldbeträge ist decimal.Decimal (mit quantize() aufs Hundertstel).
    Stückzahlen dürfen float bleiben (Bruchstücke), aber Beträge in EUR sollten Decimal sein.
    Das ist mMn der Tipp mit dem höchsten Hebel.
     
  2. pyproject.toml + uv statt requirements.txt + bare pip
    Aktuell sind die Deps unpinned (pandas, yfinance, ...).
    Gerade yfinance bricht zwischen Versionen regelmäßig sein API/Verhalten - heute lauffähig, in 3 Monaten evtl. nicht mehr reproduzierbar.
    Migration:
    - pyproject.toml mit [project], dependencies, requires-python
    - [project.scripts] pyfifovap = "pyfifovap.main:main" -> dann startet es als pyfifovap ... statt ./main.py 
    - uv lock erzeugt eine uv.lock (committen!) -> bit-genau reproduzierbare Installs
    - Setup wird dann ein Befehl: uv sync
     
  3. Verteilung ohne „Python-Skript starten" (Nuitka)
    Du listest selbst als Einschränkung: „Man muss ein Python-Skript starten können."
    Deine Zielgruppe (steuerinteressierte Anleger) ist oft nicht Dev.
    Mit Nuitka (--standalone) baust du pro OS eine native Binary - der Nutzer lädt eine ZIP, entpackt, doppelklickt/startet.
    Pro Plattform auf der jeweiligen Maschine bauen (kein Cross-Compile), lässt sich aber komplett in die bestehende GitHub-Action giessen (tag-getriggert, OS-Matrix, Artefakte ans Release hängen).
    Das senkt deine Einstiegshürd e drastisch. Als Zwischenschritt reicht schon pipx install / uvx dank [project.scripts].
     
  4. mypy in die CI
    ruff lintet, aber type-checkt nicht.
    Du hast schon überall Hints - mit mypy (anfangs nicht-strict, dann schrittweise schärfen) fängst du Typ-Bugs vor der Laufzeit. Ein zusätzlicher CI-Step, kein neuer Workflow.
     
  5.  Kleinkram:
    - CI-Matrix auf 3.11/3.12/3.13 ausweiten (testet aktuell nur 3.11)
    - Optional[X] -> X | None (du bist auf 3.11, geht überall)
    - Optional: poethepoet als Task-Runner (poe test, poe lint, poe build) bündelt die Befehle
    - pyfifovap.py ist mit ~1150 Zeilen ein Mix aus Domänenlogik (FIFO/Steuer), Infrastruktur (yfinance/CSV) und Präsentation (XLSX).
    Ein leichter Split (z. B. domain/, io/, report/) erleichtert Tests - aber das ist „nice to have", kein Muss bei einem Solo-Projekt.

Nuitka :wub: (https://nuitka.net/) kann ich Dir wirklich ans Herz legen. 
Du kannst keinen Endanwender davon überzeugen ein pip install zu machen - da ist die Einstiegshürde zu groß.

 

Diesen Beitrag teilen


Link zum Beitrag
migieger
vor 5 Stunden von Mojo-cutter:
vor 10 Stunden von migieger:

Du würdest sicher nur Testdaten zu Anthropic hochladen, oder?

Warum? Mir ist mein Depot anonym genug. Wenn ich da Sorge habe, darf ich es hier auch nicht teilen. Oder warum fragst du?


Mir wäre das zu unsicher. Diese (sehr persönlichen) Daten landen irgendwo, ohne jegliche Kontrolle meinerseits...
Aber ich bin da auch sehr "old school", keine cloud Dienste, keine Daten in der cloud und so...
 

Diesen Beitrag teilen


Link zum Beitrag
Mojo-cutter
vor 9 Stunden von migieger:

Mir wäre das zu unsicher. Diese (sehr persönlichen) Daten landen irgendwo, ohne jegliche Kontrolle meinerseits...

Absolut richtig. Dessen muss man sich klar sein!

Diesen Beitrag teilen


Link zum Beitrag
Der Heini

Finde ich sehr interessant, folge mal dem Thread.

Aber: Es muss lokal laufen und einfach sein. Also, wie @Cinquettischreibt, einfach per Doppelklick, sowie PP installiert wird. Ansonsten ist die Gefahr der Fehlerseite meinerseits zu hoch, bin ehrlich. Da fehlt auch oft die Geduld.

Lokal, da die Gefahr, daß persönliche Daten irgendwie abgegriffen werden wäre mir zu hoch. Das ist ja gerade der Vorteil von PP gegenüber anderen Cloud-Lösungen.

 

Bisher habe die daten aus PP in Excel-Sheet bei mir gepackt und Steuern grob überschlagen. Das ist aber nur sehr rudimentär für einen Überblick.

Diesen Beitrag teilen


Link zum Beitrag
stagflation
· bearbeitet von stagflation

Hallo @boolvector8,

 

ich habe heute Abend Dein Programm ausprobiert. Es könnte genau das sein, was ich benötige! Vielen Dank, dass Du es geschrieben hast und dass Du es unter einer GNU Lizenz zur Verfügung stellst. Ich werde es in den nächsten Wochen mit meinen Daten testen.

 

Kurz zu meiner Situation. Vor 10 Jahren hatte ich ein paar Scripte für die Verwaltung von Festgeldern geschrieben: Käufe und Verkäufe (Buchungen) habe ich in ASCII-Dateien notiert und Scripte geschrieben, die daraus Reports mit Bestand, Zinszahlungen, Steuern, Rendite-Berechnungen, usw. erstellen. So ähnlich wie ledger. Das hat gut funktioniert. 

 

Für Wertpapiere und Fonds habe ich bisher Tabellenkalkulationen verwendet. Aber das wird mittlerweile zu komplex. Also hatte ich überlegt, meine Festgeld-Scripte auszubauen.

 

Dann habe ich mir Portfolio-Performance angeschaut und festgestellt, dass es mir gut gefällt und dass ich es sehr gut für die Buchungs- und  Bestandsverwaltung verwenden kann. Pluspunkte sind das Einlesen von PDF-Abrechnungen und das schnelle Einpflegen von manuellen Buchungen. Außerdem kann es schöne Reports erstellen verschiedene Erfolgsparameter berechnen. Nur Gewinnberechnung nach FIFO unter Einbeziehung von Vorabpauschalen kann es nicht. Das wollte ich genauso lösen wie Du: Buchungen exportieren und Berechnung mit einem Script. Da Du das Programm aber offenbar bereits geschrieben hast, kann ich mir eine Eigenentwicklung sparen... Deine Ankündigung oben kam für mich jedenfalls exakt zum richtigen Zeitpunkt!

 

Nachtrag: ich habe einen komplizierteren Fall aus meinem Depot mit pyfifovap nachgerechnet. Es geht um einen MSCI World ETF, für den ich mehrere Tranchen bei unterschiedlichen Brokern gekauft hatte. Diese habe ich vor drei Jahren bei einem neuen Broker zusammengefasst. Von diesem ETF wollte ich einen Teil verkaufen. Damit ich möglichst wenig Steuern zahlen musste, wollte ich die Tranchen mit den hohen Einstandspreisen verkaufen. Deshalb habe ich vor dem Verkauf einen Teil-Übertrag zu einem weiteren Broker durchgeführt und danach verkauft. pyfifovap hat den Fall korrekt nach FIFO berechnet und ist nicht durcheinandergekommen. Vorabpauschalen und Teilfreistellung wurden korrekt eingerechnet. Das berechnete Verkaufs-Ergebnis hat bis auf ein paar Euro mit der Abrechnung des Brokers übereingestimmt. Auch die Tranchen, die durch den Depotübertrag jetzt bei dem weiteren Broker liegen, wurden korrekt berechnet. :thumbsup:

Diesen Beitrag teilen


Link zum Beitrag

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×
×
  • Neu erstellen...