Ich habe 3 Jahre Kursdaten gegen 40 Trading-Strategien laufen lassen. Würfeln war besser.

in #deutschlast month

Ein Erfahrungsbericht mit offengelegten Zahlen — und einer Einladung, mich zu widerlegen.


Ich baue seit Monaten an einem Krypto-Trading-Bot. Nicht als Hobby-Spielerei, sondern mit dem klaren Ziel: Der soll Geld verdienen. Ich bin Netzwerktechniker, ich kann programmieren, ich habe Server, Daten und Zeit. Wenn es funktioniert, sollte ich es hinkriegen.

Also habe ich mir 31,7 Millionen Kerzen besorgt. 54 Coins. Minutengenau. Drei Jahre. 3,5 Gigabyte Datenbank.

Und dann habe ich getestet. Mehrere tausend Backtests.

Das Ergebnis ist so unbequem, dass ich es zweimal nachgerechnet habe.


Der Moment, in dem ich dachte, ich hätte es geknackt

Lasst mich mit meinem größten Fehler anfangen. Der ist wichtiger als alles andere in diesem Artikel.

Ich hatte einen Gewinner. Eine Strategie auf Basis der Stochastik — ein Standardindikator, den jeder kennt. Die Zahlen:

  • +59% bis +93% pro Jahr
  • Drawdown nur 7–12%
  • Walk-Forward-Test: 3 von 3 Zeiträumen positiv
  • Stichprobe: 270 bis 641 Trades
  • Weit über der Zufallsschwelle

Das bestand jede einzelne Hürde, die ich mir vorher gesetzt hatte. Ich saß da und dachte: Das ist es. Das ist der Bot.

Eine Sache hat mich gestört. Je stärker ich den Indikator geglättet habe, desto besser wurde das Ergebnis. Immer weiter. Monoton.

Das ergibt keinen Sinn. Ein Rauschfilter hat ein Optimum — irgendwann glättest du das Signal mit weg. Wenn mehr Glättung immer besser ist, stimmt etwas nicht.

Der Fehler steckte in einer einzigen Zeile:

kd = np.convolve(k, np.ones(d)/d, mode="same")

mode="same" glättet zentriert. Der geglättete Wert an Tag 10 enthält auch die Tage 11, 12, 13. Mein Indikator hat in die Zukunft geschaut.

Korrigiert:

kd = np.convolve(k, np.ones(d)/d, mode="full")[:len(k)]

Neues Ergebnis: 9 bis 16% pro Jahr, Walk-Forward inkonsistent. Also nichts.

Merkt euch diesen Teil. Ich hatte keinerlei Interesse daran, mich selbst zu betrügen — im Gegenteil, ich wollte einen funktionierenden Bot. Ich hatte mir vorher strenge Prüfregeln gesetzt. Und ich hätte trotzdem beinahe echtes Geld auf einen Programmierfehler gesetzt.

Jetzt stellt euch jemanden vor, der euch einen Trading-Kurs verkaufen will. Der hat nicht nur kein Interesse daran, den Fehler zu finden — er hat ein finanzielles Interesse daran, ihn nicht zu finden.


Was ich alles getestet habe

Die vollständige Liste. Jede Zeile steht für dutzende bis hunderte Einzeltests, alle mit realistischen Gebühren, Slippage und strikter Trennung von Trainings- und Testdaten:

Die Klassiker: MACD, Bollinger Bänder, RSI, Stochastik, Supertrend, Parabolic SAR, SSL-Kanal, gleitende Durchschnitte in allen Kombinationen, Donchian-Breakouts.

Die Chartanalyse: Fibonacci-Retracements, Elliott-Wellen, Chartmuster (Kopf-Schulter, Dreiecke, Flaggen).

Die anspruchsvolleren Sachen: Cross-Sectional Momentum, Residual Momentum, statistische Arbitrage mit Kointegration, Lead-Lag-Analysen zwischen Coins, adaptive Regime-Steuerung, Machine Learning (XGBoost), k-NN-Mustervergleich über die gesamte Historie.

Die Datenquellen jenseits vom Kurs: On-Chain-Metriken (Hashrate, Mempool, Miner-Einnahmen, Transaktionszahlen), Stablecoin-Emissionen, Funding-Raten, Orderflow (Taker-Buy-Verhältnis), Volatilitätserwartung (Deribit DVOL), Volatilitäts-Risikoprämie, Positionierungsdaten, Fear & Greed Index, Token-Unlocks, Google Trends.

Die mechanischen Verfahren: Grid Trading, DCA, Value Averaging, Risk Parity, Volatilitäts-Targeting, Rebalancing.

