Files
trader-ml/docs/PROJECT_STATUS.md
2026-03-08 21:45:47 +00:00

178 lines
7.0 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` | ✅ |
| 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` | ✅ |
---
## 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é