Krypto-Arbitrage mit NetworkX und Python PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Krypto-Arbitrage mit NetworkX und Python

Analysieren von Kryptodaten aus der Coingecko-API, um einen Krypto-Arbitrage-Scanner in Python zu erstellen

McKlayne Marshall

Co-Autor mit Isaac Rhea

Photo by Alina Grubnjak on Unsplash

Auf den Währungsmärkten auf der ganzen Welt werden rund um die Uhr Volumina gehandelt, die deutlich höher sind als die von Anleihen, Aktien oder Futures Märkte. Teilnehmer an Devisenmärkten sichern Risiken ab oder spekulieren auf zukünftige Änderungen des Währungswerts.

Eine weitere Gewinnquelle ergibt sich aus der Ausnutzung kurzfristiger Ungleichgewichte bei den Währungsbewertungen. Mithilfe blitzschneller Algorithmen identifizieren Hochfrequenzhändler Arbitragemöglichkeiten und führen schnell eine Reihe von Börsen durch, die zu einem kleinen Gewinn führen. Sieh dir das an Artikel Ausführlichere Erklärungen und Beispiele finden Sie beim Corporate Finance Institute.

Institut für Unternehmensfinanzierung

Aufgrund des hohen Wettbewerbs und Handelsvolumens auf den Devisenmärkten sind diese Möglichkeiten nur von kurzer Dauer und die Gewinne gering. Obwohl durch Währungsarbitrage im Laufe der Zeit bei einer hohen Anzahl von Geschäften Gewinne erzielt werden können, besteht auf den Kryptowährungsmärkten eine ähnliche Chance, die möglicherweise sogar noch profitabler ist.

Da viele Kryptowährungen gehandelt werden können, gibt es viele mögliche Kombinationen, die auf Arbitragemöglichkeiten geprüft werden müssen. Die Datenstruktur Graph (Netzwerk) ist ideal, um die unterschiedlichen Wechselkurse zwischen Münzen zu verfolgen und Ungleichgewichte schnell zu identifizieren, die wir ausnutzen können. Weitere Informationen zu Graphen/Netzwerken und Python-Paketen, um damit zu arbeiten, finden Sie hier buchen der Pragmatische Programmierer Serie.

Um einen Graphen für Kryptowährungen zu erstellen, nutzen wir das NetworkX-Paket. Dies ist ein leistungsstarkes Tool, das es einfach macht, die Münzen, an denen wir interessiert sind, zu analysieren und Handelsmöglichkeiten zu finden. Zunächst erhalten wir Krypto-Wechselkurse von der CoinGecko-API. Anschließend initialisieren wir das Diagramm und definieren die Beziehungen (Wechselkurse) zwischen den einzelnen Münzen, an denen wir interessiert sind. Schließlich durchlaufen wir alle Pfade von einer Münze zur anderen und zurück, um Arbitragemöglichkeiten zu identifizieren.

Wenn Sie Erfahrung mit JSON-APIs haben CoinGecko Die API ist relativ einfach zu verwenden. Mit diesem Codeausschnitt habe ich die aktuellen Wechselkurse für fünf verschiedene Münzen (Bitcoin, Bitcoin Cash, Ethereum, Litecoin und EOS) ermittelt.

Die URL für den API-Aufruf sieht in etwa so aus, abhängig von den Coins, für die Sie Daten abrufen möchten:

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

Mithilfe der Request- und JSON-Pakete für Python können wir diese Daten als Wörterbuch mit Schlüsseln für jede Kryptowährung laden, die wir in unsere Liste aufgenommen haben. Der mit jedem dieser Schlüssel verknüpfte Wert ist ein weiteres Wörterbuch mit Einträgen für die Wechselkurse für dieses Währungspaar. Für Bitcoin Cash erhalten wir beispielsweise das folgende Ergebnis:

Dies zeigt, dass mit 0.25 Bitcoin Cash 0.16 Ethereum oder 1 Bitcoin gekauft werden können. Mit diesen Ergebnissen für jede der Kryptos sind wir bereit, den Graphen zu definieren.

Jede der Münzen stellt einen „Scheitelpunkt“ im Diagramm dar und der Wechselkurs zwischen zwei Münzen ist eine „Kante“. Nachdem wir ein leeres Graph-Objekt initialisiert haben, definieren wir eine Liste von Tupeln für jedes Münzpaar und deren Wechselkurs in beide Richtungen.

Die Liste der Kanten sieht etwa so aus:

Nachdem wir die Kanten zum Diagramm hinzugefügt haben, können wir nach Arbitragemöglichkeiten suchen. Mit der Kombinationsfunktion aus dem Paket itertools definieren wir alle möglichen Münzpaare. Anschließend verwenden wir die Funktion all_simple_paths von NetworkX, um alle möglichen Pfade von der ersten Münze zur zweiten zu definieren.

Wenn wir uns beispielsweise Litecoin und Bitcoin Cash ansehen, gibt es angesichts der von uns in Betracht gezogenen Münzen viele mögliche Wege. Wir können einfach Bitcoin Cash mit Litecoin kaufen oder wir können Bitcoin mit Litecoin kaufen und dann Bitcoin verwenden, um Bitcoin Cash zu kaufen.

Wir durchlaufen jeden Pfad und führen bei jedem Schritt die folgenden Berechnungen durch. Zunächst gehen wir davon aus, dass wir mit einer der Anfangsmünzen beginnen. Wir multiplizieren diesen mit dem Wechselkurs von einer Münze zur anderen, bis wir am Ende des Pfades angelangt sind.

Wenn wir beispielsweise mit einem Bitcoin Cash beginnen, können wir 0.24 Ethereum kaufen, also multiplizieren wir 1 x 0.24197529 = 0.24197529. Der Wechselkurs von Ethereum zu Bitcoin beträgt 0.06, also multiplizieren wir 0.24197529 x 0.06484324 = 0.0156904618035396. Dieser Wert kommt dem Wechselkurs zwischen Bitcoin Cash und Bitcoin sehr nahe, ist aber nicht genau gleich.

An dieser Stelle prüfen wir die Umkehrung des Pfades, d. h. Bitcoin zu Ethereum zu Bitcoin Cash, indem wir 1 x 15.414849 x 4.132739 = 63.705547641411 multiplizieren. Wir multiplizieren diese beiden Ergebnisse für unsere endgültige Bewertung des Pfads (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Meines Wissens gibt es für diesen Wert keinen definierten Begriff. Wir können es den Arbitrage-Faktor nennen.

Wenn die Wechselkurse synchron wären, wäre der Arbitragefaktor genau eins gewesen. Ein Wert kleiner als eins deutet darauf hin, dass wir die Austauschreihe durchlaufen und mit weniger als zu Beginn abgeschlossen haben. Daher gehen wir davon aus, dass dieser Wert größer als eins ist, da der Umtausch zu einem Gewinn führen würde. Hätten wir in unserem vorherigen Beispiel einen Arbitrage-Faktor von 1.005 ermittelt, hätte dies darauf hingewiesen, dass wir durch den Austausch von einer Kryptowährung zur anderen und zurück 0.005 Bitcoin Cash (im Wert von etwa 3 US-Dollar) hätten gewinnen können.

Im Laufe des Tages kommen und gehen Arbitrage-Möglichkeiten für verschiedene Kryptos und es ist möglich, alle Kombinationen für mehrere Münzen zu überprüfen, ohne einen Arbitrage-Faktor zu finden, der deutlich über eins liegt. Allerdings habe ich Arbitrage-Faktoren über 1.01 gesehen, was darauf hindeutet, dass durch einfache Kryptowährungsbörsen in wenigen Augenblicken eine Rendite von 1 % erzielt werden könnte.

Mit den drei oben erläuterten Funktionen sind wir in der Lage, einen Krypto-Arbitrage-Scanner zu erstellen.

Währungsarbitrage ist eine etablierte und risikoarme Handelsmethode, der Markt für traditionelle Währungen ist jedoch sehr effizient und wettbewerbsintensiv. Eine größere Chance besteht bei Kryptowährungen und ein paar einfache Python-Tools können dabei helfen, die Strategie zu erleichtern. Mit NetworkX können Sie ein Diagramm erstellen und schnell nach Arbitragemöglichkeiten suchen.

Es sind jedoch noch Herausforderungen zu bewältigen. Erstens können die Gebühren für den Handel mit Kryptowährungen sehr hoch sein. Das bedeutet, dass etwaige Ungleichgewichte zwischen Kryptos erheblich sein müssen, um profitabel zu sein. Gleichzeitig ist die Strategie am effektivsten, wenn sie automatisiert und so eingestellt ist, dass sie regelmäßig oder rund um die Uhr ausgeführt wird. Achten Sie auf zukünftige Artikel zur Implementierung von Krypto-Handelsstrategien mit AWS EC2-Instanzen oder Lambda-Funktionen.

Weitere Inhalte unter plainenglish.io

Quelle: https://python.plainenglish.io/crypto-arbitrage-with-networkx-and-python-638166e5a947?source=rss——-8—————–Kryptowährung

Zeitstempel:

Mehr von Medium