Streak-Mean-Reversion Explorer

Was passiert am Folgetag nach N aufeinanderfolgenden Abwärtstagen? (S&P-500, 2014-01-01–heute)

Ehrlich: Diese Seite zeigt ein statistisch reales Mean-Reversion-Muster über alle S&P-500-Aktien: nach N aufeinanderfolgenden Tagen mit Close-to-Close < 0 steigt der Folgetag überdurchschnittlich oft. Bei N=6: Hit-Quote 56,5 % vs. Basisrate 52,3 % (Δ +4,2 pp, n ≈ 7,9k Fälle). Das ist die deskriptive Statistik. Was das für Handeln bedeutet, steht in den OOS-Strategie-Tests unten — Spoiler: nicht das, was man hofft.
Befund auf einen Blick (2026-05-18, zwei Strategie-Tests): Sowohl die Close-to-Close-Variante (long Close[t] → Close[t+h], Excess vs SPY, cc_meanrev_excess.py) als auch die intraday-Open→Close-Variante (long Open[t+1] → Close[t+1], open_close_validate.py) sind OOS (Train ≤ 2021-12-31, Test ≥ 2022-01-01) nicht-signifikant: jeder OOS-t auf Tages-Portfolio-Ebene ≤ +1,6, netto bei realistischen Kosten ≈ 0 oder negativ. Auf Aktie-Tag-Ebene sieht der Effekt dramatisch aus (t bis +11,5) — das ist aber die Clustering-Illusion: Crash-Tage triggern parallel hunderte Aktien, die Korrelation bläht n auf. Ehrliche Lesart: Statistisches Muster real, handelbares Alpha widerlegt. Details in den Blöcken unten.

Lesebeispiel — so liest du diese Seite

Sechs kurze Karten, was die Visualisierung sagt und was nicht.

1. Die Frage
Wenn eine Aktie N Tage in Folge gefallen ist (Close-to-Close < 0), steigt der Folgetag dann häufiger als sonst? Mean-Reversion sagt: ja, irgendwann „prallt" eine überverkaufte Aktie zurück. Wir prüfen das auf allen S&P-500-Aktien-Tagen seit 2014 — keine Hoffnung, nur Zählung.
2. Das Histogramm
Verteilung der nächsttägigen Close-to-Close-Renditen nach einer N-Abwärts-Streak. Im Hintergrund grau die unbedingte Basis (alle Aktie-Tage). Wenn die grüne Streak-Verteilung gegenüber der grauen nach rechts verschoben ist, hat der Streak-Filter etwas zu sagen — bei N=6+ ist das sichtbar.
3. Hit-Quote vs N
Bar-Chart rechts zeigt, wie die Hit-Quote (% Fälle mit positivem Folgetag) mit zunehmender Streak-Tiefe steigt. Bei N=1 fast Basis (~53 %), bei N=6 schon 56,5 %, bei N=9 sogar 60 %. Monotones Muster — was den Befund ökonomisch plausibler macht als zufällige Cherry-Picks.
4. Die Basisrate
Ein zufälliger Aktien-Tag im S&P-500 schließt am Folgetag in 52,3 % der Fälle positiv (Marktdrift). Diesem Bias muss jedes Signal mindestens entgehen. Die Δ pp-Anzeige in den Kacheln zeigt genau diese Differenz: positiv = Edge gegenüber „immer halten".
5. Vorbehalte
Survivorship-Bias (aktuelle Indexliste — Bankrotte fehlen, das spielt für die Long-Strategie). Keine Kosten in den Hit-Quoten. Vor allem: Aktie-Tage sind stark korreliert (Crash-Tage triggern hunderte Aktien gleichzeitig). Naive Stock-Day-Statistik überschätzt Signifikanz dramatisch — Tagesportfolio ist das ehrliche n.
6. Quick-Picks
Buttons über dem Diagramm springen direkt zu den interessanten Zellen: N=6 (Sweet-Spot mit gutem n), N=9 (höchster Hit-Edge, aber kleineres n), N=1 (Naive Basis), N≥10 (Extrem-Tail).

Verteilung der Folgetag-Renditen

Histogramm der Close-to-Close-Renditen am Tag nach einer N-Abwärts-Streak. Graue Fläche = unbedingte Basis (alle Aktie-Tage).

Fälle (Streak-Tage)
n
Hit% (Folgetag > 0)
Mean Folgetag
Median Folgetag
Basis Hit%
alle Aktie-Tage
Basis Mean
unbedingt

