- PVSM.RU - https://www.pvsm.ru -
В нашем блоге на Хабре мы уже рассказывали о том, какие дата-центры используются [2] для размещения «железа» с торговыми движками бирж и софта для высокочастотного трейдинга. Сегодня мы пойдем дальше и поговорим о том, каким может быть весь стек технологий, необходимых для HFT-торговли.
Forbes приводит рассказ [3] об этом сооснователя сервиса Robinhood (мы писали про этот проект здесь [4]), болгарина Влада Тенева.
До начала работы над собственным мобильным приложением для онлайн-трейдинга Тенев работал в компании Chronos Research, которая разрабатывала сверхбыстрый софт для HFT-компаний, банков и хедж-фондов. Во многих случаях конкретная конфигурация используемой для торговли инфраструктуры зависела от того, какими активами предстоит торговать, а также какие стратегии поведения на рынке будут использоваться. К примеру, инфраструктура, подходящая для работы на валютном рынке, далеко не всегда может быть конкурентоспособной на рынке акций или деривативов.
В 2011 году Chronos разработала две программные платформы, объединенных под единым именем Zardoz [5] (как фильм [6] с Джоном Коннери) — одна из них работала на стандартном x86 железе и могла быть использована для торговли с задержками на уровне 15 микросекунд. Другая была оптимизирована для работы с железом фирмы Tilera [7], при ее использовании задержки можно было снизить до значений меньше 5 микросекунд. Каждая из систем предназначалась для размещения на условиях колокации в дата-центрах бирж.
Для частных трейдеров больший интерес представляет платформа для архитектуры x86, поэтому Тенев описывает именно ее.
Как правило, торговая площадка предоставляет одно физическое соединение (в виде оптоволокна) к движку биржи, в котором происходит «сведение» заявок разных продавцов и покупателей. Для работы с системой Chronos рекомендовалось наличие канала с пропускной способностью в 10 гигабит, поскольку в таком случае снижалась задержка сериализации, однако редко когда пользователям удавалось получить канал шире 1 гигабита. Через одно физическое соединение передаются рыночные данные (обычно через TCP или UDP multicast) и отправляются приказы (через TCP или UDP unicast).
Казалось бы, для снижения задержки физический кросс-кабель нужно вставить напрямую в сетевую карту сервера. Однако на практике такой вариант встретить почти невозможно, поскольку трейдеры всегда используют несколько физических серверов к которым подключены десятки кабелей от разных бирж.
Для объединения всего этого многообразия специалисты Chronos рекомендовали использовать высокоскоростной коммутатор вроде 24-портового Arista. Использование такого оборудование вносило межпортовую задержку на уровне 350 наносекунд. Также некоторые трейдеры использовали свитч от Blade Networks (куплена IBM), который также работал на Fulcrum ASIC, а стоил дешевле.
Кроме того, для успешной работы HFT-трейдеру нужна высокоскоростная сетевая карта с драйвером для работы в режиме ядра (kernel bypass driver). Тенев упоминает сетевой адаптер 10G-PCIE2-8C2-2S от Myricom [8] для UDP-трафика и Solarflare Flareon Ultra SFN7122F Dual-Port 10GbE PCIe 3.0 Server I/O Adapter – Part ID: SFN7122F [9] для TCP.
У каждой из этих карточек есть нужные драйверы для работы в режиме ядра, что позволяет отправить и получать данные по TCP и UDP в пользовательском пространстве. Переключение контекста — дорогая операция в плане задержек, поэтому в HFT-трейдинге ее нужно избегать. Поэтому обработка важных данных выносится в ядро.
Для работы с системой Chronos поставлялась и «кастомная» версия Gentoo Linux, которую поддерживали разработчики софта.
Софт работал таким обраом, что модули, отвечающие за непосредственную торговлю работали с конкретными ядрами процессора, а другим процессам запрещалось их использовать (это также нужно для избежания переключения контекста). Для этих ядер отключался локальный таймер и другие прерывания.
Код логики платформы был написан на С и являлся событийно-ориентированным (в цикле статей мы рассказывали о создании бэктестера [10], работающего по такой схеме). Разработчики создали собственные «безблокировочные» структуры данных – в итоге каждый поток работал в бесконечном цикле, опрашивая на вход свой собственный FIFO.
В результате, как уже было сказано, задержки при обработке заявок не превышали 15 микросекунд.
Автор: ITinvest
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/109874
Ссылки в тексте:
[1] Image: https://habrahabr.ru/company/itinvest/blog/275663/
[2] какие дата-центры используются: http://habrahabr.ru/company/itinvest/blog/274021/
[3] рассказ: http://www.forbes.com/sites/quora/2014/01/07/what-is-the-technology-stack-like-behind-a-high-frequency-trading-platform/#268681134e4d775437364e4d
[4] здесь: http://habrahabr.ru/company/itinvest/blog/266947/
[5] Zardoz: http://www.financemagnates.com/forex/technology/high-frequency-low-latency-traders-boosted-by-chronos-and-cfn-tie-up/
[6] фильм: http://www.imdb.com/title/tt0070948/
[7] Tilera: http://www.tilera.com/
[8] 10G-PCIE2-8C2-2S от Myricom: https://www.myricom.com/products/network-adapters/10g-pcie2-8c2-2s.html
[9] Solarflare Flareon Ultra SFN7122F Dual-Port 10GbE PCIe 3.0 Server I/O Adapter – Part ID: SFN7122F: http://www.colfaxdirect.com/store/pc/viewPrd.asp?idproduct=1808&idcategory=6
[10] создании бэктестера: http://habrahabr.ru/company/itinvest/blog/270215/
[11] Разработка торговых систем под FPGA: Плюсы, минусы и анализ архитектуры существующей библиотеки: http://habrahabr.ru/company/itinvest/blog/272425/
[12] Инфраструктура и торговые роботы: Какие языки программирования используются в сфере финансов: http://habrahabr.ru/company/itinvest/blog/271493/
[13] Белки, хакеры и Facebook: Из-за чего «падают» биржи: http://habrahabr.ru/company/itinvest/blog/262757/
[14] Источник: https://habrahabr.ru/post/275663/
Нажмите здесь для печати.