Regime Detection: Market States and Transitions
Module: Fintech AI | Difficulty: Advanced
Market Regimes
- Bull: High returns, low volatility
- Bear: Negative returns, high volatility
- Sideways: Low returns, low volatility
Hidden Markov Model
Regime-Dependent Strategy
import numpy as np
from hmmlearn import hmm
class RegimeDetector:
def __init__(self, n_regimes=3):
self.model = hmm.GaussianHMM(n_components=n_regimes)
def fit(self, returns, volatility):
X = np.column_stack([returns, volatility])
self.model.fit(X)
def predict(self, returns, volatility):
X = np.column_stack([returns, volatility])
return self.model.predict(X)
def get_regime_stats(self, returns, regimes):
stats = {}
for r in np.unique(regimes):
mask = regimes == r
stats[r] = {
'mean_return': returns[mask].mean(),
'volatility': returns[mask].std(),
'frequency': mask.mean()
}
return stats
Research Insight: Regime-aware models outperform static models by 30-50% in Sharpe ratio. The key challenge is that regimes are not directly observable and must be inferred. The transition matrix captures the persistence of regimes, which is crucial for strategy timing.