Crypto Arbitrage NetworkX:llä ja Python PlatoBlockchain Data Intelligencellä. Pystysuuntainen haku. Ai.

Crypto Arbitrage NetworkX: n ja Pythonin kanssa

Coingecko API:n kryptotietojen analysointi kryptoarbitraasiskannerin rakentamiseksi pythonissa

McKlayne Marshall

Kirjoittaja yhdessä Isaac Rhea

Kuva Alina Grubnyak on Unsplash

Valuuttamarkkinoilla ympäri maailmaa käydään kauppaa 24 tuntia vuorokaudessa huomattavasti korkeammalla volyymilla kuin joukkovelkakirja-, osakkeilla tai futuureilla markkinat. Valuuttamarkkinoiden toimijat suojautuvat riskeiltä tai spekuloivat valuuttakurssien tulevilla muutoksilla.

Toinen voittojen lähde tulee valuuttaarvostuksen lyhytaikaisen epätasapainon hyödyntämisestä. Käyttämällä salamannopeita algoritmeja korkean taajuuden kauppiaat tunnistavat arbitraasimahdollisuudet ja suorittavat nopeasti sarjan vaihtoja, jotka johtavat pieneen voittoon. Katso tämä artikkeli Corporate Finance Institutesta saadaksesi tarkemman selityksen ja esimerkkejä.

Corporate Finance Institute

Valuuttamarkkinoiden suuren kilpailun ja kaupankäynnin volyymin vuoksi nämä mahdollisuudet ovat lyhytikäisiä ja voitot ovat vähäisiä. Vaikka valuuttaarbitraasista saatavat voitot voivat kertyä ajan myötä suurella määrällä kauppoja, samanlainen mahdollisuus on olemassa kryptovaluuttamarkkinoilla, jotka voivat olla vieläkin kannattavampia.

Koska kaupankäynnin kohteena on monia kryptoja, on monia mahdollisia yhdistelmiä arbitraasimahdollisuuksien tarkistamiseksi. Graph (Network) -tietorakenne on ihanteellinen seuraamaan kolikoiden välisiä eri vaihtokursseja ja tunnistamaan nopeasti epätasapainotilanteet, joita voimme hyödyntää. Lisätietoja Graphs/Networksista ja niiden kanssa toimivista Python-paketeista on tässä kirja vuonna Käytännölliset ohjelmoijat sarja.

Luodaksemme kaavion kryptovaluutoille hyödynnämme NetworkX-pakettia. Tämä on tehokas työkalu, jonka avulla on helppo analysoida kiinnostavia kolikoita ja löytää kaupankäyntimahdollisuuksia. Ensin saamme kryptokurssit CoinGecko API:lta. Sitten alustamme graafin ja määritämme suhteet (vaihtokurssit) jokaisen meitä kiinnostavan kolikon välillä. Lopuksi käymme läpi kaikki polut kolikosta toiseen ja takaisin löytääksemme arbitraasimahdollisuudet.

Jos sinulla on kokemusta JSON-sovellusliittymistä CoinGecko API on suhteellisen yksinkertainen käyttää. Tämän koodinpätkän avulla vedin viiden eri kolikon (Bitcoin, Bitcoin Cash, Ethereum, Litecoin ja EOS) nykyiset vaihtokurssit.

API-kutsun URL-osoite näyttää suunnilleen tältä riippuen kolikoista, joille haluat kerätä tietoja:

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

Käyttämällä Pythonin Request- ja JSON-paketteja voimme ladata nämä tiedot sanakirjana, jossa on avaimet jokaiselle listallemme sisällytetylle kryptolle. Näihin avaimiin liittyvä arvo on toinen sanakirja, joka sisältää merkinnät kyseisen valuuttaparin valuuttakursseille. Esimerkiksi Bitcoin Cashille saamme seuraavan tuloksen:

Tämä osoittaa, että 0.25 Ethereumia tai 0.16 Bitcoinia voidaan ostaa 1 Bitcoin Cashilla. Näillä tuloksilla jokaiselle kryptolle olemme valmiita määrittelemään graafin.

Kukin kolikoista edustaa "kärkiä" kaaviossa ja kahden kolikon välinen vaihtokurssi on "reuna". Tyhjän Graph-objektin alustamisen jälkeen määritämme luettelon tuplesista jokaiselle kolikkoparille ja niiden vaihtokurssit molempiin suuntiin.

Reunojen luettelo näyttää tältä:

Kun reunat on lisätty kaavioon, olemme valmiita etsimään arbitraasimahdollisuuksia. Käyttämällä itertools-paketin yhdistelmätoimintoa määrittelemme kaikki mahdolliset kolikkoparit. Sitten käytämme NetworkX:n all_simple_paths-funktiota määrittääksemme kaikki mahdolliset polut ensimmäisestä kolikosta toiseen.

Jos tarkastelemme esimerkiksi Litecoinia ja Bitcoin Cashia, on monia mahdollisia polkuja ottaen huomioon harkitsemamme kolikot. Voimme yksinkertaisesti ostaa Bitcoin Cashia Litecoinilla tai voimme ostaa Bitcoinin Litecoinilla ja sitten käyttää Bitcoinia Bitcoin Cashin ostamiseen.

Käymme läpi jokaisen polun ja suoritamme seuraavat laskelmat jokaisessa vaiheessa. Ensin oletetaan, että aloitamme yhdestä alkuperäisistä kolikoista. Kerromme sen yhden kolikon vaihtokurssilla, kunnes pääsemme polun loppuun.

Jos esimerkiksi aloitamme yhdellä Bitcoin Cashilla, voimme ostaa 0.24 Ethereumia, joten kerromme 1 x 0.24197529 = 0.24197529. Vaihtokurssi Ethereumista Bitcoiniin on 0.06, joten kerromme 0.24197529 x 0.06484324 = 0.0156904618035396. Tämä arvo on hyvin lähellä Bitcoin Cashin ja Bitcoinin välistä vaihtokurssia, mutta ei aivan sama.

Tässä vaiheessa tarkistamme polun käänteisen, eli Bitcoinin Ethereumiin Bitcoin Cashiin kertomalla 1 x 15.414849 x 4.132739 = 63.705547641411. Kerromme nämä kaksi tulosta yhteen polun lopullista arviointia varten (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Tietääkseni tälle arvolle ei ole määriteltyä termiä. Voimme kutsua sitä arbitraasitekijäksi.

Jos valuuttakurssit olisivat synkronoituja, arbitraasikerroin olisi ollut täsmälleen yksi. Arvo, joka on pienempi kuin yksi, viittaa siihen, että kävimme läpi sarjan vaihtoja ja lopetimme vähemmällä kuin aloitimme. Joten etsimme tämän arvon olevan suurempi kuin yksi, koska vaihtojen tekeminen johtaisi voittoon. Jos olisimme havainneet arbitraasitekijän olevan 1.005 edellisessä esimerkissämme, tämä olisi osoittanut, että seuraamalla tätä vaihtopolkua kryptosta toiseen ja takaisin, olisimme voineet saada 0.005 Bitcoin Cashia (arvo noin 3 dollaria).

Arbitraasimahdollisuuksia tulee ja menee eri kryptoille pitkin päivää, ja on mahdollista tarkistaa useiden kolikoiden kaikki yhdistelmät ilman, että Arbitraasikerrointa on huomattavasti suurempi kuin yksi. Olen kuitenkin nähnyt Arbitrage Factors -arvon yli 1.01, mikä osoittaa, että 1 %:n tuotto voitaisiin ansaita hetkessä yksinkertaisilla kryptovaluutanvaihdoilla.

Yllä selitetyt kolme toimintoa tuomalla voimme luoda kryptoarbitraasiskannerin.

Valuuttaarbitraasi on vakiintunut ja vähäriskinen kaupankäyntimenetelmä, mutta perinteisten valuuttojen markkinat ovat erittäin tehokkaat ja kilpailukykyiset. Kryptovaluutoissa on enemmän mahdollisuuksia, ja muutama yksinkertainen Python-työkalu voi auttaa helpottamaan strategiaa. NetworkX:tä voidaan käyttää graafin rakentamiseen ja arbitraasimahdollisuuksien nopeaan etsimiseen.

Haasteita on kuitenkin vielä voitettavana. Ensinnäkin kryptovaluuttojen kaupankäyntimaksut voivat olla erittäin korkeita. Tämä tarkoittaa, että kaikkien kryptojen välisten epätasapainojen on oltava merkittäviä, jotta ne olisivat kannattavia. Samaan aikaan strategia on tehokkain, jos se on automatisoitu ja asetettu toimimaan säännöllisesti tai kellon ympäri. Katso tulevia artikkeleita kryptokaupankäyntistrategioiden toteuttamisesta AWS EC2 -esiintymillä tai Lambda-toiminnoilla.

Lisää sisältöä osoitteessa plainenglish.io

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

Aikaleima:

Lisää aiheesta Keskikokoinen