Robinhood-Portfolioberater
Schreibgeschützter Zugriff auf dein Robinhood-Portfolio über den robinhood-mcp-Server. Liefert Live-Daten zu Positionen, Kursen, Fundamentaldaten, Nachrichten, Gewinnen, Analystenbewertungen, Dividenden und Optionen.
Voraussetzungen
1. Robinhood-Konto
Du benötigst ein Robinhood-Konto (kostenlos unter robinhood.com).
2. MCP-Server-Installation
Das robinhood-mcp-Paket stellt den MCP-Server bereit. Installiere es mit einem der folgenden Befehle:
# Empfohlen – läuft über uvx (keine globale Installation nötig, wird automatisch verwaltet)
# Füge es einfach zu deiner Agentenkonfiguration hinzu, und es funktioniert. uvx installiert es beim ersten Start.
# Alternative – globale pip-Installation
pip install robinhood-mcp
Hinweis:
uvxwird vom uv-Python-Paketmanager bereitgestellt. Installiere es zuerst:curl -LsSf https://astral.sh/uv/install.sh | sh
3. Umgebungsvariablen
Setze diese in der .env-Datei deines Agenten oder in deinem Shell-Profil:
| Variable | Erforderlich | Beschreibung |
|---|---|---|
ROBINHOOD_USERNAME | Ja | Deine Robinhood-E-Mail-Adresse |
ROBINHOOD_PASSWORD | Ja | Dein Robinhood-Passwort |
ROBINHOOD_TOTP_SECRET | Nur bei Verwendung einer Authentifikator-App | Das TOTP-Secret aus deiner Authentifikator-Einrichtung. Nicht erforderlich bei Verwendung von SMS-Verifizierung. |
4. Agentenkonfiguration
Siehe das templates/-Verzeichnis für Konfigurationsschnipsel zum Kopieren und Einfügen für deinen Agenten. Kurzübersicht:
Hermes Agent (~/.hermes/config.yaml):
mcp_servers:
robinhood:
command: uvx
args:
- robinhood-mcp
env:
ROBINHOOD_USERNAME: "${ROBINHOOD_USERNAME}"
ROBINHOOD_PASSWORD: "${ROBINHOOD_PASSWORD}"
# ROBINHOOD_TOTP_SECRET: "${ROBINHOOD_TOTP_SECRET}" # Auskommentieren für Authentifikator-App
timeout: 60
connect_timeout: 30
Andere Agenten – siehe templates/-Verzeichnis für Claude Desktop, Claude Code, Codex, OpenCode, Cline und Windsurf.
Nach dem Hinzufügen der Konfiguration starte deinen Agenten neu. Überprüfe mit: hermes mcp test robinhood (Hermes) oder überprüfe den MCP-Status deines Agenten.
Verfügbare MCP-Tools
Diese Tools werden in Hermes Agent als mcp_robinhood_* registriert (Präfix variiert je nach Agent):
| Tool | Beschreibung |
|---|---|
robinhood_get_portfolio | Portfoliowert, Eigenkapital, Kaufkraft, Tagesänderung |
robinhood_get_positions | Alle Bestände mit Kostenbasis, aktuellem Wert, Gewinn/Verlust |
robinhood_get_position | Einzelner Bestand nach Ticker (schneller für ein Symbol) |
robinhood_get_watchlist | Aktien in deinen Beobachtungslisten |
robinhood_get_quote | Echtzeit-Kurs, Geld-/Briefkurs, Volumen |
robinhood_get_fundamentals | KGV, Marktkapitalisierung, Dividendenrendite, 52-Wochen-Spanne |
robinhood_get_historicals | OHLCV-Kurshistorie (5 Min, 10 Min, Stunde, Tag, Woche) |
robinhood_get_news | Aktuelle Nachrichtenartikel zu einem Symbol |
robinhood_get_earnings | Gewinndaten, EPS-Schätzungen, Ist-Werte |
robinhood_get_ratings | Analystenbewertungen (Kaufen/Halten/Verkaufen) |
robinhood_get_dividends | Dividendenzahlungshistorie |
robinhood_get_options_positions | Aktuelle Optionspositionen |
robinhood_search_symbols | Aktien nach Name oder Ticker suchen |
Lokaler Cache
Portfoliodaten werden lokal unter ~/.hermes/data/robinhood/portfolio_cache.json (Hermes) oder ~/.robinhood-mcp/cache.json (andere Agenten) zwischengespeichert.
Cache-First-Strategie
Überprüfe immer zuerst den Cache. Rufe MCP-Tools nur auf, wenn:
- Der Cache älter als 15 Minuten ist UND der Benutzer Live-Daten benötigt
- Der Benutzer explizit eine Aktualisierung wünscht („Aktualisiere mein Portfolio“, „Hole die neuesten Kurse“)
- Der Benutzer nach einem bestimmten, nicht im Cache befindlichen Ticker fragt
- Der Benutzer nach sich schnell ändernden Daten fragt (Nachrichten, Echtzeit-Kurse)
Aktualisieren des Caches
# Hermes Agent Benutzer
python3 scripts/refresh_cache.py
# Mit benutzerdefinierten Pfaden
python3 scripts/refresh_cache.py --cache-dir ~/my-data --vault-path ~/my-vault
# Nur JSON-Ausgabe (kein Obsidian)
python3 scripts/refresh_cache.py --json-only
# Erzwungene Aktualisierung, auch wenn der Cache aktuell ist
python3 scripts/refresh_cache.py --force
Der Agent kann den Cache auch während einer Portfolioabfrage inline aktualisieren, indem er MCP-Tools aufruft und die Ergebnisse in die Cache-Datei schreibt.
Arbeitsablauf für Portfolioabfragen
Wenn der Benutzer nach seinem Portfolio fragt:
- Cache lesen für Kontext (Portfoliowert, Positionen, Allokationen)
- Wenn die Daten veraltet sind (>15 Min.) oder der Benutzer Live-Daten wünscht, MCP-Tools aufrufen
- Cache aktualisieren nach jedem MCP-Abruf
- Im Kontext der tatsächlichen Bestände antworten – nicht mit allgemeinen Ratschlägen
- Auf Kostenbasis, unrealisierten Gewinn/Verlust und Allokation verweisen, wenn relevant
- Bei Optionsfragen mit der Strategie des Benutzers abgleichen, falls bekannt
Wenn der Benutzer nach einem bestimmten Ticker fragt:
- Prüfen, ob
wiki/entities/<ticker>.mdexistiert (bei Verwendung von Obsidian) - Es lesen für bestehende Thesen und Recherchehistorie
- Live-Daten (Kurs, Fundamentaldaten, Nachrichten, Bewertungen) über MCP abrufen
- Mit einer Synthese aus Wiki-Wissen und Live-Daten antworten
- Einen Research-Notiz-Eintrag an die Entitätsseite anhängen (bei Verwendung von Obsidian)
- Wenn der Ticker nicht im Portfolio ist, ihn in einer Recherche-Warteschlange verfolgen
Wann MCP vs. Cache verwenden
| Szenario | Verwenden |
|---|---|
| „Was ist mein Portfolio wert?“ | Cache (wenn aktuell genug) |
| „Wie läuft es mit meiner NVDA?“ | Cache zuerst, MCP bei veralteten oder fehlenden Ticker |
| „Gib mir ein vollständiges Portfolio-Update“ | MCP (immer Live-Daten abrufen) |
| „Gibt es Neuigkeiten zu TSLA?“ | MCP (Nachrichten ändern sich ständig) |
| „Wie sind die Analystenbewertungen für AAPL?“ | MCP (Forschungsdaten sind immer live) |
| „Zeig mir meine Optionspositionen“ | Cache zuerst, MCP bei veralteten Daten |
| „Welche Dividenden habe ich erhalten?“ | Cache zuerst |
| „Aktualisiere meine Daten“ | MCP, dann Cache aktualisieren |
Arbeitsablauf Research-zu-Entität (Optional – Erfordert Obsidian)
Problem: Recherchefragen zu Aktien gehen in Chat-Sitzungen verloren. Lösung: Jeder Bestand oder recherchierte Ticker erhält eine dauerhafte Entitätsseite. Recherchen werden angehängt, nicht vergessen.
Struktur der Entitätsseite
Jeder Ticker erhält eine Seite unter wiki/entities/<ticker>.md:
---
title: Firmenname
created: YYYY-MM-DD
updated: YYYY-MM-DD
type: entity
tags: [ticker, branche, ...]
---
# Firmenname (TICKER)
Kurzer Überblick...
## Wichtige Fakten
...
## Investment-These
...
## Positionshistorie
> Wird automatisch aktualisiert. Nicht manuell bearbeiten.
### Aktuelle Position
| Metrik | Wert |
|--------|------|
| Anzahl | 50 |
| Durchschnittskosten | 40,69 € |
| Aktueller Kurs | 45,20 € |
| Gesamtrendite | +10,8 % |
### Positionsaktualisierungen
- **[2026-04-24]** 50 Aktien zu 40,69 € Durchschnittskosten
## Research-Notizen
> Der Agent hängt nach jeder Rechercheanfrage einen datierten Eintrag an.
### [2026-04-24] Soll ich bei HIMS zu 30 € nachkaufen?
Wichtige Punkte: [Stichpunktzusammenfassung]
Entscheidung: [falls vom Benutzer genannt]
Wann Entitätsseiten aktualisiert werden
- Bei jedem Portfolioabruf – Positionsdaten für jeden Bestand aktualisieren
- Nach jeder Rechercheanfrage – Einen datierten Research-Notiz-Eintrag anhängen
- Beim Erstellen einer neuen Entität – Fundamentaldaten abrufen, Seite erstellen, zum Wiki-Index hinzufügen
Recherche-Warteschlange
wiki/concepts/research-queue.md verfolgt Ticker, die bewertet, aber noch nicht gekauft werden:
| Ticker | Quelle | These (1-zeilig) | Status | Hinzugefügt | Notizen |
|---|---|---|---|---|---|
| ABC | YouTube-Video | EV-Batterie-Play | researching | 2026-04-24 | Erwähnt von MKBHD |
Statuswerte: researching → ready to buy → (entfernt bei Kauf) oder passed
Obsidian-Vault-Integration (Optional)
Jeder Portfolioabruf kann zwei Dateien in deinen Obsidian-Vault schreiben:
| Datei | Verhalten |
|---|---|
_ephemeral/portfolio/snapshots/YYYY-MM-DD-HHMM.md | Unveränderlich – eine pro Abruf, vollständige Daten |
_ephemeral/portfolio/latest.md | Überschrieben – aktueller Zustand + Änderungen zum vorherigen |
Frontmatter für Dataview
Beide Dateien enthalten YAML-Frontmatter:
---
snapshot_time: 2026-04-24T18:58:02Z
date: 2026-04-24
time: 14:58
total_equity: 42700.94
day_change: -834.73
day_change_pct: -1.92
positions_count: 16
options_count: 1
dividends_ytd: 1.68
type: portfolio-snapshot
---
Dies ermöglicht Dataview-Abfragen wie:
TABLE date, total_equity, day_change_pct
FROM "_ephemeral/portfolio/snapshots"
SORT snapshot_time DESC
Delta-Berechnung
Die latest.md vergleicht mit dem letzten Schnappschuss und hebt hervor:
- 🆕 Neue Positionen (gekauft seit dem letzten Abruf)
- ❌ Geschlossene Positionen (verkauft seit dem letzten Abruf)
- 📊 Wesentliche Bewegungen (>5 % Kursänderung ODER >1 % Allokationsverschiebung)
- Eigenkapitalveränderung seit dem letzten Schnappschuss
Um die Obsidian-Integration zu aktivieren, setze das Argument --vault-path beim Ausführen von refresh_cache.py oder setze die Umgebungsvariable ROBINHOOD_VAULT_PATH.
Beratungsrichtlinien
- Antworte immer im Kontext der tatsächlichen Bestände des Benutzers – nicht mit allgemeinen Ratschlägen
- Verweise auf Kostenbasis, unrealisierten Gewinn/Verlust und Allokationsprozentsätze, wenn relevant
- Verstehe bei Optionsfragen die Strategie des Benutzers (z. B. 0DTE-Ausbruch)
- Zeige bei Handlungsempfehlungen die Berechnung (aktuelle Allokation, Risiko/Ertrag)
- Schlage niemals Trades vor, es sei denn, der Benutzer bittet ausdrücklich um Empfehlungen
- Markiere Konzentrationsrisiken, wenn eine einzelne Position 20 % des Portfolios überschreitet
- Gleiche Nachrichten mit Fundamentaldaten ab – reagiere nicht allein auf Überschriften
Sicherheit & Datenschutz
- Keine Anmeldedaten in der Fertigkeit gespeichert – Authentifizierung erfolgt über Umgebungsvariablen in der MCP-Konfiguration
- Schreibgeschützter Zugriff – Der MCP-Server kann keine Trades ausführen oder Kontoeinstellungen ändern
- Lokale Verarbeitung – Anmeldedaten werden lokal zur Authentifizierung verwendet; Sitzungstoken werden unter
~/.tokens/robinhood.picklezwischengespeichert - Cache ist nur lokal –
~/.hermes/data/robinhood/wird niemals übertragen - Obsidian-Vault – Schnappschüsse werden nur in den lokalen Vault des Benutzers geschrieben
Fehlerbehebung
| Problem | Lösung |
|---|---|
| „Nicht angemeldet“ | Überprüfe, ob die Umgebungsvariablen ROBINHOOD_USERNAME und ROBINHOOD_PASSWORD korrekt gesetzt sind |
| „Nicht-Base32-Ziffer gefunden“ | ROBINHOOD_TOTP_SECRET enthält ungültige Zeichen – nur A-Z und Ziffern 2-7. Entferne diese Variable bei Verwendung von SMS-Verifizierung |
| Ratenbegrenzung (429-Fehler) | robin_stocks hat keine eingebaute Ratenbegrenzung. Pausiere die Aktivität für einige Minuten und versuche es erneut |
| MCP-Server startet nicht | Stelle sicher, dass uvx installiert ist (pip install uv oder `curl -LsSf https://astral.sh/uv/install.sh |
| Cache-Skript schlägt fehl | Stelle sicher, dass robin_stocks und pyotp installiert sind: pip install robin_stocks pyotp |
| Veraltete Kurse | Robinhood-Kurse sind punktuelle, keine Live-Streaming-Daten. Aktualisiere über MCP für die neuesten Daten |
Verwandte Themen
- robinhood-mcp – Der zugrundeliegende MCP-Server
- robin_stocks – Inoffizieller Robinhood-API-Wrapper
portfolio-obsidian-bridge– Generischer Obsidian-Sync für beliebige Brokerllm-wiki– Wiki-Architektur für dauerhafte Recherchenobsidian– Obsidian-Vault-Operationen