Le modèle ML entraîné (signal_classifier.pkl) avec un AUC de 0.6143 n'est pas utilisé
dans market_spy.py. Le bot trade actuellement sans aucun filtrage IA sur les décisions d'achat.
Les 20 minutes de GPU training et 500 trials d'optimisation ne servent à rien tant que le classifier n'est pas branché.
| Signal Classifier | Non intégré |
| Win rate | 47.8% |
| PnL réel | -73.55€ |
| Filtrage trades | Aucun ML |
| Trades pris | 100% des signaux |
| Modèle LSTM | Inutilisé |
| Signal Classifier | Actif (hybride) |
| Win rate estimé | ~48.9% (+1.1pp) |
| PnL estimé | Positif |
| Filtrage trades | 30.6% mauvais filtrés |
| Trades pris | 77.4% (seuil 0.45) |
| Modèle LSTM | 40% du score hybride |
| Paramètre | Valeur |
|---|---|
| learning_rate | 0.00709 |
| max_depth | 8 |
| min_child_weight | 33 |
| subsample | 0.615 |
| colsample_bytree | 0.953 |
| gamma | 2.959 |
| reg_lambda | 3.24e-05 |
| grow_policy | lossguide |
| max_leaves | 231 |
| Paramètre | Valeur |
|---|---|
| learning_rate | 0.02663 |
| num_leaves | 147 |
| max_depth | 12 |
| min_child_samples | 18 |
| subsample | 0.482 |
| colsample_bytree | 0.478 |
| reg_lambda | 13.08 |
| min_split_gain | 0.479 |
| path_smooth | 0.669 |
| Métrique | Valeur | Détail |
|---|---|---|
| Architecture | LSTM 2 couches + Attention | hidden=128, seq_len=60, features=14 |
| Best Epoch | 25 / 40 (early stop) | Cosine Annealing LR scheduler |
| AUC | 0.6112 | Sur 10,958 échantillons de validation |
| Precision | 0.5112 | 51.1% des trades acceptés sont gagnants |
| Threshold | 0.55 | Plus strict que le tabulaire (0.45) |
| PnL Δ | +872.37% | -500% → +372% sur validation |
Chaque fold entraîne le modèle sur les données passées et teste sur le futur. 5/5 folds positifs confirment que le modèle n'est pas overfit.
| Fold | Période | Trades | Passés | AUC | Précision | PnL Sans Filtre | PnL Avec Filtre | Δ PnL |
|---|---|---|---|---|---|---|---|---|
| 1 | Jan → début Fév | 7 307 | 890 (12%) | 0.545 | 46.1% | -1 424.8% | -107.3% | +1 317.6% |
| 2 | Fév → début Mars | 7 307 | 2 105 (29%) | 0.590 | 48.7% | -954.7% | -82.3% | +872.4% |
| 3 | Mars → mi-Mars | 7 307 | 1 685 (23%) | 0.615 | 49.3% | -702.9% | +52.0% | +754.9% |
| 4 | Mi-Mars → Avril | 7 307 | 3 459 (47%) | 0.630 | 48.3% | -627.3% | +216.1% | +843.5% |
| 5 | Avril → 18 Avril | 7 307 | 5 634 (77%) | 0.610 | 50.4% | -130.0% | +412.3% | +542.3% |
| TOTAL | 36 535 | 13 773 | avg 0.598 | avg 48.6% | -3 739.7% | +490.8% | +4 330.6% | |
📌 Observation clé : Le modèle s'améliore avec le temps (AUC 0.545 → 0.630). Les folds 3-5 (données récentes) génèrent un PnL positif absolu avec le filtre, pas seulement une amélioration relative.
Les features qui influencent le plus la prédiction du modèle. Ces insights suggèrent les paramètres du spy à ajuster.
Le classifier ML (AUC 0.6143) doit filtrer les trades avant l'achat.
Dans confirm_surge(), appeler SignalClassifier.predict(features)
et bloquer si score < 0.45 (threshold optimal).
Changement : Après la confirmation technique, calculer les 52 features (klines 1m/5m/15m/30m/1h) et passer au classifier. Mode hybride : 60% LightGBM/XGBoost + 40% LSTM.
buy_pressure_1m est le #1 feature (4302 splits). Le spy utilise un seuil fixe
de ≥0.68 pour "strong buy" et <0.55 pour bloquer les tendances.
Le modèle ML montre que cette feature est beaucoup plus nuancée.
| Paramètre | Actuel | Proposé |
|---|---|---|
| strong_buy_pressure | ≥ 0.68 | ≥ 0.62 (le ML l'utilise plus finement) |
| weak_buy (block trend) | < 0.55 | < 0.50 (moins restrictif) |
| sell_pressure block | < 0.35 | < 0.38 (plus strict sur les ventes) |
L'heure UTC est le 3e facteur le plus important. Le modèle a appris les patterns horaires (sessions asiatique/européenne/US). Le spy n'utilise pas l'heure pour moduler ses décisions.
| Session | Heures UTC | Action Proposée |
|---|---|---|
| 🌏 Asie | 0h-8h | Réduire position à 70% (volatilité moindre) |
| 🌍 Europe | 8h-14h | Position normale 100% |
| 🌎 US Open | 14h-16h | Position +20% (max opportunités) |
| 🌃 US Close | 20h-0h | Réduire à 80% (fin de journée) |
price_position_30m (#4) et price_position_60m (#14) mesurent où le prix se situe
dans son range récent (0=bas, 1=haut). Le spy a un SURGE_MAX_ALREADY_PUMPED de 50%,
mais le ML dit que c'est le niveau précis dans le range qui compte.
| Paramètre | Actuel | Proposé |
|---|---|---|
| SURGE_MAX_ALREADY_PUMPED | 50% | 40% (si price_pos_30m > 0.85) |
| Bonus si price_pos_30m | — | 0.3-0.7 = zone idéale (+1 signal) |
| Block si price_pos_30m | — | > 0.95 = probable sommet (block) |
rsi_delta_3m (#5) mesure le changement de RSI sur 3 minutes — un momentum court terme.
Le spy utilise un RSI trap (RSI ≤35 + EMA bearish) mais pas le delta RSI.
| Condition | Actuel | Proposé |
|---|---|---|
| RSI delta 3m positif | Non vérifié | Requis pour NORMAL/TRENDING |
| RSI delta 3m > 5 | — | Bonus signal (momentum fort) |
| RSI delta 3m < -10 | — | Block (effondrement RSI) |
Le trailing actuel est à 0.3% pour PnL < 0.5% — très serré. Le modèle montre que la
volatility_30m (#6) devrait moduler le trailing.
| Paramètre | Actuel | Proposé |
|---|---|---|
| Trailing < 0.5% PnL | 0.3% | 0.4% si vol_30m élevée |
| Trailing activation | 1.0% | 0.8% (sécuriser plus tôt) |
| HARD_STOP_LOSS | 1.2% | 1.0% (couper les pertes + vite) |
| Early SL delay | 60s | 45s (réagir plus vite) |
avg_trades_per_min_5m (#2) et trade_intensity_ratio (#11) sont des features
très importantes que le spy n'utilise pas directement. Un nombre élevé de trades/minute indique un intérêt réel.
| Condition | Proposé |
|---|---|
| trades_per_min < 5 | Block — marché trop calme, faux signal |
| trades_per_min > 50 | Bonus signal — forte activité |
| trade_intensity_ratio > 2x | Boost position +10% |
Actuellement 15 min. Le SPY montre un hold moyen de 5.9 min. Les trades qui durent >10 min sont rarement gagnants sur les surges.
| Paramètre | Actuel | Proposé |
|---|---|---|
| MAX_HOLD_MINUTES | 15 min | 12 min |
| STAGNATION_EXIT | 10 min | 8 min |
MIN_VOLUME_USDT à 1.5M. Le volume_ratio_3m (#10) est plus pertinent que le volume absolu.
Des coins à 1M de volume mais avec un ratio de 5x sont de meilleures opportunités que des coins à 5M avec ratio 1x.
Planifier remote_gpu_train.py chaque dimanche via cron. Le marché crypto évolue vite,
les patterns de janvier ne sont plus les mêmes en avril (AUC Fold 1: 0.545 vs Fold 5: 0.610).
Basé sur les 159 trades réels et les métriques de validation du modèle ML. Estimations conservatrices.
| Scénario | Trades/mois | Win Rate | Avg Win | Avg Loss | PnL Estimé/mois |
|---|---|---|---|---|---|
| Actuel (sans IA) | ~160 | 47.8% | +1.2% | -0.9% | ~-74€ |
| Avec Classifier (prop. 1) | ~124 (77.4%) | 48.9% | +1.2% | -0.8% | ~+40-60€ |
| + Props 2-5 (features) | ~110 | ~50.5% | +1.3% | -0.8% | ~+80-120€ |
| + Props 6-8 (exit) | ~110 | ~50.5% | +1.4% | -0.7% | ~+120-180€ |
⚠️ Avertissement : Ces estimations sont basées sur le backtest walk-forward (43,844 trades simulés). Les performances passées ne garantissent pas les résultats futurs. Le marché crypto est volatile. Les commissions (0.1%/trade) et le slippage sont inclus dans les calculs du dataset.
Import de SignalClassifier, calcul des features dans confirm_surge(),
filtrage avec threshold 0.45. Test en mode paper pendant 24-48h.
Impact attendu : +895% PnL improvement
Buy pressure, session horaire, price position, RSI delta. Chaque changement testé individuellement en A/B paper trading pendant 24h.
Trailing stop dynamique basé sur la volatilité, trade intensity filter, réduction du hold time.
Cron hebdomadaire, monitoring des métriques, adaptation continue.
| Paramètre | Valeur | Notes |
|---|---|---|
| MIN_VOLUME_USDT | 1 500 000 | Réduit de 5M → 2M → 1.5M |
| SCAN_INTERVAL | 7s | Réduit de 10s |
| MAX_PRICE | 50 000 | |
| MIN_PRICE | 0.0005 |
| Paramètre | Valeur | Notes |
|---|---|---|
| SURGE_MIN_PRICE_CHANGE | 1.0% | Augmenté de 0.7% |
| SURGE_MIN_PRICE_CHANGE_2 | 1.1% | Réduit de 1.5% |
| SURGE_MIN_VOLUME_RATIO | 3.0x | Augmenté de 2.0x |
| MOMENTUM_MIN_CHANGE_20 | 4.0% | +4% sur 2.5 min |
| MOMENTUM_MIN_CHANGE_40 | 6.0% | +6% sur 5 min |
| MOMENTUM_COOLDOWN | 600s | 10 min entre signaux |
| Paramètre | Valeur | Notes |
|---|---|---|
| HARD_STOP_LOSS | 1.2% | Augmenté de 1.0% |
| TRAILING_STOP (tight) | 0.3% | Pour PnL < 0.5% |
| TRAILING_ACTIVATION | 1.0% | Augmenté de 0.5% |
| EARLY_SL | 0.5% en 60s | Sortie rapide si ça plonge |
| MAX_HOLD | 15 min | Réduit de 20 min |
| STAGNATION_EXIT | 10 min |
| Paramètre | Valeur | Notes |
|---|---|---|
| SPY_MAX_POSITIONS | 3 | |
| MAX_TRADES_PER_HOUR | 6 | |
| Position size | 5.625% du capital | ~900 USDT |
| Circuit Breaker | 4 pertes consécutives → 12h block | |
| Market regime | BEAR = 50% position |