Arbitraggio crittografico con NetworkX e Python PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Arbitraggio crittografico con NetworkX e Python

Analisi dei dati crittografici dall'API Coingecko per creare uno scanner di arbitraggio crittografico in Python

McKlayne Marshall

Coautore con Isacco Rea

Foto di Alina Grubnjak on Unsplash

I mercati valutari di tutto il mondo vengono scambiati 24 ore su XNUMX a volumi significativamente più alti rispetto a obbligazioni, azioni o futures mercati. I partecipanti ai mercati dei cambi stanno coprendo i rischi o speculando sulle variazioni future dei valori valutari.

Un’altra fonte di profitti deriva dallo sfruttamento degli squilibri a breve termine nelle valutazioni valutarie. Utilizzando algoritmi velocissimi, i trader ad alta frequenza identificano le opportunità di arbitraggio ed eseguono rapidamente una serie di scambi che si traducono in un piccolo profitto. Guarda questo articolo dal Corporate Finance Institute per una spiegazione più approfondita ed esempi.

Istituto di finanza aziendale

A causa dell’elevata concorrenza e del volume degli scambi nei mercati valutari, queste opportunità sono di breve durata e i profitti sono minimi. Sebbene i guadagni attraverso l’arbitraggio valutario possano accumularsi nel tempo con un numero elevato di operazioni, esiste un’opportunità simile nei mercati delle criptovalute che potrebbe essere ancora più redditizia.

Poiché ci sono molte criptovalute da scambiare, ci sono molte combinazioni possibili per verificare le opportunità di arbitraggio. La struttura dei dati del grafico (rete) è ideale per tenere traccia dei diversi tassi di cambio tra le monete e identificare rapidamente le istanze di disequilibrio da cui possiamo trarre vantaggio. Per maggiori informazioni su Grafici/Reti e pacchetti Python per lavorare con loro, dai un'occhiata a questo libro nel Programmatori pragmatici serie.

Per costruire un grafico per le criptovalute sfrutteremo il pacchetto NetworkX. Questo è un potente strumento che semplifica l'analisi delle monete a cui siamo interessati e la ricerca di opportunità di trading. Innanzitutto, otterremo i tassi di cambio cripto dall'API CoinGecko. Quindi, inizializzeremo il grafico e definiremo le relazioni (tassi di cambio) tra ciascuna delle monete a cui siamo interessati. Infine, percorreremo tutti i percorsi da una moneta all'altra e viceversa per identificare le opportunità di arbitraggio.

Se hai esperienza con le API JSON, il CoinGecko L'API è relativamente semplice da usare. Con questo frammento di codice, ho ricavato i tassi di cambio attuali per cinque diverse monete (Bitcoin, Bitcoin Cash, Ethereum, Litecoin ed EOS).

L'URL per la chiamata API sarà simile a questo, a seconda delle monete per le quali desideri estrarre i dati:

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

Utilizzando i pacchetti Request e JSON per Python possiamo caricare questi dati come un dizionario con le chiavi per ogni crittografia che abbiamo incluso nella nostra lista. Il valore associato a ciascuna di queste chiavi è un altro dizionario con voci per i tassi di cambio per quella coppia di valute. Ad esempio, per Bitcoin Cash otteniamo il seguente risultato:

Ciò dimostra che con 0.25 Bitcoin Cash è possibile acquistare 0.16 Ethereum o 1 Bitcoin. Con questi risultati per ciascuna delle criptovalute siamo pronti a definire il grafico.

Ognuna delle monete rappresenta un "vertice" nel grafico e il tasso di cambio tra due monete è un "vantaggio". Dopo aver inizializzato un oggetto Graph vuoto, definiamo una lista di tuple per ogni coppia di monete e il loro tasso di cambio in entrambe le direzioni.

L'elenco dei bordi sarà simile a questo:

