Back to Community
Hidden Markov Model (HMM)

Hi guys ,

I'm a beginner in HMM ...I've read that It makes a Detection Regime. First of all , what is a detection regime meaning ?

I've read that It prevents my algorithm from high volatility and thus It doesn't trade on it . So it is a way to handle better Money Management.

import pandas as pd  
import pandas_datareader as web

data = web.DataReader("^GSPC","yahoo",start = "2004-11-19",end = "2018-11-19")  

rets = data['Close'].pct_change()[1:]  
volume = data['Volume'][1:]  
dates = data.index[1:]  
close_v = volume

from hmmlearn import hmm  
import matplotlib.pyplot as plt

model = hmm.GaussianHMM(n_components=2, covariance_type="full", n_iter=1000)

import numpy as np

X = np.column_stack([rets, np.log(volume)])  
hidden_states = model.predict(X)

from matplotlib import cm

def plot_in_sample_hidden_states(hmm_model, df):  
    Plot the adjusted closing prices masked by  
    the in-sample hidden states as a mechanism  
    to understand the market regimes.  
    # Predict the hidden states array  
    hidden_states = hmm_model.predict(X)  
    # Create the correctly formatted plot  
    fig, axs = plt.subplots(  
        sharex=True, sharey=True  
    colours = cm.rainbow(  
        np.linspace(0, 1, hmm_model.n_components)  
    for i, (ax, colour) in enumerate(zip(axs, colours)):  
        mask = hidden_states == i  
            ".", linestyle='none',  
        ax.set_title("Hidden State #%s" % i)  

plot_in_sample_hidden_states(model, data)  

I've taken the code of this publication :

I got an error in the last line as following : "Boolean index has wrong length: 3524 instead of 3525"

Also , I'm working on Jupyter not QUANTOPIAN