GUIDE TECHNIQUE DATA SCIENCE

Data Science 101 : Le Guide Complet pour le Trading

Du Data Lake au Semantic Layer — Maîtrisez la Data pour Mieux Trader. Architecture, outils, profils et best practices pour construire votre infrastructure data de trading.

Data 360°
30 min
Débutant
Trading
10 sections

Pourquoi la Data Science en Trading ?

En 2026, la data est le carburant du trading moderne. Les hedge funds quantitatifs comme Two Sigma, Renaissance Technologies et Citadel ne sont pas des fonds d'investissement traditionnels : ce sont des entreprises de données qui font aussi du trading. Leur avantage compétitif repose sur la qualité, la vitesse et la profondeur de leurs pipelines de données.

Mais la révolution data ne concerne plus uniquement les institutionnels. Les outils qui coûtaient des millions de dollars par an sont désormais accessibles gratuitement aux traders retail. DuckDB, dbt, Grafana, Evidence — ces technologies open-source vous permettent de construire une infrastructure de données digne d'un hedge fund depuis votre ordinateur portable.

$1M+/an
Coût historique d'une infrastructure data de trading institutionnel en 2015
$0
Coût d'un stack data retail en 2026 avec les outils open-source
2.5 Exaoctets
Volume de données financières générées chaque jour sur les marchés mondiaux
10x
Avantage en vitesse de décision pour les traders équipés data vs intuition pure

Qu'est-ce que la Data Science, exactement ?

Définition simple

La Data Science est l'art et la science d'extraire des connaissances utiles à partir de données brutes. Elle combine trois disciplines :

  • L'informatique : stocker, transformer et déplacer les données
  • Les statistiques : analyser, modéliser et prédire
  • L'expertise métier : poser les bonnes questions et interpréter les résultats

En trading, la Data Science vous aide à répondre à des questions comme : "Le RSI est-il vraiment prédictif sur mon univers de stocks ?", "Quelle est la corrélation entre le VIX et mes drawdowns ?", ou "Mon screener a-t-il un edge statistiquement significatif ?"

Comment les meilleurs utilisent la data

Fonds / Entreprise Approche Data Avantage Compétitif
Renaissance Technologies Modèles mathématiques sur données historiques massives 66% de rendement annuel moyen (Medallion Fund)
Two Sigma Machine learning + données alternatives (satellites, NLP) $60 milliards AUM, équipe de 1600 ingénieurs
Citadel Infrastructure low-latency + data lakes massifs $65 milliards AUM, latence en microsecondes
Jane Street Analyse quantitative temps réel des order books Market maker dominant, $21B profit en 2024
Trader Retail (vous) DuckDB + dbt + screeners + sentiment + MCP Gateway Gratuit, rapide, adaptable, data-driven

Le paysage de la Data Science

La Data Science est un domaine vaste. Voici une cartographie des sous-domaines pertinents pour le trading :

Le Data Lake — Le Réservoir Brut

Le Data Lake est le point de départ de toute architecture data moderne. C'est un système de stockage qui accepte toutes les données, dans tous les formats, sans transformation préalable. Contrairement à un data warehouse qui impose un schéma rigide à l'écriture, le data lake stocke les données telles quelles et ne les structure qu'au moment de la lecture.

Imaginez un lac...

Un data lake, c'est littéralement un lac de données. Imaginez un immense lac naturel dans lequel se déversent des rivières de toute taille :

  • Une rivière de données de marché (prix, volumes, tick data)
  • Un ruisseau de news financières (Reuters, Bloomberg, Twitter)
  • Un torrent de données SEC (filings 10-K, 10-Q, 8-K)
  • Des gouttes de sentiment social (Reddit, StockTwits)

Toute cette eau se mélange dans le lac. Quand vous avez besoin d'une information précise, vous "pêchez" dans le lac en appliquant un filtre (une requête). C'est le concept de schema-on-read : la structure s'applique au moment où vous lisez, pas quand vous stockez.

Data Lake vs Data Warehouse

Ces deux concepts sont souvent confondus. Voici les différences fondamentales :

