Выгоден ли арбитраж криптовалютой?

В этот раз разберём анализ арбитражной торговли криптовалютой (ETH/USD) на криптобиржах, подготовленный риск-аналитиком банка New York Mellon. Принебрегая комиссиями, его анализ показал впечатляющую доходность на $10 тыс. в ☝️39% за 5 месяцев без просадок.

Мы, в нашёй команде Quantrum.Team, увидев данный материал решили добавить учёт комиссий для приближения результатов к реальности. Что из этого получилось читайте дальше.

Код на 🐍Python 3.6 в блокноте Jupyter.

Оригинал: читайте здесь.

Кратко об арбитраже в трейдинге. Арбитражными называются стратегии основанные на извлечении прибыли из одновременной торговли инструментом в разных направлениях при обнаружении разницы в ценности. Например, на одной бирже BTC (биткоин) торгуется по $7k, а на другой по $6.9k. Мы должны одновременно купить дешевле и продать дороже. Разницу забрать себе.

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

🎯Подготовка и цель

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

  • Данные берём с агрегатора CryptoCompare через API.
  • Капитал $10 тыс.
  • Пара ETH (Ethereum) / USD.
  • Период 01.06.2017 — 14.11.2017.
  • Биржи Exmo и Kraken. Как в оригинале.
  • Комиссии на сделку 0.15%, стоимость займа для шорта 0.2% в день.
  • Python 3.6 и Jupyter.

📋Выбор бирж

Получим объёмы торговли для пары ETH/USD на разных криптовалютных биржах, доступных в агрегаторе:

fsym = "ETH"
tsym = "USD" 
url = f"https://www.cryptocompare.com/api/data/coinsnapshot/?fsym={fsym}&tsym={tsym}"
response = requests.get(url)
dic = response.json()

Получим ТОП бирж по объёму:

vol = []
d = dic['Data']['Exchanges']
for i in range(len(d)):
    vol.append([d[i]['MARKET'], round(float(d[i]['VOLUME24HOUR']),2)])
vol = sorted(vol, key=lambda x: -x[1])

🎏Выбор пары бирж

Для арбитражной торговли нам необходимо выбрать две биржи с наилучшим спредом между ценами. Для этого нам необходимо получить историю цен ТОП-бирж и сравнить спреды.

Получить историю цен для каждой биржи можно кодом:

url = "https://min-api.cryptocompare.com/data/histoday?fsym=" + fsym + \
      "&tsym=" + tsym + "&toTs=" + str(timestamp) + \
      "&limit=2000&e=" + exchange
response = requests.get(url)
dic = response.json()

А для получения спредов надо пройтись циклом и вычесть одну историю цен из другой. В результате мы получим похожий список:

    Coin1     Coin2      Mean   Std Dev

     Cexio    HitBTC   9.88528      8.22
     Cexio  Poloniex   9.68805      8.20
     Cexio   BitTrex   9.58667      8.22
      Exmo     Cexio   9.57704      5.12
     Cexio  Bitfinex   9.56667      7.91
     Cexio    Gemini   8.57956      8.15
     Cexio    Kraken   8.26075      6.50
     Cexio  Coinbase   7.85547      6.19
      Exmo   BitTrex   6.29491      5.35
      Exmo  Poloniex   6.15239      5.21
      Exmo    HitBTC   6.14874      5.01
      Exmo  Bitfinex   6.04950      5.03
      Exmo    Gemini   5.96956      6.20
***** Exmo    Kraken   5.92786      4.37*
      Exmo  Coinbase   5.67541      4.21

Автор оригинальной статьи выбирает биржи Exmo и Kraken. Мы последуем его примеру, чтобы сравнить результаты.

Цены Exmo и Kraken
Спред цен Exmo и Kraken

На спреде видно, что ряд сохраняет стационарность, что логично. Перейдём к самому интересному.

🔮Симуляция торговли ETH/USD на Exmo и Kraken

При тестировании будем придерживаться условий:

  1. Капитал $10 тыс. поделенный на две биржи по $5 тыс.
  2. Размер позиции от $2.5 тыс. до минимального доступного капитала на любом из счетов. Исправляем ошибку оригинальной статьи.
  3. Если цена закрытия актива-Exmo > цены закрытия актива-Kraken, мы продаём актив-Exmo (open short) и покупаем актив-Kraken (open long).
  4. Если цена закрытия актива-Exmo < цены закрытия актива-Kraken, то закрываем позиции, обновляем данные счета. Одновременно продаём актив-Kraken (sell short) и покупаем актив-Exmo (open long). И так далее.
  5. После закрытия текущей сделки, новые открываем сразу же и по той же цене.
  6. Проскальзывание отсутствует.
  7. Представим, что короткие продажи возможны на обоих биржах.
  8. Маржин-коллы игнорируем.
  9. Комиссию 0.15% учитываем на каждой бирже, то есть дважды.
  10. Стоимость займа короткой позиции 0.20% в день учитываем только на короткой позиции.

Первым делом посмотрим на результаты исправленного анализа без учёта комиссий:

Без учёта комиссий и шортов

Графики показывают падение доходности до 10% и просадку капитала на Kraken в два раза за первые 5 сделок.

Комиссия окончательно потушит наш взгляд в ожидании лёгкой наживы:

С учётом комиссий и шортов

Графики показывают, что даже нерегулируемый, но информационно состоявшийся криптовалютный рынок достаточно эффективен.

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

🎁Код в студию

Если вас заинтересовал код, пишите в комментариях. Подготовлю и выложу.

🏁Вывод

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

На просторах Github в открытом доступе есть примеры ботов, торгующих подобные арбитражные стратегии. Но будьте аккуратны и предварительно их тестируйте не подпуская к своим деньгам.

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

💬В комментариях напишите вопросы к анализу. Расскажите, какие вы видите возможности для арбитража на криптовалюте. А может быть у вас есть идеи стратегий, которые нужно протестировать?

Александр Румянцев
Автор Quantrum.me
Telegram-канал: https://t.me/quantrums

Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде.

☝Готовы учиться торговать криптовалютой?🎓Обратитесь к профессионалам👍.