Обмен финансовой информацией - Financial Information eXchange

В Обмен финансовой информацией (ИСПРАВИТЬ) протокол является электронным протокол связи инициирован в 1992 году для международного обмена в режиме реального времени информацией, касающейся ценные бумаги сделки и рынки. Ежегодно на бирже торгуются триллионы долларов. NASDAQ Только организации, предоставляющие финансовые услуги, используют прямой доступ к рынкам (DMA) для увеличения скорости выхода на финансовые рынки. Управление доставкой торговых приложений и поддержание низкого уровня задержки все чаще требует понимания протокола FIX.

История

Спецификация протокола FIX была первоначально разработана в 1992 году Робертом «Бобом» Ламурё и Крисом Морстаттом для обеспечения электронной связи беспристрастность торговые данные между Fidelity Investments и Salomon Brothers. Первоначально FIX обращался к информации между брокерами-дилерами и их институциональными клиентами. В то время эта информация передавалась устно по телефону. Компания Fidelity поняла, что информация от их брокеров-дилеров может быть перенаправлена ​​не тому трейдеру или просто потеряна, когда стороны повесили телефоны. Он хотел, чтобы такие коммуникации были заменены машиночитаемые данные которые затем могут быть переданы трейдерам, проанализированы, использованы и сохранены. Например, брокеры-дилеры звонят с указанием заинтересованности (IOI ) купить или продать пакет акций. Инициатива FIX создала новые сообщения, такие как IOI.

Согласно сообществу трейдеров FIX, FIX стал де-факто стандартом обмена сообщениями для предпродажной и торговой коммуникации на глобальных фондовых рынках и расширяется в пост-торговое пространство для поддержки сквозная обработка, а также продолжает расширяться в иностранная валюта, фиксированный доход и производные рынки.[1]

Торговое сообщество FIX

В Торговое сообщество FIX - это некоммерческий отраслевой орган по стандартизации, задачей которого является решение деловых и регуляторных вопросов, влияющих на торговлю несколькими активами на мировых финансовых рынках, посредством более широкого использования стандартов, включая язык обмена сообщениями протокола FIX, что обеспечивает повышенную операционную эффективность прозрачность и снижение затрат и рисков для всех участников рынка.[2]

Пользователи

FIX широко используется как сторона покупки (учреждения), а также сторона продажи (брокеры / дилеры) финансовые рынки. Среди его пользователей паевые инвестиционные фонды, инвестиционные банки, брокеры, фондовые биржи и ECN. Видеть Организация торгового сообщества FIX для обширного списка основных пользователей FIX.

FIX стал стандартным электронным протоколом для предторговых коммуникаций и торговых операций. Хотя он в основном используется для операций с капиталом в фронт-офис ареал, облигации, деривативы и валютные операции также возможны. Можно сказать, что тогда как БЫСТРЫЙ стандарт для бэк-офис обмен сообщениями, FIX является стандартом для обмена сообщениями фронт-офиса. Однако сегодня членство в FIX Protocol Ltd. расширяет FIX на заблокировать торговлю распределение и другие этапы торгового процесса на каждом рынке практически для каждого класса активов.

Технические характеристики

Первоначально стандарт FIX был монолитным, включая семантику прикладного уровня, кодирование сообщений и сеансовый уровень в единой технической спецификации. Он оставался монолитным до версии FIX 4.2.[3] После этого кодировки сообщений и спецификации сеансового уровня стали разделяться на отдельные документы, и в конечном итоге FIX превратился в семейство связанных технических стандартов.[4]

Кодировки сообщений

Кодировка сообщения, называемая Слой презентации в модели взаимодействия открытых систем (модель OSI) отвечает за проводной формат сообщений.

Кодировка значения тега (классический FIX)

Исходная кодировка сообщения FIX известна как кодировка значения тега. Каждое поле состоит из уникального числового тега и значения. Тег семантически идентифицирует поле. Таким образом, сообщения описывают сами себя. Кодировка значения тега основана на символах, с использованием ASCII коды.

FIX формат сообщения tagvalue

Поля сообщения разделены ASCII 01 символ <начало заголовка>. Они состоят из заголовка, тела и концевой части.

До FIX.4.4 заголовок содержал три поля: 8 (BeginString), 9 (Длина тела) и 35 (MsgType) теги.

