Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

История [ править ]

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

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

Торговое сообщество FIX [ править ]

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

Пользователи [ править ]

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

FIX стал стандартным электронным протоколом для предторговых коммуникаций и торговых операций. Хотя он в основном используется для операций с акциями во фронт-офисе , также возможны операции с облигациями, деривативами и FX. Можно сказать, что в то время как SWIFT является стандартом для обмена сообщениями в бэк-офисе , 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 ( BodyLength) и 35 ( MsgType).

Начиная с FIXT.1.1 / FIX.5.0, заголовок содержит пять обязательных полей и одно необязательное поле: 8 ( BeginString), 9 ( BodyLength), 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=PERS | 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 EQUITY TESTING | 59=0 | 47=C | 32=0 | 31=0 | 151=15 | 14=0 | 6=0 | 10=128 | 

В приведенном выше сообщении FIXMessage длина тела 9 верна, а контрольная сумма 10 была проверена с использованием источника, доступного в QuickFIX , реализации 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 и другими протоколами сообщений, в том числе:

  • Буферы протокола Google
  • ASN.1
  • JSON

Протоколы сеанса [ править ]

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

FIX Transport (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 Session Layer (FIXP) [ править ]

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

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

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

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

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

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

Схематическое изображение системы FIX [ править ]

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

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

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

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

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

FIX Protocol Limited выпустила протокол FAST, который расшифровывается как FIX Adapted for Streaming. FAST - это бинарный протокол, который в основном используется для отправки рыночных данных Multicast через 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 [20]
  • Экзамен Wipro FIX [21]
  • FixSpec Central [22]

См. Также [ править ]

  • FIXatdl
  • QuickFIX , реализация FIX с открытым исходным кодом
  • SWIFT: типы сообщений

Заметки [ править ]

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

Внешние ссылки [ править ]

  • FIX Protocol Ltd. - этот официальный веб-сайт торгового сообщества FIX содержит стандарты FIX.
  • Словарь FIXimate FIX FIX Устаревшие версии FIX Последние
  • FIXwiki - Wiki, посвященная FIX. Инструмент для справки по спецификациям, такой как FIXimate, но поскольку это вики, он также позволяет пользователям делать заметки и отзывы
  • Esprow FIX Tools - онлайн-браузер словарей FIX для всех версий FIX, включая парсер сообщений FIX
  • Полный словарь протокола FIX на Onixs - быстрый и простой в использовании современный словарь протокола FIX (версии 4.0 , 4.1 , 4.2 , 4.3 , 4.4 , 5.0 , 5.0.SP1 , 5.0.SP2 , FIXT1.1 ).
  • FixSpec FIX 4.0 FIX 4.1 FIX 4.2 FIX 4.3 FIX 4.4 FIX 5.0 FIX 5.0 SP1 FIX 5.0 SP2 FIXT
  • Интернет-ресурс, включая примечания по использованию Rapid Addition - Online FIX Resource, включая подробные примечания по использованию (версии 4.0, 4.2, 5.0 SP2).
  • FIXGlobal - бесплатный глобальный торговый журнал и официальный журнал протокола FIX.
  • Что такое протокол FIX? - Нетехнический обзор протокола FIX.
  • Простой декодер FIX, написанный в сценарии оболочки с sed, который быстро работает в Unix / Linux, нуждается в обновлении до последней версии FIX.