Высоконагруженные системы // Александр Торопов

Думай как человек, торгуй как зверь! Алгоритмическая торговля на современных финансовых рынках

Facebook
Twitter
Google+
Pinterest
Vkontakte
Odnoklassniki
458 0
Кто и зачем занимается высокочастотным трейдингом, какой для этого нужен софт, насколько важна скорость операций и почему в этой сфере «медленный» значит «мертвый»? Каковы причины «падения» дата-центров, и как случаются молниеносные банкротства компаний из-за ошибок в алгоритмах и влиянии регуляторов на этот рынок

Меня зовут Александр Торопов. Я работаю в компании Itiviti. Мы разрабатываем и продаем софт для электронной торговли на финансовых рынках, но сами не торгуем, так как являемся IT-компанией. Наше программное обеспечение используют трейдинговые компании, банки, брокеры и хедж-фонды в разных странах мира.

Я отвечаю за технологическое развитие одной из таких систем — Tbricks, высокопроизводительной платформы для высокочастотной алгоритмической торговли.

В этой статье я расскажу, что именно мы делаем, для чего нужен алгоритмический трейдинг и как работают инструменты, которые позволяют торговать на рынке автоматически. Давайте начнем.

Когда возникла алгоритмическая торговля и какова ее роль на фондовом рынке

Если сегодня вы проводите сделку на фондовом рынке как частный инвестор, есть большая вероятность того, что вы совершите ее против алгоритмического трейдера. Более того, даже ваша заявка, скорее всего, будет исполнена алгоритмом. Например, на Московской бирже доля высокоскоростных трейдеров в объеме торгов акциями, деривативами и валютой сейчас составляет около 50%. А на американских рынках — 70–80%.

Впервые алгоритмическая торговля возникла в 70–80-х годах, когда появились вычислительные машины. Условно говоря, начиналось всё с того, что специалисты получили возможность обсчитывать финансовые инструменты не один раз ночью на счетах, а три-четыре раза в течение дня. Дальше этот процесс набирал обороты, как снежный ком: чем больше становилось людей, которые торговали автоматически, тем больше происходило действий на рынке и тем сложнее их было обрабатывать вручную. Так появилась алгоритмическая торговля. По сути, это автоматизация рутинных действий, которая позволяет трейдеру сократить время анализа биржевой информации и совершения сделок.

В результате если в 70–80-е годы средний срок владения одной акцией в США исчислялся годами, то сегодня он измеряется днями или месяцами, а для деривативов и вовсе часами. Роботизированные операции начинают всё больше влиять на рынки, привлекая внимание и регуляторов, и представителей биржевой инфраструктуры.

Так, среди положительных эффектов алгоритмической торговли на рынках можно выделить:

  • увеличение ликвидности за счет увеличения количества участников и роста объема рыночных операций;
  • выравнивание цен между рынками за счет трейдеров-арбитражеров, которые покупают там, где дешевле, и продают там, где дороже;
  • рост привлекательности рынков для инвесторов за счет того, что рынок становится более доступным и ликвидным.

Кто использует инструменты алгоритмической торговли

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

Один из главных барьеров — стоимость доступа к рынку. На самом деле, все активные участники торговли находятся чуть ли не в одном и том же дата-центре, что и биржи, а место там стоит дорого. Поэтому в основном на рынках алгоритмически торгуют именно профессиональные участники торгов, которые вкладываются в инфраструктуру и программное обеспечение.

Какие технические решения обеспечивают работу торговых алгоритмов

Основная форма алгоритмической торговли — это высокочастотный трейдинг (High Frequency Trading, HFT). В ней существует много алгоритмов, сложность которых постоянно увеличивается. И именно различия в алгоритмах определяют виды торговли — market making, volatility trading, arbitrage, hidden eye и другие. HFT отличается высокой скоростью совершения сделок — они проводятся буквально за микросекунды.

Как такая скорость обеспечивается с технической стороны? Во-первых, чтобы быть быстрым, нужно находиться физически близко к рынку. Серверы, на которых работает софт для алгоритмической торговли, должны иметь возможность колокации, то есть располагаться в том же дата-центре, что и серверы биржи.

Во-вторых, это, конечно же, «железо». Насколько я знаю, раньше часто использовали специализированные high performance серверы, оптимизированные под определенные задачи, но сейчас от этого отошли. Подобный подход теперь применяется только нишевыми участниками или для решения небольших подзадач, а в большинстве случаев используются стандартные серверы, например на Linux, укомплектованные современными процессорами, памятью, дисками и так далее.

То же самое касается и сверхбыстрых специализированных серверов/коммутаторов. Обычно в них возникает потребность, если это кусочек «пазла» — того, как трейдер хочет торговать на рынке, и без него сделать этого не сможет. В своей лекции [выше] в связи с этим я отдельно рассказываю об использовании FPGA и microwave links.

И третий, самый важный момент — быстрый софт. «Железо» могут купить почти все, а вот быстрый софт — это то, что, можно сказать, отличает одних трейдеров от других. И для того чтобы его создавать, нужно понимать, как работает «железо», операционная система, а также библиотеки и фреймворки, которые вы используете.

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

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

