Crypto Arbitrage με NetworkX και Python PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Crypto Arbitrage με NetworkX και Python

Ανάλυση δεδομένων κρυπτογράφησης από το API Coingecko για τη δημιουργία ενός σαρωτή crypto arbitrage στο python

ΜακΚλέιν Μάρσαλ

Συν-συγγραφέας με Ισαάκ Ρέα

Φωτογραφία Αλίνα Γκρούμπνιακ on Unsplash

Οι αγορές για νομίσματα σε όλο τον κόσμο εμπορεύονται 24 ώρες την ημέρα σε όγκο σημαντικά υψηλότερα από τα ομόλογα, μετοχές ή μελλοντικά συμβόλαια αγορές. Οι συμμετέχοντες σε αγορές συναλλάγματος αντισταθμίζουν τον κίνδυνο ή κερδοσκοπούν για μελλοντικές αλλαγές στις νομισματικές αξίες.

Μια άλλη πηγή κερδών προέρχεται από την αξιοποίηση βραχυπρόθεσμων ανισορροπιών στις εκτιμήσεις νομισμάτων. Χρησιμοποιώντας αλγόριθμους γρήγορης ταχύτητας, οι έμποροι υψηλής συχνότητας εντοπίζουν ευκαιρίες arbitrage και εκτελούν γρήγορα μια σειρά ανταλλαγών που οδηγούν σε μικρό κέρδος. Δες αυτό άρθρο από το Ινστιτούτο Εταιρικής Χρηματοδότησης για μια πιο εμπεριστατωμένη εξήγηση και παραδείγματα.

Ινστιτούτο Εταιρικής Χρηματοδότησης

Λόγω του υψηλού ανταγωνισμού και του όγκου συναλλαγών στις αγορές συναλλάγματος, αυτές οι ευκαιρίες είναι βραχύβιες και τα κέρδη είναι μικροσκοπικά. Αν και τα κέρδη μέσω του arbitrage νομισμάτων μπορούν να συγκεντρωθούν με την πάροδο του χρόνου με μεγάλο αριθμό συναλλαγών, μια παρόμοια ευκαιρία υπάρχει στις αγορές κρυπτογράφησης που μπορεί να είναι ακόμη πιο επικερδείς.

Επειδή υπάρχουν πολλά κρυπτογραφημένα στο εμπόριο, υπάρχουν πολλοί πιθανοί συνδυασμοί για τον έλεγχο ευκαιριών arbitrage. Η δομή δεδομένων του Graph (Network) είναι ιδανική για την παρακολούθηση των διαφορετικών συναλλαγματικών ισοτιμιών μεταξύ των κερμάτων και για τον γρήγορο εντοπισμό περιπτώσεων ανισορροπίας που μπορούμε να εκμεταλλευτούμε. Για περισσότερες πληροφορίες σχετικά με γραφήματα / δίκτυα και πακέτα Python για να συνεργαστείτε μαζί τους, δείτε αυτό βιβλίο στο Πραγματικοί προγραμματιστές σειρές.

Για να δημιουργήσουμε ένα γράφημα για κρυπτονομίσματα θα αξιοποιήσουμε το πακέτο NetworkX. Αυτό είναι ένα ισχυρό εργαλείο που διευκολύνει την ανάλυση των νομισμάτων που μας ενδιαφέρουν και την εύρεση ευκαιριών διαπραγμάτευσης. Πρώτον, θα λάβουμε συναλλαγματικές ισοτιμίες από το CoinGecko API. Στη συνέχεια, θα προετοιμάσουμε το γράφημα και θα καθορίσουμε τις σχέσεις (συναλλαγματικές ισοτιμίες) μεταξύ κάθε νομίσματος που μας ενδιαφέρει. Τέλος, θα περάσουμε από όλα τα μονοπάτια από το ένα νόμισμα στο άλλο και θα επιστρέψουμε για να εντοπίσουμε ευκαιρίες arbitrage.

