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 :

  1. DataFeed est le quai de chargement - les matières premières (données de marché) entrent ici
  2. Processors sont la chaîne d'assemblage - les données sont transformées, enrichies et vérifiées
  3. 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 :

  1. Configurer un DataFeed avec un instrument et une plage de dates
  2. Ajouter un processor resampler pour convertir vers le timeframe souhaité
  3. Ajouter des processors d'indicateurs pour l'analyse technique
  4. 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.

Guide DataFeed Dukascopy →

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.