Разработка алгоритма 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) — алгоритм, который автоматически определяет оптимальное место и способ исполнения ордера среди нескольких доступных площадок. Цель: минимизировать стоимость исполнения (цена + fees + 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']:
            # Учитываем fees биржи
            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 fee на каждой бирже (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 protection

Если 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, учётом fees и slippage, параллельным исполнением и детальной execution аналитикой.