Битва ботов: как маркет-мейкеры сражаются на крипто-биржах | Форум о Заработке в интернете

Битва ботов: как маркет-мейкеры сражаются на крипто-биржах

blacktrader

Наш человек
В период с декабря 2017 года по март 2018 года я создал бота, который совершил сделки на рынках криптовалют на сумму около 50 миллионов долларов. Это история о том, как я попал на рынка, теорию алгоритмов бота и конкуренцию между маркет-мейкерами.





FOMO
Ноябрь 2017 года - цена биткоина стремительно растет и приближается к отметке в $10 000. Экспоненциальный рост цены каждую неделю толкает его в массовое сознание, привлекая еще больше инвесторов и двигая цену вверх.

В это время я уезжаю в отпуск с двумя друзьями. Они оба вложили немалые суммы своих средств в биткоины и получали прибыль от растущей цены. Как единственный из трех, кто даже не думал об инвестировании раньше, я ощущал, что упускаю свой шанс.

Вернувшись домой из путешествия, я первым делом нахожу онлайн-обменник криптовалюты и зачисляю на счет $500. Желая прокатится на волне, мой план прост: купить BTC на 500 долларов и увеличить мои инвестиции, если я увижу прибыль.

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

Обычно, когда мы думаем о биржевом активе, таком как акция, нам кажется, что он имеет фиксированную цену, по которой мы можем купить или продать. Например, мы можем решить, что акции Apple (AAPL) стоят $100. В действительности не существует единой цены, а есть две разные цены:

bid price - максимальная сумма, которую любой пользователь на бирже готов заплатить за актив.

ask price - минимальная сумма, за которую любой желающий на бирже готов продать актив.





Большинство покупателей готовы платить меньше, чем продавцы хотят продать, поэтому цена предложения актива всегда будет ниже цены спроса.

В случае акций Apple эти две цены, вероятно, будут очень близки друг к другу. Желание купить может составить 99,99 доллара, а продать - 100,01 доллара. Разница между этими двумя числами ($ 0,02) - это спред.

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

Когда я впервые начал смотреть на биржи криптовалют, спреды были намного больше, часто до $100. В это время BTC торговался по цене около $10000, соответственно его спред может составлять до 1% от его общей стоимости (по сравнению с 0,02% в примере Apple).

Размер спреда был следствием рыночного хаоса, который возник в декабре 2017 года. Розничные инвесторы (вы, я и любые другие люди) наводнили рынок. В результате цены были настолько изменчивы, что спреды никогда не могли стабилизироваться.

Большие спреды сами по себе это плохо, но они также дают возможность получить прибыль.

Допустим, у биткоина bid составляет $9 900, а ask - $10 000, что дает ему спред в размере $100. Если вы можете купить 1 биткоин за 9 900 долларов, а затем сразу же продать его по 10 000 долларов, вы только что получили прибыль в $100.


Makers and Takers
Если вы думаете, что это звучит слишком сладко, чтобы быть правдой, то будете правы. Одна из причин, по которой можно скептически относиться к вышесказанному, связана с вопросом: а как насчет биржевых комиссий? Чтобы увидеть, как плата вписывается в это, мы должны сделать еще один небольшой обзор того, как работают биржи.

Допустим, вы хотите купить биткоин, который торгуется по bid $9 900 и ask $10 000. Есть два основных способа сделать это:





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





В качестве альтернативы, вы можете купить чей-нибудь ордер . Это полная противоположность работе мейкера и позволит вам мгновенно купить биткоины. Однако выгода заключается в том, что ваш ордер на покупку соответствует самой низкой цене из всех ордеров на продажу. Естественно, это будет по цене bid, потому что это самая низкая стоимость, по которой кто-либо готов продать.

Прежде чем мы пойдем дальше, следует отметить несколько важных моментов, касающихся ордеров мейкеров и тейкеров:

Всякий раз, когда биткоин продается или покупается, будет задействован один продавец и один ордер.

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

Поскольку биржи хотят максимизировать ликвидность, они, как правило, взимают более высокие сборы с ордеров покупателей, чем с продавцов. Некоторые биржи, в том числе и та, которую я использовал, взимают только комиссионные сборы: продавать можно без комиссии.

