Разработка HFT-алгоритма (высокочастотная торговля)
High-Frequency Trading в крипте — это не то же самое, что HFT на традиционных рынках. Нет co-location рядом с биржевым matching engine, нет прямых FIX-подключений с задержкой в микросекунды. Но принципы остаются: скорость исполнения, высокий объём сделок, удержание позиций от миллисекунд до минут, прибыль на малых движениях с большим плечом.
Стратегии HFT в крипте
Latency arbitrage — использование разницы в задержках между участниками рынка. Если ваш WebSocket получает обновление order book быстрее, чем другие участники успевают реагировать — есть окно для торговли.
Statistical arbitrage — торговля на временных отклонениях в ценовых соотношениях между коррелированными активами. Например, BTC spot vs BTC perpetual futures.
Market making — постоянное выставление bid/ask ордеров на обеих сторонах. Прибыль от bid-ask спреда за вычетом inventory risk.
Order book imbalance — анализ дисбаланса между bid и ask стороной стакана. Значительный перевес на одной стороне предсказывает краткосрочное движение цены.
Momentum ignition — быстрый вход при обнаружении начала краткосрочного тренда на тик-данных.
Архитектура low-latency системы
Ключевой принцип: каждый компонент оптимизируется под минимальную задержку.
Сетевой уровень:
- Co-location (VPS в том же датацентре, что и биржа): AWS Tokyo для Binance, AWS Frankfurt для Kraken
- Прямое WebSocket подключение без промежуточных прокси
- Оптимизация TCP: TCP_NODELAY, увеличенные SO_SNDBUF/SO_RCVBUF буферы
- Keep-alive соединения, минимизация reconnect'ов
Язык и runtime:
- C++ — максимальная производительность, sub-millisecond latency
- Rust — близко к C++ по производительности, более безопасный
- Python + Cython/NumPy — приемлемо для стратегий с задержкой > 10ms
- Java — используется в традиционном HFT, в крипте менее популярен
Order book management:
// Инкрементальное обновление order book
void OrderBook::update(Side side, Price price, Quantity qty) {
auto& book = (side == Side::Bid) ? bids_ : asks_;
if (qty == 0) {
book.erase(price);
} else {
book[price] = qty;
}
best_bid_ask_cache_dirty_ = true;
}
Полная копия order book в памяти, обновляется через WebSocket diff stream. Никаких REST-запросов в hot path.
WebSocket стек для low-latency
Binance:
-
wss://stream.binance.com:9443/ws/btcusdt@depth@100ms— обновления каждые 100ms -
wss://stream.binance.com:9443/ws/btcusdt@aggTrade— агрегированные сделки -
wss://stream.binance.com:9443/ws/btcusdt@bookTicker— лучший bid/ask в реальном времени
Bybit:
-
wss://stream.bybit.com/v5/public/linear— perpetual orderbook (depth.1, depth.50, depth.200)
Для минимальной задержки — подписка на bookTicker (только лучший bid/ask) вместо полного стакана. Это уменьшает объём данных и время парсинга.
Стратегия: Order Book Imbalance
def calculate_imbalance(orderbook, n_levels=5):
bid_volume = sum(qty for _, qty in orderbook['bids'][:n_levels])
ask_volume = sum(qty for _, qty in orderbook['asks'][:n_levels])
total = bid_volume + ask_volume
if total == 0:
return 0
return (bid_volume - ask_volume) / total # [-1, 1]
Значение > 0.3 → покупательное давление, вероятен рост в следующие несколько секунд. Значение < -0.3 → продажное давление.
Сигнал используется для краткосрочного входа с tight stop-loss (0.05–0.1% от цены).
Execution и risk management
Ордерные типы: для HFT используются limit orders (постановщик) и иногда market orders (снятие). Limit orders экономят на fees (maker vs taker).
Position limits: максимальный размер позиции, максимальное количество открытых позиций, max drawdown за session.
Circuit breakers: если за N минут потеря превышает M% — алгоритм останавливается и требует ручного вмешательства.
Latency monitoring: логирование времени каждого шага pipeline — от получения рыночных данных до отправки ордера. P99 latency должен быть ниже определённого порога (например, 50ms).
Backtesting HFT
Backtesting HFT стратегий требует tick-данных (или агрегированных на уровне сделок), а не OHLCV. Симуляция order book на исторических данных, учёт latency, slippage и fees.
Проблема overfitting: HFT стратегии особенно склонны к переобучению. Walk-forward analysis и out-of-sample тестирование обязательны.
Инфраструктура backtesting: nautilus_trader (Python/Rust) или backtrader для менее требовательных стратегий. Tick-данные хранятся в Parquet форматах, ClickHouse для быстрых агрегаций.
Что мы разрабатываем
Low-latency систему для HFT криптостратегий: WebSocket-клиент с инкрементальным обновлением order book, выбранные стратегии (OBI, statistical arb, market making), backtesting на тик-данных, риск-менеджмент с circuit breakers, мониторинг latency и производительности в реальном времени.







