Dein Einstiegssignal ist wahrscheinlich der unwichtigste Teil deines Backtests. Ich kann eine mittelmäßige Momentum-Regel nehmen, alle Ein- und Ausstiegszeitpunkte unverändert lassen, nur die Funktion ändern, die festlegt, wie viele Kontrakte gehalten werden, und damit die Netto-Sharpe von 0.41 auf 0.71 und den maximalen Drawdown von 31% auf 13% verschieben. Dieselben Trades. Dieselben Ausführungen. Eine andere Strategie.
Diese Behauptung ärgert manche, und das sollte sie auch: Denn sie bedeutet, dass wir den Großteil unserer Zeit mit der Feinabstimmung von Lookbacks und Filterschwellen auf den kleinen Einflussfaktor verwenden. Ich zeige euch also die tatsächlichen Läufe und gebe anschließend auch den Kritikern recht, denn eine Version dieses Arguments ist falsch. Es lohnt sich zu wissen, welche Version ich vertrete.
1 Signal, 6 Arten, es zu halten
Das Signal: ETHUSDT Perpetual auf Binance USDⓈ-M, 1-Stunden-Bars, Long, wenn der 12-Stunden-EMA über dem 96-Stunden-EMA liegt, sonst Flat, keine Shorts. Juli 2022 bis Juni 2026. 431 Round Trips. Taker-Gebühren auf beiden Seiten mit 5.0 bps, Funding alle 8 Stunden je nach tatsächlicher Position gezahlt oder erhalten, Slippage anhand der Markttiefe auf Top-of-Book modelliert. Ein bewusst langweiliges Signal – ich habe es gewählt, weil niemand es verteidigen würde. So eignet es sich als sauberer Prüfstein.
Alle Zeilen unten verwenden dieselben Ein- und Ausstiegszeitpunkte auf Bar-Ebene. Nur die Sizing-Funktion unterscheidet sich.
| Sizing-Regel | Netto-Sharpe | Max. DD | Gehandelter Nominalwert/Jahr (× durchschnittliche Position) | Kosten in % des Brutto-PnL | Spitzenhebel |
|---|---|---|---|---|---|
| Fester Nominalwert von $10k | 0.41 | 18.2% | 246× | 14% | 1.0× |
| Fester Anteil, 100% des Eigenkapitals | 0.44 | 30.8% | 251× | 15% | 1.0× |
| Inverse 20-Tage-Realisierte-Volatilität | 0.68 | 14.1% | 690× | 29% | 4.4× |
| 20% annualisiertes Volatilitätsziel, stündliches Rebalancing, ohne Obergrenze | 0.71 | 12.9% | 1,180× | 41% | 6.3× |
| 20%-Volatilitätsziel, 20%-No-Trade-Band, 3× Hebelobergrenze | 0.66 | 15.3% | 402× | 19% | 3.0× |
| Half-Kelly auf Basis des gleitenden 60-Tage-Mittelwerts und der Varianz | 0.52 | 24.6% | 830× | 33% | 8.1× |
Schau dir die Unterschiede an. Zwischen der schlechtesten und der besten Zeile liegen 73% relative Differenz bei der Sharpe und ein Faktor von 2.4 beim Drawdown. Such jetzt auf diesem Datensatz einen Parameter des Einstiegssignals, der die Sharpe um 0.30 verschiebt, ohne zugleich nach offensichtlichem Overfitting auszusehen. Ich habe gesucht. Die Länge des EMA-Paars verschiebt sie über das gesamte plausible Raster um etwa 0.12, und das meiste davon ist Rauschen, das sich außerhalb der Stichprobe nicht hält.
Warum Inverse-Vol so gut aussieht – und wie viel davon echt ist
Der Mechanismus ist nicht geheimnisvoll. Bei festem Nominalwert ist die Positionsgröße nicht mit der realisierten Volatilität korreliert. Das bedeutet: Dein Dollar-Risiko pro Trade hängt davon ab, wie hoch die Volatilität in der jeweiligen Woche gerade ist. Bei ETH lag die annualisierte realisierte 20-Tage-Volatilität in diesem Zeitraum zwischen 31% und 118%. Im März 2024 ging der feste Nominalwert mit 3.8× mehr Dollar-Risiko einher als im Juli 2023 – nicht weil das Signal mehr Überzeugung bot, sondern weil der Markt lauter war. Fast der gesamte Drawdown entfällt auf das oberste Volatilitätsquintil. Inverse-Vol-Sizing entkoppelt diese Größen, und genau das verbessert tatsächlich die Form des Renditeverlaufs.
Ein Teil des Sharpe-Zuwachses ist allerdings ein Messartefakt. Wenn du beides nicht trennst, triffst du später schlechte Entscheidungen. Die Sharpe wird durch die Standardabweichung der Renditen geteilt. Volatilitätssteuerung stabilisiert definitionsgemäß genau diese Standardabweichung. Du optimierst also direkt den Nenner. Eine Regel, die Positionen so skaliert, dass die Ex-ante-Volatilität konstant bleibt, verbessert die Sharpe bei fast jedem Renditeverlauf mit Volatilitätsclustering – auch bei Verläufen ohne Edge. Das habe ich mit geshuffelten Signalen überprüft: Einstiegzeitpunkte zufällig anordnen, das Volatilitätsziel-Overlay beibehalten, und die Sharpe steigt gegenüber festem Nominalwert bei einer Basis mit Mittelwert null immer noch um etwa 0.06. Wenig, aber nicht nichts, und rein mechanisch bedingt.
Wenn ich Sizing-Regeln intern vergleiche, ist die Sharpe deshalb nie die einzige Kennzahl auf dem Blatt. Ich will Calmar, den Netto-PnL pro Einheit durchschnittlich eingesetzten Nominalwerts und die Brutto-Netto-Kostenaufstellung sehen. Diese 3 Kennzahlen zusammen lassen sich mit einem Trick am Nenner deutlich schwerer schönen.
Die Volatilitätsschätzung ist ein Modell – und kann Daten-Leakage enthalten
Der häufigste Grund, warum ein gutes Sizing-Ergebnis sich als falsch herausstellt: Die Volatilitätsschätzung verwendet Informationen aus der Bar, für die sie die Positionsgröße berechnet. Wenn deine Volatilitätsreihe mit einem zentrierten Fenster berechnet wird, mit pandas' standardmäßigem `rolling().std()` nach einem Resampling, das die aktuelle unvollständige Bar einschließt, oder anhand einer Standardisierung über die gesamte Stichprobe, dann hast du Leakage. Das ist schwer zu erkennen, weil Volatilität persistent ist. Daher ist das Leakage für jede einzelne Zeile klein, und die Equity-Kurve sieht plausibel aus. Sie wirkt bloß genau in den entscheidenden Wochen ein wenig zu glatt.
Unsere Agents prüfen 4 Dinge für jede Sizing-Regel, bevor ein Ergebnis in die Paper-Trading-Warteschlange kommt:
- Zum Entscheidungszeitpunkt verfügbare Daten. Die Größe für die Bar, die um 14:00 Uhr beginnt, muss sich aus Daten berechnen lassen, deren Schlusszeitstempel ≤ 13:59:59.999 ist. Wir prüfen das, indem wir die Größenreihe an einer zufälligen Stichprobe von 200 Entscheidungspunkten aus einem abgeschnittenen Datenframe neu berechnen und die Ergebnisse vergleichen.
- Der Lookback des Schätzers ist ein echter Parameter. Ein 20-Tage- und ein 60-Tage-Volatilitätsfenster entsprechen 2 verschiedenen Strategien. Der Lookback gehört wie alles andere ins Walk-Forward-Raster. Funktioniert das Ergebnis nur bei einer Fensterlänge, sagt das etwas über die Fragilität aus.
- Der Hebelverlauf, nicht nur der Spitzenhebel. Die vollständige Verteilung des Bruttohebels muss ausgewiesen werden. Der unbeschränkte Lauf mit Volatilitätsziel oben lag 4% der Stunden über 5×. Solche Werte tauchen in einer Übersichtstabelle nie auf, entscheiden aber maßgeblich darüber, ob sich die Strategie umsetzen lässt.
- Sizing-Sensitivität als Robustheitstest. Bricht die Sharpe ein, wenn du das Volatilitätsziel von 20% auf 25% änderst, wird die Strategie nicht durch Volatilität gesteuert, sondern auf den Hebel abgestimmt. Dann hast du deinen Edge gefunden, indem du eine Zahl ausgewählt hast.
Die Hebelobergrenze ist kein Zusatz fürs Risikomanagement, sondern Teil der Strategiedefinition. Bei Binance sinkt für ETHUSDT der maximale Hebel mit wachsendem Nominalwert der Position, und zugleich steigt der Satz für die Maintenance Margin. Ein Backtest, in dem die Regel mit Volatilitätsziel bei einem Nominalwert von $400k bis auf 6.3× läuft, beschreibt eine Position, die die Börse bei dieser Margin nicht halten lässt. Die begrenzte Zeile in der Tabelle kostet 0.05 Sharpe und ist die einzige der beiden, die etwas Reales beschreibt.
Beim Rebalancing fließt das Geld ab
Beachte die Kostenspalte. Das stündliche Rebalancing auf ein Volatilitätsziel ergab die beste Schlagzeilen-Sharpe und gab zugleich 41% des Brutto-PnL an die Börse ab. Pro Jahr wurde damit ein Nominalwert in Höhe des 1,180-Fachen der durchschnittlichen Positionsgröße gehandelt – bei 5 bps pro Seite, zuzüglich Spread und Market Impact. Die naive Lösung ist, seltener nach einem festen Zeitplan neu zu gewichten. Besser ist ein No-Trade-Band: Die Position wird nur angepasst, wenn sie stärker als um einen bestimmten Schwellenwert vom Ziel abweicht.
Ein Band von 20% senkte den jährlich gehandelten Nominalwert von 1,180× auf 402× – eine Verringerung um 66% – und kostete 0.05 Sharpe. Ich habe das inzwischen für 8 Signale durchgespielt, und das Muster wiederholt sich: Bänder zwischen 15% und 25% erhalten den Großteil des Risikokontrollvorteils bei einem Drittel des Umsatzes. Alles unter 10% bedeutet nur, Gebühren für kosmetische Genauigkeit bei einer Größe zu zahlen, die ohnehin mit einem 20-Tage-Fenster geschätzt wird. Du kannst nicht auf 3 Dezimalstellen genau rebalancieren, wenn die Zahl selbst einen Standardfehler von 15% hat.
Im Februar hatten wir einen Lauf, in dem der Report eines Agents eine Sharpe-Verbesserung von 0.22 dem „verbesserten Einstiegsfilter“ zuschrieb. Der Diff umfasste eine Zeile im Sizing-Modul. Am Filter hatte sich nichts geändert. Ich lasse den Report jetzt den Hash der Sizing-Konfiguration ganz oben ausgeben, denn Attribution erfordert Disziplin, und Modelle erzählen genauso gern eine schön aufgeräumte Geschichte wie alle anderen.
Was Paper Trading mit deiner Sizing-Regel macht
Hier klafft die Lücke zwischen Backtest und Paper Trading am weitesten, und das liegt größtenteils an der Arithmetik. Bei volatilitätsabhängigem Sizing schwankt die Positionsgröße im Sample um den Faktor 4 bis 8. Beide Enden dieser Spanne stoßen auf Börsenlimits, die im Backtest nicht modelliert wurden.
Am unteren Ende: Schrittgröße und Mindestnominalwert. Beim ETHUSDT-Perpetual beträgt der Mengenschritt 0.001 und der Mindestbetrag $5. Liegt deine Positionsgröße im Niedrigvolatilitätsregime bei 0.0004 ETH, hält der Backtest die Position, das Paper-Konto aber nichts. Das klingt nach einem Sonderfall, bis einem klar wird, dass eine Regel mit Volatilitätsziel ihre kleinsten Positionen in den ruhigsten Märkten eingeht. Bei einem Trendsignal sind das oft genau die Märkte mit den guten Einstiegen. Am oberen Ende stehen Positionslimits, Margin-Stufen und die Tatsache, dass eine 6×-Position eine Disziplin beim isolierten Margin-Einsatz erfordert, für die du kein Liquidationsmodell backgetestet hast.
Wir haben einen Fall entdeckt, bei dem die Paper-Equity-Kurve 6 Wochen lang bis auf 3% dem Backtest folgte und dann stark abwich. Die Ursache war Rundung: `int()`-Abschneiden statt Runden auf den Schritt im Order-Sizer, angewandt auf Positionen mit durchschnittlich 1.4 Schritten. Der Backtest berechnete die Positionsgröße kontinuierlich, während der Live-Sizer bei jedem kleinen Trade 20-30% der vorgesehenen Position verlor. Keine exotischen Füllmodell-Annahmen, keine Latenzgeschichte. Abschneiden.
Wo die Kritiker recht haben
3 Einwände treffen zu, und ich will sie nicht schönreden.
Erstens, und am wichtigsten: Sizing verteilt den Edge, kann ihn aber nicht erzeugen. Liegt die Brutto-Erwartungsrendite deines Signals nach realistischen Gebühren und Funding bei null oder darunter, verliert jede Regel in der Tabelle Geld. Die ausgefeilteren Regeln tun das nur mit einem hübscheren Varianzprofil. Ich habe ein Signal mit kleinem, aber positivem Netto-Edge in diesem Zeitraum gewählt. Führt man dieselben 6 Regeln mit einem Signal aus, das netto −1.2 bps pro Trade erzielt, bleibt die Rangfolge erhalten, doch jedes Endkapital liegt unter dem Startwert. Sizing multipliziert etwas. Dieses Etwas brauchst du trotzdem.
Zweitens hat Volatilitätssteuerung einen echten, gut dokumentierten Schwachpunkt: Sie fährt den Hebel am Tiefpunkt eines schnellen Ausverkaufs herunter und nach der Erholung wieder hoch. Bei einem scharfen V gewinnt der feste Nominalwert, manchmal deutlich. Im März 2020 bei Aktien und beim Krypto-Abverkauf im August 2024 schnitt volatilitätsabhängiges Sizing auf der Erholungsstrecke schlechter ab. Mein vierjähriger ETH-Zeitraum enthält zufällig mehr Phasen mit geclusteter Volatilität und stetigen Bewegungen als V-förmige Whipsaws. Das begünstigt die Inverse-Vol-Zeilen. Bei einem anderen Zeitraum kehrt sich ein Teil der Rangfolge um. Hätte ich eine Tabelle aus 2020 an den Anfang gestellt, wäre mein Argument weniger überzeugend.
Drittens lässt sich die Sizing-Regel genauso leicht überfitten wie alles andere. Half-Kelly auf Basis gleitender Schätzungen ist das warnende Beispiel in meiner Tabelle: Es sieht ausgefeilt aus, hat eine theoretische Grundlage und führte zum zweitschlechtesten Drawdown. Der Grund: Die Schätzung des gleitenden Mittelwerts einer verrauschten Renditereihe ist wertlos, und Kelly reagiert extrem empfindlich darauf. Jede Sizing-Regel, die eine Schätzung der erwarteten Rendite als Eingabe verwendet, übernimmt deren Fehler und verstärkt ihn. Regeln, die nur eine Varianzschätzung verwenden, verhalten sich deutlich besser, denn die Varianz ist das einzige Moment, das sich anhand von 4 Jahren Stundendaten tatsächlich schätzen lässt.
Das würde ich aus all dem mitnehmen: Überrascht dich ein Backtestergebnis, prüfe das Sizing-Modul, bevor du beim Signal nach einer raffinierten Erklärung suchst. Und wenn du eine Sharpe angibst, nenne daneben den Hebelverlauf und die Brutto-Netto-Kostenaufstellung. Denn eine Zahl, die so stark von der Sizing-Entscheidung abhängt, ist keine Eigenschaft des Signals.
← Alle Beiträge
