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.
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.
La Data Science est l'art et la science d'extraire des connaissances utiles à partir de données brutes. Elle combine trois disciplines :
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 ?"
| 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 |
La Data Science est un domaine vaste. Voici une cartographie des sous-domaines pertinents pour le trading :
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.
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 :
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.
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 |
Dans un data lake de trading, vous rencontrerez différents formats de fichiers. Chacun a ses avantages :
| 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 |
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).
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, 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).
| 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 |
Vous vous dites peut-être : "Pourquoi stocker les données brutes ? Je veux directement les indicateurs !" Trois raisons fondamentales :
C'est la règle d'or du data engineering : ne jamais jeter les données brutes.
# 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}")
-- 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
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.
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 ?"
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 |
-- 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;
| 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 (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é.
Imaginez cette situation classique :
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.
| 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 |
| 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 |
# 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"
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) 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.
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 |
| 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 |
| 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 |
| 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 |
| 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 |
Si vous démarrez de zéro, voici le stack minimal que nous recommandons :
Coût total : $0. Temps de setup : une après-midi.
À 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.
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 :
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 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 |
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.
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.
| 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 |
| 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 |
C'est la beauté (et le défi) du trading retail data-driven. Vous devez :
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 concept du profil en T (T-shaped) est particulièrement pertinent pour le trader data-driven :
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.
| 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 ? |
| 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 |
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.
| 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 |
# 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()
Vous n'avez pas besoin de tout cela pour commencer. Voici le stack minimum pour un trader retail data-driven :
| 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 |
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 :
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.