Skip to main content

A trading framework for cryptocurrencies

Project description


Jesse

Algo-trading was 😵‍💫, we made it 🤩

Jesse

PyPI Downloads Docker Pulls GitHub coverage


Jesse is an advanced crypto trading framework that aims to simplify researching and defining YOUR OWN trading strategies for backtesting, optimizing, and live trading.

What is Jesse?

Watch this video to get a quick overview of Jesse:

Jesse Overview

Why Jesse?

In short, Jesse is more accurate than other solutions, and way more simple. In fact, it is so simple that in case you already know Python, you can get started today, in matter of minutes, instead of weeks and months.

Key Features

  • 📝 Simple Syntax: Define both simple and advanced trading strategies with the simplest syntax in the fastest time.
  • 📊 Comprehensive Indicator Library: Access a complete library of technical indicators with easy-to-use syntax.
  • 📈 Smart Ordering: Supports market, limit, and stop orders, automatically choosing the best one for you.
  • Multiple Timeframes and Symbols: Backtest and livetrade multiple timeframes and symbols simultaneously without look-ahead bias.
  • 🔒 Self-Hosted and Privacy-First: Designed with your privacy in mind, fully self-hosted to ensure your trading strategies and data remain secure.
  • 🛡️ Risk Management: Built-in helper functions for robust risk management.
  • 📋 Metrics System: A comprehensive metrics system to evaluate your trading strategy's performance.
  • 🔍 Debug Mode: Observe your strategy in action with a detailed debug mode.
  • 🔧 Optimize Mode: Fine-tune your strategies using AI, without needing a technical background.
  • 📈 Leveraged and Short-Selling: First-class support for leveraged trading and short-selling.
  • 🔀 Partial Fills: Supports entering and exiting positions in multiple orders, allowing for greater flexibility.
  • 🔔 Advanced Alerts: Create real-time alerts within your strategies for effective monitoring.
  • 🤖 JesseGPT: Jesse has its own GPT, JesseGPT, that can help you write strategies, optimize them, debug them, and much more.
  • 🔧 Built-in Code Editor: Write, edit, and debug your strategies with a built-in code editor.
  • 🎲 Monte Carlo Analysis: Stress-test your strategies with trade-order shuffling and candles-based simulations to distinguish skill from luck and guard against overfitting.
  • 🧠 Machine Learning: A built-in ML pipeline — gather labelled training data from backtests, train scikit-learn models (binary, multiclass, or regression), and deploy predictions directly inside your strategies.
  • 📺 Youtube Channel: Jesse has a Youtube channel with screencast tutorials that go through example strategies step by step.

Dive Deeper into Jesse's Capabilities

Stupid Simple

Craft complex trading strategies with remarkably simple Python. Access 300+ indicators, multi-symbol/timeframe support, spot/futures trading, partial fills, and risk management tools. Focus on logic, not boilerplate.

class GoldenCross(Strategy):
    def should_long(self):
        # go long when the EMA 8 is above the EMA 21
        short_ema = ta.ema(self.candles, 8)
        long_ema = ta.ema(self.candles, 21)
        return short_ema > long_ema

    def go_long(self):
        entry_price = self.price - 10        # limit buy order at $10 below the current price
        qty = utils.size_to_qty(self.balance*0.05, entry_price) # spend only 5% of my total capital
        self.buy = qty, entry_price                 # submit entry order
        self.take_profit = qty, entry_price*1.2  # take profit at 20% above the entry price
        self.stop_loss = qty, entry_price*0.9   # stop loss at 10% below the entry price

Backtest

Execute highly accurate and fast backtests without look-ahead bias. Utilize debugging logs, interactive charts with indicator support, and detailed performance metrics to validate your strategies thoroughly.

Backtest

Live/Paper Trading

Deploy strategies live with robust monitoring tools. Supports paper trading, multiple accounts, real-time logs & notifications (Telegram, Slack, Discord), interactive charts, spot/futures, DEX, and a built-in code editor.