Hit-Edge vs Streak-Länge

Δ pp (Hit-Quote minus unbedingte Basis) je N. Punkt = aktuelle Auswahl.

Mean-Edge vs Streak-Länge

Δ % (Mean Folgetag minus unbedingte Basis) je N.

OOS-Strategie-Test A — Close-to-Close vs SPY

Long Close[t] → Close[t+h], Excess gegen SPY über denselben h-TT-Zeitraum, aggregiert pro Einstiegstag (ehrliches n = Tage). Skript: cc_meanrev_excess.py, Lauf 2026-05-18. Auszug Korb ≥ 8 (handelbare Diversifikation):

Signal OOS Tage OOS exc Ø OOS t netto@10 OOS t
N≥4, h=2 (Korb≥8)720+0,016 %+0,35−1,89
N≥4, h=3 (Korb≥8)719+0,007 %+0,12−1,69
N≥4, h=5 (Korb≥8)717−0,002 %−0,03−1,47
N≥6, h=3 (Korb≥8) — bestes225+0,157 %+1,60+0,58
N≥6, h=5 (Korb≥8)225+0,141 %+1,21+0,35
N≥7, h=3 (Korb≥8)92+0,192 %+1,29+0,62

Höchster OOS-t bei brutto = +1,60 (N=6, h=3, Korb≥8). Pre-Reg-Schwelle wäre >+2,0 für „signifikant" — knapp insignifikant, nach 10 bps round-trip Kosten ≈ 0. Best-Case-OOS auch nur 225 Tage (vom 2022-01-01 bis 2026-05) — n ist klein.

OOS-Strategie-Test B — Intraday Open[t+1] → Close[t+1]

Streak-Trigger bis Close[t], Long am Open[t+1], Exit am Close[t+1] — Overnight-Risiko ausgeschlossen. Tages-Portfolio (clustering-fest). Skript: open_close_validate.py, Lauf 2026-05-18.

Signal OOS Tage OOS Ø brutto OOS t brutto netto@5 OOS Ø netto@5 OOS t
2+ down1094+2,33 bps+0,73−2,67 bps−0,83
4+ down1034−0,17 bps−0,04−5,17 bps−1,26
5+ down933+0,26 bps+0,06−4,74 bps−1,04
6+ down — Sweet-Spot771−5,70 bps−1,01−10,70 bps−1,90
GAP < −2 %1047+5,94 bps+0,88+0,94 bps+0,14

Wichtig: Auf Aktie-Tag-Ebene (n = Aktien-Tage, nicht im Auszug oben) sehen dieselben Daten dramatisch aus — z. B. 4+down OOS t=+11,55 — weil hunderte Aktien dieselben Crash-Tage durchlaufen und korrelierte n hochzählen. Sobald man auf Tages-Portfolio aggregiert (echte n = Anzahl Handelstage, Korb gleichverteilt), schmilzt der Edge zusammen. Das ist die Clustering-Illusion in einer Tabelle.

Was bleibt

Der Streak-Befund ist deskriptiv real: bei 6+ Down-Tagen liegt die Folgetag-Hit-Quote tatsächlich 4,2 pp über der Basisrate, monoton wachsend bis N=9 (+7,9 pp). Das Muster lässt sich auf S&P-500-breit reproduzieren, ist also nicht Cherry-Pick aus 6 Tech-Werten.

Als handelbares Long-Alpha wurde der Befund 2026-05-18 auf zwei Wegen geprüft und in beiden OOS+nachKosten widerlegt: Close-to-Close vs SPY und intraday Open→Close. Der Edge lebt entweder nur in winzigen, undiversifizierbaren Körben oder verschwindet, sobald Korrelation zwischen Signal-Tagen ehrlich gerechnet wird (Tages-Portfolio statt Aktie-Tag).

Konsequenz: Das Muster ist gut zu wissen (z. B. zum Timing eines geplanten Long-Einstiegs: nicht direkt nach 1-2 roten Tagen, sondern eher nach 5-6). Als eigenständige Trading-Strategie nicht greenlight. Kein Nachfrisieren mit Vola/Sektor/News-Conditionern ohne separate Pre-Reg-Studie — diese drei Wege wurden ebenfalls ohne Erfolg geprüft (siehe cc_meanrev_vix.py, cc_meanrev_gdelt.py).