Розробка системи ліквідності біржі (market making)

Без ліквідності біржа мертва: широкий спред, глибокий price impact, відхід трейдерів до конкурентів. Розглянемо типову задачу: біржа запускає пару BTC/USDT, але спред 50 bps при обсязі $1000. Трейдери йдуть на Binance. Наше рішення — розгорнути бота з динамічним спредом 10 bps і глибиною $50k. Резул

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Без ліквідності біржа мертва: широкий спред, глибокий price impact, відхід трейдерів до конкурентів. Розглянемо типову задачу: біржа запускає пару BTC/USDT, але спред 50 bps при обсязі $1000. Трейдери йдуть на Binance. Наше рішення — розгорнути бота з динамічним спредом 10 bps і глибиною $50k. Результат: спред знижується до 15 bps, обсяг зростає в 5 разів. Ми розробляємо системи маркет-мейкінгу під ключ — від стратегії до продакшену. Досвід команди — 10+ проєктів у DeFi та CeFi. Розробка системи ліквідності біржі (market making) потребує глибокого розуміння мікроструктури ринку та управління ризиками.

Чому динамічний спред критичний для ліквідності?

Статичний спред не адаптується до волатильності та подій. Результат — або збиток при високій волатильності, або втрата конкурентоспроможності. Ми використовуємо динамічний спред, який розширюється при зростанні волатильності та перед важливими подіями (FED, халвінги). Це дозволяє зберігати рентабельність і забезпечувати ліквідність у будь-якій ситуації.

Як market making вирішує проблему ліквідності?

Динамічний спред проти статики — розробка системи ліквідності

Статичний спред не адаптується до волатильності та подій. Результат — або збиток при високій волатильності, або втрата конкурентоспроможності. Ми використовуємо динамічний спред, який розширюється при зростанні волатильності та перед важливими подіями (FED, халвінги).

Управління inventory risk

Без управління інвентарем market maker може накопичити величезну позицію і втратити гроші при розвороті ринку. Наш бот автоматично розраховує inventory skew і зміщує котирування для повернення до нейтральної позиції. При перевищенні лімітів — примусовий market ордер на зовнішній біржі.

Execution risk при хеджуванні

Затримка між угодою клієнта та хеджем на Binance (1-100 мс) створює ризик прослизання. Ми мінімізуємо його через low-latency API та колокацію серверів.

Як влаштована архітектура бота?

Базова архітектура бота

class MarketMaker: def __init__(self, symbol: str, config: MMConfig): self.symbol = symbol self.spread_bps = config.spread_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: target_inventory = 0 current_inventory = self.get_current_inventory() inventory_deviation = current_inventory - target_inventory skew = inventory_deviation * self.inventory_skew_factor return max(-self.max_skew_bps, min(self.max_skew_bps, skew)) 

Хеджування

async def hedge_trade(self, trade: InternalTrade): hedge_side = 'buy' if trade.side == 'sell' else 'sell' await self.hedge_exchange.market_order( symbol=self.symbol, side=hedge_side, quantity=trade.quantity ) 

Inventory management

Ключова метрика — inventory skew. Ми відстежуємо позицію в реальному часі та зміщуємо котирування для повернення до нейтралі.

def get_inventory_metrics(self) -> dict: current_pos = self.get_position_btc() pos_value_usd = current_pos * self.get_mid_price() return { "position_btc": current_pos, "position_usd": pos_value_usd, "max_inventory_usd": self.config.max_inventory_usd, "utilization": abs(pos_value_usd) / self.config.max_inventory_usd, "pnl_unrealized": self.calculate_unrealized_pnl(current_pos) } 

Що таке execution risk і як його мінімізувати?

Execution risk виникає через затримку між угодою клієнта та хеджем. Чим більша затримка, тим вища ймовірність, що ціна на зовнішній біржі зміниться. Ми знижуємо цей ризик через low-latency API та колокацію серверів поруч із біржею. У критичних випадках використовуємо фіксований спред для покриття можливого прослизання.

Як розраховується динамічний спред?

Спред розраховується як сума вартості переносу, очікуваного adverse selection та маржі. Adverse selection — імовірність торгувати проти інформованого трейдера. У криптовалюті вона вища при високій волатильності та перед великими подіями.

def calculate_dynamic_spread(self) -> float: base_spread = self.config.base_spread_bps volatility = self.get_realized_volatility_1h() vol_multiplier = max(1.0, volatility / self.baseline_volatility) event_factor = 1.5 if self.is_event_window() else 1.0 hedge_spread = self.get_hedge_exchange_spread() hedge_factor = max(1.0, hedge_spread / self.baseline_hedge_spread) return base_spread * vol_multiplier * event_factor * hedge_factor 

Liquidity provider програма

Біржа може залучати зовнішніх 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 означає, що біржа платить market maker-у за кожен виконаний ордер. Це стандартна практика.

Performance requirements

def check_mm_performance(self, mm_id: str, period_minutes: int = 60) -> MMScore: quotes = self.db.get_mm_quotes(mm_id, period_minutes) total_seconds = period_minutes * 60 active_seconds = sum(q.duration for q in quotes if q.has_both_sides) uptime = active_seconds / total_seconds avg_spread = statistics.mean(q.spread_bps for q in quotes) avg_depth_usd = statistics.mean(q.total_depth_usd for q in quotes) return MMScore( uptime=uptime, avg_spread_bps=avg_spread, avg_depth_usd=avg_depth_usd ) 

On-chain AMM liquidity

Для DEX ліквідність надається через LP-позиції. Порівняння:

Параметр CEX Market Making AMM LP
Контроль над ціною Повний Алгоритмічний
Impermanent loss Ні (хеджується) Є
Вимоги до інфраструктури Бот + API Просто транзакція
Управління ризиком Активне Пасивне
Дохідність Вища Нижча

Для серйозного обсягу CEX market making ефективніший. AMM підходить як backstop ліквідність для long-tail токенів.

Процес роботи

  1. Аналіз ліквідності та конкурентів
  2. Проектування стратегії з урахуванням ризиків
  3. Розробка бота на Python/Solidity + Foundry
  4. Тестування на історичних даних та симуляція
  5. Деплой на продакшен та моніторинг

Терміни: від 2 тижнів до 2 місяців залежно від складності. Вартість розраховується індивідуально.

Що входить у роботу?

  • Архітектура та документація стратегії
  • Вихідний код бота з інтеграцією біржі
  • Налаштування хеджування та inventory management
  • Тестування та оптимізація
  • Підтримка та доопрацювання протягом гарантійного періоду

Гарантуємо якість: сертифіковані інженери, досвід понад 10 успішних проєктів. Зв'яжіться з нами для оцінки вашого проєкту. Замовте розробку системи маркет-мейкінгу під ключ — отримайте консультацію по вашому проєкту.

Wikipedia: Market maker