MarketSource et DataFeeds
Les données de marché sont le fondement de tout système de trading. TheoryCraft fournit une architecture flexible pour ingérer, transformer et streamer les données de marché via les DataFeeds et MarketSource.
Pourquoi la Qualité des Données est Importante
Les données sont l'élément le plus critique du backtesting. Une stratégie n'est aussi bonne que les données utilisées pour la tester. Une mauvaise qualité de données ou une manipulation incorrecte rend les backtests inutiles et les résultats en live divergeront significativement des simulations historiques.
Problèmes courants qui invalident les backtests :
- Biais d'anticipation (Look-ahead bias) - Utiliser des informations futures qui n'étaient pas disponibles au moment de la décision
- Données manquantes - Des gaps qui masquent des événements de marché importants
- Timestamps incorrects - Événements traités dans le désordre
- Prix erronés - Pics, gaps ou erreurs dans les données de prix
- Biais du survivant - Tester sur la composition actuelle du S&P 500 exclut des entreprises comme Lehman Brothers ou Enron qui ont fait faillite, gonflant artificiellement les rendements historiques
TheoryCraft répond à ces défis par une architecture événementielle plutôt qu'une approche vectorisée. Contrairement aux moteurs vectorisés qui opèrent sur des tableaux de données pré-chargés, TheoryCraft rejoue les données événement par événement, préservant l'ordre temporel et le réalisme d'exécution.
Ce choix de conception privilégie la précision à la vitesse brute. En traitant les événements séquentiellement avec des timestamps corrects, TheoryCraft reproduit les conditions de marché aussi fidèlement que possible. Votre stratégie voit le même flux de données en backtesting qu'en trading live, éliminant toute une classe d'artefacts de simulation.
L'objectif est simple : des backtests qui se traduisent de manière fiable en performance live.
Qu'est-ce que MarketSource ?
MarketSource est l'orchestrateur principal des données de marché dans TheoryCraft. Il gère l'intégralité du pipeline de données, de l'ingestion brute aux événements traités prêts à être consommés par les stratégies.
MarketSource combine deux types de composants :
- DataFeed - Gère l'ingestion des données depuis des sources externes
- Processors - Transforment et calculent sur les données (rééchantillonnage, indicateurs, filtres)
Ensemble, ces composants forment un pipeline en streaming qui émet des structures MarketEvent vers les Engines en aval.
MarketEvent représente l'état immuable du marché à un instant donné et constitue le contrat entre l'ingestion de données et l'exécution de stratégie.
Qu'est-ce qu'un DataFeed ?
Un DataFeed est le composant au sein de MarketSource responsable de l'ingestion des données. Il se connecte à des sources de données externes (fichiers, APIs, bases de données) et streame les données de prix brutes dans le pipeline.
Dans TheoryCraft, un DataFeed implémente le behaviour TheoryCraft.DataFeed et est responsable de :
- Récupérer les données de marché brutes depuis une source
- Convertir les données dans le format interne de TheoryCraft (Tick ou Bar)
- Streamer les données dans le pipeline MarketSource
Pensez au DataFeed comme un adaptateur entre les données externes et TheoryCraft.
Que sont les Processors ?
Les Processors sont la couche de calcul au sein de MarketSource. Ils transforment, filtrent et enrichissent le flux de données. Les processors courants incluent :
- Resampler - Convertit les ticks en bars ou agrège les bars vers des timeframes supérieurs
- Indicators - Calcule des indicateurs techniques (SMA, RSI, MACD, etc.)
- Filters - Supprime ou marque les points de données invalides
Les Processors peuvent être chaînés et les processors indépendants peuvent s'exécuter en parallèle pour de meilleures performances.
Types de Données de Marché
Données Tick
La forme la plus granulaire de données de marché. Chaque tick représente une mise à jour de prix individuelle avec les informations bid, ask et volume.
%Tick{
time: ~U[2024-01-15 14:30:00.123Z],
bid: 1.08542,
ask: 1.08545,
bid_volume: 1.5,
ask_volume: 2.0
}
Cas d'usage : Stratégies haute fréquence, analyse de spread, flux d'ordres
Barres OHLC (Chandeliers)
Données de prix agrégées sur une période. Chaque barre contient les prix open, high, low, close et le volume.
%Bar{
time: ~U[2024-01-15 14:30:00Z],
open: 1.08540,
high: 1.08560,
low: 1.08535,
close: 1.08552,
volume: 1250.5
}
Cas d'usage : Analyse technique, suivi de tendance, la plupart des stratégies de trading
Timeframes Supportés
TheoryCraft peut rééchantillonner les données vers n'importe quel timeframe. Exemples courants :
| Code | Signification |
|---|---|
t1 |
1 tick (données tick brutes) |
s30 |
30 secondes |
m1 |
1 minute |
m5 |
5 minutes |
m15 |
15 minutes |
h1 |
1 heure |
h4 |
4 heures |
D1 |
1 jour |
W1 |
1 semaine |
M1 |
1 mois |
Ce ne sont que des exemples. Vous pouvez rééchantillonner vers n'importe quel intervalle (ex : m3 pour 3 minutes, h2 pour 2 heures). Le processor resampler convertit automatiquement les timeframes inférieurs en supérieurs.
Modèle Mental
Pensez à MarketSource comme une usine de streaming :
- DataFeed est le quai de chargement - les matières premières (données de marché) entrent ici
- Processors sont la chaîne d'assemblage - les données sont transformées, enrichies et vérifiées
- MarketEvent est le produit fini - prêt à être consommé par les Engines
Les données circulent dans une seule direction, de la source brute à la sortie traitée, chaque étape ajoutant de la valeur.
Construire un Pipeline MarketSource
Un pipeline MarketSource typique :
- Configurer un DataFeed avec un instrument et une plage de dates
- Ajouter un processor resampler pour convertir vers le timeframe souhaité
- Ajouter des processors d'indicateurs pour l'analyse technique
- Streamer les MarketEvents résultants vers un Engine
MarketSource coordonne le DataFeed et les Processors en un pipeline de streaming unifié, gérant automatiquement la backpressure et la parallélisation.
DataFeeds Disponibles
DataFeed Dukascopy
Données historiques gratuites de Dukascopy Bank pour plus de 1600 instruments :
- Forex : Paires majeures, mineures et exotiques
- Actions : Actions américaines et européennes
- Cryptomonnaies : Paires crypto majeures
- Matières premières : Métaux précieux, énergie
- Indices : Principaux indices mondiaux
La librairie Dukascopy est stable et prête à l'emploi.
DataFeed Personnalisé
Vous pouvez créer un DataFeed personnalisé en implémentant le behaviour TheoryCraft.DataFeed. Cela permet l'intégration avec n'importe quelle source de données : bases de données propriétaires, APIs broker ou flux en temps réel.
ℹ️ Des sources de données supplémentaires et des flux temps réel sont prévus.
Bonnes Pratiques
Streamez, ne Chargez Pas
Utilisez toujours le streaming pour traiter les données. Charger des datasets entiers en mémoire va à l'encontre de l'architecture streaming de TheoryCraft et peut causer des problèmes de mémoire avec des datasets volumineux.
Gérez les Gaps de Données
Les données de marché ont souvent des gaps (weekends, jours fériés, suspensions de cotation). Concevez votre stratégie pour gérer les barres manquantes de manière élégante.
Validez la Qualité des Données
Vérifiez les problèmes de qualité des données :
- Timestamps manquants
- Prix invalides (négatifs, nuls ou valeurs extrêmes)
- Relations OHLC incorrectes (high < low)
Prochaines Étapes
Cette page s'est concentrée sur l'ingestion et la transformation des données de marché. L'exécution de stratégie et la gestion des ordres sont couvertes dans les sections suivantes.
- Broker - Exécution d'ordres et gestion des positions
- Engines - Exécution de stratégie et analyse
- Workflow Événementiel - Voyez comment MarketSource s'intègre dans l'architecture
- Guide DataFeed Dukascopy - Commencez avec des données historiques gratuites
- Visualisation avec Kino - Visualisez vos données dans Livebook