Live/Paper Trading

Benchmark

Accelerate research using the benchmark feature. Run batch backtests, compare across timeframes, symbols, and strategies. Filter and sort results by key performance metrics for efficient analysis.

Benchmark

AI

Leverage our AI assistant even with limited Python knowledge. Get help writing and improving strategies, implementing ideas, debugging, optimizing, and understanding code. Your personal AI quant.

AI

Monte Carlo Analysis

Stress-test your strategies beyond a single historical path. Jesse's Monte Carlo mode runs hundreds of simulations using trade-order shuffling (tests whether trade timing drove your results) and candles-based (tests robustness under slightly different market conditions) methods. Use it to distinguish skill from luck, understand the range of outcomes you can realistically expect, and catch overfitting early.

Machine Learning

Jesse includes a complete, end-to-end ML pipeline built for trading strategies:

  1. Gather data — run a backtest in gather mode; call record_features({...}) at each signal bar and record_label(name, value) when the outcome is known. Data is auto-saved to CSV.
  2. Train a model — call train_model() with any scikit-learn–compatible estimator and choose a task type: "binary" classification, "multiclass" classification, or "regression". Get a full report with feature importance, calibration, and metrics.
  3. Deploy — switch to deploy mode and call ml_predict() or ml_predict_proba() inside your strategy. Model loading, scaling, and feature ordering are handled automatically.
# Gather phase — inside your strategy
def before(self):
    self.record_features({
        'rsi': ta.rsi(self.candles),
        'adx': ta.adx(self.candles),
    })

# Deploy phase — gate entries with model confidence
def should_long(self):
    proba = self.ml_predict_proba()
    return proba['long'] > 0.65

Optimize Your Strategies

Unsure about optimal parameters? Let the optimization mode decide using simple syntax. Fine-tune any strategy parameter with the Optuna library and easy cross-validation.

@property
def slow_sma(self):
    return ta.sma(self.candles, self.hp['slow_sma_period'])

@property
def fast_sma(self):
    return ta.sma(self.candles, self.hp['fast_sma_period'])

def hyperparameters(self):
    return [
        {'name': 'slow_sma_period', 'type': int, 'min': 150, 'max': 210, 'default': 200},
        {'name': 'fast_sma_period', 'type': int, 'min': 20, 'max': 100, 'default': 50},
    ]

Getting Started

Head over to the "getting started" section of the documentation. The documentation is short yet very informative.

Resources

What's next?

You can see the project's roadmap here. Subscribe to our mailing list at jesse.trade to get the good stuff as soon they're released. Don't worry, We won't send you spam—Pinky promise.

Disclaimer

This software is for educational purposes only. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS. Do not risk money that you are afraid to lose. There might be bugs in the code - this software DOES NOT come with ANY warranty.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jesse-2.2.0.tar.gz (8.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jesse-2.2.0-py3-none-any.whl (8.9 MB view details)

Uploaded Python 3

File details

Details for the file jesse-2.2.0.tar.gz.

File metadata

  • Download URL: jesse-2.2.0.tar.gz
  • Upload date:
  • Size: 8.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for jesse-2.2.0.tar.gz
Algorithm Hash digest
SHA256 2a0a1f50d47e79a28fa299aeb6856de9448b35693f510b0336e4877ddd8fa5d4
MD5 e2bd4d711534695c46945cde41312441
BLAKE2b-256 11325ba9b4dc1b26466f1dc81c27472c3451d68b96f718e843789e211e13eb72

See more details on using hashes here.

File details

Details for the file jesse-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: jesse-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for jesse-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 25ae0a4bfba5053ddac04360e9abb512a85be8c86a7a010033f6adde8c5ad336
MD5 6926b7aca8f7ffc89a4ea3e65277a359
BLAKE2b-256 12f1c3f475d3c0860e040cc031277ad685cf48f14754e6bdf6e62eddaa0cb63e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page