Crypto Arbitrage cu NetworkX și Python PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Crypto Arbitrage cu NetworkX și Python

Analizarea datelor cripto din API-ul Coingecko pentru a construi un scanner de cripto-arbitraj în python

McKlayne Marshall

Coautor cu Isaac Rhea

Fotografie de Alina Grubnyak on Unsplash

Piețele pentru valute din întreaga lume tranzacționează 24 de ore pe zi la volume semnificativ mai mari decât obligațiunile, acțiunile sau contractele futures piețe. Participanții de pe piețele valutare își acoperă riscul sau speculează cu privire la schimbările viitoare ale valorilor valutare.

O altă sursă de profit provine din profitul de dezechilibre pe termen scurt în evaluările valutare. Folosind algoritmi fulgerați, comercianții de înaltă frecvență identifică oportunitățile de arbitraj și execută rapid o serie de schimburi care au ca rezultat un mic profit. Vezi asta articol de la Corporate Finance Institute pentru o explicație mai aprofundată și exemple.

Institutul de Finanțe Corporative

Datorită concurenței ridicate și a volumului de tranzacționare pe piețele valutare, aceste oportunități sunt de scurtă durată, iar profiturile sunt minuscule. Deși câștigurile prin arbitrajul valutar se pot acumula în timp cu un număr mare de tranzacții, există o oportunitate similară pe piețele de criptomonede, care ar putea fi și mai profitabile.

Deoarece există multe cripto-uri de tranzacționat, există multe combinații posibile pentru a verifica oportunitățile de arbitraj. Structura de date Graph (Rețea) este ideală pentru a urmări diferitele cursuri de schimb între monede și pentru a identifica rapid cazurile de dezechilibru de care putem profita. Pentru mai multe informații despre Graphs/Networks și pachetele Python pentru a lucra cu ele, consultați aceasta carte în Programatori pragmatici serie.

Pentru a construi un grafic pentru criptomonede, vom folosi pachetul NetworkX. Acesta este un instrument puternic care facilitează analiza monedelor care ne interesează și găsirea oportunităților de tranzacționare. În primul rând, vom obține rate de schimb cripto de la API-ul CoinGecko. Apoi, vom inițializa graficul și vom defini relațiile (ratele de schimb) dintre fiecare dintre monedele care ne interesează. În cele din urmă, vom parcurge toate căile de la o monedă la alta și înapoi pentru a identifica oportunitățile de arbitraj.

Dacă aveți experiență cu API-urile JSON, CoinGecko API-ul este relativ simplu de utilizat. Cu acest fragment de cod, am extras cursurile de schimb curente pentru cinci monede diferite (Bitcoin, Bitcoin Cash, Ethereum, Litecoin și EOS).

Adresa URL pentru apelul API va arăta cam așa, în funcție de monedele pentru care doriți să extrageți date:

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

Folosind pachetele Request și JSON pentru Python, putem încărca aceste date ca un dicționar cu chei pentru fiecare cripto pe care am inclus-o în lista noastră. Valoarea asociată cu fiecare dintre aceste chei este un alt dicționar cu intrări pentru ratele de schimb pentru acea pereche valutară. De exemplu, pentru Bitcoin Cash obținem următorul rezultat:

Aceasta arată că 0.25 Ethereum sau 0.16 Bitcoin pot fi achiziționați cu 1 Bitcoin Cash. Cu aceste rezultate pentru fiecare dintre cripto-uri suntem gata să definim graficul.

Fiecare dintre monede reprezintă un „vârf” în grafic, iar cursul de schimb dintre două monede este o „margine”. După inițializarea unui obiect Graph gol, definim o listă de tupluri pentru fiecare pereche de monede și cursul lor de schimb în ambele direcții.

Lista pentru margini va arăta cam așa:

