Когда трейдер получает от институционального клиента ордер большого размера, перед ним стоит классическая проблема, которая называется trader’s dillema.
Вариант 1: Весь большой ордер на продажу (Sell order) выбросить на рынок сразу. Это увеличит предложение на рынке, а увеличение предложения неизбежно приведет к падению цены, т.е. ордер «сдвинет рынок». В результате акции инвестора будут проданы за меньшую цену, чем он ожидал.
Вариант 2: Трейдер выкладывает большой ордер по кусочкам в течение торгового дня. В этом случае исполнение ордера растянется на длительный период времени торгового дня, в то время как инвестору деньги за акции нужны «вот прям сейчас». За время исполнения ордера могут произойти какие-то события, утечка информации, просто какие-то изменения цены из-за действия других участников торгов. В результате акции опять-таки будут проданы не по той цене, по которой ожидал инвестор.
Значит трейдер стоит перед выбором: какой риск более приемлем и какой риск более вероятен — риск сдвинуть рынок большим ордером, но получить деньги за акции прямо сейчас, или риск опоздать с исполнением.
Если трейдер принимает второй вариант решения, он может выкладывать ордер по кусочкам вручную, или доверить эту операцию алгоритмическому движку. Трейдеру остается только выбрать алгоритм, из всех, которые реализованы в алгоритмическом движке, задать его параметры и отправить ордер на исполнение. Алгоритмический движок начнет свою работу и по мере исполнения ордера будет присылать отчеты трейдеру. Трейдеру остается только следить за тем, что все идет по плану, занимаясь какими-то более важными ордерами.
Параметры, которые трейдер выставляет в выбранном алгоритме, зависят от той же дилеммы трейдера. Если уж он собирается делить большой ордер на части, то в параметрах он указывает, например:
- к какому времени ордер должен быть исполнен по частям: за 2 часа от данного момента времени или к концу торгового дня;
- в какой момент времени первая часть ордера должна быть отправлена на исполнение: прямо сейчас или, скажем, за час до обеда;
- как именно алгоритм должен делить ордер на части: на равные части, на пропорциональные части;
- как именно алгоритм должен выставлять цену каждого ордера: пассивно, агрессивно;
- что именно должен делать алгоритм, если ордер не успевает полностью исполниться к назначенному времени: не пытаться исполнить его, или перейти к более агрессивной попытке его исполнить;
- и так далее
В алгоритмическом движке у всех брокеров обычно реализуют множество стандартных алгоритмов, которые присутствуют как обязательные. Их наличие просто необходимо для повседневной работы трейдера, например:
- TWAP,
- VWAP,
- POV,
- Imlementation Shortfall.
В дополнение к стандартным есть еще проприетарные алгоритмы, которые уже разработаны конкретным брокером для своих трейдеров и клиентов. Эти алгоритмы специфичны, например, для какого-то рынка, для каких-то ценных бумаг, или для какой-то конкретной торговой инфраструктуры, к которой имеет доступ данный конкретный брокер. Экзотические алгоритмы с экзотическими названиями являются этакой вишенкой на торте стандартных алгоритмов, которыми каждый брокер пытается переманить клиентов у своих конкурентов.
Вот, например, как представляют свой список алгоритмов ведущие банки мира:
Еще раз хочу напомнить, речь здесь идет об алгоритмической торговле, а не об автоматизированной. Алгоритмы, о которых я тут рассказываю, не используются для получения прибыли, а используются для исполнения ордера с минимальными потерями. Это очень важно помнить, чтобы понимать контекст статьей, опубликованных в этом блоге.