# 📊 Audit Trading — Activité depuis le 01/04/2026

> Généré le 07/05/2026 | Bot : `market_spy.py` | Stratégie : Surge/Flash Detection  
> Source testnet : `espion_history.json` (852 trades exploitables)  
> Source prod : `crypto_trading_prod/espion_history.json` (114 trades réels)

---

## 1. Vue d'ensemble comparée

| Indicateur | Testnet (bot) | Production (argent réel) | Écart |
|---|---|---|---|
| Période | 03/04 → 07/05/2026 | 07/04 → 07/05/2026 | — |
| Trades totaux | 852 | 114 | — |
| **Win Rate** | **56.7%** | **32.5%** | **−24.2 pts** |
| PnL moyen/trade | +0.951% | −0.393% | −1.344% |
| PnL total cumulé | +810.7% | −44.8% | — |
| Gain moyen (wins) | +2.201% | — | — |
| Perte moyenne (losses) | −0.683% | — | — |
| Max gain | +21.933% | — | — |
| Max perte | −5.634% | — | — |
| Hold time moyen | 7.1 min | 8.6 min | — |
| Pic PnL moyen | +2.295% | +1.125% | — |
| PnL réalisé moyen | +0.951% | −0.393% | — |
| **Gain laissé/trade** | **+1.344%** | **+1.518%** | — |

> ⚠️ L'écart de **24 points de Win Rate** entre testnet et production est le signal d'alarme principal. Le filtre compression (+1.6 pts de WR) est secondaire face à cet écart.

---

## 2. Testnet — Performance par pattern

| Pattern | Trades | Win Rate | PnL moy/trade | PnL total |
|---|---|---|---|---|
| FLASH_SURGE | 690 | 57.5% | +0.974% | +672.2% |
| BREAKOUT_SURGE | 42 | **64.3%** | **+1.655%** | +69.5% |
| MOMENTUM_SURGE | 37 | 51.4% | +0.916% | +33.9% |
| TREND_MOMENTUM_SURGE | 83 | 48.2% | +0.425% | +35.3% |

**Meilleur pattern : BREAKOUT_SURGE** (64.3% WR, +1.655%/trade) mais sous-représenté (5% du volume).  
**Worst pattern : TREND_MOMENTUM_SURGE** (48.2% WR, quasi coin flip).

---

## 3. Production — Performance par pattern

| Pattern | Trades | Win Rate | PnL moy/trade | Note |
|---|---|---|---|---|
| FLASH_SURGE | 88 | **27.3%** | **−0.539%** | ⛔ Catastrophique |
| TREND_MOMENTUM_SURGE | 19 | 63.2% | +0.510% | ✅ Fonctionne |
| BREAKOUT_SURGE | 5 | 20.0% | −0.600% | ⛔ Insuffisant |
| MOMENTUM_SURGE | 2 | 0.0% | −1.994% | ⛔ Désastreux |

> 🔴 **FLASH_SURGE en prod = 27.3% WR vs 57.5% en testnet** → écart de 30 pts sur le pattern majoritaire. C'est le cœur du problème.

---

## 4. Testnet — Raisons de sortie

| Exit Reason | Trades | Win Rate | PnL moy | Analyse |
|---|---|---|---|---|
| **TRAILING** | 353 | **97.2%** | **+2.666%** | ✅ Excellent — trailing bien calibré |
| HARD_SL | 92 | 7.6% | −1.079% | ⚠️ Stop loss dur — pertes maîtrisées |
| VOLUME_ROUGE | ~73 | 19.2% | −0.202% | ⚠️ Bon réflexe, pertes faibles |
| INSTANT_REVERSAL | 70 | 0.0% | −0.622% | ❌ Entrées sur faux surges |
| MAX_HOLD | 42 | 76.2% | +0.449% | ✅ Timer de sécurité efficace |
| EARLY_SL | 27 | 0.0% | −1.286% | ❌ Stops trop précoces |
| STAGNATION | ~13 | 0.0% | −0.230% | ⚠️ Positions mortes |

**Clé testnet :** TRAILING génère 97.2% WR et représente le cœur du P&L positif.

---

## 5. Production — Raisons de sortie

