Crypto Arbitrage NetworkX és Python PlatoBlockchain adatintelligenciával. Függőleges keresés. Ai.

Crypto Arbitrage NetworkX és Python segítségével

A Coingecko API-ból származó kriptográfiai adatok elemzése kripto-arbitrázs szkenner létrehozásához a pythonban

McKlayne Marshall

társszerzője Isaac Rhea

Fotó Alina Grubnyak on Unsplash

A pénznemek piacain világszerte a nap 24 órájában kereskednek a kötvények, részvények vagy határidős ügyletekénál lényegesen nagyobb mennyiségben. piacok. A devizapiacok résztvevői fedezik a kockázatot, vagy spekulálnak a devizaértékek jövőbeni változásaira.

A nyereség másik forrása a valutaértékelések rövid távú egyensúlyhiányának kihasználása. Villámgyors algoritmusok segítségével a nagyfrekvenciás kereskedők felismerik az arbitrázslehetőségeket, és gyorsan végrehajtanak egy sor cserét, ami kis nyereséget eredményez. Ezt nézd cikkben a Corporate Finance Institute-tól részletesebb magyarázatért és példákért.

Vállalati Pénzügyi Intézet

A devizapiacokon tapasztalható nagy verseny és kereskedési volumen miatt ezek a lehetőségek rövid életűek, a nyereség pedig csekély. Bár a valutaarbitrázsból származó nyereség idővel felhalmozódhat nagyszámú ügylet esetén, hasonló lehetőség van a kriptovaluta piacokon, amelyek még jövedelmezőbbek is lehetnek.

Mivel sok kriptóval lehet kereskedni, sok lehetséges kombináció létezik az arbitrázslehetőségek ellenőrzésére. A Graph (Network) adatstruktúra ideális az érmék közötti különböző átváltási árfolyamok nyomon követésére és az egyensúlyhiány eseteinek gyors azonosítására, amelyeket kihasználhatunk. Ha további információra van szüksége a Graphs/Networksről és a velük együttműködő Python-csomagokról, nézze meg ezt könyv a Pragmatikus programozók sorozat.

A kriptovaluták grafikonjának elkészítéséhez a NetworkX csomagot fogjuk használni. Ez egy hatékony eszköz, amely megkönnyíti a minket érdeklő érmék elemzését és kereskedési lehetőségek megtalálását. Először a CoinGecko API-tól kapunk kriptovaluta árfolyamokat. Ezután inicializáljuk a grafikont, és meghatározzuk a kapcsolatokat (árfolyamokat) az egyes minket érdeklő érmék között. Végül végighurkoljuk az összes utat egyik érmétől a másikig és vissza, hogy azonosítsuk az arbitrázslehetőségeket.

Ha van tapasztalata a JSON API-kkal kapcsolatban, a CoinGecko Az API használata viszonylag egyszerű. Ezzel a kódrészlettel öt különböző érme (Bitcoin, Bitcoin Cash, Ethereum, Litecoin és EOS) aktuális árfolyamát húztam le.

Az API-hívás URL-je valahogy így fog kinézni, attól függően, hogy milyen érmékhez szeretne adatokat lekérni:

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

A Pythonhoz készült Request és JSON csomagok használatával ezeket az adatokat szótárként tölthetjük be a listánkba felvett egyes titkosításokhoz tartozó kulcsokkal. Az egyes kulcsokhoz társított érték egy másik szótár az adott devizapár árfolyamainak bejegyzéseivel. Például a Bitcoin Cash esetében a következő eredményt kapjuk:

Ez azt mutatja, hogy 0.25 Ethereum vagy 0.16 Bitcoin vásárolható 1 Bitcoin készpénzzel. Ezekkel az eredményekkel minden egyes kripto esetében készen állunk a grafikon meghatározására.

Mindegyik érme egy „csúcsot” képvisel a grafikonon, és a két érme közötti átváltási árfolyam egy „él”. Egy üres Graph objektum inicializálása után minden érmepárhoz meghatározzuk a sorok listáját és azok árfolyamát mindkét irányban.

Az élek listája így fog kinézni:

