如何利用利用matlab预测股市未来一周的上证指数波浪预测大图

1133人阅读
神经网络学习笔记(16)
上证指数是反映上海证券交易所挂牌股票总体走势的统计指标。上海证券交易所股票指数的发布几乎是和股市行情的变化相同步的,它是我国股民和证券从业人员研判股票价格变化趋势必不可少的参考依据。本文通过分析1991年至今近6000个交易日的开盘指数,来预测未来5天内的开盘指数变化趋势和变化范围。
一、原理介绍
人类在处理大量复杂信息时.由于人类认知能力有限,往往会把大量复杂信息按其各自特征和性能将其划分为若干较为简单的块.每个被分出来的块就被看成是一个粒。实际上,粒就是指一些个体通过不分明关系、相似关系、邻近关系或功能关系等所形成的块。这种处理信息的过程.称信息粒化。如商场的货物多种多样,如果不按某种方式摆放就很难进行有效管理.于是人们按货架所摆放货物的种类、体积、等级等将商场划分为若干块并以此安排货架,其每一块将摆放同一种类或体积相似或同一等级的货物。这里所说的块就是粒的概念,划分粒的过程称为信息粒。
预测准确的开盘指数并不现实,所以对趋势的预测就尤为重要,利用粒计算可以计算出未来时间段内的最大值、最小值、以及平均值,从而预测股票走势.。
:支持向量机,用于对粒计算的三个指数Low,R,Up(分别代表最小值,平均值,最大值)回归计算。
二、计算流程
1、导入数据,szzs_open&5668*1&
2、用FIG_D函数对数据进行模糊信息粒化,本文采用5个数据为一个“窗”,所以生成的3个矩阵Low,R,Up的大小均为&1*1133&
3、用SVM对粒化数据进行预测。注意粒化后有3个属性,要分别预测。
4、给出上证指数开盘指数的变化趋势和变化范围。
三、代码实现
1、导入数据并可视化
&span style=&font-size:12&&%% 清空环境变量
%% 原始数据的提取
% 载入测试数据上证指数(-)
% 数据是一个5668*14的double型的矩阵,每一行表示每一天的上证指数
% 14列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额.涨数,跌数,MA1~MA6
load szzs.
% 提取数据
ts = szzs_
time = length(ts);
% 画出原始上证指数的每日开盘数
plot(ts,'LineWidth',2);
title('上证指数的每日开盘数(-)','FontSize',12);
xlabel('交易日天数(-)','FontSize',12);
ylabel('开盘数','FontSize',12);
% print -dtiff -r600
2、对原始数据进行粒化
%% 对原始数据进行模糊信息粒化
win_num = floor(time/5);
tsx = 1:win_
tsx = tsx';
[Low,R,Up]=FIG_D(ts','triangle',win_num);
3、数据预处理,将Low归一化
% 数据预处理,将Low进行归一化处理
% mapminmax为matlab自带的映射函数
[low,low_ps] = mapminmax(Low);
low_ps.ymin = 100;
low_ps.ymax = 500;
% 对Low进行归一化
[low,low_ps] = mapminmax(Low,low_ps);
% 对low进行转置,以符合libsvm工具箱的数据格式要求
low = low';
4、在训练SVM网络之前需要先设置网络参数c和g,此处用交叉验证方法选择,即SVMcgForRegress函数,分两次在给定的空间上搜寻最佳c和g,赋给bestc,bestg。
% 选择回归预测分析中最佳的SVM参数c&g
% 首先进行粗略选择
[bestmse,bestc,bestg] = SVMcgForRegress(low,tsx,-10,10,-10,10,3,1,1,0.1,1);
% 打印粗略选择结果
disp('打印粗略选择结果');
str = sprintf( 'SVM parameters for Low:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);
% 根据粗略选择的结果图再进行精细选择
[bestmse,bestc,bestg] = SVMcgForRegress(low,tsx,-4,8,-10,10,3,0.5,0.5,0.05,1);
5、用上面得到的bestc和bestg作为参数,训练SVM网络。
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.1'];
low_model = svmtrain(low, tsx, cmd);7、预测Low
[low_predict,low_mse,dec_value_low] = svmpredict(low,tsx,low_model);
low_predict = mapminmax('reverse',low_predict,low_ps);
predict_low = svmpredict(1,win_num+1,low_model);
predict_low = mapminmax('reverse',predict_low,low_ps);
predict_low8、让我们看看误差
error = low_predict - Low';
plot(error,'ro');
title('误差(predicted data-original data)','FontSize',12);
xlabel('粒化窗口数目','FontSize',12);
ylabel('误差量','FontSize',12);
嗯,预测结果还不错,下面按上面的方法把另两个参数R和Up也预测了,我就一并写了。
%% 利用SVM对R进行回归预测
% 数据预处理,将R进行归一化处理
% mapminmax为matlab自带的映射函数
[r,r_ps] = mapminmax(R);
r_ps.ymin = 100;
r_ps.ymax = 500;
% 对R进行归一化
[r,r_ps] = mapminmax(R,r_ps);
% 画出R归一化后的图像
plot(r,'r*');
title('r归一化后的图像','FontSize',12);
% 对R进行转置,以符合libsvm工具箱的数据格式要求
r = r';
% 选择回归预测分析中最佳的SVM参数c&g
% 首先进行粗略选择
[bestmse,bestc,bestg] = SVMcgForRegress(r,tsx,-10,10,-10,10,3,1,1,0.1);
% 打印粗略选择结果
disp('打印粗略选择结果');
str = sprintf( 'SVM parameters for R:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);
% 根据粗略选择的结果图再进行精细选择
[bestmse,bestc,bestg] = SVMcgForRegress(r,tsx,-4,9,-10,10,3,0.5,0.5,0.05);
% 打印精细选择结果
disp('打印精细选择结果');
str = sprintf( 'SVM parameters for R:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.1'];
r_model = svmtrain(r, tsx, cmd);
[r_predict,r_mse,dec_value2] = svmpredict(r,tsx,r_model);
r_predict = mapminmax('reverse',r_predict,r_ps);
predict_r = svmpredict(1,win_num+1,r_model);
predict_r = mapminmax('reverse',predict_r,r_ps);
%% 对于R的回归预测结果分析
plot(R,'b+');
plot(r_predict,'r*');
legend('original r','predict r',2);
title('original vs predict','FontSize',12);
error = r_predict - R';
plot(error,'ro');
title('误差(predicted data-original data)','FontSize',12);
%% 利用SVM对Up进行回归预测
% 数据预处理,将up进行归一化处理
% mapminmax为matlab自带的映射函数
[up,up_ps] = mapminmax(Up);
up_ps.ymin = 100;
up_ps.ymax = 500;
% 对Up进行归一化
[up,up_ps] = mapminmax(Up,up_ps);
% 画出Up归一化后的图像
plot(up,'gx');
title('Up归一化后的图像','FontSize',12);
% 对up进行转置,以符合libsvm工具箱的数据格式要求
up = up';
% 选择回归预测分析中最佳的SVM参数c&g
% 首先进行粗略选择
[bestmse,bestc,bestg] = SVMcgForRegress(up,tsx,-10,10,-10,10,3,1,1,0.5);
% 打印粗略选择结果
disp('打印粗略选择结果');
str = sprintf( 'SVM parameters for Up:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);
% 根据粗略选择的结果图再进行精细选择
[bestmse,bestc,bestg] = SVMcgForRegress(up,tsx,-4,9,-10,10,3,0.5,0.5,0.2);
% 打印精细选择结果
disp('打印精细选择结果');
str = sprintf( 'SVM parameters for Up:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.1'];
up_model = svmtrain(up, tsx, cmd);
[up_predict,up_mse,dec_value3] = svmpredict(up,tsx,up_model);
up_predict = mapminmax('reverse',up_predict,up_ps);
predict_up = svmpredict(1,win_num+1,up_model);
predict_up = mapminmax('reverse',predict_up,up_ps);
predict_up
%% 对于Up的回归预测结果分析
plot(Up,'b+');
plot(up_predict,'r*');
legend('original up','predict up',2);
title('original vs predict','FontSize',12);
error = up_predict - Up';
plot(error,'ro');
title('误差(predicted data-original data)','FontSize',12);
9、至此,3个参数已经都预测出来了,分别是predict_low,predict_r,predict_up,command Window已经满了,我们在Workspace分别点开看看这三个数据
predict_low = 2210.6
predict_r = 2257.7
predict_up = 2285.8
也就是说在未来的5天内,上证开盘指数会在5.8范围内。
因为我们的数据有5668个,5668%5 = 3,所以最后三天的数据是没有计算在内的,这个预测是<span style="color:#ff-8-11~的预测数据。
我们把前5天和后5天的预测数据和实际数据都列出来看看(9,10日为周末,不开盘)
模糊粒子描述
实际开盘数
[Low,R.Up]=[2.9,2226.8]
模糊粒子描述
实际开盘数
[Low,R.Up]=[7.7,2285.8]
从图上我们可以看出,
1、实际开盘指数都在Low和Up之间,说明范围预测准确。
2、两个时段的R分别是57.7,说明要开盘指数上涨,从已开的数据来看,前后5天相比指数整体是上涨的,预测正确。
此种方法在数&#20540;上实现了对开盘指数的预测,
但开盘指数会受市场因素,舆论因素,政策因素的影响,此模型未考虑这些因素,以后将加入,使模型更准确。
SVM&#43;粒计算不失为预测的新途径。
(PS:放出8月18~8月22的预测数据,以供检验[Low,R.Up]=[2.0,2316.2] ,看来是牛市哦^_^~)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:53337次
排名:千里之外
原创:37篇
评论:31条
文章:12篇
阅读:15443
(1)(3)(2)(2)(4)(3)(12)(4)(16)基于MATLAB的股票估价模型系统_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于MATLAB的股票估价模型系统
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩26页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢基于MATLAB的自回归移动平均模型_ARMA_在股票预测中的应用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于MATLAB的自回归移动平均模型_ARMA_在股票预测中的应用
上传于|0|0|文档简介
&&基于MATLAB的自回归移动平均模型_ARMA_在股票预测中的应用
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 2017上证指数预测 的文章

 

随机推荐