Gratuit & Open Source — MIT

Un exemple d'agent portefeuille que vous pouvez cloner et pointer vers votre propre courtier.

Ben est l'agent de gestion de portefeuille que nous utilisons pour notre family office. Nous publions la version générique — positions synthétiques, aucune donnée courtier réelle — comme point de départ que vous pouvez adapter. Il montre comment câbler des adaptateurs courtiers, un fichier mandat, une porte d'exécution humaine, et un vérificateur de risque.

# intégré à bubble-ops-loop
> git clone https://github.com/Bubble-invest/bubble-ops-loop
> cp agents/ben agents/mon-agent-portefeuille
> vi agents/mon-agent-portefeuille/MANDATE.md
✓ propositions uniquement · porte humaine · votre courtier
Pas de conseil financier. Pas une recommandation de trade. Ben est un exemple de la façon de structurer un agent de gestion de portefeuille. La config exemple utilise des positions synthétiques. Ne le connectez pas à un courtier en direct avant d'avoir lu le code, compris le fichier mandat, et vérifié que la porte d'exécution humaine fonctionne correctement pour votre situation. Les décisions d'investissement sont de votre responsabilité.

Un agent portefeuille complet, conçu pour être cloné

Le code montre chaque couche : mandat, adaptateurs courtiers, propositions, vérificateur de risque, porte humaine, et reporting Telegram. Assez générique pour être adapté, assez spécifique pour être un vrai point de départ.

Le patron clé

Propositions uniquement. L'humain exécute.

Ben ne place jamais un trade directement. Il lit les positions, exécute sa logique de mandat, et propose un rééquilibrage comme objet structuré. Un humain examine la proposition sur Telegram et l'approuve ou la rejette. Seulement alors l'adaptateur courtier est appelé. Zéro exécution autonome.

LIRE positions via adaptateur courtier
ANALYSER mandat · risque · allocation
PROPOSER proposition de rééquilibrage structurée
PORTE approbation humaine sur Telegram
EXÉCUTER adaptateur courtier (après approbation seulement)

MANDATE.md — votre politique d'investissement

Votre stratégie, limites de risque, instruments autorisés et règles de rééquilibrage vivent dans un seul fichier markdown que l'agent lit comme contrainte opérationnelle. Modifiez le mandat, et le comportement de l'agent change — sans changement de code.

Patron Adaptateur Courtier

L'agent ne parle pas directement à un courtier. Il appelle un adaptateur fin qui traduit le format position/ordre standard de l'agent vers l'API du courtier. L'exemple inclut des adaptateurs placeholder. Remplacez-les par les vôtres avec la même interface.

Vérificateur de Risque

Avant qu'une proposition soit envoyée pour approbation humaine, une fonction de vérification de risque séparée la valide contre les limites dures du mandat (taille max de position, concentration, instruments interdits). Les propositions qui échouent sont rejetées sans atteindre l'humain.

Synthétique par Défaut

Par défaut, l'exemple utilise un flux de positions synthétiques et un courtier simulé. Vous pouvez faire tourner la boucle agent complète — propositions, approbations, exécution simulée — sans connecter aucun compte réel. Passez à un adaptateur en direct quand vous êtes prêt.

Clonez, configurez votre mandat, et lancez

Ben est dans le dépôt bubble-ops-loop sous agents/ben. Clonez-le, copiez le répertoire de l'agent, modifiez le mandat.

Cloner bubble-ops-loop

Exécutez git clone https://github.com/Bubble-invest/bubble-ops-loop. Ben est dans agents/ben/. Copiez-le vers agents/mon-agent-portefeuille/.

Écrire votre MANDATE.md

Modifiez MANDATE.md dans le répertoire de votre agent. Définissez votre allocation cible, limites de risque, instruments autorisés et fréquence de rééquilibrage. L'agent lit ce fichier à chaque tick.

Câbler votre adaptateur courtier

Copiez l'adaptateur placeholder dans adapters/ et implémentez les interfaces get_positions() et place_order() pour votre courtier. Gardez la porte — ne sautez pas l'étape d'approbation humaine.

Testez d'abord en mode synthétique

Testez avec l'adaptateur synthétique. Vérifiez que les propositions ont l'air correctes, que la porte se déclenche, et que les contraintes du mandat sont respectées. Seulement alors passez à un adaptateur en direct.

Gratuit pour toujours

Licence MIT. Ben est un exemple de travail, pas un produit. Nous le partageons pour que vous puissiez voir comment nous structurons un agent portefeuille. Clonez-le, changez le mandat, câblez votre propre courtier. Si vous améliorez le patron, une PR serait la bienvenue.

Questions fréquentes

L'architecture est la même. La version publiée utilise des positions synthétiques et des courtiers simulés — aucune donnée de compte réel, aucune credential réel. Notre version de production tourne contre de vraies APIs courtiers avec notre mandat réel, mais nous ne publions pas cette config. Ce que vous obtenez ici est une représentation fidèle de la structure sans données réelles.
Non, et c'est intentionnel. La porte d'exécution humaine n'est pas optionnelle — elle est codée en dur dans la boucle de l'agent. Chaque proposition doit recevoir une approbation explicite via Telegram avant que l'adaptateur courtier soit appelé. Si vous supprimez la porte, vous en assumez les conséquences. Nous le déconseillons fortement.
L'exemple inclut des adaptateurs placeholder et un synthétique. L'interface adaptateur est simple : implémentez get_positions(), get_balance(), et place_order(). Vous pouvez écrire un adaptateur pour tout courtier avec une API Python ou REST. Nous utilisons des adaptateurs pour Alpaca, Saxo et Boursorama en interne — ceux-là ne sont pas dans le dépôt public.
Non. Ben est un exemple d'architecture logicielle pour un agent portefeuille. Ce n'est pas un conseil sur quoi acheter, vendre ou conserver. Nous ne sommes pas des conseillers financiers agréés. Toute décision d'investissement que vous prenez avec ou sans ce code est entièrement de votre responsabilité.
Bubble Invest. Nous gérons un family office avec des agents IA qui s'occupent des étapes d'analyse et de proposition de la gestion de portefeuille. Nous ne sommes pas des développeurs — nous avons construit ceci parce que nous en avions besoin. Nous publions la version générique parce que le patron est utile et le domaine est jeune. MIT — forkez-le, adaptez-le, améliorez-le.