Analyst Be your own Analyst – Wie komme ich an gute Bitcoin-Daten?

Daten, auch im Krypto-Bereich, erzählen Geschichten. Doch wie kann ein Bitcoin-Interessierter diese Geschichten aus den Daten herauslesen? Die ersten Schritte hierzu sollen im Artikel erläutert werden.

Dr. Philipp Giese
Teilen
Für ein tieferes Verständnis um Bitcoin und Co. kann ein wenig Programmieren und Datenanalyse nicht schaden.

Beitragsbild: Shutterstock

Wer meine Artikel kennt, weiß, dass ich ein Faible für Daten und deren Visualisierung habe. Das führt dazu, dass neben den Chart-Analysen viele andere Inhalte durchaus data-driven sind. Seien es die wöchentlichen klassischen Marktvergleiche, verschiedene Kryptokompass-Inhalte oder seit rund einem Quartal die Bitcoin Reports: Bei all diesen Beiträgen sind Rohdaten der Ursprung. Bei den täglichen Kursupdates werden die Kurse sogar automatisiert in eine Artikelform gebracht.

Nun lautet ein eng mit der Krypto-Szene verbundenes Motto: Don’t trust, verify. Vertraue nicht einfach, prüfe nach. Eine Haltung, die sich in der ebenfalls im Bitcoin-Ökosystem bekannten Abkürzung DYOR (Do your own research) niederschlägt. Es geht schließlich nicht einfach um eine Offenlegung, sondern darum, jeden BTC-ECHO-Leser zu einem mündigen Krypto-Bürger zu machen. Deshalb sollen in diesem Artikel zwei der verwendeten Datenquellen vorgestellt werden. Für heute fokussieren wir uns dabei auf Bitcoin.

Ein Wort vorneweg: In allen oben genannten Formaten ist die Programmiersprache R das Tool der Wahl. Wer über die mächtige statistische Programmiersprache mehr erfahren will, kann in diesem Video etwas mehr lernen. Alle im weiteren Verlauf genannten Datenquellen sind jedoch auch mit anderen Tools wie Python zugänglich.

TradingView: Quelle für Rohdaten?

TradingView ist weit über die Bitcoin-Szene hinaus bekannt. Die Kursanalysen auf unserer Seite werden grundsätzlich auf dieser mächtigen Plattform durchgeführt. TradingView ist eine phantastische Plattform zum Erstellen von Charts. Was wenige wissen: Ein erster Schritt zum Jonglieren mit Daten kann das Exportieren der TradingView-Daten sein. So verfügt TradingView selbst mit Pine über eine recht mächtige Programmiersprache, die wir in einem alten Artikel vorstellten.

Was ist jedoch, wenn man externe Daten mit den TradingView-Daten kombinieren möchte? Hierfür bietet die Plattform seit wenigen Monaten die Möglichkeit des Datenexports. Ein Klick ermöglicht es, sowohl den Bitcoin-Kurs als auch alle Indikatoren im Layout als csv-Datei zu exportieren:

Daten von TradingView exportieren leicht gemacht.

CSV-Dateien sind Tabellen, in denen alle Werte einer Zeile durch Kommata getrennt sind. Man erhält so ein einfach zu lesendes Format, das beispielsweise auch in Excel oder ähnliches importiert werden kann.

Der Analyst in spe kann nun mit diesen Daten arbeiten. In R würde er sie mit einem einfachen Befehl einlesen können:

daten <- read.csv("Pfad/zum/Dateinamen.csv")

Natürlich gibt es noch andere Möglichkeiten. Viele Fans von R schwören auf Tidyverse, eine Gruppe von Bibliotheken für R, die das Arbeiten mit Daten extrem erleichtert. Das Tidyverse schlägt sich auch insbesondere in den Bitcoin Reports nieder. Es würde jedoch jetzt den Rahmen sprengen, auf diese näher einzugehen.

Jonglieren mit Bitcoin-Kurs dank Coingecko

Ein Nachteil bei obigem Ansatz: Prozesse lassen sich nicht automatisieren. Warum arbeitet man mit Programmiersprachen, wenn man für die weitere Verarbeitung der Daten noch dreimal klicken muss? Hier wäre ein direkterer Zugang zu den Kursen hilfreich.

Dazu geht es dem Analysten von Bitcoin & Co. oft nicht einfach um Kurse. Die Entwicklung vom Supply und von der Marktkapitalisierung steht immer wieder im Fokus der Analyse. Zwar kann hier auch TradingView helfen und die Menge an verfügbaren Daten wird immer größer. Zumindest noch sind Analysten aber diesbezüglich auf andere Datenquellen angewiesen.