Начиная с FIXT.1.1 / FIX.5.0, заголовок содержит пять обязательных полей и одно дополнительное поле: 8 (BeginString), 9 (Длина тела), 35 (MsgType), 49 (SenderCompID), 56 (TargetCompID) и 1128 (ApplVerID - при наличии должен быть на 6 позиции).

Содержимое тела сообщения определяется (тег 35, MsgType) тип сообщения, определенный в заголовке.

Последнее поле сообщения - это тег 10, FIX Message Checksum. Он всегда выражается трехзначным числом (например, 10=002).

Заголовок + текст + трейлер: FIX Content

Пример сообщения FIX: отчет о выполнении (символ вертикальной черты используется для представления SOH персонаж)

8 = FIX.4.2 | 9 = 176 | 35 = 8 | 49 = PHLX | 56 = ЧЕЛОВЕК | 52 = 20071123-05: 30: 00.000 | 11 = ATOMNOCCC9990900 | 20 = 3 | 150 = E | 39 = E | 55 = MSFT | 167 = CS | 54 = 1 | 38 = 15 | 40 = 2 | 44 = 15 | 58 = ТЕСТИРОВАНИЕ АКЦИЙ PHLX | 59 = 0 | 47 = C | 32 = 0 | 31 = 0 | 151 = 15 | 14 = 0 | 6 = 0 | 10 = 128 | 

В приведенном выше сообщении FIXMessage длина тела 9 верна, а контрольная сумма 10 была проверена с использованием источника, доступного по адресу Быстрая починка, реализация FIX с открытым исходным кодом.

Тело

Сообщения FIX формируются из нескольких полей; каждое поле представляет собой пару значений тега, которые отделены от следующего поля разделителем SOH (0x01). Тег представляет собой целое число, указывающее значение поля. Значение представляет собой массив байтов, которые содержат определенное значение для конкретного тега (например, тег 48 - это SecurityID, строка, которая идентифицирует безопасность; тег 22 - это IDSource, целое число, которое указывает используемый класс идентификатора). Значения могут быть в виде простого текста или закодированы как чисто двоичные (в этом случае значению предшествует поле длины). Протокол FIX определяет значения большинства тегов, но оставляет диапазон тегов, зарезервированных для частного использования между сторонами, согласившимися.

Протокол FIX также определяет наборы полей, которые составляют конкретное сообщение; в наборе полей одни будут обязательными, а другие - необязательными. Порядок полей в сообщении обычно не важен, однако повторяющимся группам предшествует счетчик, а зашифрованным полям - их длина. Сообщение разбито на три отдельных раздела: голова, тело и хвост. Поля должны оставаться в правильном разделе, и в каждом разделе положение может быть важным, поскольку поля могут действовать как разделители, которые не позволяют одному сообщению переходить в следующее. Последнее поле в любом сообщении FIX - это тег 10 (контрольная сумма ).

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

Заголовок
Длина тела

Длина тела - это количество символов, начиная с тега 35 (включительно) до тега 10 (исключено). Разделители SOH учитываются по длине тела.
Например: (SOH заменен на '|')

8 = FIX.4.2 | 9 = 65 | 35 = A | 49 = СЕРВЕР | 56 = КЛИЕНТ | 34 = 177 | 52 = 20090107-18: 15: 16 | 98 = 0 | 108 = 30 | 10 = 062 | 0 + 0 + 5 + 10 + 10 + 7 + 21 + 5 + 7 + 0 = 65

Длина тела 65.
Разделитель SOH в конце тега = значение принадлежит тегу.

Трейлер: Контрольная сумма

Контрольная сумма сообщения FIX всегда является последним полем сообщения. Он состоит из трех символов и имеет тег 10.[5] Он получается путем суммирования ASCII значение всех символов в сообщении, кроме символов самого поля контрольной суммы, и выполнение по модулю 256 по полученному суммированию.[6] Например, в сообщении выше суммирование всех значений ASCII (включая символ SOH, который имеет значение 1 в таблице ASCII) приводит к 4158. Выполнение операции по модулю дает значение 62. Поскольку контрольная сумма состоит из три символа, используется 062.

FIXML

FIXML[7] представляет собой схему XML для сообщений FIX. Он семантически эквивалентен сообщениям, закодированным с помощью тегов, но использует технологию синтаксического анализа XML. FIXML обычно используется для бэк-офиса и клиринговых приложений, а не для торговли.

