Jesse: Python пен Rust тіліндегі минут негізіндегі қозғалтқышы бар крипто алго-трейдинг фреймворкі

Jesse - крипто нарықтарына арналған алго-трейдинг фреймворкіне терең шолу. Минут негізіндегі симуляция, күй машиналары ретіндегі стратегиялар, Rust арқылы жылдамдатылған индикаторлар, overfitting-тен қорғанысы бар оңтайландыру және ашық бастапқы кодтың өзегі мен нақты уақыттағы сауда арасындағы шекара.

Jesse — algo-trading framework

Ашық бастапқы кодты бэктестинг қозғалтқыштарының көбі екі топқа бөлінеді: керемет тестілейтін, бірақ нақты сауда үшін пайдасыз академиялық стектер, және сауда жасайтын, бірақ дұрыс зерттеу жүргізуге мүмкіндік бермейтін ұрыс алаңында сыналған терминалдар. Jesse екеуін де қамтуға тырысады — бэктестинг, оңтайландыру және (плагин арқылы) нақты уақыттағы сауда үшін біріңғай қозғалтқышы бар крипто трейдинг фреймворкі.

Архитектура: кітапхана емес, конвейер

Jesse — бұл стратегияны орындау қозғалтқышы + API + UI жиынтығы: CLI FastAPI бар uvicorn-ды, Peewee арқылы PostgreSQL-ды, стратегия редакторы үшін LSP-ды және қосымша jesse-live плагинін іске қосады.

Минут негізіндегі симуляция: "шындық көзі"

Jesse minute simulation

Маңызды инвариант: бэктестте тек 1 минуттық свечалар ғана қабылданады. Жоғары уақыт кадрлары агрегаттар болып табылады — 1h стратегиясы әр 60 минут сайын іске қосылады, бірақ ордерлер әр минут ішінде 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
)

Стратегия: декларативті ордерлері бар күй машинасы

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

Жүйе шешім қабылдайды: market, limit немесе stop — ағымдағы бағаға қатысты бағаның орналасуына негізделген. Нақты уақыт режимінде баға биржа дәлдігіне сай дөңгелектенеді.

Оңтайландыру: шуды азайту, пайданы максимизациялау емес

Fitness функциясы overfitting-пен күреседі: минимум 5 мәміле сүзгісі, лог-нормаланған мәміле саны, қос train/test валидациясы және автокорреляция айыппұлы бар "ақылды" Sharpe.

Капот астындағы Rust

Индикаторлар (EMA, RSI, MACD, ATR…) jesse-rust пайдаланады. Тіпті қарапайым арифметика да Rust тілінде: мыңдаған мәмілелер бойы жинақталған float қателері бэктестерді ойдан шығарылған нәрсеге айналдырады.

Сілтемелер

Қорытынды

Jesse крипто алго-трейдингті қайталанатын конвейерге дейін қысқартуға тырысады: минуттық қозғалтқыш, қатаң Strategy класы, Rust индикаторлары, күй ағып кетуінсіз зерттеу API-і және тест кезеңін валидациялайтын оңтайландыру.