В нашем блоге на хабре мы неоднократно поднимали вопросы, связанные с созданием торговых роботов и алгоритмических торговых систем. Сегодня мы представляем вашему вниманию пост, написанный нашим читателем — цель этой публикации заключается в том, чтобы внести ясность в терминологическую путаницу, которая окружает алгоритмическую торговлю.
Цзы Лу спросил: «Вэйский правитель намеревается привлечь Вас к управлению государством. Что Вы сделаете прежде всего»?
Учитель ответил: «Необходимо начать с исправления имен».
Для начала давайте представим главных участников процесса биржевых торгов:
- Клиент – инвестор, принимает инвестиционные решения и отдает приказы (ордера) брокеру-посреднику
- Брокер – посредник, является членом биржи и принимает приказы от клиента и передает их для исполнения на биржу, получает от биржи результаты и передает их клиенту (пример такого брокера — это как раз 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) характерно не только для финансового рынка. Если, скажем, вы привезете на базар КАМАЗ бананов, чтобы продать их побыстрее, базарные торговцы-перекупщики обступят ваш КАМАЗ и тут же начнут снижать цену, за которую они у вас согласны перекупить весь грузовик.
Комментарии (25)
kentastik
13.08.2015 13:22А где css? yadi.sk/i/sTylVMhviRjc7
dyadyaSerezha
13.08.2015 14:44+1При каком объеме собственных заказов продвинутому клиенту (со своей компьютерной инвестиционной и торговой частями) выгоднее купить собственное место на бирже, чем пользоваться посредничеством брокера?
webmascon
14.08.2015 13:12объем торгов здесь не играет никакой роли. все толстые жирные инвесторы работают через брокеров просто потому что так удобнее. Если бы инвесторы покупали место на каждой бирже, где они торгуют ценными бумагами, у них бы закончились страницы в паспорте. ведь членство на каждой бирже (а членство стоит больших бабок) требуется еще и собственного подключения к ней — т.е. требует капиталовложения в инфрастуктуру и программистов. а инвестору это надо? Ведь у брокера есть все готовое. Плюс, с одной и той же биржей инвестор может торговать через разных бркоеров, просто направляя из соей системы FIX-ордера одному или другому — кто больше улыбнется.
iCubeDm
13.08.2015 14:55Каковы средние ставки по комиссии? Кто, в основном, является инвесторами? Насколько сложно играть на бирже через брокера частному лицу?
itinvest
13.08.2015 15:02Средние значения сказать сложно, существуют разные тарифы, подходящие под разные стратегии работы на рынке. Наши тарифы можно посмотреть тут.
Частные лица, как правило, только через брокеров и работают на бирже, с технической точки зрения для клиента тут ничего сложного нет (устанавливается торговый терминал и вперед), но нужно, конечно, понимать, что происходит на рынке, иначе депозит долго не проживетiCubeDm
13.08.2015 15:36Ну тут разумеется. В принципе, без базовых технических и экономических знаний лучше не соваться, а чтобы зарабатывать, нужны углубленные знания)
Но меня интересует вот какой вопрос: что, если я, как частное лицо, захочу поколдовать с автоматизацией. Это все придется реализовывать на своей стороне или всё-таки можно получить доступ к апи ваших движков, например?itinvest
13.08.2015 16:52У нас есть API самой торговой системы, соответственно, можно написать работа и подключить его к ней. Либо, если не нужен робот, а нужна небольшая автоматизация, то у нас есть торговый терминал SmartX, к которому есть плагин для написания торговых скриптов на специальном языке TradeScript (он довольно простой, примеры кода есть вот в этом посте)
webmascon
14.08.2015 13:15> или всё-таки можно получить доступ к апи ваших движков, например?
а зачем вам доступ к апи? разве простого дубового FIX-а не достаточно?
webmascon
14.08.2015 13:08> Кто, в основном, является инвесторами?
все инвесторы-клиенты делятся на две группы: institutional investors — организации и individual investors — личности. Инвесторы-организации это большие денежные мешки, ворочающие миллиардами чужих денег: фонды (паевые, хедж-фонды, фонды доверительного управления активами), страховые компании, пенсионные фонды, профсоюзные фонды, суверенные фонды, фонды общественных организаий и образовательных учреждений, контры проприетарной торговли. к инвесторам-индивидуалам относятся все остальные: все кто торгует по мелочи лично — вы, я, тетя Маня, дей-тредер из соседней квартиры. Инвесторы-индивидуалы представляют собой лилипутов по сравнению с инвесторами-организациями. И в соревновании за внимание брокера индивидуалы стоят в самом конце длинюююющей очереди
elite7
29.08.2015 12:46>Главная задача брокера-агента – услужить клиенту
Главная цель брокера — это его прибыль.
Знание о крупном ордере клиента можно использовать в своих целях, где гарантия, что брокер, приняв большой ордер клиента, не будет использовать эту информацию для косвенного повышения собственной комиссии?webmascon
30.08.2015 07:08гарантия в уголовном кодексе. то о чем вы говорите называется front-running и карается отруданием рук
elite7
31.08.2015 12:53+1Речь не о мгновенном выставлении ордера перед ордером клиента (то что вы видимо назвали front-running)
Речь о более сложном алгоритме, когда заявки клиента обрабатываются, скажем, в течении недели маленькими порциями, а некто, зная эту информацию, за минуты до заявок бездоказуемо использует эти маленькие порции, сдвигая лучшие цены покупки и продажи.
Основной мой посыл — брокер вам не друг, показывать и давать ему любую информацию — прямой себе убыток.webmascon
31.08.2015 17:32> Речь о более сложном алгоритме, когда заявки клиента обрабатываются, скажем, в течении недели
это что за клиент такой который на неделю вперед знает куда рынок двигается, что готов выставлять заявки на целую неделю вперед?
> Основной мой посыл — брокер вам не друг, показывать и давать ему любую информацию — прямой себе убыток.
брокер конечно не друг, но брокеров много, так что что какому брокеру показывать — решает инвестор. а если инвестор решит, что брокер играет против него — то он просто забьет на такого брокера и будет выставлять свои заявки через другого. тоже мне бином ньютонаelite7
01.09.2015 21:25> это что за клиент такой который на неделю вперед знает куда рынок двигается, что готов выставлять заявки на целую неделю вперед?
Клиент не знает. Брокер не знает. Никто не знает. Если бы кто-то обладал такой информацией, он бы сделал торговую систему — святой грааль, извлекающую прибыль из рынка.
Речь все же шла про Где-то около 2004 года крупные брокеры стали помимо DMA-сервиса предоставлять клиентам доступ и к своим алгоритмическим движками. Теперь клиент мог прислать ордер с параметрами, где было указано, какой именно алгоритм брокера он выбирает, насколько агрессивно надо выполнять ордер, когда надо начать выполнение ордера и когда закончить. Этот особый ордер внутри брокерской инфрастурктуры пренаправляется в алгоритмический движок, который потом «работает» над ордером, отправляя на биржу его по маленьким кусочкам.
Здесь не указаны сроки выполнения ордера, минуты, часы или недели. Но в любом случае, доверять «движку» брокера я бы настоятельно не рекомендовал. В идеале брокер не должен знать, и даже не должен мочь предсказать время и объем ордера, или размер его кусочка, всё это чувствительная информация, за которой идёт охота через предоставление «вкусных» API, отложенных стоп уровней и так далее.
>но брокеров много, так что что какому брокеру показывать — решает инвестор. а если инвестор решит, что брокер играет против него — то он просто забьет на такого брокера и будет выставлять свои заявки через другого. тоже мне бином ньютона
Брокеры конкурируют по тарифам, доказательств, что брокер играет против клиента на анонимном рынке заявок, — нет.
Да и вряд ли появятся. Ну сдвинулся рынок перед или сразу после вашей заявки. И что? Где доказательства?
Вот например, брокеры предоставляют под залог ценных бумаг, так называемое маржинальное кредитование. Деньги к примеру даются в долг под 15 годовых в валюте. Но ни один брокер не предоставляет клиентам возможность кредитовать других клиентов. То есть чтобы мои средства предоставлялись под 10 процентов годовых в валюте другим клиентам, а 5 процентов брокер брал бы себе. То есть предоставлять маржинальный кредит может только брокер. Это игра в одни ворота в пользу брокера.webmascon
03.09.2015 14:43> Здесь не указаны сроки выполнения ордера, минуты, часы или недели.
вообще-то ордер назначается для выполнения либо на один день либо на одну торговую сессию — не больше
> Но в любом случае, доверять «движку» брокера я бы настоятельно не рекомендовал.
ну это не ко мне рекомендации.
> В идеале брокер не должен знать, и даже не должен мочь предсказать время и объем ордера, или размер его кусочка, всё это чувствительная информация, за которой идёт охота через предоставление «вкусных» API, отложенных стоп уровней и так далее.
ерунду какую-то вы пишете. если вы работаете с agency-брокером то брокер занимается только выставленеим на биржу заявок клиентов. и сам торговать не имеет права. и сливать эту информацию не имеет права. речь разумеется не о бркоерах Пупкин и сыновья а о таких брокерах как Credit Suisse, Goldman Sachs, Morga Stanley, UBS — которым репутация дороже всяких «отложенных стоп уровней»
> Брокеры конкурируют по тарифам, доказательств, что брокер играет против клиента на анонимном рынке заявок, — нет.
ну как же нет? agency-брокер не играет вообще никак — на за клиента ни против.
> Вот например, брокеры предоставляют под залог ценных бумаг, так называемое маржинальное кредитование.
зачем Fidelity Investment какие-то маржинальные кредитования?
elite7
16.09.2015 22:32Как вы можете доказать, что брокер сливает информацию, если он это делает, но вы этого не видите?
Ответ: никак. Или покажите способ. Постулировать утверждения недостаточно. Нужна верификация.
При грамотном использовании информации, вы не как не можете доказать, что брокер использует против вас информацию о ваших ордерах.
Брокеру можно верить, если вы верующий. А с деньгами нужно никому не верить.
maydjin
Спасибо за статью.