Critère Data Lake Data Warehouse
Schéma Schema-on-read (structure au moment de la lecture) Schema-on-write (structure imposée à l'écriture)
Données Brutes, semi-structurées, non-structurées Structurées, nettoyées, modélisées
Formats JSON, CSV, Parquet, Avro, images, logs Tables relationnelles (SQL)
Utilisateurs Data engineers, data scientists Analystes, managers, outils BI
Coût Faible (stockage object) Élevé (compute + stockage optimisé)
Qualité Variable — risque de "data swamp" Haute — données validées et testées
Cas d'usage trading Archivage tick data, raw API responses, sentiment brut OHLCV agrégé, indicateurs calculés, P&L quotidien

Les formats de données en trading

Dans un data lake de trading, vous rencontrerez différents formats de fichiers. Chacun a ses avantages :

CSV
Format texte universel. Simple mais lent et volumineux. Idéal pour les petits datasets et l'import/export rapide.
JSON
Format semi-structuré. Flexible pour les API responses (quotes, order books). Lisible mais peu performant en volumétrie.
Parquet
Format colonaire compressé. Le standard pour les données analytiques. 10x plus rapide que CSV, 5x plus compact.
Avro
Format binaire orienté lignes avec schéma embarqué. Idéal pour le streaming et les messages (Kafka).

Technologies de Data Lake

Technologie Type Coût Idéal pour
Amazon S3 Object storage cloud ~$0.023/Go/mois Production, scalabilité infinie
MinIO Object storage self-hosted Gratuit (open-source) Alternative S3 on-premise
Azure Data Lake Object storage cloud ~$0.018/Go/mois Écosystème Microsoft
Fichiers locaux Dossiers Parquet/CSV Gratuit Trader retail, prototypage
DuckDB Base analytique in-process Gratuit (open-source) Requêter directement des fichiers Parquet

Attention au "Data Swamp"

Un data lake mal géré devient un data swamp (marécage de données) : personne ne sait ce que contiennent les fichiers, les données sont dupliquées, corrompues ou obsolètes. Pour éviter cela : cataloguez vos données, nommez vos fichiers de manière cohérente, et documentez les sources. C'est exactement ce que résout l'architecture Medallion (section suivante).

Pour le trader retail

En pratique, votre "data lake" sera probablement un dossier de fichiers Parquet organisé par source et par date. Voici un exemple de structure :

data-lake/
├── market/
│   ├── daily/
│   │   ├── 2026-02-27_ohlcv.parquet
│   │   └── 2026-02-26_ohlcv.parquet
│   └── intraday/
│       └── 2026-02-27_15m.parquet
├── fundamentals/
│   ├── earnings_q4_2025.parquet
│   └── financials_annual.parquet
├── sentiment/
│   ├── reddit_wsb_2026-02-27.json
│   └── stocktwits_trending.json
├── sec/
│   ├── 10k_filings_2025.parquet
│   └── insider_transactions.parquet
└── news/
    └── 2026-02-27_reuters.json

Avec DuckDB, vous pouvez requêter ces fichiers directement en SQL sans les charger dans une base de données :

-- Requêter directement un fichier Parquet avec DuckDB
SELECT symbol, date, close, volume
FROM 'data-lake/market/daily/2026-02-27_ohlcv.parquet'
WHERE volume > 1000000
ORDER BY volume DESC
LIMIT 20;

L'Architecture Medallion (Bronze, Silver, Gold)

L'architecture Medallion, popularisée par Databricks, est le standard de facto pour organiser les données dans un data lake. Elle divise les données en trois couches de qualité croissante : Bronze (brut), Silver (nettoyé) et Gold (prêt à l'emploi).

🥉 Bronze
Données brutes telles que reçues de la source. Aucune transformation. Copie fidèle de l'API, du fichier ou du flux.
🥈 Silver
Données nettoyées, dédupliquées, typées et validées. Schéma normalisé, jointures possibles.
🥇 Gold
Données métier prêtes à consommer. Agrégations, indicateurs calculés, features pour modèles ML.

Flux de la donnée : de Bronze à Gold

Exemple concret en trading

Couche Contenu Trading Exemple Transformation
Bronze Réponse brute API Yahoo Finance JSON complet avec metadata, timestamps Unix Aucune — stockage tel quel
Silver OHLCV normalisé Parquet avec colonnes typées (date, float64) Parsing JSON, conversion types, déduplication
Gold Indicateurs techniques calculés RSI14, EMA20, MACD, Bollinger Bands Calcul fenêtré, agrégations, features

Pourquoi ne pas aller directement au Gold ?

Vous vous dites peut-être : "Pourquoi stocker les données brutes ? Je veux directement les indicateurs !" Trois raisons fondamentales :

  • Reproductibilité : si votre calcul de RSI a un bug, vous pouvez recalculer à partir du Bronze sans re-télécharger les données
  • Auditabilité : vous pouvez toujours vérifier ce que la source a réellement envoyé
  • Flexibilité : demain vous voudrez peut-être calculer un nouvel indicateur. Avec le Bronze, c'est trivial. Sans lui, il faut tout re-télécharger.

C'est la règle d'or du data engineering : ne jamais jeter les données brutes.

Pipeline Bronze → Silver en Python

# Pipeline Bronze → Silver pour les données OHLCV
import json
import pandas as pd
from pathlib import Path

