Получение и обработка биржевых данных по протоколу FIX

Индустрии
Финтех
Компетенции
Разработка
Технологии
.NET Core, Azure, Fabric, Redis, SQL Server, SignalR

Клиент


Наш заказчик — один из ведущих поставщиков данных в мире, предоставляющий сложное облачное решение для получения биржевой и финансовой информации, в том числе через протокол FIX (Financial Information eXchange).

Задачи


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

Решение


Специалисты компании Arcadia разработали новую платформу с нуля. Чтобы обеспечить масштабируемость и повысить производительность, мы задействовали принципы сервисно-ориентированной архитектуры. Чтобы выполнить работу качественно и в срок, мы решили использовать платформу .NET и язык C#.

Помимо поддержки нативных приложений на C#, выбор Microsoft Azure Cloud даёт возможность работать с экосистемой инструментов для сервисно-ориентированной архитектуры:

  • Service Fabric — упрощает развёртывание и управление приложением;
  • Redis — используется в качестве шины передачи сообщений для модели «поставщик-подписчик»;
  • Cosmos DB — экономичная, быстрая  и масштабируемая система хранения данных;
  • Event Hubs — экономичная и производительная платформа для потоковой передачи сообщений;
  • Application Insights — система передачи показателей телеметрии и сообщений об ошибках.

Основная сложность сбора рыночных данных из различных источников заключается в том, что данные передаются через разные протоколы. Чаще всего это FIX и его варианты: FAST (FIX Adapted for Streaming) и SBE (Simple Binary Encoding). Чтобы грамотно построить процесс обработки данных — приняв во внимание производительность и возможные задержки, — мы воспользовались проверенными библиотеками, работающими с большинством протоколов. В частности, это OnixS MDP для Чикагской биржи металлов (протокол SBE), Rapid Addition Cheetah для Лондонской биржи металлов (протокол FIX) и другие.

Platform architecture

С протоколом FIX также работает система передачи сообщений для модели «поставщик-подписчик», основанная на Redis и передающая рыночные данные на платформу. Однако из-за общеизвестных ограничений FIX мы воспользовались более производительным протоколом SBE.

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

Market Data Handler auto-testing design

Для клиентских приложений (веб-приложения, Excel и т.д.) система поддерживает REST API и SignalR. Сообщения можно также передавать и в формате SBE, однако это не очень удобно для конечного пользователя, поэтому они преобразовываются в более привычный формат.

Наши специалисты также частично отвечали за архитектуру, внедрение и развёртывание приложения.

Результат


Мы разработали топовое решение, способное собирать максимально возможное количество данных. В результате клиенты заказчика получают самые актуальные рыночные данные из различных источников со всего мира. Компания-заказчик заинтересована в дальнейшем развитии платформы, поэтому наше сотрудничество продолжится.