Высокочастотная торговля на бирже Coinbase
Совсем недавно я начал алгоритмическую торговлю на Биткойн-бирже от Coinbase. Прочитав о высокочастотной торговле в книге Майкла Льюиса «Flash Boys: Высокочастотная революция на Уолл-стрит», я решил дать себе шанс в этом торговом стиле, пусть даже моя торговля и будет довольно любительской.
Опыт оказался очень увлекательным, как в техническом плане, так и в стратегическом. Написание логики алгоритма, который сам по себе контролирует денежные средства, является очень странной и захватывающей вещью. Первоначальные потери и знание о том, что любая ошибка в программе буквально приведет к проигрышу денег очень меня пугали.
Биткойн является невероятно открытой системой, которая к тому же, особенно дружественна к обычным программистам-любителям. Биткойн-биржи имеют открытые API, позволяющие любому желающему написать софт и начать торговать. Нет никакого премиум-доступа или привилегированных дорогих способов торговли. Всё совершенно прозрачно и открыто. Мне это нравится.
Пока я занимался разработкой своего торгового бота, я осознал сколь велика в такого рода играх может быть стратегическая составляющая. Биржи уже давно наводнены изобилием торговых роботов, и в этих водах водится немало акул. Алгоритмы пляшут друг вокруг друга среди полнейшего хаоса. Используется большое количество диверсифицированных стратегий. Это чем-то напоминает конкурентную борьбу микробов за выживание. Попав в эту среду, я сразу же почувствовал присутствие других игроков.
Алгоритмическому трейдеру необходимо занять определенную нишу. Он извлекает прибыль из различных неэффективностей рынка. В идеальном рынке действия алготрейдеров (да и вообще трейдеров) не приносили бы ни копейки. Именно потому что рынки по своей природе не обладают сто процентной эффективностью, алгоритмические трейдеры могут извлекать некоторую выгоду для себя. Эксплуатируя небольшие неэффективности, проскальзывание, можно понемногу забирать прибыль с рынка. И если крупные игроки сами по себе являются тяговой силой рынка, мелкие «рыбешки» — алготрейдеры стараются следовать за этой силой, сглаживая последствия действий таких «акул». У всех на рынке есть свои ниши.
График глубины книги ордеров на бирже CoinbaseЕще одним парадоксом является то, что я не могу раскрыть свою торговую стратегию, без ущерба для самого себя. Краткое описание торгового алгоритма фактически будет приглашением конкурентов: немного потрудившись они смогут перенастроить свои алгоритмы, чтобы откусывать часть моей прибыли. Однако, действительно катастрофой стало бы полное раскрытие логики действия моего бота. Зная каждый его следующий шаг, вы могли бы подстроить для него ловушки, в которых он раз за разом терял бы деньги. Это поддерживает мою паранойю о том, что кто-нибудь может наблюдать за действиями моего бота с целью понять его стратегию. Я с ужасом представляю себе ситуацию, когда я подхожу к компьютеру и вижу свой торговый счет опустошенным, потому что некто алгоритмически обыграл его, вытягивая по копейке с каждым новым циклом.
Практически все заявки здесь выставлены ботамиС другой стороны, стратегия моего бота чрезвычайно консервативна и его довольно трудно обыграть. В основном он занимается разновидностью маркет-мейкинга, обеспечивая биржу Coinbase ликвидностью. Он оценивает расположение ордеров и отмечает для себя места со слабой ликвидностью (там где мало ордеров). Возможно, в какой-то момент он решит, что на стороне покупателей не хватает спроса. Он может разместить лимитные ордера на покупку и продажу, расставив их как сеть небольших ловушек на различной глубине стакана. То как он это сделает, зависит от известных ему рыночных условий. Если после этого кто-то совершит крупную сделку, он может удовлетворить ближайшее предложение по лучшим ценам. Это может привести к срабатыванию одного из моих ордеров, ожидавшего своей очереди по несколько более выгодной цене. Это и есть маркет-мейкинг. Это очень консервативная стратегия, хотя я и добавил в неё некоторую дополнительную логику предсказания будущего направления цены. Но в целом, такая торговля чрезвычайна скучна.
Маркет-мейкинг социально полезен. Чем более высокую ликвидность обеспечивают маркет-мейкеры, тем труднее вызвать непредсказуемые всплески цены актива. Маркет-мейкеры сужают спред. В целом маркет-мейкерство является своего рода ветхим заветом успешных практиков с Уолл-стрит, при этом большинство людей даже не подозревают о существовании подобного класса стратегий.
Другие боты используют множество отличных от маркет-мейкерства стратегий. Некоторые из них торгуют межбиржевые спреды (межбиржевой арбитраж). Успешность при таком подходе полностью зависит от скорости исполнения ордеров. Если кто-то мгновенно продаст 1000 биткойнов на BitfineX, цена на бирже Coinbase синхронно отыграет ценовой всплеск, потому что арбитражеры как можно быстрее постараются отыграть эту неэффективность, тем самым нейтрализуя её. Другие стратегии заточены на обман других ботов. Есть и те, которые пытаются вызвать испуг у людей объемными ордерами на покупку или продажу, чтобы заставить их совершить нужные манипулятору действия и нажиться на этом. Я уверен, что есть классы стратегий, о которых я даже не подозреваю.
В практическом плане, мой бот должен действовать очень быстро. Если задержка между отменой и постановкой заявок превышает несколько секунд, изменение рыночных условий могут сделать новые ордера неуместными для текущей ситуации. Выставляемые мной ордера соответствуют здравой логике о том, что бот правильно понимает актуальное состояние книги ордеров (стакана). А оно очень быстро меняется. В течение секунды шквал новых ордеров может вызвать существенное изменение ситуации, делая подготавливаемые ботом в данный момент ордера неактуальными в новых реалиях.
Я также должен быть начеку, наблюдая за поведением враждебных ботов, пытающихся быстро выставлять и снимать крупные заявки с намерением обмануть других ботов. Чем быстрее мой бот получает актуальную рыночную информацию, тем менее он подвержен опасностям такой тактики контрагентов. Мой бот имеет дополнительную логику для предотвращения попыток обмана ложными объемными ордерами, выставляемыми другими ботами.
В этой погоне за скоростью, я вынужден думать о технических деталях, в которых ранее я не очень разбирался. Мне пришлось распараллелить множество функций. API Coinbase не позволяет отменить все ордера за раз, и я вынужден отменять их множеством отдельных запросов, посылаемых одновременно. Также, у Coinbase недостает функции создания множества ордеров за раз, поэтому по аналогии с отменой, мне приходится посылать множество одновременных запросов на создание ордеров. Решение подобных задач синхронизируемым алгоритмом потребовало бы нескольких секунд, что недопустимо в моём случае.
Забавно, сколь сильно человеческое чувство времени не подходит при торговле ботами. Даже доли секунды могут быть безнадежно долгими. Старания в пол силы или работа на скоростях в половину медленнее, чем нужно вовсе не гарантирует снижение прибыли лишь в два раза: вы лишаетесь всей прибыли, а порой даже получаете убыток. Углубляясь в дебри алгоритмической торговли, нужно проникнутся жизненными циклами ботов, растянув собственную концепцию времени до миллисекунд. На такой шкале мой собственный бот по прежнему видится мне медлительным.
По крайней мере, мне удалось добиться очень быстрой осведомленности бота о состоянии книги ордеров (стакана). Он считывает поток новых ордеров. Каждое новое событие в этом потоке является некоторым изменением в состоянии книги, поэтому мне необходимо поддерживать её актуальное состояние, считывая все новые события, как только о них приходит информация. Процесс также распараллелен. На самом деле удивительно, насколько быстро всё это работает: количество перестановок ордеров в среднем происходит 20 раз в секунду.
Итак, мой бот в основном предоставляет ликвидность. На этом он зарабатывает небольшие, но стабильные деньги. На его торговых счетах содержится примерно одинаковое по стоимости количество средств в биткойнах и долларах, так что резкое изменение курсов может вызвать некоторые потери в одной из валют. Однако, в целом он делает приличную прибыль, если сравнивать с инвесторской корзиной 50 на 50 состоящей из биткойнов и долларов.
Мой бот лучше всего зарабатывает когда на рынке присутствуют высокие объемы торгов, а колебания цен минимальны. Являясь поставщиком ликвидности, он сглаживает ценовые всплески, которые были бы куда сильнее, не будь на рынке маркет-мейкеров. В некоторых случаях, когда цена резко колеблется в разные стороны, бот может терять деньги. Я обнаружил что наиболее опасными являются ситуации, когда объемы торгов низки. Мой бот пытается оценить объемы торгов и подобрать соответствующую глубину размещения заявок. Это ограничивает риски в ситуациях крупных ценовых всплесков ценой снижения количества исполненных заявок.
Я также обнаружил значительное количество «шума» на своем балансе. Поскольку цена колеблется, мой бот периодически теряет деньги. Он может терять их 45% времени, но остальные 55% времени он их зарабатывает, что в долгосрочной перспективе приводит к прибыли. Часто проверяя баланс можно регулярно видеть потери. Это сродни тому, как если бы вы имея проверенную стратегию, приносящую 10% в год на задействованный капитал, но при этом приносящую деньги только в 50% сделок, наблюдали бы убытки в половине случаев. Закон больших чисел работает только на достаточно длинных промежутках времени (больших выборках), заставляя ваш счет расти постепенно.
По началу мой бот был чем-то вроде хобби. Однако, со временем я осознал, что то, чем он занимается действительно необходимо. Одной из наибольших проблем Биткойна является то, как он покупается и продается. Недостаточная ликвидность на биржах — это огромная проблема. Сравните её с ликвидностью практически любого другого финансового актива и вы сразу же ощутите разницу. Трейдеры извлекают огромные прибыли поддерживая определенный уровень рыночной эффективности в других активах. И такая ситуация сложилось далеко не сразу. Биткойну необходимы лучше функционирующие торговые площадки, если он хочет привлечь серьёзных игроков. Это также и возможность для извлечения прибыли. Даже с текущими торговыми объемами, можно зарабатывать ощутимую прибыль, сглаживая колебания цен. Если Биткойн продолжит расти, потребность в ликвидности также будет увеличиваться. Я понял, что инфраструктура это не только серверы и репозитарии Github. Это также финансовые посредники, помогающие функционированию рынков. Тот факт, что будучи в финансовом мире практически никем, я могу успешно заниматься маркет-мейкерством на биткойн-биржах, наглядно демонстрирует удивительную открытость Биткойна.
Автор: Эндрю Бариссер (Andrew Barisser)
http://bitnovosti.com/2015/05/20/hft-coinbase/