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) номер сообщения 123123 (34=123123), тип сообщения "новая заявка" (35=D), от брокера 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 (June 8, 2009). Дата обращения 12 ноября 2016. Архивировано 9 сентября 2004 года.
  2. Спецификация FIX 4.0 Сиднейской биржи деривативов
  3. Спецификация Fix 4.2 Нью-йоркской биржи NYSE Arca Equities (недоступная ссылка). Дата обращения 5 ноября 2016. Архивировано 21 октября 2017 года.
  4. Спецификация Fix 4.2 биржи BATS
  5. Пример спецификаций Fix 5.0 Лондонской фондовой биржи
  6. Спецификация Fix 4.2 Скандинавской биржи Nasdaq Nordic (недоступная ссылка). Дата обращения 5 ноября 2016. Архивировано 5 ноября 2016 года.

Ссылки[править | править код]