def bronze_to_silver(bronze_path: str, silver_path: str):
    """Transforme les réponses JSON brutes en Parquet normalisé."""

    # 1. Lire le Bronze (JSON brut de l'API)
    with open(bronze_path) as f:
        raw = json.load(f)

    # 2. Extraire et normaliser
    records = []
    for item in raw['chart']['result']:
        symbol = item['meta']['symbol']
        timestamps = item['timestamp']
        quotes = item['indicators']['quote'][0]

        for i, ts in enumerate(timestamps):
            records.append({
                'symbol': symbol,
                'date': pd.Timestamp(ts, unit='s').date(),
                'open': round(quotes['open'][i], 2),
                'high': round(quotes['high'][i], 2),
                'low': round(quotes['low'][i], 2),
                'close': round(quotes['close'][i], 2),
                'volume': int(quotes['volume'][i] or 0),
            })

    # 3. Créer le DataFrame, dédupliquer, trier
    df = pd.DataFrame(records)
    df = df.drop_duplicates(subset=['symbol', 'date'])
    df = df.sort_values(['symbol', 'date'])

    # 4. Écrire en Parquet (Silver)
    df.to_parquet(silver_path, index=False)
    print(f"Silver: {len(df)} rows → {silver_path}")

Pipeline Silver → Gold en SQL (dbt)

-- models/gold/fct_daily_indicators.sql
-- Calcule les indicateurs techniques à partir du Silver

WITH daily AS (
    SELECT * FROM {{ ref('stg_daily_ohlcv') }}
),

with_indicators AS (
    SELECT
        symbol,
        date,
        close,
        volume,

        -- Moyenne mobile simple 20 jours
        AVG(close) OVER (
            PARTITION BY symbol
            ORDER BY date
            ROWS BETWEEN 19 PRECEDING AND CURRENT ROW
        ) AS sma_20,

        -- Moyenne mobile exponentielle approximée
        AVG(close) OVER (
            PARTITION BY symbol
            ORDER BY date
            ROWS BETWEEN 49 PRECEDING AND CURRENT ROW
        ) AS sma_50,

        -- Volume moyen 20 jours
        AVG(volume) OVER (
            PARTITION BY symbol
            ORDER BY date
            ROWS BETWEEN 19 PRECEDING AND CURRENT ROW
        ) AS avg_volume_20,

        -- Rendement quotidien
        (close - LAG(close) OVER (PARTITION BY symbol ORDER BY date))
        / NULLIF(LAG(close) OVER (PARTITION BY symbol ORDER BY date), 0)
        AS daily_return

    FROM daily
)

SELECT
    *,
    CASE WHEN close > sma_20 THEN 'above' ELSE 'below' END AS trend_sma20,
    CASE WHEN volume > avg_volume_20 * 2 THEN true ELSE false END AS volume_surge
FROM with_indicators

Le Star Schema et la Modélisation Dimensionnelle

La modélisation dimensionnelle, inventée par Ralph Kimball dans les années 1990, reste la méthode la plus utilisée pour organiser les données dans un data warehouse. Son concept central est le Star Schema (schéma en étoile) : une table de faits centrale entourée de tables de dimensions.

Pensez à Excel, mais en mieux...

Si vous avez déjà utilisé un tableau croisé dynamique dans Excel, vous connaissez déjà le concept. Les faits, ce sont les chiffres que vous mesurez (prix, volume, P&L). Les dimensions, ce sont les axes par lesquels vous les découpez (date, instrument, stratégie, secteur).

Le Star Schema, c'est simplement cette idée formalisée dans une base de données relationnelle. Et c'est incroyablement puissant pour répondre à des questions comme : "Quel est mon P&L par secteur, par mois, pour ma stratégie momentum ?"

Les composants du Star Schema

Faits
Tables contenant les mesures numériques (trades, positions, P&L quotidien, OHLCV). Grandes tables avec beaucoup de lignes.
Dimensions
Tables descriptives (instruments, exchanges, stratégies, dates). Petites tables avec des attributs textuels.
Clés
Foreign keys reliant les faits aux dimensions. Permettent les jointures rapides et les analyses multidimensionnelles.
Performance
Les requêtes analytiques sont 10-100x plus rapides qu'un schéma normalisé (3NF) grâce à moins de jointures.

Star Schema pour le trading

Exemple de tables

Table de faits : fct_daily_trades

Colonne Type Description
trade_id INT (PK) Identifiant unique du trade
instrument_key INT (FK) Référence vers dim_instruments
date_key INT (FK) Référence vers dim_dates
strategy_key INT (FK) Référence vers dim_strategies
entry_price DECIMAL(10,2) Prix d'entrée
exit_price DECIMAL(10,2) Prix de sortie
quantity INT Nombre d'actions/contrats
pnl DECIMAL(12,2) Profit & Loss réalisé
fees DECIMAL(8,2) Commissions et frais