Insgesamt rund 40 Strategiefamilien.

Ergebnis: Eine einzige funktioniert. Ich komme darauf zurück — sie wird euch enttäuschen.


Die Zahl, die am meisten weh tut

Ich habe irgendwann eine Kontrollgruppe eingebaut, die ich jedem empfehle: zufällige Einstiege. Einfach würfeln, wann gekauft wird. Gleiche Haltedauer, gleiche Gebühren, gleiche Ausstiegsregeln.

Die Zufallsstrategie machte +4,58% pro Jahr.

StrategieErgebnis p.a.gegen Zufall
Zufällige Einstiege+4,58%
MACD−33%−38 Punkte
Bollinger Bänder−38%−42 Punkte
SSL-Kanal−72%−77 Punkte

Lest das nochmal. Diese Indikatoren sind nicht einfach nur nutzlos. Sie sind aktiv schädlich. Sie sind schlechter als würfeln.

Der Grund ist simpel und hat nichts mit Magie zu tun: Sie erzeugen ein Vielfaches an Signalen. Jedes Signal kostet Gebühren. Bei genug Trades frisst allein die Gebühr das Kapital auf — völlig egal, ob die Einstiege gut oder schlecht sind.

Der Indikator verkauft dir das Gefühl, einen Grund zu haben. Der Grund kostet dich Geld.


„Aber der Indikator hat doch eine höhere Trefferquote!"

Kriege ich oft. Und stimmt sogar manchmal. Guckt euch MACD an:

  • Durchschnittliche Rendite pro Trade: +0,231%
  • Zufällige Einstiege: +0,174%

MACD ist pro Trade besser als Zufall. Klarer Fall, oder?

In der Kapitalkurve lag dieselbe Strategie bei −33% pro Jahr.

Wie geht das zusammen? Weil „durchschnittliche Rendite pro Trade" eine Kennzahl ist, die nichts über dein Konto aussagt. Sie ignoriert, wie viele Positionen gleichzeitig laufen, wieviel Kapital gebunden ist und wie oft du handelst. Ich hatte in einem frühen Test eine Strategie, die auf dem Papier 232 Millionen Euro gemacht hat — weil ich Trades sequenziell aufaddiert habe, statt eine echte Kapitalkurve zu rechnen.

Wenn dir jemand Trefferquoten oder Durchschnittsgewinne zeigt, aber keine Kapitalkurve mit Drawdown: Das ist kein Versehen.


Elliott-Wellen, Fibonacci und der ganze Zauber

Kurz, weil es kurz sein kann.

Ich habe Fibonacci-Retracements systematisch getestet: Trifft der Kurs an den „magischen" Niveaus (38,2%, 50%, 61,8%) häufiger auf Unterstützung als an beliebigen anderen Niveaus?

Die richtige Kontrollgruppe ist hier alles. Nicht gegen Null testen. Nicht gegen Gleichverteilung. Sondern gegen beliebige andere Preisniveaus im selben Zeitraum. Gegen die falsche Kontrollgruppe sieht Fibonacci nämlich großartig aus.

Gegen die richtige: kein messbarer Vorsprung. Dasselbe für Elliott-Wellen. Dasselbe für Chartmuster.

An einem einzigen Tag hätte ich ohne diese Kontrollgruppe drei Scheinbefunde in meinem Protokoll stehen gehabt.


Die vier Arten, wie man sich selbst betrügt

Das hier ist der eigentliche Wert des Artikels. Diese vier Fehler sind mir alle tatsächlich passiert. Jeder davon produziert überzeugende Gewinnkurven aus dem Nichts.

1. Der Blick in die Zukunft

Siehe Stochastik oben. Eine zentrierte Glättung, ein falsch gesetzter Index, ein Schlusskurs, den du zum Zeitpunkt der Entscheidung noch nicht kanntest. Warnzeichen: Das Ergebnis wird monoton besser, je mehr du eine Einstellung in eine Richtung drehst.

2. Überlappende Zeitfenster

Ich hatte ein Signal, das nach 90 Tagen +19% brachte gegen +10,9% normal. 55 Treffer, klang solide.

Diese 55 Tage lagen in etwa 20 zusammenhängenden Phasen. Davon hatten nur acht genug Abstand zueinander, dass sich ihre 90-Tage-Fenster nicht überlappten. Benachbarte Tage teilen sich 89 von 90 Tagen Kursverlauf — das sind keine 55 unabhängigen Beobachtungen, das sind acht.

Sauber gerechnet: +7,8%. Unter dem Normalwert.

3. Das Niveau-Problem (mein Favorit)

