韦增欣 万腾飞
摘要:本文针对股票市场这一非线性系统,利用人工神经网络的方法来对股票进行时间序列预测。采用BP神经网络,将历史时间序列数据作为参考依据,预测未来短期内的股票价格;并在此基础上,与实际的股票价格进行对比分析,并得出结论。对于股票市场内的投资者具有一定的理论意义和实践价值。
关键词:神经网络;股票;预测
1.引言
由于股价的非线性特性,股票市场投资者商业行为的复杂性和对未来事件的影响能力,以及我国股市具有明显的政策性等因素,都极大的增加了我们预测股价的难度。
神经网络是一种大规模并行的复杂非线性动力系统,一些复杂的非线性模型系统都可以借助神经网络表现出来,其特点是处理机制高度并行、运算能力高速、拓扑结构高度灵活、非线性运算能力高速和极强的自学习自组织能力。预测科学研究领域已经开始重视这一方法的应用。
始于上世纪90年代的人工智能,迄今为止已经取得了极大的发展,并在在诸多领域都有了广泛的运用。金融领域也不例外,很多领域内的专家学者都已经开展了神经网络的研究工作。
1990年,Kimoto.Asakawa,Yoda and Takeoka[1]等人开发了Tokyo stock exchange Price index预测系统,应用modularNN系统研究了各种市场因素之间的联系,同年Kamijo[2]应用recurrentNN进行了股票市场预测。2001年,Hamid等[3]预测了德黑兰的股票指数;Dr.Matthias Schurmann等人[4]就传统数理统计方法和神经网络在股票预测研究领域中的应用作了比较研究。国内李敏强等人[5]采用遗传算法对股市投资策略作了相关研究。但是受到股票市场噪声多且不稳定等原因的影响,上述预测的效果可以说实际上并不理想。
本文想通过选取合适的激活函数和训练函数,以及其他参数值与股票标的,使预测的误差尽可能地小,对股票市场投资者具有理论意义及实践价值。
2.BP算法
(1)选定初始权值;
(2)重复以下过程直到收敛:
(对k=1到N
正向传播过程计算:计算每层各单元的Om-1jk,netmjk和k,k=2,…,N
反向传播过程计算:对各层(m=L-1到2),对每层各单元,计算δmjk
(修正权值
2.1BP算法的改进
标准的BP算法在作权值调整时,调整方向的依据是t时刻误差的梯度下降方向,并未将t时刻以前的梯度方向纳入考虑,因此导致训练过程经常产生震荡,收敛缓慢。为了达到神经网络训练速度提升的目的,可以将一个动量项增加到权值调整公式中[6]。以输出层为例,式(2.1)可调整为:
由上述式子可知,动量项的增加就是在本次权值调整量中叠加取自上一次权值调整量中的一部分,动量因子为α,动量项是以前积累的调整经验的反映,对于t时刻的调整所起的作用是阻碍。当骤然起伏发生在误差曲面的时刻,可以使震荡趋势减弱,训练速度得以提升。
3.BP神经网络进行股票预测的原理
通过学习历史数据,BP神经网络能够将股票价格变化趋势之间的非线性关系找出来,并在网络具体的权值中将其存放,然后预测未来股价的走势。
对于m个输入学习样本:X1,X2,…,Xm,已知与其对应的目标样本为:T1,T2,…,Tm。学习的目的是用网络的实际输出Y1,Y2,…,Ym与目标矢量T1,T2,…,Tm之间的误差来修改其权值,使Yi(i=1,2,…,m)尽可能地接近期望的T,达到最小化网络输出层的误差平方和的目的。通过连续不断地在相对于误差函数斜率下降的方向上计算网络权值和偏差的变化而逐渐逼近目标的。每一次权值和偏差的变化与网络误差的影响成正相关,并以反向传播的方式向每一层传递。
在时间序列预测中,网络成为输入输出的非线性函数。记时间序列为Xi,由于单步预测数据量太少,为了使实预测更加精确,使用更多数据来预测,需要将时间序列矩阵化,设输入层与输出层神经元为m个,则输入数据为:
时间序列预测可用下式表述:
时间序列预测方法就是用神经网络来拟合函数g,然后预测未来值。理论上已经证明,三层前馈式神经网络的能力是可以逼近任意复杂连续函数关系,其他的方法却不具备这一能力,因此对时间序列的预测采用三层BP神经网络可以说是非常适合方式。在实际的使用中,任何针对所分析的时间序列做的假设都是不必要的,该时间序列的拟合只需要采用一个神经网络就行。
4.实例分析
4.1固定训练样本数量的预测
(1)选取训练样本数据,构造训练样本
选取代码为600048的股票保利地产从2010年6月7日起的收盘价。
二、训练样本数据与测试数据的分类
训练样本数据取前600个收盘数据,而作为神经网络预测能力的测试样本数据则取后m个收盘数据。
(3)样本数据预处理
原始的样本数据由于过大,因此在进行神经网络预测之前,要做归一化处理,这样的做法能够有效避免网络麻痹状况的出现。
(4)构造训练样本
将600个训练样本数据中前(600-m)个交易日的收盘价作为输入数据并矩阵化,目标数据是后(600-m)个数据,将之矩阵化,参照这种方式进行滚动式的排列,这样神经网络的训练样本就形成了。m选择过小,从历史数据中得到的信息过少,可能会影响预测精度,而m选择过大,会使网络在权值调整时,每次迭代都要累加前一次k个预测值的误差,导致更大的误差出现,这里分别选取m=5,10,15,20来进行预测。
(5)确定神经网络的参数
初始化学习速率μ=0.02,动量因子α=0.9,隐层神经元个数为50,validation checks为25,算法采用改进的BP算法。
(6)确定激活函数与训练函数
三层的BP神经网络,输入层到隐层是s型函数,隐层到输出层是线性激活函数,确定隐层激活函数为对数S型激活函数“logsin”,输出层激活函数为线性函数“purelin”。
以下几种函数是MATLAB中神经网络的训练函数:
TRAINLM:Levenberg-Marquardt法
TRAINGD:梯度递减法
TRAINGDM:带动量因子的梯度递减法
TRAINGDA:带自适应学习率的梯度递减法
TRAINGDX:带自适应学习率和动量因子的梯度递减法
我们比较以上的方法,从而做到快速有效地确定训练函数。设定最大迭代次数为2000次,m=10,目标收敛精度为0,validation checks为25。评价的指标是迭代次数和收敛精度,预测拟合分别采用以上算法,得到以下结果:
(7)分别使用训练样本数300和600进行训练网络,并将预测结果反归一化。
4.1推广效果检验
取最后的m个测试样本数据来检验训练好的网络的预测能力。求出输出值与实际值的均方误差和平均相对误差,比较结果如下:
可以看出,训练样本增大到600时,对应不同m值的预测结果的均方误差基本都增大。选取m=10,训练样本300时的预测结果最接近实际值,此时的均方误差和平均相对误差为最小,其中均方误差为00201,平均相对误差1894%,由此证明该模型预测的准确性较高且具备相应的参考价值。所以我们可以看到,基于神经网络基础的时间序列预测模型的预测能力还是很有效的。表4.4为m=10时的输出值p与实际值k的比较,其中e为相对误差。
4.2预测
选取m=10,训练样本数300的神经网络,预测2011年9月19日至9月30日的股票价格如下图:
(作者单位:广西大学数学与信息学院)
参考文献:
[1]Kimoto,T&Asakawa K.stock Market Prediction System with Modular Neural Networks.Proceeding of the International Joint Conference on Neural Network.1990,1:1-6
[2]Kamijo K&Tanigawa T.Stock Price Pattern Recognition:A Recurrent Network Approach.Proceeding of the International Joint Conference on Neural Network.1990,1:215-222
[3]Hamid Khaloozadeh,Ali Khaki Sedigh.Long term prediction of Tehran pric index using neural networks.European journal of operation research,1998,563-567
[4]Prof.Dr.Matthias Schurmann,DipL-Kfm,Thomads Lohrbach.Comparing artificial neural networks with statistical methods within the field of stock market prediction.[J]Neural Computing and Applications,2000,3:597-605.
[5]李敏强,张俊峰,寇纪淞.遗传算法在股市投资策略研究中的应用[J].系统工程理论与实践,1998,8:19-25.
[6]袁曾任.人工神经元网络及其应用[M].清华大学出版社.1999:66-70,78-79.