Яким може бути стек технологій для високочастотного трейдингу



В нашому блозі на Хабре ми вже розповідали про те, які дата-центри використовуються для розміщення «заліза» з торговими движками бірж та софта для високочастотного трейдингу. Сьогодні ми підемо далі і поговоримо про те, яким може бути весь стек технологій, необхідних для HFT-торгівлі.

Forbes призводить рассказ</a про це співзасновник сервісу Robinhood (ми писали про цей проект тут), болгарина Влада Теньова.

До початку роботи над власним мобільним додатком для онлайн-трейдингу Тенев працював в компанії Chronos Research, яка розробляла надшвидкий софт для HFT-компаній, банків і хедж-фондів. У багатьох випадках конкретна конфігурація використовуваної для торгівлі інфраструктури залежала від того, якими активами належить торгувати, а також які стратегії поведінки на ринку будуть використовуватися. Наприклад, інфраструктура, підходить для роботи на валютному ринку, далеко не завжди може бути конкурентоспроможною на ринку акцій або деривативів.

У 2011 році Chronos розробила дві програмні платформи, об'єднаних під єдиною назвою Zardoz (фільм з Джоном Коннері) — одна з них працювала на стандартному x86 залозі і могла бути використана для торгівлі з затримками на рівні 15 мікросекунд. Інша була оптимізована для роботи з залізом фірми Tilera, при її використанні затримки можна було знизити до значень менше 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 UDP трафіку і Solarflare Flareon Ultra SFN7122F Dual-Port 10GbE PCIe 3.0 Server I/O Adapter – Part ID: SFN7122F для TCP.



Софт

У кожної з цих карток є потрібні драйвери для роботи в режимі ядра, що дозволяє надсилати та отримувати дані через TCP і UDP в користувацькому просторі. Перемикання контексту — дорога операція в плані затримок, тому в HFT-трейдингу її потрібно уникати. Тому обробка важливих даних виноситься в ядро.

Для роботи з системою Chronos поставлялася і «кастомний» версія Gentoo Linux, яку підтримували розробники софта.

Софт працював таким обра, що модулі, що відповідають за безпосередню торгівлю працювали з конкретними ядрами процесора, а іншим процесам заборонялося їх використовувати (це також потрібно для уникнення перемикання контексту). Для цих ядер відключався локальний таймер і інші переривання.

Код логіки платформи був написаний на С і був подійно-орієнтованою (в циклі статей ми розповідали про створенні бэктестера, що працює за такою схемою). Розробники створили власні «безблокировочные» структури даних – в результаті кожен потік працював у нескінченному циклі, опитуючи на вхід свій власний FIFO.

В результаті, як вже було сказано, затримки при обробці заявок не перевищували 15 мікросекунд.

Інші матеріали на тему інфраструктури трейдингу:


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.