Table de dimension : dim_instruments

Colonne Type Exemple
instrument_key INT (PK) 42
symbol VARCHAR(10) AAPL
name VARCHAR(100) Apple Inc.
sector VARCHAR(50) Technology
industry VARCHAR(50) Consumer Electronics
exchange VARCHAR(10) NASDAQ
market_cap_tier VARCHAR(20) Mega Cap

Requête analytique exemple

-- P&L mensuel par secteur et par stratégie
SELECT
    d.month_name,
    i.sector,
    s.strategy_name,
    SUM(f.pnl) AS total_pnl,
    COUNT(*) AS nb_trades,
    ROUND(SUM(CASE WHEN f.pnl > 0 THEN 1 ELSE 0 END)::FLOAT / COUNT(*) * 100, 1) AS win_rate
FROM fct_daily_trades f
JOIN dim_dates d ON f.date_key = d.date_key
JOIN dim_instruments i ON f.instrument_key = i.instrument_key
JOIN dim_strategies s ON f.strategy_key = s.strategy_key
WHERE d.year = 2026
GROUP BY d.month_name, i.sector, s.strategy_name
ORDER BY total_pnl DESC;

Star Schema vs Snowflake Schema

Critère Star Schema Snowflake Schema
Structure Dimensions plates (dénormalisées) Dimensions normalisées (sous-tables)
Jointures Peu (1 niveau) Nombreuses (multi-niveaux)
Performance Excellente (requêtes simples) Bonne (plus complexe)
Stockage Plus d'espace (redondance) Moins d'espace (normalisé)
Simplicité Très simple à comprendre Plus complexe
Recommandé pour Trading retail, petites équipes Grandes entreprises, données complexes

Le Semantic Layer — La Couche de Sens

Le Semantic Layer (couche sémantique) est peut-être le concept le plus sous-estimé de la data science moderne. C'est une couche d'abstraction qui définit de manière unique et cohérente ce que signifient vos métriques. Quand quelqu'un demande "Quel est le Sharpe ratio de ma stratégie ?", le semantic layer garantit que tout le monde obtient la même réponse, calculée de la même manière, quelle que soit l'outil utilisé.

Le problème sans semantic layer

Imaginez cette situation classique :

  • Votre spreadsheet Excel calcule le Sharpe ratio avec les rendements mensuels
  • Votre dashboard Grafana le calcule avec les rendements quotidiens
  • Votre script Python utilise un risk-free rate de 4%, votre Excel utilise 0%

Résultat : trois chiffres différents pour la même métrique. C'est le chaos. Le semantic layer résout ce problème en définissant une seule source de vérité pour chaque métrique.

Avec vs Sans Semantic Layer

Situation Sans Semantic Layer Avec Semantic Layer
"Quel est le P&L ?" Chaque outil a sa propre formule. Résultats divergents. Définition unique : SUM(exit_price - entry_price) * quantity - fees
"Win rate de ma stratégie" Inclut-on les trades flat ? Les trades partiels ? Règle claire : trades avec pnl > 0 / total trades (excluant flat)
"Volume moyen" 20 jours ? 50 jours ? Incluant les jours fériés ? SMA 20 jours ouvrés, excluant les half-days
Nouveau dashboard Re-coder toutes les métriques from scratch Réutiliser les définitions existantes du semantic layer
Changement de formule Modifier dans 5 endroits différents Modifier une seule fois, propagé partout

Technologies de Semantic Layer

Outil Approche Coût Idéal pour
dbt Metrics Définitions YAML dans le projet dbt Gratuit (open-source) Équipes utilisant déjà dbt
Cube.js API semantic layer indépendante Gratuit (self-hosted) Applications custom, temps réel
Looker (LookML) Modèle sémantique propriétaire $$$ Grandes entreprises, Google Cloud
MetriQL Open-source, compatible dbt Gratuit Petites équipes, prototypage

Exemple : définir des métriques trading en dbt

# models/metrics/trading_metrics.yml
metrics:
  - name: sharpe_ratio
    label: "Sharpe Ratio (annualisé)"
    description: "Rendement ajusté du risque, annualisé sur 252 jours ouvrés"
    type: derived
    type_params:
      expr: "(avg_daily_return * 252) / (stddev_daily_return * sqrt(252))"
      metrics:
        - avg_daily_return
        - stddev_daily_return

  - name: max_drawdown
    label: "Max Drawdown"
    description: "Perte maximale depuis le pic le plus haut"
    type: derived
    type_params:
      expr: "min(drawdown_pct)"
      metrics:
        - drawdown_pct

  - name: win_rate
    label: "Win Rate (%)"
    description: "Pourcentage de trades profitables (excluant les trades flat)"
    type: ratio
    type_params:
      numerator: winning_trades_count
      denominator: total_trades_count
    filter: "pnl != 0"