Εάν έχετε εμπειρία με JSON API, το CoinGecko Το API είναι σχετικά απλό στη χρήση. Με αυτό το απόσπασμα κώδικα, τράβηξα τις τρέχουσες συναλλαγματικές ισοτιμίες για πέντε διαφορετικά νομίσματα (Bitcoin, Bitcoin Cash, Ethereum, Litecoin και EOS).

Το URL για την κλήση API θα μοιάζει με αυτό, ανάλογα με τα νομίσματα για τα οποία θέλετε να αντλήσετε δεδομένα:

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

Χρησιμοποιώντας τα πακέτα Request και JSON για Python μπορούμε να φορτώσουμε αυτά τα δεδομένα ως λεξικό με πλήκτρα για κάθε κρυπτογράφηση που συμπεριλάβαμε στη λίστα μας. Η τιμή που σχετίζεται με κάθε ένα από αυτά τα κλειδιά είναι ένα άλλο λεξικό με καταχωρήσεις για τις συναλλαγματικές ισοτιμίες για το συγκεκριμένο ζεύγος νομισμάτων. Για παράδειγμα, για το Bitcoin Cash έχουμε το ακόλουθο αποτέλεσμα:

Αυτό δείχνει ότι 0.25 Ethereum ή 0.16 Bitcoin μπορούν να αγοραστούν με 1 Bitcoin Cash. Με αυτά τα αποτελέσματα για κάθε κρυπτογράφηση, είμαστε έτοιμοι να ορίσουμε το γράφημα.

Κάθε ένα από τα νομίσματα αντιπροσωπεύει μια «κορυφή» στο γράφημα και η συναλλαγματική ισοτιμία μεταξύ δύο νομισμάτων είναι «άκρο». Μετά την προετοιμασία ενός κενού αντικειμένου γραφήματος, ορίζουμε μια λίστα πλειάδων για κάθε ζεύγος νομισμάτων και τη συναλλαγματική ισοτιμία τους και στις δύο κατευθύνσεις.

Η λίστα για τις άκρες θα μοιάζει κάπως έτσι:

Με τις άκρες που προστίθενται στο γράφημα, είμαστε έτοιμοι να αναζητήσουμε ευκαιρίες arbitrage. Χρησιμοποιώντας τη λειτουργία συνδυασμών από το πακέτο itertools ορίζουμε όλα τα πιθανά ζεύγη νομισμάτων. Στη συνέχεια, χρησιμοποιούμε τη συνάρτηση all_simple_paths από το NetworkX για να ορίσουμε όλες τις πιθανές διαδρομές από το πρώτο νόμισμα στο δεύτερο.

Για παράδειγμα, εάν κοιτάζουμε τα Litecoin και Bitcoin Cash, υπάρχουν πολλά πιθανά μονοπάτια με δεδομένα τα νομίσματα που εξετάζουμε. Μπορούμε απλά να αγοράσουμε Bitcoin Cash με Litecoin ή μπορούμε να αγοράσουμε Bitcoin με Litecoin και στη συνέχεια να χρησιμοποιήσουμε Bitcoin για να αγοράσουμε Bitcoin Cash.

Περνάμε σε κάθε διαδρομή και εκτελούμε τους ακόλουθους υπολογισμούς σε κάθε βήμα. Πρώτον, υποθέτουμε ότι ξεκινάμε με ένα από τα αρχικά νομίσματα. Πολλαπλασιάζουμε αυτό με τη συναλλαγματική ισοτιμία από το ένα νόμισμα στο άλλο μέχρι να φτάσουμε στο τέλος της διαδρομής.

Για παράδειγμα, αν ξεκινήσουμε με ένα Bitcoin Cash μπορούμε να αγοράσουμε 0.24 Ethereum, πολλαπλασιάζοντας 1 x 0.24197529 = 0.24197529. Η συναλλαγματική ισοτιμία από Ethereum σε Bitcoin είναι 0.06 και πολλαπλασιάζουμε 0.24197529 x 0.06484324 = 0.0156904618035396. Αυτή η τιμή είναι πολύ κοντά στη συναλλαγματική ισοτιμία μεταξύ Bitcoin Cash και Bitcoin αλλά δεν είναι ακριβώς η ίδια.

