Согласно оценкам GVR, среднегодовой темп прироста глобального рынка высокочастотной торговли будет составлять 3,5% в ближайшие семь лет. Ассоциируясь в первую очередь с высокими скоростями и большой прибылью, торговля с помощью технологических инструментов несет и совершенно новые угрозы, которые могут приводить к губительным последствиям.
В августе 2012 года история одного из крупнейших участников фондового рынка США, хедж-фонда Knight Capital, оборвалась буквально за час. Согласно отчету, в результате технической ошибки торгового алгоритма всего за 40 минут с торгового счета ушло около $460 млн. Торговые алгоритмы фонда представляли собой сложное архитектурное решение, и во время очередного обновления на одном из восьми серверов, которые обеспечивали их работу, произошел сбой.
Когда система была запущена вновь, новый и старый код, оставшийся на последнем сервере, начали выполняться одновременно, причем новый код использовал логику старого. Логики столкнулись, и алгоритм «сошел с ума», начав выполнять убыточные операции с бешеной скоростью. Крупного ущерба можно было бы избежать, если бы ошибку заметили на первых минутах. Однако работу алгоритма никто не контролировал. Инженеры, выводившие новый код в эксплуатацию, полагали, что все проверки выполнили программисты. А программисты даже не были осведомлены о рисках, которые может принести сбой. Неладное заметили только через 40 минут, когда увидели подозрительно низкую позицию фонда и баланс — сначала их приняли за рядовую ошибку во фронтальной системе.
Регуляторное исследование причин «моментального обвала» Knight Capital показало, что системы контроля рисков у хедж-фонда отсутствовали. Не существовало отдельной службы, которая могла бы регулировать наличие или отсутствие риск-контроля, а также не было специалистов, которые могли бы оценить зрелость и совершенство данной системы.
Инцидент Knight Capital стал, пожалуй, самым ярким в волне алгоритмических торговых сбоев, прокатившихся в период с 2010 по 2015 год. Все это привело к появлению законодательного регулирования алгоритмической торговли и контролю за рисками в США. Согласно нему, все профессиональные участники рынка обязаны следить за качеством своих алгоритмов и регулярно проводить профессиональный аудит. Нормы, принятые тогда в Америке, усваиваются также европейскими рынками, а в последние годы подобные практики начинают применяться в России.
Технологические угрозы очень опасны, однако выявить их, и тем более предотвратить, очень трудно. Причина кроется в самой механике торговли, ведь алгоритмический трейдинг — это постоянная погоня за прибылью.
- Алгоритм может работать с мизерными суммами, но скорость его такова, что в считанные минуты они могут превратиться в миллионы. Уследить за операциями на такой скорости для человека невозможно.
- Чтобы максимизировать прибыль торговые алгоритмы никогда не устанавливают физических лимитов на сумму, доступную для торгов. Но если происходит ошибка, из-за которой ломается логический лимит, потерять можно действительно все доступные деньги.
- Торговые идеи экспериментальны: каждый новый алгоритм проверяется на реальном рынке и, в случае успеха, раскатывается на полную мощность. Поэтому чтобы выживать, нужно постоянно внедрять новые и новые модели — алгоритм, который приносит прибыль сейчас, через несколько месяцев может потерять эффективность.
- При этом существует квадратичная зависимость потенциального количества ошибок от объема кода: если кода больше в два раза, то вероятность ошибок возрастает вчетверо.
Высокая частота обновлений, сверхбыстрое принятие решений и огромные объемы обрабатываемой информации заставляют постоянно идти вперед без оглядки. При этом над трейдером постоянно висит дамоклов меч, способный убить его в любой момент.
Почвой для ошибок алгоритма могут стать все пограничные ситуации и исключительные случаи. Вот лишь несколько распространенных примеров ошибок торгового алгоритма:
- Неучтенное нулевое значение. Чтобы встать между стоимостями покупки и продажи в стакане, в алгоритм зашивают формулу — сумма цены продажи и цены покупки, деленная на два. Однако в некоторых ситуациях стоимость продажи или покупки может отсутствовать. Тогда одно из значений равно нулю, и при делении пополам получается половина исходной цены. Робот может продать актив в два раза дешевле его стоимости и потерять деньги — ведь покупатели, конечно, найдутся быстро.
- Старые рыночные данные. Алгоритм смотрит на устаревшие рыночные цены. Так может происходить, потому что поток рыночных данных «завис» из-за проблем с интернет-соединением, либо потому что алгоритм не может «проглотить» этот поток из-за многократного увеличения объема, которое случается в самые волатильные моменты на рынке. Результат обычно один — принимаются неверные торговые решения, приводящие к убыткам.
- Ошибка в статических данных (которые все же иногда меняются): размер лота, шаг цены, минимальный размер сделки и так далее. Так, Мосбиржа периодически изменяет лотность некоторых торговых инструментов. Если не учесть это изменение, алгоритм продолжит думать, что торгует лотом в 100 бумаг, тогда как в реальности объем одного лота может составлять уже 1000 бумаг.
- «Переторговля». В самые волатильные моменты, когда на рынке происходит активная торговля (отправка заявок), большинство бирж спасает себя, ограничивая допустимое количество транзакций от клиента в единицу времени. Если алгоритм не умеет прогнозировать свою активность при резком увеличении объемов торгов, может получиться так, что он не успеет продать закупленное, потому что его лимит допустимого количества заявок на единицу времени будет исчерпан.
Чтобы избежать таких ошибок, нужен большой опыт, либо ресурсы для контроля алгоритма: свободное время и квалифицированные специалисты. Как правило, у частных инвесторов нет ни того, ни другого, и они находятся в самой уязвимой позиции. Неслучайно те из них, кто добиваются успеха, обычно первым делом расширяют свою команду и нанимают IT-специалистов, способных поддержать технологическую сторону процесса.
У банков и хедж-фондов в этом смысле больше возможностей, среди них практики контроля рисков в алгоритмической торговле начинают распространяться все активней. Однозначно принятой методики пока нет. Некоторые банки используют менеджерский подход: при разработке и запуске алгоритмов трейдеров обязуют проверять их на соответствие ряду условий.
Другой подход — технологический — заключается в том, чтобы создать отдельный от алгоритма фреймворк, который будет проверять валидность сигналов перед отправкой ордера на биржу. Особенность такой библиотеки в том, что она работает отдельно от трейдинговой машины, а значит, может быть хорошо протестирована и обновляться гораздо реже, чем запускаются новые торговые идеи. С точки зрения рисков, один такой фреймворк повышает надежность целого ансамбля торговых алгоритмов, а значит повышает качество торговли.
Контроль рисков торговых машин — это чрезвычайно сложная с технологической точки зрения задача. Специалист должен уметь читать сложный код алгоритмической торговли и разбираться в большом списке задействованных технологий.
Кроме того, к таким системам предъявляются высокие требования по быстродействию (low-latency) и скорости реакции на новую информацию от рынка (tick-to-trade): любые проверки перед отправкой ордера должны проходить с нулевыми задержками, никак не влияя на процесс торговли, потому что замедление повышает риск потери. Это вызов для тех, кто любит разбираться в производительности и добиваться того, чтобы все работало очень быстро. Код, как правило, пишется на языке Java — а значит нужно в деталях понимать, как работает Java Virtual Machine. И, безусловно, в полной мере владеть стандартами разработки. Помимо прочего, работать в этом направлении невозможно без понимания того, как устроена финансовая сторона процесса.
Таким образом, на стороне риск-менеджмента нужны по сути такие же кванты, как и на стороне трейдинга — так называемые Risk Quants: специалисты с блестящим знанием математического аппарата, численных методов, торговых стратегий, продуктов финансовых рынков, и кроме того, высоко мотивированные на достижение бизнес-результата. Это уникальные эксперты, которые крайне высоко ценятся компаниями, и станут еще более востребованы в будущем. Пойти по такой карьерной траектории могут индивидуальные трейдеры, которым интересно заниматься своим делом, но больше не хочется участвовать в торговой гонке. И, конечно, это новый профессиональный путь для высококвалифицированных разработчиков.
Сейчас специалистов с такой сильной подготовкой крайне трудно найти, однако я убежден, что именно они сделают новый виток в развитии данной индустрии. Алгоритмический трейдинг в свое время стал первым направлением, где финансы объединились с технологиями, и с каждым годом мы все больше убеждаемся, что будущее банковской сферы неотделимо от технологий.