Pour le trader retail

Vous n'avez pas besoin d'un outil de semantic layer dédié pour commencer. Créez simplement un fichier metrics.sql ou metrics.py qui contient toutes vos définitions de métriques. L'important est d'avoir une seule source de vérité pour chaque calcul. Si votre Sharpe ratio est défini à un seul endroit, vous ne vous tromperez jamais.

Le Modern Data Stack (MDS)

Le Modern Data Stack (MDS) est une architecture modulaire où chaque composant est un outil spécialisé, interchangeable, et souvent open-source. Contrairement aux plateformes monolithiques d'antan (Informatica, Oracle Data Integrator), le MDS favorise le best-of-breed : choisissez le meilleur outil pour chaque fonction.

Les 7 couches du Modern Data Stack

Détail de chaque couche

1. Ingestion (Extract & Load)

La première étape consiste à récupérer les données de vos sources et à les charger dans votre warehouse. C'est le "EL" du pipeline ELT.

Outil Type Free Tier Points forts
Meltano Open-source CLI Illimité 500+ connecteurs Singer, extensible, GitOps
Airbyte Open-source UI/CLI Illimité (self-hosted) 400+ connecteurs, UI intuitive, CDC
Fivetran SaaS managé 500K rows/mois Zero maintenance, 600+ connecteurs
Scripts Python Code custom Gratuit Flexibilité totale, API custom

2. Stockage (Data Warehouse)

Outil Type Free Tier Points forts
DuckDB In-process analytique Illimité Zéro config, ultra-rapide, Parquet natif
PostgreSQL RDBMS open-source Illimité (self-hosted) Mature, extensible, JSONB support
Snowflake Cloud warehouse $400 credits Scalabilité, séparation compute/storage
BigQuery Cloud warehouse 1 TB requêtes/mois Serverless, ML intégré, Google ecosystem
SQLite Base embarquée Illimité Fichier unique, zéro dépendance, ubiquitaire

3. Transformation

Outil Langage Free Tier Points forts
dbt Core SQL + Jinja Illimité Standard de facto, tests, docs, lineage
SQLMesh SQL + Python Illimité Environnements virtuels, planification
Pandas / Polars Python Illimité Flexibilité maximale, ML-friendly

4. Orchestration

Outil Approche Free Tier Points forts
Dagster Asset-based orchestration Illimité (self-hosted) Data-aware, intégration dbt native
Prefect Flow-based orchestration Illimité (self-hosted) Pythonique, monitoring intégré
Apache Airflow DAG-based orchestration Illimité (self-hosted) Standard entreprise, énorme écosystème
Cron + scripts Planification OS Gratuit Simple, zéro dépendance, suffisant pour débuter

5. Visualisation

Outil Type Free Tier Points forts
Evidence BI as code (Markdown) Illimité (self-hosted) Git-native, DuckDB, SQL + Markdown
Grafana Dashboarding temps réel Illimité (self-hosted) Alertes, 150+ sources, community
Metabase BI self-service Illimité (self-hosted) No-code questions, embedding
Apache Superset BI enterprise Illimité (self-hosted) Semantic layer, SQL Lab, 40+ viz types

Le stack recommandé pour le trader retail

Si vous démarrez de zéro, voici le stack minimal que nous recommandons :

  • Ingestion : Scripts Python (requests + pandas) ou MCP Gateway
  • Stockage : DuckDB (fichier unique, zéro config, SQL standard)
  • Transformation : dbt Core (modèles SQL, tests, documentation)
  • Orchestration : Cron jobs ou Dagster (si vous avez plusieurs pipelines)
  • Visualisation : Evidence (dashboards en Markdown) ou Grafana

Coût total : $0. Temps de setup : une après-midi.

Data Marts et Data Mesh

À mesure que votre architecture data grandit, vous aurez besoin d'organiser vos données Gold en sous-ensembles spécialisés. C'est le rôle des data marts et, à plus grande échelle, du data mesh.

Data Marts : des boutiques spécialisées

Analogie

Si le data warehouse est un hypermarché (tout est disponible), un data mart est une boutique spécialisée : la fromagerie ne vend que du fromage, la boulangerie ne vend que du pain. Chaque mart est optimisé pour un usage précis.

En trading, vous pourriez avoir ces data marts :

Performance
P&L quotidien, drawdowns, Sharpe, win rate par stratégie, par période, par secteur. Utilisé par le dashboard principal.
Risque
VaR, corrélations, exposition sectorielle, beta portfolio, concentration. Utilisé pour les alertes et le rebalancing.
Screener
Indicateurs techniques, scores composites, signaux de trading, backtest results. Utilisé par le scanner quotidien.
Sentiment
Scores sentiment Reddit/StockTwits/Twitter, volume de mentions, polarité. Utilisé pour les analyses contrariantes.