Hier bietet sich an vielen Stellen das Arbeiten mit APIs an. API steht für Application Programming Interface und ermöglicht, einfach gesprochen, den Zugang zu Daten von der Kommandozeile beziehungsweise aus einem Programm. Coingecko ist ein Beispiel für eine derartige Plattform mit API. Das Angenehme: Aktuell muss man sich für diese nicht registrieren.

Möchte man nun eine Historie vom Bitcoin-Kurs reproduzierbar erfragen, ist das im ersten Schritt über eine URL möglich:

https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30

Problem: Das Format ist etwas ungewohnt. Anders als eine CSV-Datei ist dieses sogenannte JSON-Format nicht eine einfache Tabelle. Dennoch ist es in R recht einfach zu nutzen:

library(jsonlite)
daten <- fromJSON("https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30")

Die Variable Daten wird nun drei Tabellen enthalten, jeweils den Kurs, die Marktkapitalisierung und das Volumen enthalten. Über daten$prices, daten$market_caps und daten$total_volumes können diese einzelnen Tabellen weiter bearbeitet werden.

Die Zeit begann 1970: Das Unix-Zeitformat

Für daten$prices sehen die ersten fünf Zeilen wie folgt aus:

Die Rohdaten von einem API-Call bzgl Bitcoin

Die zweite Spalte ist zweifellos der Bitcoin-Kurs, aber was ist die erste? Es handelt sich hierbei um eine von Computern gut lesbare Zeitangabe, der Unix-Epoche. Sie zählt vom 1.1.1970 um null Uhr morgens in überschaubaren Zeiteinheiten. Hierfür werden häufig Sekunden oder Millisekunden wie in diesem Fall gezählt.

Natürlich kann uns R helfen, das in eine etwas lesbarere Zeit zu konvertieren:

as.POSIXct(daten$prices[,1]/1000,origin = "1970-01-01")
Dieser Befehl macht aus den Unix-Epochen lesbare Zeitstempel:

Statt eines obskuren Unix-Timestamps haben wir nun ein wirklich lesbares Format für die Zeit.

Wir haben nun gemeinsam den ersten Schritt in Richtung Datenanalyse im Bitcoin-Ökosystem unternommen. Natürlich haben wir nur die Oberfläche berührt. Dinge wie On-Chain-Daten haben wir noch nicht einmal angesprochen. Doch jeder Weg, auch der zum Krypto-Analysten, beginnt mit einem ersten Schritt. Obige Strategien können einen schon weit bringen. Nicht nur, dass man sich Kurs, Marktkapitalisierung und Handelsvolumen von Bitcoin nun visuell darstellen kann, man kann auch auf Abhängigkeiten der Größen untereinander achten. Mit diesem Befehl:

plot(daten$prices[,2],daten$total_volumes[,2]/10^9,xlab="Bitcoin-Kurs / US-Dollar", ylab = "Handelsvolumen in Mrd. US-Dollar")

kommt der Bitcoin-Analyst in spe auf diesen Chart:
Über den letzten Monat konnte man keinen Zusammenhang zwischen Kurs und Handelsvolumen feststellen

Bevor man sich über das recht hohe Handelsvolumen wundert: Zu jedem Zeitstempel speichert Coingecko das Handelsvolumen der letzten 24 Stunden.

Zugegebenermaßen: Das ist erstmal nicht der spannendste aller Charts. Wir wissen nun, dass es innerhalb des letzten Monats keine wirkliche Abhängigkeit zwischen Handelsvolumen und Bitcoin-Kurs gab. Aber was dieses Beispiel aufzeigen möchte: Das ist erst der Anfang eines Wegs. Man könnte sich fragen, ob es einen gewissen Lag zwischen Handelsvolumen und Kurs gibt und den Code entsprechend umformulieren. Man könnte den API Call derart erweitern, dass man nicht nur Daten der letzten dreißig Tage anschaut. Und wie steht es um die Abhängigkeit zwischen Handelsvolumen und Kurs bei anderen Kryptowährungen?

Dir, lieber Leser, wünschen wir viel Spaß und Erfolg bei eigenen Analysen. Wenn du etwas Interessantes zu erzählen hast, wäre es schön, wenn du mit uns und der Community in unserem Discord in Austausch trittst.

Du willst Sui (SUI) kaufen oder verkaufen?
Wir zeigen dir in unserem Leitfaden, wie und wo du einfach und seriös echte Sui (SUI) kaufen kannst.
Sui kaufen