Jump to content

ОБМЕН ФИНАНСОВОЙ ИНФОРМАЦИЕЙ

(Перенаправлено из протокола FIX )

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

ИСПРАВИТЬ формат сообщения значения тега
[ редактировать ]

Сообщение состоит из заголовка, тела и трейлера. Поля сообщения разделяются символом начала заголовка (SOH) ( ASCII 0x01).

До 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).

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

Трейлер содержит последнее поле сообщения, 10 ( Checksum), всегда выражается трехзначным числом (например, 10=002).

Пример сообщения FIX, отчет о выполнении ( 35=8), с символом вертикальной черты ( |), представляющий символ SOH:

8=FIX.4.2 | 9=178 | 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 |

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

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

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

Длина тела
[ редактировать ]

Длина тела — это количество символов, начиная с тега 35 (включительно) и заканчивая тегом 10 (исключая), включая конечные разделители SOH.
В приведенном ниже примере (отображается с разделителями SOH в виде '|') длина тела равна 65:

8=FIX.4.2|9=65|35=A|49=SERVER|56=CLIENT|34=177|52=20090107-18:15:16|98=0|108=30|10=062|
              ^  5 +    10   +    10   +   7  +         21         +  5 +    7  ^       = 65 
Контрольная сумма
[ редактировать ]

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

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

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

[ редактировать ]

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

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

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

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

С практической точки зрения, предполагая реализацию C/C++ и корректируя порядок байтов: большинство несоставных типов в сообщении напрямую сопоставляются с тем же типом в языке. Например, 32-битное целое число отображается в uint32_t, карты с фиксированными строками const char *, карты с плавающей запятой в float и так далее. Можно создать C/C++ struct из определения схемы. Затем, учитывая указатель на буфер сообщений, осуществляется доступ к несоставным полям суммы сообщения для приведения его к указателю на структуру и прямого доступа к членам структуры.

/* Generated struct from schema */
struct Message {
  ...
  uint32_t qty;
  ...
  const char *symbol;
  ...
};

void consume_message(void *incoming_message) {
  const struct Message *msg = (const struct Message*) incoming_message;
  printf("Traded %u of %s\n", msg->qty, msg->symbol);
  ...
}

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

[ редактировать ]

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

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

[ редактировать ]

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

ФИКС Транспорт (FIXT)

[ редактировать ]

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

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

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

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

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

Уровень сеанса производительности FIX (FIXP)

[ редактировать ]

ИСПРАВЛЕНИЕ [10] был разработан рабочей группой FIX High Performance. [11] для удовлетворения потребностей высокопроизводительной торговли. Основная потребность заключается в кодировании и декодировании сообщений с низкой задержкой, а также в контроле над гарантиями доставки сообщений.

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

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

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

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

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

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

[ редактировать ]

Ниже приведена схема, показывающая, как ИСПРАВИТЬ обмен сообщениями между стороной покупателя/клиентом и стороной продажи/поставщиком. [12]

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

[ редактировать ]

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

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

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

В 2005 году торговое сообщество FIX выпустило протокол FAST , что означает FIX, адаптированный для потоковой передачи. FAST — это двоичный протокол, который в основном используется для отправки Multicast рыночных данных через UDP-соединения.

Кроме того, в 2020 году торговое сообщество FIX выпустило новую двоичную кодировку FIX, основанную на простом двоичном кодировании (SBE), призванную дополнить существующую кодировку FAST. [13]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ «Что такое ФИКС?» . Организация протокола FIX. 8 июня 2009 г. Архивировано из оригинала 9 сентября 2004 г.
  2. ^ «Обзор • Торговое сообщество FIX» . Торговое сообщество FIX . Проверено 6 декабря 2018 г.
  3. ^ «Спецификация FIX 4.2 с исправлениями 20010501 • FIX Trading Community» . Торговое сообщество FIX . Проверено 5 декабря 2018 г.
  4. ^ «Стандарты FIX • Торговое сообщество FIX» . Торговое сообщество FIX . Проверено 5 декабря 2018 г.
  5. ^ ИСПРАВЛЕНИЕ 4.2: Поле CheckSum <10> | ИСПРАВИТЬ словарь
  6. ^ Приложение B — Расчет контрольной суммы | ИСПРАВИТЬ словарь
  7. ^ «FIXML • Торговое сообщество FIX» . Торговое сообщество FIX . Проверено 5 декабря 2018 г.
  8. ^ «Простое двоичное кодирование (SBE) • Торговое сообщество FIX» . Торговое сообщество FIX . Проверено 5 декабря 2018 г.
  9. ^ «FIX Transport (FIXT) • Торговое сообщество FIX» . Торговое сообщество FIX . Проверено 5 декабря 2018 г.
  10. ^ «Сессионный уровень производительности FIX (FIXP) • Торговое сообщество FIX» . Торговое сообщество FIX . Проверено 5 декабря 2018 г.
  11. ^ «Главная — Рабочая группа по высокой производительности» . Торговое сообщество FIX . Проверено 5 декабря 2018 г.
  12. ^ ДеМарко, Даррен. «Использование протокола обмена финансовой информацией (FIX)?» .
  13. ^ «Простое двоичное кодирование (SBE)» . 21 марта 2024 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 55d28cbb1a8bcd12a55de7ed1c9aca64__1717236660
URL1:https://arc.ask3.ru/arc/aa/55/64/55d28cbb1a8bcd12a55de7ed1c9aca64.html
Заголовок, (Title) документа по адресу, URL1:
Financial Information eXchange - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)