Блог им. Wolffrr

Прощание OSA Engine с FIX/FAST и приветствие SBE: Технарь рекомендует

Привет, друзья!

И снова с вами OSAEngine.ru. Сегодня мы рассмотрим, почему FAST-протокол, который долгое время использовался для передачи данных на финансовых рынках, устарел и был заменен более современными и эффективными решениями, такими как SBE (Simple Binary Encoding). Подробности о протоколе SBE я расскажу в следующей статье, так что не переключайтесь и готовьтесь к увлекательному путешествию в мир бинарного кодирования!

Прощание OSA Engine с FIX/FAST и приветствие SBE: Технарь рекомендует

Почему стоит избегать FAST-протокол

Если вы только начинаете рассматривать вопрос прямого рыночного доступа (DMA) и подключения к торговым системам, важно ориентироваться на современные стандарты и технологии. Протокол FAST (FIX Adapted for STreaming) на сегодняшний день устарел и имеет ряд ограничений, которые делают его менее подходящим для высокочастотной торговли и современных торговых решений.

Недостатки FAST

  1. Сложность обработки данных:

    • FAST использует сложные методы сжатия, такие как удаление избыточности и кодирование длин повторов (RLE). Это требует значительных вычислительных ресурсов для кодирования и декодирования данных, что может увеличивать задержки.
    • Гибкость структуры: Сообщения в FAST имеют гибкую и сложную структуру, что усложняет процесс их обработки и увеличивает вероятность ошибок.
  2. Задержки и производительность:

    • Высокая задержка: Сложные алгоритмы сжатия в FAST могут создавать дополнительные задержки, что делает его менее эффективным для высокочастотной торговли.
    • Низкая производительность: В условиях, где важна каждая микросекунда, дополнительная сложность обработки сообщений в FAST становится значительным недостатком.
  3. Сложность реализации:

    • Сложная реализация: Использование XML-схем для описания структуры сообщений в FAST добавляет дополнительную сложность в реализацию и поддержку систем.

Преимущества современных протоколов, таких как SBE

На смену FAST пришел протокол SBE (Simple Binary Encoding), который обеспечивает более высокую производительность за счет упрощения структуры и методов кодирования.

История и преимущества SBE

  • История SBE: SBE был разработан компанией FIX Protocol Ltd. и впервые представлен в 2013 году как часть обновления стандарта FIX 5.0.
  • Простота и эффективность: SBE использует простую бинарную кодировку, что значительно уменьшает время на кодирование и декодирование сообщений. Это особенно важно для систем, требующих минимальных задержек.
  • Минимизация задержек: SBE разработан с акцентом на минимальные задержки, что делает его идеальным для высокочастотной торговли. Простая структура и отсутствие сложных алгоритмов сжатия обеспечивают максимально быстрое выполнение операций.
  • Современные требования: SBE лучше адаптирован к современным требованиям финансовых рынков, где высокая скорость и производительность являются ключевыми факторами успеха. SBE поддерживает различные финансовые инструменты, такие как акции, облигации, опционы и фьючерсы, что делает его универсальным решением для различных типов торговли.

Пример кодирования сообщений в FAST и SBE

FAST:

  • Предыдущее сообщение: Цена — 100, Количество — 50, Время — 12:00
  • Текущее сообщение: Цена — 101, Количество — 50, Время — 12:01
  • FAST передает только изменения: Цена — 101, Время — 12:01

SBE:

  • Каждое сообщение содержит полную информацию без учета изменений.
  • Сообщение будет закодировано как последовательность бинарных данных:
    • Цена: 101 (4 байта)
    • Количество: 50 (4 байта)
    • Время: 12:01 (4 байта)

Примеры схем

Пример схемы SBE:

<sbe:messageSchema xmlns:sbe="http://fixprotocol.io/2020/sbe" package="my.package" id="1" version="1.0">
    <types>
        <composite name="price" description="Price in integer format">
            <type name="int32"/>
        </composite>
    </types>
    <messages>
        <message name="Order" id="1">
            <field name="Price" id="1" type="int32"/>
            <field name="Quantity" id="2" type="int32"/>
            <field name="Time" id="3" type="int32"/>
        </message>
    </messages>
</sbe:messageSchema>

Пример схемы FAST:

<templates xmlns="http://www.fixprotocol.org/ns/fast/td/1.1">
    <template name="Order" id="1">
        <sequence name="Order" presence="optional">
            <field name="Price" id="1" type="uInt32" />
            <field name="Quantity" id="2" type="uInt32" />
            <field name="Time" id="3" type="uInt32" />
        </sequence>
    </template>
</templates>

Чем схемы SBE проще, чем схемы FAST

Структура и Простота

  • SBE: Схемы для SBE имеют фиксированную структуру сообщений. Поля в этих схемах четко определены и имеют фиксированные размеры и типы данных. Это упрощает процесс кодирования и декодирования, так как нет необходимости в сложных алгоритмах для обработки переменной длины данных и гибких структур.
  • FAST: Схемы для FAST допускают гибкость в структуре сообщений, что позволяет создавать более сложные и вложенные структуры данных. Однако эта гибкость увеличивает сложность обработки сообщений и требует дополнительных вычислительных ресурсов для их декодирования и восстановления полной информации.

Описание данных

  • SBE: В SBE схемах данные описаны с использованием простых типов данных и фиксированных размеров. Это упрощает обработку и уменьшает количество ошибок при передаче данных. Каждый тип данных в SBE имеет четко определенное место и размер, что делает процесс декодирования быстрым и эффективным.
  • FAST: В схемах для FAST используется множество типов данных и сложных методов сжатия, таких как удаление избыточности и предсказание. Это требует дополнительных шагов для обработки данных и увеличивает вероятность ошибок при декодировании.

Производительность

  • SBE: Простая и фиксированная структура сообщений SBE позволяет минимизировать задержки при передаче данных. Это критически важно для высокочастотной торговли, где каждая микросекунда имеет значение. Простота схем SBE позволяет быстрее и эффективнее обрабатывать данные.
  • FAST: Сложные методы сжатия в FAST, такие как RLE и предсказание, увеличивают время на кодирование и декодирование данных. Это может создавать дополнительные задержки, что делает FAST менее эффективным для использования в условиях, где важна минимальная задержка.

Заключение

Если вы планируете подключаться к торговым системам, рекомендуется избегать использования FAST и ориентироваться на современные протоколы, такие как SBE, которые обеспечивают более высокую производительность и надежность. Переход к SBE позволит вам создать надежное и высокопроизводительное соединение, что будет способствовать успешной работе на финансовых рынках.

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

Мой блог с оригиналом статьи

4 комментария

да уж, fast на fgpa было прикольно делать ) У меня только с 13 версии нормально получилось.

поэтому плисеры на бирже продавили решение на sbe )

avatar
Андрей К, когда-то умельцы делали демо пати на 64кб. Потом эти умельцы позврослели и начали заниматься действительно важными вещами )
«А что скажет начальник транспортного цеха?»
avatar
svgr, я сам себе насяльника

теги блога Gambler <osaengine.ru>

....все тэги



UPDONW
Новый дизайн