$ show jesse-ai/jesse
Jesse is a mature, full-stack algorithmic trading framework designed for cryptocurrency backtesting, live/paper trading, hyperparameter optimization, Monte Carlo simulation, and rule significance testing. It combines a Python library with a FastAPI web server and a Nuxt.js dashboard, offering a comprehensive environment for developing and validating trading strategies. The repository also includes an MCP (Model Context Protocol) server for AI-assistant integration, over 180 technical indicators (many with Rust-accelerated backends), and a research API for programmatic strategy analysis. Architecture is modular with distinct layers: CLI entrypoint → web controllers / MCP tools → service layer → simulation engine (backtest/optimize/live) → exchange adapters. State management uses global singletons for in-memory simulation state, while persistent data is stored via Peewee ORM (PostgreSQL, optional TimescaleDB). The indicator library showcases a clean pattern with sequential/non-sequential modes and Rust fallback. However, the codebase shows signs of organic growth with some tightly coupled modules (global config, store singletons) and a large static frontend bundle that is opaque to analysis. Key strengths include the breadth of supported exchanges (10+), robust backtesting with realistic fee/margin/leverage modeling, and a well-designed MCP tool layer for AI-assisted development. Weaknesses include exchange driver duplication, a complex Rust subprocess for coordination, and dependency on many external APIs that require ongoing maintenance.
The LLM identified 3 files worth highlighting for reuse:
Implements a growable numpy array that appends data in O(1) amortized time by using a geometric growth factor (1.5x) when capacity is exceeded. Provides atomic state publication via properties, supports negative indices, and can drop old data to maintain a fixed window size. Clean, self-contained implementation (~150 lines) that could be extracted into any Python/numpy project for efficient sequential data collection.
Provides a stationary bootstrap implementation for time series significance testing. Includes block-length selection, resampling, and parallel execution to generate empirical null distributions. The algorithm is non-trivial (handles pseudo-random seed, block splitting) and is isolated enough for reuse in any research context requiring bootstrapped hypothesis tests on time-ordered data.
Defines a clean hierarchy of domain-specific exception classes for external data provider interactions: ProviderRateLimitError, ProviderRequestError, ProviderUnavailableError, ProviderAuthenticationError, ProviderNotFoundError. Each carries provider_id and provider_name. This pattern is directly reusable in any project that talks to multiple external APIs and needs structured error handling beyond generic HTTPException.