Mit Bitcoin kann man sowohl viel Zeit als auch Geld verschwenden – allerdings auch gewinnen. Ich sehe in meinen Traffic-Auswertungen, dass vor allem ein Artikel von mir viele Clicks von Google bekommt und das ist der Artikel Arbitrage Bots – Wast ist das?. Arbitrage-Bots bzw. Trading-Bots ganz allgemein, sind in mehr als 99,9% der Fällen pure Abzocke. Das tut meinem Herzen weh, da sich mein Artikel auf die technische Umsetzung und verwandte Artikel stürzt ohne die hohe Anzahl an Betrügerseiten gebührend zu schelten. Zur weiteren Klarstellung: Ich bin als Moderator in einer FB-Gruppe rund um das Thema Kryptowährungen tätig und jedes Mal wenn jemand einen Artikel teilt, schaue ich mir den Artikel und die Website an und prüfe:
- Ist der Artikel inhaltlich glaubhaft und vermittelt entweder eine interessante Idee oder eine echte Neuigkeit?
- Macht die Seite (etwa über Affiliate-Links) Werbung für etwaige Scams?
Manchmal lehne ich Artikel ab, obwohl der Artikel für sich sinnvoll wäre weil auf der Seite für einen Trading-Bot Werbung gemacht wird welcher absurd hohe Rendite verspricht. Diese Rendite lassen sich nicht erwirtschaften. Warum weiß ich das?
Finanzmathematik und Statistik sind die Werkzeuge hinter vernünftigen Trading-Bots. Kursdaten sind auch zugänglich, daher kann man schon anfangen zu rechnen und zu prüfen welche Rendite überhaupt möglich waren.
Allerdings gilt die Regel: Wenn’s funktioniert spricht wenig dafür dieses Wissen öffentlich – auch gegen einen Obolus – zugänglich zu machen. Man möchte ja still und heimlich davon profitieren und nicht zuviel Aufmerksamkeit der anderen Marktteilnehmer auf seine Strategien lenken.
Im folgenden Artikel möchte ich die Idee von Trading-Bots für Laien etwas verständlicher machen. Daher werde ich keine großen und komplizierten Modelle aufstellen sondern mich auf die absoluten Basics der Statistik beschränken und diese auf Preisdaten von Bitcoin anwenden. Mein Ziel ist es, dass dies jedem halbwegs verständlich ist der die vier Grundrechenarten beherrscht. Meine Daten des Bitcoin/USD-Kurses stammen von Yahoo Finance Bitcoin USD und sind öffentlich zugänglich. Wer das ganze auch mit Python-Source-Code nachvollziehen will, findet am Ende des Artikels den Link zum Source-Codes des Jupyter-Notebooks.
Zu aller erst werfen wir einen Blick auf die verfügbaren Daten. Sie sind im so genannten OpenHighLowClose-Format bzw. kurz auch OHLC-Format. Jede Zeile dieser Daten spiegelt den Kurszustand eines Tages wieder. Das ist das Standard-Format von Candle-Charts und gibt uns folgende vier Kennzahlen:
- Open bzw. der Kursstand als die Börsen öffneten
- High bzw. den Höchststand des Kurses (an diesem Tag)
- Low bzw. der Niedrigststand des Kurses (an diesem Tag)
- Close bzw. der Kursstand als die Börsen schlossen
Simpler Trading Bot – Buy and hold
Wir sehen also die OHLC-Daten sowie das dazugehörige Datum und das Handelsvolumen an diesen Tagen. Bei Programmen gilt die Faustregel, dass umso komplexer und aufwendiger die Programmlogik, umso höher die Wahrscheinlichkeit, dass man Bugs einbaut. Was ist die simpelste Logik für einen Trading-Bot? Hodl natürlich! Das führt mich gleich zur ersten Frage: Nehmen wir an ich kaufe an einem beliebigen Tag im letzten Jahr und halte einfach die Coins. Hätte ich damit einen Verlust gemacht?
Günstig gekauft und Gewinn gemacht: 152 Tage Teuer gekauft und Verlust gemacht: 215 Tage
Aus den Zahlen ist bereits ersichtlich: Hodl auf ein Jahr beschränkt, bedeutet bei einem einmaligen Kauf häufiger Nieten zu ziehen als Gewinnerlose. Die Wahrscheinlichkeit ein Gewinnerlos zu ziehen ergibt sich aus der Anzahl der Gewinnerlose durch die Gesamtanzahl aller Lose (inkl. der Verliererlose):
Wahrscheinlichkeit günstig zu kaufen: 41.42%
Sparplan automatisiert – Trading-Bot für Sparplan rentabel?
Hodl als Taktik neigt bei Einmalkäufen zu einer relativ hohen Chance daneben zu liegen und ist damit nicht für einen Trading-Bot geeignet. Die Steigerung von Einmalkauf und Hodl ist ein Sparplan der regelmäßig nachkauft. Nehmen wir also an, wir würden für 50 USD immer am Monatsersten nachkaufen. Würden wir Gewinn oder Verlust machen? Um hier gleich den Worst-Case abzudecken wird jeweils zum High des jeweiligen Tages gekauft. Da unsere Daten vom 22. an starten, wird jeder 22. Tag des Monats als Stichtag hergenommen. Der schlussendliche Wert der durch unseren Sparplan gekauften BTC wird am Low des letzten Tages gemessen.
Es wurden 0.06931390582785103 BTC um 600 USD gekauft. Das entspricht dem Gegenwert von 635.3240857198069 USD Relativ gesehen, entspricht das einem Profit von 5.89%
Ein theoretischer Profit von 5.89% ist keine bahnbrechende Errungenschaft. Allerdings bedeutet dies, dass die Inflation geschlagen ist und der Wert des Geldes zumindestens erhalten bleibt. Diese Taktik – so simpel sie ist – erlaubt uns dank Cost-Average-Effekt einen respektablen Profit zu erwirtschaften.
Aber ginge das besser wenn der Tag im Monat ein anderer ist? Statt dem 22. zB. der 1.?
Das spannende an dem Ergebnis ist, dass es für den simplen Sparplan im letzten Jahr nicht eine Variante gab, an der man einen Verlust gemacht hätte. Die Kalkulation passiert allerdings schon unter verschärften Bedingungen, da die Kalkulation darauf baut, dass man immer zum Höchsstand des jeweiligen Tages kauft und am Niedrigsstand des Stichtags (24. Mai 2020) verkauft hätte.
Anhand des Graphs lässt sich allerdings schon eines feststellen: Die ersten 14 Tage des Monats sind denkbar schlechte Tage um einzukaufen. Etwa Mitte des Monats sind lt. der vergangenen Daten die besten Tage um zu kaufen. Bedeutet das, dass ein Bot der immer am 17. des Monats kauft den meisten Profit machen wird nächstes Jahr? Nein! Das ist ein Trugschluss, da man nicht die vergangenen Marktdaten hernehmen kann um die Zukunft zu erschließen.
Rein psychologisch betrachtet würde es aber Sinn machen, nicht erst am 7. Tag – wenn jeder seinen Gehalt hat und sich erinnert mal wieder ein paar Milli-Bitcoin zu kaufen – den Weg auf den Exchange findet…
Möglicher Profit? Daten muss man erkunden
Was ist überhaupt möglich? Die Frage ist relativ einfach zu beantworten. In der besten aller Welten kauft man zum allergünstigsten Moment ein und verkauft ebenfalls zu dem Zeitpunkt an dem man am meisten dafür bekommt.
Der höchstmögliche Profit der so erzielt werden kann beträgt 243.41%
Ein Profit von 243,41% ist schon recht ordentlich aber solche Rendite erzielen wenn man alle Daten hat, ist einfach. Schwieriger wird es, wenn man sich Gedanken macht wie man die existierenden Daten bewertet um Entscheidungen zu treffen und Geld zu riskieren.
Trading-Bots – Überirdische Performance ist unmöglich
Die vorhergehenden Auswertungen geben uns den groben Rahmen vor. Mit perfektem Wissen(!) ist ein Profit von 243,41% möglich. Gott, als allwissendes Wesen, kann also sein Geld nur etwas mehr als verdreifachen mit diesem Bitcoin-Handel. Da gängige Trading-Bots nur von einfachen Sündern geschrieben werden, können wir Gottes Performance als absolute Obergrenze annehmen.
Dies sollte man immer im Hinterkopf behalten wenn jemand bestimmte mögliche Profite vorrechnet. Einfach den Taschenrechner zücken und nachrechnen ob hier jemand übergöttliche Profite verspricht. Denn ohne zusätzliches Risiko, zB. durch Hebel oder Marktmanipulation, ist es rechnerisch unmöglich den perfekten Trade zu schlagen.
Mechanische Kaufentscheidungen – Eine Beispielstrategie
Nachdem die Obergrenze klar ist, geht es daran herauszufinden wie man so einen Robo-Trader programmieren könnte. Das folgende Beispiel nimmt echte Daten her und entwirft eine simple Strategie. Am Ende berechnen wir noch wie gut sie performen würde. Achtung: Vergangene Daten geben keine Garantie ab auf zukünftige Gewinne bzw. Verluste.
Bevor wir aber in die Zukunft schauen, schauen wir uns die Vergangenheit an. Ich persönlich wollte als erstes wissen wie lange Ab- bzw. Aufwärtsbewegungen dauern.
Der Graph zeigt an wie lange die Aufwärts (Up) bzw. Abwärtsbewegung (Down) in Tagen dauert.. Allerdings sagt das noch nicht viel aus. Wie sehr verändert sich des Bitcoin-Preises wenn sich der Chart rauf bzw. runter bewegt?
Aus den Daten ergibt sich auf den ersten Blick, dass die Härte des Absturzes bzw. Höhe des Gewinns und die Dauer einer solchen Periode nicht direkt miteinander verbunden sind. Um die Logik für dieses Beispiel möglichst simpel zu halten, nehme ich die Daten her und überlege mir eine simple Strategie, die – zumindestens auf den ersten Blick – funktionieren könnte:
- Wenn eine Abwärtsperiode länger als 5 Tage dauert wird verkauft
- Wenn ein Aufschwung min. 2 Tage gedauert hat, wird gekauft
Diese Strategie führt dazu, dass der Bot tagelang nichts tun wird und einfach nur die Charts beobachtet. Daher taufe ich diese Strategie „Die Faultierstrategie“
Faultier-Trading – Wie gut performt es?
Nachdem die erste echte Trading-Strategie ausgearbeitet ist, geht es ans Messen der Performance. Dazu werden wieder die historischen Daten hergenommen. Stichtag ist der erste Tag der Daten. Um die Performance unter den schlechtmöglichsten Bedingungen zu testen, werden weiters folgende Annahmen gemacht:
- Gekauft wird immer zum Tageshöchstpreis
- Verkauft wird immer beim Tiefstand des Tagespreises
- All-In – es wird immer alles ver- bzw. gekauft
Gestartet wird die Simulation mit 2.000 USD und es wird am ersten Tag sofort um 1.000 USD gekauft. Damit sind die Startbedingungen so gewählt, dass beim ersten Trade sowohl gekauft als auch verkauft werden kann. Dies ergibt folgende Trading-Historie
Wenn man den Niedrigststand vom 24. Mai 2020 hernimmt, ergibt das ein Wallet im Gegenwert von 3012,72 USD.
Zu meiner großen Überraschung führt diese simple Strategie zu einem Gewinn von über 50%. Allerdings heißt das noch lange nicht, dass diese Strategie stetig und immer so gut performt. (Zugegeben, ich habe ein wenig mit den Parametern herumgespielt, da mein erster Versuch das Geld halbiert hat 🙂
Conclusio
Wer bis hierhin gekommen ist, nimmt hoffentlich folgende Punkte mit:
- Trading-Bots programmieren ist keine hohe Kunst
- Gut performende Trading-Bots programmieren die auch ständig Gewinne machen sehr wohl.
- Die perfekten Trades von Gott schlägst du nicht. Wer dir das verspricht will dich nur abzocken
Jeder der sich selbst mit den Daten spielen möchte, ist herzlich dazu eingeladen diesen Artikel als Basis herzunehmen. Der ganze Artikel ist als Jupyter-Notebook entstanden und inkl. des dazugehörigen Python-Codes frei hier erhältlich: Crypto Number Fiddles
Das Bild stammt von https://commons.wikimedia.org/wiki/File:Robot_banana.jpg und zeigt nur einen Ausschnitt. Die selben Creative Commons Bedingungen gelten für den Bildausschnitt.