基于小波神经网络的沪深300指数收盘价预测
2013-04-29梅杰李星野
梅杰 李星野
摘要:针对传统BP神经网络模型预测的缺陷,本文采用小波神经网络对沪深300指数收盘价的短期走势进行了预测分析。实验结果表明小波神经网络比直接使用神经网络进行预测的精度更高,预测的效果也更好。
关键词:小波神经;预测;沪深300指数
一、引言
股市是金融市场的一个重要组成部分,股票市场价格预测是金融分析领域中一个重要且困难的问题。由于受到时间序列具有平稳性、正态性和独立性的限制,传统的统计建模方法 (如指数平滑法、ARMA模型等)在解决诸如股票一类的时间序列预测问题时出现了一定的局限性,而神经网络应用于股票预测有着独特的优势,它不需要建立复杂的非线性系统的显式关系和数学模型就可以进行预测,这使得预测理论及方法产生了质的飞跃。
自从Lapedes发表了将神经网络用于股票预测的文章以来,国内外众多学者都曾用其对股票数据进行预测。White尝试以人工神经网络来预测IBM公司普通股每日的收益率;杨忻和马洪川用神经网络预测中长期马克/美元的汇率;王爱平等采用神经网络对股票时间序列进行短期走势的预测分析。然而,传统BP神经网络模型的固有缺陷,如算法容易陷入局部极小值、收敛速度慢等,严重限制了它的进一步应用。
近些年人们开始尝试将小波神经网络应用于股票预测,如向小东等人将小波神经网络用于上证指数的预测,王洪刚等人将小波神经网络应用于SP500的短期走势预测上。实证分析表明,基于小波神经网络的预测模型往往比传统BP网络的预测更为有效。
本文将小波分析和神经网络相结合形成“小波神经网络模型”,进而用构造了小波神经网络对沪深300指数收盘价的短期走势进行预测,与传统BP神经网络预测方法进行比较,体现小波神经网络的预测优势。
二、小波神经网络模型的建立
(一)小波分析
小波分析是近20年来发展起来的一个新兴数学分支,它的出现为非平稳信号分析和处理提供了一个强有力的工具。小波变化在时频平面上的不同位置具有不同的分辨率,是一种多分辨率的信号分析方法。
在函数空间L2(R)中,如果φ(t)满足
φ(t)dt=0(1)
则称φ(t)为一个小波,也常称为母小波或基本小波。
本文采用国外常使用的余弦调制高斯波:Morlet母小波,数学公式为
φ(t)=cos(1.75t)e(2)
对小波φ(t)进行伸缩和平移,可得到一组函数
φa,b(t)=φ(),a>0,b∈R
(3)
其中φa,b(t)为小波基函数,a为伸缩因子,b为平移因子。
对任意f(t)∈L2(R),其连续小波变换定义为
wf(a,b)=f(t)φa,b(t)dt(4)
与Fourier基于小波变换的小波分析是将信号函数分解成小波标准正交基,以此构成级数来逼近信号函数,不同的是小波基是通过平移和伸缩构成的,具有良好的局部化性质,依据小波理论达到最佳的函数逼近能力。
(二)小波神经网络的结构和学习算法
小波神经网络是一种以BP神经网络拓扑结构为基础,它融合了小波变换与神经网络,将常规神经网络隐含层节点函数由小波基函数代替,相应输入层到隐含层的权值及阈值分别由小波函数的伸缩和平移因子代替,信号前向传播的同时,误差反向传播的神经网络。因此,小波神经网络具备了小波变换的局部化能力和神经网络的自适应学习功能。通常的预测模型采用三层的小波神经网络结构,因为大部分实际的时间序列是非线性序列,少于三层结构无法逼近这样的非线性曲线。当层数大于三层时,当然也可以逼近这样的曲线,但增加了计算的复杂度,而对于BP神经网络来说,当采用三层结构时,该模型就能逼近任何形式的曲线,故采用三层结构,即输入层、隐含层和输出层。
小波神经网络的连接权值、尺度因子和平移因子调整过程分为两个步骤:第一个阶段从网络的输入层开始逐层向前计算,根据输入样本计算各层的输出,最终求出网络输出层的输出,这是前向传播过程;第二个阶段从网络的输出层向后对权值进行修正,这是反向传播过程。两个过程反复交替,直到达到网络要求。
学习算法的具体实现步骤如下。
1.参数初始化
随机初始化小波函数伸缩因子、平移因子及网络连接权重,设置网络权值学习速率,小波参数的学习速率。
2.输入学习样本,计算网络各层的输出
输入样本Xμ=(x1μ,x2μ,…,xmμ),(μ=1,2,…,p),则隐含层输出为
hjμ=φ(),j=1,2,…,q(5)
输出层的输出为
yμ=f(wjhjμ)(6)
式(5)、(6)中,xiμ为输入层的第i个节点的输入;hjμ为隐含层第j 个节点的输出值;yμ为网络的输出;φ(·)为Morlet小波。f(·)为Sigmoid函数,即f(x)=1/1+e-x。m为输入层节点数;q为隐含层节点数;输出层的节点数为1。
3.计算误差及参数的调整量
定义网络的全局误差为
E=(tμ-yμ)2={tμ-f[wjφ(wjixiμ-bj/aj)]}(7)
式(7)中tμ为样本Xμ的期望输出,P为样本总数。
从式(7)可知,网络输入误差是各层权值wji、wj及小波参数aj、bj的函数,因此调整权值可改变误差E。显然权值的原则是使误差不断地减少,因此应使权值及参数的调整量与误差的梯度下降成正比,故有
权值调整量:Δwji=-η(8)
Δwj=-η(9)
参数调整量:Δaj=-γ(10)
Δbj=-γ(11)
4.误差反向传播,修改网络参数
对输入层与隐含层的连接权值wji,修正公式为
wji(N+1)=wji(N)+Δwji(12)
对隐含层与输出层的连接权值wj,修正公式为
wj(N+1)=wj(N)++Δwj(13)
对隐含层小波基函数的伸缩因子aj,修正公式为
aj(N+1)=aj(N)++Δaj(14)
对隐含层小波基函数的平移因子bj,修正公式为
bj(N+1)=bj(N)++Δbj(15)
通过网络参数wji、wj、aj、bj的调整,使得网络的全局误差达到最低。
三、实证分析
如图1,选取2012年1月4日到2012年12月31日期间243个交易日沪深300指数收盘价作为原始序列作为实验研究对象。。
(一)数据预处理
由于沪深300指数收盘价数据受到市场多种因素的影响,波动范围较大,为了加快神经网络的学习速度、提高预测精度,必须在网络训练之前对数据进行预处理。
通常情况下,数据处理就是将原始数据进行归一化处理,即通过一定的线性变换将输入数据限制在 [-1,1]区间内。
归一化的数学表达式是
Pn=2(P-minP)/(maxP-minP)-1(16)
其中,P为原始输入数据,max P和min P分别是P中最大值和最小值。Pn为归一后的目标数据。
(二)小波神经网络模型的设计
1.网络层数的设计
根据Kosmogorow定理可知,在神经网络结构合理和神经节点权值恰当的条件下,三层神经网络可以逼近任何连续函数。因此,本实验选取含单一隐含层的三层小波网络。
2.输入层和输出层神经节点的设计
由于实验只使用收盘价这一单一变量作为原始数据,本文选择网络输入的交易天数是一周(5个交易日),即用5天的数据作为BP神经网络的一个输入数值,其后一天的数据作为网络的目标数据,按此方式进行滚动式排列,形成实验中的输入样本(共238个)。因此,我们将实验中的输入层节点设为5,输出节点数设为1。
3.隐含层小波函数及输出层传递函数的设计
隐含层使用常用的小波函数Morlet。由于本文所使用的原始数据都经过归一化处理,输入、输出向量均在区间[-1,1]范围内,符合S型对数函数对于数值取值区间的要求。因此,实验中采用了输出层传递函数logsig。
4.隐含层神经节点的设计
通用的隐含层神经元数的确定经验公式为
l=+a(17)