A grafikonhoz hozzáadott élekkel készen állunk az arbitrázslehetőségek keresésére. Az itertools csomagban található kombinációs függvény segítségével meghatározzuk az összes lehetséges érmepárt. Ezután a NetworkX all_simple_paths függvényét használjuk, hogy meghatározzuk az összes lehetséges útvonalat az első érmétől a másodikig.

Például, ha a Litecoint és a Bitcoin Cash-t nézzük, számos lehetséges út létezik, tekintettel az általunk fontolóra vett érmékre. Egyszerűen vásárolhatunk Bitcoin Cash-t a Litecoinnal, vagy vásárolhatunk Bitcoint Litecoinnal, majd a Bitcoin segítségével vásárolhatunk Bitcoin Cash-t.

Végighurkoljuk az egyes útvonalakat, és minden lépésnél elvégezzük a következő számításokat. Először is feltételezzük, hogy az egyik kezdeti érmével kezdjük. Ezt megszorozzuk az egyik érméről a másikra váltott árfolyammal, amíg az út végére nem érünk.

Például, ha egy Bitcoin Cash-sel kezdünk, 0.24 Ethereumot vásárolhatunk, így 1 x 0.24197529 = 0.24197529-et szorozunk. Az Ethereum és a Bitcoin közötti árfolyam 0.06, tehát 0.24197529 x 0.06484324 = 0.0156904618035396-ot szorozunk. Ez az érték nagyon közel áll a Bitcoin Cash és a Bitcoin közötti árfolyamhoz, de nem teljesen ugyanaz.

Ezen a ponton ellenőrizzük az út fordítottját, azaz a Bitcoint az Ethereum és a Bitcoin Cash között úgy, hogy megszorozzuk 1 x 15.414849 x 4.132739 = 63.705547641411-gyel. Ezt a két eredményt összeszorozzuk az útvonal végső értékeléséhez (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Tudomásom szerint erre az értékre nincs definiált kifejezés. Nevezhetjük arbitrázsfaktornak.

Ha az árfolyamok szinkronban lennének, az arbitrázstényező pontosan egy lett volna. Az egynél kisebb érték arra utal, hogy végigmentünk a cserék sorozatán, és kevesebbel fejeztük be, mint amennyivel kezdtük. Tehát azt várjuk, hogy ez az érték nagyobb legyen egynél, mivel a cserék nyereséget eredményeznének. Ha az előző példánkban az arbitrázstényezőt 1.005-nek találtuk volna, ez azt jelezte volna, hogy az egyik kriptográfiai eszközről a másikra és vissza történő cserefolyamatok követésével 0.005 Bitcoin készpénzt nyerhettünk volna (körülbelül 3 dollár értékben).

Az arbitrázslehetőségek a nap folyamán jönnek-mennek különböző kriptográfiai eszközökhöz, és lehetőség van több érme összes kombinációjának ellenőrzésére anélkül, hogy az arbitrázstényezőt jelentősen meghaladná. Láttam azonban 1.01 feletti arbitrázstényezőket, ami azt jelzi, hogy egyszerű kriptovaluta cserékkel pillanatok alatt 1%-os hozam érhető el.

A fent ismertetett három funkció segítségével létrehozhatunk egy kripto arbitrázs szkennert.

A valuta arbitrázs jól bevált és alacsony kockázatú kereskedési módszer, de a hagyományos valuták piaca nagyon hatékony és versenyképes. Nagyobb lehetőség rejlik a kriptovalutákban, és néhány egyszerű Python-eszköz segíthet a stratégia megkönnyítésében. A NetworkX segítségével grafikonokat készíthet, és gyorsan kereshet arbitrázslehetőségeket.

Vannak azonban még leküzdendő kihívások. Először is, a kriptovalutákkal való kereskedés díjai nagyon magasak lehetnek. Ez azt jelenti, hogy a kriptokódok közötti egyensúlytalanságoknak jelentősnek kell lenniük ahhoz, hogy nyereségesek legyenek. Ugyanakkor a stratégia akkor lesz a leghatékonyabb, ha automatizált, és időszakosan vagy éjjel-nappal futásra van beállítva. Tekintse meg a jövőbeli cikkeket a kriptokereskedési stratégiák AWS EC2 példányokkal vagy Lambda funkciókkal való megvalósításáról.

További tartalom itt plainenglish.io

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

Időbélyeg:

Még több közepes