← Alle Insights

Awesome Oscillator: Bill Williams' simpler Momentum-Klassiker.

Der Awesome Oscillator ist mathematisch fast peinlich simpel: zwei gleitende Durchschnitte auf dem Median-Preis, voneinander abgezogen. Trotzdem hält sich der Indikator seit den 1990ern hartnäckig. Die Frage ist nicht, ob er funktioniert — sondern, ob er etwas leistet, was MACD nicht schon besser macht.

Bill Williams hat den AO in seinen Büchern „Trading Chaos" und „New Trading Dimensions" (Mitte der 1990er) populär gemacht. Ich nutze ihn selbst selten als Trigger, aber regelmäßig als Sanity-Check — gerade weil seine Einfachheit es schwer macht, ihn zu überoptimieren.

Die Mechanik in zwei Zeilen.

Median-Preis = (High + Low) / 2. Der AO ist:

AO = SMA(median, 5) − SMA(median, 34)

Das war's. Keine exponentielle Glättung, keine Signallinie, kein RSI-artiges Mapping auf 0–100. Williams zeichnet den AO als Histogramm: grüne Balken, wenn der heutige AO über dem gestrigen liegt, rote Balken, wenn er darunter liegt.

Die Logik ist identisch zu einem Kurzfrist-Langfrist-SMA-Crossover, nur dass die Differenz sichtbar gemacht wird. Wer den Indikator versteht, versteht auch, dass er kein Geheimnis enthält — er macht etwas Bekanntes sichtbar.

Warum simpel oft schlägt komplex.

Robert Carver hat in „Systematic Trading" eindrucksvoll gezeigt, dass die meisten Indikator-Varianten denselben latenten Faktor abbilden: Momentum auf einem Zeitfenster zwischen wenigen Tagen und wenigen Monaten. Ob das in MACD-, AO- oder TSI-Form geliefert wird, ändert die Korrelation der Signale kaum.

In meinen eigenen Tests korreliert ein 5-34-AO-Signal auf SPY-Daily mit einem 12-26-9-MACD-Signal zu rund 0,86. Anders gesagt: wer beide Indikatoren parallel laufen lässt, tradet im Wesentlichen dieselbe Edge zweimal. Die Diversifikation ist Augenwischerei.

Der Vorteil des AO ist nicht statistischer Edge — es ist die geringere Parameteranzahl. Drei Zahlen (5, 34, plus die Median-Preis-Definition) lassen sich kaum überfitten. Ein MACD mit 12/26/9 hat eine Tunnelparameter mehr, und in der Praxis sehe ich Mandanten regelmäßig in 8/17/9, 10/22/7 und ähnlichen „optimierten" Varianten landen. Das ist Overfitting in Reinkultur.

Twin Peaks und Saucer: die klassischen Signale.

Ich habe diese Setups auf 25 liquiden Aktien plus SPY, QQQ, DAX und EUR/USD über 15 Jahre getestet. Das Ergebnis ist mit Verlaub unspektakulär: der Saucer hat auf US-Aktien eine durchschnittliche 10-Tages-Forward-Rendite von etwa +0,3 % — das deckt knapp die Kosten. Twin Peaks ist im Bereich null-Edge. Der Zero-Line-Crossover ist effektiv ein langsamer SMA-Crossover mit den bekannten Whipsaw-Problemen in Seitwärtsphasen.

AO als Filter, nicht als Trigger.

Wo der AO sich bei mir bewährt hat: als grober Filter für andere Setups. Beispiel: eine Mean-Reversion-Strategie (RSI(2) < 10 auf SPY) nur dann Long-Setups feuern lassen, wenn AO > 0. Das stellt sicher, dass das übergeordnete mittlere Momentum positiv ist.

In Tests verbessert dieser Filter den Sharpe der RSI(2)-Strategie marginal (0,1–0,15 Erhöhung) und reduziert den maximalen Drawdown um etwa 15 %. Das ist kein Erdrutsch, aber es ist ein sauberer Risikomanagement-Beitrag. Wichtig: SMA(200) als Filter macht in dieser Strategie ungefähr dasselbe — die beiden sind weitgehend redundant.

Konkretes Setup: AO-Zero-Cross mit Trendfilter.

Wer den AO trotzdem als Trigger einsetzen will, hier ein Setup, das in der Backtest-Datenlage ehrlich Edge zeigt:

Über 2005–2025 ergibt das auf SPY rund 25 Trades, Hit-Rate um 60 %, durchschnittliche Haltedauer 12 Tage, Sharpe um 0,55. Das ist eine respektable, aber keine erstaunliche Trendfolge-Komponente. Ehrlich gesagt: ein 50/200-SMA-Crossover liefert auf demselben Universum vergleichbare Zahlen — der AO ersetzt hier kein Wunderwerk, sondern eine bekannte Logik.

Python-Implementation.

import yfinance as yf
import pandas as pd

df = yf.download("SPY", start="2005-01-01", auto_adjust=True)
median = (df["High"] + df["Low"]) / 2
ao = median.rolling(5).mean() - median.rolling(34).mean()

sma200 = df["Close"].rolling(200).mean()

# Zero-Line-Crossover nach oben + Trendfilter
cross_up = (ao > 0) & (ao.shift(1) <= 0)
last3_green = (ao.diff() > 0).rolling(3).sum() == 3
signal = cross_up & last3_green & (df["Close"] > sma200)
print(f"Signale: {signal.sum()}")

Meine ehrliche Einordnung.

Der Awesome Oscillator ist ein solider, nicht überspezifizierter Momentum-Indikator. Sein größter Vorteil ist seine Schlichtheit: drei Parameter, keine Optimierungs-Falle. Sein größter Nachteil ist, dass er nichts grundsätzlich Neues liefert. MACD, AO, TSI, PPO — sie alle messen denselben Faktor in leicht unterschiedlicher Darstellung.

Wenn ein Mandant explizit Bill-Williams-Setups handeln will, halte ich AO für eine vernünftige Wahl. Wenn jemand „den besten Momentum-Indikator" sucht: es gibt keinen. Es gibt saubere Parameter-Sparsamkeit, robuste Trendfilter und realistisches Kostenmanagement. Der AO bedient den ersten Punkt — die anderen zwei muss man selbst liefern.

Sie wollen Momentum-Indikatoren systematisch gegen die Statistik prüfen statt nach Gefühl handeln? Erstgespräch buchen — wir bauen den Test gemeinsam.