Валютный арбитраж. Фронтраннинг роботов на Питоне

Валютный арбитраж. Фронтраннинг роботов на Питоне

Классическая стратегия валютного арбитража. Чтобы получать прибыль, предполагает, что у вашего робота будет САМОЕ быстрое исполнение заявок среди десятков других роботов. В большинстве случаев, если биржа, на которой вы хотите торговать уже достаточно популярна, добиться этого не выйдет.

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

1. Место OsEngine в гонке скорости.

Далеко не первое. Но и далеко не последнее. Далее идёт список возможных реализаций данного алгоритма в соответствии со скоростью. Тут используются некоторые допущения, и вероятно найдутся те, кто это оспорит. 

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

«Из зоны колокации биржи» вынесено в отдельную группу, т.к. у второй группы скорость сразу сильно хуже:

  1. C++ / Linux – самое быстрое исполнение. Кол-во: единицы.
  2. C# / Linux. Кол-во: единицы.
  3. C++(C#) / Windows. OsEngine здесь. Кол-во: единицы.

С удалённого сервера, специально подобранного по пингам до биржи:

  1. С++ / Linux. Кол-во: единицы.
  2. C# / Linux. Кол-во: единицы.
  3. C++(C#) / Windows. OsEngine здесь. Кол-во: десятки.
  4. Питон / Linux (Windows, без разницы). Кол-во: сотни.
  5. Движки сайтов, предоставляющих автоторговлю по стратегии (3 commas и т.д.). Кол-во: сотни.

 Выводы:

  1. На любой популярной бирже криптовалют торговать в лоб классический валютный арбитраж на OsEngine смысла нет.
  2. Роботы на Линукс и С++, торгующие из зоны колокации всегда будут быстрее. Если эти товарищи уже пришли на биржу, прибыли нам не будет.
  3. Торговать классический валютный арбитраж нужно на непопулярных биржах.
  4. Роботов на Питоне, движках сайтов в десятки и сотни раз больше, чем кастомных роботов-приложений. Они медленные, неуклюжие, но ими постоянно кто-то хочет пользоваться и пробовать их в работе. На них можно пробовать зарабатывать даже на популярных биржах. Как? Поговорим ниже.

2. Медленные роботы создают дисбаланс.

Классический валютный арбитраж.

Вспоминаем картинку того, как работает классический валютный арбитраж:

Рис. 1. Мгновенная прибыль в валютном арбитраже.

Идёт охота за заявкой в малоликвидном стакане - заявкой, которую выставил человек.

Для того, чтобы её забрать, в данном конкретном случае, нужно провести три сделки:

  1. У нас на счету USDT.
  2. Совершаем операцию покупки в контракте GNSUSDT. По сути меняем USDT на GNS.
  3. Совершаем операцию продажи в контракте GNSBTC. По сути обменяем GNS на BTC.
  4. Совершаем операцию продажи в контракте BTCUSDT. По сути обменяем BTC на USDT.
  5. После третьей операции у нас на счету опять USDT. Если мы самые быстрые, мы в профите и всё хорошо.

Что делают не самые быстрые роботы?

А теперь представим, что у вас робот на Питоне, работающий из Московского удалённого сервера. Или Вы работаете с сайта, арендовали робота, сервер находится во Франции. Торговля на Бинанс. Заявки типа Market – т.е. исполняющиеся по любой цене.

  1. Сигнал был 150 млс. Назад. Прибыли уже нет.
  2. Таких роботов, как у Вас, запущенно несколько сотен.
  3. Вы совершаете первую сделку покупки (стакан GNSUSDT) по цене сильно выше, чем было в момент сигнала, т.к. другие уже «выели» мгновенную ликвидность в контракте.
  4. Через 500 млс. Ваш робот выставляет второй маркет ордер на продажу в контракте GNSBTC, в ещё более плохих условиях. В этом контракте и до того не было хорошего уровня мгновенной ликвидности, но за прошлые 650 млс. ситуация резко ухудшилась. Вы продаёте по цене хуже, чем было до сигнала на 0.7%.
  5. Через 500 млс. ваш робот выставляет третий маркет ордер на продажу в контракте BTCUSDT. Здесь тоже мгновенная ликвидность разьехалась. Но не так катастрофически, как во втором (малоликвидном) контракте. Вы выходите хуже, чем было 1150 млс. назад на 0.1 %.

Рис. 2. Где на самом деле исполнятся 98% всех, кто торгует валютный арбитраж.

Итого:

  1. Страшный убыток от 0.3 до 1 % по операциям.
  2. Стаканы возвращаются в гармоничное положение через 5 секунд.

В OsEngine есть возможность проверять ситуацию после сигнала:

Рис. 3. Робот для изучения движения после сигнала на Валютный арбитраж.

Ссылка на ГитХаб: https://github.com/AlexWan

Данный робот делает срезы прибыльности по связке инструментов сразу после сигнала на вход. Пишет данные о движении в свой Лог файл, который можно найти в папке «Engine/Log/», что рядом с экзешником.

Выглядит лог файл примерно так:

Рис. 4. Срезы ситуации по связкам в течении 3 секунд после сигнала.

Как видно из данного лога, после появления прибыли по последовательности, почти сразу прибыль по связке уходит в резко отрицательную зону. Т.е. медленные роботы с Market заявками поедают мгновенную ликвидность в слабо заполненных стаканах.

Важно!!!

  1. Срезы лучше делать с удалённых серверов, расположенных максимально близко к ядру биржи.
  2. Для более точного анализа ситуации после сигнала, данного робота можно переделать под работу со стаканами, чтобы смотреть в каком именно стакане и на какой % прошло движение в биде или аске.

3. Суть стратегии.

Заключается в том, чтобы ловить маркетные заявки других роботов в центральных стаканах последовательности, по которой только что прошёл сигнал. Для этого надо держать на счёте не USDT, а BTC и EHT, чтобы первой заявкой вставать на покупку во втором стакане последовательности, ожидая, когда роботы её исполнят.

Рис. 5. Ставим заявку на покупку в разряженный стакан сильно ниже лучшей покупки.

Исполнилась – отлично. Мы уже в прибыли. Спокойно и не торопясь переливаем тут же назад в BTC через другие контракты. Не исполнился наш ордер, отзываем через 3/5 секунд. В следующий раз нальют.

4. Возможные реализации в рамках OsEngine.

Рис. 6. Логика работы робота для реализации данной стратегии.

  1. Создаём у робота одновременно и источник BotTabPolygon, который после настроек из интерфейса будет нам просто выдавать сигналы относительно того, по какой связке появился профит.
  2. Саму торговлю удобнее будет вести в источнике BotTabScreener, контролируя каждую заявку отдельно.
  3. Чтобы сделать его, потребуется от 100 до 300 строк кода и знание языка СиШарп уровня «школьник».

Удачных алгоритмов!

14:59
535

Комментарии

Нет комментариев. Ваш будет первым!