Strasmore Research
Lernen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-08

Maximaler Drawdown: Tiefe und Erholungszeit

Der maximale Drawdown misst den stärksten Rückgang vom Hoch zum Tief. Erfahren Sie, wann er tief ist und warum die Erholung zu einem neuen Hoch länger dauert.

Der maximale Drawdown ist der stärkste prozentuale Rückgang einer Wertentwicklung vom bisherigen Höchststand bis zum Tiefpunkt. Er wird relativ zum jeweils erreichten Höchststand gemessen. Steigt ein Konto auf 120.000 US-Dollar, fällt auf 84.000 US-Dollar und erholt sich anschließend wieder, beträgt der maximale Drawdown 30 %. Dieser Wert bleibt dauerhaft bestehen, weil die Kennzahl den schlechtesten Abschnitt der gesamten Historie erfasst und nicht den aktuellen Zustand.

Die meisten Anleger nennen nur die Höhe des Rückgangs. In derselben Kennzahl stecken jedoch zwei weitere Zeitangaben: die Zeit vom Höchststand bis zum Tiefpunkt und die deutlich längere Zeit vom Tiefpunkt bis zu einem neuen Höchststand.

Wie wird der maximale Drawdown berechnet?

Die gesamte Berechnung erfolgt in einem Durchlauf über die Zeitreihe. Bei jeder Beobachtung aktualisieren Sie das laufende Hoch, messen den aktuellen Wert daran und behalten den schlechtesten bisher beobachteten Wert.

  1. Setzen Sie das laufende Hoch auf den ersten Wert.
  2. Erhöhen Sie das Hoch bei jedem neuen Wert, wenn dieser höher ist.
  3. Berechnen Sie den Drawdown für diesen Zeitpunkt: Wert geteilt durch Hoch minus eins.
  4. Behalten Sie den negativsten Wert. Das ist der maximale Drawdown.

In die Berechnung fließen keine Renditereihe, keine Volatilitätsschätzung und keine Verteilungsannahme ein. Die Schleife läuft mit der Python-Standardbibliothek über eine einfache Zahlenliste. Installieren Sie den Interpreter auf einem neuen Ubuntu-System zuerst:

apt-get update && apt-get install -y python3

Speichern Sie die Schleife als maxdd.py. Bei den folgenden Kursen handelt es sich um eine frei erfundene Zeitreihe mit zehn Punkten. Sie ist kurz genug, um die Berechnung von Hand zu überprüfen:

prices = [100.0, 104.0, 98.0, 92.0, 95.0, 88.0, 90.0, 101.0, 99.0, 106.0]

peak = prices[0]
max_dd = 0.0

for price in prices:
    if price > peak:
        peak = price
    drawdown = price / peak - 1.0
    if drawdown < max_dd:
        max_dd = drawdown

print(f"maximum drawdown: {max_dd * 100:.1f}%")

Führen Sie python3 maxdd.py aus. Das Programm gibt maximum drawdown: -15.4% aus. Prüfen Sie das Ergebnis von Hand: Das Hoch vor dem Tief liegt bei 104, das Tief bei 88, und 88 geteilt durch 104 ergibt 0,846. Die Zeitreihe endet anschließend bei 106 und damit auf einem Allzeithoch. Der Drawdown von 15,4 % bleibt dennoch bestehen. Der maximale Drawdown ist ein dauerhafter Rekord des schlechtesten Zeitpunkts in einer Stichprobe. Er sagt nichts darüber aus, wo die Zeitreihe aktuell steht. Zwei weitere Variablen in derselben Schleife erfassen den zeitlichen Verlauf: den Index, an dem das Hoch erreicht wurde, und den Index, an dem der schlechteste Wert auftrat.

Wie eine Drawdown-Kurve aussieht

Eine Drawdown-Kurve zeigt Schritt 3 an jedem Punkt, statt ihn auf den schlechtesten Einzelwert zu reduzieren. Die Linie liegt immer dann bei null, wenn die Zeitreihe ein neues Hoch erreicht, und fällt dazwischen unter null. Daher wird die Differenz als „underwater“ bezeichnet. Hier sehen Sie diese Kurve für SPY, einen börsengehandelten Fonds, der den S&P 500 abbildet, anhand der Schlusskurse zum Monatsende seit Januar 2016.

