Files
trader-ml/docs/PROJECT_STATUS.md
Tika 6fd68af47a docs: Phase 4c terminée — résultats XGBoost (wf_prec=21.7%) et CNN (wf_prec=32.7%)
CNN > XGBoost sur précision directionnelle. Labels équilibrés (32%/32%/35%).
Mise à jour table comparatif + statut Phase 4c → 100%.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 19:50:20 +00:00

9.6 KiB
Raw Blame History

État d'Avancement du Projet — Trading AI Secure

Dernière mise à jour : 2026-03-10 Version : 0.6.0-beta Statut Global : 🟡 En Développement Actif


Vue d'Ensemble

Phase Statut Progression
Phase 1 : Architecture & Infrastructure Terminé 100%
Phase 2 : IA Adaptative Terminé 100%
Phase 3 : Stratégies & Backtesting Terminé 100%
Phase 4 : Interface & Dashboard Terminé 100%
Phase 4b : ML-Driven Strategy Terminé 100%
Phase 4c : CNN + Ensemble Terminé 100%
Phase 4d : RL (PPO) Planifié 0%
Phase 5 : IG Markets (Live) Planifié 0%

Phase 1 — Architecture & Infrastructure

Docker (8 services)

Container Port Statut
trading-api 8100 Opérationnel
trading-ml 8200 Opérationnel
trading-dashboard 8501 Opérationnel
trading-jupyter 8888 Opérationnel
trading-grafana 3100 Opérationnel
trading-db (TimescaleDB) interne Opérationnel
trading-redis interne Opérationnel
trading-prometheus interne Opérationnel

Modules Core

Module Fichier Statut
ConfigLoader src/utils/config_loader.py Env vars + YAML + Docker overrides
Logger src/utils/logger.py
RiskManager (Singleton) src/core/risk_manager.py VaR/CVaR/circuit breakers/Telegram
NotificationService src/core/notifications.py Telegram + Email
StrategyEngine src/core/strategy_engine.py
DataService src/data/data_service.py Yahoo Finance + Alpha Vantage
SQLAlchemy models src/db/models.py Trade, OHLCVData, BacktestResult, MLModelMeta

Phase 2 — IA Adaptative

Composant Fichier Statut Notes
MLEngine src/ml/ml_engine.py Intégré à StrategyEngine
RegimeDetector (HMM) src/ml/regime_detector.py 3 régimes : trend/range/volatile
FeatureEngineering src/ml/feature_engineering.py 50+ features
ParameterOptimizer (Optuna) src/ml/parameter_optimizer.py TPE Sampler + MedianPruner, walk-forward
WalkForwardAnalyzer src/ml/walk_forward.py Out-of-sample validation
PositionSizing (Kelly) src/ml/position_sizing.py

Optuna Optimizer — résultats sur EURUSD/1h (50 trials)

  • best_sharpe = -0.378 (scalping légèrement perdant sur ce timeframe)
  • Best params : bb_period=30, rsi_period=16, risk_per_trade=0.003

Phase 3 — Stratégies & Backtesting

Stratégies Implémentées

Stratégie Fichier Timeframe Statut
ScalpingStrategy src/strategies/scalping/ 1h Win rate ~39% (EURUSD)
IntradayStrategy src/strategies/intraday/ 4h
SwingStrategy src/strategies/swing/ 1d
MLDrivenStrategy src/strategies/ml_driven/ Configurable Nouveau (Phase 4b)

Backtesting

Composant Statut Notes
BacktestEngine DataService réel + fallback synthétique
WalkForwardAnalyzer Vrai out-of-sample
MetricsCalculator Sharpe, Drawdown, Win Rate, Profit Factor
PaperTradingEngine Boucle async avec asyncio.create_task

Fixes critiques (sessions debug)

  • yfinance>=1.0.0 (v0.2.32 était cassé, erreur HTTP 429)
  • max_position_size=5.0 (forex : notional value >> capital, ancien 0.05 rejetait tous les trades)
  • scalping_strategy.py : volume_ratio=2.0 si forex, MACD momentum (pas zero-crossing), risk_per_trade=0.005
  • scalping_strategy.py : TP changé de 3×ATR → 4×ATR → R:R=2:1, breakeven ~34% (win rate actuel ~39% → rentable)
  • Optuna : objective retourne vrai Sharpe (pénalité -999 seulement si < 5 trades)

Phase 4 — Interface & Dashboard

Composant Fichier Statut
Dashboard Streamlit (5 onglets) src/ui/dashboard.py
Page Live Trading src/ui/pages/live_trading.py
Page ML Monitor src/ui/pages/ml_monitor.py
Page Analytics (Monte Carlo) src/ui/pages/analytics.py
API Client httpx src/ui/api_client.py

Phase 4b — ML-Driven Strategy (2026-03-08)

Nouvelle stratégie qui apprend à trader comme un humain à partir de features TA classiques. Voir docs/ML_STRATEGY_GUIDE.md pour la documentation complète.

