Financial Information eXchange (Financial Information eXchange)

Перейти к навигации Перейти к поиску

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

Спецификация FIX-протокола была создана в 1992 году для передачи информации о торгах акциями между компаниями Fidelity Investments и Salomon Brothers. В создании принимали участие программист Крис Морсатт (Chris Morstatt) и Джим Леман (Jim Leman) (бизнес-вопросы) со стороны Salomon, и бизнесмен Жак Перольд (Jacques Perold) и программист Роберт Ламорё (Robert "Bob" Lamoureux) со стороны Fidelity. В начале протокол служил только для обмена данными между брокерами-дилерами и их институциональными клиентами. В те времена информация о заявках и их исполнении передавалась устно по телефону. В Fidelity поняли, что информация, поступающая от брокера-дилера, может попасть не к тому трейдеру или просто может потеряться, как только оба собеседника повесят трубки. Идея заключалась в том, чтобы заменить устные переговоры передачей данных между компьютерами. Эту информацию можно было бы анализировать, хранить и использовать для принятия решений. Например, процедура, когда брокер-дилер звонит другому с намерением купить или продать пакет акций, в протоколе FIX отражена в обмене IOI-сообщениями.

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

FIX Trading Community

[править | править код]

FIX Trading Community - некоммерческая организация, обладающая правами и поддерживающая спецификацию протокола. По состоянию на 2009 год спецификация находилась в состоянии общественного достояния.

Формат FIX-сообщения

[править | править код]

Сообщения FIX состоят из набора полей "тег=значение". Поля отделяются ASCII кодом SOH — Start of Header (0x01). Тег — это номер поля. Например, тег 48 обозначает securityID, а строка значения содержит идентификатор ценной бумаги (тикер).

Сообщение состоит из 3 частей: заголовок, тело и окончание. Последнее поле в сообщении — контрольная сумма (тег 10).

Протокол 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, содержащий контрольную сумму сообщения. Эта сумма всегда выражается трехзначным числом, которое вычисляется по особой формуле, описанной в спецификации (например, 10=002).

Пример FIX-сообщения "Новая заявка". Вертикальные черты заменяют SOH символ для наглядности:

8=FIX.4.2 | 9=178 | 35=D | 34=123123 | 49=BROKER11 | 56=PHLX | 52=20071123-05:30:00.000 | 11=ATOMNOCCC9990900 | 55=MSFT | 167=FUT | 54=1 | 38=15 | 40=2 | 44=15 | 59=0 | 10=128 | 

Читается сообщение так: сообщение в FIX-формате 4.2 (8=FIX.4.2), длина сообщения 178 байт (9=178), тип сообщения "новая заявка" (35=D), номер сообщения 123123 (34=123123), от брокера BROKER11 (49=BROKER11) на филаделфийскую биржу (56=PHLX), отправлена (тег 52), номер заявки ATOMNOCCC9990900 в торговой системе брокера (11=ATOMNOCCC9990900) на покупку (54=1) фьючерсов (167=FUT) на акции компании Microsoft (55=MSFT) в объеме 15 лотов (38=15) по лимитированной (40=2) цене 15 (44=15), заявка истекает в конце торгового дня (59=0).

Бинарный формат

[править | править код]

Для кодирования FIX сообщений в бинарном виде используется FAST протокол.

Техническая спецификация

[править | править код]

Протокол FIX служит для обмена данными в торговых сессиях между торговыми системами. XML-представление сообщений FIX называется FIXML; подобно XML, он является самоописывающим.

FIX - протокол сессионного уровня поверх TCP. При торговле ценными бумагами FIX более популярен, т. к. сообщения FIXML обычно намного объемнее.

Сообщения делятся на 2 уровня: управления и приложения. Уровень управления определяет базовые параметры FIX-сессии: устанавливает соединение, закрывает его, восстанавливает пропавшие сообщения. Уровень приложения связан с отправкой и получением данных: заявок (requests), их исполнений (сделок) (executions and fills), отказов (rejects), рыночной информации (market data), запрос информации о текущем состоянии (status requests) и пр.

Протокол FIX имеет несколько версий, которые выходили по мере совершенствования протокола и поддержки в нём различных классов ценных бумаг. Самой последней версией протокола является версия 5.0.SP2. Разные торговые системы поддерживают разные протоколы, а иногда и несколько протоколов параллельно. Наибольшее распространение среди торговых систем получила версия протокола FIX 4.2 (март 2000 г.), до сих пор существуют биржи и брокеры, которые работают с протоколом 4.1 (апрель 1998 г.) или даже 4.0 (январь 1997 г.), например Сиднейская биржа деривативов[2].

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

Примечания

[править | править код]
  1. What is FIX? The FIX Protocol Organization (8 июня 2009). Дата обращения: 12 ноября 2016. Архивировано из оригинала 9 сентября 2004 года.
  2. Спецификация FIX 4.0 Сиднейской биржи деривативов. Дата обращения: 5 ноября 2016. Архивировано 29 апреля 2021 года.
  3. Спецификация Fix 4.2 Нью-йоркской биржи NYSE Arca Equities. Дата обращения: 5 ноября 2016. Архивировано из оригинала 21 октября 2017 года.
  4. Спецификация Fix 4.2 биржи BATS. Дата обращения: 5 ноября 2016. Архивировано 12 ноября 2020 года.
  5. Пример спецификаций Fix 5.0 Лондонской фондовой биржи. Дата обращения: 5 ноября 2016. Архивировано 8 мая 2020 года.
  6. Спецификация Fix 4.2 Скандинавской биржи Nasdaq Nordic. Дата обращения: 5 ноября 2016. Архивировано из оригинала 5 ноября 2016 года.