# ANALYSE TESTNET — 7 MAI 2026
## État factuel + Potentiel rumeurs + Feuille de route PROD

---

## 1. ÉTAT DU TESTNET EN CE MOMENT

| Métrique | Valeur |
|---|---|
| PID actif | 2547134 |
| Paires surveillées | 75 (live) |
| Positions ouvertes | 0 |
| Surges détectés aujourd'hui | 4 (depuis 17h07) |
| Marché aujourd'hui | BEAR 73% / CORRECTION 27% |
| Comportement dominant | SPECULATION (57%) |
| Taille de position configurée | 900 USDC |
| Ratio capital | 5.625% |

**2 trades exécutés aujourd'hui :**
- VIRTUALUSDC : achat 0.9333, vendu 0.9321 → **-0.13%** (hold 2.7 min, SL déclenché)
- STRKUSDC : achat 0.0442, vendu 0.0445 → **+0.68%** (hold 1.1 min, trailing stop)

---

## 2. CHIFFRES RÉELS vs CHIFFRES AFFICHÉS — L'ÉCART QUI COMPTE

Le dashboard affiche **696 wins / 1381 trades = 50% WR | PnL +10,124 USDC**.
Le `trade_history.json` (162 trades réels) dit :

| Indicateur | Valeur réelle |
|---|---|
| Win Rate | **46.9%** (76/162) |
| PnL total réel | **-99.38 USDC** |
| Gain moyen/trade gagnant | +4.13% |
| Perte moyenne/trade perdant | -5.30% |
| Ratio R:R | **0.78x** (inférieur à 1) |
| Espérance mathématique | **-0.88% par trade** |

**→ Le bot est actuellement en territoire déficitaire.** L'affichage +10,124 USDC est une valeur cumulée historique qui inclut des périodes de config différentes et ne reflète pas l'état actuel.

Pour être rentable avec un WR de 46.9%, il faut un R:R ≥ 1.13x. Actuellement à 0.78x.

---

## 3. SLIPPAGE — LES CHIFFRES RÉELS

**Seuls 2 trades tracés manuellement aujourd'hui :**

| Paire | Signal détecté | Prix d'achat réel | Slippage |
|---|---|---|---|
| VIRTUALUSDC | 0.8887 | 0.9333 | **+5.02%** |
| STRKUSDC | ~0.044 (surge +1.1%) | 0.0442 | ~0.5% (estimé) |

**Analyse VIRTUALUSDC :**
Le bot a vu un BREAKOUT_PENDING à 0.8887, attendu 7s de confirmation, et acheté à 0.9333. En 7 secondes le prix a bougé de +5%. C'est le scénario "achat au sommet" que les filtres ENTRY_PEAK_BUY et Δ5 sont censés bloquer — mais ils n'ont pas fonctionné ici.

**Conséquence chiffrée à 900 USDC de position :**
- 5% de slippage = **45 USDC perdus au moment de l'achat**
- Le SL à -1.2% ne couvre pas un achat à +5% au-dessus du signal
- Résultat : trade perdant structurellement dès l'entrée

**Estimation friction totale sur 162 trades :**
- PnL théorique (si 0 slippage) ≈ +10,024 USDC affiché
- PnL réel = -99 USDC
- **Friction totale estimée : ~10,100 USDC / 162 trades = ~62 USDC/trade**
- En % : ~7% de friction par trade (inclut slippage + spread + fees 0.1%)

> C'est le problème #1. La friction mange tout le gain théorique et au-delà.

---

## 4. LES RUMEURS DE MARCHÉ — CE QUI EXISTE DANS LE CODE

### Ce qui est actif aujourd'hui :

**1. CoinGecko Trending** ✅ (opérationnel, rafraîchi toutes 12h)
- Récupère le top 7 des coins trending sur CoinGecko
- Hotlist actuelle (13h18) : LAB, FIRO, WOJAK, TON, B3, DOGS, PENDLE
- **Effet concret** : si un de ces coins surge, le filtre d'entrée est assoupli de ≤3/5 → ≤2/5 règles IA
- **Impact financier réel** : plus d'entrées sur les coins "chauds", pas de taille augmentée

