Розробка алгоритму smart order routing

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка алгоритму smart order routing
Складний
від 2 тижнів до 3 місяців
Часті запитання

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

Етапи блокчейн-розробки

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

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

Розробка алгоритму smart order routing

Smart Order Routing (SOR) — алгоритм, який автоматично визначає оптимальну площадку та спосіб виконання ордера серед кількох доступних місць. Мета: мінімізувати вартість виконання (ціна + комісії + slippage) у межах часових обмежень.

Завдання SOR

Потрібно купити 50 BTC. Доступні:

  • Binance: найкращий ask 45,100, доступно 12 BTC
  • Bybit: найкращий ask 45,095, доступно 8 BTC
  • OKX: найкращий ask 45,102, доступно 25 BTC
  • Kraken: найкращий ask 45,098, доступно 10 BTC

Наївний підхід: взяти найкращу ціну (Bybit). Але там тільки 8 BTC. Потрібно оптимально розподілити 50 BTC по кількох біржах.

Алгоритм оптимального розподілу

Sweeping liquidity по рівням: будуємо об'єднаний стакан з усіх бірж, беремо найкращі ціни починаючи з найдешевших.

def merge_orderbooks(orderbooks_dict):
    """
    Об'єднуємо стакани кількох бірж в єдиний
    """
    merged_asks = []
    for exchange, ob in orderbooks_dict.items():
        for price, qty in ob['asks']:
            # Враховуємо комісії біржи
            adjusted_price = price * (1 + fees[exchange])
            merged_asks.append({
                'exchange': exchange,
                'price': price,
                'adjusted_price': adjusted_price,
                'qty': qty
            })
    
    return sorted(merged_asks, key=lambda x: x['adjusted_price'])

def optimal_allocation(merged_asks, target_qty):
    allocation = {}
    remaining = target_qty
    
    for level in merged_asks:
        if remaining <= 0:
            break
        
        fill_qty = min(level['qty'], remaining)
        exchange = level['exchange']
        
        allocation[exchange] = allocation.get(exchange, 0) + fill_qty
        remaining -= fill_qty
    
    return allocation

Облік транзакційних видатків

Ціна виконання — не єдина складова вартості:

Складова Описання
Exchange fee Taker комісія на кожній біржі (0.03–0.07%)
Withdrawal fee При переводі між біржами (якщо потрібно)
Slippage Різниця між найкращою ціною та ціною виконання
Funding rate Для perpetual позицій
Network latency Швидше виконання на ближче розташованих біржах

Adjusted cost model:

Total Cost = Σ(qty_i × price_i × (1 + fee_i)) + slippage_estimate_i

Захист від latency arbitrage

Якщо SOR одночасно виставляє ордери на кількох біржах, а ціна рухається між відправленнями ордерів — одна біржа може мати застару ціну. Це latency arb ризик.

Mitigation:

  • Одночасна відправка ордерів на всі біржі (parallel execution)
  • Timeout для кожного ордера
  • Fallback: якщо ордер на одній біржі не виконаний — перерозподіляємо на інші

Управління балансами

SOR вимагає наявності коштів на кожній біржі. Автоматичне управління балансами:

  • Моніторинг балансів на всіх біржах
  • Автоматичне поповнення через transfers (з урахуванням часу підтвердження)
  • Резервування мінімального балансу на кожній біржі

Агрегатор ліквідності

Для DEX ринків SOR реалізований у протоколах 1inch, Paraswap, Cowswap — вони агрегують ліквідність з кількох DEX. Для CEX аналог — власна реалізація, об'єднуюча ліквідність кількох централізованих бірж.

DeFi SOR: смарт-контракт розбиває своп на кілька частин та направляє по найкращим маршрутам через Uniswap v3, Curve, Balancer. 1inch v5 використовує саме цей підхід.

Моніторинг та benchmarking

Execution quality score: фактична середня ціна vs теоретична (якби взяли найкращу ціну на одній біржі). SOR повинен давати економію.

Fill rate: відсоток виконаного обсягу до запрошеного.

Latency breakdown: час на кожному етапі — агрегація стаканів, розрахунок allocation, відправка ордерів.

Технічний стек

Python (asyncio для паралельних запитів до бірж), CCXT Pro (WebSocket для realtime стаканів), Redis для кешування актуальних стаканів, PostgreSQL для execution logs. API-інтерфейс для інтеграції з торговельними системами та ботами.

Розробляємо SOR систему з підтримкою 5–10 крупних CEX, обліком комісій та slippage, паралельним виконанням та детальною execution аналітикою.