Простое двоичное кодирование (SBE)

Простое двоичное кодирование[8] определяет формат проводов с использованием примитивных типов данных, которые являются родными для вычислительных систем. Таким образом, кодирование и декодирование сообщений имеют гораздо меньшую задержку, чем символьные протоколы, поскольку перевод данных в формат, который могут использовать компьютеры, не требуется. Помимо преимуществ задержки, производительность более детерминирована, поскольку сообщения SBE ограничиваются шаблонами, а элементы данных фиксированной длины предпочтительны. Другим следствием является то, что поля обычно находятся в фиксированной позиции, поэтому фильтрам сообщений и маршрутизаторам не нужно взламывать все сообщение для доступа к ключевым полям.

SBE был разработан FIX High Performance Working Group для поддержки высокопроизводительной торговли. Кодирование значений тегов больше не считалось пригодным для использования, поскольку оно основано на символах, а не в двоичном формате, а его поля и сообщения переменной длины приводят к недетерминированной производительности.

В отличие от tagvalue и FIXML, сообщение SBE не самоописывается. По сети отправляются только данные с минимальным заголовком для идентификации шаблона, управляющего сообщением. Обмен метаданными, описывающими структуру сообщения, между одноранговыми узлами осуществляется вне канала.

FIX Trading Community публикует схему XML для схем сообщений SBE. Схема сообщения может содержать любое количество шаблонов сообщений. Шаблон описывает поля, составляющие сообщение. Кроме того, схема предоставляет список простых и составных типов данных, которые можно повторно использовать в любом количестве полей.

Другие кодировки FIX

FIX Trading Community также разработало стандартные сопоставления между FIX и другими протоколами сообщений, включая:

Протоколы сеанса

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

FIX Транспорт (FIXT)

Исходный протокол сеанса FIX не имел собственного имени, так как он был частью монолитной спецификации, охватывающей семантику прикладного уровня и кодирование сообщений. Однако, начиная с версии FIX 5.0, уровень сеанса был выделен как независимая спецификация с введением FIXT.[9] FIXT был в значительной степени таким же, как исходный безымянный уровень сеанса в версии 4.x, но предлагал одно существенное нововведение - он предоставлял механизм смешивания версий уровня приложения FIX с общей версией сеанса. Текущая версия FIXT - 1.1.

Теоретически FIXT не зависит от транспорта. Однако обычно его используют Протокол управления передачей (TCP).

FIXT - это протокол точка-точка. Это гарантирует доставку сообщений в обоих направлениях. Сообщения, отправляемые в каждом направлении, имеют порядковый номер сообщения в заголовке сообщения. При сбое связи одноранговый узел может запросить повторную передачу пропущенных сообщений. Доставка сообщений поддерживается даже в случае отключения и последующего восстановления сеанса.

Чтобы реализовать установление сеанса и гарантированную доставку, FIXT и классический FIX 4.x определяют следующие типы сообщений сеанса:

  • Сердцебиение
  • Тестовый запрос
  • ResendRequest
  • Отклонять
  • SequenceReset
  • Выйти
  • Вход в систему
  • XMLnonFIX

Уровень сеанса FIX Performance (FIXP)

FIXP[10] был разработан FIX High Performance Working Group[11] для удовлетворения потребностей высокопроизводительной торговли. Основная потребность заключается в кодировании и декодировании сообщений с малой задержкой, а также в контроле над гарантиями доставки сообщений.

Чтобы обеспечить низкую задержку, двоичное кодирование сообщений поддерживается как для сеансового уровня, так и для сообщений приложений. Фактический формат проводов абстрагируется в спецификации FIXP, поэтому пользователи могут выбрать кодировку FIX по своему выбору, если одноранговые узлы согласны с протоколом для использования. Ранняя разработка использовала простое двоичное кодирование.

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

Когда устанавливается сеанс связи точка-точка, одноранговые узлы согласовывают гарантии доставки из следующих вариантов:

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

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

Схематическое изображение системы FIX

Ниже представлена ​​диаграмма того, как выглядит обмен сообщениями FIX между покупателем / покупателем и продавцом / поставщиком.[12]

Схема подключения системы обмена финансовой информацией Diagram.svg

Последние разработки в протоколе FIX

Последняя версия протокола FIX реализует «Транспортную независимость», разрешая перенос нескольких версий сообщений приложений через одну версию Transport Independent FIX Session (FIXT.1.1 и выше).

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