**2. Binance New Listings** ✅ (opérationnel, valable 48h)
- Parsé depuis les titres d'articles Binance CMS
- Même traitement que CoinGecko : assoupli entry filter
- Un listing Binance génère souvent +30-200% en quelques heures

**3. Sentiment BTC interne** ✅ (calculé sur price + EMA + momentum)
- Score 0-100 calculé depuis les données BTCUSDT 1h
- Fast sensor 5min pour détecter les retournements
- **Ce n'est PAS une source externe** : c'est du price action, pas du sentiment de marché

### Ce qui N'EXISTE PAS dans le code :

| Source | Impact potentiel | Complexité | Coût |
|---|---|---|---|
| Fear & Greed Index (alternative.me) | Moyen | Très faible (1 appel API) | Gratuit |
| LunarCrush Social Score | Élevé | Faible (API key) | Gratuit limité |
| AIXBT signals live | Très élevé | Moyen | API payante |
| Twitter/X mentions | Élevé | Complexe | Payant ($100/mois) |
| Telegram alpha channels | Très élevé | Complexe | Accès spécifique |
| On-chain whale activity | Moyen | Moyen | Gratuit (Etherscan/BSCScan) |

---

## 5. QUEL IMPACT SI ON AJOUTE LE FEAR & GREED INDEX ?

**C'est la seule amélioration activable en 1 heure, sans coût.**

```
GET https://api.alternative.me/fng/?limit=1
→ {"value": "25", "value_classification": "Extreme Fear"}
```

**Usage concret dans market_spy.py :**
- Si FGI < 25 (Extreme Fear) → BLOQUER toutes les nouvelles entrées (marché en panique)
- Si FGI > 70 (Greed) → RÉDUIRE la taille de position de 30% (risque de retournement)
- Si FGI 40-60 → comportement normal

**Impact financier estimé :**
- Sur les 9 stops perdants (-78 USDC) : combien ont eu lieu en Extreme Fear ? → à mesurer
- Actuellement en BEAR + SPECULATION : FGI est probablement <35
- Bloquer les entrées quand FGI <25 éviterait une partie des manual_sell_all (-34 USDC)

**Conclusion FGI** : gain estimé +15 à +30 USDC sur 162 trades dans les conditions actuelles. Pas transformateur mais immédiatement activable.

---

## 6. ANALYSE DES SORTIES — OÙ PART L'ARGENT

| Raison de sortie | Trades | WR | PnL total |
|---|---|---|---|
| `stop-loss` | 9 | 0% | **-78.09 USDC** |
| `manual_sell_all` | 21 | 28.6% | **-34.36 USDC** |
| `MAX_HOLD_120min (+0.0%)` | 21 | 42.9% | **-33.61 USDC** |
| `ai-strong-sell (LSTM...)` | 1 | 0% | -44.47 USDC |
| `quick-exit` | 6 | 33.3% | -14.89 USDC |
| `take-profit` | 1 | 100% | +48.01 USDC |
| `MAX_HOLD_120min (+1.0%+)` | variés | 100% | +80+ USDC |

**Lecture** :
- Les `stop-loss` représentent 78 USDC de pertes sur 9 trades → moyenne -8.68 USDC/stop = -0.96% × 900 USDC
- Les `manual_sell_all` (21 trades) sont des ventes forcées manuelles → souvent déclenchées en panique
- Le `MAX_HOLD_120min` à **+0.0%** (21 trades) indique des positions bloquées 2h sans direction → friction pure
- **Le seul vrai TP déclenché = SAPIENUSDC +48%** sur 162 trades → la config TP est trop haute pour déclencher

---

## 7. PATTERNS — CE QUI FONCTIONNE VRAIMENT

| Pattern | Trades | WR | PnL |
|---|---|---|---|
| **EMA_BULLISH** | 15 | **60.0%** | **+29.36 USDC** |
| CREUX_REBOUND | 96 | 53.1% | -30.01 USDC |
| RECOVERED_ORPHAN | 31 | 29.0% | -34.67 USDC |
| NEUTRAL | 20 | 35.0% | -64.06 USDC |

**EMA_BULLISH est le seul pattern rentable.** CREUX_REBOUND a un bon WR mais perd de l'argent à cause du slippage/spread sur des prix bas.

**NEUTRAL est catastrophique.** 35% de WR = 1 trade gagnant pour 2 perdants. Ce pattern devrait être désactivé.

---

## 8. PASSAGE EN PROD — LES ÉCARTS RÉELS À ANTICIPER

### 8.1 Différences testnet vs prod

| Facteur | Testnet | Prod | Écart |
|---|---|---|---|
| Exécution ordres | Simulée | Réelle | Testnet ne simule PAS le slippage |
| Spread bid/ask | Non mesuré | Réel | +0.1% à +0.5% par trade |
| Fees Binance Spot | Non déduits | 0.1% par ordre | -0.2% aller-retour |
| Carnet d'ordres | Supposé plein | Vraiment thin sur altcoins | +0.5% à +5% de slippage |
| Latence réseau | ~0ms (local) | 50-200ms vers Binance | Peut manquer le prix |
| Flash pumps | Détectés mais entrée instantanée | Entrée après pump = trop tard | -1% à -5% |

### 8.2 Ce que ça donne en USDC sur 900 USDC/position

| Coût | Estimation | Source |
|---|---|---|
| Spread achat (altcoin USDC) | ~0.2% = **1.80 USDC** | Mesuré STRKUSDC |
| Fee Binance × 2 (in/out) | 0.2% = **1.80 USDC** | Tarif Binance Spot |
| Slippage moyen (marché normal) | 0.5% = **4.50 USDC** | Estimé |
| Slippage flash pump (BREAKOUT_PENDING) | 1-5% = **9-45 USDC** | Mesuré VIRTUALUSDC |
| **Friction totale/trade normal** | ~0.9% = **~8 USDC** | |
| **Friction totale/trade BREAKOUT** | ~2-6% = **18-54 USDC** | |

**→ Pour être rentable en prod il faut un gain moyen ≥ +1.5% par trade (couvrir la friction + marge).**

Actuellement, le gain moyen des trades gagnants est +4.13%. C'est suffisant **SI** on réduit le slippage.

### 8.3 Le problème BREAKOUT_PENDING spécifique

Sur VIRTUALUSDC aujourd'hui : signal à 0.8887, achat à 0.9333 = +5.02% de décalage.
En prod avec 900 USDC, c'est **45 USDC évaporés avant même le premier tick**.

Ce mécanisme est dangereux en prod. Il faut soit :
- Désactiver BREAKOUT_SURGE en conditions BEAR/SPECULATION
- Ajouter un plafond : si `fill_price > signal_price × 1.015` → annuler l'ordre

---

## 9. PROACTIVITÉ — LES 5 ACTIONS À FORT IMPACT AVANT PROD

### Action 1 : Désactiver le pattern NEUTRAL — immédiat
**Risque : zéro. Gain potentiel : +64 USDC sur la durée**
```python
# Dans market_spy.py, dans la liste des patterns autorisés
BLOCKED_PATTERNS = ['NEUTRAL']
```
WR=35%, espérance négative certifiée sur 20 trades.

### Action 2 : Ajouter Fear & Greed Index — 1h de dev
**API gratuite. Bloquer entrées si FGI < 25.**
```python
r = requests.get('https://api.alternative.me/fng/?limit=1', timeout=3)
fgi = int(r.json()['data'][0]['value'])
if fgi < 25 and regime == 'BEAR':
    return  # Pas d'entrée en Extreme Fear + BEAR
```
Impact estimé : évite 20-30% des trades perdants en contexte de panique.

