下面拿A股市场来做检验。
模型的设定如下:
HMM模型的算法使用hmmlearn模块。简单介绍一下函数的各个参数意思。
以上。我们看到了六个状态的HMM模型输出的市场状态序列。需要注意的是:HMM模型只是能分离出不同的状态,具体对每个状态赋予现实的市场意义,是需要人为来辨别和观察的。
下面我们来用简单的timming策略来识别6种latent_state所带来的效果。
上图可以看出:
以上的意义归结是存在一定主观性的。因为HMM模型对输入的多维度观测变量进行处理后,只负责分出几个类别,而并不会定义出每种类别的实际含义。所以我们从图形中做出上述的判断。
我们根据模拟出来的隐藏状态,来进行择时。
策略是这样设计的:
我们来看一下收益效果:
鉴于卖空指数对散户来说没什么可操作性,我们单看能做多的A股市场。选择嘉实沪深300基金来复制沪深300指数。
策略是这样设计的:
鉴于研究模块自己搭伪回测算出来的收益曲线很难考虑到滑点、交易规则限制等各方面的要求,所以如下的策略回测只贴上最后的图。代码具体见策略。
我采取的方式是把研究模块得出的状态序列导出,导入到回测模块使用。
回测结果截图贴在这。回撤和收益都看起来很漂亮。虽然我也没太懂为什么跟可卖空的结果差不多= =,可能是单纯算收益率的伪回测不太准吧。第二是状态1(绿色)有涨有跌,卖空它也有亏钱的时候。