Composant Fichier Statut
TechnicalFeatureBuilder (~50 features) src/ml/features/technical_features.py
LabelGenerator (forward simulation) src/ml/features/label_generator.py fix bug SHORT (2026-03-08)
MLStrategyModel (XGBoost/LightGBM) src/ml/ml_strategy_model.py
MLDrivenStrategy (hérite BaseStrategy) src/strategies/ml_driven/ml_strategy.py
Route POST /trading/train src/api/routers/trading.py
Route GET /trading/train/{job_id} src/api/routers/trading.py
Route GET /trading/ml-models src/api/routers/trading.py
Route GET /trading/ml-models/{s}/{tf}/importance src/api/routers/trading.py
Documentation docs/ML_STRATEGY_GUIDE.md

Phase 4c — CNN + Ensemble (2026-03-10)

CNN 1D sur séquences brutes OHLCV + combinaison pondérée avec XGBoost. Voir docs/CNN_ENSEMBLE_PLAN.md pour l'architecture complète.

Composant Fichier Statut
PyTorch 2.10 dans requirements docker/requirements/api.txt Installé
CandlestickEncoder (normalisation séquences) src/ml/cnn/candlestick_encoder.py
CNNModel (1D Conv PyTorch) src/ml/cnn/cnn_model.py
CNNStrategyModel (train/predict/save/load) src/ml/cnn/cnn_strategy_model.py
CNNDrivenStrategy (hérite BaseStrategy) src/strategies/cnn_driven/cnn_strategy.py
Routes API CNN (POST /train-cnn, GET /cnn-models) src/api/routers/trading.py
EnsembleModel (XGBoost + CNN pondérés) src/ml/ensemble/ensemble_model.py
EnsembleStrategy (hérite BaseStrategy) src/strategies/ensemble/ensemble_strategy.py
Routes API Ensemble (POST /configure, GET /status) src/api/routers/trading.py
Entraînement XGBoost validé (EURUSD/1h) wf_prec=21.7%
Entraînement CNN validé (EURUSD/1h) wf_prec=32.7%
Backtest comparatif (Scalping vs XGBoost vs CNN vs Ensemble) ⏸️ À faire

Résultats comparatifs des modèles (EURUSD/1h, 2 ans, ~12k barres)

Modèle WF Accuracy WF Precision Labels (L/S/N)
XGBoost (features TA) 33.6% 21.7% 3992/3943/4338 équilibré
CNN 1D (séquences OHLCV) 31.9% 32.7% 3971/3936/4303 équilibré
Ensemble (XGB+CNN 0.40/0.60) Non encore testé

Observation : CNN > XGBoost sur la précision directionnelle (32.7% vs 21.7%). Les deux modèles sont complémentaires pour l'ensemble.

Bugs corrigés (2026-03-10 — session agents)

  • trading.py : _get_data_service() inexistant → instanciation directe DataService
  • trading.py : logger non défini dans except handler → ajout import logging
  • trading.py : period string mal converti → period_map identique à _run_optimize_task
  • strategy_engine.py : ml_driven non supporté dans load_strategy() → cas ajouté
  • docker/requirements/api.txt : dépendances ML (scikit-learn, xgboost, lightgbm) manquantes dans trading-api
  • ml_strategy_model.py : labels [-1,0,1] → encodage +1 pour XGBoost ≥ 2.x

Phase 4d — RL (Planifié, après 4c validée)

Agent RL (PPO via gymnasium) intégré à l'ensemble comme troisième signal. Voir docs/CNN_ENSEMBLE_PLAN.md section Phase 4d.


Routes API — État Complet

Méthode Route Statut
GET /health
GET /ready
GET /trading/risk/status
POST /trading/risk/emergency-stop
POST /trading/risk/resume
GET /trading/positions
GET /trading/signals Redis
GET /trading/trades DB
GET /trading/ml/status HMM
POST /trading/backtest async
GET /trading/backtest/{job_id}
POST /trading/optimize Optuna async
GET /trading/optimize/{job_id}
GET /trading/paper/status
POST /trading/paper/start
POST /trading/paper/stop
POST /trading/train ML-Driven async
GET /trading/train/{job_id}
GET /trading/ml-models
GET /trading/ml-models/{symbol}/{timeframe}/importance

Phase 5 — IG Markets (Planifié)

Prérequis : 30 jours de paper trading validé avec Sharpe ≥ 1.5 et Max DD ≤ 10% Référence : docs/IG_INTEGRATION.md


À Faire (par priorité)

  1. Tester MLDrivenStrategy — lancer POST /trading/train sur EURUSD/1h, évaluer wf_accuracy, comparer en backtest vs scalping
  2. Améliorer stratégie scalping — win rate ~39% (légèrement sous seuil). Option : TP=4×ATR (R:R=2:1, breakeven à 34%)
  3. Persistance ML state — sauvegarder modèle HMM pour éviter re-training à chaque /ml/status
  4. PaperTradingEngine.run() — compléter les TODOs de la boucle live
  5. Sentiment Analysissrc/data/sentiment_service.py (Alpha Vantage News + FinBERT)
  6. IG Markets connector — Phase 5, après 30 jours paper trading validé

Dépôt Git

Légende

  • Terminé
  • 🟡 En cours
  • Planifié