Moteur d'exécution des bots
Comment les bots s'exécutent via cron, paper vs live
Le moteur d'exécution des bots est le runtime piloté par cron qui exécute concrètement les stratégies de vos bots. Comprendre son fonctionnement vous aide à déboguer les comportements inattendus de vos bots et à les optimiser pour la performance.
Architecture
Le moteur d'exécution est une tâche cron Vercel qui s'exécute toutes les 15 minutes :
- Déclenchement. Le cron Vercel appelle /api/cron/execute-bots à 0/15/30/45 minutes de chaque heure.
- Authentification. Le endpoint vérifie que la requête provient bien de Vercel à l'aide d'un token signé.
- Énumération des bots. Récupère tous les bots dont le status="running" depuis la base de données.
- Répartition des stratégies. Pour chaque bot, charge le modèle de stratégie approprié (EV Follower, ARB Hunter, etc.).
- Évaluation du marché. La stratégie examine l'état actuel du marché au regard des paramètres du bot.
- Passage d'ordres. Lorsque les conditions sont réunies, le moteur soumet les ordres via l'API CLOB de Polymarket (mode Live) ou enregistre des exécutions simulées (mode Paper).
- Journalisation d'audit. Chaque action — évaluation, transaction, erreur — est consignée dans la piste d'audit.
Pourquoi 15 minutes ?
Le choix d'un intervalle de 15 minutes résulte d'un équilibre entre plusieurs facteurs :
- •Limites de débit de Polymarket. L'API CLOB autorise 10 transactions par minute et par utilisateur. Tous bots et tous utilisateurs confondus, nous devons rester sous les limites agrégées.
- •Coût. Chaque tick du cron analyse tous les marchés pour tous les bots. Plus c'est fréquent, plus cela consomme de calcul, et plus les coûts augmentent.
- •Rendements décroissants. Les marchés de prédiction évoluent plus lentement que les cryptomonnaies ou les actions. Une granularité de 5 minutes plutôt que de 15 minutes capture rarement plus d'alpha.
- •Compatibilité avec l'offre gratuite de Vercel. Notre planification cron respecte les limites de l'offre hobby de Vercel.
Pour les utilisateurs de l'offre Bot qui souhaitent une exécution plus rapide, les ordres TWAP ne sont pas liés au cron de 15 minutes : ils s'exécutent par tranches à la minute via un cron distinct.
Limites Réellement Appliquées
Les freins du bot portent sur l'ARGENT et sur les positions ouvertes, pas sur un compteur de trades :
- •Par trade : 25 $ par défaut en automatisation, modifiable dans Paramètres → Trading.
- •Par bot, par jour : 100 $ par défaut, plus un plafond optionnel de nombre de trades que vous définissez sur le bot.
- •Par bot, simultanément : 3 positions live ouvertes, et jamais deux sur le même marché le même jour.
- •Par profil, par jour : un budget total réservé atomiquement avant chaque ordre, pour que deux bots ne dépensent pas le même dollar.
Quand un plafond est atteint, l'ordre est refusé, journalisé et signalé — le bot passe à la suite au lieu de réessayer. ## Que se Passe-t-il Quand un Trade Échoue
L'API du CLOB peut échouer pour plusieurs raisons :
- •Erreur réseau. La réservation d'idempotence est conservée et l'ordre part en réconciliation — jamais de second ordre envoyé à l'aveugle.
- •Solde insuffisant. Refusé avant d'atteindre la venue, journalisé et signalé ; le bot n'est pas mis en pause pour autant.
- •Marché fermé. Journalisé, et le bot passe à l'opportunité suivante.
- •Prix décalé. Si le prix s'est éloigné de votre limite, l'ordre ne croise pas et le bot réessaie au cycle suivant.
Un trade échoué ne casse pas l'exécution : il est journalisé et le bot continue. ## Surveiller vos bots
Trois surfaces vous disent ce que font vos bots :
- •Performance (plan Bot) — P&L par bot avec live et paper séparés, taux de réussite, nombre de trades et les positions encore ouvertes.
- •Sécurité → journal d'audit — la trace de chaque action sensible du compte, y compris un ordre réel refusé et sa raison (kill switch, plafond du jour, plan, région).
- •Notifications — exécutions et échecs arrivent dans l'application et, si vous avez vérifié le canal, sur Telegram ou WhatsApp. Un bot qui atteint sa perte maximale se met en pause et vous prévient.
Si un bot n'a pas tradé alors que vous l'attendiez, la raison est dans le journal d'audit. Il n'existe pas de journal de skip par cycle : un cycle qui ne trouve rien ne fait simplement rien.
Déclencher manuellement l'exécution
Le bouton « Execute now » de la page de détail du bot (disponible pour les utilisateurs de l'offre Bot) vous permet de déclencher un cycle immédiat sans attendre le prochain tick du cron. Utile pour :
- •Tester des modifications de paramètres sans attendre 15 minutes
- •Saisir des signaux sensibles au temps que vous avez identifiés manuellement
- •Vérifier la connectivité après une maintenance de l'API CLOB
Les déclenchements manuels comptent dans votre limite de débit quotidienne. N'abusez pas de ce bouton.
Arrêter un bot
Trois façons d'arrêter un bot :
- Pause. Le bot conserve ses positions existantes et n'en prend pas de nouvelles. À utiliser pour de courtes interruptions.
- Stop. Le bot est entièrement désactivé. Les positions ouvertes subsistent ; fermez-les manuellement.
- Kill switch (global). Settings → Trading → Kill Switch arrête immédiatement TOUS les bots et TOUTE exécution automatisée. À utiliser en cas d'urgence.
Le kill switch est le bon réflexe si vous observez un comportement inattendu — mettez en pause pour enquêter, puis réactivez une fois que vous êtes sûr.
Piste d'audit
Chaque action d'un bot est consignée dans la table bot_audit_logs avec :
- •Horodatage
- •ID du bot
- •Type d'action (evaluate, place_order, close_order, error)
- •Marché concerné
- •Justification de la décision (quelle condition a été déclenchée ou pourquoi la transaction a été ignorée)
- •Détails de l'ordre (taille, prix, direction)
- •Résultat (filled, rejected, partial)
Vous pouvez exporter les journaux d'audit au format CSV depuis la page de détail du bot. Utile pour :
- •La déclaration fiscale (export du formulaire 8949 disponible)
- •L'examen de la stratégie (« pourquoi le bot a-t-il écarté ce marché ? »)
- •Le débogage lorsque le comportement ne correspond pas aux attentes
- •La documentation de conformité si vous tradez à titre professionnel
Problèmes courants d'exécution des bots
Le bot affiche « running » mais ne trade jamais.
- •Consultez le journal des sauts — il est probable que tous les signaux soient en deçà de votre seuil minimal d'edge.
- •Essayez d'abaisser légèrement min_edge, mais ne descendez pas sous 5pp.
- •Vérifiez que vos filtres de catégorie ne sont pas trop restrictifs.
Le bot trade trop.
- •La limite quotidienne de transactions est trop élevée.
- •Le min edge est trop bas — vous captez du bruit.
- •Ajoutez des filtres supplémentaires (confiance minimale, volume minimal).
Le bot ne trade que sur une seule plateforme.
- •Vérifiez le sélecteur Polymarket / Kalshi dans la configuration du bot.
- •Vérifiez que l'indicateur d'état de l'autre plateforme est au vert.
Un bot Live a soudainement cessé de trader.
- •Vérifiez l'état de l'API CLOB (elle est peut-être hors service).
- •Vérifiez que vos identifiants d'API CLOB n'ont pas expiré.
- •Vérifiez que votre portefeuille Polymarket dispose d'un solde en USDC.