Ich habe fünf On-Chain-Kennzahlen gefunden, die statistisch signifikant den Kurs vorhersagten. Hashrate, Mempool, Miner-Einnahmen, Stablecoin-Umlauf — und der Bitcoin-Kurs selbst.

Moment. Der Bitcoin-Kurs sagt den Bitcoin-Kurs vorher?

Genau da liegt der Hund begraben. Über einen Zeitraum, der ungefähr dort endet, wo er anfing, hat ein hoher Stand zwangsläufig eine schlechte Folgerendite. Das ist statistisch völlig real — und komplett wertlos. Denn dass 100.000 „hoch" war, weißt du erst hinterher.

Als ich die Kennzahlen nur noch gegen ihre eigene Vergangenheit normiert habe — also so, wie du es an einem echten Handelstag könntest — fiel die statistische Signifikanz von p=0,007 auf p=0,185. Alle fünf. Weg.

4. Der Mischungs-Effekt

Ein Volatilitätssignal zeigte +20,1% gegen +10,3% normal. Es überlebte sogar den Überlappungstest.

Dann habe ich den Zeitraum halbiert:

ZeitraumSignalNormalVorsprung
1. Hälfte+22,9%+23,0%−0,1
2. Hälfte−2,5%−4,6%+2,1

In keiner der beiden Hälften gab es einen nennenswerten Vorsprung. Der Gesamtwert entstand nur, weil 36 der 50 Fälle zufällig in die Bullenphase fielen. Das Signal hat nie etwas vorhergesagt — es trat einfach häufiger auf, wenn der Markt ohnehin stieg.


Google Trends: der eleganteste Selbstbetrug

Den fand ich so gut, dass er einen eigenen Abschnitt verdient.

Idee: Retail-Aufmerksamkeit als Kontraindikator. Wenn alle „Bitcoin kaufen" googeln, ist die Party vorbei. Klingt plausibel, ist populär.

Die Zahlen waren umwerfend:

Nach einer Aufmerksamkeits…Kurs nach 26 Wochen
Spitze−5,4%
Durchschnitt+25,2%
Tief+74,3%

Vier von fünf Suchbegriffen statistisch signifikant. Das sah aus wie eine Goldgrube.

Dann ist mir aufgefallen, wie Google Trends funktioniert: Die Skala geht von 0 bis 100, und 100 ist das Maximum des abgefragten Zeitraums.

Wenn ich heute fünf Jahre abfrage, dann bedeutet der Wert 85 aus dem Jahr 2022: „85% von dem Maximum, das irgendwann bis 2026 erreicht wurde." Diese Bezugsgröße kannte 2022 kein Mensch.

Jeder einzelne Rohwert enthält Zukunftswissen.

Rechnet man das raus, indem man nur die Abweichung vom eigenen 26-Wochen-Durchschnitt betrachtet:

VarianteZusammenhangSignifikanz
Rohwertρ = −0,618p = 0,004
Abweichung vom Schnittρ = −0,184p = 0,403

Weg. Dazu: In der ersten Zeithälfte lag der Zusammenhang bei exakt null, und Ethereum bestätigte nichts.

Wie viele Leute veröffentlichen Google-Trends-Charts als Beleg für ihre Marktthese? Und wie viele davon wissen, wie die Skala normiert wird?


Was tatsächlich funktioniert (Achtung, Enttäuschung)

Eine Sache aus vierzig hat alle Kontrolltests überlebt: Rebalancing.

Feste Zielgewichte auf mehrere Coins, ein Teil in Stablecoins. Weicht eine Position um mehr als 3% ab, wird zurückgeschichtet. Kein Signal, keine Prognose, kein Timing.

Über 1.148 Tage, mit 1.000 Euro Einsatz:

Endwertgrößter Rückgang
Rebalancing2.431 €53,4%
Buy & Hold2.261 €74,3%

Der isolierte Vorteil — also der Teil, der wirklich vom Umschichten kommt und nicht von der Kursentwicklung — liegt bei +1,8 bis +3,5% pro Jahr.

Das ist der Gewinner. Ein bis drei Prozent. Bei über 50% zwischenzeitlichem Rückgang.

Und der Mechanismus ist kein Geheimwissen, sondern hundert Jahre alte Mathematik: Wenn zwei schwankende Anlagen sich unterschiedlich bewegen, verkaufst du beim Umschichten automatisch die gestiegene und kaufst die gefallene. Der entscheidende Faktor ist dabei nicht die Volatilität, sondern die Korrelation — je unabhängiger sich die Coins bewegen, desto mehr trägt es.

