Разработка алгоритма cross-exchange арбитража

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка алгоритма cross-exchange арбитража
Сложный
от 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

Разработка алгоритма cross-exchange арбитража

Cross-exchange арбитраж — покупка актива на одной бирже и продажа на другой, где цена выше. Теоретически безрисковая прибыль. На практике — гонка с тысячами других арбитражных ботов, и выигрывают те, кто быстрее и умнее управляет балансами.

Типы cross-exchange арбитража

Spot арбитраж: покупаем BTC на Binance по $45,000, продаём на Kraken по $45,050. Прибыль $50 минус fees и transfer costs.

Basis арбитраж: покупаем BTC spot, продаём BTC futures (perpetual или delivery). Прибыль от spread между spot и futures (basis).

Funding rate арбитраж: покупаем spot, открываем short perpetual на бирже с высоким положительным funding rate. Получаем funding каждые 8 часов, хеджируя рыночный риск.

Stablecoin арбитраж: разные stablecoin пары (USDT/USDC) торгуются по разным ценам на разных биржах.

Главное ограничение: задержка переводов

Перевод BTC между биржами занимает 10–60 минут. За это время спред закроется. Поэтому реальный cross-exchange арбитраж работает только при наличии предварительно размещённых балансов на обеих биржах.

Решение: поддерживаем балансы на обеих биржах одновременно. Арбитраж происходит мгновенно (два ордера на двух биржах параллельно). Балансы выравниваются позже в фоновом режиме.

Binance balance: 5 BTC + 225,000 USDT
Kraken balance: 5 BTC + 225,000 USDT

Арбитражная возможность: BTC дешевле на Binance на $80
→ Купить 1 BTC на Binance (225,000 → 179,950 USDT, BTC: 5 → 6)
→ Продать 1 BTC на Kraken (BTC: 5 → 4, USDT: 225,000 → 270,030 USDT)

После: Binance: 6 BTC + 179,950 USDT | Kraken: 4 BTC + 270,030 USDT
Суммарно: 10 BTC + 449,980 USDT (было 10 BTC + 450,000) 
Потеряли $20 на fees, заработали $80 gross → $60 net profit

Алгоритм поиска арбитражных возможностей

import asyncio
from decimal import Decimal

class CrossExchangeArbitrage:
    def __init__(self, exchanges, min_profit_pct=0.05):
        self.exchanges = exchanges  # dict: name -> ccxt exchange
        self.min_profit = min_profit_pct / 100
    
    async def scan_opportunities(self, symbol):
        # Параллельно запрашиваем лучшие цены со всех бирж
        tasks = {
            name: asyncio.create_task(ex.fetch_ticker(symbol))
            for name, ex in self.exchanges.items()
        }
        tickers = {name: await task for name, task in tasks.items()}
        
        opportunities = []
        exchanges = list(tickers.keys())
        
        for i, buy_exchange in enumerate(exchanges):
            for sell_exchange in exchanges[i+1:]:
                buy_price = tickers[buy_exchange]['ask']
                sell_price = tickers[sell_exchange]['bid']
                
                # Учитываем fees
                buy_cost = buy_price * (1 + self.get_fee(buy_exchange, 'taker'))
                sell_revenue = sell_price * (1 - self.get_fee(sell_exchange, 'taker'))
                
                profit_pct = (sell_revenue - buy_cost) / buy_cost
                
                if profit_pct > self.min_profit:
                    opportunities.append({
                        'buy_exchange': buy_exchange,
                        'sell_exchange': sell_exchange,
                        'buy_price': buy_price,
                        'sell_price': sell_price,
                        'profit_pct': profit_pct
                    })
                
                # И обратное направление
                buy_price2 = tickers[sell_exchange]['ask']
                sell_price2 = tickers[buy_exchange]['bid']
                buy_cost2 = buy_price2 * (1 + self.get_fee(sell_exchange, 'taker'))
                sell_revenue2 = sell_price2 * (1 - self.get_fee(buy_exchange, 'taker'))
                profit_pct2 = (sell_revenue2 - buy_cost2) / buy_cost2
                
                if profit_pct2 > self.min_profit:
                    opportunities.append({
                        'buy_exchange': sell_exchange,
                        'sell_exchange': buy_exchange,
                        'profit_pct': profit_pct2
                    })
        
        return sorted(opportunities, key=lambda x: x['profit_pct'], reverse=True)

Исполнение: параллельные ордера

Для минимальной latency оба ордера отправляются одновременно:

async def execute_arbitrage(self, opportunity, qty):
    buy_task = asyncio.create_task(
        self.exchanges[opportunity['buy_exchange']].create_market_buy_order(
            symbol, qty
        )
    )
    sell_task = asyncio.create_task(
        self.exchanges[opportunity['sell_exchange']].create_market_sell_order(
            symbol, qty
        )
    )
    buy_result, sell_result = await asyncio.gather(buy_task, sell_task)
    return buy_result, sell_result

Риск частичного исполнения: один из ордеров мог не исполниться или исполниться частично. Нужен механизм выравнивания позиций.

Управление балансами

Автоматическая ребалансировка между биржами:

  • Мониторинг балансов каждые N минут
  • При отклонении баланса > 20% от целевого → инициировать transfer
  • Transfer проходит в фоне, не блокируя торговлю
  • Мониторинг подтверждений транзакции

Latency оптимизация

  • VPS в датацентрах биржи: AWS Tokyo для Binance/Bybit, AWS Frankfurt для Kraken/Bitfinex
  • Ping 1–5ms до биржевых серверов
  • Предварительная аутентификация и поддержание соединений
  • Кэш балансов в памяти (обновляется через WebSocket)

Риск-менеджмент

Max trade size: не более X% от минимального баланса на бирже Circuit breaker: при P&L < -0.5% за сессию — стоп Stale price detection: не торгуем если данные от биржи > 500ms устарели

Разрабатываем полноценную arb систему с параллельным мониторингом 5–10 бирж, управлением балансами и детальным P&L tracking.