File size: 2,724 Bytes
f0469d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# SAC Crypto Trading Agent — BTC/USDT

Agent de trading crypto basé sur **Soft Actor-Critic (SAC)** entraîné sur les données historiques BTC/USDT.

## 📊 Résultats (Backtest sur données de test)

| Métrique | SAC Agent | Buy & Hold |
|----------|-----------|------------|
| Rendement Total | **-4.57%** | -17.26% |
| Sharpe Ratio | **-0.024** | -0.117 |
| Max Drawdown | **29.54%** | 48.49% |
| Portfolio Final | **$95,431** | $82,736 |

**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é.

## 🏗️ Architecture

- **Algorithme** : SAC (Soft Actor-Critic) via Stable Baselines 3
- **Environnement** : Gymnasium custom, inspiré de FinRL-Meta
- **State** : balance normalisée + prix z-score + holdings + indicateurs techniques (MACD, RSI, CCI, DX, SMA, Bollinger Bands)
- **Action** : espace continu [-1, 1] (vente maximale → achat maximal)
- **Reward** : ΔPortfolio × scaling factor

## 📈 Recette d'entraînement

Basée sur [FinRL-Meta](https://arxiv.org/abs/2304.13174) et [FinRL-Contest](https://arxiv.org/abs/2501.10709).

| Paramètre | Valeur |
|-----------|--------|
| Dataset | [linxy/CryptoCoin](https://hf.co/datasets/linxy/CryptoCoin) (Binance OHLCV) |
| Symbole | BTCUSDT daily |
| Training timesteps | 200,000 |
| Learning rate | 3e-4 |
| Batch size | 64 |
| Buffer size | 100,000 |
| Network | MLP [64, 32] |
| Gamma | 0.99 |
| Tau | 0.005 |
| Entropy coeff | auto |
| Commission | 0.1% |
| Capital initial | $100,000 |

## 📅 Périodes

- **Train** : 17 août 2017 → 12 sept 2023 (2218 jours)
- **Validation** : 13 sept 2023 → 30 déc 2024 (475 jours)
- **Test** : 31 déc 2024 → 28 avr 2026 (476 jours)

## 🚀 Utilisation

```python
from stable_baselines3 import SAC
from stable_baselines3.common.vec_env import DummyVecEnv, VecNormalize
import pickle

# Charger le modèle
model = SAC.load("sac_crypto_final")

# Charger le normalisateur
# vec_normalize = VecNormalize.load("vec_normalize.pkl", venv)

# Prédire une action
action, _ = model.predict(observation, deterministic=True)
# action > 0 → acheter, action < 0 → vendre
```

## 📚 Références

1. FinRL-Meta: A Universe of Near-Real Market Environments (arXiv:2304.13174)
2. FinRL-Contest: Ensemble Methods for FinRL (arXiv:2501.10709)
3. SAC: Soft Actor-Critic (arXiv:1801.01290, Haarnoja et al.)

## ⚠️ Disclaimer

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.