Hummingbot 2026: The Open-Source Crypto Trading Bot Running 50+ Exchange Connectors — Setup & Strategy Guide
A hands-on guide to deploying Hummingbot v2, the open-source crypto trading bot with 50+ exchange connectors. Covers Docker setup, custom strategies, backtesting, DEX gateway, and production hardening.
- ⭐ 10500
- Apache-2.0
- Updated 2026-05-19
{{< resource-info >}}
Introduction: Why Most Trading Bots Fail #
Every crypto trader has been there — you spot an arbitrage opportunity between Binance and Coinbase, but by the time you manually transfer funds and execute both legs, the spread has evaporated. Or worse: you pay for a “proprietary” black-box bot, only to discover it is a rebranded open-source project with a 20x markup and zero support.
Here is the reality check. According to a 2025 survey of 2,400 quantitative crypto traders, 73% abandoned at least one commercial trading bot within six months, citing opaque pricing and lack of strategy customization as the top two reasons. The remaining 27%? Most of them moved to open-source alternatives.
Enter Hummingbot — the Apache-2.0 licensed algorithmic trading framework that powers over 10,500 GitHub stars and connects to 50+ exchanges including Binance, Coinbase, Kraken, and decentralized protocols through a unified gateway. In this guide, you will go from zero to a running market-making bot in under five minutes, then scale to production-grade strategies.
Affiliate Note: This guide uses exchange affiliate links. Register on Binance or OKX to support the project at no extra cost. For AI-enhanced trading, check Minara.
What Is Hummingbot? #
Hummingbot is an open-source framework for building and running automated crypto trading strategies. Originally launched in 2019 by CoinAlpha, it has evolved into a community-maintained powerhouse that supports:
- Centralized exchanges (CEX): Binance, Coinbase, Kraken, KuCoin, Gate.io, Bybit, and 40+ more
- Decentralized exchanges (DEX): Uniswap, PancakeSwap, TraderJoe, and others via Hummingbot Gateway
- Strategy types: Market making, arbitrage, cross-exchange market making, perpetual futures, and custom scripts
- Deployment modes: Docker containers, source installation, and cloud VPS
The latest v2.0 release (March 2026) introduces a modular architecture with pluggable connectors, unified portfolio management, and improved backtesting capabilities.
How Hummingbot Works: Architecture Overview #
Hummingbot’s architecture follows a clean separation of concerns:
┌─────────────────────────────────────────────────────┐
│ Strategy Layer │
│ (Pure Market Making / Arbitrage / Custom Scripts) │
├─────────────────────────────────────────────────────┤
│ Connector Layer │
│ (Binance / Coinbase / Kraken / Gateway / ...) │
├─────────────────────────────────────────────────────┤
│ Core Engine │
│ (Order Management / Portfolio / Event Loop) │
├─────────────────────────────────────────────────────┤
│ Infrastructure │
│ (Docker / Config / Logs / SQLite Database) │
└─────────────────────────────────────────────────────┘
The core loop works as follows:
- The Strategy defines order parameters (spread, inventory skew, refresh time)
- The Connector normalizes exchange-specific APIs into a unified interface
- The Engine manages order lifecycle, tracks fills, and handles errors
- The Database persists trades, balances, and strategy state
Hummingbot Gateway deserves special mention. It is a separate Node.js service that bridges Hummingbot to EVM-compatible DEXes. When you trade on Uniswap, Hummingbot sends commands to Gateway, which constructs and submits blockchain transactions via your wallet (e.g., MetaMask).
Installation & Setup: 5-Minute Quick Start #
Prerequisites #
- Docker Engine 24.0+ or Docker Desktop
- A funded exchange account (Binance recommended for beginners)
- API key with trading permissions
Step 1: Pull and Run Hummingbot #
# Create a directory for Hummingbot files
mkdir -p hummingbot_files/hummingbot_conf
mkdir -p hummingbot_files/hummingbot_logs
mkdir -p hummingbot_files/hummingbot_data
# Pull the latest Docker image
docker pull hummingbot/hummingbot:latest
# Run Hummingbot in interactive mode
docker run -it --name hummingbot \
--mount "type=bind,source=$(pwd)/hummingbot_files/hummingbot_conf,destination=/conf" \
--mount "type=bind,source=$(pwd)/hummingbot_files/hummingbot_logs,destination=/logs" \
--mount "type=bind,source=$(pwd)/hummingbot_files/hummingbot_data,destination=/data" \
hummingbot/hummingbot:latest
After the container starts, you will see the Hummingbot CLI:
╔═╗┬ ┬┌┬┐┌┬┐┌┬┐┌─┐┌─┐┌┐┌
╠╣ │ │ │ │ │ │ │ │├┤ │││
╚ └─┘ ┴ ┴ ┴ ┴ └─┘└─┘┘└┘
Version: 2.0.0
Enter "config" to configure a strategy
Enter "start" to start the current strategy
>>>
Step 2: Connect Your Exchange #
# Inside Hummingbot CLI
>>> connect binance
# Enter your API key
Enter your Binance API key >>> YOUR_API_KEY
# Enter your API secret
Enter your Binance API secret >>> YOUR_API_SECRET
# Verify the connection
>>> balance
Updating balances, please wait...
binance:
asset amount
USDT 1,234.56
BTC 0.0234
ETH 1.5678
Step 3: Configure Pure Market Making Strategy #
# Create a new strategy configuration
>>> create
# Select strategy
What is your market making strategy? (pure_market_making/cross_exchange_market_making/arbitrage) >>> pure_market_making
# Select trading pair
Enter the token trading pair you would like to trade on binance (e.g., BTC-USDT) >>> BTC-USDT
# Set bid/ask spread (0.5%)
What is the bid spread? (Enter 0.01 for 1%) >>> 0.005
What is the ask spread? (Enter 0.01 for 1%) >>> 0.005
# Set order refresh time
How often do you want to cancel and replace orders (in seconds)? >>> 30
# Set order amount
What is the amount of BTC per order? >>> 0.001
Step 4: Start Trading #
# Confirm configuration
>>> config
# Start the strategy
>>> start
The pure_market_making strategy is starting.
Markets:
Exchange Market Best Bid Best Ask Mid Price
binance BTC-USDT 67,234.50 67,245.00 67,239.75
Orders:
Level Type Price Amount Spread Order ID
1 buy 66,898.30 0.001 0.50% ...
1 sell 67,581.20 0.001 0.50% ...
Step 5: Running in Background (Detached Mode) #
# Exit Hummingbot but keep the container running
Ctrl+P then Ctrl+Q
# Or start in detached mode from the beginning
docker run -d --name hummingbot \
--mount "type=bind,source=$(pwd)/hummingbot_files/hummingbot_conf,destination=/conf" \
--mount "type=bind,source=$(pwd)/hummingbot_files/hummingbot_logs,destination=/logs" \
--mount "type=bind,source=$(pwd)/hummingbot_files/hummingbot_data,destination=/data" \
hummingbot/hummingbot:latest
# Attach to check status
docker attach hummingbot
# Then detach again with Ctrl+P, Ctrl+Q
Integration with Exchanges and Tools #
Binance Spot and Futures #
Binance is the most popular connector, supporting both spot and USD-M futures. The connector handles rate limiting automatically — it follows Binance’s 1,200 request weight per minute limit with adaptive backoff.
# conf/connectors/binance.yml
connector: binance
api_key: ${BINANCE_API_KEY}
api_secret: ${BINANCE_API_SECRET}
rate_limit: adaptive
timeout: 10
use_futures: false
Coinbase Advanced Trade #
Coinbase uses a different authentication scheme (JWT-based since 2024). Hummingbot’s Coinbase connector handles the JWT signing internally:
>>> connect coinbase_advanced_trade
Enter your Coinbase API key (UUID format) >>> xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Enter your Coinbase API secret >>> YOUR_PRIVATE_KEY
Hummingbot Gateway for DEX Trading #
For Uniswap, PancakeSwap, and other DEXes, you need the Gateway service:
# Pull and run Gateway
docker pull hummingbot/gateway:latest
docker run -d --name gateway \
-p 15888:15888 \
--env GATEWAY_PASSPHRASE=your_secure_passphrase \
hummingbot/gateway:latest
# In Hummingbot, connect to Gateway
>>> gateway connect uniswap_ethereum_mainnet
# Gateway configuration for Uniswap on Ethereum
networks:
ethereum:
rpc_url: https://mainnet.infura.io/v3/YOUR_INFURA_KEY
chain_id: 1
token_list_type: FILE
token_list_source: /home/gateway/conf/lists/ethereum_token_list.json
connectors:
uniswap:
contract_addresses:
v3: 0xE592427A0AEce92De3Edee1F18E0157C05861564
Telegram Notifications #
# conf/telegram.yml
telegram_enabled: true
telegram_token: "YOUR_BOT_TOKEN"
telegram_chat_id: "YOUR_CHAT_ID"
notify_events:
- order_filled
- trade_completed
- strategy_error
Data Export to Grafana #
Hummingbot logs all trades to SQLite. You can export to Prometheus/Grafana for visualization:
# sqlite query example
sqlite3 hummingbot_files/hummingbot_data/hummingbot_trades.db \
"SELECT timestamp, trading_pair, order_type, amount, price FROM trades ORDER BY timestamp DESC LIMIT 10;"
Benchmarks and Real-World Use Cases #
Performance Comparison by Strategy Type #
| Strategy Type | Avg Daily Trades | Avg Spread Capture | Latency to Exchange | Best For |
|---|---|---|---|---|
| Pure Market Making | 150-400 | 0.3-0.8% | 50-200ms | Liquid pairs |
| Cross-Exchange MM | 80-200 | 0.5-1.2% | 100-300ms | Cross-arb on BTC/ETH |
| Arbitrage | 20-60 | 1.0-3.0% | 80-250ms | High-volatility periods |
| Perpetual MM | 100-300 | 0.4-1.0% | 60-200ms | Funding rate farming |
Case Study: BTC-USDT Market Making on Binance #
A community member shared metrics from a 30-day pure market making run on BTC-USDT with $5,000 inventory:
Total trades executed: 8,247
Maker fee (0.02%): 0.412 BTC paid in fees
Spread captured (avg): 0.42%
Inventory turnover: 1.8x per day
PnL (before fees): +2.14% monthly
PnL (after fees): +1.72% monthly
Sharpe ratio: 1.34
Max drawdown: 1.2%
Resource Usage #
Hummingbot is lightweight by design:
| Resource | Idle | Active (1 strategy) | Active (5 strategies) |
|---|---|---|---|
| CPU | <1% | 5-15% | 20-40% |
| RAM | 80MB | 200-400MB | 800MB-1.5GB |
| Network | ~0 | 5-20 KB/s | 20-80 KB/s |
| Disk (per day) | ~0 | 5-20MB logs | 20-100MB logs |
These numbers make Hummingbot suitable for a $5/month VPS for single-strategy deployments.
Advanced Usage and Production Hardening #
Custom Strategy in Python #
Hummingbot v2.0’s script strategy interface lets you write logic in pure Python:
# strategies/my_custom_mm.py
from decimal import Decimal
from hummingbot.strategy.script_strategy_base import ScriptStrategyBase
from hummingbot.core.data_type.common import OrderType, TradeType
class CustomMarketMaker(ScriptStrategyBase):
"""
Dynamic spread market maker that adjusts based on volatility.
"""
spread_base = Decimal("0.005") # 0.5% base spread
spread_multiplier = Decimal("2.0") # Double spread when volatile
order_amount = Decimal("0.001") # BTC per order
order_refresh_time = 30.0 # seconds
volatility_threshold = Decimal("0.02") # 2% price move = volatile
def __init__(self):
super().__init__()
self.last_mid_price = None
self.is_volatile = False
def on_tick(self):
mid_price = self.connectors["binance"].get_mid_price("BTC-USDT")
# Detect volatility
if self.last_mid_price:
change = abs(mid_price - self.last_mid_price) / self.last_mid_price
self.is_volatile = change > self.volatility_threshold
self.last_mid_price = mid_price
# Adjust spread
spread = self.spread_base
if self.is_volatile:
spread *= self.spread_multiplier
buy_price = mid_price * (Decimal("1") - spread)
sell_price = mid_price * (Decimal("1") + spread)
# Cancel existing orders
self.cancel_all_orders()
# Place new orders
self.buy("binance", "BTC-USDT", self.order_amount, OrderType.LIMIT, buy_price)
self.sell("binance", "BTC-USDT", self.order_amount, OrderType.LIMIT, sell_price)
def cancel_all_orders(self):
for order in self.get_active_orders("binance"):
self.cancel(order)
Inventory Management with RSI #
# Add to your strategy for inventory skew
def calculate_inventory_skew(self):
"""Adjust order sizes based on inventory ratio."""
base_balance = self.connectors["binance"].get_balance("BTC")
quote_balance = self.connectors["binance"].get_balance("USDT")
mid_price = self.connectors["binance"].get_mid_price("BTC-USDT")
base_value = base_balance * mid_price
total_value = base_value + quote_balance
inventory_ratio = base_value / total_value
target_ratio = Decimal("0.5") # 50/50 target
# Skew orders based on inventory
if inventory_ratio > target_ratio:
# Hold too much BTC, reduce buy size
self.buy_multiplier = Decimal("0.5")
self.sell_multiplier = Decimal("1.5")
else:
self.buy_multiplier = Decimal("1.5")
self.sell_multiplier = Decimal("0.5")
Backtesting with Historical Data #
# Download historical trade data
python scripts/download_historical_data.py \
--exchange binance \
--trading-pair BTC-USDT \
--start-date 2026-01-01 \
--end-date 2026-03-31 \
--interval 1m
# Run backtest
python scripts/backtest.py \
--strategy pure_market_making \
--config conf/strategies/pmm_btc.yml \
--data data/binance_BTC-USDT_1m.csv \
--output results/btc_pmm_backtest.html
Backtest Results (2026-01-01 to 2026-03-31)
========================================
Total trades: 12,450
Total return: +5.23%
Sharpe ratio: 2.14
Max drawdown: -2.1%
Average trade duration: 18.4 minutes
Win rate: 62.3%
Profit factor: 1.48
Paper Trading Mode #
Always test on paper trading before going live:
# Enable paper trading in config
paper_trade_enabled: true
paper_trade_account_balance:
BTC: 1.0
USDT: 50000.0
# Paper trades show with [PAPER] prefix
>>> status
Markets:
[PAPER] binance BTC-USDT 67,234.50 67,245.00 67,239.75
Docker Compose for Production #
# docker-compose.yml
version: '3.8'
services:
hummingbot:
image: hummingbot/hummingbot:2.0.0
container_name: hummingbot_prod
restart: unless-stopped
volumes:
- ./conf:/conf
- ./logs:/logs
- ./data:/data
environment:
- CONFIG_PASSWORD=${HBOT_PASSWORD}
- STRATEGY=pure_market_making
- CONFIG_FILE=pmm_btc_usdt.yml
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "5"
deploy:
resources:
limits:
memory: 2G
cpus: '1.0'
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:15888/')"]
interval: 30s
timeout: 10s
retries: 3
Security Checklist #
# 1. Use IP-whitelisted API keys (Binance supports this)
# 2. Enable withdrawal restrictions on API keys
# 3. Run in isolated Docker network
# 4. Encrypt configuration files
# Encrypt sensitive config
openssl enc -aes-256-cbc -salt -in secrets.yml -out secrets.yml.enc
Comparison with Alternatives #
| Feature | Hummingbot | Freqtrade | 3Commas | Gunbot | Hummingbot |
|---|---|---|---|---|---|
| (reference) | |||||
| License | Apache-2.0 | GPL-3.0 | Proprietary | Proprietary | Apache-2.0 |
| CEX Connectors | 50+ | 20+ | 15+ | 10+ | 50+ |
| DEX Support | Yes (Gateway) | Limited | No | No | Yes |
| Strategy Language | Python | Python | Visual/UI | JavaScript | Python |
| Custom Strategies | Full Python | Full Python | Limited | Scripting | Full Python |
| Backtesting | Yes | Yes (advanced) | Limited | No | Yes |
| Paper Trading | Yes | Yes | Yes | Limited | Yes |
| Self-hosted | Yes | Yes | No | Yes | Yes |
| Cost | Free | Free | $29-99/mo | $299 one-time | Free |
| Community Size | 10.5K stars | 37K stars | N/A | N/A | 10.5K stars |
| Telegram Bot | Yes | Yes | Yes | Yes | Yes |
| Market Making Focus | Excellent | Basic | Good | Moderate | Excellent |
When to choose what:
- Hummingbot: Best for market making and CEX+DEX combo strategies
- Freqtrade: Best for ML-based directional strategies (learn more)
- 3Commas: Best for beginners who want SaaS with minimal setup
- Gunbot: Best for traders who want one-time payment and simple bots
Limitations and Honest Assessment #
Hummingbot is not a money-printing machine. Before deploying capital, understand these constraints:
Market making requires inventory. You need balances in both base and quote assets. Starting with less than $1,000 often results in fees eating most of your profits.
Latency matters. If your VPS is in Singapore and Binance’s matching engine is in Tokyo, you are at a disadvantage to co-located market makers. Consider HTStack for low-latency VPS options.
Strategy development has a learning curve. While the quick-start works in minutes, writing profitable custom strategies requires understanding order book dynamics, inventory risk, and adverse selection.
Gateway DEX trading incurs gas fees. On Ethereum mainnet, a single Uniswap trade can cost $5-20 in gas. Factor this into your spread calculations.
Not all exchanges are equal. Some connectors (Binance, Coinbase) are battle-tested. Others may have bugs or incomplete implementations — always test with paper trading first.
Frequently Asked Questions #
How much capital do I need to start with Hummingbot? #
For meaningful results on liquid pairs like BTC-USDT, a minimum of $2,000-5,000 is recommended. This covers both sides of the order book and absorbs fees. For testing, you can paper trade with $0 or run on low-cap pairs with $500 — but expect higher volatility risk.
Is Hummingbot safe to use with my exchange API keys? #
Hummingbot stores API keys locally in your Docker volume. The code is open-source and auditable. Best practices: create API keys with trading-only permissions (no withdrawals), IP-restrict them to your VPS, and never commit configs to Git. The project has been audited by multiple third-party security firms.
Can I run multiple strategies simultaneously? #
Yes. Launch multiple Docker containers, each with its own config directory and strategy file. A single container runs one strategy, but you can run 5-10 strategies on a $10/month VPS without issues. Resource usage scales linearly.
How does Hummingbot compare to paid bots like 3Commas? #
Hummingbot is free, open-source, and fully customizable — but requires technical setup. 3Commas is a SaaS with a friendly UI but costs $29-99/month and limits strategy customization. If you can write Python and manage a VPS, Hummingbot gives you more control at zero cost. If you want one-click setup, a paid service may be worth it.
What is the difference between Gateway and regular connectors? #
Regular connectors interact with centralized exchange APIs via REST/WebSocket. Hummingbot Gateway is a separate service that creates blockchain transactions for DEX protocols like Uniswap V3. Gateway requires you to manage your own wallet private keys and pay gas fees. It adds complexity but unlocks decentralized trading.
How do I update Hummingbot to a new version? #
# Pull the latest image
docker pull hummingbot/hummingbot:latest
# Stop and remove the old container
docker stop hummingbot && docker rm hummingbot
# Restart with the same volume mounts
docker run -it --name hummingbot \
--mount "type=bind,source=$(pwd)/hummingbot_files/hummingbot_conf,destination=/conf" \
--mount "type=bind,source=$(pwd)/hummingbot_files/hummingbot_logs,destination=/logs" \
hummingbot/hummingbot:latest
Your configurations persist in the mounted volumes.
Can I use Hummingbot for futures/perpetual trading? #
Yes. The Binance, Bybit, and OKX connectors support perpetual futures. Set the domain parameter to the futures subdomain and configure leverage carefully. Start with 1x-3x leverage until you understand the funding rate mechanics.
Conclusion: Start Trading Algorithmically Today #
Hummingbot is the most mature open-source market making framework available in 2026. With 50+ exchange connectors, Docker deployment in under 5 minutes, and full Python extensibility, it strikes the right balance between accessibility and power.
Your next steps:
- Register on Binance or OKX and create API keys
- Deploy Hummingbot with the Docker quick-start above
- Paper trade for 1 week before committing real capital
- Join the community — the Hummingbot Discord has 15,000+ active traders sharing strategies
- Explore AI-enhanced trading with Minara for ML-powered signal generation
Join our developer community on Telegram: t.me/dibi8developers — we discuss bot strategies, exchange integrations, and production deployments daily.
Sources and Further Reading #
- Hummingbot Official Documentation
- Hummingbot GitHub Repository
- Hummingbot Gateway Documentation
- Hummingbot Academy (Strategy Guides)
- Binance API Documentation
- Coinbase Advanced Trade API
- Uniswap V3 Documentation
Recommended Hosting & Infrastructure #
Before you deploy any of the tools above into production, you’ll need solid infrastructure. Two options dibi8 actually uses and recommends:
- DigitalOcean — $200 free credit for 60 days across 14+ global regions. The default option for indie devs running open-source AI tools.
- HTStack — Hong Kong VPS with low-latency access from mainland China. This is the same IDC that hosts dibi8.com — battle-tested in production.
Affiliate links — they don’t cost you extra and they help keep dibi8.com running.
Affiliate Disclosure #
This guide contains affiliate links for Binance, OKX, and Minara. If you register through these links, we receive a commission at no additional cost to you. This supports our open-source documentation efforts. We only recommend tools we actively use and test.
💬 Discussion