Почему Tbricks — это не высоконагруженная система в классическом понимании

Каждый клиент, который использует нашу систему, не делит «железо» с другими пользователями или трейдерами. То есть у нас нет того, что называется multitenancy, — многопользовательского режима, где для каждого клиента создается изолированное окружение, но при этом используется общее «железо». Почему это важно? Потому что, опять же, если вы хотите быть быстрым, вы не должны зависеть от других пользователей. То есть если другие клиенты будут нагружать систему своими задачами, то в тот момент, когда вычислительные мощности понадобятся вам, их там может не оказаться в достаточном объеме. Поэтому мы практически не работаем с клаудом, а все наши инсталляции — это on-premise-инсталляции с физическим «железом».

Кроме того, мы считаем нормой, когда в обычном состоянии «железо» наших клиентов работает на 20–30%. Это необходимо как раз для того, чтобы, когда на рынке случается повышенная волатильность, у алгоритмов всегда оставались мощности для работы.

Раньше существовала очень хорошая иллюстрация — Дональд Трамп. Когда бывший президент США приходил в Twitter с очередным громким заявлением, волатильность рынков увеличивалась и мы практически в реальном времени наблюдали, как нагрузка на системы наших клиентов возрастает, но они продолжают работу без просадок в производительности.

Таким образом, при нормальной ситуации наши системы работают на 20% мощности, а 20% времени — на 80% или даже на все 100%.

К слову о непредвиденных ситуациях, в своей лекции, которая размещена выше, я подробно рассказываю про падение стокгольмского дата-центра, где располагалось много финансовых институтов, которые работают на рынке, и сам стокгольмский рынок. Это было интересное событие, и оно имеет аппаратную подоплеку.

Поговорим также и об ошибках в алгоритмах. В нашей практике был кейс, когда клиенты были вынуждены ликвидировать компанию из-за ошибки в своей торговой стратегии. А еще сбои в работе алгоритмов приводят, например, к так называемым flash-crash. Последний подобный обвал произошел 7 мая, когда курс доллара внезапно опустился до 72,0025 рубля — минимума с июля 2020 года.

Какие тренды в развитии программного обеспечения для алгоритмической торговли существуют сегодня

Сегодня все продукты, которые нацелены на торговлю на рынке, так или иначе различаются по быстродействию. То есть мы пишем софт, и он работает на хороших, мощных, но стандартных серверах. Конечно же, если кто-то создаст под себя, скажем, какие-то микросхемы или сделает свое кастомизированное «железо», мы с ними никогда в жизни не сможем конкурировать. Однако это очень дорого и скорость к изменениям у такого решения нулевая. То есть если в какой-то момент вы захотите торговать немного по-другому, вам нужно будет всё переделывать.

Поэтому, наверное, один из трендов, который я вижу в индустрии, — это то, что пользователи хотят быть быстрыми, но еще и быстро меняться. И баланс между скоростью физической обработки информации и скоростью изменения, на мой взгляд, определяет будущее. Потому что рынки меняются. Например, в 60-х годах торговали только акциями, и кроме них ничего не было. А сейчас существуют акции, опционы, очень популярные в последние годы ETF, свопы — сотни видов инструментов, которые рынок создает для того, чтобы в том числе решать свои задачи. Их тут же начинают использовать трейдеры, и поэтому им необходимо быстро адаптироваться к изменениям. Кроме того, важный драйвер изменений — новые правила регуляторов рынка. Если система им не соответствует — использовать ее для торговли нельзя.

И второй тренд — это консолидация. Раньше было очень много компаний, которые вели свою собственную разработку торговых систем, и много вендоров, которые предоставляли нишевые решения. Сейчас же клиенты оптимизируют стоимость и хотят иметь одного-двух вендоров, которые могут предоставлять им полный спектр услуг от софта до хостинга «железа». Думаю, что это общий технологический тренд — экосистема, — когда всё находится в одном месте и хорошо интегрировано. То же самое происходит и в нашей индустрии.

Подводя итог, скажу, что сфера алгоритмической торговли стремительно меняется как с точки зрения продукта и требований рынка, так и с точки зрения технических решений. У нас точно не заскучаешь! Лично мне эта сфера близка еще и тем, что со времен школьных и университетских олимпиад мне нравится создавать быстрые алгоритмические решения.

Что еще почитать о технологиях в алгоритмической торговле?

Для широкого круга читателей рекомендую:

  • книгу американского писателя и журналиста Майкла Льюиса Flash boys
  • книгу американского математика Эдварда Торпа «Человек на все рынки»
  • художественный фильм «Операция „Колибри“» о том, как двое братьев тянут кабель между биржами — это приукрашенная, но основанная на реальных событиях история.

Для тех, кто хочет глубже разобраться в теме, советую еще три книги:

    ПОДПИШИСЬ НА НАШУ ТЕХНО-РАССЫЛКУ
    ПОДПИШИСЬ
    НА НАШУ ТЕХНО-РАССЫЛКУ