下面给出计算隐马尔科夫模型的编程代码:
from hmmlearn.hmm import GaussianHMM
import datetime
import numpy as np
from matplotlib import cm, pyplot as plt
import matplotlib.dates as dates
import pandas as pd
import seaborn as sns#导入模块

beginDate = '
endDate = '
data=DataAPI.MktIdxdGet(ticker=")
data1=DataAPI.FstTotalGet(exchangeCD=u"XSHE",beginDate=beginDate,endDate=end
Date,field=[")#深圳交易所融资融券信息,'tradeval'是指当日 融资融券余额
data2=DataAPI.FstTotalGet(exchangeCD=u"XSHG",beginDate=beginDate,endDate=end
Date,field=[")#上海交易所融资融券信息,'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 in range(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 in range(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_

import xlwt
import xlrd
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':logReturn
5,'volume':volume,'zstate':hidden_states}).set_index('tradeDate')
plt.figure(figsize=(15, 8))
plt.xlabel('time')
plt.ylabel('earninigs multiplier')
for i in range(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)

隐马尔科夫模型的Python3实现代码的更多相关文章

  1. 隐马尔科夫模型 介绍 HMM python代码

    #HMM Forward algorithm #input Matrix A,B vector pi import numpy as np A=np.array([[0.5,0.2,0.3],[0.3 ...

  2. 隐马尔科夫模型python实现简单拼音输入法

    在网上看到一篇关于隐马尔科夫模型的介绍,觉得简直不能再神奇,又在网上找到大神的一篇关于如何用隐马尔可夫模型实现中文拼音输入的博客,无奈大神没给可以运行的代码,只能纯手动网上找到了结巴分词的词库,根据此 ...

  3. HMM基本原理及其实现(隐马尔科夫模型)

    HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态 ...

  4. 基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    文章目录 1. 1. 摘要 2. 2. Map-Matching(MM)问题 3. 3. 隐马尔科夫模型(HMM) 3.1. 3.1. HMM简述 3.2. 3.2. 基于HMM的Map-Matchi ...

  5. 隐马尔科夫模型HMM学习最佳范例

    谷歌路过这个专门介绍HMM及其相关算法的主页:http://rrurl.cn/vAgKhh 里面图文并茂动感十足,写得通俗易懂,可以说是介绍HMM很好的范例了.一个名为52nlp的博主(google ...

  6. HMM 自学教程(四)隐马尔科夫模型

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  7. HMM隐马尔科夫模型

    这是一个非常重要的模型,凡是学统计学.机器学习.数据挖掘的人都应该彻底搞懂. python包: hmmlearn 0.2.0 https://github.com/hmmlearn/hmmlearn ...

  8. 隐马尔科夫模型(HMM)的概念

    定义隐马尔科夫模型可以用一个三元组(π,A,B)来定义:π 表示初始状态概率的向量A =(aij)(隐藏状态的)转移矩阵 P(Xit|Xj(t-1)) t-1时刻是j而t时刻是i的概率B =(bij) ...

  9. 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码

    上篇介绍了隐马尔科夫模型 本文给出关于问题3解决方法,并给出一个例子的python代码 回顾上文,问题3是什么, 下面给出,维比特算法(biterbi) algorithm 下面通过一个具体例子,来说 ...

随机推荐

  1. 使用tensorflow时,关于GPU的设置

    查看显卡使用情况: nvidia-smi 设置tensorflow按需分配资源: import os os.environ["CUDA_DEVICE_ORDER"] = " ...

  2. Java检查异常、非检查异常、运行时异常、非运行时异常的区别

    Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类. Java的异常(Exception和Error)分为检查异常和非检查的异常. 其 ...

  3. 为什么 JVM 不用 JIT 全程编译?

    考虑到跨平台,所以无法使用AOT: 考虑到执行效率,所以无法全部使用JIT: 编译技术大约分为两种,一种AOT,只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中:另一种是 ...

  4. CF379C-New Year Ratings Change

    https://www.luogu.org/problemnew/show/CF379C 一道水题,折腾了我好久! 解题: 先排序,从小到大挨个满足客户,把最终rating放进集合里,判断是否已经给出 ...

  5. docker 清理无用的卷

    docker  system prune 对于卷的清理不够彻底 题外话:docker volume ls查看当前卷列表 使用如下命令可以清理不用的卷 docker volume prune -f 强制 ...

  6. k-mean

    import numpy as np from k_initialize_cluster import k_init np.random.seed() class YOLO_Kmeans: def _ ...

  7. 【C/C++】指针

    指针定义 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,必须在使用指针存储其他变量地址之前,对其进行声明.指针变量声明的一般形式为: type *var-na ...

  8. [教程]Ubuntu16.04安装TeX Live

    [教程]Ubuntu16.04安装TeX Live step 1 戳这里下载镜像 (只需要下载texlive.iso) 在终端输入 sudo apt-get install perl-tk step ...

  9. js中call,apply,bind方法的用法

    call .apply.和bind 以上这三个方法都是js function函数当中自带的方法,用来改变当前函数this的指向. call()方法 语法格式: fun.call(thisArg[,ar ...

  10. RookeyFrame 整个运行流程

    准备开始整理一下这个项目的整体框架,很久没研究这个框架了,心里还是念着的,今儿乘有时间弄一下. 一丁点建议: 先自己一个一个的搬作者的类库,这样就能很好的理解作者的项目结构 每搬一个类库都运行一下哦, ...