下面给出计算隐马尔科夫模型的编程代码:
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)

最新文章

  1. python学习之路 第四天
  2. 【转】HiveQL:对数据定义的学习
  3. node.js 简介
  4. Struts2(六):ResultType
  5. jsp打印页面 js代码
  6. java中throw和throws的区别
  7. [codeforces 325]B. Stadium and Games
  8. P1574: [Usaco2009 Jan]地震损坏Damage
  9. tomcat+JNDI+spring 的配置问题
  10. OpenJudge/Poj 1979 Red and Black / OpenJudge 2816 红与黑
  11. malloc()与calloc差别
  12. Matlab 符号运算
  13. POJ 2774 最长公共子串
  14. MySQL my.cnf 参数说明
  15. SQLServer 错误: 15404,无法获取有关 Windows NT 组 用户
  16. 一览Django框架(转载)
  17. 中国 A 股纳入 MSCI
  18. 洛谷P4456 交错序列[CQOI2018] dp+数论
  19. MySQL 基础 查询
  20. 关于softmax、argmax、softargmax

热门文章

  1. sed 用法
  2. wordpress定时发布失败Missed Schedule解决方法
  3. template-web.js 自定义过滤器
  4. Eclipse中将java类打成jar包形式运行
  5. diffy 方便的bug 以及流量测试系统
  6. Linux 系统管理——系统安全及应用
  7. Android Studio软件技术基础 —Android项目描述---1-类的概念-android studio 组件属性-+标志-Android Studio 连接真机不识别其他途径
  8. [CMS]凡诺cms 2.1文件包含
  9. [Gamma阶段]第十次Scrum Meeting
  10. 冰多多团队-第八次Scrum例会