Vollständige Dokumentation aller getesteten und widerlegten Edge-Hypothesen
Stand: 24. Mai 2026 · Geschrieben für externe Zweitmeinung (Grok/ChatGPT)
Diese Seite dokumentiert alle Hypothesen, die ich im Rahmen des Börsenbot-Projekts untersucht und gemäß vor-registrierten Kriterien widerlegt habe. Ziel ist, dass eine zweite KI (Grok, ChatGPT) oder ein menschlicher Reviewer jeden Schritt nachvollziehen, prüfen und gegebenenfalls korrigieren kann.
Für jede Hypothese sind folgende Punkte ausgeführt:
t_crit = z(1 - 0.025/K) (zweiseitig). Beispiel: K=48 → t_crit ≈ 3.0; K=12 → t_crit ≈ 2.7.github.com/defcon3/boersenbot. Wer mathematische Schritte penibel
nachvollziehen will, sollte dort einsteigen.
📬 Iteration 2: Power-Analyse nach Reviewer-Feedback v3 · 2026-05-25 (unten)
An Tagen mit einer USD/JPY-Tagesänderung kleiner als −X·σ (Yen stärkt sich abrupt = klassisches Carry-Unwind-Signal) sind die nachfolgenden Forward-Returns für US-Risk-Assets (SPY, QQQ, IWM, HYG) über N Handelstage signifikant negativer als an Nicht-Stress-Tagen.
Der Yen-Carry-Trade läuft seit Jahrzehnten so: institutionelle Investoren leihen sich Yen zu ~0 % Zinsen, tauschen in USD/EUR/EM-Währungen, und investieren in höher rentierende Assets (US-Treasuries, Tech-Aktien, EM-Bonds). Wenn der Yen plötzlich aufwertet (z. B. wegen BoJ-Zinsschritt, Risk-Off-Stimmung, Carry-Unwind-Kaskade), müssen Carry-Trader die Yen-Schulden zurückzahlen — sie verkaufen ihre Risk-Assets, um Yen zu kaufen. Das verstärkt den Yen-Anstieg, was weitere Liquidationen triggert. Klassisch: 2. August 2024, S&P 500 −7 %, Nikkei −12 % in zwei Handelstagen.
Welch-t-Test der Differenz mean(forward_return | stress_day) − mean(forward_return | non_stress_day) für alle Kombinationen aus:
Bonferroni-Schwelle: |t_crit| = 3.0 für familienweises α = 0.05.
diff_train < 0 (Mechanismus stimmt schon im Train)|t_test| > 3.0 (Bonferroni)n_test_signal ≥ 30t_test < −2 in mind. einem Windowt_test < −1.96| Gate | Bestanden |
|---|---|
| G1 Train-Direction negativ | 1 / 48 |
| G2 Test |t| > 3.0 (Bonferroni) | 0 / 48 |
| G3 n_test ≥ 30 | 48 / 48 |
| G6 Test t < −1.96 (Naiv) | 0 / 48 |
Verdict: RED. Sogar das genaue Gegenteil: 47 von 48 Tests zeigen einen positiven Train-Diff, einige nominal signifikant in die falsche Richtung (z. B. SPY/5d-Forward bei −1.0σ: t_train = +3.16).
Ein einzelner Tages-Yen-Spike markiert in der Praxis oft das Ende einer Risk-Off-Welle, nicht den Anfang. Der Spike-Tag ist selbst schon der Liquidations-Tag — der Markt fällt am selben Tag, nicht am nächsten. In den Folgetagen folgt häufig ein V-förmiges Rebound, was den positiven Forward- Return erklärt. Der Indikator misst die Reaktion, nicht die Vorhersage.
Mögliche Erweiterung (würde eine neue Pre-Reg erfordern, kein Nachfrisieren): kumulierter Multi-Day-Yen-Trend (z. B. 5d/10d-Z-Score), der das schrittweise Aufbauen einer Carry-Position abbildet, statt nur des Liquidations-Tags. Diese Variante ist nicht getestet.
github.com/defcon3/boersenbot/yen_stress_test.py Log: yen_stress_test.log CSV: yen_stress_results.csv (alle 48 Zellen, IS+OOS-t, n, diff)
Der bekannte Streak-Mean-Reversion-Effekt (nach N aufeinander folgenden Down-Days steigt der Folgetag überdurchschnittlich oft) ist nicht uniform über alle GICS-Sektoren verteilt, sondern in einer bestimmten Sektor-Klasse konzentriert. Drei Sub-Hypothesen:
Der ursprüngliche Streak-Befund (siehe Streak-Seite) war auf 503 S&P-500-Aktien gemessen — als undifferenzierter Aggregat-Korb. Es ist plausibel, dass verschiedene Sektoren grundverschiedene Reversion-Charakteristika haben: defensive Werte (Versorger, Staples) haben weniger spekulative Übertreibung, zyklische (Industrie, Bauzulieferer) reagieren auf News mit fundamentalen Bewegungen statt Sentiment-Schwankungen, Tech-Aktien schwanken oft sentiment- und retail-getrieben.
Für jede Kombination (Sektor-Klasse × N) wird ein
Tages-Portfolio gebildet: an jedem Tag enthält das Portfolio alle Sektor-Aktien,
die streak ≥ N aufweisen. Excess-Return = Korb-Mittel −
SPY-Tagesreturn. Welch-t-Test des Excess gegen Null, n = Anzahl
Handelstage mit Korbgröße ≥ 8.
t_crit = 2.7 für familienweises α = 0.05diff_train > 0 (Excess vs. SPY positiv im Train)t_test > 2.7 (Bonferroni)n_test_days ≥ 30mean(daily_basket_size) ≥ 8 in Testt_test > 1.96 nominal (informativ)| Klasse | N=4 | N=5 | N=6 | N=7 |
|---|---|---|---|---|
| ZYKLISCH (Test-t) | +1.73 | −0.17 | +0.36 | +0.85 |
| DEFENSIV (Test-t) | −0.44 | −0.93 | −0.26 | −0.26 |
| TECH (Test-t) | +1.01 | +1.37 | +1.92 | +1.27 |
Aggregat-Gates: G1: 10 / 12, G2 (Bonferroni): 0 / 12, G3: 9 / 12, G4: 12 / 12, G6 (Naiv): 0 / 12. Verdict: RED.
Drei lehrreiche Beobachtungen:
github.com/defcon3/boersenbot/streak_sector_test.py Log: streak_sector_test.log CSV: streak_sector_results.csv Cache: sp500_sectors.csv, sp500_ohlc_2015_2026.pkl
Alle drei sind Standard-Lehrbuch-Indikatoren der Makro-Ökonomie: Yield-Inversion war historisch ein verlässlicher Rezessionsvorbote (1970er–2008). HY-Credit-Spreads weiten sich in Krisen aus, weil Investoren Risikoprämien für junk bonds fordern. Jobless-Claims sind ein zeitnaher Indikator für Arbeitsmarkt-Verschlechterung, die typischerweise vor Konsumeinbrüchen kommt.
| Hypothese | OOS-Befund | Verdict |
|---|---|---|
| H1 Yield-Inversion | Train: −0.74 %, t=−2.58 ✓; Test: +1.43 %, t=+4.56 — Direction FLIP | FAIL |
| H2 HY-Spread | FRED hat Serie ab April 2026 auf 3 J. Historie limitiert — nicht testbar | N/A |
| H3 Claims-MA-Change | Train: t=−3 bis −7 ✓; Test: SPY-20d t=−2.37 (nominal), QQQ t=−3.11 (1 Bonferroni-PASS von 36); IWM t=+0.98 (inkonsistent) | FAIL |
Aggregat: 1 / 36 Bonferroni-PASS = exakt im Zufallsbereich (Erwartungswert bei α=0.05 und Bonferroni: ~1 zufälliger Hit pro 20 Tests, korrigiert auf 1 echter / 36 Tests). Verdict: RED.
H1 Direction-Flip: Die Yield-Inversion 2022/23 wurde nicht von einer Rezession gefolgt. Stattdessen rallye-te der Markt. Der historische Mechanismus (Inversion → Rezession → Aktienmarkt-Crash) brach durch den Strukturwandel der Fed-Politik (massive Fiscal-Support, kein klassischer Konjunkturzyklus).
H3 Cross-Asset-Inkonsistenz: SPY und QQQ zeigen schwache Effekte, IWM (Small Caps) sogar Gegenrichtung. Wenn ein vermeintlicher Makro-Mechanismus drei breite US-Indices unterschiedlich treffen würde, ist es kein universeller Mechanismus, sondern Datenfischen.
github.com/defcon3/boersenbot/fred_macro_tests_v3.py Helper: fred_helper.py (mit .fred_key) Log: im Repo, plus Memory [[fred-macro-falsified]]
Klassisch: Wenn der 50-Tage-MA den 200-Tage-MA von unten kreuzt („Golden Cross"), steigt die Aktie in den Folgewochen überdurchschnittlich. Umgekehrt für Death Cross.
Erweitert: Über ein Grid von 5 fast × 6 slow × 6 horizon = 150 Parameter-Kombinationen finden wir die Zelle mit dem besten In-Sample-Edge (f=20, s=50, h=10) — und testen sie OOS.
Klassische Trend-Following-Heuristik aus der Technischen Analyse: ein Aufwärts-Kreuzungssignal indiziert Momentum, das sich fortsetzt. Death Cross indiziert Abwärtstrend.
Pro Parameter-Zelle: Welch-t-Test des Strategie-Excess-Returns vs. SPY-Buy-Hold, über alle 502 Aktien aggregiert. Pre-Registrierte OOS-Strategie-Test mit Gates G1–G5 (siehe unten).
exc > 0 %, t > +2 bei f=20/s=50/h=10exc > 0 %, t > +2| Phase | Excess vs. SPY | t-Stat | Gate |
|---|---|---|---|
| IS 2014–2021 | +0.252 % | +3.02 | G1 PASS |
| OOS 2022–2026 | −0.177 % | −1.45 | G2 FAIL |
| OOS netto@5bps | −0.227 % | −1.86 | G3 FAIL |
| OOS ohne COVID | −0.177 % | ≈ Original | G4 FAIL |
Edge ist OOS verschwunden und hat das Vorzeichen gedreht. Auch die rohe Mean-Differenz (rawMB) ist OOS = −0.28 %, also nicht nur SPY-relativ, sondern absolut.
Wer 12 Jahre rückblickend ein 5×6×6-Grid durchprobiert (150 Zellen), findet mit hoher Wahrscheinlichkeit irgendeine Zelle, die im IS „signifikant" aussieht — auch bei reinem Rauschen. Mit α=0.05 und 150 Zellen erwartet man ~7.5 zufällige IS-Treffer. Selbst nominal t=4-5 in 150 Zellen ist nicht aussagekräftig (Bonferroni: kritisches t müsste bei ~+3.5 liegen). OOS-Split mit Pre-Reg ist deshalb nicht Bürokratie, sondern der Filter, der IS-Artefakte von echten Edges trennt.
github.com/defcon3/boersenbot/crossover_grid.py (IS-Grid) github.com/defcon3/boersenbot/crossover_strategy_test.py (OOS Pre-Reg) Web: https://veitluther.de/analysis/crossover
Eine Self-Organizing Map (Kohonen-Map) kann die Marktstruktur in diskrete Regime-Cluster zerlegen. Wenn dem so ist, sollte der bekannte Streak-MR-Edge (N=6 Down-Days → next-day-up) conditional auf bestimmte Regime-Knoten signifikant stärker sein als unkonditional.
Märkte haben verschiedene „Regime" (Trend, Range, Krise, Euphorie). Ein Edge, der nur in einem Regime funktioniert, würde unkonditional verwässert erscheinen. Ein guter Regime-Classifier sollte diese versteckten Edges aufdecken.
minisom + scikit-learn ScalerPro Regime-Knoten (8×8 = 64 Index-Knoten): Binomialtest des bekannten Streak-MR-Edges (STREAK_LEN=6). Nullhypothese: Streak-Folgetagswahrscheinlichkeit = OOS-Basisrate (0.5416). H1: höher.
1 von 30 belegten Knoten hat p < 0.05 unkorrigiert = 3.3 %. Das ist unter der erwarteten Zufallsfalse-Positive-Rate von 5 %. Selbst ohne Multiple-Testing-Korrektur kein bestätigter Regime-Edge. Verdict: RED.
SOM ist explorativ/beschreibend, aber kein Prädiktor. Die UI auf
/analysis/som visualisiert Cluster mit Chernoff-Faces und einer
Trajektorie der letzten 90 Tage — als deskriptive Hilfe zum Markt-Verstehen.
Sie ist nicht als Signal-Generator gedacht. Ein Caveat-Banner auf der Seite
stellt das klar.
github.com/defcon3/boersenbot/som_regime.py Web: https://veitluther.de/analysis/som
Der breite Streak-MR-Effekt (nach N=3..7 Down-Days steigt der Folgetag überdurchschnittlich oft, basierend auf 503 S&P-500-Aktien) ist auch handelbar als marktrelatives Alpha, nicht nur deskriptiv: Long-Korb der Streak-Aktien vs. SPY produziert signifikant positive Excess-Returns.
Wenn Mean-Reversion in vielen Aktien gleichzeitig auftritt, kann man einen diversifizierten Long-Korb bauen. Die SPY-Komponente filtert das allgemeine Marktrisiko, übrig bleibt das idiosynkratische MR-Alpha.
bb_StockPrices + yfinance)| Korbgröße | OOS-t (Excess) | OOS netto@10 bps | Verdict |
|---|---|---|---|
| minKorb ≥ 2 (winzig, 2–3 Namen) | positiv aber t<1.4 | negativ | undiversifiziert |
| minKorb ≥ 5 | t ≈ +1 | ≈ 0 | nicht signifikant |
| minKorb ≥ 8 (handelbar) | alle t < +1.6 | ≈ 0 bis negativ | RED |
Klassisches IS-OOS-Decay-Muster: IS überall stark/signifikant (Effekt war im Train robust), OOS bei handelbarer Korbgröße nirgends signifikant. Positiver OOS-Rest nur in winzigen 2–3-Namen-Körben (undiversifizierbar, t < 1.4, netto negativ). Realer MaxDD bestätigt: frühere −50…−93 % MaxDDs waren Kompounding-Artefakt, real ~−20…−35 %. Verdict: RED.
Der bekannte Streak-MR-Effekt ist gegen die bedingte Basisrate (0.518 P[Folgetag↑]) real, in diesem Sinne ein deskriptiv messbarer statistischer Effekt. Aber er ist kein handelbares marktrelatives Alpha: gegen SPY-Buy-Hold gemessen verschwindet er bei handelbarer Korbgröße. Die ehrliche Interpretation: „Aktien, die n Tage gefallen sind, steigen am nächsten Tag häufiger als der Schnitt — aber nicht mehr als der breite Markt am selben Tag." Damit kein verwertbarer Edge gegen Buy-Hold.
github.com/defcon3/boersenbot/cc_meanrev_excess.py Log: cc_meanrev_excess.log Web: https://veitluther.de/analysis/streak (mit OOS-Tabelle)
Der Streak-MR-Edge funktioniert nicht im Durchschnitt, aber conditional auf hohe Marktangst (VIX-Perzentil > X, oder VIX-Backwardation, oder VIX-Spike): Long-Down-Streak-Aktien in Angst-Phasen sollte signifikante Excess-Returns produzieren.
In Angst-Phasen überreagieren Marktteilnehmer (Panik-Verkäufe), Aktien fallen unter ihren Fair Value. Mean-Reversion sollte in diesen Phasen stärker greifen als in ruhigen Phasen. Drei Sub-Signale:
| Conditioner | IS-Effekt | OOS bei minKorb≥8 | Verdict |
|---|---|---|---|
| FEAR | exØ +0.5…+1.2 %, t=2–3 | t nie ≥ +1.9, netto@10 ≈ 0/neg. | FAIL |
| SPIKE | moderater IS-Effekt | netto ≈ 0/negativ | FAIL |
| BACKWARDATION | stark IS | netto ≈ 0/negativ | FAIL |
Klassische IS-Falle: eine Demo hätte „bewiesen" gemeldet (IS-t=2–3 ist visuell überzeugend). OOS am ehrlichen Gate (minKorb≥8): kollabiert. Plus: Anzahl Monate mit aktivem Signal schrumpft auf 13–25 → „Edge nur in ~20 Crash-Monaten" = vor-registrierte Disqualifikation. Verdict: RED.
VIX-basierte Sentiment-Conditioner sind backtest-bar, das ist ihr Vorteil gegenüber News-Sentiment-Approaches. Aber sie liefern OOS keinen Edge. Die Erklärung: die VIX-FEAR-Phasen sind ohnehin schon Crash-Monate, in denen alles volatil ist — der Conditioner pickt kein zusätzliches Signal heraus, er erzeugt nur eine kleinere und stark korrelierte Stichprobe, in der Rauschen leichter signifikant aussieht.
github.com/defcon3/boersenbot/cc_meanrev_vix.py Log: cc_meanrev_vix.log
Wie H7, aber mit GDELT-News-Sentiment statt VIX als Conditioner. NEG-Tone oder DROP-Tone (Tagesänderung) sollte den Streak-MR-Edge stark machen.
all (alle News) und econ (wirtschaftsrelevante)Exakt gleiche Versagensart wie VIX-Conditioner. In winzigen 2-Namen-Körben spektakuläre OOS-Ergebnisse: NEG/DROP, N≥7/h3: +41 bps, t=3.13. Aber das vor-registrierte handelbare Gate (minKorb≥8, MedKorb 12–21) zeigt: bestes NEG-Setup (N≥4/h5) t=+1.89 < 2.0; bei N≥7/h3 kippt es signifikant negativ (−0.349 %, t=−2.28). Starke DROP-Treffer ruhen auf 3–4 OOS-Tagen / 3–4 Monaten = vor-registrierter Disqualifikator.
Verdict: RED. Backtest-bare Gratis-Sentiment-Quellen (VIX-Familie + GDELT) damit erschöpft.
Hätte ich vor der Pre-Reg „+41 bps, t=3.13!" als Befund verkauft, hätte das überzeugend ausgesehen. Aber die Stichprobe waren 2-Namen-Körbe, drei OOS-Treffer in 3 Monaten — das ist nicht handelbar, sondern Datenfischen. Die vor-registrierten Disqualifikatoren (mindKorb, MedKorb, n_months) sind genau dafür da: sie verhindern Demos.
github.com/defcon3/boersenbot/cc_meanrev_gdelt.py ETL: gdelt_market_tone_etl.py Logs: cc_meanrev_gdelt.log, gdelt_market_tone_etl.log
Nach N aufeinanderfolgenden Minuten in dieselbe Richtung läuft die Bewegung weiter (Continuation, klassisches Momentum auf Minuten-Ebene). Handelbar als Long-Continuation-Strategie auf Minute t+k.
Order-Flow-Persistenz: institutionelle Iceberg-Orders, die über mehrere Minuten ausgeführt werden, sollten kurzfristiges Momentum erzeugen. Plus Retail-Herdenverhalten in Reaktion auf Kursbewegungen.
bb_StockPrices intraday)| Schritt | Befund |
|---|---|
| Naive Klassifikation (LDA/SVM/XGB) | Acc 0.500, AUC ≈ 0.50, Edge 0.08–0.17 bps vs. Ø-Move 3.85 bps |
| (N, k)-Gitter raw | P(Continuation) hochsignifikant UNTER Basis → schwache Reversion, nicht Continuation |
| Excess vs. SPY (Mkt-Kontext) | Reversion-Magnitude kollabiert → Roh-Reversion war v. a. Markt-MR + Bid-Ask-Bounce |
| Lockerer Trend (X von W Min) | Spannweite ≈ 0.8 bps < Kosten |
Vier Null-Befunde: naive ML-Klassifikation Münzwurf; (N,k)-Gitter zeigt Reversion (nicht Continuation); Markt-Conditioning frisst den Effekt; X-von-W-Trend unter Kosten. Verdict: RED.
Auf Minuten-Ebene gilt — wenn überhaupt — schwache Reversion, nicht Continuation. Aber die Magnitude (~0.8 bps) liegt deutlich unter den Bid-Ask-Spreads und Kosten. Das deckt sich richtungskonsistent mit dem Tages-MR-Befund: Mean-Reversion ist ein realer Effekt auf Tagesebene, aber auf Minuten-Ebene zu klein für Handel. Faktor-Modell auf dieses Rauschen wäre Overfit auf Bid-Ask-Bounce.
github.com/defcon3/boersenbot/intraday_streak.py github.com/defcon3/boersenbot/intraday_streak_mkt.py github.com/defcon3/boersenbot/trend_next.py
Statt Close-to-Close-Trades (mit Overnight-Risiko): kaufe am Morgen-Open, verkaufe am Abend-Close, nur an Tagen nach Down-Streaks. Vereint den validierten Tages-MR-Edge mit einer No-Overnight-Regel.
Wenn der MR-Edge schon Open-to-Open / Close-to-Close gilt, sollte der Großteil des Effekts im Intraday-Move stecken — Overnight-Returns sind strukturell flach/leicht negativ in den USA. Open→Close vermeidet Overnight-Risiko (Gap-Down).
Auf Aktie-Tag-Ebene hochsignifikant (t bis +11.55, alle ***). Aber das ist die Cluster-Illusion: an Crash-Tagen triggern dutzende korrelierte Aktien gleichzeitig, n korreliert aufgebläht. Auf Tages-Portfolio-Ebene (ehrliches n = Anzahl Handelstage, gleichgewichteter Korb):
| Streak-Länge | OOS-t (Tages-Portfolio) | OOS netto@5bps |
|---|---|---|
| 2+ down | +0.73 | −0.83 |
| 4+ down | −0.04 | −1.26 |
| 5+ down | +0.06 | −1.04 |
| 6+ down | −1.01 | −1.90 |
| GAP < −2 % | +0.88 | +0.14 |
Tages-Portfolio bricht zusammen. Nur GAP<−2 % zeigt einen schwachen
in-sample-Rest. Der spätere Gap-Korb-Nachfass-Test (gap_bounce_study.py)
identifizierte einen schwachen idiosynkratischen Rest (gelb, kein Live-Status).
Verdict: RED für den Down-Streak-O→C-Harvest.
Die Aktie-Tag-Ebene täuscht durch Clustering. Bei sauberem Tages-Portfolio mit Mindestkorbgröße verschwindet der Effekt. Methodisch: bei Hypothesen über breite Aktien-Körbe muss n IMMER die Anzahl der unkorrelierten Zeitachsen-Einheiten sein, nicht die Anzahl der Aktien-Tag-Beobachtungen.
github.com/defcon3/boersenbot/open_close_study.py github.com/defcon3/boersenbot/open_close_validate.py github.com/defcon3/boersenbot/gap_bounce_study.py (Nachfass GAP-Korb)
Kauf einer deutschen Aktie am letzten Cum-Day (Tag T−1 vor dem Ex-Dividenden-Tag), Verkauf an Tag T+N mit N ∈ {1, 3, 5, 10, 20}. Erwartung: Brutto-Drop am Ex-Tag ist kleiner als die Brutto-Dividende (akademisch dokumentiertes „Drop-Ratio < 1"), und die Lücke ist groß genug, um nach Kapitalertragsteuer (26.375 % auf Brutto-Div) noch einen positiven Excess-Return gegenüber einem DAX-Buy-and-Hold zu erzielen.
Mögliche Ursachen für eine Drop-Ratio < 1: steuerheterogene Investor-Klassen (steuerbefreite Pensions-/Stiftungs-Investoren treiben den Preis nach Ex), Mikrostruktur-Effekte am Stichtag, Verhaltens-Effekte. Deutsche Aktien zahlen typisch 1× jährlich aus → große Einzeldividenden statt US-Quartalstrippel, ungewöhnliches Volumen-Profil.
.dividends)^GDAXI (DAX Performance-Index)| N | n_test | Mean Train (%) | t Train | Mean Test (%) | t Test | Median Test (%) | Gates |
|---|---|---|---|---|---|---|---|
| 1 | 493 | −0.299 | −4.64 | −0.306 | −3.44 | −0.269 | 0/4 ❌ |
| 3 | 493 | −0.328 | −3.50 | −0.471 | −3.83 | −0.420 | 0/4 ❌ |
| 5 | 493 | −0.308 | −2.48 | −0.423 | −2.57 | −0.348 | 0/4 ❌ |
| 10 | 493 | −0.299 | −1.85 | −0.824 | −3.64 | −0.773 | 0/4 ❌ |
| 20 | 493 | +0.040 | +0.17 | −1.016 | −2.99 | −1.354 | 0/4 ❌ |
github.com/defcon3/boersenbot/dividend_capture_test.py preregs/dividend_capture_de_2026_05_25.md Pre-Reg-Commit: 871bac1b · Result-Commit: 9c4f5fb2
H1a (Put): Kauf eines Put-Optionsscheins vor dem Ex-Dividenden-Tag,
profitiere vom Kursabschlag am Ex-Tag.
H1b (Call): Wenn der Kursabschlag bereits im Optionspreis eingepreist
ist, müsste der Call vor dem Ex-Tag billiger sein — also Call kaufen und profitieren,
wenn der Drop kleiner ausfällt als erwartet.
Optionspreise sind per Konstruktion dividenden-bereinigt. Aus der erweiterten Put-Call-Parity:
C − P = S − K·e^(−rT) − D·e^(−rT)
mit D = erwartete Dividende vor Expiry,
r = risikoloser Zins, T = Restlaufzeit
Daraus folgt direkt:
Hypothese #11 (Dividend Capture DE) hat gezeigt, dass die Drop-Ratio in Deutschland ≥ 1 ist — der Spot fällt im Mittel mindestens so viel wie die Brutto-Dividende, oft sogar mehr (mean Excess-Return je Trade negativ über alle 5 Hold-Windows).
Konsequenz für die Optionsschein-Strategien:
Keine empirische Studie durchgeführt, weil:
Das Verdict ist daher theoriegestützt (Put-Call-Parity als geschlossene Form) plus empirisch indirekt verschärft durch Befund #11. Eine separate Pre-Reg + empirischer Live-Test bleibt für eine zukünftige Iteration möglich, aber unattraktiv: erwartete Effektgröße per Theorie ≈ 0, Kosten 1–3 % je Trade.
Keine Empirie — Verdict folgt aus Put-Call-Parity (Lehrbuch) plus Befund #11 (Drop-Ratio ≥ 1). Theoretischer BS-Rekonstruktions-Test wäre tautologisch (per Modell-Annahme exakt 0), daher nicht durchgeführt.
Hypothese #11 hat die universelle Dividend-Capture-Strategie (alle 90 Aktien) klar falsifiziert. Im Post-Mortem fiel auf: einige Aktien hatten deskriptiv positive Captures (Top 10 mit Mean +1.65 % bis +4.32 %). Ein Sanity-Check (Random-5d-Fenster derselben Aktien vs Div-5d-Fenster) ergab, dass die Outperformance auf Div-Tage konzentriert ist (+2.71 % vs −0.01 %). Das hob den Prior für eine selektive Variante auf ~20–25 %.
Aktien mit hoher Dividend-Capture-Performance in Train (2010–2018) sind auch in Test (2019–2025) Outperformer. Konkret: Top-10-Train (Ranking nach mean Excess bei N=5) liefert in Test ein positives Mean-Excess > +0.5 % je Trade.
| Rang | Ticker | Unternehmen | Train-Mean | n |
|---|---|---|---|---|
| 1 | SRT3.DE | Sartorius Vorzüge | +3.24 % | 9 |
| 2 | DUE.DE | Dürr AG | +3.23 % | 8 |
| 3 | STO3.DE | Sto SE | +2.12 % | 8 |
| 4 | PAH3.DE | Porsche Automobil Holding | +1.86 % | 11 |
| 5 | DEZ.DE | Deutz AG | +1.85 % | 5 |
| 6 | NEM.DE | Nemetschek SE | +1.41 % | 9 |
| 7 | EVK.DE | Evonik | +0.91 % | 5 |
| 8 | AIR.DE | Airbus | +0.81 % | 8 |
| 9 | ADS.DE | Adidas | +0.78 % | 9 |
| 10 | LXS.DE | Lanxess | +0.77 % | 9 |
| Ticker | Unternehmen | Test-Mean | n | Train→Test |
|---|---|---|---|---|
| LXS.DE | Lanxess | +2.52 % | 7 | bleibt positiv ✓ |
| AIR.DE | Airbus | +1.17 % | 5 | bleibt positiv ✓ |
| EVK.DE | Evonik | −0.01 % | 8 | flat |
| ADS.DE | Adidas | −1.10 % | 6 | Flip |
| NEM.DE | Nemetschek | −1.12 % | 7 | Flip |
| PAH3.DE | Porsche Holding | −1.18 % | 7 | Flip |
| STO3.DE | Sto SE | −1.23 % | 7 | Flip |
| DEZ.DE | Deutz | −1.37 % | 5 | Flip |
| DUE.DE | Dürr | −1.58 % | 7 | Flip |
| SRT3.DE | Sartorius | −2.71 % | 7 | starker Flip (war Train-Rang 1!) |
| Metrik | Wert | Gate |
|---|---|---|
| n (Test) | 66 | — |
| Mean Test-Excess | −0.68 % | G1, G4 ❌ |
| t-Test (einseitig) | −1.34 | G2 ❌ |
| Median | −0.85 % | G3 ❌ |
| Wilcoxon-p (greater) | 0.993 | G3 ❌ |
| Aktien mit Test-Mean > 0 | 2 / 10 | G5 ❌ |
Aus dem post-mortem-Sanity-Check zu #11 kannten wir bereits die deskriptiven Test-Top-10. Vergleich:
Die Identität der „Dividend-Capture-Outperformer" ist nicht zeitlich stabil. Wer in einer Dekade Top war, ist in der nächsten nicht (außer Zufalls-LXS).
github.com/defcon3/boersenbot/selective_dividend_capture_test.py preregs/selective_dividend_capture_de_2026_05_25.md Pre-Reg-Commit: ad95df6a · Result-Commit: 5ebf144f
Drei wiederkehrende Versagensmuster:
Aktuell laufen drei Strategien live, die aus der Falsifikationen-Logik entstanden sind und ehrlich validiert wurden:
Details auf der Fazit-Seite.
Was ich an Zweitmeinung suche:
Was ich NICHT suche: reines Lob, generische ML-Vorschläge ohne klare Hypothese, oder Strategien, die nur in Bull-Märkten funktionieren.
Sämtlicher Code ist im öffentlichen Repo:
github.com/defcon3/boersenbot. Jede falsifizierte Hypothese
hat ein eigenes Python-Skript, das aus yfinance / FRED / GDELT die Daten
holt und die hier dokumentierten Zahlen reproduziert. Cache-Dateien
(*.pkl) sind aus Größengründen nicht im Git, werden aber beim ersten
Lauf automatisch erzeugt.
Ein RED-Verdict bei einer Hypothese heißt im strengen Sinn nur: die Pre-Reg-Gates wurden nicht bestanden. Es heißt nicht automatisch „der Effekt existiert nicht". Wenn die Stichprobe klein ist und der wahre Effekt mittelgroß, kann der Test diesen Effekt schlicht nicht erkennen — die Studie ist underpowered. Die Power-Analyse trennt diese beiden Fälle: „echtes Null" gegen „nicht messbar".
Reviewer (Grok / ChatGPT) hat darauf hingewiesen, dass mehrere Tests knapp unter der Bonferroni- oder Naive-Schwelle scheitern. Genau diese Fälle verdienen einen Power-Check, sonst überdehnt man die Aussage „RED" zu „Effekt definitiv null".
Test-Typ: einseitiger One-sample t-Test gegen 0 (gerichtete Hypothesen),
α = 0.05, z_α = 1.6449, z_β = 0.8416. σ wird aus dem beobachteten t-Wert
rekonstruiert: σ = μ·√n / t.
| Fall | n | beob. μ | beob. t | σ (impl.) | Power(beob.) | MDE @80% | n für 80% |
|---|---|---|---|---|---|---|---|
| A) TECH N=6 (Sektor) | 21 | +0.302 % | +1.92 | 0.721 % | 60.8 % | ±0.391 % | 36 |
| B) FRED H3 SPY-20d | 70 | −0.710 % | −2.37 | 2.506 % | 76.6 % | ±0.745 % | 78 |
| C) CC-MR Excess (minKorb≥8) | 300 | +0.080 % | +1.40 | 0.990 % | 40.3 % | ±0.142 % | 947 |
Kontext: Im Streak-MR-Sektor-Test hatte die TECH-Untergruppe mit N=6 consecutive down-days einen t-Wert von +1.92 bei nur n = 21 Signaltagen. Naive-Schwelle (t = 1.96) knapp verfehlt, Bonferroni-Schwelle (t = 2.7 bei K=12) deutlich. Das wirft die Frage auf: ist der Effekt nicht da — oder war die Stichprobe zu klein?
Klassischer Recession-Indikator: steigende Jobless-Claims sollten 20 Tage später SPY-Returns drücken. Test über 70 Signaltage, beobachteter Effekt −0.71 %, t = −2.37. Bonferroni-Schwelle (|t| = 3.0 bei K = 5 H3-Varianten) deutlich verfehlt.
Vergleich Korb-Excess-Return vs. SPY-B&H an Signal-Tagen. Repräsentative Test-Zelle: n = 300, μ = +0.08 %, t = +1.40 — also schon deskriptiv winzig. Anders als bei A und B ist die spannende Frage hier nicht „ist der Effekt da", sondern: würde er überhaupt etwas bedeuten, wenn er da wäre?
Klassifikation aller bisher dokumentierten RED-Verdikte nach dem Schema oben. Power Level = Einschätzung der Aussagekraft (High = großes n und/oder klar messbarer Effekt; Medium = im Rahmen, aber nicht voll 80 %; Low = underpowered für die gemessene Effekt-Größe). Verdict Type = Art des RED: Strukturell heißt OOS-Kollaps, Direction-Flip, Cross-Asset-Inkonsistenz oder Cluster-Artefakt — die Hypothese ist endgültig falsifiziert. Inconclusive heißt RED formal, aber Power zu niedrig — Re-Test mit längerer Historie wäre legitim.
| # | Hypothese | n (Test) | Observed Effect | Power Level | Verdict Type | Kommentar |
|---|---|---|---|---|---|---|
| 1 | Yen-Carry-Stress | ~6500 | div. (OPPOSITE) | High | Sauber falsifiziert | 47/48 OPPOSITE — Spike misst Reaktion, nicht Vorhersage |
| 2 | Streak-MR Sektor (TECH N=6) | 21 | +0.302 % | Low | Underpowered | Power 60.8 % — Re-Pre-Reg mit längerer Historie sinnvoll |
| 3 | FRED Macro Trio (Yield/HY/Claims) | 70 – 4500 | −0.71 % (SPY-20d) |
Medium | Sauber falsifiziert | Cross-Asset-Inkonsistenz (IWM in falscher Richtung) |
| 4 | MA-Crossover 50/200 (S&P-500) | ~7500 | IS+, OOS Flip | High | Sauber falsifiziert | IS-Lookback-Artefakt, OOS Vorzeichen-Flip |
| 5 | SOM-Marktregime als Predictor | ~5000 | 1/30 sig. | High | Sauber falsifiziert | 1/30 = exakte Zufallsrate |
| 6 | Close-to-Close MR Excess (breiter Korb) | 300 | +0.080 % | Low | Praktisch irrelevant | Effekt < MDE und < typische Handelskosten (5–10 bps) |
| 7 | VIX-Conditioner für Streak-MR | ~5000 | IS+, OOS ≈ 0 | Medium | Sauber falsifiziert | IS-Falle, OOS kollabiert |
| 8 | GDELT-News-Sentiment-Conditioning | ~2000 | Cluster | Medium | Sauber falsifiziert | 2-Namen-Korb → Cluster-Illusion |
| 9 | Minuten-Momentum (Intraday-Continuation) | dünn | ~ 0 | Low | Underpowered | 4 Null-Befunde, Daten zu dünn, Mechanismus implausibel |
| 10 | Open→Close Down-Streak Harvest | ~5000 | Cluster | Medium | Sauber falsifiziert | Down-Streak-Tag-Cluster, kein echter Excess |
| 11 | Dividend Capture DE (DAX-40 + MDAX-50) | 493 | −0.31 % bis −1.02 % | High | Sauber falsifiziert | Negativer Edge: Drop-Ratio ≥ 1, Steuer 26.375 % schlägt voll durch |
| 12 | Optionsschein vor Dividende (Put & Call) | n/a | ≈ 0 (per Theorie) | High | Sauber falsifiziert | Put-Call-Parity preist Dividende ein; #11 zeigt Drop-Ratio ≥ 1 → beide Varianten tot |
| 13 | Selective Dividend Capture DE (Top-10 aus Train) | 66 | −0.68 % | Medium | Sauber falsifiziert | Train-Top-10 ≠ Test-Top-10 (Überlappung 1/10); Sartorius war Train-Rang 1, wird zum Test-Schlusslicht |
n-Werte sind teilweise Schätzungen aus den jeweiligen Backtest-Logs (Daily-Universe-Tests vs. Signal-Tag-Tests vs. Sektor-Untergruppen). Quelle: siehe Hypothesen-Sektionen oben sowie Code-Logs im Repo.
Praktische Konsequenzen für zukünftige Tests:
Re-Test TECH N=6 als neue Pre-Registered Hypothese. Fall A (n=21, Power 60.8 %) ist der naheliegendste Kandidat. Skizze:
Wenn dieser Test besteht, ist TECH N=6 ein Edge-Kandidat (nicht „bewiesener Edge" — dafür bräuchte es OOS-Holdout und Forward-Test). Wenn er scheitert, ist die Hypothese auch bei größerer Power tot. Beides sind belastbare Aussagen — anders als das aktuelle „nicht entscheidbar".
Fall C (CC-MR Excess) und Fall 9 (Minuten-Momentum) bekommen keine Re-Tests: der Effekt ist bei C zu klein für Kosten, bei Minuten-Momentum fehlen schlicht freie Daten in ausreichender Dichte.
github.com/defcon3/boersenbot/power_analysis.py Log: power_analysis.log Charts: Plotly inline (siehe Quelltext dieser Seite)