Jesse: Framework di Algo-Trading Crypto con Motore al Minuto in Python e Rust

Recensione approfondita di Jesse - un framework di algo-trading per i mercati crypto. Simulazione basata sul minuto, strategie come macchine a stati, indicatori accelerati in Rust, ottimizzazione con protezione dall'overfitting e il confine tra il core open-source e il trading live.

Jesse — framework di algo-trading

La maggior parte dei motori di backtesting open-source si divide in due categorie: stack accademici che testano egregiamente ma sono inutili nel trading reale, e terminali collaudati che tradano ma non permettono una ricerca adeguata. Jesse cerca di essere entrambi — un framework di crypto trading con un motore unificato per backtesting, ottimizzazione e (tramite plugin) trading live.

Architettura: Non una Libreria, ma una Pipeline

Jesse è un bundle di motore di esecuzione delle strategie + API + UI: la CLI avvia uvicorn con FastAPI, PostgreSQL tramite Peewee, LSP per l'editor di strategie e il plugin opzionale jesse-live.

Simulazione al Minuto: la "Fonte di Verità"

Simulazione al minuto di Jesse

Un invariante critico: nei backtest vengono accettate solo candele a 1 minuto. I timeframe superiori sono aggregati — la strategia 1h scatta ogni 60 minuti, ma gli ordini vengono eseguiti all'interno di ogni minuto tramite 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
)

Strategia: una Macchina a Stati con Ordini Dichiarativi

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

Il sistema decide: market, limit o stop — in base alla posizione del prezzo rispetto al valore corrente. In modalità live, il prezzo viene arrotondato in base alla precisione dell'exchange.

Ottimizzazione: Eliminare il Rumore, Non Massimizzare il Profitto

La funzione di fitness combatte l'overfitting: filtro minimo di 5 trade, conteggio dei trade normalizzato logaritmicamente, doppia validazione train/test e Sharpe "intelligente" con penalità per autocorrelazione.

Rust Sotto il Cofano

Gli indicatori (EMA, RSI, MACD, ATR…) usano jesse-rust. Anche le operazioni aritmetiche di base sono in Rust: l'accumulo di errori in virgola mobile su migliaia di trade trasforma i backtest in fiction.

Conclusione

Jesse tenta di ridurre l'algo-trading crypto a una pipeline ripetibile: motore al minuto, Strategy rigorosa, indicatori Rust, API di ricerca senza perdite di stato, ottimizzazione con validazione sul periodo di test.