[摘要] 股票价格是非线性时间序列,传统BP神经网络预测模型存在容易陷入局部极小和收敛速度慢的缺陷。本文针对这些问题,采用蚁群神经网络预测模型用于预测股票价格,该模型将蚁群算法作为训练神经网络的学习算法。实验数据表明,该模型对于股票价格的短期预测效果与传统BP神经网络预测模型相比,具有较好的自适应性及较快的收敛速度。
[关键词] 蚁群算法 前向神经网络 BP算法 短期预测 股票价格
以股票涨落为代表的金融数据非常复杂, 其变化有着很强的无序性, 而有效的数据预测在金融投资领域占有重要地位。因此对股票价格的预测不但具有很大的难度,而且具有很重要的意义。
目前,对股票价格趋势预测有两种方法:基本分析法和技术分析法。基本分析法,就是尽可能的找出所有影响股票价格波动的因素(如:国际经济和政治局势、国内经济和政治局势、宏观经济政策、公司财务指标、管理团队指标等等),建立这些因素与股票价格之间的模型,对股票价格进行预测。这种方法有很强的理论根据,但是我国金融市场中广泛存在的炒作现象经常使股票的价格严重背离其基本价值,使基本分析在实务中被认同的程度不高。技术分析法,就是从证券市场的历史数据,通过图表、技术指标等寻求股票价格变化的规律进行预测。这种方法假设基础是:证券的市场行为已经包括了宏观、微观经济的一切信息;价格总是按照某种运动趋势运动;价格的运行方式往往会重复历史。国内学者研究表明,中国股市存在非线性与混沌。根据Takens定理可知, 只需单独考察股票市场的价格时间序列, 便可获得其背后的动力系统。因而可以通过股票价格时间序列重构股票市场非线性动力系统,给定一组股票价格迭代序列,构造非线性映射,最后得到股票价格预测模型。
传统的股市技术分析法如K线图法,移动平均线法对股价的预测不够理想。而神经网络在非线性建模中具有优势,不必建立复杂的数学模型即可完成预测。在神经网络算法当中,BP算法应用很普遍,有很多文献已经将其应用在股票价格的预测中,但是由于BP算法权值的调节采用的是负梯度下降法,容易陷入局部极小点,收敛速度慢。因此,本文利用蚁群算法训练人工神经网络的权值,再将蚁群神经网络用于股票价格的短期负荷预测,提出了一种蚁群神经网络预测模型,提高了BP神经网络预测模型的精度。
一、蚁群神经网络预测模型
1.股票价格短期预测模型
股票的价格是按时间的先后顺序采集的,由于影响股市交易的因素很多,比如银行的利率、国家政策、物价指数、上市公司的业绩以及人们心理的影响,股价的时间序列表现出复杂性和不确定性,是一个非线性时间序列。
股票价格是一个一维时间序列,本文使用文献构造的多输入单输出的网络拓扑图,通过股票价格时间序列重构股票市场非线性动力系统, 根据给定的一组股票价格迭代序列, 通过神经网络构造非线性映射。又由于个股走势与大盘指数的变化是具有一定联系的,因此得到股票价格预测模型,如图1所示。
2.神经网络模型
神经网络是由处理单元组成的一种并行的分布式信息处理结构,处理单元之间由单向信道相互连接。人工神经元是神经网络的基本计算单元,模拟了人脑中神经元的基本特征,一般是多输入/单输出的非线性单元,可以有一定的内部状态和阀值。图2所示为本文使用的神经网络模型。
3.蚁群神经网络
(1)蚁群算法
蚁群算法是一种基于模拟蚂蚁群行为的随机搜索优化算法。蚁群算法充分利用了蚁群的优化机制:选择机制(分泌物越多的路径,被选择的概率越大)、更新机制(路径上面的分泌物会随蚂蚁的经过而增长,而且同时也随时间的推移逐渐挥发消失)、协调机制(蚂蚁间实际上是通过分泌物来互相通信、协同工作的),通过个体之间的信息交流与相互协作最终找到最优解,使它具有很强的发现全局最优解的能力。文献的计算实例表明该算法具有良好的克服局部极值、取得全局极值的能力。
(2)蚁群算法训练神经网络的过程
将蚁群算法用于训练前向神经网络,可按以下步骤进行:
①系统初始化,包括系统参数的设定以及初始蚁群的产生。
②分别对每只蚂蚁的第i个分量进行子区间信息量的更新;以及在子区间候选组中进行遗传操作,生成第i个分量的新值。然后计算m只蚂蚁新解的函数值。
③修改各条边上的信息量;更新候选组,取函数值小的num个解将其各分量值插入相应的子区间的候选组中。
④如果蚁群全部收敛到一条路径,或达到结束条件(如NC≥NCmax),则循环结束,输出最佳解;否则,转步骤(2)。
4.蚁神经网络的具体实现
(1)基本思想及参数定义
首先,每只蚂蚁代表一个前向神经网络,前向神经网络的欲寻优变量X为两个权值矩阵,和两个阀值向量,X即为一只蚂蚁的解向量。然后,利用蚁群算法对分析指标函数F(X)(函数的表达式根据具体情况定义)进行寻优操作,直到满足给定停止条件(比如:F(X)或达到规定训练次数)为止。
(2)实现过程
规定寻优变量X的各分量取值范围,将 的各分量分为个子区域。设系统中有m只蚂蚁,我们将解的n个分量看成n个顶点,第i个顶点代表第i个分量,在第i个顶点到第i+1个顶点之间有条连线,代表第i个分量的取值可能在个不同的子区间。我们记其中第j条连线上在i时刻的信息量为。每只蚂蚁要从第1个顶点出发,按照一定的策略选择某一条连线到达第2个顶点,再从第2个顶点出发,…,在到达第n个顶点后,在条连线中选取某一条连线到达终点。每个蚂蚁所走过的路径代表一个解的初始方案,它指出解的每一个分量所在的子区间。
可根据下列公式选取第i个分量所在的子区间号j(即从第i个顶点出发,选择第j条连线):
其中q值均匀分布在(0,1)内随机选取,是每个分量的ki个子区间中信息量最大的子区间被选种的概率。表示分量 的信息量最大的子区间号。j0按如下概率分布在[1,]内取值:
其中表示分量i的第j个子区间的信息量,它在动态地变化。
为了确定解的具体值,可在各个子区间已有的取值中保存若干个函数值较小的解的相应分量作为候选组,为了加快收敛速度,参考具有变异特征的蚁群算法提出的具有变异特征的蚁群算法,使用遗传操作在候选组中确定新解的相应分量的值。首先可随机在候选组中选择两个值,然后对他们实行交叉变换、变异变换,以得到新值作为解的相应分量。该候选组中的值在动态更新,一旦有一个更好的解的分量在该子区间中,就用这个值替换其中的较差者。
在m只蚂蚁得到m个解后,要根据它们函数值的大小更新各条边上的信息量。要根据下式对各路径上的信息量作更新:
(1)
其中(2)
。其中W为一个常数,表示蚂蚁k在本次循环中在区间i和j之间留下的信息量。
设第k个个体的第i个分量选中第j個子区间,则按下式局部更新子区间j的信息量:
。重复这样的迭代过程,直至满足停止条件。
候选组里的遗传操作如下:
(1)若候选组里的候选值的个数i=0,既候选组里没有候选值,此时则产生一个间的随即数作为解分量xij的值,跳过选择、交叉、变异遗传操作。
(2)若i=1,即候选组里只有一个候选值xik,则跳过交叉、选择操作,直接对这个候选值 ,进行变异操作。
(3)若i=2,即候选组里有两个候选值,则跳过选择操作,直接对这两个候选值进行交叉、变异操作。
(4)否则,选择两个分量后进行交叉、变异操作。
在选择操作中,用“赌轮”的方法选取两个值,第j个值被选中的概率为。
在交叉操作中,设所选择的两个值为xij和xij,其对应函数值分别为E1,E2,且E1
在变异阶段,以概率Pmutate对交叉操作结果xcross进行变异操作得到xmutate。第i个分量的第k个子区间为。设,产生随机数,取
这样可以保证遗传操作的结果仍然在子区间中。
在所有蚂蚁都得到解以后,按式(1)和式(2)相应地更新各子区间上的信息量。
2.蚁群神经网络预测模型应用实例
本文利用了股票代码为000070的股票在2007年11月5日~12月13日的历史数据来进行建模、训练并验证本文提出的方法,编程环境为VC++6.0。
为了便于神經网络的计算,首先对股票价格数据x按(3)式进行预处理,式中x为股票价格值;a和b分别为x的最小、最大值。
(3)
神经网络输入层神经元个数为8,隐层神经元的个数为12,输出层神经元个数为1。输入向量
,其中为前j天第时i刻的x’值。
本文采用均方误差E作为分析指标函数F(X),定义如下:
(4)
式中y’为预测价格值,y为实际价格值。本例中蚂蚁的数量 m=100;q0=0.8;W=1;。
对12月14日的预测结果如表所示,从中可以看出,蚁群神经网络预测模型的预测精度较BP神经网络预测模型有较大的提高,并且前者的实际运行速度明显快于后者。图3中,蚁群神经网络预测模型的百分误差变化也较均匀。
三、结束语
预测股票价格走势一直是人们关心的问题。本文利用蚁群算法训练前向神经网络,克服了BP算法的一些固有缺陷,并用于了股票价格短期预测上。实例表明蚁群神经网络预测模型有很好的预测精度和较快的预测速度,与传统BP神经网络模型的比较表明本文模型有更好的特性,因此,蚁群神经网络预测模型是有效的。
参考文献:
[1]汪少华:应用投资学导论:证券投资、项目投资、产权投资、创业投资[M].北京:经济科学出版社,2004
[2]徐绪松:复杂科学、资本市场、项目评价[M].北京:科学出版社,2003
[3]付成宏傅明阙建荣:基于RBF神经网络的股票价格预测[J].企业技术开发,2004,4第23卷第4期:14~15,38
[4]陈陵沈洁秦玲:蚁群算法求解连续空间优化问题的一种方法[J].软件学报,2002/13(12)2317~07
[5]Dorigo,M., Luca, M. A study of some properties of Ant-Q[R]. Technical Report, TR/IRIDIA/1996-4,IRIDIA,University Libre de Bruxelles,1996
[6]袁晓东:神经网络在股票价格中的应用[J].北京机械工业学院学报,2002,(3):71~77
[7]魏平熊伟青:用于一般函数优化的蚁群算法[J].宁波大学学报,2001,12(4):51~53
[8]Wu Qing-hong, Zhang Jihui, Xu Xinhe. An ant colony algorithm with mutation features[J].Jurnal of Computer Research & Development, 1999,36(10):1240~1245
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。