Crypto Arbitrage con NetworkX y Python PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Arbitraje criptográfico con NetworkX y Python

Analizando datos criptográficos de la API de Coingecko para construir un escáner de arbitraje criptográfico en Python

Marshall McKlayne

En coautoría con Isaac Rea

Foto por Alina Grubnyak on Unsplash

Los mercados de divisas de todo el mundo se negocian las 24 horas del día a volúmenes significativamente más altos que los de bonos, acciones o futuros. mercados. Los participantes en los mercados de divisas están cubriendo riesgos o especulando sobre cambios futuros en los valores de las divisas.

Otra fuente de beneficios proviene de aprovechar los desequilibrios a corto plazo en las valoraciones de las divisas. Utilizando algoritmos ultrarrápidos, los operadores de alta frecuencia identifican oportunidades de arbitraje y ejecutan rápidamente una serie de intercambios que dan como resultado una pequeña ganancia. Mira esto artículo del Instituto de Finanzas Corporativas para una explicación más detallada y ejemplos.

Instituto de finanzas corporativas

Debido a la alta competencia y el volumen de operaciones en los mercados de divisas, estas oportunidades son de corta duración y las ganancias son minúsculas. Aunque las ganancias a través del arbitraje de divisas pueden acumularse con el tiempo con un gran número de operaciones, existe una oportunidad similar en los mercados de criptomonedas que pueden ser incluso más rentables.

Debido a que hay muchas criptomonedas para comerciar, hay muchas combinaciones posibles para verificar las oportunidades de arbitraje. La estructura de datos Graph (Network) es ideal para realizar un seguimiento de los diferentes tipos de cambio entre monedas e identificar rápidamente instancias de desequilibrio que podemos aprovechar. Para obtener más información sobre gráficos / redes y paquetes de Python para trabajar con ellos, consulte este primer libro existentes Programadores pragmáticos .

Para crear un gráfico para criptomonedas, aprovecharemos el paquete NetworkX. Esta es una herramienta poderosa que facilita el análisis de las monedas que nos interesan y la búsqueda de oportunidades comerciales. Primero, obtendremos los tipos de cambio de cifrado de la API de CoinGecko. Luego, inicializaremos el Gráfico y definiremos las relaciones (tipos de cambio) entre cada una de las monedas que nos interesan. Finalmente, recorreremos todos los caminos de una moneda a otra y regresaremos para identificar oportunidades de arbitraje.

Si tiene experiencia con las API JSON, CoinGecko La API es relativamente fácil de usar. Con este fragmento de código, obtuve los tipos de cambio actuales para cinco monedas diferentes (Bitcoin, Bitcoin Cash, Ethereum, Litecoin y EOS).

La URL de la llamada a la API se verá así, dependiendo de las monedas para las que le gustaría extraer datos:

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

Al usar los paquetes Request y JSON para Python, podemos cargar estos datos como un diccionario con claves para cada criptografía que incluimos en nuestra lista. El valor asociado con cada una de esas claves es otro diccionario con entradas para los tipos de cambio para ese par de divisas. Por ejemplo, para Bitcoin Cash obtenemos el siguiente resultado:

Esto muestra que 0.25 Ethereum o 0.16 Bitcoin se pueden comprar con 1 Bitcoin Cash. Con estos resultados para cada una de las criptomonedas estamos listos para definir el Gráfico.

Cada una de las monedas representa un "vértice" en el gráfico y el tipo de cambio entre dos monedas es una "ventaja". Después de inicializar un objeto Graph vacío, definimos una lista de tuplas para cada par de monedas y su tipo de cambio en ambas direcciones.

La lista de los bordes se verá así:

Con los bordes agregados al gráfico, estamos listos para buscar oportunidades de arbitraje. Usando la función de combinaciones del paquete itertools, definimos todos los posibles pares de monedas. Luego, usamos la función all_simple_paths de NetworkX para definir todas las rutas posibles desde la primera moneda hasta la segunda.

Por ejemplo, si miramos Litecoin y Bitcoin Cash, hay muchas rutas posibles dadas las monedas que estamos considerando. Simplemente podemos comprar Bitcoin Cash con Litecoin o podemos comprar Bitcoin con Litecoin y luego usar Bitcoin para comprar Bitcoin Cash.

Recorrimos cada camino y realizamos los siguientes cálculos en cada paso. Primero, asumimos que comenzamos con una de las monedas iniciales. Multiplicamos ese uno por el tipo de cambio de una moneda a otra hasta llegar al final del camino.

Por ejemplo, si comenzamos con un Bitcoin Cash podemos comprar 0.24 Ethereum, por lo que multiplicamos 1 x 0.24197529 = 0.24197529. El tipo de cambio de Ethereum a Bitcoin es 0.06, por lo que multiplicamos 0.24197529 x 0.06484324 = 0.0156904618035396. Este valor está muy cerca del tipo de cambio entre Bitcoin Cash y Bitcoin, pero no es exactamente el mismo.

En este punto, verificamos el reverso de la ruta, es decir, de Bitcoin a Ethereum a Bitcoin Cash multiplicando 1 x 15.414849 x 4.132739 = 63.705547641411. Multiplicamos estos dos resultados para nuestra evaluación final de la ruta (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Que yo sepa, no existe un término definido para este valor. Podemos llamarlo factor de arbitraje.

Si los tipos de cambio estuvieran sincronizados, el factor de arbitraje habría sido exactamente uno. Un valor menor que uno sugiere que pasamos por la serie de intercambios y terminamos con menos de lo que comenzamos. Por lo tanto, buscamos que este valor sea mayor que uno, ya que realizar los intercambios generaría una ganancia. Si hubiéramos encontrado que el factor de arbitraje era 1.005 en nuestro ejemplo anterior, esto habría indicado que siguiendo ese camino de intercambios de una criptografía a otra y viceversa, podríamos haber ganado 0.005 Bitcoin Cash (con un valor de alrededor de $ 3).

Las oportunidades de arbitraje van y vienen para diferentes criptomonedas a lo largo del día y es posible verificar todas las combinaciones para varias monedas sin encontrar un factor de arbitraje significativamente superior a uno. Sin embargo, he visto factores de arbitraje por encima de 1.01, lo que indica que se podría obtener un rendimiento del 1% en cuestión de momentos a través de simples intercambios de criptomonedas.

Con las tres funciones explicadas anteriormente, podemos crear un escáner de arbitraje criptográfico.

El arbitraje de divisas es un método de negociación bien establecido y de bajo riesgo, pero el mercado de divisas tradicionales es muy eficiente y competitivo. Existe una mayor oportunidad en las criptomonedas y algunas herramientas simples de Python pueden ayudar a facilitar la estrategia. NetworkX se puede utilizar para crear un gráfico y buscar rápidamente oportunidades de arbitraje.

Sin embargo, aún quedan desafíos por superar. Primero, las tarifas para operar con criptomonedas pueden ser muy altas. Esto significa que cualquier desequilibrio entre criptomonedas debe ser significativo para que sea rentable. Al mismo tiempo, la estrategia será más eficaz si se automatiza y se configura para que se ejecute periódicamente o durante todo el día. Esté atento a los artículos futuros sobre la implementación de estrategias de comercio de cifrado con instancias de AWS EC2 o funciones Lambda.

Más contenido en simpleenglish.io

Fuente: https://python.plainenglish.io/crypto-arbitrage-with-networkx-and-python-638166e5a947?source=rss——-8—————– criptomoneda

Sello de tiempo:

Mas de Medio