Интеграция с Hummingbot
Hummingbot — open source фреймворк специально для маркет-мейкинга и стратегий ликвидности. В отличие от Backtrader или Freqtrade, ориентированных на direction trading, Hummingbot создан для bid-ask спреда: выставления двусторонних котировок и управления inventory.
Ключевые стратегии Hummingbot
Pure Market Making — непрерывное выставление bid и ask вокруг mid-price. Прибыль = спред минус inventory risk.
Cross-Exchange Market Making — котируем на одной бирже, хеджируем на другой. Зарабатываем на спреде минус стоимость хеджа.
Perpetual Market Making — маркет-мейкинг на фьючерсных рынках с управлением funding rate.
AMM Arbitrage — арбитраж между DEX (Uniswap, Curve) и CEX.
Установка
# Docker установка (рекомендуется)
git clone https://github.com/hummingbot/hummingbot.git
cd hummingbot
docker compose up -d
# Или через pip
pip install hummingbot
Кастомная стратегия
from hummingbot.strategy.script_strategy_base import ScriptStrategyBase
from hummingbot.core.data_type.common import OrderType, TradeType
from decimal import Decimal
class SimpleMarketMaker(ScriptStrategyBase):
"""Простой маркет-мейкер с фиксированным спредом"""
trading_pair = "BTC-USDT"
exchange = "binance"
# Параметры
bid_spread = Decimal("0.001") # 0.1% под mid-price
ask_spread = Decimal("0.001") # 0.1% над mid-price
order_amount = Decimal("0.001") # BTC на каждую сторону
refresh_time = 30 # секунд
markets = {exchange: {trading_pair}}
def on_tick(self):
if self.current_timestamp - self.last_refresh < self.refresh_time:
return
self.cancel_all_orders()
mid_price = self.connectors[self.exchange].get_mid_price(self.trading_pair)
if not mid_price:
return
bid_price = mid_price * (1 - self.bid_spread)
ask_price = mid_price * (1 + self.ask_spread)
self.buy(
connector_name=self.exchange,
trading_pair=self.trading_pair,
amount=self.order_amount,
order_type=OrderType.LIMIT,
price=bid_price,
)
self.sell(
connector_name=self.exchange,
trading_pair=self.trading_pair,
amount=self.order_amount,
order_type=OrderType.LIMIT,
price=ask_price,
)
self.last_refresh = self.current_timestamp
Inventory Management
Главный риск маркет-мейкинга — накопление inventory в одну сторону при направленном движении рынка:
class InventoryAwareMarketMaker(ScriptStrategyBase):
target_base_pct = Decimal("0.5") # целевые 50% в base asset
max_shift_spread = Decimal("0.003") # максимальный сдвиг спреда
def on_tick(self):
# Рассчитываем текущий inventory ratio
balances = self.connectors[self.exchange].get_all_balances()
base_balance = balances.get("BTC", Decimal(0))
quote_balance = balances.get("USDT", Decimal(0))
mid_price = self.connectors[self.exchange].get_mid_price(self.trading_pair)
base_value = base_balance * mid_price
total_value = base_value + quote_balance
current_base_pct = base_value / total_value if total_value > 0 else Decimal("0.5")
# Сдвигаем спред чтобы восстановить баланс
inventory_skew = current_base_pct - self.target_base_pct
shift = inventory_skew * self.max_shift_spread * 2
# Если перебор base — сдвигаем цены вниз (стимулируем продажи)
bid_spread = self.base_spread - shift
ask_spread = self.base_spread - shift # цена продажи ниже = больше продаж
Конфигурация через YAML
# conf/strategies/pure_market_making.yml
strategy: pure_market_making
exchange: binance
market: BTC-USDT
bid_spread: 0.1 # %
ask_spread: 0.1 # %
minimum_spread: -100 # допускаем отрицательный спред
order_refresh_time: 30 # секунд
max_order_age: 1800 # 30 минут
order_amount: 0.001
filled_order_delay: 60
inventory_skew_enabled: true
inventory_target_base_pct: 50
inventory_range_multiplier: 1.0
Hummingbot — стандарт де-факто для крипто маркет-мейкинга в open source пространстве. Поддерживает 40+ бирж (CEX и DEX), активно развивается, имеет большое сообщество и certification program для маркет-мейкеров.







