Bootstrap-Resampling: die ehrlichere Alternative zu Monte-Carlo?
Bootstrap braucht keine Verteilungsannahme. Es sampelt aus dem, was tatsächlich passiert ist. Das macht es in vielen Trading-Anwendungen sauberer als Monte-Carlo — wenn man die Stolperfallen kennt.
Bradley Efron hat 1979 ein Verfahren vorgeschlagen, das damals als „statistisches Münchhausen-Verfahren" verspottet wurde: aus der eigenen Stichprobe ziehen, um sich selbst an den Haaren aus dem statistischen Sumpf zu ziehen. Heute ist Bootstrap eine der wichtigsten Methoden in der angewandten Statistik — und im Quant-Trading oft die ehrlichere Wahl gegenüber klassischem Monte-Carlo.
Das Prinzip.
Bootstrap macht etwas konzeptionell Einfaches: aus den beobachteten Daten wird mit Replacement neu gesampelt. Aus n Beobachtungen werden n neue Beobachtungen gezogen, einzelne Werte dürfen mehrfach vorkommen, andere fehlen. Wiederholt man das B-mal (B = 1 000 bis 10 000), erhält man B Bootstrap-Stichproben, auf denen man die interessierende Kennzahl jeweils neu berechnet.
Aus dieser Verteilung der Kennzahlen folgen Konfidenzintervalle, Standardfehler, p-Werte — ohne dass man eine theoretische Verteilung unterstellt hat. Das ist der zentrale Unterschied zu parametrischem Monte-Carlo: Bootstrap ist verteilungsfrei.
Warum das im Trading ein Vorteil ist.
Returns von Trading-Strategien sind selten normalverteilt. Sie haben Fat Tails, oft Schiefe, manchmal multimodale Strukturen (Trend- und Range-Tage gemischt). Eine parametrische Monte-Carlo mit Normalverteilung unterschätzt systematisch das Tail-Risiko. Bootstrap arbeitet direkt auf den realen Daten — inklusive aller tatsächlich aufgetretenen Schiefen und Ausreißer.
Das ist gleichzeitig die Schwäche: Was nie passiert ist, taucht im Bootstrap auch nicht auf. Wer 2008 nicht im Sample hat, wird im Bootstrap keinen 2008er-Drawdown sehen.
Stationary Bootstrap für serielle Korrelation.
Klassischer Bootstrap (i. i. d.-Bootstrap) sampelt einzelne Werte unabhängig. Für Trading-Returns ist das oft problematisch: Returns sind nicht unabhängig. Volatilitäts-Cluster, Trend-Persistenz, Mean-Reversion — alles erzeugt Autokorrelation, die durch i. i. d.-Bootstrap zerstört wird.
Die Lösung kommt von Politis und Romano (1994): Stationary Bootstrap.
Statt einzelner Werte werden zusammenhängende Blöcke gesampelt. Die Blocklänge ist
geometrisch verteilt mit Mittelwert 1/p — das macht den Prozess
stationär (im Gegensatz zum Block-Bootstrap fixer Länge).
Block-Bootstrap mit fester Länge ist die einfachere Variante: Sie wählen z. B. 20er-Blöcke und sampeln daraus. Funktioniert solide, ist aber an den Rändern leicht verzerrt.
Python-Implementation.
Mit dem arch-Paket oder kompakt selbst geschrieben:
# Stationary Bootstrap für Return-Serien import numpy as np def stationary_bootstrap(x, n_samples, mean_block_len=20, rng=None): rng = rng or np.random.default_rng() n = len(x) p = 1.0 / mean_block_len out = np.empty(n_samples) i = rng.integers(0, n) for k in range(n_samples): out[k] = x[i] if rng.random() < p: i = rng.integers(0, n) else: i = (i + 1) % n return out # Bootstrap-Verteilung des Sharpe-Ratios def bootstrap_sharpe(returns, n_boot=10_000, mean_block_len=20): rng = np.random.default_rng(42) sharpes = np.empty(n_boot) n = len(returns) for b in range(n_boot): sample = stationary_bootstrap(returns, n, mean_block_len, rng) sharpes[b] = sample.mean() / sample.std(ddof=1) * np.sqrt(252) return sharpes sh = bootstrap_sharpe(strategy_returns) print(f"Sharpe 95%-CI: [{np.quantile(sh, 0.025):.2f}, " f"{np.quantile(sh, 0.975):.2f}]")
Für ernsthafte Anwendungen lohnt sich arch.bootstrap aus Kevin Sheppards
arch-Paket — fertige Implementierungen für IID, Circular Block,
Stationary und Moving Block Bootstrap, inkl. paralleler Ausführung.
Anwendungen, die ich täglich nutze.
Konfidenzintervall für Sharpe-Ratio
Der berichtete Sharpe einer Strategie ist eine Punktschätzung. Mit Bootstrap bekommen Sie ein ehrliches 95-%-Konfidenzintervall. In der Praxis: Strategien mit Punkt-Sharpe 1,3 zeigen oft Bootstrap-Intervalle wie [0,4 – 2,1]. Das ist eine ganz andere Aussage als „Sharpe = 1,3".
Strategie-Vergleich
Sie haben Strategie A mit Return 14 % und Strategie B mit 16 %. Ist B wirklich besser? Bootstrap-p-Werte für die Differenz beantworten das — meistens lautet die Antwort: „nicht signifikant, beides ist im Rauschbereich".
Out-of-Sample-Tests
Für Walk-Forward-Ergebnisse berechne ich Bootstrap-Konfidenzintervalle der OOS-Equity. Eine OOS-Kurve, deren 5-%-Bootstrap-Pfad negativ wird, ist mir zu riskant — egal, wie schön der Mittelwert aussieht.
Wann Monte-Carlo trotzdem besser ist.
Bootstrap ist nicht universell überlegen. Drei Situationen, in denen ich parametrisches Monte-Carlo bevorzuge:
- Wenig Daten: Bei n < 50 Trades wird der Bootstrap instabil — die Stichprobe ist zu klein, um die wahre Verteilung zu repräsentieren. Hier hilft eine sauber begründete Verteilungsannahme mehr.
- Forward-Looking-Szenarien: Wenn Sie testen wollen, was passiert, wenn die Volatilität auf 40 % springt, kann Bootstrap das nicht — die Vola steht ja in den Daten. Monte-Carlo erlaubt explizite Szenario-Parameter.
- Strukturmodelle: Bei expliziten Faktormodellen (z. B. Returns als Linearkombination latenter Faktoren) ist parametrische Simulation sauberer.
Stats- vs. ML-Sicht.
Bootstrap stammt aus der klassischen Statistik. In der ML-Welt taucht dasselbe Prinzip unter anderen Namen auf: Bagging, Out-of-Bag-Estimate, Random Forests. Was im Trading-Kontext oft übersehen wird: jede ML-Strategie, die Bagging nutzt, hat im Inneren bereits ein Bootstrap-Verfahren — die Validierung mit zusätzlichem externem Bootstrap würde das Konfidenzintervall korrekt einrahmen, wird aber selten sauber durchgezogen.
Meine Praxis.
Faustregel, die ich jedem Mandanten weitergebe:
- Bootstrap für alles, was aus den historischen Daten heraus beantwortet wird: Konfidenzintervalle, Strategie-Vergleiche, OOS-Diagnostik.
- Monte-Carlo für alles, was nach vorne schaut oder Szenarien durchspielt: Stress-Tests, Forward-Simulationen, Sensitivität gegen Parametershifts.
Wer beides kombiniert — Bootstrap für die Diagnose, Monte-Carlo für die Prognose — hat ein robustes Risiko-Framework. Wer nur eines nutzt, hat eine halbe Geschichte.
Sie wollen Bootstrap und Monte-Carlo sauber für Ihre Strategie aufsetzen? Erstgespräch buchen — wir bauen das gemeinsam.