下面给出计算隐马尔科夫模型的编程代码:from hmmlearn.hmm importGaussianHMMimportdatetimeimportnumpy as npfrom matplotlib importcm, pyplot as pltimportmatplotlib.dates as datesimportpandas as pdimport seaborn as sns#导入模块

beginDate= '20100401'endDate= '20160401'data=DataAPI.MktIdxdGet(ticker='000001',beginDate=beginDate,endDate=endDate,field=['tradeDate','closeIndex','lowestIndex','highestIndex','turnoverVol'],pandas="1")

data1=DataAPI.FstTotalGet(exchangeCD=u"XSHE",beginDate=beginDate,endDate=end

Date,field=['tradeVal'],pandas="1")#深圳交易所融资融券信息,'tradeval'是指当日 融资融券余额

data2=DataAPI.FstTotalGet(exchangeCD=u"XSHG",beginDate=beginDate,endDate=end

Date,field=['tradeVal'],pandas="1")#上海交易所融资融券信息,'tradeval'是指当日 融资融券余额

tradeVal = data1 + data2 #数据汇总

tradeDate = pd.to_datetime(data['tradeDate'][5:])

volume= data['turnoverVol'][5:] #成交量

closeIndex = data['closeIndex']#收盘价

deltaIndex=(np.log(np.array(data['highestIndex']))-np.log(np.array(data['lowestIndex'])))[5:]

logReturn1= np.array(np.diff(np.log(closeIndex)))[4:]#取对数收益率

logReturn5=np.log(np.array(closeIndex[5:]))- np.log(np.array(closeIndex[:-5]))#5 日对数收益率

logReturnFst = (np.array(np.diff(np.log(tradeVal['tradeVal']))))[4:]

closeIndex= closeIndex[5:]#收盘价截取

from scipy import stats #To perform box-cox transformation

from sklearn import preprocessing #导入模块

boxcox_volume,lmbda = stats.boxcox(volume/100000000000)#Standardize the observation sequence distribution

rescaled_boxcox_volume=preprocessing.scale(boxcox_volume,axis=0, with_mean=True,

with_std=True, copy=False)#数据处理

boxcox_deltaIndex,lmbda =stats.boxcox(deltaIndex)#Standardize the observation sequence distribution

rescaled_boxcox_deltaIndex=preprocessing.scale(boxcox_deltaIndex, axis=0,

with_mean=True, with_std=True, copy=False)

X=np.column_stack([logReturn1,logReturn5,rescaled_boxcox_deltaIndex,rescaled_boxco

x_volume,logReturnFst])#数据整合#Make an HMM instance and execute fit

model=GaussianHMM(n_components=5,covariance_type="diag", n_iter=10000).fit([X])#Predict the optimal sequence of internal hidden state#计算模型

hidden_states = model.predict(X)#估计状态

print("Transition matrix")print(model.transmat_)print()#print("Means and vars of each hidden state")

for i inrange(model.n_components):print("{0}th hidden state".format(i))print("mean =", model.means_[i])print("var =", np.diag(model.covars_[i]))

plt.figure(figsize=(15, 8))

plt.title('hidden states')for i inrange(model.n_components):

idx= (hidden_states==i)

plt.plot_date(tradeDate[idx],closeIndex[idx],'.',label='%dth hidden state'%i,lw=1)

plt.legend()

plt.grid(True)

model.transmat_importxlwtimportxlrd

wb3=xlwt.Workbook()

wb3.add_sheet('first',cell_overwrite_ok=True)

ws_1=wb3.get_sheet(0)for r in range(model.transmat_.shape[0]): #行数

for c in range(model.transmat_.shape[1]): #列数

ws_1.write(r,c,model.transmat_[r,c])

wb3.save('文件夹 0/上证指数转移概率矩阵.xls')#整合数据

res=pd.DataFrame({'tradeDate':tradeDate,'logReturn1':logReturn1,'logReturn5':logReturn5,'volume':volume,'zstate':hidden_states}).set_index('tradeDate')

plt.figure(figsize=(15, 8))

plt.xlabel('time')

plt.ylabel('earninigs multiplier')for i inrange(model.n_components):

idx= (hidden_states==i)

idx= np.append(0,idx[:-1])#获得状态结果后第二天进行买入操作#fast factor backtest

df =res.logReturn1

res['sig_ret%s'%i] = df.multiply(idx,axis=0)