Structure dbt des data marts

models/
├── staging/          # Bronze → Silver (nettoyage)
│   ├── stg_yahoo_ohlcv.sql
│   ├── stg_sec_filings.sql
│   └── stg_reddit_posts.sql
├── intermediate/     # Silver → Silver (jointures, enrichissements)
│   ├── int_daily_with_indicators.sql
│   └── int_trades_enriched.sql
└── marts/            # Gold (data marts finaux)
    ├── performance/
    │   ├── fct_daily_pnl.sql
    │   ├── fct_strategy_metrics.sql
    │   └── dim_strategies.sql
    ├── risk/
    │   ├── fct_portfolio_var.sql
    │   ├── fct_correlation_matrix.sql
    │   └── fct_sector_exposure.sql
    ├── screener/
    │   ├── fct_daily_signals.sql
    │   ├── fct_composite_scores.sql
    │   └── fct_backtest_results.sql
    └── sentiment/
        ├── fct_daily_sentiment.sql
        └── fct_mention_volume.sql

Le Data Mesh : la décentralisation

Le Data Mesh est un paradigme architectural proposé par Zhamak Dehghani (Thoughtworks) en 2019. Il s'oppose à l'approche centralisée traditionnelle où une seule équipe data gère tout le pipeline.

Principe Description En trading
Ownership par domaine Chaque équipe possède et maintient ses propres données L'équipe "alpha" gère les signaux, l'équipe "risk" gère le VaR
Data as a Product Les datasets sont traités comme des produits avec SLA, docs, versioning Le mart "screener" a une API, une doc, et un SLA de fraîcheur
Self-serve platform Infrastructure partagée accessible en libre-service Templates dbt, pipelines pré-configurés, catalogue data
Governance fédérée Standards globaux, implémentation locale Convention de nommage, tests obligatoires, SLA minimum

Data Mesh : pour les grandes organisations

Le Data Mesh est conçu pour les organisations avec plusieurs équipes data (50+ personnes). Si vous êtes un trader retail ou une petite équipe, le Data Mesh est overkill. Restez avec des data marts bien organisés dans un projet dbt unique. Vous pourrez toujours migrer vers un mesh quand votre organisation grandira.

Les Profils Data

L'écosystème data regroupe plusieurs métiers distincts. Comprendre ces rôles vous aidera à identifier quelles compétences développer pour votre stack de trading.

Les 5 profils clés

Profil Mission principale Outils typiques Salaire moyen (US)
Data Engineer Construire et maintenir les pipelines de données Python, Spark, Airflow, Kafka, Docker $140-180K
Data Analyst Analyser les données, créer des dashboards, répondre aux questions business SQL, Excel, Tableau, Looker, Python $85-120K
Data Scientist Créer des modèles prédictifs, feature engineering, expérimentation Python, R, scikit-learn, TensorFlow, notebooks $130-170K
Analytics Engineer Modéliser les données, définir les métriques, assurer la qualité dbt, SQL, YAML, Git, Looker/Metabase $120-160K
ML Engineer Déployer les modèles en production, monitoring, serving Python, MLflow, Kubernetes, FastAPI, Docker $150-200K

Matrice de compétences

Compétence Data Engineer Data Analyst Data Scientist Analytics Engineer ML Engineer
SQL Expert Expert Avancé Expert Avancé
Python Expert Intermédiaire Expert Intermédiaire Expert
Statistiques Basique Avancé Expert Avancé Avancé
Infrastructure Expert Basique Intermédiaire Intermédiaire Expert
Visualisation Basique Expert Avancé Avancé Intermédiaire
Machine Learning Basique Basique Expert Basique Expert
Communication Intermédiaire Expert Avancé Expert Intermédiaire

En trading retail, vous êtes TOUS ces profils

C'est la beauté (et le défi) du trading retail data-driven. Vous devez :

  • Ingérer les données (Data Engineer) : API calls, webscraping, fichiers
  • Nettoyer et modéliser (Analytics Engineer) : dbt models, tests, docs
  • Analyser (Data Analyst) : dashboards, requêtes ad-hoc, rapports
  • Expérimenter (Data Scientist) : backtests, feature engineering, signaux
  • Automatiser (ML Engineer) : screeners en production, alertes, bots

La bonne nouvelle : les outils modernes simplifient chaque étape. Vous n'avez pas besoin d'être expert dans tout. Commencez par SQL (le langage universel de la data) et élargissez progressivement.

Le profil en T

