Que fait Conseiller Portfolio Robinhood ?
Accès en lecture seule à votre portefeuille Robinhood via le serveur robinhood-mcp. Fournit des données en direct pour les positions, cotations, fondamentaux, actualités, résultats, notations d'analystes, dividendes et options.
Prérequis
1. Compte Robinhood
Vous avez besoin d'un compte Robinhood (gratuit sur robinhood.com).
2. Installation du Serveur MCP
Le paquet robinhood-mcp fournit le serveur MCP. Installez-le avec l'une des commandes suivantes :
# Recommandé — s'exécute via uvx (pas d'installation globale nécessaire, auto-géré)
# Il suffit de l'ajouter à la configuration de votre agent et cela fonctionne. uvx l'installe au premier lancement.
# Alternative — installation pip globale
pip install robinhood-mcp
Note :
uvxest fourni par le gestionnaire de paquets Python uv. Installez-le d'abord :curl -LsSf https://astral.sh/uv/install.sh | sh
3. Variables d'Environnement
Définissez ces variables dans le fichier .env de votre agent ou dans le profil de votre shell :
| Variable | Requise | Description |
|---|---|---|
ROBINHOOD_USERNAME | Oui | Votre email Robinhood |
ROBINHOOD_PASSWORD | Oui | Votre mot de passe Robinhood |
ROBINHOOD_TOTP_SECRET | Seulement si utilisation de l'app d'authentification | Le secret TOTP de votre configuration d'authentification. Pas nécessaire si vous utilisez la vérification SMS. |
4. Configuration de l'Agent
Consultez le répertoire templates/ pour des extraits de configuration prêts à copier-coller pour votre agent. Référence rapide :
Agent Hermes (~/.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}" # Décommentez pour l'app d'authentification
timeout: 60
connect_timeout: 30
Autres agents — consultez le répertoire templates/ pour Claude Desktop, Claude Code, Codex, OpenCode, Cline et Windsurf.
Après avoir ajouté la configuration, redémarrez votre agent. Vérifiez avec : hermes mcp test robinhood (Hermes) ou vérifiez l'état MCP de votre agent.
Outils MCP Disponibles
Ces outils sont enregistrés comme mcp_robinhood_* dans Hermes Agent (le préfixe varie selon l'agent) :
| Outil | Description |
|---|---|
robinhood_get_portfolio | Valeur du portefeuille, capitaux propres, pouvoir d'achat, variation du jour |
robinhood_get_positions | Toutes les participations avec prix de revient, valeur actuelle, P&L |
robinhood_get_position | Participation unique par ticker (plus rapide pour un symbole) |
robinhood_get_watchlist | Actions dans vos listes de surveillance |
robinhood_get_quote | Prix en temps réel, offre/demande, volume |
robinhood_get_fundamentals | Ratio P/E, capitalisation boursière, rendement du dividende, fourchette 52 semaines |
robinhood_get_historicals | Historique des prix OHLCV (5 min, 10 min, heure, jour, semaine) |
robinhood_get_news | Articles d'actualité récents pour un symbole |
robinhood_get_earnings | Dates de résultats, estimations BPA, réalisations |
robinhood_get_ratings | Notations d'analystes achat/conserver/vente |
robinhood_get_dividends | Historique des paiements de dividendes |
robinhood_get_options_positions | Positions actuelles sur options |
robinhood_search_symbols | Recherche d'actions par nom ou ticker |
Cache Local
Les données du portefeuille sont mises en cache localement dans ~/.hermes/data/robinhood/portfolio_cache.json (Hermes) ou ~/.robinhood-mcp/cache.json (autres agents).
Stratégie de Cache Prioritaire
Vérifiez toujours le cache en premier. Appelez les outils MCP uniquement lorsque :
- Le cache a plus de 15 minutes ET l'utilisateur a besoin de données en direct
- L'utilisateur demande explicitement une actualisation (« rafraîchir mon portefeuille », « obtenir les derniers prix »)
- L'utilisateur demande un ticker spécifique non présent dans le cache
- L'utilisateur demande des données qui changent rapidement (actualités, cotations en temps réel)
Mise à Jour du Cache
# Utilisateurs d'Hermes Agent
python3 scripts/refresh_cache.py
# Avec des chemins personnalisés
python3 scripts/refresh_cache.py --cache-dir ~/my-data --vault-path ~/my-vault
# Sortie JSON uniquement (sans Obsidian)
python3 scripts/refresh_cache.py --json-only
# Forcer l'actualisation même si le cache est récent
python3 scripts/refresh_cache.py --force
L'agent peut également mettre à jour le cache en ligne lors de toute requête de portefeuille en appelant les outils MCP et en écrivant les résultats dans le fichier de cache.
Workflow de Requête de Portefeuille
Lorsque l'utilisateur demande des informations sur son portefeuille :
- Lire le cache pour le contexte (valeur du portefeuille, positions, allocations)
- Si les données sont obsolètes (> 15 min) ou si l'utilisateur souhaite des données en direct, appeler les outils MCP
- Mettre à jour le cache après toute récupération MCP
- Répondre avec le contexte de ses participations réelles — pas de conseils génériques
- Référencer son prix de revient, P&L latent et allocation lorsque cela est pertinent
- Pour les questions sur les options, recouper avec la stratégie de l'utilisateur si connue
Lorsque l'utilisateur demande un ticker spécifique :
- Vérifier si
wiki/entities/<ticker>.mdexiste (si utilisation d'Obsidian) - Le lire pour obtenir la thèse existante et l'historique de recherche
- Récupérer les données en direct (cotation, fondamentaux, actualités, notations) via MCP
- Répondre avec une synthèse des connaissances du wiki + données en direct
- Ajouter une entrée de Notes de Recherche à la page d'entité (si utilisation d'Obsidian)
- Si le ticker n'est pas dans le portefeuille, le suivre dans une file d'attente de recherche
Quand Utiliser MCP vs Cache
| Scénario | Utilisation |
|---|---|
| « Quelle est la valeur de mon portefeuille ? » | Cache (s'il est assez récent) |
| « Comment se porte mon NVDA ? » | Cache d'abord, MCP si obsolète ou ticker manquant |
| « Donne-moi une mise à jour complète du portefeuille » | MCP (toujours obtenir des données en direct) |
| « Y a-t-il des actualités sur TSLA ? » | MCP (les actualités changent constamment) |
| « Quelles sont les notations des analystes pour AAPL ? » | MCP (les données de recherche sont toujours en direct) |
| « Montre-moi mes positions sur options » | Cache d'abord, MCP si obsolète |
| « Quels dividendes ai-je reçus ? » | Cache d'abord |
| « Rafraîchir mes données » | MCP puis mise à jour du cache |
Workflow de Recherche vers Entité (Optionnel — Nécessite Obsidian)
Problème : Les requêtes de recherche sur les actions se perdent dans les sessions de discussion. Solution : Chaque participation ou ticker recherché obtient une page d'entité persistante. La recherche est ajoutée, pas oubliée.
Structure de la Page d'Entité
Chaque ticker reçoit une page dans wiki/entities/<ticker>.md :
---
title: Nom de l'Entreprise
created: AAAA-MM-JJ
updated: AAAA-MM-JJ
type: entity
tags: [ticker, secteur, ...]
---
# Nom de l'Entreprise (TICKER)
Aperçu bref...
## Faits Clés
...
## Thèse d'Investissement
...
## Historique de la Position
> Mis à jour automatiquement. Ne pas éditer manuellement.
### Position Actuelle
| Métrique | Valeur |
|--------|-------|
| Quantité | 50 |
| Coût Moyen | $40.69 |
| Prix Actuel | $45.20 |
| Rendement Total | +10.8% |
### Mises à Jour de Position
- **[2026-04-24]** 50 actions @ coût moyen $40.69
## Notes de Recherche
> L'agent ajoute des entrées datées après chaque requête de recherche.
### [2026-04-24] Dois-je ajouter à HIMS à 30 $ ?
Points clés : [résumé à puces]
Décision : [si l'utilisateur en a énoncé une]
Quand Mettre à Jour les Pages d'Entité
- À chaque extraction de portefeuille — Mettre à jour les données de position pour chaque participation
- Après chaque requête de recherche — Ajouter une entrée de Notes de Recherche datée
- Lors de la création d'une nouvelle entité — Récupérer les fondamentaux, créer la page, l'ajouter à l'index du wiki
File d'Attente de Recherche
wiki/concepts/research-queue.md suit les tickers en cours d'évaluation mais pas encore achetés :
| Ticker | Source | Thèse (1 ligne) | Statut | Ajouté | Notes |
|---|---|---|---|---|---|
| ABC | Vidéo YouTube | Jeu sur les batteries EV | en cours de recherche | 2026-04-24 | Mentionné par MKBHD |
Valeurs de statut : en cours de recherche → prêt à acheter → (supprimé lors de l'achat) ou passé
Intégration du Coffre Obsidian (Optionnel)
Chaque extraction de portefeuille peut écrire deux fichiers dans votre coffre Obsidian :
| Fichier | Comportement |
|---|---|
_ephemeral/portfolio/snapshots/AAAA-MM-JJ-HHMM.md | Immuable — un par extraction, données complètes |
_ephemeral/portfolio/latest.md | Écrasé — état actuel + écarts par rapport à l'instantané précédent |
Frontmatter pour Dataview
Les deux fichiers incluent un frontmatter YAML :
---
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
---
Cela permet des requêtes Dataview comme :
TABLE date, total_equity, day_change_pct
FROM "_ephemeral/portfolio/snapshots"
SORT snapshot_time DESC
Calcul des Écarts
Le fichier latest.md se compare à l'instantané le plus récent et met en évidence :
- 🆕 Nouvelles positions (achetées depuis la dernière extraction)
- ❌ Positions fermées (vendues depuis la dernière extraction)
- 📊 Mouvements significatifs (>5 % de variation de prix OU >1 % de changement d'allocation)
- Variation des capitaux propres depuis le dernier instantané
Pour activer l'intégration Obsidian, définissez l'argument --vault-path lors de l'exécution de refresh_cache.py, ou définissez la variable d'environnement ROBINHOOD_VAULT_PATH.
Directives de Conseil
- Répondez toujours avec le contexte des participations réelles de l'utilisateur — pas de conseils génériques
- Référencez le prix de revient, le P&L latent et les pourcentages d'allocation lorsque cela est pertinent
- Pour les questions sur les options, comprenez la stratégie de l'utilisateur (par ex., breakout 0DTE)
- Lorsque vous recommandez des actions, montrez les calculs (allocation actuelle, risque/rendement)
- Ne suggérez jamais de transactions sauf si l'utilisateur le demande explicitement
- Signalez le risque de concentration lorsqu'une seule position dépasse 20 % du portefeuille
- Recoupez les actualités avec les fondamentaux — ne réagissez pas uniquement aux gros titres
Sécurité et Confidentialité
- Aucune information d'identification stockée dans la compétence — l'authentification se fait via des variables d'environnement dans la configuration MCP
- Accès en lecture seule — le serveur MCP ne peut pas exécuter de transactions ou modifier les paramètres du compte
- Traitement local — les informations d'identification sont utilisées localement pour l'authentification ; les jetons de session sont mis en cache dans
~/.tokens/robinhood.pickle - Cache uniquement local —
~/.hermes/data/robinhood/n'est jamais transmis - Coffre Obsidian — les instantanés sont écrits uniquement dans le coffre local de l'utilisateur
Dépannage
| Problème | Solution |
|---|---|
| « Non connecté » | Vérifiez que les variables d'environnement ROBINHOOD_USERNAME et ROBINHOOD_PASSWORD sont correctement définies |
| « Caractère non base32 trouvé » | ROBINHOOD_TOTP_SECRET contient des caractères non valides — seulement A-Z et les chiffres 2-7. Supprimez cette variable si vous utilisez la vérification SMS |
| Limitation de débit (erreurs 429) | robin_stocks n'a pas de limitation de débit intégrée. Mettez en pause l'activité pendant plusieurs minutes et réessayez |
| Le serveur MCP ne démarre pas | Assurez-vous que uvx est installé (pip install uv ou `curl -LsSf https://astral.sh/uv/install.sh |
| Échec du script de cache | Assurez-vous que robin_stocks et pyotp sont installés : pip install robin_stocks pyotp |
| Cotations obsolètes | Les cotations Robinhood sont ponctuelles, pas en streaming en direct. Rafraîchissez via MCP pour les dernières données |
Liens Connexes
- robinhood-mcp — Le serveur MCP sous-jacent
- robin_stocks — Wrapper d'API Robinhood non officiel
portfolio-obsidian-bridge— Synchronisation Obsidian générique pour tout courtierllm-wiki— Architecture wiki pour la recherche persistanteobsidian— Opérations du coffre Obsidian