Kripto arbitraža z NetworkX in Python PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Kripto arbitraža z NetworkX in Python

Analiziranje kriptopodatkov iz API-ja Coingecko za izdelavo skenerja kripto arbitraže v pythonu

McKlayne Marshall

V soavtorstvu z Isaac Rhea

Foto: Alina Grubnjak on Unsplash

Trgi z valutami po vsem svetu trgujejo 24 ur na dan z obsegom, ki je znatno višji od obsega obveznic, delnic ali terminskih pogodb trgi. Udeleženci na deviznih trgih se varujejo pred tveganjem ali špekulirajo o prihodnjih spremembah valutnih vrednosti.

Drug vir dobička izhaja iz izkoriščanja kratkoročnih neravnovesij v valutnih vrednotenjih. Z uporabo bliskovito hitrih algoritmov visokofrekvenčni trgovci prepoznajo priložnosti za arbitražo in hitro izvedejo vrsto menjav, ki prinesejo majhen dobiček. Poglej to članek iz Inštituta za korporativne finance za podrobnejšo razlago in primere.

Inštitut za korporativne finance

Zaradi velike konkurence in obsega trgovanja na valutnih trgih so te priložnosti kratkotrajne, dobiček pa majhen. Čeprav lahko dobički z valutno arbitražo nastanejo sčasoma z velikim številom poslov, podobna priložnost obstaja na trgih kriptovalut, ki so lahko še bolj donosne.

Ker obstaja veliko kriptovalut za trgovanje, obstaja veliko možnih kombinacij za preverjanje priložnosti za arbitražo. Podatkovna struktura Graph (Network) je idealna za spremljanje različnih menjalnih tečajev med kovanci in hitro prepoznavanje primerov neravnovesja, ki jih lahko izkoristimo. Za več informacij o Graphs/Networks in paketih Python za delo z njimi si oglejte to Knjiga v Pragmatični programerji seriji.

Za izdelavo grafa za kriptovalute bomo uporabili paket NetworkX. To je močno orodje, ki olajša analizo kovancev, ki nas zanimajo, in iskanje priložnosti za trgovanje. Najprej bomo pridobili kripto menjalne tečaje iz API-ja CoinGecko. Nato bomo inicializirali graf in definirali razmerja (menjalne tečaje) med posameznimi kovanci, ki nas zanimajo. Nazadnje bomo preleteli vse poti od enega kovanca do drugega in nazaj, da bi prepoznali priložnosti za arbitražo.

Če imate izkušnje z API-ji JSON, CoinGecko API je razmeroma enostaven za uporabo. S tem delčkom kode sem potegnil trenutne menjalne tečaje za pet različnih kovancev (Bitcoin, Bitcoin Cash, Ethereum, Litecoin in EOS).

URL za klic API-ja bo videti nekako takole, odvisno od kovancev, za katere želite pridobiti podatke:

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

Z uporabo paketov Request in JSON za Python lahko te podatke naložimo kot slovar s ključi za vsako kriptovaluto, ki smo jo vključili na naš seznam. Vrednost, povezana z vsakim od teh ključev, je še en slovar z vnosi za menjalne tečaje za ta valutni par. Na primer, za Bitcoin Cash dobimo naslednji rezultat:

To kaže, da je mogoče z 0.25 Bitcoin Cash kupiti 0.16 Ethereuma ali 1 Bitcoina. S temi rezultati za vsako kriptovaluto smo pripravljeni definirati graf.

Vsak od kovancev predstavlja "vozišče" v grafu, menjalni tečaj med dvema kovancema pa je "rob". Po inicializaciji praznega objekta Graph definiramo seznam tuplev za vsak par kovancev in njihov menjalni tečaj v obe smeri.

Seznam za robove bo videti nekako takole:

Ko smo grafu dodali robove, smo pripravljeni na iskanje priložnosti za arbitražo. S kombinacijo funkcij iz paketa itertools definiramo vse možne pare kovancev. Nato uporabimo funkcijo all_simple_paths iz NetworkX, da definiramo vse možne poti od prvega kovanca do drugega.

Na primer, če gledamo Litecoin in Bitcoin Cash, obstaja veliko možnih poti glede na kovance, ki jih obravnavamo. Lahko preprosto kupimo Bitcoin Cash z Litecoinom ali pa lahko kupimo Bitcoin z Litecoinom in nato uporabimo Bitcoin za nakup Bitcoin Cash.

Preletimo vsako pot in na vsakem koraku izvedemo naslednje izračune. Najprej predpostavimo, da začnemo z enim od začetnih kovancev. To eno pomnožimo z menjalnim tečajem od enega kovanca do drugega, dokler ne pridemo do konca poti.

Na primer, če začnemo z enim Bitcoin Cashom, lahko kupimo 0.24 Ethereuma, tako da pomnožimo 1 x 0.24197529 = 0.24197529. Menjalni tečaj Ethereuma za Bitcoin je 0.06, tako da pomnožimo 0.24197529 x 0.06484324 = 0.0156904618035396. Ta vrednost je zelo blizu menjalnemu tečaju med Bitcoin Cash in Bitcoin, vendar ni povsem enaka.

Na tej točki preverimo obratno pot, tj. Bitcoin v Ethereum v Bitcoin Cash, tako da pomnožimo 1 x 15.414849 x 4.132739 = 63.705547641411. Ta dva rezultata pomnožimo skupaj za končno oceno poti (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Kolikor vem, za to vrednost ni definiranega izraza. Lahko ga imenujemo faktor arbitraže.

Če bi bili menjalni tečaji usklajeni, bi bil faktor arbitraže točno ena. Vrednost, manjša od ena, nakazuje, da smo šli skozi vrsto izmenjav in končali z manj, kot smo začeli. Zato iščemo, da je ta vrednost večja od ena, saj bi izmenjave povzročile dobiček. Če bi v našem prejšnjem primeru ugotovili, da je faktor arbitraže 1.005, bi to pomenilo, da bi lahko s sledenjem tej poti izmenjav od ene kriptovalute do druge in nazaj pridobili 0.005 Bitcoin Cash (v vrednosti okoli 3 USD).

Arbitražne priložnosti prihajajo in gredo za različne kriptovalute čez dan in mogoče je preveriti vse kombinacije za več kovancev, ne da bi našli faktor arbitraže, ki je bistveno višji od ena. Vendar pa sem videl faktorje arbitraže nad 1.01, kar kaže, da bi lahko s preprostimi menjavami kriptovalut v nekaj trenutkih zaslužili 1-odstotni donos.

Z vključitvijo treh zgoraj razloženih funkcij lahko ustvarimo skener kripto arbitraže.

Valutna arbitraža je dobro uveljavljena metoda trgovanja z nizkim tveganjem, vendar je trg tradicionalnih valut zelo učinkovit in konkurenčen. Večja priložnost obstaja v kriptovalutah in nekaj preprostih orodij Python lahko pomaga olajšati strategijo. NetworkX se lahko uporablja za izdelavo grafa in hitro iskanje priložnosti za arbitražo.

Vendar pa je še vedno treba premagati izzive. Prvič, provizije za trgovanje s kriptovalutami so lahko zelo visoke. To pomeni, da morajo biti kakršna koli neravnovesja med kriptovalutami znatna, da so donosna. Hkrati bo strategija najučinkovitejša, če bo avtomatizirana in nastavljena na periodično ali 2-urno izvajanje. Bodite pozorni na prihodnje članke o izvajanju strategij kripto trgovanja z instancami AWS ECXNUMX ali funkcijami Lambda.

Več vsebin na plainenglish.io

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

Časovni žig:

Več od srednje