Niemand verkauft dir einen Kurs dafür. Es gibt keine Signale zum Abonnieren. Man kann es in zwanzig Zeilen Code schreiben.


Und jetzt der Teil, der mir wichtig ist

Ich behaupte nicht, dass mit Krypto-Trading niemand Geld verdient.

Hochfrequenzhändler verdienen nachweislich Geld. Market Maker verdienen an Spreads. Wer Millisekunden-Latenz und Colocation im Rechenzentrum hat, spielt ein anderes Spiel als du und ich. Ich kann außerdem nur über das reden, was ich getestet habe: drei Jahre Daten, 54 Coins, meine Methodik.

Was ich behaupte, ist enger und dafür belastbar:

Auf drei Jahren echter Kursdaten hat keine der vierzig geprüften Strategiefamilien nach Kosten einen belegbaren Vorteil gegenüber zufälligen Einstiegen erzielt. Die meisten verkauften Standardindikatoren waren messbar schlechter als Würfeln.

Und die zweite Behauptung, die noch unbequemer ist:

Fast jeder überzeugende Backtest, den ich selbst produziert habe, war bei genauem Hinsehen ein methodischer Fehler. Und ich hatte jedes Interesse daran, dass er stimmt.

Wenn das für jemanden gilt, der nichts verkaufen will — was ist dann von den Gewinnkurven zu halten, die jemand zeigt, der dir ein Abo, einen Kurs oder einen Signaldienst andrehen möchte?


Die fünf Fragen, die jeden Trading-Verkäufer entlarven

Ihr braucht keine Statistik-Vorlesung. Fünf Fragen reichen:

  1. „Zeig mir die Kapitalkurve mit maximalem Drawdown." Nicht Trefferquote. Nicht Durchschnittsgewinn pro Trade. Die Kurve.
  2. „Wie schneidet die Strategie gegen zufällige Einstiege ab?" Wenn diese Kontrollgruppe fehlt, fehlt der Vergleich, auf den es ankommt.
  3. „Auf welchen Daten wurden die Parameter gewählt, und auf welchen getestet?" Wenn es dieselben sind, ist das Ergebnis wertlos.
  4. „Wie viele unabhängige Beobachtungen sind das?" Nicht wie viele Trades — wie viele Zeiträume, die sich nicht überlappen.
  5. „Sind die Gebühren drin?" Bei 0,1% pro Trade und täglichem Handeln zahlst du im Jahr über 70% deines Kapitals an Gebühren.

Auf keine dieser Fragen gibt es eine gute Ausrede.


Widerlegt mich

Ich will hier nicht recht haben. Ich wollte einen funktionierenden Bot — das Ergebnis ist mein Trostpreis, nicht mein Ziel.

Deshalb der ehrlichste Teil zum Schluss: Mein Befund ist nicht unwiderlegbar. Drei Jahre Daten sind für Aussagen über Jahreshorizonte zu wenig. Mein Testzeitraum enthält eine Hausse und einen schweren Einbruch, aber keine zwei vollen Zyklen. Es kann Strategien geben, die ich nicht geprüft habe.

Ein einziger sauberer Gegenbeleg würde reichen. Er müsste nur:

  • über einen Zeitraum laufen, der nicht zur Parameterwahl benutzt wurde
  • gegen zufällige Einstiege verglichen sein
  • Gebühren enthalten
  • eine Kapitalkurve zeigen
  • auf unabhängigen Beobachtungen beruhen

Das ist keine unfaire Hürde. Das ist das Minimum. Und in den Monaten, in denen ich das mache, hat mir noch niemand einen Backtest gezeigt, der alle fünf Punkte erfüllt.

Falls ihr einen habt: her damit. Ich rechne ihn nach und schreibe das Ergebnis auf — auch wenn ich damit falsch liege.

Bis dahin bleibe ich bei dem, was gemessen ist: Der Ertrag steckt in der Haltedauer, nicht im Einstiegszeitpunkt. Und jeder, der euch etwas anderes verkauft, verdient sein Geld nicht mit Trading. Er verdient es mit euch.


Getestet auf 31,7 Millionen Minutenkerzen, 54 Coins, Juli 2023 bis August 2026. Alle Backtests mit 0,1% Gebühren pro Trade, strikter Walk-Forward-Trennung und Kontrollgruppen gleicher Struktur.

Wenn euch der Artikel etwas gebracht hat: Der wertvollste Teil sind die vier Selbstbetrugs-Muster. Die gelten nicht nur für Krypto — sondern für jede Zahl, die euch jemand als Beweis vorlegt.

Sort:  
Loading...