Workflow Événementiel
⚠️ Cette page peut évoluer à mesure que l'architecture est affinée.
TheoryCraft est construit autour d'une architecture événementielle.
Les données de marché, les mises à jour d'exécution et la logique de stratégie communiquent exclusivement via des événements structurés.
Cette conception assure que la même logique de trading se comporte de manière cohérente en backtesting, paper trading et trading live.
Composants Principaux
Un système TheoryCraft est composé de trois composants conceptuels :
- MarketSource - produit les événements de données de marché
- Broker - produit les événements d'exécution et de compte, et reçoit les ordres
- Engines - consomment les événements et effectuent des tâches spécifiques
Chaque composant opère indépendamment et communique uniquement via des événements.
Flux d'Événements
Deux flux d'événements principaux existent dans le système :
MarketEvents
Les MarketEvents sont émis par le MarketSource lorsque de nouvelles données de marché sont disponibles.
Ils peuvent représenter :
- Mises à jour de prix (ticks ou bars)
- Rééchantillonnage de timeframe
- Indicateurs calculés
- Métadonnées d'instrument ou de session
Les MarketEvents circulent séquentiellement et représentent le passage du temps de marché.
BrokerEvents
Les BrokerEvents sont émis par le Broker lorsque l'état d'exécution change.
Ils peuvent représenter :
- Mises à jour du cycle de vie des ordres (soumis, exécuté, annulé)
- Changements de position
- Mises à jour du solde du compte
Les BrokerEvents reflètent les conséquences des décisions de trading précédentes.
Les Engines comme Consommateurs d'Événements
Les Engines consomment un ou les deux flux d'événements selon leur responsabilité.
Un Engine :
- S'abonne aux MarketEvents et/ou BrokerEvents
- Réagit aux événements selon son rôle
- Peut émettre de nouveaux artefacts comme des ordres, métriques ou alertes
Les Engines ne communiquent pas directement entre eux. La coordination émerge via les flux d'événements partagés.
Modèle de Diffusion des Événements
MarketSource et le Broker diffusent les événements à tous les Engines.
┌──────────────┐ MarketEvent ┌──────────┐
│ MarketSource │ ──────────────────► │ │
└──────────────┘ │ Engine │
│ │
┌──────────────┐ BrokerEvent │ │
│ Broker │ ──────────────────► │ │
└──────────────┘ ◄────────────────── └──────────┘
Orders / Queries
MarketSource ──(MarketEvents)──► Engines
Broker ────(BrokerEvents)──────► Engines
Engines ──────(Orders)─────────► Broker
Chaque Engine opère indépendamment et peut être ajouté ou retiré sans affecter le reste du système.
Exécution Causale et Reproductible
Chaque événement représente un point de décision discret.
Les Engines ne réagissent qu'aux informations disponibles au moment de l'événement. Aucune donnée future n'est accessible, éliminant le biais d'anticipation par construction.
Comme les événements sont traités séquentiellement, un replay historique d'événements produit le même comportement qu'une exécution live.
Même Logique, Environnements Différents
Le modèle événementiel permet à la même logique d'Engine de s'exécuter sans modification dans différents environnements :
Backtesting
- MarketSource rejoue les données historiques
- Le Broker simule l'exécution
- Le temps avance aussi vite que les événements sont traités
Paper Trading
- MarketSource streame les données de marché en temps réel
- Le Broker simule l'exécution
- Le temps avance en temps réel
Trading Live
- MarketSource streame les données de marché en temps réel
- Le Broker exécute les ordres sur des venues réelles
- Le temps avance en temps réel
Seules la source de données et la configuration du broker changent. La logique d'Engine reste identique.
Pourquoi l'Événementiel ?
Les systèmes événementiels sont naturellement adaptés au trading :
- Précision - les événements reflètent la façon dont les marchés évoluent dans le temps
- Cohérence - logique identique dans tous les environnements
- Composabilité - les Engines peuvent être combinés de manière flexible
- Tolérance aux pannes - les composants sont isolés
- Scalabilité - traitement parallèle des workloads indépendants
Cette architecture favorise la justesse et la reproductibilité plutôt que le débit brut.
Prochaines Étapes
- MarketSource et DataFeeds - Découvrez l'ingestion des données de marché
- Broker - Comprenez l'exécution d'ordres
- Engines - Explorez les différents types d'Engines