Вернемся к нашему примеру. Если мы сможем купить биткоин за $9 900 и продать за $10 000, используя только ордер продавца, то у нас будет 100 долл. чистой прибыли за каждый биткоин.

Необходимость использовать заказы продавца не только для того, чтобы избежать комиссионных, но и из-за того факта, что если бы покупали, используя ордер покупателя, нам пришлось бы заплатить цену Ask - 10 000 долларов. Если бы мы затем продали по ордеру покупателя, нам пришлось бы продавать по цене bid - 9 900, теряя при этом $100.

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

Как мы уже упоминали ранее, ордеру продавца необходимо получить ордер на получение и «принять» его до того, как произойдет сделка. Заказы тейкера всегда будут «брать» лучшую цену. Если вы хотите купить биткоин по заявке продавца, то для того, чтобы заявки покупателя совпали с вашим заказом, вам придется делать ставки чуть выше цены предложения. Насколько выше предлагаемая вами цена предложения, не имеет значения, она может составлять всего лишь один цент, например $ 9,900.01.





Таким образом, первый шаг написания бота, заключается в том, чтобы иметь возможность выставлять ордера buy (maker) чуть выше текущей цены покупки. Для этого требуется один запрос API для проверки цены предложения, а другой - для отправки заказа.

Теоретически, можно просто предложить цену на один цент выше цены предложения. На практике, однако, во время между проверкой цены предложения и отправкой заказа, цена предложения часто будет меняться. Чтобы убедиться, что ваш заказ находится выше всех других заказов на покупку и, таким образом, устанавливается новая цена предложения, часто рекомендуется делать ставку на 5–10 ¢ выше текущей цены предложения.

Это гарантирует, что если поступит (берущий) ордер на продажу, он будет сопоставлен с нашим (мейкером) ордером на покупку, и мы будем покупать сколько угодно биткоинов, не теряя при этом комиссионных.

Затем мы можем сделать полную противоположность тому, что мы только что сделали, на стороне продажи. Мы проверяем текущую цену предложения и предлагаем цену ниже на несколько центов. Это гарантирует, что если поступит (покупатель) ордер на покупку, он будет сопоставлен с нашим (создателем) ордером на продажу.

Мы только что получили чистую прибыль, примерно равную спреду (разнице между ценами покупки и продажи), умноженному на сколько биткоинов мы могли торговать.





Competition
Если вы все еще думаете, что это слишком просто, чтобы быть правдой, то вы правы. Всякий раз, когда появляется очевидная возможность получения прибыли, трейдеры накапливаются, и это создает конкуренцию. Наиболее очевидный пример этого можно увидеть, глядя на конкуренцию, создаваемую маркет-мейкерами, которые толкают друг друга, чтобы установить цену предложения. (Помните, что вы должны иметь свой ордер на покупку по цене предложения, чтобы совершить сделку, когда в следующий раз поступит команда покупателя продавца)

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

Мой бот первоначально намеревался проверить цену предложения, и ставил 1 ¢ выше. Я обнаружил, что к тому времени, когда мой заказ проходил, я часто оказывался на несколько центов ниже (постоянно меняющейся) цены предложения.

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

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





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

В конце 2017 года / начале 2018 года, как правило, конкуренция по цене предложения была намного меньше. В то время я предполагал, что это связано с тем, что на биткоин больше спроса, чем предложения, объясняя, почему среди покупателей больше конкуренция, чем у продавцов.


Market Manipulation

Рыночное манипулирование относится к злонамеренным тактикам, которые трейдеры используют на рынке, чтобы получить несправедливое преимущество. Как нерегулируемый рынок, криптовалютные биржи были (и все еще) уязвимы для манипулирования. Наиболее частая ее форма - spoofing, акт размещения заказов, просто чтобы изменить видимость рыночных условий.

