Способы передачи финансовых данных #2: протокол FAST

imageВ одном из прошлых топиков мы рассмотрели протокол FIX, который был создан для передачи финансовой информации и автоматизации коммуникаций на фондовом рынке. Однако этот протокол оказался не самым идеальным инструментом в условиях все увеличивающихся объёмов финансовых данных, поэтому в качестве его развития был создан новый стандарт — протокол FAST (FIX Adapted for STreaming). Сегодня мы поговорим об этой технологии.

ИсторияВ ноябре 2004 года тогдашний CEO финансового холдинга Acrhipelago Holding Майк Кормак на конференции сообщества FIX под названием FPL (FIX Protocol Limited) в Нью-Йорке заявил о том, что текущая версия протокола не справляется с возросшим объёмом финансовой информации, генерируемой на фондовом рынке. При передачи больших объёмов данных с помощью FIX возникали значительные задержки в их обработке, что приносило трейдерам убытки и лишало их возможности разработки действующих торговых стратегий.Классический формат передачи сообщений Tag=Value, использовавшийся в FIX, оказался слишком громоздким для его быстрой обработки. Вскоре после этого выступления, были сделаны первые шаги к исправлению ситуации.

При создании протокола FAST разработчики преследовали цель добиться возможности передачи больших объёмов данных, избегая появления задержек в получении информации. Разработкой протокола занималась рабочая группа сообщества FIX под названием «Группа оптимизации передачи рыночных данных» (Market Data optimization working group — mdowg), которая была сформирована в 2004 году.

В 2005 году эксперты группы представили пилотный проект (proof of concept) протокола, а уже через год был осуществлен релиз первой версии FAST 1.0. В дальнейшем было выпущено несколько обновлений, и в настоящий момент большинством игроков финансового рынка используется версия протокола 1.2. Также существует несколько открытых реализаций протокола (например, OpenFAST, OpenFAST.NET и QuickFAST).

Как это работает Согласно стандарту FIX-протокола каждое сообщение имеет формат Tag = Value SOH, где Tag — это номер передаваемого поля, Value — его значение, а SOH — символ-разделитель (подробнее — в нашем прошлом материале). Пример записи сообщения в синтаксисе Tag = Value:35=x|268=3 (message header) 279=0×269=2×270=9462.50×271=5×48=800123×22=8 (trade) 279=0×269=0×270=9462.00×27

Протокол FAST позволяет избавиться от избыточности с помощью шаблона, который описывает структуру сообщения целиком. Этот метод называется «неявным тегированием» (implicit tagging), поскольку теги FIX в передаваемых данных только «подразумеваются». Итого, синтаксис Tag = Value меняется следующим образом:

Шаблон описывает структурированный набор полей с их операторами; Последовательность полей в сообщении соответствует последовательности тегов в шаблоне; В сообщении передаются только изменения данных. Протокол FAST используется для получения рыночных данных.На каких биржевых площадках есть FAST Протокол FAST поддерживается целым рядом крупнейших мировых фондовых площадок, среди которых: Рассмотрим подробнее реализацию FIX на «Московской Бирже».Реализация «Московской Биржи» «Московская Биржа» реализовала возможность предоставления доступа к финансовой информации по протоколу FAST. Трейдеры могут получать по FAST таблицы финансовых инструментов (цены, объёмы торгов и т.п.), котировки, все сделки, индексы, а также информацию обо всех активных обезличенных заявках. Согласно информации на сайте Биржи, средняя задержка публикации обновлений составляет менее 300 микросекунд (для фондового и валютного рынков).Для передачи финансовых данных используются UDP-каналы, а по TCP передаются наборы недоставленных данных. Данные структурированы на группу потоков (каналов или «фидов»), которые содержат в себе информацию о группе финансовых инструментов. Эти инструменты автоматически группируются торговой системой Биржи в соответствии с определенным параметрами.

image

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

Market Data Incremental — система UDP-каналов для получения изменений данных по текущим торгам; Incremental Refresh — данный канал позволяет получать информацию о текущих торгах на рынке; Instruments Replay — поток используется для получения сообщений о финансовых инструментах, допущенных к торгам; Market snapshot — поток используется для восстановления актуальной информации по всем инструментам; Instruments Incremental — канал для получения изменений параметров инструментов (изменение гарантийного обеспечения и лимитов цен); Message Replay — позволяет запрашивать сообщения, которые были пропущены в потоке Incremental Refresh. imageИзображение / moex.com (по клику откроется в полном размере)

Все сообщения, отправляемые с торговой системой «Московской биржи» кодируются в формате FAST. Особенностью формата «Московской Биржи» заключается в добавлении к сообщению преамбулы из 4 байт. Эта преамбула содержит тег под номером 34 (SeqNum), который позволяет получать номер последовательности сообщений без необходимости декодирования всего сообщения — это выливается в дополнительную экономию времени на обработку потоков данных.

image

Как правило, передача шаблона FAST осуществляется с помощью XML. Типичный сценарий использования протокола (подключение до начала торгового дня) можно описать следующей последовательностью действий:

Загрузка конфигурационного XML-файла со списком multicast IP-адресов и другими параметрами соединения (потоки, порты и т.п.). Загрузка шаблона FAST с FTP-ресурса. Начало «прослушивания» потока Snapshot, а затем Incremental Refresh для получения данных. Пример шаблона на XML: Как подключиться по FAST ITinvest предоставляет своим клиентам доступ к рынкам «Московской биржи» с помощью прямого подключения по протоколуам FIX и FAST Кроме того, для высокочастотных торговцев и алготрейдеров созданы специальные ИТ-услуги от колокации серверов в дата-центре M1 до предоставления доступа к виртуальным машинам для размещения торгового робота (тарифы указаны на сайте).Для тех, кто не читал наш предыдущий материал о протоколе FIX снова прикрепляем видео с рассказом о решениях по получению прямого доступа на фондовый рынок.

[embedded content]

Другие протоколы Помимо протоколов FIX и FAST, поддерживаемых международным сообществом, для прямого подключения к отечественным рынкам используются и так называемые нативные протоколы, которые возникли еще до объединения бирж ММВБ и РТС в «Московскую биржу».На рынках, относившихся к бирже РТС (FORTS — фьючерсы и опционы, Standard), для прямого совершения операций и получения данных в режиме подключения используется протокол Plaza II. Для выполнения торговых операций и получения биржевых данных на площадках, ранее относившихся к бирже ММВБ (валютный и фондовый рынки) используется двунаправленный шлюз MICEXBridge (TEAP).

Об этих протоколах пойдет речь в наших следующих статьях. Кроме того, мы расскажем о протоколе Simple Binary Encoding, который, в определенной степени, является продолжателем дела FIX.

На сегодня все, спасибо за внимание, будем рады ответить на вопросы в комментариях.

P.S. Если вы заметили опечатку или ошибку — напишите личным сообщенрем, и мы оперативно все исправим.

© Habrahabr.ru