| Exit Reason | Trades | Win Rate | PnL moy | Analyse |
|---|---|---|---|---|
| HARD_SL | 24 | **0.0%** | **−1.590%** | ⛔ Stops systématiques — 21% des trades |
| TRAILING | 23 | 95.7% | +1.020% | ✅ Seul mécanisme profitable |
| INSTANT_REVERSAL | 17 | 0.0% | −1.244% | ⛔ Entrées sur faux breakouts |
| EARLY_SL | 10 | 0.0% | −1.191% | ❌ Stops prématurés |
| MAX_HOLD | 3 | 33.3% | −0.029% | — |
| MICRO_BOUNCE | 3 | 0.0% | −0.685% | ❌ |

**En prod, TRAILING ne s'active que 23 fois sur 114 trades (20%).**  
**En testnet, TRAILING s'active 353 fois sur 852 (41%).**  
→ Le trailing ne peut s'activer que si le trade monte d'abord. La prod entre sur des mouvements qui n'ont pas de suite.

---

## 6. Évolution hebdomadaire — Testnet

| Semaine | Trades | Win Rate | PnL moy | PnL total |
|---|---|---|---|---|
| W13 (24–30 mars) | 208 | 53.4% | +0.883% | +183.6% |
| W14 (31 mars–6 avr) | 290 | **63.4%** | **+1.208%** | **+350.5%** |
| W15 (7–13 avr) | 78 | 43.6% | +0.308% | +24.0% |
| W16 (14–20 avr) | 105 | 53.3% | +1.114% | +117.0% |
| W17 (21–27 avr) | 134 | 56.7% | +0.755% | +101.2% |
| W18 (28 avr–7 mai) | 37 | 59.5% | +0.929% | +34.4% |

**Semaine forte : W14** (63.4% WR, marché haussier probable)  
**Semaine faible : W15** (43.6% WR — probable correction / bear phase)

---

## 7. Évolution hebdomadaire — Production

| Semaine | Trades | Win Rate | PnL moy | PnL total |
|---|---|---|---|---|
| W15 (7–13 avr) | 20 | **20.0%** | **−1.020%** | **−20.4%** |
| W17 (21–27 avr) | 41 | 43.9% | +0.098% | +4.0% |
| W18 (28 avr–7 mai) | 53 | **28.3%** | **−0.535%** | **−28.4%** |

**Prod démarrée en W15 — la pire semaine du testnet.**  
W17 est la seule semaine quasi-équilibrée (+4€ sur 41 trades).  
W18 replonge à 28.3% WR.

---

## 8. Top 20 Symbols — Testnet

| Symbole | Trades | WR | PnL moy | PnL total |
|---|---|---|---|---|
| ORCAUSDC | 37 | 67.6% | +1.601% | +59.3% |
| BIOUSDC | 34 | 38.2% | +0.038% | +1.3% |
| ZBTUSDC | 31 | 64.5% | +1.153% | +35.7% |
| NOMUSDT | 27 | 59.3% | +1.122% | +30.3% |
| ENJUSDC | 27 | 44.4% | +0.945% | +25.5% |
| SOLVUSDT | 24 | 54.2% | +1.395% | +33.5% |
| DEGOUSDT | 22 | 50.0% | +0.928% | +20.4% |
| STOUSDT | 19 | 73.7% | +1.717% | +32.6% |
| DUSDT | 19 | **78.9%** | **+2.046%** | +38.9% |
| 币安人生USDC | 19 | 63.2% | +1.371% | +26.0% |
| CHRUSDT | 18 | 22.2% | −0.065% | −1.2% |
| HEMIUSDT | 14 | 78.6% | +0.792% | +11.1% |
| DEXEUSDT | 14 | 78.6% | +1.546% | +21.6% |
| APEUSDC | 14 | 64.3% | +1.308% | +18.3% |
| CTSIUSDT | 13 | 53.8% | +0.407% | +5.3% |
| GIGGLEUSDC | 13 | 53.8% | +0.388% | +5.0% |
| TSTUSDC | 13 | 46.2% | +0.271% | +3.5% |
| CUSDT | 11 | **81.8%** | **+2.601%** | +28.6% |
| KATUSDC | 11 | 63.6% | +1.435% | +15.8% |
| LUNCUSDC | 11 | 54.5% | +0.260% | +2.9% |

**Stars : DUSDT (78.9%), CUSDT (81.8%), DEXEUSDT (78.6%), HEMIUSDT (78.6%)**  
**Problème : BIOUSDC (38.2% WR, 34 trades) et CHRUSDT (22.2% WR, 18 trades) pèsent lourd**

