regime switch 简单来讲就是时间序列发生了结构性的变化,例子:牛市和熊市的切换就是regime switch。

理论最好的解释知乎上已经有了隐马尔科夫模型 - farewell的文章

其实隐性变量才是里面的那条链,然后通过Z到显性变量X进行转移。

然后《Advanced_Algorithmic_Trading》 中章节 (Hidden Markov Models)和(Market Regime Detection with Hidden Markov Models using QSTrader)也做了比较详细的解释。

前面一节用的R,后面这一节用了Python,可以借鉴。

注意一点就是,很多代码直接把所有历史数据代入模型,要注意有没有使用未来数据。这个我自己也还没有进行验证。

看python代码里面有这么一代,应该是没有用到未来数据的,但是regime switch总是有延迟的,这个东西可能没法避免,如果刚好延迟的节奏不好,可能会比没有filter更差

def determine_regime(self, price_handler, sized_order):
"""
Determines the predicted regime by making a prediction
on the adjusted closing returns from the price handler
object and then taking the final entry integer as
the "hidden regime state".
"""
returns = np.column_stack(
[np.array(price_handler.adj_close_returns)]
)
hidden_state = self.hmm_model.predict(returns)[-1]
return hidden_state

Comments

comments powered by Disqus