Σε αυτό το σημείο, ελέγχουμε το αντίστροφο της διαδρομής, δηλαδή το Bitcoin to Ethereum σε Bitcoin Cash πολλαπλασιάζοντας το 1 x 15.414849 x 4.132739 = 63.705547641411. Πολλαπλασιάζουμε αυτά τα δύο αποτελέσματα μαζί για την τελική μας αξιολόγηση της διαδρομής (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Από όσα γνωρίζω, δεν υπάρχει καθορισμένος όρος για αυτήν την τιμή. Μπορούμε να το ονομάσουμε το Arbitrage Factor.

Εάν οι συναλλαγματικές ισοτιμίες ήταν συγχρονισμένες, το Arbitrage Factor θα ήταν ακριβώς ένα. Μια τιμή μικρότερη από μία υποδηλώνει ότι περάσαμε τη σειρά ανταλλαγών και τελειώσαμε με λιγότερα από όσα ξεκινήσαμε. Ψάχνουμε λοιπόν αυτή η τιμή να είναι μεγαλύτερη από μία, καθώς η πραγματοποίηση των ανταλλαγών θα οδηγούσε σε κέρδος. Εάν είχαμε βρει το Arbitrage Factor να είναι 1.005 στο προηγούμενο παράδειγμά μας, αυτό θα σήμαινε ότι ακολουθώντας αυτήν την πορεία ανταλλαγών από το ένα crypto στο άλλο και πίσω, θα μπορούσαμε να έχουμε κερδίσει 0.005 Bitcoin Cash (αξίας περίπου $ 3)

Οι ευκαιρίες Arbitrage έρχονται και πηγαίνουν για διαφορετικά κρυπτογραφημένα προϊόντα κατά τη διάρκεια της ημέρας και είναι δυνατό να ελέγξετε όλους τους συνδυασμούς για πολλά νομίσματα χωρίς να βρείτε έναν παράγοντα Arbitrage σημαντικά πάνω από έναν. Ωστόσο, έχω δει Arbitrage Factors πάνω από 1.01, υποδεικνύοντας ότι η απόδοση 1% θα μπορούσε να κερδίσει σε λίγες στιγμές μέσω απλών ανταλλαγών κρυπτονομισμάτων.

Φέρνοντας τις τρεις λειτουργίες που εξηγούνται παραπάνω, είμαστε σε θέση να δημιουργήσουμε έναν σαρωτή crypto arbitrage.

Το arbitrage νομίσματος είναι μια καθιερωμένη και χαμηλού κινδύνου μέθοδος συναλλαγών, αλλά η αγορά παραδοσιακών νομισμάτων είναι πολύ αποτελεσματική και ανταγωνιστική. Υπάρχει μεγαλύτερη ευκαιρία στα κρυπτονομίσματα και μερικά απλά εργαλεία Python μπορούν να βοηθήσουν στη διευκόλυνση της στρατηγικής. Το NetworkX μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός γραφήματος και για γρήγορη αναζήτηση ευκαιριών arbitrage.

Ωστόσο, εξακολουθούν να υπάρχουν προκλήσεις που πρέπει να ξεπεραστούν. Πρώτον, τα τέλη για την ανταλλαγή κρυπτονομισμάτων μπορεί να είναι πολύ υψηλά. Αυτό σημαίνει ότι τυχόν ανισορροπίες μεταξύ των κρυπτογράφων πρέπει να είναι σημαντικές για να είναι κερδοφόρες. Ταυτόχρονα, η στρατηγική θα είναι πιο αποτελεσματική εάν αυτοματοποιηθεί και ρυθμιστεί να λειτουργεί περιοδικά ή όλο το εικοσιτετράωρο. Παρακολουθήστε μελλοντικά άρθρα σχετικά με την εφαρμογή στρατηγικών συναλλαγών κρυπτογράφησης με παρουσίες AWS EC2 ή λειτουργίες Lambda.

Περισσότερο περιεχόμενο στο plainenglish.io

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

Σφραγίδα ώρας:

Περισσότερα από Μέτριας Δυσκολίας