Krüptoarbitraaž NetworkX-i ja Python PlatoBlockchaini andmeanalüüsiga. Vertikaalne otsing. Ai.

Krüptoarbitraaž NetworkX-i ja Pythoniga

Coingecko API krüptoandmete analüüsimine, et luua pythonis krüptoarbitraaži skanner

McKlayne Marshall

Kaasautor koos Isaac Rhea

Foto: Alina Grubnyak on Unsplash

Valuutaturgudel üle maailma kaubeldakse 24 tundi ööpäevas võlakirjade, aktsiate või futuuride omast oluliselt suuremas mahus turgudele. Valuutaturgudel osalejad maandavad riski või spekuleerivad valuutaväärtuste tulevaste muutustega.

Teine kasumiallikas tuleneb valuuta väärtushinnangute lühiajalise tasakaalustamatuse ärakasutamisest. Välkkiirete algoritmide abil tuvastavad kõrge sagedusega kauplejad arbitraaživõimalused ja viivad kiiresti läbi rea vahetusi, mille tulemuseks on väike kasum. Vaata seda artikkel Corporate Finance Institute'ilt põhjalikuma selgituse ja näidete saamiseks.

Ettevõtte rahanduse instituut

Valuutaturgude suure konkurentsi ja kauplemismahu tõttu on need võimalused lühiajalised ja kasum on väike. Kuigi valuutaarbitraažist saadav kasu võib aja jooksul koguneda suure arvu tehingute korral, on sarnane võimalus krüptovaluutaturgudel, mis võib olla veelgi tulusam.

Kuna kaubeldakse palju krüptosid, on arbitraaživõimaluste kontrollimiseks palju võimalikke kombinatsioone. Graafiku (võrgu) andmestruktuur sobib ideaalselt erinevate müntide vaheliste vahetuskursside jälgimiseks ja kiiresti tuvastada tasakaalustamatuse juhtumeid, mida saame ära kasutada. Graafikute/võrkude ja nendega töötamiseks mõeldud Pythoni pakettide kohta lisateabe saamiseks vaadake seda raamat aasta Pragmaatilised programmeerijad seeria.

Krüptovaluutade graafiku koostamiseks kasutame NetworkX paketti. See on võimas tööriist, mis muudab meid huvitavate müntide analüüsimise ja kauplemisvõimaluste leidmise lihtsaks. Esiteks hangime CoinGecko API-st krüptovahetuskursid. Seejärel initsialiseerime graafiku ja määratleme seosed (vahetuskursid) iga meid huvitava mündi vahel. Lõpuks vaatame läbi kõik teed ühelt mündilt teisele ja tagasi, et tuvastada arbitraaživõimalusi.

Kui teil on kogemusi JSON API-dega MüntGecko API-d on suhteliselt lihtne kasutada. Selle koodilõigu abil tõmbasin viie erineva mündi (Bitcoin, Bitcoin Cash, Ethereum, Litecoin ja EOS) praegused vahetuskursid.

API-kõne URL näeb välja umbes selline, olenevalt müntidest, mille kohta soovite andmeid koguda:

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

Kasutades Pythoni jaoks pakette Request ja JSON, saame need andmed laadida sõnaraamatuna koos võtmetega iga meie loendisse lisatud krüpto jaoks. Iga nende võtmetega seotud väärtus on teine ​​sõnastik, mis sisaldab selle valuutapaari vahetuskursside kirjeid. Näiteks Bitcoin Cashi puhul saame järgmise tulemuse:

See näitab, et 0.25 Ethereumi või 0.16 Bitcoini saab osta 1 Bitcoin Cashiga. Nende tulemustega iga krüpto jaoks oleme valmis graafiku määratlema.

Iga münt tähistab graafikul "tippu" ja kahe mündi vahetuskurss on "serv". Pärast tühja Graafi objekti lähtestamist määratleme iga mündipaari jaoks korteežide loendi ja nende vahetuskursi mõlemas suunas.

Servade loend näeb välja umbes selline:

Kui graafikule on lisatud servad, oleme valmis arbitraaživõimalusi otsima. Kasutades kombinatsioonide funktsiooni itertools paketist, määratleme kõik võimalikud mündipaarid. Seejärel kasutame NetworkX-i funktsiooni all_simple_paths, et määratleda kõik võimalikud teed esimesest mündist teiseni.

Näiteks kui me vaatame Litecoini ja Bitcoin Cashi, siis on palju võimalikke teid, arvestades münte, mida kaalume. Saame lihtsalt osta Bitcoin Cashi Litecoiniga või osta Bitcoini Litecoiniga ja seejärel kasutada Bitcoini Bitcoin Cashi ostmiseks.

Läbime iga tee ja teostame igal etapil järgmised arvutused. Esiteks eeldame, et alustame ühe esialgse mündiga. Korrutame selle ühe mündi vahetuskursiga, kuni jõuame tee lõppu.

Näiteks kui alustame ühe Bitcoin Cashiga, saame osta 0.24 Ethereumi, nii et korrutame 1 x 0.24197529 = 0.24197529. Ethereumi ja Bitcoini vahetuskurss on 0.06, seega korrutame 0.24197529 x 0.06484324 = 0.0156904618035396. See väärtus on väga lähedane Bitcoin Cashi ja Bitcoini vahetuskursile, kuid mitte täpselt sama.

Siinkohal kontrollime tee vastupidist, st Bitcoini Ethereumi ja Bitcoin Cashi vahel, korrutades 1 x 15.414849 x 4.132739 = 63.705547641411. Korrutame need kaks tulemust tee lõplikuks hindamiseks (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Minu teada pole selle väärtuse jaoks defineeritud terminit. Võime seda nimetada arbitraažifaktoriks.

Kui vahetuskursid oleksid sünkroonis, oleks arbitraažitegur olnud täpselt üks. Väärtus alla ühe viitab sellele, et läbisime vahetuste seeria ja lõpetasime vähemaga, kui alustasime. Seega ootame, et see väärtus oleks suurem kui üks, kuna vahetuste tegemine tooks kaasa kasumi. Kui oleksime oma eelmises näites leidnud, et arbitraažitegur on 1.005, oleks see näidanud, et järgides seda vahetusteed ühest krüptost teise ja tagasi, oleksime võinud teenida 0.005 Bitcoin Cashi (väärtusega umbes 3 dollarit).

Arbitraažvõimalused tulevad ja lähevad erinevatele krüptodele päeva jooksul ning kõiki kombinatsioone on võimalik kontrollida mitme mündi puhul, leidmata arbitraažitegurit, mis oleks oluliselt suurem kui üks. Arbitraažfaktoreid olen aga näinud üle 1.01, mis näitab, et lihtsate krüptovaluutavahetustega on võimalik teenida hetkega 1% tootlust.

Võttes kasutusele kolm ülaltoodud funktsiooni, saame luua krüptoarbitraažskanneri.

Valuutaarbitraaž on väljakujunenud ja madala riskiga kauplemismeetod, kuid traditsiooniliste valuutade turg on väga tõhus ja konkurentsivõimeline. Suuremad võimalused on krüptovaluutadel ja mõned lihtsad Pythoni tööriistad võivad aidata strateegiat hõlbustada. NetworkX-i saab kasutada graafiku koostamiseks ja arbitraaživõimaluste kiireks otsimiseks.

Siiski on veel väljakutseid ületada. Esiteks võivad krüptovaluutadega kauplemise tasud olla väga kõrged. See tähendab, et mis tahes tasakaalustamatus krüptode vahel peab olema märkimisväärne, et olla kasumlik. Samal ajal on strateegia kõige tõhusam, kui see on automatiseeritud ja seatud töötama perioodiliselt või ööpäevaringselt. Vaadake tulevasi artikleid krüptokauplemisstrateegiate rakendamise kohta AWS EC2 eksemplaride või Lambda funktsioonidega.

Rohkem sisu aadressil plainenglish.io

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

Ajatempel:

Veel alates Keskmine