前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HMM模型在量化交易中的应用(R语言版)

HMM模型在量化交易中的应用(R语言版)

作者头像
量化投资与机器学习微信公众号
发布2018-01-29 17:29:49
2.8K0
发布2018-01-29 17:29:49
举报

马尔科夫性

  • 如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程。
  • 函数形式:X(t+1) = f( X(t) )

HMM由来

  • 物理信号是时变的,参数也是时变的,一些物理过程在一段时间内是可以用线性模型来描述的,将这些线性模型在时间上连接,形成了Markov链。
  • 因为无法确定物理过程的持续时间,模型和信号过程的时长无法同步。因此Markov链不是对时变信号最佳、最有效的描述。
  • 针对以上问题,在Markov链的基础上提出了HMM。既解决了短时信号的描述,又解决了时变模型间的转变问题。

RHmm包介绍

应用(训练样本是2007-2009年)

黑的是HMM模型的收益,红的是基准。

HMM在波动率市场中的应用

输入是:ATR(平均真实波幅)、log return

用的是depmixS4包

模型的输出并不让人满意。

HS300测试

去除数据比较少的9支,剩291支股票。

–训练数据:上证指数(2007:2009) –回测数据:沪深300成分股( 2010:2015)

平均下来收益率比银行里的一些理财(一般5-6%)好一些。但是人家的风险比这个的低啊!而且前面几年的都一直亏损状态,后面回本靠的是2013年底开始的一波牛市。 观众:老王你(模型)不行啊! 老王:heng!!! 男人不能说‘不行’的 !

那么问题来了,如何改进HMM模型?

更一般来说一个模型如何改进?(一个模型包括:输入、样本筛选/过滤、拟合参数、拟合函数、模型的参数、目标函数等等等等。这么多东西需要测试, oh my god!)

改进

这里还是只讲HMM模型吧!

HMM的问题2:给定观察序列O=O1,O2,…OT以及模型λ,如何选择一个对应的状态序列S = q1,q2,…qT,使得S能够最为合理的解释观察序列O?

看看上证的Hidden states,和对应的收益率

好像和预期不相符!

应用到沪深300成分股试试。

训练数据:上证指数的2007~2009

测试数据:沪深300成份股2010~2015

交易规则:longmode在样本内收益最大对应的隐状态 & shortmode在样本内收益最大对应的隐状(交集)

测试50次(舍弃年化收益率>10的)

收益率和夏普率还能接受,但是最大回撤还是不能令人满意!!!

(注:横向的数据没有意义!)

同时,如何避免使用某一次比较差的模型?!

这里老王使用的是投票模式。(同时使用50个HMM模型)

先看看数据:

红圈内的数字表示2010-01-12,有4个HMM投票给600005。

这样就可以使用了2种方案。

第一,每一行的投票结果0-1化权重,然后分配资金投资。

结果如下:

(注:红线是上证指数的收益,黑线是测试的收益。下同)

第二,入选投票结果>n票(n随意!),然后在每天入选的股票中平均分配资金

(注:0票就相当于平均分配资金在投票>0的股票上)

n=5

n=15

50个HMM模型里10-18个投票,结果都挺理想了!

同样,回撤比较大的问题还是不能避免。看来需要寻找其他的方式来避免大的回撤。

(当然,需要更多的测试,比如在全股票市场或者在商品/期货/外汇/黄金上,或者更长的数据上测试)

(ps:在291支股票上测试一次HMM大概需要8-10分钟,50次差不多要一个后半夜!!!)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HMM在波动率市场中的应用
  • 输入是:ATR(平均真实波幅)、log return
  • 用的是depmixS4包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档