Крипто-арбитраж

作成:2023
プラットフォーム:
  • Web
  • Telegram bot
技術:
  • C#
  • Vue 3
Калькулятор спредов
комиссия
СПРЕД:
если начальная и конечная валюты совпадают

В арбитраже между CEX и DEX царит хаос: разные токены под одним именем, внезапно закрытые выводы, пустые стаканы и скрытые комиссии, сжигающие «бумажный» спред. Моя задача была сделать во всём этом по-настоящему надёжный инструмент — и в итоге на фоне всех публичных сканеров он стал лучшим арбитражником: сам отсекает ловушки, собирает самую выгодную комбинацию маршрута и выдаёт готовую связку с чистым профитом в долларах:

Пример сообщения со связкой ETH/USDT в Telegram: расчёт максимального профита, профита с лучшего ордера, газа в долларах и прямые ссылки на каждый шаг

В таком виде готовая связка сразу приходит в Telegram: все комиссии и даже газ в монете сети (например, 0,08$ в BNB) уже пересчитаны в баксы, автоматически выбрана самая дешёвая открытая сеть, даны точные суммы покупки для максимального профита и для входа по лучшему ордеру, а в каждый шаг зашиты прямые ссылки сразу на обмен, вывод и калькулятор.

Причём сам Telegram-канал работает в live-режиме: когда появляется связка, бот публикует пост и дальше прямо на лету обновляет в нём все цифры по мере движения курсов и стаканов (внизу сообщения видна метка «ОБНОВЛЕНО»). А как только спред закрывается и связка уходит — пост автоматически удаляется. За счёт этого в ленте нет спама и «кладбища» старых сигналов: в канале в любой момент висят только живые связки, в которые можно заходить прямо сейчас.

Проверка монеты по контракту и стыковка сетей

Первая классическая ловушка в арбитраже — одинаковый тикер у двух совершенно разных токенов. Купить монету на одной площадке и выяснить, что на второй под этим же именем торгуется другой актив, — самый быстрый способ уйти в минус. Поэтому я привязал строгую сверку со справочником CoinMarketCap: на обычных биржах (CEX) проверяется торговая пара, а на DEX — точный адрес смарт-контракта. Если контракт не совпал, пара просто не идёт в расчёт.

Вторая проблема — биржи по-разному называют одни и те же сети и постоянно закрывают кошельки на техработы. Я привёл названия сетей к единому виду: сканер понимает, что BEP20, BNB и BSC — это одна сеть, а ERC20 и Ethereum — тоже одна. Если вывод закрыт, перевод заморожен или лимит депозита на принимающей стороне нулевой, такой путь отсекается сразу, ещё до попадания на экран.

Вся оптимальная комбинация сразу и самые дешёвые сети

Я настроил перебор так, чтобы каждая площадка сравнивалась с каждой во всех направлениях: CEX → CEX, CEX → DEX, DEX → CEX и DEX → DEX. В работе участвуют 9 централизованных бирж и 3 децентрализованных пула, которые непрерывно просчитываются друг с другом в любых комбинациях:

Биржи: Binance, OKX, KuCoin, Gate.io, MEXC, Huobi, Bitget, BitMart, LBank.

Пулы: PancakeSwap v2 и SushiSwap v2 на BSC, QuickSwap на Polygon.

Между двумя площадками часто доступно сразу несколько сетей и разных торговых пар к стейблам (USDT, USDC, ETH, BTC и соседним активам). Я сделал так, чтобы человеку не приходилось перебирать варианты вручную — сканер сам просчитывает все комбинации и сразу выбирает оптимальный маршрут из четырёх шагов:

  1. Купить актив на первой площадке с учётом комиссии спота или пула.
  2. Вывести по самой дешёвой сети из тех, где прямо сейчас открыты и вывод, и депозит.
  3. Продать на второй площадке по реальному объёму стакана или пула.
  4. Вернуть стейблкоин обратно также по самой выгодной сети — этот четвёртый шаг многие забывают посчитать, а здесь он сразу заложен в итоговую цифру последним этапом.

Честный стакан, ликвидность пула и газ в долларах

Считать связку по верхней цене стакана бессмысленно: по лучшей цене там может висеть ордер всего на 10 долларов, а при нормальной сумме входа курс сразу разъедется. Поэтому для каждого кандидата я снимаю оба стакана целиком и веду расчёт уровень за уровнем: покупку по asks, продажу по bids.

Если вторая сторона — DEX, объём и проскальзывание считаются по формуле пула ликвидности (константного произведения AMM). Комиссию самого пула я тоже вшил в формулу: 0,25% для PancakeSwap и 0,3% для SushiSwap и QuickSwap. Актуальная стоимость газа (gas) в сетях Ethereum, BSC, Polygon, Avalanche, Arbitrum и Optimism автоматически переводится в доллары и вычитается из результата.

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

Веб-экран, график доходности и пошаговый калькулятор

По ссылке из Telegram или напрямую в браузере открывается веб-экран, который я собрал как рабочий стол трейдера. В списке сразу видны пара, две площадки, оптимальный объём входа и чистый результат в долларах. Любая строка раскрывается в график доходности: по горизонтали — сумма входа, по вертикали — чистый профит. Достаточно кликнуть в любую точку на графике, и курс, комиссия спота и комиссия перевода тут же подставятся в пошаговый калькулятор, где всю математику сделки можно разобрать по шагам.

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

Показательный момент из практики: пользователи регулярно присылали мне связки с вопросом, почему мой бот их якобы «не видит» и не показывает. Мы начинали разбирать каждую такую находку, и при проверке всякий раз выяснялось одно и то же: человек либо не учёл ту или иную скрытую комиссию, либо ошибся в одинаковых именах совершенно разных токенов, либо просто не знал, что вывод этого токена на конкретной бирже облагается комиссией в 20%. Пока публичные сканеры рисовали такие «грязные» проценты по верхушке стакана и забивали ленту устаревшими сигналами, моя система молча берегла депозит и давала только реально исполнимый маршрут — по качеству расчёта и удобству работы это был лучший арбитражник из всех публичных решений.

Скорость

Непрерывно пересчитывать все возможные комбинации «все со всеми» на всех биржах и пулах, прогонять через формулы полные стаканы уровень за уровнем и держать все эти цифры наготове в памяти — сама по себе неплохая задача по оптимизации для дешёвого сервера. Я разделил быстрые потоки котировок и стаканов от «тяжёлых» справочников (сетей, газа и смарт-контрактов) и распараллелил обсчёт кандидатов на потоки, поэтому весь этот объём данных пересчитывался на лету за миллисекунды без дорогого железа.