Розробка алгоритму крос-бірж арбітражу

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

Basis арбітраж: купуємо BTC spot, продаємо BTC futures (perpetual або delivery). Прибуток від спреду між spot та futures (basis).

Funding rate арбітраж: купуємо spot, відкриваємо short perpetual на біржі з високим позитивним funding rate. Отримуємо funding кожні 8 годин, хеджуючи ринковий ризик.

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

Головне обмеження: затримка переводів

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

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

Binance баланс: 5 BTC + 225,000 USDT
Kraken баланс: 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 на комісіях, заробили $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: назва -> 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']
                
                # Враховуємо комісії
                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,
                        'profit_pct': profit_pct
                    })
        
        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)

Risk management

Max trade size: не більше X% від мінімального балансу на біржі Circuit breaker: P&L < -0.5% за сесію → стоп Stale price detection: не торгуємо якщо дані від біржи > 500ms застарілі

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