### Action 3 : Limiter le slippage BREAKOUT_PENDING — 2h de dev
Ajouter dans le code d'achat : si le prix a bougé de plus de 1.5% depuis la détection du signal → skip.
```python
if current_price > signal_price * 1.015:
    logger.warning(f"⚠️ SKIP: prix trop éloigné du signal (+{slippage:.1f}%) → achat au sommet")
    return
```
Impact direct : évite le cas VIRTUALUSDC (5% de slippage) qui coûte 45 USDC/trade.

### Action 4 : Réduire le MAX_HOLD de 120min à 60min — 15 min
Les 21 trades à MAX_HOLD_120min(+0.0%) = positions bloquées sans direction.
En réduisant à 60min, on libère le capital plus vite et on réduit l'exposition.

### Action 5 : Watchlist USDC propre (déjà faite) — déjà disponible
`test_optimisation/watchlist_liquide_usdt.txt` — 40 paires triées par volume.
Les paires > 5M$/jour ont moins de slippage. Les paires thin type WOJAK, FIRO ne devraient pas être en prod.

---

## 10. VERDICT PROACTIVITÉ PROD

### Condition actuelle : ❌ PAS PRÊT

| Critère | État | Seuil |
|---|---|---|
| Espérance mathématique | -0.88%/trade ❌ | ≥ 0% |
| Slippage BREAKOUT contrôlé | Non (5% observé) ❌ | < 1.5% |
| Pattern NEUTRAL désactivé | Non ❌ | Désactivé |
| 30+ trades loggés (exec_logger) | 2 ⏳ | ≥ 30 |
| Friction médiane mesurée | En cours ⏳ | < 0.6% |

### Conditions pour lancer la prod :

1. **Implémenter les 3 premières actions** (NEUTRAL off + FGI + plafond slippage)
2. **Attendre 50 trades testnet** avec exec_logger actif pour mesurer la friction réelle
3. **Friction médiane testnet < 0.6%** (soit < 5.4 USDC/trade sur 900 USDC)
4. **WR testnet ≥ 50%** sur la fenêtre des 50 trades mesurés
5. **Vérifier que la hotlist ne contient pas de paires toxiques** (TONUSDC, NOTUSDC déjà identifiées)

### Horizon réaliste :
- Actions 1-3 : **aujourd'hui ou demain** (code existant, modifications ciblées)
- 50 trades loggés : **3 à 5 jours** en marché BEAR (volume de surges limité)
- Lancement prod : **sous 1 semaine** si les métriques exec_logger sont bonnes

---

## 11. CE QUE LES RUMEURS PEUVENT APPORTER (RÉALISTE)

### Gain accessible sans dev complexe : +15% à +20% de WR supplémentaire

| Source | Apport concret | Délai mise en place |
|---|---|---|
| Fear & Greed Index | Filtre entrées en Extreme Fear → -20% trades perdants | 1h |
| CoinGecko trending (existant) | Déjà actif, assoupli entry filter → garder | 0 |
| Binance new listings (existant) | Déjà actif → surveiller les abus (ENTRY_PEAK sur nouveaux listings) | 0 |
| LunarCrush API (social score) | Confirme si le surge est accompagné de buzz social | 4h |
| AIXBT live (si budget) | Signals alpha très tôt avant pump → entrée avant le surge | 1 semaine |

### Gain accessible avec dev complexe : +5% à +10% de WR

Twitter/X ou Telegram alpha channels permettraient de détecter des rumeurs **avant** la détection de surge par le scanner. Résultat : entrée à -2% du signal au lieu de +5% de slippage. C'est l'impact le plus fort mais le plus complexe à mettre en place.

### Ce qu'on ne peut pas espérer :
- Passer de 46.9% à 60%+ de WR uniquement grâce aux rumeurs
- Éliminer le slippage sur les FLASH_SURGE (c'est structurel : le marché bouge plus vite que la détection)
- Rentabiliser les trades NEUTRAL ou RECOVERED_ORPHAN via le sentiment

---

*Analyse générée le 07/05/2026 depuis les données live du testnet. Pas de simulations, pas de projections : uniquement les chiffres des fichiers `market_spy.log`, `trade_history.json`, `spy_hotlist.json`, `bot_settings.json`.*
