Files
trader-ml/docs/PROJECT_STATUS.md
Tika 8732acf3d0 docs: plan Phase 4c CNN+Ensemble + mise à jour PROJECT_STATUS
- Nouveau : docs/CNN_ENSEMBLE_PLAN.md — architecture complète CNN 1D + Ensemble pondéré + RL (Phase 4d)
- PROJECT_STATUS : Phase 4b marquée avec fix bug SHORT LabelGenerator
- PROJECT_STATUS : Phase 4c CNN+Ensemble et Phase 4d RL ajoutées

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 22:24:16 +00:00

204 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# État d'Avancement du Projet — Trading AI Secure
**Dernière mise à jour** : 2026-03-08
**Version** : 0.5.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 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 🟡 (En cours)
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 CPU dans requirements | `docker/requirements/api.txt` | 🟡 |
| 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 (train, status, list) | `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 (configure, signal) | `src/api/routers/trading.py` | 🟡 |
---
## 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é