基于Bp神经网络的股票预测

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于神经网络的股票预测【摘要】:股票分析和预测是一个复杂的研究领域,本论文将股票技术分析理论与人工神经网络相结合,针对股票市场这一非线性系统,运用BP神经网络,研究基于历史数据分析的股票预测模型,同时,对单只股票短期收盘价格的预测进行深入的理论分析和实证研究。本文探讨了BP神经网络的模型与结构、BP算法的学习规则、权值和阈值等,构建了基于BP神经网络的股票短期预测模型,研究了神经网络的模式、泛化能力等问题。并且,利用搭建起的BP神经网络预测模型,采用多输入单输出、单隐含层的系统,用前五天的价格来预测第六天的价格。对于网络的训练,选用学习率可变的动量BP算法,同时,对网络结构进行了隐含层节点的优化,多次尝试,确定最为合理、可行的隐含层节点数,从而有效地解决了神经网络隐含层节点的选取问题。【abstract]Stockanalysisandforecastingisacomplexfieldofstudy.Thepaperwillmakeresearchonstockpredictionmodelbasedontheanalysisofhistoricaldata,usingBPneuralnetworkandtechnicalanalysistheory.Atthesametime,makingin-depththeoreticalanalysisandempiricalstudiesontheshort-termclosingpriceforecastsofsinglestock.Secondly,makingresearchonthemodelandstructureofBPneuralnetwork,learningrules,weightsofBPalgorithmandsoon,buildingastockshort-termforecastingmodelbasedontheBPneuralnetwork,relatedwiththemodelofneuralnetworkandtheabilityofgeneralization.Moreover,usingsystemofmultiple-inputsingle-outputandsinglehiddenlayer,toforecastthesixthdaypricebyBPneuralnetworkforecastingmodelstructured.ThenetworkoftrainingischosenBPalgorithmoftraingdx,whilemakingoptimizationonthenodenumbersofthehiddenlayerbyseveralattempts.Therebyresolveeffectivelytheproblemofit.【关键词】BP神经网络股票预测分析1.引言股票市场是一个不稳定的非线性动态变化的复杂系统,股价的变动受众多因素的影响。影响股价的因素可简单地分为两类,一类是公司基本面的因素,另一类是股票技术面的因素,虽然股票的价值是公司未来现金流的折现,由公司的基本面所决定,但是由于公司基本面的数据更新时间慢,且很多时候并不能客观反映公司的实际状况,采用适当数学模型就能在一定程度上实现对股价的预测。BP神经网络是一种模拟人脑神经网络结构从而具有一定的预测功能的数学模型,由于其具有很强的自学习能力自适应能力以及容错能力等优点,使它成为一种比较适合股票预测的方法。本文就采用此方法对股价趋势进行了分析。MATLAB所搭配的NeuralcNetworkToolbox,将神经网络领域研究的成果完整地覆盖,它以人工神经网络理论为基础,用MATLAB语言构造出典型神经网络的激活函数。另外,根据各种典型的修正网络权值的规则,加上网络的训练过程,用MATLAB编写出网络设计与训练的子程序,网络的设计者则可以根据需要去调用工具箱中有关神经网络的设计训练程序,使自己能够从繁琐的编程中解脱出来,集中精力去思考问题和解决问题,从而提高解题效率。2.BP神经网络算法、特点2.1BP神经网络算法BP网络的产生归功于BP算法的获得。BP算法属于δ算法,是一种有监督式的学习算法。其主要思想为:对于q个输入学习样本P1,P2……Pq,已知与其对应的输出样本为:T1,T2……Tq。学习的目的是用网络的实际输出A1,A2……Aq与目标矢量T1,T2……Tq之间的误差来修改其权值,使Ai(i=1,2……q)与期望的T尽可能地接近,即使网络输出层的误差平方和达到最小。它是通过连续不断地在相对于误差函数斜率下降的方向上,计算网络权值和偏差的变化而逐渐逼近目标的。每一次权值和偏差的变化都与网络误差的影响成正比,并以反向传播的方式传递到每一层的。BP算法由两部分组成,分别为信息的正向传递与误差的反向传播。在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态,如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播;通过网络将误差信号沿原来的连接通路反传回来,修改各层神经元的权值,直至达到期望目标,误差信号趋向最小。其具体的实现步骤如图所示。2.2BP神经网络在预测中的适用性基于神经网络本身的特点与优越性,本文选择BP神经网络用于股票预测应用研究。第一,具有自学习功能。自学习功能对于模型预测有特别重要的意义。未来的人工神经网络计算机将提供经济预测、市场预测、信用预测,其应用前途是很远大的。第二,容错能力强。网络中少量单元的局部缺损不会造成网络的瘫痪,也不会影响全局,它反映了神经网络的鲁棒性。神经网络带有高度并行处理信息的机制且具有高速的自学习、自适应能力,内部所包含的大量可调参数使得系统的灵活性更强。因此,神经网络很好的鲁棒性可以提高股票预测模型的适应性与通用性。第三,具有高速寻找优化解的能力。寻找一个复杂问题的优化解,往往需要很大的计算量,一个针对某问题而设计的神经网络,可以发挥计算机的高速运算能力,能很快找到优化解。这对提高模型的运算效率很有帮助。第四,可以充分逼近任意复杂的非线性关系。股票分析中的各个指标之间的关系并不十分明确,大多为非线性的。而神经网络能够逼近任意复杂的非线性关系,这就决定了神经网络的预测精度比其他的预测方法要高。而对股票预测来讲,预测精度无疑是非常重要的问题。第五,具有在新环境下的泛化能力,能不断接受新样本、新经验并不断调整模型,自适应能力强,具有动态特性。由于股票分析具有分行业、分阶段的特点,其评估结果的不确定性非常大。这就意味着需要针对不同的股票设立相应的预测模型,神经网络的这一特性正好满足这样的需求。然而BP神经网络也不是没有缺点。一是其工作的随机性较强,即使是同样的训练样本,相同的网络参数,多次运行生成的神经网络模型预测结果也有差别。因此要得到一个较好的神经网络结构,需要人为地去调试,非常耗费人力与时间,因此应用受到了限制。二是BP算法本身存在一定的缺陷。2.3BP神经网络模型构建的方法建立BP神经网络模型的具体步骤:首先要分析问题的性质及核心,然后有针对性地建立网络模型,最后通过网络预测分析,调整参数,优化网络模型。具体过程如图所示:3.股票预测BP网络模型的建立3.1数据的采集和预处理本文选择了中国银行(601988)2013/11/1-2014/5/15的收盘价和中国汽研(601965)2013/4/1-2014/5/12的收盘价作数据采集。根据模型建立的需要,BP神经网络要求样本集合理区间为[0,1]或[-1,1],所以要对样本集进行归一化处理。归一化公式为:'minmaxminkkxxxxxMatlab中归一化处理数据可以采用premnmx,postmnmx,tramnmx这3个函数。本文用了premnmx归一化函数和postmnmx反归一化函数。premnmx语法:[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)参数:pn:p矩阵按行归一化后的矩阵minp,maxp:p矩阵每一行的最小值,最大值tn:t矩阵按行归一化后的矩阵mint,maxt:t矩阵每一行的最小值,最大值作用:将矩阵p,t归一化到[-1,1],主要用于归一化处理训练数据集。postmnmx语法:[p,t]=postmnmx(pn,minp,maxp,tn,mint,maxt)参数:minp,maxp:premnmx函数计算的p矩阵每行的最小、最大值mint,maxt:premnmx函数计算的t矩阵每行的最小值,最大值作用:将矩阵pn,tn映射回归一化处理前的范围。postmnmx函数主要用于将神经网络的输出结果映射回归一化前的数据范围。3.2训练网络的设计在有合理的结构和恰当的权值条件下,三层前馈网络可以逼近任意的连续函数,这样,就提供了一个设计BP神经网络的基本原则。较少的隐含层,可以实现样本空间的超平面划分,选择两层BP网络就可以实现有效的预测了。本文将采用单隐含层的网络设计,分为单隐含层和输出层两个网络层次,如图所示。本文将连续五天的价格作为一组输入,将第六天的价格作为输出目标。既用前五天的价格来预测第六天的价格。所以输入层神经元数目是5。输出层的节点数取决于两个方面:输出数据类型和表示该类型所需的数据大小;同时,根据经典的道氏理论,股票价量分析中最重要的指标就是收盘价。本文所建的股票预测模型,就是针对单只股票的走势进行预测,所以,将股票的收盘价作为该预测模型的唯一输出向量,这样,网络输出层的神经元数目即为1。BP网络隐含层节点数的多少和BP网络预测精度之间有很大相关性,节点数太少,神经网络的训练能力就会变弱,无法完成精确预测。节点数太多,神经网络训练时间变长且网络可能出现过度拟合现象。所以选择合适的节点数才能使BP网络的性能得到最大发挥,但目前还没有统一的标准来确定隐含层的节点数,所以本文经过多次试验多次比较最终确定了隐含层节点数为12。传递函数是BP网络的重要组成部分,必须是连续可微的;BP网络通常采用S型的对数或正切函数。本预测模型采集到的原始数据,经过归一化处理后输入、输出向量均在区间[-1,1]范围内,符合S型的对数或正切函数的取值区间。因此,隐含层传递函数选择tansig,输出层传递函数选择purelin,训练函数采用traingdm。训练参数设为:net_1.trainParam.show=50;限时训练迭代过程net_1.trainParam.lr=0.05;学习率net_1.trainParam.mc=0.9;附加动量因子net_1.trainParam.epochs=20000;最大训练次数net_1.trainParam.goal=1e-3;训练要求精度训练过程如图:关于性能函数的设计,本文采用典型的前项反馈网络误差性能函数为均方误差函数mse:4.股票预测分析4.1中国银行预测分析在MATLABr2014a中用函数xlsread导入已经下载好的中国银行(601988)2013/11/1-2014/5/15的收盘价作为输入样本,进行BP网络训练。网络结构:BP神经网络的仿真结果:图中红色线为预测曲线,蓝色线为实际曲线,可以看出模拟出的曲线大致上与实际曲线相同,但有些地方明显误差偏大,很可能是由于训练样本的数目过少和训练次数不够而导致。此图为实际值与预测值的误差曲线,可以明显看出误差确实比较大,所以此图预测结果不尽人意。误差训练情况:梯度:回归曲线:股票分析:方法一:移动平均线与BP曲线相结合从上图可以看出,五日平均线从上而下穿过下降趋势的十日线,二十日线和六十日线,表明标号1这个点在这个时候支撑线被向下突破,此时为死亡交叉点,表示股价短期将继续下落,十日线向下突破二十日线,说明中期内也将继续下跌,二十日线也向下突破六十日线,长期内也将下降,行情看跌,死亡交叉预示着空头市场来临,而实际曲线也验证了预测结果。标号二为上升中的五日线由下而上穿过上升的十日线,形成黄金交叉,这个时候压力线被向上突破,表示股价短

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功