FIX теперь поддерживает алгоритмическая торговля с использованием языка определения алгоритмической торговли FIX FIXatdl.

Компания FIX Protocol Limited выпустила БЫСТРЫЙ протокол что расшифровывается как FIX Adapted for Streaming. БЫСТРЫЙ это бинарный протокол и используется в основном для отправки Многоадресная рассылка рыночные данные через UDP-соединения.

Инструменты для тестирования

Многие компании предлагают продукты и услуги для тестирования FIX:

  • Sensiple PhiFIX[13]
  • Lefinsys Testamatiq[14]
  • B2Bits ФАКТЫ[15]
  • CameronTec VeriFIX[16]
  • Esprow ETP Studio для FIX[17]
  • Инструменты тестирования Exactpro[18]
  • FIX Flyer Ignition [19]
  • GDS Fizzer - FIX Fuzzing Framework [20]
  • Gamma Three Trading FIXSIM [21]
  • Анализатор OnixS FIX[22]
  • Wipro FIX Examen[23]
  • FixSpec Central[24]

Смотрите также

Примечания

  1. ^ "Что такое FIX?". Организация протокола FIX. 8 июня 2009 г. Архивировано с оригинал 9 сентября 2004 г.
  2. ^ «Обзор • Торговое сообщество FIX». Торговое сообщество FIX. Получено 2018-12-06.
  3. ^ «Спецификация FIX 4.2 с ошибкой 20010501 • Торговое сообщество FIX». Торговое сообщество FIX. Получено 2018-12-05.
  4. ^ «Стандарты FIX • Торговое сообщество FIX». Торговое сообщество FIX. Получено 2018-12-05.
  5. ^ ИСПРАВЛЕНИЕ 4.2: Поле CheckSum <10> | FIX Словарь
  6. ^ Приложение B - Расчет контрольной суммы | FIX Словарь
  7. ^ «Торговое сообщество FIXML • FIX». Торговое сообщество FIX. Получено 2018-12-05.
  8. ^ «Простое двоичное кодирование (SBE) • Торговое сообщество FIX». Торговое сообщество FIX. Получено 2018-12-05.
  9. ^ «FIX Transport (FIXT) • Торговое сообщество FIX». Торговое сообщество FIX. Получено 2018-12-05.
  10. ^ «FIX Performance Session Layer (FIXP) • Торговое сообщество FIX». Торговое сообщество FIX. Получено 2018-12-05.
  11. ^ «Дом - высокопроизводительная рабочая группа». Торговое сообщество FIX. Получено 2018-12-05.
  12. ^ Демарко, Даррен. "Использование протокола обмена финансовой информацией (FIX)?".
  13. ^ «Sensiple | PhiFIX - это набор инфраструктуры обмена сообщениями на основе нескольких протоколов (FIX, EMAPI, FAST, ITCH & OUCH) для связи с низкой задержкой при торговле». www.phifix.com. Получено 2019-02-25.
  14. ^ "Lefinsys | Testamatiq Fix отправитель и инструмент сертификации". www.lefinsys.com. Получено 2016-05-08.
  15. ^ "B2BITS FIX | FIX Автоматическая служба сертификации и тестирования". www.b2bits.com. Получено 2016-05-08.
  16. ^ «VeriFIX | Продукты | CameronTec Group». www.camerontecgroup.com. Получено 2016-05-08.
  17. ^ "Esprow ETP Studio для FIX". www.esprow.com. Получено 2016-05-08.
  18. ^ «Инструменты тестирования». www.exactprosystems.com. Получено 2016-05-08.
  19. ^ "FIX Flyer Ignition". www.fixflyer.com. Получено 17 марта 2017.
  20. ^ «GDS Fizzer». www.gdssecurity.com.com. Получено 25 апреля 2018.
  21. ^ «ФИКСИМ». www.fixsim.com. Получено 31 октября 2016.
  22. ^ «Инструменты протокола FIX - Анализ сообщений - Торговля FIX: OnixS». www.onixs.biz. Получено 2016-05-08.
  23. ^ "Исправить тестирование протокола, исправить инструменты тестирования | Wipro". www.wipro.com. Получено 2016-05-08.
  24. ^ "Центральная от FixSpec". fixspec.com. Получено 2019-03-26.

внешняя ссылка