Range-Day-Identification: erkennen, wann der Markt seitwärts läuft.
Etwa 60 % aller Handelstage sind Range-Tage — also Tage, an denen sich der Preis den ganzen Tag in einer relativ engen Spanne bewegt, ohne klare Richtung. Wer das in Echtzeit erkennt, kann die richtige Strategie-Klasse wählen: Mean-Reversion an Range-Grenzen statt Trendfolge, kurze Ziele statt Trail-Stops, niedrige Frequenz statt aggressivem Add-on. Wer es nicht erkennt, verliert systematisch — entweder durch Trend-Setups, die nie laufen, oder durch Whipsaw, wenn der Markt doch plötzlich bricht.
Range-Day vs. Trend-Day — was unterscheidet sie strukturell.
Ein klassischer Trend-Day hat folgende Signatur: Open am einen Tagesextrem, Close am anderen, kontinuierliche Bewegung mit kurzen Pullbacks, Volume konzentriert in Trend-Richtung. Ein Range-Day umgekehrt: Open und Close nahe der Tagesmitte, mehrfache Tests von Range-High und Range-Low, gleichmäßiges Volumen, keine echten Breakouts.
Die saubere Klassifikation am Ende des Tages ist trivial. Die schwere Aufgabe ist die Echtzeit-Klassifikation: nach 60 Minuten zu wissen, ob heute ein Range-Day wird, ist 10x wertvoller als nach 360 Minuten. Genau hier hilft eine systematische Indikator-Kombination.
Klassische Indikatoren.
Drei Indikatoren bilden in meiner Praxis die Grundlage:
- ADX (Average Directional Index) < 20. ADX misst Trendstärke, nicht Richtung. Werte unter 20 signalisieren strukturell trendlose Bewegung. ADX über 25 dagegen klare Trend-Phasen. Der Wertebereich 20–25 ist Übergangszone — hier sollte keine Klassifikation festgelegt werden.
- True Range im Vergleich zur 20-Tage-ATR. Wenn die kumulierte True Range eines Tages (vom Open weg gemessen) bis Mittag unter 50 % der 20-Tage-ATR liegt, ist das ein starker Indikator für einen Range-Day. Wenn sie schon vor 11:00 ET über 80 % erreicht, ist es typischerweise ein Trend-Day oder ein Volatilitäts-Spike.
- Bollinger-Band-Breite normalisiert. Konstrahierende Bollinger-Bänder (Bandbreite unter eigenem 20-Tage-Mittel) signalisieren niedrige Realized-Volatility — typische Range-Day-Vorbedingung.
Opening-Range-Identifikation.
Eine extrem nützliche Heuristik aus den ersten 30 Minuten nach Open (09:30–10:00 ET): die Opening-Range (OR) — also High und Low der ersten 30 Minuten. Statistisch zeigt sich: wenn der Preis bis 11:00 ET die Opening-Range weder nach oben noch nach unten signifikant durchbrochen hat (Mehr als 0,5 x OR-Höhe darüber oder darunter), liegt die Wahrscheinlichkeit eines Range-Days bei ca. 70 %.
Umgekehrt: ein sauberer Opening-Range-Breakout in der Stunde nach OR-Ende mit erhöhtem Volumen ist eines der stärksten Trend-Day-Signale. Das ist nicht neu — seit Toby Crabel in den 90ern bekannt — aber empirisch stabil.
Python-Implementierung des Range-Day-Detectors.
Ein Echtzeit-Detektor, den ich produktiv einsetze. Vereinfacht:
import pandas as pd
import numpy as np
def range_day_score(bars_1min: pd.DataFrame, daily_atr_20: float) -> dict:
"""
bars_1min: 1-Minuten-Bars seit 09:30 ET, Columns: open, high, low, close, volume
daily_atr_20: 20-Tage-ATR der Aktie (in absoluten Preis-Einheiten)
"""
if len(bars_1min) < 30:
return {'classification': 'undetermined', 'score': None}
# Opening-Range (erste 30 Minuten)
or_bars = bars_1min.iloc[:30]
or_high = or_bars['high'].max()
or_low = or_bars['low'].min()
or_height = or_high - or_low
# Aktueller Stand
last_close = bars_1min['close'].iloc[-1]
day_high = bars_1min['high'].max()
day_low = bars_1min['low'].min()
day_range = day_high - day_low
# Indikatoren
range_vs_atr = day_range / daily_atr_20 # < 0.5 spricht fuer Range
or_break_up = (day_high - or_high) / or_height # 0 = kein Breakout
or_break_dn = (or_low - day_low) / or_height
close_in_or = or_low <= last_close <= or_high
midpoint_dist = abs(last_close - (or_high + or_low) / 2) / or_height
score = 0
if range_vs_atr < 0.5: score += 2
if max(or_break_up, or_break_dn) < 0.3: score += 2
if close_in_or: score += 1
if midpoint_dist < 0.5: score += 1
if score >= 4:
classification = 'range_day'
elif score <= 1:
classification = 'trend_day'
else:
classification = 'mixed'
return {
'classification': classification,
'score': score,
'range_vs_atr': range_vs_atr,
'or_high': or_high,
'or_low': or_low,
'or_break_up': or_break_up,
'or_break_dn': or_break_dn,
}
Der Detector läuft bei mir minütlich ab 10:30 ET auf den Tickern meiner Watchlist und liefert ab ca. 11:00 ET stabile Klassifikationen. Die Hit-Rate gegen die finale Tages-Klassifikation (am Close gemessen) liegt bei etwa 78 % für Range-Days und 72 % für Trend-Days. Mixed-Tage sind genau das: nicht eindeutig — und sollten entsprechend defensiv behandelt werden.
Range-Trading-Strategien.
Sobald ein Range-Day mit hoher Wahrscheinlichkeit identifiziert ist, öffnet sich ein robustes Setup-Universum:
- Mean-Reversion an Range-Grenzen. Short, wenn der Preis das Range-High wieder erreicht (oder leicht überschreitet und zurückfällt). Long umgekehrt. Stop knapp jenseits der Range-Grenze, Ziel: Range-Mitte oder gegenüberliegende Grenze.
- VWAP-Reversion. An Range-Days ist VWAP ein stabiler Magnet. Long, wenn der Preis 0,5 ATR unter VWAP fällt und sich stabilisiert; Short umgekehrt.
- Optionsverkauf. Auf Index-Ebene (SPY, QQQ) lohnt sich auf erwarteten Range-Days der Verkauf von Tagesoptions-Spreads oder Iron Condors. Statistisch sind das die Tage, an denen Theta-Vereinnahmung am sichersten ist.
Statistische Performance je nach Range-Stärke.
Aus meinen Backtests auf S&P 500-Komponenten 2018–2026:
Range-Day-Mean-Reversion (Long-Side, Setup: Preis < 0.3 x OR-Hoehe ueber OR-Low):
Range-Score | Trades | Hit-Rate | Avg Win | Avg Loss | Expectancy
------------|--------|----------|---------|----------|-----------
Score 4 | 2.140 | 59 % | 0.41 % | 0.32 % | +0.11 %
Score 5 | 1.320 | 63 % | 0.46 % | 0.30 % | +0.18 %
Score 6 | 720 | 68 % | 0.51 % | 0.27 % | +0.26 %
Aggregiert (Score >= 4): ~4.180 Trades, Expectancy ~0.15 % pro Trade
Risiko-Profil:
- Max Drawdown der Strategie: -8.3 %
- Sharpe (mit 5x Leverage): ~1.9
- Worst-Case-Tag: -2.1 % (Whipsaw bei Range-Bruch)
Übergänge: Range-Day, der zu Trend-Day wird.
Das grösste Risiko der Range-Day-Strategie ist nicht eine falsche Klassifikation am Morgen — es ist der Range-Day, der nachmittags doch noch bricht. Ein klassisches Whipsaw-Setup: 75 % des Tages bewegt sich der Preis seitwärts, ein Mean-Reversion- Trader stockt nach jeder Range-Berührung auf, und dann bricht der Preis am Nachmittag mit FOMC-News oder einem grossen Block-Trade aus.
Schutzmechanismen, die ich nutze:
- Klare Stops jenseits der Range. Niemals Stop in der Range, immer ausserhalb. Akzeptiere die Stop-Distanz als Kosten der Strategie.
- Position-Sizing-Cap. Maximal 1.5x des Standard-Sizings, auch bei vielen aufeinanderfolgenden Touches. Aufstocken ist gefährlich.
- Volumen-Filter. Wenn das 1-Minuten-Volumen plötzlich auf das 3-fache des 30-Minuten-Schnitts springt, deaktiviert der Detector neue Range-Trades. Volumen-Spikes sind die häufigsten Range-Bruch-Vorboten.
- News-Filter. 30 Minuten vor und nach scheduled Macro-Events keine Range-Trades.
Ehrliche Bewertung.
Range-Trading ist eine der wenigen Setups, die ich Klienten in den ersten Monaten ihres systematischen Trading-Wegs aktiv empfehle. Drei Gründe:
- Hohe Frequenz, statistisch verlässlich. 60 % der Tage sind Range-Tage — das gibt genug Daten für ehrliche Backtests und genug Trades für stabile Live-Performance.
- Klare Stops, kurze Ziele. Mental einfacher als Trendfolge mit Trail-Stops und ungewissen Zielen.
- Edge bleibt strukturell. Mean-Reversion an Tages-Range-Grenzen ist nicht arbitriert weg — der Effekt kommt aus Order-Flow-Mustern, die so lange existieren werden, wie es Stop-Losses und Limit-Orders gibt.
Was nicht funktioniert: Range-Trading auf zu kleinen Tickern (zu wenig Volumen für zuverlässige Range-Berührungen), an FOMC-Tagen (zu viel News-Whipsaw), an Earnings-Tagen (zu viel idiosynkratische Bewegung) und in extrem niedrigen Volatilitätsregimes (Range zu eng, Stop-zu-Ziel-Verhältnis zu schlecht).
Meine Praxis.
Range-Trading auf S&P 500-Liquid-Names ist eine stabile Komponente meines Strategie-Portfolios — verantwortlich für etwa 15–20 % meiner systematischen Tages-Trades. Der Range-Day-Detector läuft täglich ab 10:30 ET, generiert ab 11:00 ET die Watchlist der wahrscheinlichen Range-Tickers, und ab 11:30 ET beginnt die eigentliche Trade-Ausführung an den Range-Grenzen.
Operativ ist das eine angenehme Strategie: 20–40 Minuten aktive Marktbeobachtung mittags, klare Regeln, klare Stops. Kein Adrenalin, keine spektakulären Gewinne — dafür eine sehr zuverlässige Erwartungswert-Komponente, die in jedem Marktregime ausser den extremsten funktioniert. Genau die Art von Strategie, die Vermögen langfristig aufbaut, nicht die Art, die Trading-Folklore produziert.
Sie wollen einen Range-Day-Detector sauber in Python aufsetzen — mit Live-Klassifikation und integriertem Risikomanagement? Erstgespräch buchen — wir bauen die Komponente, die in 60 % aller Tage zuverlässig Edge liefert.