Введение
Протокол электронных коммуникаций
Протокол обмена финансовой информацией (FIX) — это протокол электронных коммуникаций, разработанный в 1992 году для осуществления международного обмена информацией в режиме реального времени, касающейся сделок с ценными бумагами и финансовых рынков. Учитывая триллионы долларов, торгуемые ежегодно только на NASDAQ, финансовые организации используют прямой доступ к рынку (DMA) для повышения скорости работы на финансовых рынках. Управление поставкой торговых приложений и минимизация задержек все чаще требуют понимания протокола FIX.
История
Спецификация протокола FIX была первоначально разработана в 1992 году Робертом "Бобом" Ламуро и Крисом Морштаттом для обеспечения электронной передачи данных о торгах акциями между Fidelity Investments и Salomon Brothers. Изначально FIX был предназначен для обмена информацией между брокерами-дилерами и их институциональными клиентами. В то время эта информация передавалась устно по телефону. Компания Fidelity осознала, что информация от брокеров-дилеров может быть направлена не тому трейдеру или просто потеряться после окончания телефонного разговора. Поэтому возникла потребность заменить такие коммуникации машиночитаемыми данными, которыми можно было бы обмениваться между трейдерами, анализировать, использовать и хранить. Например, брокеры-дилеры сообщали о заинтересованности (IOI) в покупке или продаже блока акций. Инициатива FIX привела к созданию новых сообщений, таких как IOI. По данным FIX Trading Community, FIX стал фактическим стандартом обмена сообщениями для коммуникаций до и во время торгов на глобальных рынках акций, и сейчас расширяется на постторговую обработку для поддержки сквозной обработки, а также продолжает внедряться на рынки валюты, фиксированного дохода и производных финансовых инструментов.
Торговое сообщество FIX
Торговое сообщество FIX – это некоммерческая организация, определяемая отраслью, занимающаяся разработкой стандартов, с целью решения бизнес- и регуляторных вопросов, влияющих на торговлю различными классами активов на глобальных финансовых рынках, посредством более широкого внедрения стандартов, включая язык обмена сообщениями протокола FIX, что обеспечивает повышение операционной эффективности, прозрачности и снижение затрат и рисков для всех участников рынка.
Пользователи
FIX широко используется как участниками, представляющими сторону покупателей (институты), так и участниками, представляющими сторону продавцов (брокеры/дилеры) финансовых рынков. Среди пользователей – паевые инвестиционные фонды, инвестиционные банки, брокеры, фондовые биржи и ECN. FIX стал стандартным электронным протоколом для предварительных переговоров и исполнения сделок. Хотя он в основном применяется для операций с акциями в сфере фронт-офиса, также возможны операции с производными финансовыми инструментами, основанными на облигациях, и валютные операции. Можно сказать, что если SWIFT является стандартом для обмена сообщениями в бэк-офисе, то FIX – стандарт для обмена сообщениями в фронт-офисе. Однако сегодня членство в FIX Protocol Ltd. расширяет сферу применения FIX на распределение крупных сделок и другие этапы торгового процесса на любом рынке и практически для любого класса активов.
Технические спецификации
Первоначально стандарт FIX был монолитным, объединяя семантику прикладного уровня, кодирование сообщений и уровень сеансов в единой технической спецификации. Он оставался монолитным вплоть до версии FIX 4.2. После этого кодирование сообщений и спецификации уровня сеансов начали выделяться в отдельные документы, и в конечном итоге FIX эволюционировал в семейство взаимосвязанных технических стандартов.
Кодирование сообщений
Кодирование сообщений, называемое уровнем представления в модели взаимодействия открытых систем (модель OSI), отвечает за формат данных, передаваемых по сети.
Кодирование знаков (классическая FIX)
Оригинальное кодирование сообщений FIX известно как кодирование "tag-value". Каждое поле состоит из уникального числового тега и значения. Тег определяет семантическое значение поля. Таким образом, сообщения являются самоописывающимися. Кодирование "tag-value" основано на символах и использует коды ASCII.
Тело
Сообщения FIX формируются из нескольких полей; каждое поле имеет пару «тег-значение», разделенную от следующего поля разделителем SOH (0x01). Тег – это целое число, указывающее смысл поля. Значение представляет собой массив байтов, содержащий определенный смысл для конкретного тега (например, тег 48 – SecurityID, строка, идентифицирующая ценную бумагу; тег 22 – IDSource, целое число, указывающее используемый класс идентификаторов). Значения могут быть представлены в виде обычного текста или закодированы в виде двоичных данных (в этом случае перед значением указывается поле длины). Протокол FIX определяет значения для большинства тегов, но оставляет диапазон тегов зарезервированными для частного использования между согласованными сторонами. Протокол FIX также определяет наборы полей, составляющие конкретное сообщение; внутри набора полей некоторые поля являются обязательными, а другие – необязательными. Порядок полей в сообщении, как правило, не имеет значения, однако повторяющимся группам предшествует счетчик, а зашифрованным полям – их длина. Сообщение разделено на три отдельных секции: заголовок, тело и окончание. Поля должны оставаться в пределах соответствующей секции, и внутри каждой секции их позиция может быть важна, поскольку поля могут служить разделителями, предотвращающими перетекание одного сообщения в другое. Последнее поле в любом сообщении FIX – это тег 10 (контрольная сумма). Существуют две основные группы сообщений – административные и прикладные. Административные сообщения обрабатывают основы сеанса FIX. Они позволяют начать и завершить сеанс, а также восстановить пропущенные сообщения. Прикладные сообщения связаны с отправкой и получением информации, относящейся к торговле, такой как запрос на ордер или информация о текущем состоянии и последующем исполнении этого ордера.
Контрольная сумма
Контрольная сумма сообщения FIX всегда является последним полем в сообщении, с тегом 10 и трехзначным значением. Она вычисляется путем суммирования ASCII-кодов всех символов в сообщении (за исключением поля контрольной суммы), а затем взятия остатка от деления на 256. Например, в приведенном выше сообщении суммирование всех ASCII-кодов (включая символы SOH с ASCII-кодом 1) дает 4158. Вычисление остатка от деления дает значение 62. Поскольку контрольная сумма состоит из трех символов, это дает результат 10=062.
FIXML
FIXML — это XML-схема для сообщений FIX. Она семантически эквивалентна сообщениям, закодированным в формате tagvalue, но использует возможности XML-парсеров. FIXML чаще всего применяется в бэк-офисных и клиринговых системах, а не в торговле.
Протоколы заседаний
Уровень сеанса отвечает за обмен сообщениями, в том числе за механизмы восстановления после контрольных точек.
Диаграммное представление системы FIX
Ниже представлена схема организации обмена сообщениями FIX между покупателем/заказчиком и продавцом/поставщиком.
Последние разработки протокола FIX
Последняя версия протокола FIX реализует "транспортную независимость", позволяя передавать несколько версий прикладных сообщений через единую версию сеанса FIX, независимого от транспорта (FIXT.1.1 и выше). Транспортная независимость также открывает возможность использования транспортных протоколов, таких как очереди сообщений и веб-сервисы, вместо традиционного FIX через TCP. FIX теперь поддерживает алгоритмическую торговлю благодаря языку определения алгоритмической торговли FIX Algorithmic Trading Definition Language FIXatdl. В 2005 году сообщество FIX выпустило протокол FAST (FIX Adapted for Streaming – FIX, адаптированный для потоковой передачи). FAST – это двоичный протокол, который в основном используется для передачи многоадресных рыночных данных через соединения UDP. В 2020 году сообщество FIX также выпустило новое двоичное кодирование FIX, основанное на Simple Binary Encoding (SBE), предназначенное для дополнения существующего кодирования FAST.