Add detailed README with results and usage instructions
Browse files
README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# SAC Crypto Trading Agent — BTC/USDT
|
| 2 |
+
|
| 3 |
+
Agent de trading crypto basé sur **Soft Actor-Critic (SAC)** entraîné sur les données historiques BTC/USDT.
|
| 4 |
+
|
| 5 |
+
## 📊 Résultats (Backtest sur données de test)
|
| 6 |
+
|
| 7 |
+
| Métrique | SAC Agent | Buy & Hold |
|
| 8 |
+
|----------|-----------|------------|
|
| 9 |
+
| Rendement Total | **-4.57%** | -17.26% |
|
| 10 |
+
| Sharpe Ratio | **-0.024** | -0.117 |
|
| 11 |
+
| Max Drawdown | **29.54%** | 48.49% |
|
| 12 |
+
| Portfolio Final | **$95,431** | $82,736 |
|
| 13 |
+
|
| 14 |
+
**L'agent surperforme le Buy & Hold de +12.7 points de pourcentage** pendant une période baissière (déc 2024 - avr 2026), avec un drawdown maximal réduit de moitié.
|
| 15 |
+
|
| 16 |
+
## 🏗️ Architecture
|
| 17 |
+
|
| 18 |
+
- **Algorithme** : SAC (Soft Actor-Critic) via Stable Baselines 3
|
| 19 |
+
- **Environnement** : Gymnasium custom, inspiré de FinRL-Meta
|
| 20 |
+
- **State** : balance normalisée + prix z-score + holdings + indicateurs techniques (MACD, RSI, CCI, DX, SMA, Bollinger Bands)
|
| 21 |
+
- **Action** : espace continu [-1, 1] (vente maximale → achat maximal)
|
| 22 |
+
- **Reward** : ΔPortfolio × scaling factor
|
| 23 |
+
|
| 24 |
+
## 📈 Recette d'entraînement
|
| 25 |
+
|
| 26 |
+
Basée sur [FinRL-Meta](https://arxiv.org/abs/2304.13174) et [FinRL-Contest](https://arxiv.org/abs/2501.10709).
|
| 27 |
+
|
| 28 |
+
| Paramètre | Valeur |
|
| 29 |
+
|-----------|--------|
|
| 30 |
+
| Dataset | [linxy/CryptoCoin](https://hf.co/datasets/linxy/CryptoCoin) (Binance OHLCV) |
|
| 31 |
+
| Symbole | BTCUSDT daily |
|
| 32 |
+
| Training timesteps | 200,000 |
|
| 33 |
+
| Learning rate | 3e-4 |
|
| 34 |
+
| Batch size | 64 |
|
| 35 |
+
| Buffer size | 100,000 |
|
| 36 |
+
| Network | MLP [64, 32] |
|
| 37 |
+
| Gamma | 0.99 |
|
| 38 |
+
| Tau | 0.005 |
|
| 39 |
+
| Entropy coeff | auto |
|
| 40 |
+
| Commission | 0.1% |
|
| 41 |
+
| Capital initial | $100,000 |
|
| 42 |
+
|
| 43 |
+
## 📅 Périodes
|
| 44 |
+
|
| 45 |
+
- **Train** : 17 août 2017 → 12 sept 2023 (2218 jours)
|
| 46 |
+
- **Validation** : 13 sept 2023 → 30 déc 2024 (475 jours)
|
| 47 |
+
- **Test** : 31 déc 2024 → 28 avr 2026 (476 jours)
|
| 48 |
+
|
| 49 |
+
## 🚀 Utilisation
|
| 50 |
+
|
| 51 |
+
```python
|
| 52 |
+
from stable_baselines3 import SAC
|
| 53 |
+
from stable_baselines3.common.vec_env import DummyVecEnv, VecNormalize
|
| 54 |
+
import pickle
|
| 55 |
+
|
| 56 |
+
# Charger le modèle
|
| 57 |
+
model = SAC.load("sac_crypto_final")
|
| 58 |
+
|
| 59 |
+
# Charger le normalisateur
|
| 60 |
+
# vec_normalize = VecNormalize.load("vec_normalize.pkl", venv)
|
| 61 |
+
|
| 62 |
+
# Prédire une action
|
| 63 |
+
action, _ = model.predict(observation, deterministic=True)
|
| 64 |
+
# action > 0 → acheter, action < 0 → vendre
|
| 65 |
+
```
|
| 66 |
+
|
| 67 |
+
## 📚 Références
|
| 68 |
+
|
| 69 |
+
1. FinRL-Meta: A Universe of Near-Real Market Environments (arXiv:2304.13174)
|
| 70 |
+
2. FinRL-Contest: Ensemble Methods for FinRL (arXiv:2501.10709)
|
| 71 |
+
3. SAC: Soft Actor-Critic (arXiv:1801.01290, Haarnoja et al.)
|
| 72 |
+
|
| 73 |
+
## ⚠️ Disclaimer
|
| 74 |
+
|
| 75 |
+
Ce modèle est fourni à des fins de recherche et d'éducation uniquement. Il ne constitue pas un conseil financier. Les performances passées ne garantissent pas les résultats futurs. Le trading de crypto-monnaies comporte des risques significatifs de perte en capital.
|