Why Jesse for Backtesting
Your Python trading strategy performs brilliantly on historical data but drains the account in live trading. This scenario is familiar to many—80% of DeFi bots fail due to look-ahead bias and poor backtesting quality. Jesse is a framework that fixes this. We are a team with 5+ years of experience in DeFi development and 15+ implemented Jesse integrations for funds and individual traders.
Jesse (Python) is a lightweight framework for crypto trading focused on code simplicity and high-quality backtests. Its strengths are detailed reports: daily P&L, per-trade metrics, realistic fees, and built-in protection against look-ahead bias. Unlike Freqtrade, Jesse gives full control over the portfolio and supports multiple routes—simultaneous backtesting of several strategies on different symbols.
Problems We Solve
Look-ahead bias. Most frameworks use index -1 for the current unclosed bar—the strategy 'sees' the future. Jesse addresses this architecturally: self.candles[-1] is always the last closed bar. Jesse Documentation. This is critical for HFT strategies, where a one-candle error can distort metrics by 50%.
Unrealistic fees. Jesse by default accounts for exchange maker/taker fees, slippage, and price impact. We customize fees per specific liquidity pool—for example, for Uniswap V3, 0.3% plus gas.
Portfolio metrics. One strategy can trade on 5 pairs, and Jesse calculates overall P&L, trade correlation, and portfolio Sharpe. Without a summary, real return cannot be evaluated.
How Jesse Protects Against Look-Ahead Bias
Jesse uses a two-level candle model: self.candles[-1] is the closed bar, while self.candles[0] is the currently forming one. This eliminates 'peeking' error. For 1m timeframe strategies, the difference between -1 and 0 can account for up to 2% of returns.
How Jesse Computes Portfolio Metrics
When running multiple routes, Jesse creates a single equity curve across all strategies. The report includes Sharpe, Sortino, Calmar, max drawdown, win rate. Results per trade: entry/exit price, P&L, duration. Exportable to CSV.
Example Integration: ETH/USDT on Uniswap V2
From our practice: we configured Jesse for trading liquidity on Uniswap V2. Stack: Python 3.11, Jesse 1.10, Arbitrum network. Strategy: grid with hyperparameters: grid_steps (5-20), range_percent (1-5%). Backtest on data from the last 6 months.
Configuration with three routes: ETH/USDT, WBTC/USDT, LTC/USDT. Included pool fees of 0.3%, slippage 0.5%. Hyperparameter optimization via genetic algorithm.
Results: Sharpe 2.1, max drawdown 6.3%, win rate 68%. Portfolio Sharpe: 1.9.
Work Process
| Stage | What We Do | Outcome |
|---|---|---|
| Analytics | Study strategy, tokenomics, liquidity pools | Technical specification for integration |
| Design | Choose routes, configs, hyperparameters | Scheme documentation |
| Implementation | Write strategy in Jesse, tests | Code with coverage > 90% |
| Testing | Backtest on historical data, stress-test | Report with metrics |
| Deployment | Run on server, monitoring | Dashboard + alerts |
What's Included in the Work
Expand full list of deliverables
- Development of a Jesse strategy tailored to protocol specifics.
- Configuration of multiple routes for the portfolio.
- Setup of fees, slippage, price impact.
- Backtest with report: Sharpe, drawdown, P&L.
- Hyperparameter optimization (genetic algorithm).
- Operations documentation.
- 30-day support guarantee after launch.
Estimated Timelines
From 2 to 6 weeks, depending on strategy complexity and number of routes. Cost is calculated individually—based on data volume, backtest duration, and need for external oracle integration.
Comparison: Jesse vs Freqtrade
| Parameter | Jesse | Freqtrade |
|---|---|---|
| Built-in look-ahead protection | Yes, via -2 index | No, requires custom setup |
| Multiple routes | Natively | Through code |
| Portfolio metrics | Unified P&L, Sharpe | Per pair separately |
| Hyperparameters | Built-in genetic | Via external libraries |
Conclusion: Jesse is better suited for prototyping and testing complex multi-strategy portfolios. Freqtrade is for simple single-pair strategies.
Common Mistakes
- Using
self.candles[-1]in production (should be-2). - Forgetting to set
feefor the specific exchange. - Not including slippage—backtest shows inflated returns.
- Hyperparameters not optimized—strategy fails regime changes.
Contact us to evaluate your strategy. Order Jesse integration and get quality backtesting with post-deployment support. We are ready to perform Jesse integration for your project. We will assess the task within 48 hours and show metrics on your data. Guarantee backtest quality and support after deployment.