Le concept du profil en T (T-shaped) est particulièrement pertinent pour le trader data-driven :

Barre horizontale
Connaissances larges mais superficielles dans TOUS les domaines : SQL, Python, stats, infra, viz, ML. Assez pour comprendre et communiquer.
Barre verticale
Expertise profonde dans 1-2 domaines : par exemple SQL/dbt + analyse technique. C'est votre avantage compétitif.

Principes et Best Practices

Construire une infrastructure data fiable nécessite de respecter des principes fondamentaux. Voici les règles d'or du data engineering appliquées au trading.

Les 10 commandements de la data

1. Idempotence
Même input, même output, toujours. Exécuter un pipeline 2 fois ne doit pas créer de doublons ni altérer les résultats.
2. Immutabilité
Ne jamais modifier les données brutes (Bronze). Toujours créer de nouvelles versions. Append-only pour l'historique.
3. Reproductibilité
Tout résultat doit pouvoir être reproduit. Fixez les seeds aléatoires, versionnez le code ET les données d'entrée.
4. Testabilité
Chaque modèle, chaque transformation doit être testé : unicité, non-null, plage de valeurs, relations.
5. Documentation
Si ce n'est pas documenté, ça n'existe pas. Chaque colonne, chaque métrique, chaque pipeline doit avoir une description.
6. Observabilité
Savoir en temps réel si vos pipelines fonctionnent. Logs, métriques, alertes. Pas de pipeline silencieux.
7. Lineage
Traçabilité complète : d'où vient chaque donnée ? Quelles transformations a-t-elle subies ? Qui l'utilise ?
8. Fraîcheur
Les données périmées sont des données fausses. Définissez un SLA de fraîcheur pour chaque dataset (5 min, 1h, 1 jour).
9. Version Control
Tout le code data dans Git. Branches, PRs, code review. Comme du code applicatif, mais pour les données.
10. Sécurité
Protégez vos données sensibles : clés API, credentials, positions. Chiffrement, accès limité, rotation des secrets.

Data Quality : les 4 dimensions

Dimension Question Test dbt Exemple trading
Complétude Manque-t-il des données ? not_null, row count check Toutes les dates de trading sont présentes ? Pas de trous ?
Exactitude Les données sont-elles correctes ? accepted_values, range check Le prix close est entre le low et le high ? Volume > 0 ?
Cohérence Les données sont-elles cohérentes entre les sources ? Cross-source validation Le prix Yahoo = le prix de la source alternative ?
Fraîcheur Les données sont-elles à jour ? freshness source check Les données datent d'aujourd'hui ? Pas de retard > 1h ?

Best Practices vs Bad Practices

Sujet Best Practice Bad Practice
Nommage stg_yahoo__daily_ohlcv (convention claire) data2, final_v3_FIXED
Schéma Types explicites, colonnes documentées Tout en VARCHAR, pas de documentation
Tests Tests automatiques sur chaque modèle (unique, not_null, range) Pas de tests, "ça marche sur ma machine"
Pipeline Idempotent, versionné, documenté, orchestré Script ad-hoc, exécuté manuellement, non reproductible
Stockage Parquet pour l'analytique, partition par date CSV géants non partitionnés, pas de compression
Secrets Variables d'environnement, vault, rotation API keys en dur dans le code, pas de .gitignore
Backfill Script de backfill dédié, paramétrable par date range Modifier manuellement les données historiques

Les 5 péchés capitaux de la data

Les erreurs qui tuent vos analyses

  1. Le Survivorship Bias : ne backtester que sur les actions qui existent encore (ignorer les délistées). Gonfle artificiellement les rendements de +2-4% par an.
  2. Le Look-Ahead Bias : utiliser dans votre modèle des données qui n'étaient pas disponibles au moment de la décision. Exemple : utiliser le close du jour pour décider d'acheter le matin.
  3. L'Overfitting : optimiser vos paramètres sur les données historiques jusqu'à ce que le backtest soit parfait. En live, le modèle s'effondre.
  4. Le Data Snooping : tester des centaines de combinaisons de paramètres et ne publier que celle qui marche. C'est du p-hacking financier.
  5. La Data Decay : ne pas monitorer la fraîcheur de vos données. Trader sur des données périmées de 3 heures en pensant qu'elles sont temps réel.

Application au Trading Retail

Maintenant que vous maîtrisez les concepts, voyons comment tout assembler en une architecture fonctionnelle pour le trading retail. Voici l'architecture que nous utilisons chez DailyTickers.

Architecture complète : du marché au signal

Le stack DailyTickers