---

## 9. Top 10 Symbols — Production

| Symbole | Trades | WR | PnL moy | Note |
|---|---|---|---|---|
| BIOUSDC | 14 | 42.9% | +0.137% | Marginal |
| 币安人生USDC | 10 | 30.0% | −0.328% | ❌ |
| LUNCUSDC | 8 | 62.5% | +0.195% | ✅ |
| TUTUSDC | 6 | 66.7% | +0.224% | ✅ |
| TONUSDC | 6 | 0.0% | **−0.605%** | ⛔ |
| TSTUSDC | 5 | 20.0% | −1.158% | ⛔ |
| ORCAUSDC | 5 | 20.0% | −0.273% | ❌ (67% en testnet) |
| DASHUSDC | 5 | 20.0% | −0.733% | ⛔ |
| XVGUSDC | 4 | 25.0% | −0.311% | ❌ |
| NOTUSDC | 4 | 0.0% | −1.600% | ⛔ |

> ORCAUSDC est à 67.6% WR en testnet, mais seulement 20% en prod (5 trades) → différence significative inexpliquée.

---

## 10. Analyse Hold Time — Testnet

| Durée | Trades | % du total |
|---|---|---|
| < 2 min | 287 | 33.7% |
| 2 – 5 min | 231 | 27.1% |
| 5 – 15 min | 230 | 27.0% |
| > 15 min | 103 | 12.1% |
| **Hold moyen** | **7.1 min** | — |
| Hold max | 179.3 min | — |

**Un tiers des trades durent moins de 2 minutes** — ce sont essentiellement les INSTANT_REVERSAL et HARD_SL précoces.

---

## 11. Analyse Pic vs Réalisé (Gain laissé sur table)

| Métrique | Testnet | Production |
|---|---|---|
| Pic PnL moyen (max atteint) | +2.295% | +1.125% |
| PnL réalisé moyen | +0.951% | −0.393% |
| **Gain laissé/trade** | **+1.344%** | **+1.518%** |

En testnet, chaque trade atteint en pic **2.4× le PnL réalisé**. En production, les trades atteignent un pic positif (+1.125%) mais terminent en moyenne négatifs (−0.393%) — ce qui indique que les exits se produisent **après retournement**, pas au pic.

---

## 12. Audit Compression de Prix

