Currency Strength Index: relative Stärke im Forex messen.
Forex-Paare sind immer relativ. EUR/USD steigt nicht, weil „der Euro stark ist" — sondern weil der Euro relativ zum Dollar stark ist. Ein Currency Strength Index löst diese Paar-Relativität auf und liefert pro Einzelwährung einen messbaren Score. Wer ihn sauber baut, sieht Setups, die im klassischen Chart unsichtbar bleiben.
Die Grundidee.
Statt EUR/USD, EUR/GBP, EUR/JPY isoliert zu betrachten, aggregieren Sie die Bewegungen jeder Währung über alle ihre Crosses. EUR steigt heute gegen USD, GBP, JPY, CHF? Dann ist EUR isoliert stark — unabhängig davon, was im Dollar passiert. Wenn EUR nur gegen USD steigt, aber gegen GBP fällt, ist die Bewegung ein USD-Phänomen, kein EUR-Phänomen.
Das ist trivial in der Theorie, hilft aber in der Praxis enorm: viele Setups, die auf Paar-Basis verwirrend aussehen (EUR/USD steigt, EUR/GBP fällt), werden auf Einzelwährungs-Basis klar (Dollar schwach, EUR seitwärts).
Berechnung: drei Methoden.
Es gibt verschiedene Wege, einen Currency Strength Index zu konstruieren. Drei etablierte Ansätze:
- Geometrisches Mittel der Cross-Returns: für jede Währung wird die durchschnittliche Rendite gegen alle anderen G10-Währungen berechnet, multiplikativ aggregiert.
- RSI-Aggregation: pro Paar wird RSI berechnet, dann pro Währung der durchschnittliche RSI ihrer Cross-Paare (mit korrigiertem Vorzeichen für die Quote-Position).
- Vola-normalisierte Returns: Cross-Returns durch Vola jedes Paars geteilt, dann aggregiert. Robuster gegen vola-getriebene Verzerrungen.
Die geometrische Methode ist die sauberste — sie ist mathematisch invariant gegen die Wahl der Bezugswährung und gibt eine echte Rangliste.
import pandas as pd
import numpy as np
def currency_strength(pair_returns, currencies):
"""
pair_returns: pd.DataFrame mit log-returns je Cross-Paar (Spalten: 'EURUSD', 'GBPUSD', ...)
currencies: list, z.B. ['EUR', 'USD', 'GBP', 'JPY', 'CHF', 'AUD', 'CAD', 'NZD']
Return: pd.DataFrame mit Strength je Waehrung.
"""
strength = {c: pd.Series(0.0, index=pair_returns.index) for c in currencies}
counts = {c: 0 for c in currencies}
for col in pair_returns.columns:
base, quote = col[:3], col[3:]
# base steigt = positiver Return; quote sinkt = positiver Return-Beitrag fuer base
strength[base] = strength[base] + pair_returns[col]
strength[quote] = strength[quote] - pair_returns[col]
counts[base] += 1
counts[quote] += 1
df = pd.DataFrame(strength)
# Normalisieren: durch Anzahl Cross-Paare teilen
for c in currencies:
if counts[c] > 0:
df[c] = df[c] / counts[c]
return df.cumsum() # kumulierte Strength als Index
Wie Sie den Index handeln.
Der Index allein ist kein Trade-Signal. Er ist ein Filter, der Ihnen sagt, welche Paare das stärkste Momentum auf Einzelwährungs-Basis haben. Die typische Anwendung:
- Strongest-vs-Weakest: long das Paar mit der stärksten Long-Währung gegen die schwächste. Beispiel: EUR auf Rang 1, JPY auf Rang 8 → EUR/JPY long.
- Divergenz-Setup: Paar-Chart zeigt Konsolidierung, aber Einzelwährungs-Index zeigt klare Stärke-Divergenz → Breakout-Wahrscheinlichkeit erhöht.
- Exit-Filter: bestehende Long-Position wird geschlossen, wenn die Long-Währung in der Strength-Rangliste auf die untere Hälfte fällt.
Zeitrahmen und Glättung.
Roh-Strength-Werte sind verrauscht. Je nach Trading-Horizont brauchen Sie unterschiedliche Glättungen:
- Intraday (M15, H1): EMA(20) auf Strength, Trades nur wenn Rangabstand zwischen Top und Bottom mindestens 4 Plätze.
- Swing (H4, D1): SMA(14) auf Strength, Rangabstand mindestens 3 Plätze.
- Position (W1): Strength über 4 Wochen aggregiert, Rangabstand mindestens 5 Plätze.
Wichtig: zu kurzfristige Strength-Werte (Tick-Daten, M1) sind reines Rauschen und tradebar nur mit hochfrequenter Infrastruktur. Für klassisches Retail-Setup ist H1 das untere Limit.
Code-Beispiel: Rangliste in Echtzeit.
def strength_ranking(strength_df, lookback_bars=20):
"""
Gibt aktuelle Strength-Rangliste zurueck.
strength_df: kumulierte Strength pro Waehrung.
"""
# Strength-Aenderung ueber lookback_bars
delta = strength_df.iloc[-1] - strength_df.iloc[-lookback_bars]
ranking = delta.sort_values(ascending=False)
print("Currency Strength Ranking:")
for i, (cur, val) in enumerate(ranking.items(), 1):
sign = '+' if val > 0 else ''
print(f" {i}. {cur}: {sign}{val:.4f}")
strongest = ranking.index[0]
weakest = ranking.index[-1]
suggested_pair = f"{strongest}{weakest}"
print(f"\nVorgeschlagenes Paar (long): {suggested_pair}")
return ranking, suggested_pair
Häufige Denkfehler.
- USD doppelt zählen: wenn Sie nur USD-Crosses einbeziehen, ist USD strukturell bevorzugt. Bauen Sie auch EUR/GBP, AUD/NZD, GBP/JPY etc. ein.
- Strength als Trend-Signal missverstehen: ein hoher Rang heißt nicht „kaufen". Er heißt „relativ stark gegenüber anderen". In einem fallenden Markt kann „stark" einfach „weniger gefallen" bedeuten.
- Strength gegen Fundamental ignorieren: wenn EZB cuttet und Strength trotzdem hoch ist, ist Vorsicht angebracht — entweder kommt Korrektur, oder der Markt preist etwas ein, das Sie noch nicht sehen.
- Index als Heilige Gral: Currency Strength ist ein Filter, kein Trading-System. Er muss mit Entry-Trigger (Breakout, Pullback) und Risikomanagement kombiniert werden.
Kombination mit anderen Setups.
In der Praxis funktioniert Currency Strength am besten als Confluence-Filter:
- Mit London-Breakout: nur Breakouts mitnehmen, bei denen die Trend-Richtung mit dem Strength-Ranking übereinstimmt.
- Mit Carry: Carry-Basket-Long-Positionen mit zusätzlich starkem Strength haben höhere Hit-Rate.
- Mit Mean-Reversion: Vorsicht — Mean-Reversion und Strength sind oft Gegenspieler. Wenn Strength klar gerichtet ist, Mean-Reversion-Setups pausieren.
Die ehrliche Wahrheit: Currency Strength Index ist kein eigenständiger Edge. Er ist ein Werkzeug, das schon vorhandene Setups schärfer macht. Wer ihn isoliert handelt, tradet im Grunde ein Momentum-Setup auf aggregierten Returns — das funktioniert, aber nicht besser als klassisches Momentum auf Einzelpaaren.
Sie wollen Currency Strength sauber in Ihren Trading-Stack integrieren? Erstgespräch buchen — wir bauen Index, Filter und Entry-Trigger gemeinsam auf.