Top.Mail.Ru

Разработка low-latency платформы для трейдинга криптовалют

Продукт:

К нам обратился небольшой трейдинговый фонд. Основные направления работы: короткие арбитражные стратегии – тут нужна максимальная скорость, чем быстрее работает система, тем больше заработаем. Среднесрочные стратегии – за счет анализа рынка и окружения получать профит предугадывая движения цен, тут скорость нужна чтобы терять как можно меньше если не угадали.

Задача:

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

Необходимо было разработать трейдинговую платформу, обеспечивающую максимальную скорость работы:
  • для коротких арбитражных стратегий, где результат напрямую зависит от скорости исполнения сделок;
  • для среднесрочных стратегий, где прибыль достигается за счет анализа рынка и предугадывания движений цен. Высокая скорость позволяет минимизировать потери при неверных прогнозах.

Итоги:

Реализовали платформу и оптимизировали стоимость и скорость взаимодействия с биржами, суммарное время обработки сообщения сократилось ~500 мс до 12 мс.

Первые прототипы платформы показывали среднее время доставки сообщения от коннектора до стратегии в 350 мс, на завершающем этапе этот же процесс укладывался в 2.5 мс на 99-ом перцентиле. Подготовка и отправка сообщения в биржу также занимала в среднем 150 мс, а по итогам оптимизации этот процесс удалось уложить в 3 мс на 99-ом перцентиле.

Период работы:

Апрель 2019 — Май 2022

Проектирование и разработка первого прототипа заняла 4 месяца, далее в течение всего проекта система хранения дорабатывалась и оптимизировалась.


Бэктест или систему исторического тестирования оптимизировали в течение года. В дальнейшем сконцентрировать на оптимизации торговой платформы реального времени.

Первый прототип платформы был спроектирован и разработан за 6 месяцев. Получены первые показатели по скорости и платформа признана рабочей.

Далее в течение 3-х лет платформу дорабатывали и оптимизировали, ускоряя процесс сбора биржевых данных, время обработки стратегии и скорость доставки команд до биржи.

Команда:

На старте проектированием и разработкой прототипа занималось 4 человека. К моменту завершения работы суммарно в команде было 25 человек.

Технологии:

  • Java 17 и 21 как основной язык платформы;
  • Disruptor / Fork-Join Pool - в качестве пула потоков;
  • Java Microbenchmark Harness - для доказательства гипотез о том что X быстрее чем Y;
  • Java-async-profiler - для сбора информации о производительности участков в системе в условиях продакшена;
  • Non-blocking Concurrent Collections - для промежуточного хранения данных в платформе; 
  • Off-heap memory API - для хранения биржевого стакана и быстрого доступа к нему;
  • Project Reactor - для изначального дизайна системы, впоследствии отказались из-за высоких накладных расходов на обслуживание реактивного стека и back-pressure которые нам не нужны;
  • Sockets - чтение и оптимизация потока биржевых данных;
  • Kafka - логирование состояния стратегии, сбор данных из биржи для истории;
  • Clickhouse - хранение исторических данных;
  • Стек - micrometer, prometheus и grafana - для визуального представления статистики о работе приложения;
  • Elasticsearch, logstash, kibana - для удобства работы с логами платформы и стратегий с разделением по правам доступа.

Решение:

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

Спроектировали архитектуру быстрой системы исторического тестирования стратегий и реализовали прототип бэктеста, оптимизировали скорость тестирования стратегий.

Спроектировали быструю и прозрачную платформу для взаимодействия с биржами в географических приближенных к биржам локациях, а также инфраструктуру для оптимизации времени получения и отправки сообщений.

Реализовали платформу и  оптимизировали стоимость и скорость взаимодействия с биржами по мере развития проекта.
В отличии от классических приложений, где все оптимизируют throughput приложения, тут мы постоянно работали в ортогональном направлении и постоянно работали над latency, доказывая бенчмарками и статистикой с боевых стратегий, что платформа стала быстрее.
Семён Бондарев, Java-разработчик Software Cats
Java
Low latency
Performance optimization
Обсудить проект _
Если у вас есть ИТ-проблема , оставьте свои контакты, и мы поможем правительству спланировать ее решение . Обещаем не рассылать спам.
hello@softwarecats.dev
Новосибирск, ул. Демакова
23/5, оф.308
Контакты _

Еще про наши проекты: