关美银
摘要:文章从技术分析的角度分析股票市场的变动,以深沪A股在2012年五月份的具体数据作为实例,采用BP神经网络对股票价格进行预测。将关于每支股票的基本数据信息作为候选输入变量,再从中筛选出与股票价格变化相关性比较强的变量作为输入变量,从而建立一个三层的BP神经网络进行预测。
关键词: BP神经网络;股票价格预测;MATLAB软件
股票出现在世界上已经有将近400年的历史,世界上最早的股份有限公司制度诞生于1602年在荷兰成立的东印度公司,伴随股份公司的诞生,产生了买卖转让股票的需求,从而使股份制公司能够获得大量的资本金得以发展。
然而,在股票投资中,时常会出现股价真实的涨跌情况与投资者预期的涨跌情况不相符的现象,在这样的情况下投资者就会面临着投资失利的风险。如何有效地对股价的涨跌进行预测,成了投资者一直不懈探索研究的问题。预测的前提是事物的发展过程是有迹可循的,因此我们必须承认这些信息之间存在某种未知的规律,而这些规律我们是可以从历史的数据中得取。而从数学建模的角度来讲,这些规律即是相关数据之间的函数关系。我们的目的是要建立起适合的数学模型,从而确定其中的函数关系。
BP神经网络的算法思想是模拟人思维的方式,通过一定的学习准则进行学习,当网络作出错误的判决时,通过网络的学习,减少下次犯同样错误的可能性,是一个非线性动力学系统,具有高度并行处理信息的机制,而且具有高速自学习,自适应能力,内部有大量可调参数。在对股票市场的变动作综合评价并预测其变化趋势的时候,许多非线性的因素以及模糊的因素会给我们的工作带来很多麻烦,而神经网络后天的学习能力能够使它可以随环境的变化不断学习,可以经过训练来处理复杂的信息关系。网络在训练中吸收了学习样本中的专家思维,实现了给定的学习样本的输入——输出映射关系,当测试样本作为新的输入进行映射时,就可以在输出的评价结果中再现专家的经验,知识和直觉思维,从而得出比较合理的预测结果。
本文选用2012年5月份其中一天的深沪股市中创业板的股票数据作为样本,基本数据指标与技术数据指标的数量比较多,为了解决输入变量过多的问题,此处采用了SAS数据处理软件对各个变量进行相关性分析,以判断这些变量是否对实验结果有显著影响,经过这轮筛选之后选取其中的9个变量作为输入变量,其中包括今日开盘价,昨日收盘价,活跃度,市盈率,每股公积,当天强弱度,3日强弱度,10日强弱度,60日强弱度,并以当天的收盘价作为输出变量。我们可以看出,输入变量中既包含了个股的信息,也反映了大盘的信息,而且兼顾了相对近期的信息以及历史信息,基本上概括了可以影响股票价格变动的因素,选取的过程兼顾科学性以及合理性,提高了实验的准确度。由于变量的数据之间数量级存在比较大的差别,为了避免出现因变量数量级差别较大而造成的模型预测误差较大,同时也为了提高神经网络的训练效率,要对样本数据进行适当的预处理。先对样本数据作归一化处理,使得以及目标数据均服从正态分布,这样就比较好地解决了数量级差异较大的问题,然后利用MATLAB中的prepca函数对归一化后的样本数据进行主元分析,降低样本数据的冗余度,起到数据降维的作用,从而使神经网络的训练效率得到有效提高,本文选择的样本数据经过处理之后维数变为8,经过这样的降维之后,使得我们在实验的过程中得到的结果更加具有客观性。
此外,采用train函数与“提前停止”相结合的方法,在训练之前要对样本数据进行区分,分为训练样本集,验证样本集以及测试样本集。
在这里我们选择三层的BP网络,网络的输入维数为8,选择的输入变量为预处理之后得到降维处理以及已经区分好的样本数据。输出维数为1,因为我们需要预测的变量只有当天的收盘价。在选择隐含层维数的时候,由于目前没有统一的定性标准来确定如何选取隐含层的维数才会得到比较准确的数据结果, BP网络中隐含层的维数多少与其预测精度之间具有很重要的关系,当维数太少时,神经网络的训练能力会变弱,使得预测精度下降;当维数太多时,会导致神经网络训练时间过长,很有可能造成网络过度拟合的现象。在这里,我们经过多次的比较,最终确定了隐含层的维数为4。由图像结果对比,当隐含层维数为4的时候,得到的误差曲线变化趋势基本一致,说明样本集的划分比较合理,而且训练误差的结果也比较满意。
为了进一步检验训练之后的网络性能,本文将对训练结果作进一步仿真分析,利用SIM函数将所有的数据通过网络,然后得到网络输出和相应的目标进行线性回归,然后再对网络输出进行反规范化变换,得到的结果与原始的输出变量作对比,绘制出预测结果与实际结果的对比图(如图1),由得到的数据以及对比图我们可以看出,预测值与实际值的曲线变化基本一致,其中的比较多的数据点也达到一定精确程度上的接近。BP网络在一定程度上实现了对股票价格的预测,训练后的BP网络预测能力较高,得到的误差比较小,网络泛化能力比较好,所以我们可以通过BP网络在一定条件上实现对股价变动的判断。
为了进一步证明BP神经网络在预测股票市场价格方面的可行性,现在我们用另外一种经典的预测算法——回归分析方法对同样的数据进行拟合,最终得出的预测结果与实际值的折现对比图(图2)。由图3,我们可以看出,回归分析预测的结果显示趋势与实际值的结果显示趋势大致相同,由此我们可以认为回归分析预测有一定的合理性,但是在准确度方面,回归分析预测却大大不如BP神经网络算法,由此,可以更进一步说明BP神经网络在预测股票市场这一类波动规律性不明显,十分复杂的非线性动态变化的复杂系统方面具有很大的优势。
BP神经网络具有很强的自学能力,适应能力以及容错能力等特点,这些特点使得它能够在一定条件下对股票市场的变动作一定程度上的分析,并判断股票的走势。但是由于股票市场是一个极其不稳定的非线性动态变化的复杂系统,而且影响股价的因素涉及的范围十分广阔,简单地依靠BP网络是不可能十分精确地预测到其变动的,此外,在实验进行的过程中,我们还有很多需要改进的地方,例如可以通过设置控制权值的方法控制每次训练样本得出的结果,使其随机性降低而目的性提高;选择输入变量的时候也应该从更多的方面去考虑,在兼顾训练效率与变量数目之间取一个平衡点,协调两者之间的关系,从而使我们得出的结果更客观更精确。
(作者单位:新会农商银行)