查看“使用HMM建模股票价格波动”的源代码
←
使用HMM建模股票价格波动
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
==原理== HMM的原理参考[http://wiki.swarma.net/index.php/HMM%E9%9A%90%E6%80%A7%E9%A9%AC%E5%8F%AF%E5%A4%AB%E6%A8%A1%E5%9E%8B 这里] 使用HMM拟合股票市场数据实验参考[http://cs229.stanford.edu/proj2009/ShinLee.pdf 这篇]论文 ==准备数据== <syntaxhighlight lang="python"> import datetime import numpy as np import matplotlib.pyplot as plt from matplotlib.finance import quotes_historical_yahoo from matplotlib.dates import YearLocator, MonthLocator, DateFormatter from sklearn.hmm import GaussianHMM # parepare data date1 = datetime.date(1995, 1, 1) # start date date2 = datetime.date(2012, 1, 6) # end date # get quotes from yahoo finance quotes = quotes_historical_yahoo("INTC", date1, date2) #data: #Date Open Close High Low Volume # unpack quotes dates = np.array([q[0] for q in quotes], dtype=int) close_v = np.array([q[2] for q in quotes]) volume = np.array([q[5] for q in quotes])[1:] # take diff of close value # this makes len(diff) = len(close_t) - 1 # therefore, others quantity also need to be shifted diff = close_v[1:] - close_v[:-1] dates = dates[1:] close_v = close_v[1:] # pack diff and volume for training X = np.column_stack([diff, volume]) #plt.plot(close_v,volume,"bo") </syntaxhighlight> ==拟合模型== <syntaxhighlight lang="python"> #fit Gaussian HMM n_components = 5 # make an HMM instance and execute fit model = GaussianHMM(n_components, covariance_type="diag", n_iter=1000) model.fit([X]) # predict the optimal sequence of internal hidden state hidden_states = model.predict(X) </syntaxhighlight> ==打印模型训练的结果并绘图== <syntaxhighlight lang="python"> # print trained parameters and plot print(np.round(model.transmat_,2)) print("means and vars of each hidden state") for i in range(n_components): print("%dth hidden state" % i) print("mean = ", model.means_[i]) print("var = ",np.diag(model.covars_[i]) ) print() years = YearLocator() # every year months = MonthLocator() # every month yearsFmt = DateFormatter('%Y') fig = plt.figure() ax = fig.add_subplot(111) for i in range(n_components): # use fancy indexing to plot data in each state idx = (hidden_states == i) ax.plot_date(dates[idx], close_v[idx], 'o', label="%dth hidden state" % i) # format the figure ax.legend() ax.xaxis.set_major_locator(years) ax.xaxis.set_major_formatter(yearsFmt) ax.xaxis.set_minor_locator(months) ax.autoscale_view() ax.fmt_xdata = DateFormatter('%Y-%m-%d') ax.fmt_ydata = lambda x: '$%1.2f' % x ax.grid(True) fig.autofmt_xdate() #plt.plot() </syntaxhighlight> ==HMM模型拟合== [[File:stockmarket_HMM_1.png|400px]] [[category:旧词条迁移]]
返回至
使用HMM建模股票价格波动
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
集智百科
集智主页
集智斑图
集智学园
最近更改
所有页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息