jesse


Namejesse JSON
Version 1.10.4 PyPI version JSON
download
home_pagehttps://jesse.trade
SummaryA trading framework for cryptocurrencies
upload_time2025-07-17 12:35:00
maintainerNone
docs_urlNone
authorSaleh Mir
requires_python>=3.10
licenseNone
keywords
VCS
bugtrack_url
requirements arrow blinker click numpy pandas peewee psycopg2-binary pydash fnc pytest requests scipy statsmodels tabulate timeloop websocket-client wsaccel simplejson aioredis redis fastapi uvicorn websockets python-dotenv aiofiles numba PyJWT cryptography ecdsa optuna ray eth-account msgpack starkbank-ecdsa jesse-rust
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
<br>
<p align="center">
<img src="assets/jesse-logo.png" alt="Jesse" height="72" />
</p>

<p align="center">
Algo-trading was πŸ˜΅β€πŸ’«, we made it 🀩
</p>
</div>

# Jesse
[![PyPI](https://img.shields.io/pypi/v/jesse)](https://pypi.org/project/jesse)
[![Downloads](https://pepy.tech/badge/jesse)](https://pepy.tech/project/jesse)
[![Docker Pulls](https://img.shields.io/docker/pulls/salehmir/jesse)](https://hub.docker.com/r/salehmir/jesse)
[![GitHub](https://img.shields.io/github/license/jesse-ai/jesse)](https://github.com/jesse-ai/jesse)
[![coverage](https://codecov.io/gh/jesse-ai/jesse/graph/badge.svg)](https://codecov.io/gh/jesse-ai/jesse)

---

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](https://img.youtube.com/vi/0EqN3OOqeJM/0.jpg)](https://www.youtube.com/watch?v=0EqN3OOqeJM)

## 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.
- πŸ“Ί **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.

```python
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](https://raw.githubusercontent.com/jesse-ai/storage/refs/heads/master/backtest.gif)

### 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](https://raw.githubusercontent.com/jesse-ai/storage/refs/heads/master/live.gif)

### 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](https://raw.githubusercontent.com/jesse-ai/storage/refs/heads/master/benchmark.gif)

### 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](https://raw.githubusercontent.com/jesse-ai/storage/refs/heads/master/gpt.gif)

### 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.

```python
@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](https://docs.jesse.trade/docs/getting-started). The 
documentation is **short yet very informative**. 

## Resources

- [⚑️ Website](https://jesse.trade)
- [πŸŽ“ Documentation](https://docs.jesse.trade)
- [πŸŽ₯ Youtube channel (screencast tutorials)](https://jesse.trade/youtube)
- [πŸ›Ÿ Help center](https://jesse.trade/help)
- [πŸ’¬ Discord community](https://jesse.trade/discord)
- [πŸ€– JesseGPT](https://jesse.trade/gpt) (Requires a free account)

## What's next?

You can see the project's **[roadmap here](https://docs.jesse.trade/docs/roadmap.html)**. **Subscribe** to our mailing list at [jesse.trade](https://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**.

            

Raw data

            {
    "_id": null,
    "home_page": "https://jesse.trade",
    "name": "jesse",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": null,
    "author": "Saleh Mir",
    "author_email": "saleh@jesse.trade",
    "download_url": "https://files.pythonhosted.org/packages/55/11/395763a5002a8d57d85e41cbba36ebb543d871e7d059a08f6894593dffd5/jesse-1.10.4.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n<br>\n<p align=\"center\">\n<img src=\"assets/jesse-logo.png\" alt=\"Jesse\" height=\"72\" />\n</p>\n\n<p align=\"center\">\nAlgo-trading was \ud83d\ude35\u200d\ud83d\udcab, we made it \ud83e\udd29\n</p>\n</div>\n\n# Jesse\n[![PyPI](https://img.shields.io/pypi/v/jesse)](https://pypi.org/project/jesse)\n[![Downloads](https://pepy.tech/badge/jesse)](https://pepy.tech/project/jesse)\n[![Docker Pulls](https://img.shields.io/docker/pulls/salehmir/jesse)](https://hub.docker.com/r/salehmir/jesse)\n[![GitHub](https://img.shields.io/github/license/jesse-ai/jesse)](https://github.com/jesse-ai/jesse)\n[![coverage](https://codecov.io/gh/jesse-ai/jesse/graph/badge.svg)](https://codecov.io/gh/jesse-ai/jesse)\n\n---\n\nJesse is an advanced crypto trading framework that aims to **simplify** **researching** and defining **YOUR OWN trading strategies** for backtesting, optimizing, and live trading.\n\n## What is Jesse?\nWatch this video to get a quick overview of Jesse:\n\n[![Jesse Overview](https://img.youtube.com/vi/0EqN3OOqeJM/0.jpg)](https://www.youtube.com/watch?v=0EqN3OOqeJM)\n\n## Why Jesse?\nIn short, Jesse is more **accurate** than other solutions, and way more **simple**. \nIn 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**. \n\n## Key Features\n\n- \ud83d\udcdd **Simple Syntax**: Define both simple and advanced trading strategies with the simplest syntax in the fastest time.\n- \ud83d\udcca **Comprehensive Indicator Library**: Access a complete library of technical indicators with easy-to-use syntax.\n- \ud83d\udcc8 **Smart Ordering**: Supports market, limit, and stop orders, automatically choosing the best one for you.\n- \u23f0 **Multiple Timeframes and Symbols**: Backtest and livetrade multiple timeframes and symbols simultaneously without look-ahead bias.\n- \ud83d\udd12 **Self-Hosted and Privacy-First**: Designed with your privacy in mind, fully self-hosted to ensure your trading strategies and data remain secure.\n- \ud83d\udee1\ufe0f **Risk Management**: Built-in helper functions for robust risk management.\n- \ud83d\udccb **Metrics System**: A comprehensive metrics system to evaluate your trading strategy's performance.\n- \ud83d\udd0d **Debug Mode**: Observe your strategy in action with a detailed debug mode.\n- \ud83d\udd27 **Optimize Mode**: Fine-tune your strategies using AI, without needing a technical background.\n- \ud83d\udcc8 **Leveraged and Short-Selling**: First-class support for leveraged trading and short-selling.\n- \ud83d\udd00 **Partial Fills**: Supports entering and exiting positions in multiple orders, allowing for greater flexibility.\n- \ud83d\udd14 **Advanced Alerts**: Create real-time alerts within your strategies for effective monitoring.\n- \ud83e\udd16 **JesseGPT**: Jesse has its own GPT, JesseGPT, that can help you write strategies, optimize them, debug them, and much more.\n- \ud83d\udd27 **Built-in Code Editor**: Write, edit, and debug your strategies with a built-in code editor.\n- \ud83d\udcfa **Youtube Channel**: Jesse has a Youtube channel with screencast tutorials that go through example strategies step by step.\n\n## Dive Deeper into Jesse's Capabilities\n\n### Stupid Simple\nCraft 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.\n\n```python\nclass GoldenCross(Strategy):\n    def should_long(self):\n        # go long when the EMA 8 is above the EMA 21\n        short_ema = ta.ema(self.candles, 8)\n        long_ema = ta.ema(self.candles, 21)\n        return short_ema > long_ema\n\n    def go_long(self):\n        entry_price = self.price - 10        # limit buy order at $10 below the current price\n        qty = utils.size_to_qty(self.balance*0.05, entry_price) # spend only 5% of my total capital\n        self.buy = qty, entry_price                 # submit entry order\n        self.take_profit = qty, entry_price*1.2  # take profit at 20% above the entry price\n        self.stop_loss = qty, entry_price*0.9   # stop loss at 10% below the entry price\n```\n\n### Backtest\nExecute 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.\n\n![Backtest](https://raw.githubusercontent.com/jesse-ai/storage/refs/heads/master/backtest.gif)\n\n### Live/Paper Trading\nDeploy 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.\n\n![Live/Paper Trading](https://raw.githubusercontent.com/jesse-ai/storage/refs/heads/master/live.gif)\n\n### Benchmark\nAccelerate 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.\n\n![Benchmark](https://raw.githubusercontent.com/jesse-ai/storage/refs/heads/master/benchmark.gif)\n\n### AI\nLeverage 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.\n\n![AI](https://raw.githubusercontent.com/jesse-ai/storage/refs/heads/master/gpt.gif)\n\n### Optimize Your Strategies\nUnsure about optimal parameters? Let the optimization mode decide using simple syntax. Fine-tune any strategy parameter with the Optuna library and easy cross-validation.\n\n```python\n@property\ndef slow_sma(self):\n    return ta.sma(self.candles, self.hp['slow_sma_period'])\n\n@property\ndef fast_sma(self):\n    return ta.sma(self.candles, self.hp['fast_sma_period'])\n\ndef hyperparameters(self):\n    return [\n        {'name': 'slow_sma_period', 'type': int, 'min': 150, 'max': 210, 'default': 200},\n        {'name': 'fast_sma_period', 'type': int, 'min': 20, 'max': 100, 'default': 50},\n    ]\n```\n\n## Getting Started\nHead over to the \"getting started\" section of the [documentation](https://docs.jesse.trade/docs/getting-started). The \ndocumentation is **short yet very informative**. \n\n## Resources\n\n- [\u26a1\ufe0f Website](https://jesse.trade)\n- [\ud83c\udf93 Documentation](https://docs.jesse.trade)\n- [\ud83c\udfa5 Youtube channel (screencast tutorials)](https://jesse.trade/youtube)\n- [\ud83d\udedf Help center](https://jesse.trade/help)\n- [\ud83d\udcac Discord community](https://jesse.trade/discord)\n- [\ud83e\udd16 JesseGPT](https://jesse.trade/gpt) (Requires a free account)\n\n## What's next?\n\nYou can see the project's **[roadmap here](https://docs.jesse.trade/docs/roadmap.html)**. **Subscribe** to our mailing list at [jesse.trade](https://jesse.trade) to get the good stuff as soon they're released. Don't worry, We won't send you spam\u2014Pinky promise.\n\n## Disclaimer\nThis 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**.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A trading framework for cryptocurrencies",
    "version": "1.10.4",
    "project_urls": {
        "Documentation": "https://docs.jesse.trade",
        "Homepage": "https://jesse.trade",
        "Say Thanks!": "https://jesse.trade/discord",
        "Source": "https://github.com/jesse-ai/jesse",
        "Tracker": "https://github.com/jesse-ai/jesse/issues"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ab3ca17c82717b396fda85b35c088d7c40f1349a0edd635a11cff88caf5725fd",
                "md5": "74c90ca85d0534152600db0f4d4afaeb",
                "sha256": "5bab7db2215272ed28bb3e2d5e144cbe749085ff4c5baebf49ee313fb388823b"
            },
            "downloads": -1,
            "filename": "jesse-1.10.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "74c90ca85d0534152600db0f4d4afaeb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 6703017,
            "upload_time": "2025-07-17T12:34:53",
            "upload_time_iso_8601": "2025-07-17T12:34:53.939773Z",
            "url": "https://files.pythonhosted.org/packages/ab/3c/a17c82717b396fda85b35c088d7c40f1349a0edd635a11cff88caf5725fd/jesse-1.10.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5511395763a5002a8d57d85e41cbba36ebb543d871e7d059a08f6894593dffd5",
                "md5": "94e1326def9bfb8abb5d07f75e152a5a",
                "sha256": "4f5cba1e843232f64011033a1d955920eaf205ca37eb63c5d7d5b9129393bb7c"
            },
            "downloads": -1,
            "filename": "jesse-1.10.4.tar.gz",
            "has_sig": false,
            "md5_digest": "94e1326def9bfb8abb5d07f75e152a5a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 6446068,
            "upload_time": "2025-07-17T12:35:00",
            "upload_time_iso_8601": "2025-07-17T12:35:00.450947Z",
            "url": "https://files.pythonhosted.org/packages/55/11/395763a5002a8d57d85e41cbba36ebb543d871e7d059a08f6894593dffd5/jesse-1.10.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-17 12:35:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jesse-ai",
    "github_project": "jesse",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "arrow",
            "specs": [
                [
                    "~=",
                    "1.2.1"
                ]
            ]
        },
        {
            "name": "blinker",
            "specs": [
                [
                    "~=",
                    "1.4"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    "~=",
                    "8.0.3"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "~=",
                    "1.26.4"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    "~=",
                    "2.2.3"
                ]
            ]
        },
        {
            "name": "peewee",
            "specs": [
                [
                    "~=",
                    "3.14.8"
                ]
            ]
        },
        {
            "name": "psycopg2-binary",
            "specs": [
                [
                    "~=",
                    "2.9.9"
                ]
            ]
        },
        {
            "name": "pydash",
            "specs": [
                [
                    "~=",
                    "6.0.0"
                ]
            ]
        },
        {
            "name": "fnc",
            "specs": [
                [
                    "~=",
                    "0.5.3"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "~=",
                    "6.2.5"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "~=",
                    "2.32.0"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": [
                [
                    "~=",
                    "1.15.0"
                ]
            ]
        },
        {
            "name": "statsmodels",
            "specs": [
                [
                    "~=",
                    "0.14.4"
                ]
            ]
        },
        {
            "name": "tabulate",
            "specs": [
                [
                    "~=",
                    "0.8.9"
                ]
            ]
        },
        {
            "name": "timeloop",
            "specs": [
                [
                    "~=",
                    "1.0.2"
                ]
            ]
        },
        {
            "name": "websocket-client",
            "specs": [
                [
                    "~=",
                    "1.8.0"
                ]
            ]
        },
        {
            "name": "wsaccel",
            "specs": [
                [
                    "~=",
                    "0.6.6"
                ]
            ]
        },
        {
            "name": "simplejson",
            "specs": [
                [
                    "~=",
                    "3.16.0"
                ]
            ]
        },
        {
            "name": "aioredis",
            "specs": [
                [
                    "~=",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "redis",
            "specs": [
                [
                    "~=",
                    "4.1.4"
                ]
            ]
        },
        {
            "name": "fastapi",
            "specs": [
                [
                    "~=",
                    "0.111.1"
                ]
            ]
        },
        {
            "name": "uvicorn",
            "specs": [
                [
                    "~=",
                    "0.29.0"
                ]
            ]
        },
        {
            "name": "websockets",
            "specs": [
                [
                    ">=",
                    "10.0.0"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": [
                [
                    "~=",
                    "0.19.2"
                ]
            ]
        },
        {
            "name": "aiofiles",
            "specs": [
                [
                    "~=",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "numba",
            "specs": [
                [
                    "~=",
                    "0.61.0rc2"
                ]
            ]
        },
        {
            "name": "PyJWT",
            "specs": [
                [
                    "~=",
                    "2.8.0"
                ]
            ]
        },
        {
            "name": "cryptography",
            "specs": [
                [
                    "~=",
                    "42.0.5"
                ]
            ]
        },
        {
            "name": "ecdsa",
            "specs": [
                [
                    ">=",
                    "0.16.0"
                ]
            ]
        },
        {
            "name": "optuna",
            "specs": [
                [
                    "~=",
                    "4.2.0"
                ]
            ]
        },
        {
            "name": "ray",
            "specs": []
        },
        {
            "name": "eth-account",
            "specs": [
                [
                    "~=",
                    "0.13.5"
                ]
            ]
        },
        {
            "name": "msgpack",
            "specs": [
                [
                    "~=",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "starkbank-ecdsa",
            "specs": [
                [
                    "~=",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "jesse-rust",
            "specs": [
                [
                    "==",
                    "1.0.1"
                ]
            ]
        }
    ],
    "lcname": "jesse"
}
        
Elapsed time: 1.32916s