Aller au contenu

Un pupitre de négociation multicourtier avec moteur de stratégies

Une console unique pour Questrade et Interactive Brokers : positions unifiées, moteur de stratégies éprouvé par backtest et exécution automatisée avec les contrôles de risque placés avant l’ordre, pas après.

Client
TradeSmart
Secteur
Technologie financière
Année
2026
Un pupitre de négociation multicourtier avec moteur de stratégies

2 brokers

Questrade et IBKR derrière une seule API

3 modes

backtest, papier et réel partagent le même code

Pre-trade

contrôles de risque avant transmission

Le défi

Déployer du capital chez deux courtiers, c’est composer avec deux portails, deux modèles de données et deux définitions de presque tout. Questrade et Interactive Brokers divergent sur la clé d’une position, la déclaration des exécutions partielles, le traitement des opérations sur titres et la fréquence d’interrogation permise. Ni l’un ni l’autre n’offre un flux temps réel par défaut.

S’ajoutait le plus difficile : le client voulait des stratégies fonctionnant sans surveillance. L’exécution automatisée est facile à démontrer et impitoyable en production — une cotation périmée, un ordre soumis deux fois ou une reconnexion qui perd silencieusement une exécution font la différence entre une stratégie et un incident.

Ce que nous avons bâti

Nous avons intercalé une couche de normalisation entre les courtiers et le reste. Chaque courtier dispose d’un adaptateur qui gère son propre rafraîchissement OAuth, son budget de limitation de débit et son comportement de reconnexion, et émet un flux d’événements canonique unique — ordres, exécutions, positions et liquidités — vers TimescaleDB. En aval, rien ne sait ni n’a besoin de savoir de quelle place provient une exécution.

Le moteur de stratégies exécute le même code selon trois modes sur ce flux : backtest sur barres historiques, papier sur prix en direct, et réel sur capital réel. Une stratégie qui ne peut être rejouée barre par barre en backtest n’est pas autorisée à négocier.

L’exécution passe par une barrière de risque évaluée avant la transmission de l’ordre, et non après : plafonds d’exposition par titre et par portefeuille, limite de perte quotidienne qui liquide et suspend, détection d’intention en double au moyen d’un jeton d’idempotence, et contrôle de fraîcheur des données refusant de négocier sur une cotation trop ancienne. Chaque exécution est rapprochée du courtier de référence selon un calendrier, et tout écart alerte une personne plutôt que d’être corrigé en silence.

Le résultat

Le pupitre affiche un portefeuille unifié pour les deux courtiers, les stratégies passent du backtest au papier puis au réel sans réécriture, et chaque ordre automatisé conserve une piste d’audit du signal qui l’a produit jusqu’à l’exécution qui l’a clôturé.

Technologies

Laravel 13 PHP 8.4 Blade Tailwind CSS v4 Vite 8 TradingView Lightweight Charts MySQL (prod) / SQLite (local + tests) Redis-less DB queues on dedicated training / range-sim / bot-engine connections Pest 4 Pint Laravel Socialite Questrade API IBKR Client Portal Web API (OAuth 1.0a) Anthropic PHP SDK Herd

Bâtissons quelque chose qui vaut la peine d’être exploité.

Parlez-nous de votre projet. Nous reviendrons avec un plan, un échéancier et un chiffre.