KI-gestützter Portfolio Analyzer – wie ich Claude zum Finanzberater gemacht habe

Ich verwalte mein Aktiendepot seit ein paar Jahren selbst. Die Strategie steht – Dividenden mit Wachstumsanteil, 10+ Jahre Horizont – aber die regelmäßige Analyse war immer mühsam: PDFs aus dem Online-Banking, Zahlen manuell abtippen, Excel-Tabellen pflegen.

Ich habe das gelöst. Mit Python, Streamlit und der Claude API.

Tech-Stack: Python • Streamlit • Claude API • Perplexity API • SQLite • Plotly

Das Problem

Ein Depotauszug von ist eine PDF-Datei. Darin stehen Kurswerte, Stückzahlen, ISINs – aber kein Gewinn/Verlust, keine Zielgewichte, keine Handlungsempfehlungen. Wer mehrere Depots hat, multipliziert den Aufwand.

Mein Wunsch: eine App, die mir aus den PDFs und CSVs ein vollständiges Bild meines Portfolios zeigt – und mich auf Unstimmigkeiten und Verbesserungsmöglichkeiten hinweist.

Die Lösung: DepotAnalyzer

Der DepotAnalyzer ist eine lokale Streamlit-App mit folgenden Kernfunktionen:

PDF-Extraktion via Claude

Depotauszüge und Kaufbelege werden direkt an die Claude API geschickt. Claude liest das PDF und gibt strukturiertes JSON zurück – ISIN, Name, Stückzahl, Kurswert, Transaktionstyp. Kein Regex, kein PDF-Parser, kein Scraping.

Gewinn/Verlust automatisch berechnet

Die Bank liefert G/V-Daten mittlerweile als CSV im Depotauszug. Der Analyzer importiert eine CSV-Export-Datei mit Einstiegskursen und berechnet daraus für jede Position den absoluten und relativen Gewinn.

Zielgewichte via Claude

Der eigentliche Kern: Claude analysiert das aktuelle Portfolio gegen eine hinterlegte Anlagestrategie und schlägt Zielgewichte vor. Für jede Position kommt eine Aktion – aufstocken, halten, reduzieren, verkaufen – mit Begründung. Die Tabelle ist farblich codiert: Grün für Käufe, Orange für Reduzierungen, Rot für Verkäufe.

Die aktuelle Handlungsabsicht je Position fließt als Kontext in den Prompt ein. Claude weicht davon nur mit expliziter Begründung ab.

Wachstumsplan

Auf Basis von Sparrate, Zielwert und erwarteter Rendite berechnet die App eine Wachstumskurve – und lässt Claude daraus einen konkreten Investitionsplan ableiten: welche bestehenden Positionen aufgestockt werden sollen, welche neuen Titel passen, und wann das Ziel realistisch erreicht wird.

Research per Position

Für jede Position im Portfolio gibt es einen Research-Button. Ein Klick schickt ISIN und Name an die Perplexity API – zurück kommt eine kompakte Analyse: aktuelle News, Fundamentaldaten, Analystenmeinungen, Risiken und ein Fazit. Direkt in der App, ohne Browser-Tab-Wechsel.

Analyse-Datenbank

Alle Claude-Analysen (Zielgewichte und Wachstumspläne) werden in einer lokalen SQLite-Datenbank gespeichert. So lässt sich die Entwicklung der Empfehlungen über die Zeit nachverfolgen.

Technischer Aufbau

streamlit_app.py  # UI & Seitenlogik
src/extractor/    # PDF → JSON via Claude API
analyzer/         # Aggregation, G/V, Zeitreihen
db/               # SQLite (Analysen-Verlauf)
data/profiles/    # Cache, Strategie, Kostenbasis je Profil
  • Frontend: Streamlit (Python)
  • KI: Claude API (Extraktion + Analyse), Perplexity API (Research)
  • Daten: JSON-Cache, YAML-Strategie, SQLite, CSV-Import
  • Charts: Plotly

Zwei Profile sind möglich – etwa für zwei Personen oder zwei getrennte Strategien.

Was ich gelernt habe

PDFs direkt an ein LLM schicken funktioniert überraschend gut. Claude versteht Tabellenstrukturen in PDFs zuverlässiger als jeder regelbasierte Parser, den ich vorher probiert habe.

Prompts brauchen Kontext, keine Freiheit. Die Zielgewichte-Analyse wurde deutlich besser, sobald Claude die aktuelle Handlungsabsicht je Position als Eingabe bekam. Ein LLM auf der grünen Wiese empfiehlt anders als eines, das weiß: diese Position soll laut Plan reduziert werden.

Lokale Tools haben ihren Reiz. Keine Cloud-Abhängigkeit für die Daten, keine Abo-Kosten, volle Kontrolle. Die App läuft auf meinem Rechner und nirgendwo sonst.


Der Code ist ein laufendes Projekt – neue Features kommen, wenn ich selbst etwas vermisse. Nächster Schritt: Benchmarkvergleich direkt in die Analyse integrieren.