Hidden Markov Models in der Praxis: Regime-Detection ohne Overfitting.

Hidden Markov Models gelten als der elegante Weg, Marktregime zu identifizieren. In jedem zweiten Quant-Buch findet sich ein HMM-Kapitel, in jedem dritten Vortrag eine S&P-500-Grafik mit drei farbigen Regime-Bändern. Was selten dazugesagt wird: in der Live-Anwendung bringen HMMs oft kaum mehr als ein simpler Volatilitäts-Filter — und sie bergen Fallen, die einen sauber aussehenden Backtest zur Fiktion machen.

HMM-Mechanik in Kürze.

Ein HMM modelliert beobachtete Daten als Ausgabe einer ungeobachteten Zustands-Folge. Drei Komponenten:

Drei klassische Probleme:

Für Trading-Anwendungen sind Forward-Backward (für State-Probabilities) und Viterbi (für harte State-Zuweisung) die operativen Algorithmen. Baum-Welch läuft im Training.

Gaussian vs. Discrete Emission HMM.

Zwei Hauptvarianten für Finanzanwendungen:

Gaussian HMM: jede Zustand emittiert Returns aus einer Normalverteilung mit zustands-spezifischem Mittelwert und Varianz. Klassische Wahl für Marktreturns. Schwäche: Returns sind nicht normalverteilt — fat tails werden unterschätzt, was zu instabilen State-Zuweisungen in Krisen führt.

Discrete HMM: Observations werden diskretisiert (z. B. Returns in Buckets), Emissions sind Multinomial. Robuster gegenüber Ausreißern, verliert aber Information. Funktioniert gut, wenn Sie ohnehin diskrete Features bauen (z. B. „Volatility-Tier 1–5“).

Gaussian Mixture HMM: Kompromiss — jeder Zustand emittiert aus einer Mischung von Gaussians. Fängt fat tails besser ab, hat aber mehr Parameter und neigt stärker zu Overfitting.

Anzahl Zustände wählen: BIC und AIC.

Die zentrale Frage: wie viele States? Die ehrliche Antwort: meistens 2 oder 3. Mehr ist in Trading-Daten selten statistisch gerechtfertigt.

Formal: Information-Criteria. BIC = −2·log-likelihood + k·log(n), wobei k die Parameteranzahl und n die Beobachtungszahl ist. AIC = −2·log-likelihood + 2·k. BIC bestraft Komplexität stärker → tendiert zu wenigeren States, was in Trading meist die richtige Wahl ist.

from hmmlearn.hmm import GaussianHMM
import numpy as np

returns = sp500.pct_change().dropna().values.reshape(-1, 1)
scores = {}
for n in [2, 3, 4, 5]:
    model = GaussianHMM(n_components=n, covariance_type="full",
                        n_iter=1000, random_state=42)
    model.fit(returns)
    n_params = n*n + 2*n - 1  # transitions + means + vars
    bic = -2 * model.score(returns) + n_params * np.log(len(returns))
    scores[n] = bic

print(scores)  # niedrigster BIC = bestes Modell

In meinen Tests auf S&P-Daten gewinnt fast immer n=2 oder n=3. n=5 sieht in der Log-Likelihood besser aus, wird aber von BIC für die zusätzlichen Parameter abgestraft — zu Recht, denn out-of-sample sind die zusätzlichen States nicht stabil.

Look-Ahead-Bias: der häufigste HMM-Fehler.

Der mit Abstand kritischste Punkt. Ein HMM, das auf die gesamte Historie gefittet wird, kennt die Zukunft. Wenn Sie dann „rückblickend“ feststellen, dass Regime 1 ein Bull-Markt war: ja, weil das Modell die ganze Sequenz gesehen hat und die States so allokiert hat, dass es passt.

Im echten Backtest müssen Sie das Modell rollend trainieren: bei jedem Trade-Zeitpunkt t nur Daten bis t verwenden. Das ist rechenintensiv, aber unverzichtbar. Zusätzlich: Online-Decoding mit Forward-Algorithm, nicht Viterbi auf der Gesamtsequenz — letzteres baut Konsistenz in Vergangenheits-States ein, die zur Live-Zeit noch nicht bekannt war.

Praktisch: trainieren Sie das HMM einmal pro Monat oder Quartal neu auf einem expandierenden oder rolling Fenster, und decodieren Sie online über Forward-Probabilities. Alles andere ist Selbstbetrug.