Couche Outil utilisé Rôle
Sources Yahoo Finance, SEC EDGAR, Reddit, StockTwits Données brutes de marché, fondamentaux, sentiment
Ingestion MCP Gateway + Meltano API calls automatisés, extraction ELT
Stockage Bronze PostgreSQL (raw schemas) Données brutes, JSON stocké tel quel
Transformation dbt Core Staging → Intermediate → Marts
Stockage Gold PostgreSQL (mart schemas) + DuckDB Données prêtes pour les dashboards et les analyses
Orchestration Nomad + Discord Bot Planification des pipelines et des publications
Visualisation Evidence.dev + ECharts Dashboards interactifs, rapports automatisés
Analyse IA Claude (Anthropic) + MCP Rédaction des analyses, screening, synthèse

Pipeline quotidien : de la donnée brute au signal

# Exemple simplifié du pipeline quotidien DailyTickers

# 1. INGESTION (6h00) — Bronze
# Le MCP Gateway collecte les données de marché
mcp_gateway.query(
    types="quote,bars_daily,technicals,sentiment_overall",
    symbols="SPY,QQQ,DIA,IWM,GLD,TLT,BTC-USD,ETH-USD"
)

# 2. TRANSFORMATION (6h15) — Silver → Gold
# dbt transforme les données brutes en indicateurs
# $ dbt run --models staging intermediate marts

# 3. SCREENING (6h30) — Signaux
# Le screener analyse les données Gold
auto_screener.run(
    regime_detection=True,
    strategies=["momentum", "breakout", "oversold", "squeeze"],
    min_score=85,
    top_k=10
)

# 4. PUBLICATION (7h00) — Briefing
# Claude génère le briefing quotidien
briefing = claude.generate(
    template="daily_briefing",
    data=market_data + screener_results + sentiment,
    lang="fr"
)

# 5. DÉPLOIEMENT
# GitHub Pages publie automatiquement
git.add("daily/20260227/index.html")
git.commit("daily: briefing 27 février 2026")
git.push()

Minimum Viable Data Stack (MVDS)

Vous n'avez pas besoin de tout cela pour commencer. Voici le stack minimum pour un trader retail data-driven :

Étape 1
DuckDB + SQL : Installez DuckDB, téléchargez des fichiers Parquet de données historiques, et commencez à explorer en SQL. Durée : 1 heure.
Étape 2
dbt Core : Créez un projet dbt, modélisez vos données (staging → marts), ajoutez des tests. Durée : 1 après-midi.
Étape 3
Cron + Script Python : Automatisez l'ingestion quotidienne avec un script Python planifié par cron. Durée : 2 heures.
Étape 4
Evidence ou Grafana : Créez votre premier dashboard connecté à DuckDB ou PostgreSQL. Durée : 1 après-midi.

Checklist : êtes-vous prêt ?

Compétence Niveau requis Ressource recommandée
SQL basique SELECT, WHERE, JOIN, GROUP BY SQLBolt (gratuit, interactif)
Ligne de commande cd, ls, pip install, git basics The Missing Semester (MIT, gratuit)
Python basique Variables, boucles, fonctions, pip Automate the Boring Stuff (gratuit en ligne)
Git init, add, commit, push, branch Oh My Git! (jeu interactif)
Concepts data Ce guide (vous y êtes !) DailyTickers Tech

Ressources pour aller plus loin

Livres
"Fundamentals of Data Engineering" (Joe Reis & Matt Housley) — la bible du data engineering moderne.
"The Data Warehouse Toolkit" (Ralph Kimball) — modélisation dimensionnelle.
"Designing Data-Intensive Applications" (Martin Kleppmann) — systèmes distribués.
En ligne
dbt Learn (courses.getdbt.com) — gratuit, officiel.
DataTalks.Club — bootcamp data engineering gratuit.
DailyTickers Tech — nos guides techniques sur le trading data-driven.
Podcasts
"The Analytics Engineering Podcast" (dbt Labs).
"Data Engineering Podcast" (Tobias Macey).
"Software Engineering Daily" — épisodes data.
Communautés
dbt Community Slack (20K+ membres).
r/dataengineering (Reddit).
Data Council (conférence annuelle).

Le mot de la fin

La data science n'est pas une destination, c'est un voyage itératif. Vous n'avez pas besoin de maîtriser tous les concepts de ce guide avant de commencer. Commencez petit :

  1. Téléchargez DuckDB et un fichier Parquet de données historiques
  2. Écrivez votre première requête SQL
  3. Ajoutez un modèle dbt simple
  4. Créez un dashboard basique
  5. Itérez, améliorez, documentez

En 6 mois, vous aurez un stack data plus sophistiqué que 95% des traders retail. Et surtout, vous prendrez des décisions basées sur des données, pas sur des émotions.

Introduction Data Lake Architecture Medallion Star Schema Semantic Layer Modern Data Stack Data Marts & Mesh Profils Data Best Practices Application Trading