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>
9.6 KiB
9.6 KiB
É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.005scalping_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 DataServicetrading.py:loggernon défini dans except handler → ajout import loggingtrading.py:periodstring mal converti → period_map identique à _run_optimize_taskstrategy_engine.py:ml_drivennon supporté dansload_strategy()→ cas ajoutédocker/requirements/api.txt: dépendances ML (scikit-learn, xgboost, lightgbm) manquantes dans trading-apiml_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é)
- Tester MLDrivenStrategy — lancer
POST /trading/trainsur EURUSD/1h, évaluer wf_accuracy, comparer en backtest vs scalping - Améliorer stratégie scalping — win rate ~39% (légèrement sous seuil). Option : TP=4×ATR (R:R=2:1, breakeven à 34%)
- Persistance ML state — sauvegarder modèle HMM pour éviter re-training à chaque
/ml/status - PaperTradingEngine.run() — compléter les TODOs de la boucle live
- Sentiment Analysis —
src/data/sentiment_service.py(Alpha Vantage News + FinBERT) - IG Markets connector — Phase 5, après 30 jours paper trading validé
Dépôt Git
- Gitea : http://192.168.1.100:3000/tika/trader-ml.git
- Branche principale : master
Légende
- ✅ Terminé
- 🟡 En cours
- ⚪ Planifié