### Contexte
Hypothèse testée : la compression de prix (range moyen (H-L)/close sur 6 klines 5m précédant l'entrée) > 1% prédit-elle une meilleure performance ?

### Méthode
- 852 trades testnet enrichis via Binance API (klines 5m historiques)
- Fenêtre : 35 minutes avant chaque entrée → 6 dernières klines
- Compression = moyenne((high−low)/close) × 100

### Résultats — Stratification

| Bucket compression | N | Win Rate | PnL moy | PnL total |
|---|---|---|---|---|
| [0.0 – 0.3%[ très faible | 5 | 0.0% | −0.513% | −2.6% |
| [0.3 – 0.7%[ faible | 63 | 50.8% | +0.388% | +24.4% |
| [0.7 – 1.0%[ modérée | 83 | 50.6% | +0.338% | +28.0% |
| [1.0 – 1.5%[ élevée | 161 | 52.8% | +0.551% | +88.8% |
| **[1.5%+[ extrême** | **540** | **60.0%** | **+1.244%** | **+672.0%** |

La relation est **monotone et nette** : plus la compression est élevée, meilleurs sont les résultats.

### Tests statistiques

| Seuil | N haute | N basse | WR haute | WR basse | Δ PnL | p-value | Cliff's δ | Verdict |
|---|---|---|---|---|---|---|---|---|
| >= 0.5% | 828 | 24 | 57.0% | 45.8% | +0.69% | 0.143 | +0.128 | ❌ ns |
| >= 0.7% | 784 | 68 | 57.5% | 47.1% | +0.68% | 0.082 | +0.102 | ❌ ns |
| **>= 1.0%** | **701** | **151** | **58.3%** | **49.0%** | **+0.76%** | **0.009** | **+0.123** | **✅ Confirmé** |
| **>= 1.5%** | **540** | **312** | **60.0%** | **51.0%** | **+0.80%** | **0.0003** | **+0.142** | **✅ Confirmé** |

### Simulation économique

| Scénario | Trades | PnL total | WR |
|---|---|---|---|
| Sans filtre (réel) | 852 | +810.7% | 56.7% |
| Avec filtre >= 1.0% | 701 (−17.7%) | +760.8% | 58.3% |
| Trades exclus < 1.0% | 151 | **+49.9%** | 49.0% |

> ⚠️ **Le paradoxe :** les trades exclus sont eux-mêmes rentables (+49.9% sur 151 trades). Le filtre améliore la qualité (+1.6 pts WR) mais supprime du volume profitable.

### Observation clé
540/852 trades (63%) sont déjà en compression "extrême" (>1.5%) → **le bot entre naturellement en zone comprimée**. Un filtre explicite ne changerait que 17% des trades.

---

## 13. Diagnostic — Pourquoi la prod échoue ?

### Hypothèse 1 : Slippage et spread réel
En prod, le capital est limité (10 USDT/trade) → les ordres market sur des paires USDC peu liquides subissent un spread bid/ask réel que le testnet ne voit pas. Un spread de 0.3% sur entrée + 0.3% sur sortie = 0.6% de friction supplémentaire sur chaque trade.

### Hypothèse 2 : Sélection de paires défavorable
En prod, les paires les plus tradées (BIOUSDC, 币安人生USDC, TONUSDC, NOTUSDC) affichent des WR désastreux (0% à 42%). Ces mêmes paires sont moins dominantes en testnet. La prod sélectionne peut-être des paires moins liquides.

### Hypothèse 3 : FLASH_SURGE mal calibré pour le vrai marché
FLASH_SURGE (88 trades, 27.3% WR en prod) est le pattern qui échoue le plus. En testnet, les faux surges sont détectés et coupés rapidement (INSTANT_REVERSAL) avec de faibles pertes. En prod, les trades similaires mènent aussi à HARD_SL (24 trades, −1.59%/trade).

### Hypothèse 4 : Période de démarrage en bear
La prod a démarré en W15 (7-13 avril) — la semaine la plus faible du testnet (43.6% WR). La W18 actuelle rechute à 28.3% — suggérant un régime de marché défavorable aux flash surges sur petites caps.

### Hypothèse 5 : Pic positif mais exit trop tardif
En prod, le pic moyen est +1.125% mais le réalisé est −0.393%. Les exits se font **après retournement**. Le trailing stop n'est activé que sur 23/114 trades (20%) en prod vs 41% en testnet → les trades montent moins loin avant de rechuter.

---

## 14. Recommandations prioritaires

### 🔴 Priorité 1 — Comprendre le bug FLASH_SURGE en prod
Extraire les 88 trades FLASH_SURGE prod et comparer avec les mêmes types en testnet. Y a-t-il une différence de momentum détecté vs réel ? De spread ?

### 🟠 Priorité 2 — Blacklister les paires sous-performantes
TONUSDC (0% WR), NOTUSDC (0% WR), TSTUSDC (20% WR, −1.158%), DASHUSDC (20% WR) → exclure temporairement de la prod.

### 🟡 Priorité 3 — Filtre compression 1.5% (optionnel)
Statistiquement validé (p=0.0003) mais ne résoudra que 17% des trades. À implémenter **après** avoir résolu l'écart testnet/prod.

### 🟢 Priorité 4 — Augmenter le seuil d'activation du trailing
Si le trailing ne s'active que sur 20% des trades en prod, c'est que les trades ne montent pas assez. Soit baisser le seuil d'activation du trailing, soit durcir les critères d'entrée pour ne prendre que des setups avec plus de potentiel.

---

## 15. Question ouverte pour l'analyse externe

**Question centrale :** compte tenu que :
1. L'écart testnet/prod est de **24 points de WR** sur le même pattern FLASH_SURGE
2. Les trades exclus par le filtre compression 1.0% génèrent quand même **+49.9% de PnL cumulé**
3. Le bot entre **déjà** en compression élevée dans 63% des cas

Est-ce que le vrai problème est le filtre de compression (solution proposée) ou bien une inadéquation fondamentale entre les conditions de marché détectées en testnet et les conditions de liquidité/spread réelles en prod sur des paires USDC à faible volume ?

---

*Rapport généré automatiquement par GitHub Copilot à partir des fichiers `espion_history.json`, `audit_output/trades_enriched.parquet` et `audit_output/report.txt`.*  
*Audit compression : 852/852 trades enrichis, 0 échec. Cache klines : 1312 entrées.*