AbfrageSPY-Unterwasser-Kurve: Monatsendstand gegenüber dem bisherigen Höchststand, 2016 bis 2026
Das exakte SQL hinter jeder Zahl
WITH monthly AS (
    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2016-01-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY month_start
),
runs AS (
    SELECT month_start,
           close_px,
           max(close_px) OVER (ORDER BY month_start
                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_peak
    FROM monthly
)
SELECT formatDateTime(month_start, '%Y-%m') AS month,
       round(100 * (close_px / running_peak - 1), 2) AS drawdown_pct
FROM runs
ORDER BY month_start
Run this yourself

Über 127 Monatsendwerte hinweg bleibt die Linie über lange Strecken nahe null und fällt nur an einigen Stellen deutlich ab. Der letzte erfasste Monat liegt -1.27% unter dem bisherigen Höchststand. Zwei Merkmale der Form verdeutlichen den Zusammenhang. Erholungen verlaufen als langsame Anstiege und nicht als scharfe Erholungsbewegungen. Jedes neue Hoch setzt die Kurve auf null zurück und löscht die sichtbare Erinnerung an die vorherige Entwicklung.

Wie lange dauert die Erholung von einem Drawdown?

In einem Drawdown stecken drei unterschiedliche Kennzahlen. Sie als eine einzige Kennzahl zu behandeln, ist die häufigste Fehlinterpretation einer Performancetabelle:

  1. Tiefe: der prozentuale Rückgang des Werts unter seinen Höchststand.
  2. Zeit bis zum Tief: die Kalendertage vom Höchststand bis zum Tiefpunkt.
  3. Erholungsdauer: die Kalendertage vom Tiefpunkt bis zu einem neuen Höchststand.

Die dritte Kennzahl ist normalerweise die längste. Eine Schlagzeilenzahl zeigt sie jedoch nie. Das folgende Panel rekonstruiert anhand täglicher Schlusskurse jede abgeschlossene Underwater-Phase des SPY seit 2016. Eine Phase beginnt an dem Tag, an dem ein Höchststand erreicht wird, und endet an dem Tag, an dem der Fonds erstmals darüber schließt.

AbfrageAbgeschlossene SPY-Drawdowns seit 2016: Tiefe, Tage des Rückgangs, Tage bis zur Erholung
Das exakte SQL hinter jeder Zahl
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2016-01-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY session_date
),
runs AS (
    SELECT session_date,
           close_px,
           max(close_px) OVER (ORDER BY session_date
                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_peak
    FROM daily
),
episodes AS (
    SELECT running_peak AS peak_px,
           min(session_date) AS peak_date,
           argMin(session_date, close_px) AS trough_date,
           min(close_px) AS trough_px
    FROM runs
    GROUP BY running_peak
),
sequenced AS (
    SELECT peak_px,
           peak_date,
           trough_date,
           trough_px,
           leadInFrame(peak_date, 1) OVER (ORDER BY peak_date
                                           ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS recovery_date
    FROM episodes
)
SELECT formatDateTime(peak_date, '%b %Y') AS episode_label,
       round(100 * (1 - trough_px / peak_px), 1) AS fall_from_peak_pct,
       dateDiff('day', peak_date, trough_date) AS days_to_trough,
       dateDiff('day', trough_date, recovery_date) AS days_to_new_high,
       dateDiff('day', peak_date, recovery_date) AS days_underwater
FROM sequenced
WHERE recovery_date > trough_date
  AND round(100 * (1 - trough_px / peak_px), 1) >= 5
ORDER BY fall_from_peak_pct DESC
LIMIT 8
Run this yourself

Die tiefste abgeschlossene Phase in der Liste beginnt in Feb 2020 und erreicht 34.2% unter dem vorherigen Höchststand. Der Rückgang dauerte 33 Kalendertage, die anschließende Erholung 148 Tage. Insgesamt blieb der Fonds 181 Tage unter Wasser. Der nächste Eintrag aus Jan 2022 ist mit 25.4% weniger tief. Der Fonds blieb dabei 746 Tage unter seinem alten Höchststand.

Tiefe und Dauer können völlig auseinanderfallen. Ein heftiger Rückgang mit einer schnellen Erholung und ein flacher, jahrelanger Abwärtstrend werden beide auf eine einzige Prozentzahl reduziert. Der Crash im März 2020 ist das typische Beispiel für die erste Form. Wie sich Märkte von Crashs erholen beschreibt die zweite Phase dieser Entwicklung.

Warum der maximale Drawdown mit längerer Messdauer größer wird

Der maximale Drawdown ist ein Extremwert. Eine längere Historie kann ihn daher nur unverändert lassen oder vergrößern. Das laufende Hoch in einem längeren Betrachtungszeitraum ist zu jedem Zeitpunkt mindestens so hoch wie das Hoch in einem kürzeren Zeitraum. Dadurch ist das Ergebnis mathematisch vorgegeben. Eine Messung desselben Fonds über fünf Zeiträume, die alle am 31. Juli 2026 enden, zeigt diesen Effekt.

AbfrageGleicher Fonds, fünf Rückblickfenster: maximaler SPY-Drawdown nach Stichprobenlänge bis zum 31. Juli 2026
Das exakte SQL hinter jeder Zahl
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2016-07-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY session_date
),
scoped AS (
    SELECT arrayJoin([1, 2, 3, 5, 10]) AS lookback_years,
           session_date,
           close_px
    FROM daily
),
windowed AS (
    SELECT lookback_years, session_date, close_px
    FROM scoped
    WHERE session_date >= subtractYears(toDate('2026-07-31'), lookback_years)
),
runs AS (
    SELECT lookback_years,
           session_date,
           close_px,
           max(close_px) OVER (PARTITION BY lookback_years ORDER BY session_date
                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_peak
    FROM windowed
)
SELECT concat(toString(lookback_years), if(lookback_years = 1, ' year', ' years')) AS lookback,
       round(100 * max(1 - close_px / running_peak), 1) AS max_drawdown_pct,
       formatDateTime(argMax(session_date, 1 - close_px / running_peak), '%b %Y') AS worst_point
FROM runs
GROUP BY lookback_years
ORDER BY lookback_years
Run this yourself

Im zurückliegenden 1 year-Zeitraum betrug der stärkste Rückgang 9.1%. Wird dieselbe Kursreihe auf 10 years ausgedehnt, beträgt der Wert 34.2%. Der stärkste Rückgang trat dabei in Mar 2020 auf. Der Fonds wurde dadurch nicht riskanter. Nur der Beobachtungszeitraum wurde länger.

Dieselbe Mathematik verzerrt auch den Vergleich von Strategien. Ein Backtest über drei Jahre und ein Backtest über zwanzig Jahre können ein identisches Verhalten beschreiben und trotzdem sehr unterschiedliche Drawdowns ausweisen. Ohne Angabe des Betrachtungszeitraums ist die Kennzahl daher wenig aussagekräftig. Look-ahead-Bias beim Backtesting beschreibt eine weitere Möglichkeit, wie ein sauber wirkender Backtest sich selbst besser darstellt.

Maximaler Drawdown im Vergleich zur Volatilität

Die Volatilität misst die typische Größe einer täglichen Kursbewegung in beide Richtungen. Der maximale Drawdown misst eine bestimmte Abwärtsbewegung. Beide Kennzahlen beschreiben Risiken, beantworten aber unterschiedliche Fragen. Die Übersicht stellt sie für acht bekannte Unternehmen über die fünf Jahre bis zum 31. Juli 2026 gegenüber. Die Volatilität wurde auf Basis der täglichen Schlusskurse annualisiert.

AbfrageMaximaler Drawdown gegenüber annualisierter Volatilität: acht Large Caps, fünf Jahre bis zum 31. Juli 2026
Das exakte SQL hinter jeder Zahl
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'CVX', 'VZ', 'PG')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2021-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
runs AS (
    SELECT ticker,
           session_date,
           close_px,
           max(close_px) OVER (PARTITION BY ticker ORDER BY session_date
                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_peak,
           lagInFrame(close_px, 1) OVER (PARTITION BY ticker ORDER BY session_date
                                         ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily
)
SELECT ticker,
       round(100 * max(1 - close_px / running_peak), 1) AS max_drawdown_pct,
       round(100 * sqrt(252) * stddevSampIf(close_px / prev_close - 1, prev_close > 0), 1) AS annualized_volatility_pct
FROM runs
GROUP BY ticker
HAVING countIf(prev_close > 0) > 20
ORDER BY max_drawdown_pct DESC
Run this yourself

Lesen Sie die beiden Spalten gemeinsam. VZ verzeichnete mit 45.4% den stärksten Rückgang der Gruppe. Die annualisierte Volatilität lag bei 22.6%. Am anderen Ende fiel KO um 20.9%. Die Volatilität betrug 16.7%. Die Volatilität ist ein Durchschnitt über jeden Handelstag des Zeitraums. Durchschnittswerte können einen langen, langsamen Rückgang abschwächen. Der Drawdown zeigt dagegen den schlechtesten Pfad, den der Kurs tatsächlich genommen hat. Eine ruhige Position, die über zwei Jahre langsam fällt, kann einen hohen Drawdown bei unauffälliger Volatilität aufweisen.

Die Anomalie niedriger Volatilität untersucht, wie sich ruhige Titel über lange Zeiträume entwickeln. Die Positionsgrößenbestimmung nach dem Kelly-Kriterium zeigt, wie sich die zulässige Drawdown-Höhe in eine Positionsgröße übersetzen lässt.

Was die Kennzahl nicht aussagen kann

Vier Einschränkungen sollten Sie im Blick behalten:

  1. Sie beschreibt einen realisierten Verlauf. Derselbe Prozess hätte bei einem anderen Verlauf einen deutlich schlechteren Wert ergeben können.
  2. Sie hängt von der Länge des Beobachtungszeitraums ab. Zwei Drawdowns lassen sich daher nur bei übereinstimmenden Zeitfenstern vergleichen.
  3. Sie hängt von der Abtastfrequenz ab. Monatsschlusskurse blenden die Intraday-Tiefs aus und ergeben über denselben Zeitraum einen kleineren Wert als Tagesschlusskurse.
  4. Sie enthält keine Information über die Zukunft. Wenn ein Wert 30 % unter einem Höchststand liegt, sagt das nichts darüber aus, ob der 31. Punkt morgen erreicht wird.

Diese letzte Einschränkung erklärt, warum ein automatisiertes System eine Drawdown-Regel und nicht nur einen Drawdown-Schwellenwert benötigt. „Bei 20 % anhalten“ beantwortet eine Frage und lässt zwei weitere offen: Was geschieht beim Anhalten mit den offenen Positionen, und welche Signale erlauben die Wiederaufnahme des Systems? Schutzschalter für Trading-Bots erläutert die Struktur einer solchen Regel. Die Kosten einer willkürlichen starren Regel fallen in der Erholungsphase an. Ein System, das nahe dem Tief aussteigt und spät wieder startet, verpasst den Anstieg. Die besten Tage verpassen beziffert diesen Effekt.

Vor dem Vergleich zweier Werte ist ein Messdetail wichtig: Der Drawdown einer Fonds-Kursreihe und der Drawdown eines tatsächlichen Kontos unterscheiden sich immer dann, wenn Geld zu- oder abfließt oder Dividenden gutgeschrieben werden. wie Monatsrenditen gemessen werden behandelt diesen Punkt ausführlich.

FAQ zum maximalen Drawdown

Was ist ein guter maximaler Drawdown?

Es gibt keinen allgemein gültigen Wert. Entscheidend sind der Vergleichsmaßstab und der Messzeitraum. In den zehn Jahren bis zum 31. Juli 2026 verzeichnete SPY vom laufenden Hoch bis zum Tief auf Basis der Tagesschlusskurse den stärksten Rückgang von 34.2%. Eine Strategie, die über einen kürzeren Zeitraum einen geringeren Wert ausweist, war deshalb nicht unbedingt sicherer.

Ist der maximale Drawdown dasselbe wie die Volatilität?

Nein. Die Volatilität beschreibt die typische tägliche Kursbewegung. Der maximale Drawdown beschreibt den einzelnen stärksten Weg vom Hoch zum Tief. Eine Position mit niedriger Volatilität, die über zwei Jahre kontinuierlich fällt, kann einen größeren Drawdown aufweisen als eine schwankungsanfällige Position, die fortlaufend neue Höchststände erreicht.

Wie lange dauert die Erholung von einem maximalen Drawdown?

Das ist unterschiedlich. Der Weg zurück ist häufig die längere Hälfte. Bei SPY seit 2016 erstreckte sich die tiefste abgeschlossene Phase unterhalb eines vorherigen Hochs über 181 Kalendertage vom Hoch bis zum Erreichen eines neuen Hochs. Davon entfielen 33 Tage auf die Abwärtsbewegung.

Sagt der maximale Drawdown künftige Verluste voraus?

Nein. Er beschreibt einen bereits eingetretenen Kursverlauf. Ein längerer Messzeitraum führt fast immer zu einem höheren Wert. Der maximale Drawdown zeigt, welche Belastung eine Strategie bisher verkraftet hat. Für die künftige Entwicklung gibt es keine Obergrenze.


Hinter jedem der obigen Panels ist die zugrunde liegende SQL-Abfrage gespeichert. Öffnen Sie ein Panel, ändern Sie den ticker oder den Zeitraum und führen Sie dieselbe Drawdown-Berechnung auf dem Strasmore-Terminal aus.

#risk#drawdown#backtesting#performance metrics#python