Крипто-арбитраж с NetworkX и Python PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Криптоарбитраж с NetworkX и Python

Анализ криптоданных из Coingecko API для создания сканера криптоарбитража на Python

МакКлейн Маршалл

В соавторстве с Исаак Реа

Фото Алина Грубняк on Unsplash

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

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

Институт корпоративных финансов

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

Поскольку существует множество криптовалют для торговли, существует множество возможных комбинаций для проверки возможностей арбитража. Структура данных Graph (Network) идеально подходит для отслеживания различных курсов обмена между монетами и быстрого выявления случаев нарушения равновесия, которыми мы можем воспользоваться. Для получения дополнительной информации о Graphs / Networks и пакетах Python для работы с ними ознакомьтесь с этим книга в Прагматичные программисты серии.

Чтобы построить график для криптовалют, мы будем использовать пакет NetworkX. Это мощный инструмент, который позволяет легко анализировать интересующие нас монеты и находить торговые возможности. Сначала мы получим курсы обмена криптовалюты из CoinGecko API. Затем мы инициализируем график и определим отношения (обменные курсы) между каждой из интересующих нас монет. Наконец, мы пройдемся по всем путям от одной монеты к другой и обратно, чтобы определить возможности арбитража.

Если у вас есть опыт работы с JSON API, CoinGecko API относительно прост в использовании. С помощью этого фрагмента кода я получил текущие курсы обмена для пяти разных монет (Bitcoin, Bitcoin Cash, Ethereum, Litecoin и EOS).

URL-адрес для вызова API будет выглядеть примерно так, в зависимости от монет, для которых вы хотите получить данные:

https://api.coingecko.com/api/v3/simple/price?ids=bitcoin-cash,ethereum,bitcoin,litecoin,eos&vs_currencies=bch,eth,btc,ltc,eos

Используя пакеты Request и JSON для Python, мы можем загрузить эти данные в виде словаря с ключами для каждой криптографии, которую мы включили в наш список. Значение, связанное с каждым из этих ключей, представляет собой другой словарь с записями обменных курсов для этой валютной пары. Например, для Bitcoin Cash мы получаем следующий результат:

Это показывает, что 0.25 Ethereum или 0.16 Биткойн можно купить за 1 Bitcoin Cash. С этими результатами для каждой криптовалюты мы готовы определить График.

Каждая из монет представляет собой «вершину» на Графике, а курс обмена между двумя монетами - «край». После инициализации пустого объекта Graph мы определяем список кортежей для каждой пары монет и их обменный курс в обоих направлениях.

Список ребер будет выглядеть примерно так:

Добавив ребра в граф, мы готовы искать возможности для арбитража. Используя функцию комбинаций из пакета itertools, мы определяем все возможные пары монет. Затем мы используем функцию all_simple_paths из NetworkX, чтобы определить все возможные пути от первой монеты ко второй.

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

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

Например, если мы начнем с одного Bitcoin Cash, мы можем купить 0.24 Ethereum, поэтому умножим 1 x 0.24197529 = 0.24197529. Курс обмена Ethereum на Биткойн составляет 0.06, поэтому мы умножаем 0.24197529 x 0.06484324 = 0.0156904618035396. Это значение очень близко к обменному курсу между Bitcoin Cash и Bitcoin, но не совсем то же самое.

На этом этапе мы проверяем обратный путь, то есть от Биткойн к Эфириуму к Биткойн Кэш, умножив 1 x 15.414849 x 4.132739 = 63.705547641411. Мы умножаем эти два результата вместе для окончательной оценки пути (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Насколько мне известно, для этого значения нет определенного термина. Мы можем назвать это фактором арбитража.

Если бы обменные курсы были синхронизированы, коэффициент арбитража был бы равен единице. Значение меньше единицы предполагает, что мы прошли через серию обменов и закончили с меньшими затратами, чем начали. Таким образом, мы ожидаем, что это значение будет больше единицы, поскольку совершение обменов приведет к прибыли. Если бы мы обнаружили, что коэффициент арбитража в нашем предыдущем примере равен 1.005, это означало бы, что, следуя этому пути обмена с одной криптовалюты на другую и обратно, мы могли бы получить 0.005 Bitcoin Cash (на сумму около 3 долларов).

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

Используя три описанные выше функции, мы можем создать сканер криптоарбитража.

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

Однако есть еще проблемы, которые необходимо преодолеть. Во-первых, комиссия за торговлю криптовалютами может быть очень высокой. Это означает, что любой дисбаланс между криптовалютами должен быть значительным, чтобы быть прибыльным. В то же время стратегия будет наиболее эффективной, если она будет автоматизирована и настроена на периодическое или круглосуточное выполнение. Следите за будущими статьями о реализации стратегий криптотрейдинга с помощью экземпляров AWS EC2 или функций Lambda.

Больше контента на простой английский.io

Источник: https://python.plainenglish.io/crypto-arbitrage-with-networkx-and-python-638166e5a947?source=rss——-8—————– криптовалюта.

Отметка времени:

Больше от Medium