Con i bordi aggiunti al grafico, siamo pronti a cercare opportunità di arbitraggio. Utilizzando la funzione combinazioni del pacchetto itertools definiamo tutte le possibili coppie di monete. Quindi, utilizziamo la funzione all_simple_paths di NetworkX per definire tutti i possibili percorsi dalla prima moneta alla seconda.

Ad esempio, se guardiamo a Litecoin e Bitcoin Cash, ci sono molti percorsi possibili date le monete che stiamo considerando. Possiamo semplicemente acquistare Bitcoin Cash con Litecoin oppure possiamo acquistare Bitcoin con Litecoin e quindi utilizzare Bitcoin per acquistare Bitcoin Cash.

Percorriamo ciascun percorso ed eseguiamo i seguenti calcoli ad ogni passaggio. Innanzitutto, supponiamo di iniziare con una delle monete iniziali. Lo moltiplichiamo per il tasso di cambio da una moneta all'altra fino ad arrivare alla fine del percorso.

Ad esempio se partiamo con un Bitcoin Cash possiamo acquistare 0.24 Ethereum quindi moltiplichiamo 1 x 0.24197529 = 0.24197529. Il tasso di cambio da Ethereum a Bitcoin è 0.06 quindi moltiplichiamo 0.24197529 x 0.06484324 = 0.0156904618035396. Questo valore è molto vicino al tasso di cambio tra Bitcoin Cash e Bitcoin ma non esattamente lo stesso.

A questo punto, controlliamo il percorso inverso, ovvero da Bitcoin a Ethereum in Bitcoin Cash moltiplicando 1 x 15.414849 x 4.132739 = 63.705547641411. Moltiplichiamo insieme questi due risultati per la nostra valutazione finale del percorso (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Per quanto ne so, non esiste un termine definito per questo valore. Possiamo chiamarlo il fattore di arbitraggio.

Se i tassi di cambio fossero sincronizzati, il Fattore di Arbitraggio sarebbe esattamente uno. Un valore inferiore a uno suggerisce che abbiamo completato la serie di scambi e abbiamo terminato con meno di quanto avevamo iniziato. Quindi, cerchiamo che questo valore sia maggiore di uno poiché effettuare gli scambi comporterebbe un profitto. Se nel nostro esempio precedente avessimo trovato il fattore di arbitraggio pari a 1.005, ciò avrebbe indicato che seguendo quel percorso di scambi da una criptovaluta all'altra e ritorno, avremmo potuto guadagnare 0.005 Bitcoin Cash (del valore di circa $ 3).

Le opportunità di arbitraggio vanno e vengono per diverse criptovalute durante il giorno ed è possibile controllare tutte le combinazioni per diverse monete senza trovare un fattore di arbitraggio significativamente superiore a uno. Tuttavia, ho visto fattori di arbitraggio superiori a 1.01, che indicano che un rendimento dell'1% potrebbe essere guadagnato in pochi istanti attraverso semplici scambi di criptovaluta.

Unendo le tre funzioni spiegate sopra, siamo in grado di creare uno scanner di arbitraggio crittografico.

L’arbitraggio valutario è un metodo di trading consolidato e a basso rischio, ma il mercato delle valute tradizionali è molto efficiente e competitivo. Esiste una maggiore opportunità nelle criptovalute e alcuni semplici strumenti Python possono aiutare a facilitare la strategia. NetworkX può essere utilizzato per creare un grafico e cercare rapidamente opportunità di arbitraggio.

Tuttavia, ci sono ancora sfide da superare. Innanzitutto, le commissioni per scambiare criptovalute possono essere molto elevate. Ciò significa che eventuali squilibri tra le criptovalute devono essere significativi per essere redditizi. Allo stesso tempo, la strategia sarà più efficace se automatizzata e impostata per essere eseguita periodicamente o 2 ore su XNUMX. Guarda gli articoli futuri sull'implementazione di strategie di trading di criptovalute con istanze AWS ECXNUMX o funzioni Lambda.

Più contenuti su plainenglish.io

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

Timestamp:

Di più da Medio