plt.plot(np.exp(res['sig_ret%s'%i].cumsum()),label='%dth hidden state'%i)

plt.legend()

plt.grid(1)

Python隐形马尔科夫实战_隐马尔科夫模型的Python3实现代码相关推荐

  1. HMM(马尔科夫过程及隐马尔科夫过程)

    转载地址(http://blog.csdn.net/xinzhangyanxiang/article/details/8522078) 学习概率的时候,大家一定都学过马尔科夫模型吧,当时就觉得很有意思 ...

  2. (需求实战_进阶_07)SSM集成RabbitMQ 订阅模式 关键代码讲解、开发、测试

    接上一篇:(企业内部需求实战_进阶_06)SSM集成RabbitMQ 订阅模式 关键代码讲解.开发.测试 https://gblfy.blog.csdn.net/article/details/104 ...

  3. python做马尔科夫模型预测法_隐马尔可夫模型的前向算法和后向算法理解与实现(Python)...

    前言 隐马尔可夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型. 马尔可夫模型理论与分析 参考<统计学习方法>这本书,书上已经讲得 ...

  4. python 隐马尔科夫_隐马尔可夫模型原理和python实现

    隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程.其难点是从可观察的参数中确定该过程的隐含参数. 隐马尔可夫模型注意包含以下参数 ...

  5. c++求解自行车慢速比赛问题_隐马尔可夫模型(模型推断五大问题)

    1.隐马尔科夫模型Learning问题是求解未知参数λ 2.隐马尔科夫模型Inference问题有五个:Decoding.Evaluation.Filtering.Smoothing.Predicti ...

  6. 马氏系列(马尔科夫过程、马尔科夫决策、隐马尔科夫模型)

    马尔科夫过程 马尔可夫链就是这样一个任性的过程,它将来的状态分布只取决于现在,跟过去无关! 具体内容参见:https://zhuanlan.zhihu.com/p/26453269 马尔科夫决策 也是 ...

  7. hmm 求隐藏序列_隐马尔可夫模型HMM

    以下内容来自刘建平Pinard-博客园的学习笔记,总结如下: 1 隐马尔可夫模型HMM 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别 ...

  8. 亚马逊 aws 指南 实战_减少您的AWS成本完整指南

    亚马逊 aws 指南 实战 Do you think your cloud costs are too high? I think most businesses can find savings i ...

  9. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

最新文章

  1. JSP简单练习-EL获取表单数据
  2. html百度蜘蛛跳转代码,php搜索引擎劫持,百度蜘蛛劫持,搜索引擎蜘蛛劫持原理及代码分享...
  3. 玩转Jquery中的动画效果(animate方法)
  4. C++的流输入和输出操作
  5. 还有那个bspider不知道哪里的飞鸽传书
  6. 图:图的邻接表创建、深度优先遍历和广度优先遍历代码实现
  7. 我的学习之路_第十七章_JavaUtils
  8. 如何做一个MySQL优良数据库_MySQL数据库如何做好优化
  9. 服务器存储满了进不去系统,解决PC常见问题 篇四十五:建议收藏!手贱升级进不去系统?两步简单恢复黑群晖!...
  10. C#:获取Web.config中数据库连接地址
  11. [读书笔记]密码文件总结
  12. vue 获取本地的json文件内容
  13. oracle 创建表格乱码,数据库导出excel表格是乱码怎么办-oracle 导出excel 乱码怎么办...
  14. 组策略设置计算机计划任务,使用组策略配置域中任务计划
  15. 电池测试系统连接服务器失败,服务器报电池故障
  16. 如何更好地吸收维生素矿物质?
  17. php写出个人所得税,PHP如何计算个人所得税
  18. Lotus notes问题与处理
  19. 一般来说仿制一个网站大概需要多少钱呢
  20. LOL开发者谈网游自动化测试:每天10万次

热门文章

  1. 检测SIM卡 sim1 或sim2 是有效卡
  2. 关于深度学习中concat和eltwise两种特征融合方式用处的猜想
  3. java float强制转换int类型_float型怎样强制转换成int型
  4. Antd form 表单提交数据获取
  5. php新闻系统面试题_php面试题库
  6. 智能马桶盖通水运行测试,快速连接器的作用不可小觑
  7. mysql时间戳格式转换日期格式字符串
  8. 公交车查询系统(20070719更新)
  9. 输入一个数组,将其逆序输出
  10. ubuntu 添加、删除用户,修改用户名称,修改主机名