# É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](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](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](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](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 Analysis** — `src/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 - **Gitea** : http://192.168.1.100:3000/tika/trader-ml.git - **Branche principale** : master ## Légende - ✅ Terminé - 🟡 En cours - ⚪ Planifié