Python隐形马尔科夫实战_隐马尔科夫模型的Python3实现代码
下面给出计算隐马尔科夫模型的编程代码: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实现代码相关推荐
- HMM(马尔科夫过程及隐马尔科夫过程)
转载地址(http://blog.csdn.net/xinzhangyanxiang/article/details/8522078) 学习概率的时候,大家一定都学过马尔科夫模型吧,当时就觉得很有意思 ...
- (需求实战_进阶_07)SSM集成RabbitMQ 订阅模式 关键代码讲解、开发、测试
接上一篇:(企业内部需求实战_进阶_06)SSM集成RabbitMQ 订阅模式 关键代码讲解.开发.测试 https://gblfy.blog.csdn.net/article/details/104 ...
- python做马尔科夫模型预测法_隐马尔可夫模型的前向算法和后向算法理解与实现(Python)...
前言 隐马尔可夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型. 马尔可夫模型理论与分析 参考<统计学习方法>这本书,书上已经讲得 ...
- python 隐马尔科夫_隐马尔可夫模型原理和python实现
隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程.其难点是从可观察的参数中确定该过程的隐含参数. 隐马尔可夫模型注意包含以下参数 ...
- c++求解自行车慢速比赛问题_隐马尔可夫模型(模型推断五大问题)
1.隐马尔科夫模型Learning问题是求解未知参数λ 2.隐马尔科夫模型Inference问题有五个:Decoding.Evaluation.Filtering.Smoothing.Predicti ...
- 马氏系列(马尔科夫过程、马尔科夫决策、隐马尔科夫模型)
马尔科夫过程 马尔可夫链就是这样一个任性的过程,它将来的状态分布只取决于现在,跟过去无关! 具体内容参见:https://zhuanlan.zhihu.com/p/26453269 马尔科夫决策 也是 ...
- hmm 求隐藏序列_隐马尔可夫模型HMM
以下内容来自刘建平Pinard-博客园的学习笔记,总结如下: 1 隐马尔可夫模型HMM 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别 ...
- 亚马逊 aws 指南 实战_减少您的AWS成本完整指南
亚马逊 aws 指南 实战 Do you think your cloud costs are too high? I think most businesses can find savings i ...
- Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...
资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...
最新文章
- JSP简单练习-EL获取表单数据
- html百度蜘蛛跳转代码,php搜索引擎劫持,百度蜘蛛劫持,搜索引擎蜘蛛劫持原理及代码分享...
- 玩转Jquery中的动画效果(animate方法)
- C++的流输入和输出操作
- 还有那个bspider不知道哪里的飞鸽传书
- 图:图的邻接表创建、深度优先遍历和广度优先遍历代码实现
- 我的学习之路_第十七章_JavaUtils
- 如何做一个MySQL优良数据库_MySQL数据库如何做好优化
- 服务器存储满了进不去系统,解决PC常见问题 篇四十五:建议收藏!手贱升级进不去系统?两步简单恢复黑群晖!...
- C#:获取Web.config中数据库连接地址
- [读书笔记]密码文件总结
- vue 获取本地的json文件内容
- oracle 创建表格乱码,数据库导出excel表格是乱码怎么办-oracle 导出excel 乱码怎么办...
- 组策略设置计算机计划任务,使用组策略配置域中任务计划
- 电池测试系统连接服务器失败,服务器报电池故障
- 如何更好地吸收维生素矿物质?
- php写出个人所得税,PHP如何计算个人所得税
- Lotus notes问题与处理
- 一般来说仿制一个网站大概需要多少钱呢
- LOL开发者谈网游自动化测试:每天10万次