Freqtrade: 51,300 Stars for Python Crypto Trading Bot — Backtest, Optimize, Deploy — A Practical Guide 2026

Freqtrade (51,300 GitHub stars) is the open-source crypto trading bot written in Python. Backtest strategies, optimize with hyperopt, deploy to exchange APIs. Includes setup guide, strategy development, and real backtest benchmarks.

  • ⭐ 52146
  • Updated 2026-06-08

Jesse: The Advanced Python Crypto Trading Framework with 30+ Technical Indicators — 2026 Setup GuideHummingbot 2026: The Open-Source Crypto Trading Bot Running 50+ Exchange Connectors — Setup & Strategy Guide

┌──────────────────────────────────────────────────────┐
│              Freqtrade Trading Engine                 │
│                                                      │
│  ┌─────────────┐  ┌─────────────┐  ┌────────────┐   │
│  │  Backtest   │  │  Hyperopt   │  │  Live Trade │   │
│  │  Engine     │  │  Optimizer  │  │   Exchange   │   │
│  └──────┬──────┘  └──────┬──────┘  └──────┬─────┘   │
│         │                │                 │         │
│  ┌──────▼────────────────▼─────────────────▼──────┐  │
│  │          Strategy Layer (Python)                │  │
│  │  define_buy_signal() │ define_sell_signal()     │  │
│  │  define_protections() │ populate_indicators()    │  │
│  └───────────────────────────────────────────────┘  │
│                                                      │
│  Exchanges: Binance | OKX | Bitget | Dex-Trade      │
└──────────────────────────────────────────────────────┘

Freqtrade architecture: backtest → optimize → deploy

Get a DigitalOcean account for running this at scale

Introduction #

If you’re still manually trading crypto in 2026, you’re burning 3 hours a week and likely losing 5-10% per month to emotional decisions. Freqtrade (51,300 GitHub stars) is the Python-powered open-source trading bot that automates your strategy: backtest on years of historical data, optimize parameters with hyperopt, and deploy to live exchanges — all self-hosted on your own server. Built since 2016 and actively maintained, it supports Binance, OKX, Bitget, and 20+ exchange APIs. No monthly fees. No vendor lock-in. Just Python code running 24/7 on your infrastructure.

What Is Freqtrade? #

Freqtrade is an open-source crypto trading bot written in Python that automates the entire trading pipeline: strategy development, backtesting, parameter optimization, paper trading, and live deployment. It is not a black-box signal provider. It is a framework where YOU define the strategy logic, and Freqtrade handles the execution infrastructure.

Key capabilities:

  • Strategy development — Write trading strategies in pure Python
  • Backtesting — Test on years of OHLCV data with realistic fees and slippage
  • Hyperopt optimization — Automatically find optimal parameters using genetic algorithms
  • Live/Paper trading — Deploy to 20+ exchanges via API or simulate with paper mode
  • Real-time dashboard — Monitor positions, P&L, and performance via web UI
  • Dry-run mode — Test strategies risk-free before going live

The project is built with Python (core), FastAPI (RPC server), React (web UI), and Docker (deployment). It stores market data in PostgreSQL/SQLite and uses ccxt for exchange connectivity.

How Freqtrade Works #

Freqtrade operates through four distinct phases:

Phase 1: Strategy Development #

# strategies/MyStrategy.py
from freqtrade.strategy import IStrategy
from pandas import DataFrame
import talib.abstract as ta

class MyStrategy(IStrategy):
    # Strategy interface settings
    stoploss = -0.10
    timeframe = '15m'
    
    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
        dataframe['adx'] = ta.ADX(dataframe)
        dataframe['ema_fast'] = ta.EMA(dataframe, timeperiod=20)
        dataframe['ema_slow'] = ta.EMA(dataframe, timeperiod=50)
        return dataframe
    
    def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (dataframe['rsi'] < 30) & 
            (dataframe['adx'] > 25) & 
            (dataframe['ema_fast'] > dataframe['ema_slow']),
            'buy'] = 1
        return dataframe
    
    def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        dataframe.loc[
            (dataframe['rsi'] > 70) | 
            (dataframe['ema_fast'] < dataframe['ema_slow']),
            'sell'] = 1
        return dataframe

Phase 2: Backtesting #

# Download historical data
freqtrade download-data --timerange 20230101-20260101 --days 1000

# Run backtest
freqtrade backtesting \
  --strategy MyStrategy \
  --timerange 20240101-20251231 \
  --datadir ./data \
  --export trades

Phase 3: Hyperopt Optimization #

# Optimize strategy parameters
freqtrade hyperopt \
  --strategy MyStrategy \
  --hyperopt-loss SharpeHyperOptLossDaily \
  --epochs 500 \
  --spaces buy sell roi stoploss trailing

You can create a custom hyperopt loss function to optimize for your specific risk preferences:

# custom_hyperopt_loss.py
from freqtrade.optimize.hyperopt import IHyperOptLoss
from pandas import DataFrame

class CalmarHyperOptLoss(IHyperOptLoss):
    @staticmethod
    def hyperopt_loss_function(results: DataFrame, **kwargs):
        total_profit = results['profit_ratio'].sum()
        max_drawdown = results.groupby('trade_nr')['profit_ratio'].cummax().max()
        calmar_ratio = total_profit / max_drawdown if max_drawdown > 0 else 0
        return -calmar_ratio  # Minimize negative = maximize calmar ratio
# Use custom loss function
freqtrade hyperopt \
  --hyperopt-loss CalmarHyperOptLoss \
  --strategy MyStrategy \
  --epochs 500 \
  --spaces all

Phase 4: Live Deployment #

# Start with dry-run (paper trading)
freqtrade trade \
  --strategy MyStrategy \
  --db-url sqlite:///trades.db \
  --config config.json \
  --dry-run

# Switch to live trading
freqtrade trade \
  --strategy MyStrategy \
  --config config.json

Integration with Binance, OKX, Bitget, and 20+ Exchanges #

Freqtrade uses the ccxt library for exchange connectivity, supporting all major crypto exchanges:

Supported Exchanges #

| Exchange | API Type | Fees | Min. Capital | KYC Required | |

📦 Featured in collections

💬 Discussion