Алгоритмическая и автоматизированная торговля: Введение
В нашем блоге на хабре мы неоднократно поднимали вопросы, связанные с созданием торговых роботов и алгоритмических торговых систем. Сегодня мы представляем вашему вниманию пост, написанный нашим читателем — цель этой публикации заключается в том, чтобы внести ясность в терминологическую путаницу, которая окружает алгоритмическую торговлю.
Цзы Лу спросил: «Вэйский правитель намеревается привлечь Вас к управлению государством. Что Вы сделаете прежде всего»?
Учитель ответил: «Необходимо начать с исправления имен».
Для начала давайте представим главных участников процесса биржевых торгов:
- Клиент — инвестор, принимает инвестиционные решения и отдает приказы (ордера) брокеру-посреднику
- Брокер — посредник, является членом биржи и принимает приказы от клиента и передает их для исполнения на биржу, получает от биржи результаты и передает их клиенту (пример такого брокера — это как раз ITinvest — прим. ред.)
- Биржа — получает приказы от членов-брокеров, осуществляет торги, отправляет брокерам отчеты по торгам
Мы рассматриваем случай, когда брокер является чистым агентом, т.е. средством передачи ордеров клиента на биржу и отчетов — обратно. Брокеры-агенты (agency brokers) зарабатывают исключительно на комиссии, которую платит клиент брокеру за исполнение ордеров.
Электронаня торговля
До появления компьютеров и сетей движение ордеров между клиентами, брокерами и биржами осуществлялось с помощью телефона, а до появления телефона — с помощью телеграфа, а до телеграфа в седые бородатые времена — курьерами и вестовыми и даже почтовыми голубями.
В настоящее время движение ордера («order flow») от клиента через брокера на биржу у всех брокеров полностью компьютеризировано, хотя есть случаи, когда некоторые ленивые клиенты с толстыми кошельками предпочитают передавать свои ордера лично по телефону, не прикасаясь к компьютеру, но их ордера все равно заносятся у брокера в брокерский компьютер, и далее они передаются на биржу по сети как и положено в XXI веке.
Инвестор, его цель и стратегия
Инвестор занимается тем, что принимает инвестицинное решение о купле и продаже того или иного актива или целого портфолио активов. Его цель — заработать деньги.
Инвестор может принимать решение самостоятельно, руководствуясь чутьем, знаниями, инсайдерской информацией, шепотом русалок, расположением планет и полетом птиц, конфигурацией «японских свечей» («технический анализ») или квартальными отчетами компаний («фундаментальный анализ»). В принятии таких инвестиционных решений для анализа данных и расчетов многие инвесторы уже давно используют компьютеры. Торговля на основе таких расчетов называется «quantitative trading».
Получив из расчетов сигналы «продавай»/«покупай», инвестор генерирует ордер-заявку на куплю (продажу), которая отправляется к брокеру на исполнение. Если инвестор работает с целым портфолио активов, одновременных заявок на куплю и продажу может быть несколько сотен.
Автоматизировання торговля
Если инвестор может выразить свою инвестиционную интуицию, видение, стратегию в виде компьютерного кода, он может полностью автоматизировать принятие инвестиционных решений, поручив компьютеру все: от анализа поступающих рыночных данных и вычисления потенциальной прибыли-убытков до генерирования ордеров на куплю-продажу. Себе инвестор оставляет только проверку, мониторинг и расслабленную игру в гольф.
В те горячие моменты, когда у инвестора трясутся руки и гложут сомнения, компьютер бесстрастно вынесет вердикт покупать-продавать и купит и продаст в точном соответствии с заложенным в нее набором правил. И принесет прибыль. Если, конечно, набор правил верный.
Такой стиль торговли называется «автоматизированным» (automated trading). Другие названия для такой торговли: «rule-based trading» (торговля по правилам), «systematic trading» (торговля по системе). Компьютерная программа в этом случае называтся «автоматизированной торговой системой» (automated trading system) или «торговым роботом» (trading robot).
Если набор правил, по которым принимается инвестиционное решение, хранится в особом секрете разработчиком от тех, кто им пользуется, такая система называется «черный ящик» (black box), а торговля с ее помощью — «black-box trading».
Цель «автоматизированной торговли», как и любой другой проприетарной торговли — зарабатывание денег. Набор правил автоматизированной торговой системы разумеется тоже можно назвать алгоритмом, но от этого «автоматизированная торговля» не становится «алгоритмической».
Когда вы пишете «роботов» в торговых терминалах или в Visual Basic-е и запускаете их торговать на бирже, вы занимаетесь не алгоритмической торговлей, а автоматизированной проприетарной торговлей.
Алгоритмическая торговля
Термин «алгоритмическая торговля» используется для обозначения другого специфического процесса, в котором не принимаются инвестиционные решения. В алгоритмической торговле алгоритмы используются для исполнения больших ордеров с минимальными потерями.
Цель алгоритмической торговли — эффективно уменьшить затраты на исполнение ордера (execution costs), уменьшив влияние ордера на рынок (reduce market impact).
Слово «торговля» (trading) в этом термине не совсем удачное. Оно имеет слишком широкое значение и у большинства ассоциируется с деятельностью по купле-продаже, поэтому корректно называть этот процесс «алгоримическим исполнением ордера» (algorithmic order execution).
Откуда именно в алгоритмический движок попадает ордер — не суть важно, главное — его создает не алгоритмический движок. Чаще всего алго-движок брокера работает над крупным ордером, поступившим от клиента.
Исполнение ордера
До появления алгоримической торговли большие клиентские ордера в брокерских конторах обрабатывались вручную. Над ордером что называется «работали» трейдеры (working the order), аккуратно «продавливая» его на рынок по частям (slicing), руководствуясь чутьем, опытом и реакцией.
Такие ордера назывались «high touch», так как такие ордера требовали много внимания и заботы. Поток этих клиентских ордеров брокеры называют «high touch order flow», а у брокера такими ордерами занимался особый отдел трейдеров «high touch trading desk». За «ручную работу» с ордером клиенты платят брокеру самую высокую комиссию.
Почему так важно осторожно работать с большими клиентскими ордерами, читайте в разделе «Большой ордер двигает рынок» в конце статьи.
С ростом потока заявок трейдеры уже не успевали уделять должное внимание каждому большому ордеру и появилась идея использовать для этого компьютеры. Это вполне объяснимо, раз ордера поступают к брокеру электронно и уже назходятся в компьютере, то почему бы не запрограммировать компьютер простейшим правилам исполнения ордеров и поручать им рутинную работу?
Так были созданы алгоритмические движки (algorithmic engines), которые делали все то же самое, что делал вручную обычный трейдер с большим ордером, а именно: большой родительский ордер (parent order) делился, используя специальный алгоритм с заданными параметрами, на маленькие ордера (child orders) и каждый маленький ордер отправлялся на рынок в предопределенный момент времени. Компьютеры очень легко могут обрабатывать тысячи клиентских ордеров одновременно и делить их на сотни «маленьких медвежат», оставляя трейдеру время и возможность работать над другими более сложными ордерами вручную.
Как видите, по-началу алгоритмические движки были всего лишь вспомогательным инструментом для трейдеров брокерской компании, к которому они прибегали, когда исполнение клиентского ордера не требовало особого внимания, а нужно было просто дисциплинированное исполнение определенной стратегии.
Direct Market Access
Direct Market Acess — «прямой доступ к рынку», это когда брокер пропускает ордер через свою торговую систему на рынок в полностью автоматическом режиме без дополнительного ручного вмешательства.
Если ордер от клиента принимается электронно и уже находится в компьютере, почему бы не запрограммировать компьютер на выполнение определенных проверок и после этого сразу отправить ордер на биржу? Эта простая идея была реализована в начале 2000-ых годов, когда повсеместно биржи стали электронными, а брокеры стали предлагать услугу DMA своим клиентам.
В отличие от «high touch» ордеров, в DMA-сервисе к клиентским ордерам никто не прикасается, их никто не обрабатывает и не проверяет вручную. Поэтому они называются «low touch». «Low» потому что кое-какая обработка все-таки ведется: ордер проходит через торговую систему брокера, где его проверяют на валидность (validation) и соответствие различным лимитам и рискам (risk checks). Только после этого торговая система брокера отправляет ордер на биржу. Все проверки ордера проходят за доли секунды, но тем не менее они вносят свой вклад в разницу между времененем поступления ордера к брокеру и поступлением ордера на рынок.
Эта задержка («latency») нравилась не всем клиентам, и брокеры пошли на еще более смелый сервис — предоставление «naked DMA» или «sponsored DMA». В naked DMA клиент сам подключается к бирже напрямую, создавая свою собственную инфраструктуру, и отправляет свои ордера со своей торговой системы напрямую на биржу, минуя инфраструктуру брокера, но пользуясь его идентификатором.
Идентификатор брокера клиенту требуется потому, что на бирже могут торговать только члены биржи, коим является брокер, но не клиент. Т.е. все ордера, отправленные клиентом через naked DMA, отправляются от имени брокера (он выступает как sponsor, сдающий в аренду свой идентификатор и свою репутацию) под ответственность клиента. Брокер же получает информацию об ордерах клиента пост-фактум в виде протокола (drop-copy) от биржи. Такие ордера называются «zero-touch», потому что брокер к ним не прикасается вообще. В последнее время naked DMA стали прижимать правительственые регулирующие органы, особенно в США.
За пользование сервисом DMA клиенты тоже платят брокеру комиссию, пусть и мизерную.
Direct Strategy Access
Отступление: У некоторых брокеров алгоритмы исполнения называются словом «стратегии» (strategy). Просто так красивее звучит. Это вносит путанницу, потому что слово «стратегия», например, в словосочетании «инвестиционная стратегия» приобретает совершенное значение.
Где-то около 2004 года крупные брокеры стали помимо DMA-сервиса предоставлять клиентам доступ и к своим алгоритмическим движками. Теперь клиент мог прислать ордер с параметрами, где было указано, какой именно алгоритм брокера он выбирает, насколько агрессивно надо выполнять ордер, когда надо начать выполнение ордера и когда закончить. Этот особый ордер внутри брокерской инфрастурктуры пренаправляется в алгоритмический движок, который потом «работает» над ордером, отправляя на биржу его по маленьким кусочкам.
Выше я писал, что алгоритмы иногда для красоты и рекламы называются стратегиями, поэтому прямой доступ к ним называется «direct strategy access», т.е. буквальнно «прямой доступ к стратегиям». Ордера носят название «DSA orders», а поток таких ордеров называется «DSA flow».
За пользование алгоритмами брокера клиент платит брокеру еще дополнительную комиссию.
Инвестор и алгоритмическая торговля
Так как клиент-инвестор уже имеет прямой доступ к рынку через DMA-сервис от брокера, то ему ничто не мешает (если есть бюджет) создать свой собственный алгортимический движок у себя, заточенный под его собственные нужды, который будет исполнять его большие ордера, сгенерированные его автоматизированной торговой системой.
Инвестор может купить готовый (of-the-shelf) алгоритмический движок у сторонней конторы (vendor), либо нанять программистов, чтобы они написали ему свой собственный (custom built).
В любом случае у инвестора алгоритмический движок становится частью его автоматизированной торговой системы, но по-прежнему является модулем исполнения ордеров. Генерацией же ордеров занимается инвестиционная часть торговой системы.
Большой ордер двигает рынок
Главная задача брокера-агента — услужить клиенту, т.е. качественно исполнить ордер клиента, чтобы клиент, покупая не переплатил, а продавая — не потерял. Но если и переплатил, то не слишком много. И тут против брокера-агента вступает главный рыночный закон обратной связи спроса и предложения. Если клиент передает для обработки очень большой ордер, скажем продать 100.000 акций (речь идет об ордере на сумму как минимум миллион у.е.), то его нельзя просто взять и выбросить на рынок. Это моментально приведет к дисбалансу рынка, а это приведет к тому, что желающие купить будут понижать свою цену, видя что кому-то надо продать такое больше колчиество акций. Выглядит это так — продавец видит на рынке текущие котировки акции XYZ покупка/продажа 100 — 110. И посылает ордер: продать 100.000 по 100 у.е., планируя выручить 10.000.000 у.е. Неумелый брокер вываливает весь ордер на рынок, и что же он видит? Те, кто еще недавно желал купить по 100 у.е., моментально отзовут свои заявки и подадут новые заявки: нет, мы уже не хотим покупать по 100, мы хотим купить по 90. Брокер почешет в затылке и переопределит свой ордер: ладно, продаю 100.000 по 90 у.е. Если покупатели не повторят свой финт, брокер выполнит ордер, принеся клиенту на тарелочке вместо 10.000.000 у.е. всего 9.000.000. Т.е. на исполнении ордера клиент потерял 10% капитала, из-за криворукого торопливого брокера. Да еще заплатил комиссионные. Клиенту это очень не понравится.
Данный феномен называется «большой ордер двигает рынок» («moves the market»), влияние большого ордера на цены на рынке (market impact) характерно не только для финансового рынка. Если, скажем, вы привезете на базар КАМАЗ бананов, чтобы продать их побыстрее, базарные торговцы-перекупщики обступят ваш КАМАЗ и тут же начнут снижать цену, за которую они у вас согласны перекупить весь грузовик.