Jesse: framework de algo-trading cripto com motor baseado em minutos em Python e Rust

Análise aprofundada do Jesse - um framework de algo-trading para mercados cripto. Simulação baseada em minutos, estratégias como máquinas de estado, indicadores acelerados por Rust, otimização com proteção contra overfitting e a fronteira entre o núcleo open-source e o trading ao vivo.

Jesse — algo-trading framework

A maioria dos motores de backtesting open-source se divide em dois grupos: stacks acadêmicos que testam maravilhosamente bem, mas são inúteis para trading real, e terminais testados em batalha que operam, mas não permitem pesquisar de forma adequada. Jesse tenta ser as duas coisas — um framework de trading cripto com um motor unificado para backtesting, otimização e (via plugin) trading ao vivo.

Arquitetura: não é uma biblioteca, é um pipeline

Jesse é um pacote de motor de execução de estratégias + API + UI: a CLI inicia o uvicorn com FastAPI, PostgreSQL via Peewee, LSP para o editor de estratégias e, opcionalmente, o plugin jesse-live.

Simulação baseada em minutos: a "fonte da verdade"

Jesse minute simulation

Um invariante crítico: apenas candles de 1 minuto são aceitos em backtests. Timeframes maiores são agregados — a estratégia de 1h dispara a cada 60 minutos, mas as ordens são executadas dentro de cada minuto com base em 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
)

Estratégia: uma máquina de estados com ordens declarativas

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

O sistema decide: mercado, limite ou stop — com base na posição do preço em relação ao preço atual. No modo live, o preço é arredondado de acordo com a precisão da exchange.

Otimização: cortando ruído, não maximizando lucro

A função de fitness combate o overfitting: filtro de mínimo 5 trades, contagem de trades log-normalizada, validação dupla train/test e um Sharpe "inteligente" com penalização por autocorrelação.

Rust por baixo do capô

Os indicadores (EMA, RSI, MACD, ATR…) usam jesse-rust. Até a aritmética básica está em Rust: o acúmulo de erros de ponto flutuante ao longo de milhares de trades transforma os backtests em ficção.

Conclusão

Jesse tenta reduzir o algo-trading cripto a um pipeline repetível: motor por minuto, classe Strategy rigorosa, indicadores em Rust, API de pesquisa sem vazamento de estado e otimização com validação de período de teste.