← Alle Insights

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:

  1. Geometrisches Mittel der Cross-Returns: für jede Währung wird die durchschnittliche Rendite gegen alle anderen G10-Währungen berechnet, multiplikativ aggregiert.
  2. 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).
  3. 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:

Zeitrahmen und Glättung.

Roh-Strength-Werte sind verrauscht. Je nach Trading-Horizont brauchen Sie unterschiedliche Glättungen:

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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:

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.