Cu marginile adăugate la grafic, suntem gata să scanăm pentru oportunități de arbitraj. Folosind funcția de combinații din pachetul itertools definim toate perechile posibile de monede. Apoi, folosim funcția all_simple_paths de la NetworkX pentru a defini toate căile posibile de la prima monedă la a doua.

De exemplu, dacă ne uităm la Litecoin și Bitcoin Cash, există multe căi posibile având în vedere monedele pe care le luăm în considerare. Putem cumpăra pur și simplu Bitcoin Cash cu Litecoin sau putem cumpăra Bitcoin cu Litecoin și apoi folosi Bitcoin pentru a cumpăra Bitcoin Cash.

Facem bucla prin fiecare cale și efectuăm următoarele calcule la fiecare pas. În primul rând, presupunem că începem cu una dintre monedele inițiale. Îl înmulțim pe acesta cu cursul de schimb de la o monedă la alta până ajungem la capătul căii.

De exemplu, dacă începem cu un Bitcoin Cash, putem cumpăra 0.24 Ethereum, așa că înmulțim 1 x 0.24197529 = 0.24197529. Rata de schimb de la Ethereum la Bitcoin este 0.06, așa că înmulțim 0.24197529 x 0.06484324 = 0.0156904618035396. Această valoare este foarte apropiată de cursul de schimb dintre Bitcoin Cash și Bitcoin, dar nu este exact aceeași.

În acest moment, verificăm inversul căii, adică Bitcoin la Ethereum la Bitcoin Cash prin înmulțirea 1 x 15.414849 x 4.132739 = 63.705547641411. Înmulțim aceste două rezultate împreună pentru evaluarea finală a căii (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Din câte știu, nu există un termen definit pentru această valoare. Îl putem numi factorul de arbitraj.

Dacă ratele de schimb ar fi fost sincronizate, factorul de arbitraj ar fi fost exact unul. O valoare mai mică decât unu sugerează că am trecut prin seria schimburilor și am terminat cu mai puțin decât am început. Prin urmare, căutăm ca această valoare să fie mai mare decât unu, deoarece efectuarea schimburilor ar avea ca rezultat un profit. Dacă am fi găsit factorul de arbitraj 1.005 în exemplul nostru anterior, acest lucru ar fi indicat că urmând acea cale de schimburi de la o cripto la alta și înapoi, am fi putut câștiga 0.005 Bitcoin Cash (în valoare de aproximativ 3 USD).

Oportunitățile de arbitraj vin și pleacă pentru diferite cripto-uri de-a lungul zilei și este posibil să verificați toate combinațiile pentru mai multe monede fără a găsi un factor de arbitraj semnificativ peste unul. Cu toate acestea, am văzut factori de arbitraj peste 1.01, ceea ce indică faptul că o rentabilitate de 1% ar putea fi obținută în câteva momente prin simple schimburi de criptomonede.

Aducând cele trei funcții explicate mai sus, putem crea un scanner de cripto-arbitraj.

Arbitrajul valutar este o metodă de tranzacționare bine stabilită și cu risc scăzut, dar piața monedelor tradiționale este foarte eficientă și competitivă. Există o oportunitate mai mare în criptomonede și câteva instrumente simple Python pot ajuta la facilitarea strategiei. NetworkX poate fi folosit pentru a construi un grafic și pentru a căuta rapid oportunități de arbitraj.

Cu toate acestea, există încă provocări de depășit. În primul rând, taxele de tranzacționare cu criptomonede pot fi foarte mari. Aceasta înseamnă că orice dezechilibre între cripto-uri trebuie să fie semnificative pentru a fi profitabile. În același timp, strategia va fi cea mai eficientă dacă este automatizată și setată să ruleze periodic sau non-stop. Urmăriți articolele viitoare despre implementarea strategiilor de tranzacționare cripto cu instanțe AWS EC2 sau funcții Lambda.

Mai mult conținut la plainenglish.io

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

Timestamp-ul:

Mai mult de la Mediu