Jesse : framework d'algo-trading crypto avec moteur à la minute en Python et Rust

La plupart des moteurs de backtesting open-source se répartissent en deux camps : les stacks académiques qui testent à merveille mais sont inutilisables pour le trading réel, et les terminaux éprouvés au combat qui tradent mais ne permettent pas de faire de la recherche correctement. Jesse tente de concilier les deux — un framework de trading crypto avec un moteur unifié pour le backtesting, l'optimisation et (via un plugin) le trading en direct.
Architecture : pas une bibliothèque, mais un pipeline
Jesse est un ensemble moteur d'exécution de stratégies + API + UI : la CLI démarre uvicorn avec FastAPI, PostgreSQL via Peewee, un LSP pour l'éditeur de stratégies, et en option le plugin jesse-live.
Simulation à la minute : la "source de vérité"

Un invariant critique : seules les bougies d'1 minute sont acceptées en backtest. Les unités de temps supérieures sont des agrégats — la stratégie en 1h se déclenche toutes les 60 minutes, mais les ordres s'exécutent au sein de chaque minute selon le high/low.
from jesse.research import backtest
result = backtest(
config,
routes=[("Binance", "BTC-USDT", "4h", "MyStrategy")],
candles=candles_1m, # strictly 60_000 ms between candles
)
Stratégie : une machine à états avec des ordres déclaratifs
def go_long(self):
qty = utils.size_to_qty(self.balance * 0.5, self.price)
self.buy = qty, self.price
self.stop_loss = qty, self.price * 0.97
self.take_profit = qty, self.price * 1.05
Le système décide : marché, limite ou stop — en fonction de la position du prix par rapport au prix courant. En mode live, le prix est arrondi selon la précision de l'exchange.
Optimisation : réduire le bruit, pas maximiser le profit
La fonction de fitness lutte contre l'overfitting : filtre d'un minimum de 5 trades, nombre de trades log-normalisé, double validation train/test, et un Sharpe "intelligent" avec pénalité d'autocorrélation.
Rust sous le capot
Les indicateurs (EMA, RSI, MACD, ATR…) utilisent jesse-rust. Même l'arithmétique de base est en Rust : l'accumulation d'erreurs de flottants sur des milliers de trades transforme sinon les backtests en fiction.
Liens
- 💻 GitHub : jesse-ai/jesse
- 🌐 Site web : jesse.trade
- 📄 Licence : MIT
Conclusion
Jesse tente de réduire l'algo-trading crypto à un pipeline reproductible : moteur à la minute, classe Strategy stricte, indicateurs en Rust, API de recherche sans fuite d'état, et optimisation avec validation sur période de test.
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.