Розробка ліквідності біржи (market making)
Ліквідність — це готовність ринку виконати ордер без значної зміни ціни. Біржа без ліквідності мертва: широкий спред, глибокий impact, уход трейдерів до конкурентів. Market making — це мистецтво та інженерія одночасно: постійно утримуйте двосторонні котировки, хеджуйте ризики та не втратьте гроші.
Що таке market making
Market maker виставляє одночасно bid (покупка) та ask (продажа) ордери. Його заробіток — спред між ними. При торгівлі проти нього він бере на себе inventory risk (позицію в активі).
Market Maker Book для BTC/USDT:
Ask $50,100 │ 0.5 BTC
Ask $50,050 │ 0.3 BTC
Mid $50,000 │
Bid $49,950 │ 0.3 BTC
Bid $49,900 │ 0.5 BTC
Spread = Ask_best - Bid_best = $50,050 - $49,950 = $100 (0.2%)
Архітектура market making бота
Базова стратегія
class MarketMaker:
def __init__(self, symbol: str, config: MMConfig):
self.symbol = symbol
self.spread_bps = config.spread_bps # половина спреду в bps
self.order_size_base = config.order_size # базовий розмір ордера
self.num_layers = config.num_layers # глибина котирування
self.layer_spacing_bps = config.layer_spacing # расстояние між рівнями
async def compute_quotes(self, mid_price: float) -> list[Quote]:
quotes = []
inventory_skew = self.calculate_inventory_skew()
for i in range(1, self.num_layers + 1):
# Зміщуємо котировки з урахуванням інвентарю
bid_offset_bps = self.spread_bps * i + inventory_skew
ask_offset_bps = self.spread_bps * i - inventory_skew
bid_price = mid_price * (1 - bid_offset_bps / 10000)
ask_price = mid_price * (1 + ask_offset_bps / 10000)
# Розмір ордера зменшується на дальніх рівнях
size = self.order_size_base / i
quotes.append(Quote('buy', bid_price, size))
quotes.append(Quote('sell', ask_price, size))
return quotes
def calculate_inventory_skew(self) -> float:
"""
Якщо у нас накопився надлишок BTC (long inventory) —
зміщуємо котировки вниз: агресивніший ask, менш агресивний bid.
Це спонукає ринок купити у нас BTC, відновлюючи баланс.
"""
target_inventory = 0 # нейтральна позиція
current_inventory = self.get_current_inventory()
inventory_deviation = current_inventory - target_inventory
# Skew пропорціональний відхиленню від нейтралі
skew = inventory_deviation * self.inventory_skew_factor
return max(-self.max_skew_bps, min(self.max_skew_bps, skew))
Хеджування (Delta Hedging)
Market maker на внутрішній біржі хеджує позицію на зовнішній. Якщо клієнт купив у нас 1 BTC — ми купуємо 1 BTC на Binance для нейтралізації delta:
async def hedge_trade(self, trade: InternalTrade):
"""Хеджуємо виконану угоду на зовнішній біржі"""
hedge_side = 'buy' if trade.side == 'sell' else 'sell'
# trade.side = що зробив клієнт. Якщо клієнт купив — ми продали → хеджуємо покупкою
await self.hedge_exchange.market_order(
symbol=self.symbol,
side=hedge_side,
quantity=trade.quantity
)
Execution Risk: між нашою угодою з клієнтом та хеджем на зовнішній біржі проходить час (1-100ms). Ціна може зміниться. Це execution risk або hedging slippage — реальний ризик P&L.
Управління інвентарем
Ключова метрика: inventory skew — наскільки поточна позиція відхиляється від цілі (зазвичай нейтральна).
При перевищенні ліміту інвентарю: стратегія агресивно зміщує котировки для зниження позиції, в крайньому випадку — примусовий market ордер на зовнішній біржі.
Визначення спреду
Компоненти спреду
Мінімально розумний спред складається з:
Spread = Cost of carry + Expected adverse selection + Profit margin
Adverse selection — найскладніша частина. Якщо трейдер торгує проти вас з інсайдерською інформацією, ви завжди програєте. В крипто, adverse selection вище при високій волатильності, перед великими подіями.
Liquidity Provider Program
Стимулювання зовнішніх market makers
Біржа може залучати зовнішніх market makers через програму fee rebate:
| Tier | Maker обсяг/30d | Maker fee | Taker fee |
|---|---|---|---|
| Standard | < $1M | 0.10% | 0.15% |
| Market Maker 1 | $1M+ | -0.01% (rebate) | 0.10% |
| Market Maker 2 | $10M+ | -0.02% (rebate) | 0.08% |
| Market Maker 3 | $100M+ | -0.03% (rebate) | 0.06% |
Негативний maker fee (rebate) означає, що біржа платить market maker-у за кожний виставлений та виконаний ордер. Стандартна практика для залучення професійних liquidity providers.
On-chain AMM Liquidity
Для DEX або гібридних платформ, ліквідність надається через LP позиції в AMM пулах.
| Параметр | CEX Market Making | AMM LP |
|---|---|---|
| Контроль над ціною | Повний | Алгоритмічний |
| Impermanent loss | Нема (хеджується) | Есть |
| Вимоги до інфраструктури | Бот + API | Просто транзакція |
| Управління ризиком | Активне | Пасивне |
| Доходність | Вища (активна) | Нижча (пасивна) |
Для серйозного рринкового обсягу CEX market making несопоставимо ефективніше AMM LP. AMM працює як backstop ліквідність та для long-tail токенів без професійних MM.