hmmlearn vs. eigene Implementation.

Für 95 % der Anwendungen reicht hmmlearn. Es ist gut getestet, hat einen stabilen API, unterstützt Gaussian, GMM und Multinomial Emissions. Eigene Implementation lohnt nur, wenn Sie nicht-standard Emissions brauchen (z. B. multivariate Student-t, zustandsabhängige Autoregressive-Strukturen).

Für Multi-Asset-Setups schaue ich gelegentlich auf pomegranate, das auch Bayesian HMM mit MCMC kann — interessant, wenn Sie posterior-Unsicherheit ernst nehmen wollen. Für den produktiven Live-Einsatz aber: hmmlearn, einfach, gut gewartet.

Anwendung: Bull/Bear/Sideways auf S&P 500.

Klassische Anwendung: drei States auf täglichen S&P-Returns. Empirisch ergibt sich typischerweise:

Auffällig: die States sind primär volatilitäts-getrieben, weniger direktional. Der „Bear-State“ ist eigentlich ein High-Vola-State, der tendenziell mit fallenden Märkten korreliert. Das ist eine wichtige Erkenntnis: wer HMM-Output als „Bull-Signal“ interpretiert, baut implizit einen Vola-Filter — und der geht einfacher.

Trading-Signal aus State-Probabilities.

Statt harter State-Zuweisung via Viterbi: nutzen Sie die posterior-Wahrscheinlichkeit jedes States. Ein typisches Setup:

Soft-Signale glätten Übergänge und reduzieren die Anzahl der Trigger-Flips. Im Live-Betrieb ist das wertvoller als jede zusätzliche State-Granularität.

Caveat: HMM-States sind oft volatilitäts-basiert.

Wenn Sie die State-Mittelwerte vs. State-Varianzen plotten, sehen Sie: die Unterscheidung zwischen States kommt primär aus σ, nicht aus μ. Das hat zwei Konsequenzen:

  1. Sie könnten denselben Filter mit einem simplen rolling-Volatilitäts-Quantil bauen — mit weniger Code, weniger Parametern, mehr Robustheit.
  2. HMM-Signale taugen besser für Risk-Management (Allokation hoch/runter) als für Direction (long/short).

HMM vs. einfache Vola-Filter: ein ehrlicher Vergleich.

Ich habe in mehreren Projekten denselben Equity-Curve-Smoothing-Effekt mit (a) HMM und (b) einem simplen Regime-Filter „60-Tage-Vol > 252-Tage-Median + 0.5σ" verglichen. Ergebnis: in der Mehrzahl der Fälle war der einfache Filter out-of-sample gleich gut oder besser. Bei deutlich geringerer Komplexität.

Der einzige Bereich, in dem HMMs systematisch gewinnen: wenn Sie mehrdimensionale Beobachtungen einbinden (Returns + VIX + Credit-Spreads + Term-Structure-Slope). Hier kann ein HMM Joint-Dynamiken kapturen, die ein eindimensionaler Vola-Filter verpasst. Aber das setzt voraus, dass die zusätzlichen Dimensionen sauberes, nicht-redundantes Signal tragen — was seltener der Fall ist, als man hofft.

Meine Praxis.

HMM setze ich in Kundenprojekten nur ein, wenn (a) einfache Regime-Filter nachweislich nicht ausreichen und (b) Mehrdimensionalität der Beobachtungen gerechtfertigt ist. Das ist eher die Ausnahme. Wo HMM ins System kommt, läuft es immer rollend trainiert, mit Forward-Probabilities als Soft-Signal, und nie als alleiniger Trade-Trigger, sondern als Allokations-Modulator.

Wer mit „HMM löst Regime-Detection“ startet, baut meist Komplexität auf, die er später nicht mehr kontrolliert. Starten Sie mit dem einfachen Filter. Bauen Sie HMM nur, wenn Sie konkret zeigen können, was es zusätzlich liefert.

Stand: Mai 2026, überarbeitet Oktober 2026. Angaben zu Produkten, Preisen, Gesetzen und Fristen können sich seitdem geändert haben; maßgeblich sind die aktuellen Angaben der Anbieter und Behörden.

Sie wollen Regime-Detection in Ihrem Setup richtig — ohne Overfitting? Unverbindlich anfragen — ich zeige Ihnen, was bei Ihren Daten wirklich trägt. Mehr zu meinem Angebot: Trading-Systeme entwickeln lassen.