Logbuch vom 25.10.2014
nachden der BTC/USD Kurs von 385 EUR auf bis zu 345 EUR heute Mittag gefallen war, und er Antizyklus Bot noch immer nicht die Gewichtung angepasst hat, habe ich die Anpassung aggressiver parametrisiert. Daraufhin hat der Antizyklus Bot endlich die lange erwartete Anpassung zwischen USD und BTC gemacht.
Und genau diese Änderung hat bewirkt, dass der Bot heute DOGE 0.00000070 BTC verkauft hat und um 0.00000071 BTC gekauft hat. So macht mit der Bot arm.
Ein klarer Verstoß gegen das buy low, sell high. Alerdings möchte ich auch keine Tradehistorie im Bot einbauen, das Ziel ist es, dass der Bot durch richtige Parameter automatisch billig kauft und teuer verkauft.
Es gibt ja nicht so viele Parameter, die zu berücksichtigen sind, aber irgendwie habe ich keine gute Hand bei der Auswahl der Parameter.
Der wichtigste Input für den Bot ist die Abweichung der IST Gewichtung von der SOLL Gewichtung. Dieser Teil des Bots funktioniert sicher, den habe ich mehrmals nachgerechnet. Der Bot schafft auch nie ganz genau, die Gewichtung ans SOLL anzupassen, warum, das ist klar, wenn man weiterdenkt. Das ist aber nicht das Hauptproblem.
Hauptsächlich fehlt mir die einfache JA/NEIN Entscheidung, ob die Anpassung durchgeführt werden soll oder nicht.
Jeder Trade hat Spesen und da der Trade so in den Markt gestellt wird, dass er sofort erfüllt wird, muss ich für die Entscheidung Fees und Spread berücksichtigen.
Als Beispiel: Der Preis in DOGE/BTC Markt ist 0.0000070/0.0000071, das ergibt einen Spread von 2*(0.0000071-0.0000070)/(0.0000071+0.0000070) = 0.01416 = 1.416%. Die Fees sind 0.2%.
Damit ein Kauf und darauffolgender Verkauf noch einen Gewinn macht, muss die Differenz zwischen Kauf und Verkaufspreis größer als doppelte Fees und einfacher Spread sein, also 1.416 + 2*0.2 = 1.816% sein.
Die DOGE sind nur mit 10% gewichtet. Gehen wir einmal von einer SOLL Gewichtung von ( 40 / 20 / 20 /10 /10 ) aus. Steigt der Preis der DOGE um 10%, und ändert sich sonst kein Preis, steigt der Gesamtwert um 1%. Die neue Gewichtung, ausgehend von der SOLL - Gewichtung ist durch den
10% Anstieg der Doge: ( 39.6 / 19.8 / 19.8 / 9.9 / 10.9 )
die Differenzen zur SOLL Gewichtung sind dadurch ( -0.4 / -0.2 / -0.2 / -0.1 / +0.9 )
Rechnen wir einen Anstieg von 10% bei den BTC ( die sind mit 40% gewichtet ) auch wieder von einer SOLL Gewichtung von ( 40 / 20 / 20 /10 /10 ) ausgehend, steigt der Gesamtwert um 4%. Dann ergibt sich bei
10% Anstieg von BTC ( 42.4 / 19.2 / 19.2 / 9.6 / 9.6 )
die Differenzen zu SOLL Gewichtung sind dadurch ( + 2.4 / -0.8 / -0.8 / -0.4 / -0.4 )
Das Problem ist allerdings, dass der Bot nur die Differenzen zur Soll-Gewichtung kennt, und es auf dem ersten Blick nicht ersichtlich ist, durch welche Wertänderungen der einzelnen Coins diese Differenzen entstanden sind. Ich habe bisher immer nur aufgrund der Differenzen zwischen IST und SOLL Gewichtung Trades in den Markt gesendet, was immer nur Gewichtung näher ans SOLL gebracht hat, aber nie auf den Punkt richtig gelöst hat. Eine Vergleich mit Spreads und Fees ist so zum Scheitern verurteilt. Kein Wunder, dass ich keine zufriedenstellende Parameter gefunden habe.
Das nächste Upgrade des Antizyklus Bots kann dann aus den Abweichungen von SOLL / IST Gewichtung ausrechnen, wie sich die Werte der Coins verändert haben müssen, damit es zu dieser Veränderung kommt. Und nur wenn die Veränderung der Coins größer als doppelte Fees und einfacher Spread ist, macht der Bot eine Anpassung. Das wird darauf hinauslaufen, dass der Bot ein lineares Gleichungssystem von n Gleichungen mit n Variablen lösen muss, was zum Glück dank Carl Friedrich Gauß seit 1799 keine Herausforderung mehr ist.
Bis diese Version fertig ist, macht der Bot einmal Pause. Ich berichte über die weiteren Schritte.