Чтобы привести пример, как это работает, рассмотрим пример из предыдущего предложения с ценой покупки в $9 900 и ценой предложения $10 000. Наш спред здесь составляет $100, что дает хорошую возможность для продажи на рынке. Однако, если кто-то приходит и размещает ордер на покупку по цене $ 9 999,99, то спред сокращается до 1 цента. При таком маленьком спреде кажется нереальным получить прибыль от сделки и вся деятельность прекращается.

Покупатель, размещающий заказ производителя на 1 ниже цены Ask, сам по себе не является манипулированием рынком. Фактически, если ваша биржа не взимает комиссионные с продавца, это быстрый и эффективный способ покупки биткоинов. Проблема, однако, заключалась в том, что всякий раз, когда появлялись эти ордера на покупку, они, как правило, получали наименьшую возможную сумму; 0,00001 биткоин, стоит примерно 10 ¢.

Причина, по которой другой маркет-мейкер может разместить такой маленький ордер на покупку, прямо под ценой аск, гениальна. Если другой маркет-мейкер только что смог купить BTC по цене покупки, у него есть стимул продать его по цене спроса как можно скорее. Чем дольше они продают свою криптовалюту, тем выше риск изменения цены Ask (и, следовательно, спреда) и изменения их прибыли.

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

Чтобы остановить падение цены и не дать конкурентам со стороны продажи снизить цену Ask, маркет-мейкер размещает свой ордер на продажу чуть ниже цены Ask и вставляет («подделанный») ордер на покупку чуть ниже нового Ask. Этот последний ордер будет иметь как можно меньший размер ордера (0,00001 биткоин).





Это будет иметь два эффекта:

  • Никакие другие продавцы не могут побить цену. Если вы уйдете на 1 ¢ ниже цены спроса, вы будете по цене предложения, и биржи не разрешат продавцам размещать заказы производителя по цене предложения или ниже.
  • Это уменьшает спред до 1 цента. Когда бот, создающий рынок, увидит такой небольшой спред, он, скорее всего, временно отключится, поскольку никакой прибыли не будет.
Этот второй момент крайне важен, поскольку он объясняет, почему практически все боты, делающие рынок, отключаются, когда фейковый ордер на покупку идет чуть ниже цены Ask. На самом деле, хотя спред составляет всего 1 ¢, все еще есть возможность его получить.

Предположим, что следующий заказ покупателя поступит на 1 биткоин. Первый биткойн 0,00001 будет продан маркет-мейкеру с подделанным ордером, и этот ордер будет выведен из обмена. Следующий биткоин 0.99999 будет продан ордеру по новой цене заявки, по самой высокой цене ордера ниже спуффинг-ордера.

Одним из самых больших улучшений, которые я сделал для своего бота, было разрешение игнорировать поддельные ордера при расчете спреда. Несмотря на то, что цена Ask может быть только на 1 bid выше цены покупки, мой бот будет просматривать прошлые спуффинг-ордера, чтобы определить, каким будет спред, если бы не подделанные ордера (которые все еще могут составлять $ 50–100). Если бы этот спред был достаточно большим, чтобы предоставить возможность, он конкурировал бы за размещение ордера на покупку по самой высокой цене после любого подделанного ордера. Когда поступали заказы продавцов, это означало, что биткоины стоимостью в несколько центов будут проданы спуферам, а затем остальным - мне.


2018





Первые несколько месяцев 2018 года были бурными. После того, как в декабре биткоин вырос до $ 20 тыс., колеса начали отваливаться и цена быстро падала.

Хотя это плохо для инвесторов, это дало огромные возможности для маркет-мейкеров. Высокие уровни объема как со стороны покупки, так и со стороны продажи (что означало поступление большего числа ордеров на покупку) значительно увеличили количество сделок в день, которые мог выполнить эффективный маркет-мейкер.

Этот период возможностей был относительно недолгим. После безумия января и февраля объемы начали сокращаться, что означало уменьшение возможностей для получения прибыли. Несмотря на падающие объемы торговли, количество маркет-мейкеров продолжало расти, так как на бирже появились новые боты.

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

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

В целом, с декабря 2017 года по март 2018 года я торговал BTC на сумму около 50 миллионов долларов США, а рентабельность инвестиций (ROI) составила 20,2.