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