基于遗传算法优化的BP神经网络在股指预测中的应用研究
黄宏运1, 朱家明2, 李诗争1
1.安徽财经大学 金融学院,安徽 蚌埠 233000
2.安徽财经大学 统计与应用数学学院,安徽 蚌埠 233000
通信作者:朱家明(1973-),男,安徽人,副教授,主要从事应用数学与数学建模方面的研究.E-mail:zhujm1973@163.com.

作者简介:黄宏运(1995-),男,安徽人,主要从事机器学习与量化投资方面的研究.E-mail:varuto_hhy@163.com.

摘要

针对股票价格不仅受到众多不确定性因素影响而且数据本身具有高度模糊非线性等特点而导致的预测难问题,首先利用具有良好非线性寻优能力的遗传算法来优化BP网络初始权阈值的设置,然后构建了一个基于历史股票价量信息为输入变量,日开盘价为输出变量的股指预测模型,在对观察期内上证综指(开盘指数)的实证研究表明,优化后的BP网络在训练时不仅可以更快地实现收敛,而且对于训练集与测试集样本的预测性均得到明显地提高.

关键词: 股票指数; 预测; BP神经网络; 遗传算法; 优化
中图分类号:TP183 文献标志码:A 文章编号:0258-7971(2017)03-0350-06
The BP neural network based on GA optimization in the application of the stock index forecasting
HUANG Hong-yun1, WU Li-bing2, LI Shi-zheng1
1.School of Finance,Anhui University of Finance and Economics,Bengbu 233000,China
2.Institute of Statistics and Applied Mathematics,Anhui University of Finance and Economics,Bengbu 233000,China
Abstract

Due to the stock price is not only affected by many uncertain factors and the data itself has a high degree of fuzzy non-linear characteristics,so there is always a difficult problem for forecasting.In this paper,we firstly use the genetic algorithm with good nonlinear optimization ability to optimize the initial threshold of BP Neural Network,then construc a stock index forecasting model based on historical stock price information as input variable and daily opening price as output variable.An empirical study of the Shanghai Composite Index (opening index) during the observation period showed that the optimized BP Neural Network can not only achieve convergence faster in training process,but also improve the predictability of the training set and the test set.

Keyword: stock index; forecasting; BP neural network; genetic algorithm; optimization

股票价格的走势不仅可以从一定程度上体现宏观经济的发展状况, 而且关乎每个证券投资者的切身利益, 因而股指预测一直是经济预测领域研究的重点课题之一, 但是由于股票市场的变化不仅受众多不确定性因素的影响, 而且股票数据本身具有模糊非线性的特点, 这些都给股指的预测带来诸多困难.目前对于股票指数预测方法的研究主要可以分为以下几类, 第1种是基于历史价量信息和技术指标信息的趋势预测[1, 2], 这种方法通常只能作一个区间估计, 无法给出准确结果; 第2种是时间序列预测[3, 4], 这类方法本质上是属于一种线性估计, 因而难以表达股票序列中的非线性关系; 第3种是灰色预测[5, 6], 这种预测方法通常适用于样本量较少的贫数据, 对于应用到样本量巨大的股票数据存在一定的局限性; 第4种是基于前3种方法的组合预测[7, 8], 由于不同类方法预测的结果可能存在较大的差异, 因而如何分配权重是这种方法需要考虑的关键因素.近些年, 随着一些机器学习算法在经济金融领域得到不断地发展, 人工神经网络[9, 10]也在股指预测中得到了一定的应用, 神经网络在训练的过程中多采用的是一种BP算法, 这种算法对于初始权阈值的设置显得尤为重要, 如果设置不当, 不仅会导致网络训练速度慢, 而且容易陷入局部最优.

因此, 本文将针对上述问题, 尝试利用具有良好非线性寻优能力的遗传算法来优化BP网络初始权阈值的设置, 进而提高预测模型的性能.

1 数据来源及说明

本文的数据来源主要为上海大智慧与同花顺数据中心提供的自2007年1月4日至2015年8月31日的上证综合指数, 其中数据的格式为2107行乘7列, 其中每一行代表了每一日的开盘价、收盘价、最低价、最高价、成交量、成交额和涨跌幅.

2 研究理论
2.1 BP神经网络理论

人工神经网络(Artificial Neural Network, ANN)的发展可以追溯到20世纪40年代, 最早是由Warren McCulloch和Walter Pitts 博士从原理上证明了ANN可以计算算术和逻辑函数, ANN的第一个实际应用出现在20世纪50年代, 当时Rosenblatt博士和他的同事构造了一个感知机网络, 并公开演示了它进行模式识别的能力, 经过了几十年的发展人工神经网络的理论已经得到了长足的发展, 其中BP(Back Propagation, BP)神经网络[11, 12]由于其理论最为成熟而成为目前应用最为广泛的一种神经网络.

BP神经网络的拓扑结构大致如图1所示, 它的工作原理主要是通过各层之间的权阈值和激励函数将输入变量非线性映射到输出变量, 在训练的过程中主要采取一种信号前向传递、误差反向传播的BP算法, 这种算法又被称为“ 负梯度修正算法[13]” , 现已被应用到很多其他神经网络的训练中.

图1 BP神经网络拓扑结构Fig.1 The topology of BP neural network

根据上述原理, 以下给出简单的BP神经网络算法的实现过程:X=(xij)假设是一个样本输入矩阵(i=1, 2, …, n; j=1, 2, …, p), 每一行代表一组观测值, 且每一组输入观测值对应一个输出值, 整体样本的实际输出样本为Y=[y1, y2, …, yn]T(这里为了简单说明问题只指定了一个输出值, 在实际问题中可能一组输入变量对应多个输出值, 但两者无本质上的区别), 每一列可以理解为一个指标或属性, 那么输入层的输入I1即为X.通常输入层与输出层处的激励函数均为线性函数, 则广义上得到输入层神经元的输出O1即为X.

假设隐含层神经元的个数为m个, 对应的权值矩阵为W=(wij)(i=1, 2, …, m; j=1, 2, …, p), 阈值矩阵为B=(b1, b2, …, bm)T, 那么隐含层的输入:

I2=Wm× pX'p× n+Bones1× n, (1)

其中, ones1× n表示1× n元素全部为1的矩阵.通常作为隐含层的激励函数为单极S型函数, 即Sigmoid函数, 其表达式为:

f(x)=(1+e-x)-1, (2)

则隐含层的输出为O2=f(I2).输出层的输入与隐含层的输入类似:

I3=XjkO2+Bjkones1× n. (3)

对于第3层的输出, 由传递函数为线性函数, 所以可以认为O3=I3.

以下本文利用链式偏微分法则来计算输出层与隐含层和隐含层与输入层连接权阈值的调整量, 计算结果具体为:

Δ Wjk=-η EWjk=-η (Y-O3)O'2, (4)

Δ Bjk=-η EBjk=-η (Y-O3)ones1, (5)

其中, ones1表示1元素全部为1的矩阵.

由公式(2)可知f'(x)=f(x)[1-f(x)], 进一步计算得到隐含层的权阈值调整量为:

Δ Wjk=-η EWjk=-η W'jk(Y-O3)O2(1-O2), (6)

Δ Bjk=-η EBjk=-η W'jk(Y-O3)O2(1-O2)ones1. (7)

从公式(4)~(6)和(7)可以看出, BP算法在调整权阈值时从第2到n次迭代得到的权阈值都直接或间接的与第1次的权阈值相关联, 所以初始权阈值的选取对于BP网络的训练来说显得尤为关键, 如果设置不当, 很可能会导致网络在训练过程中不仅收敛速度慢而且易陷入局部最优陷阱, 因而如何优化初始权阈值一直是BP网络研究的重点问题之一.

2.2 GA优化BP网络原理

遗传算法[14](Genetic Algorithm, GA)是一种仿生群智能算法, 其生物学基础主要是借鉴达尔文的自然进化学说和孟德尔的基因重组定律, 即从任一初始种群出发, 通过随机选择、交叉和变异等操作, 产生一群更适应环境的个体, 使种群逐步进化到搜索空间中越来越好的区域.由于遗传算法是一种不依赖于辅助信息的启发式全局搜索算法, 具体在搜索的过程中不易陷入局部最优陷阱, 这一点正好可以弥补BP网络的不足之处, 所以本文利用遗传算法的这一特性来优化BP网络初始权阈值的设置.

遗传算法优化BP神经网络的具体实现过程主要包括如下几个步骤[15]:

Step 1:编码与种群的初始化.这里设置网络隐含层神经元个数为15个, 个体编码方法为二进制编码, 每个个体均为一个二进制数串, 由输入层与隐含层连接权值、隐含层阈值、隐含层与输出层连接权值以及输出层阈值4部分组成, 本文中个体编码的长度共计为:s=s1× s2+s2+s2× s3+s3.其中, s1s2s3分别代表输入层、隐含层和输出层神经元的个数.

Step 2:适应度评估.根据初始化个体得到网络的初始权阈值, 用训练数据训练网络后得到预测输出, 把预测输出与实际输出之间的均方误差作为个体适应度评估值, 计算公式为:

F=mse(Y-O)= 1ni=1n(yi-oi)2, (8)

式中, n为输入样本的数量; yi为网络的预测输出; oi为实际输出, mse表示均方误差函数.

Step 3:选择操作.遗传算法的选择操作包括轮盘赌选择、随机竞争选择等等, 本文采用基于适应度比例的选择方式, 个体i的选择概率为:

pi= k/Fii=1Nk/Fi, (9)

式中Fi为第i个个体的适应度值, k为系数, N为种群个体数目.

Step 4:重组操作.又称交叉操作, 即通过交换种群中个体的基因位, 本文采取单点交叉方式(两点交叉与多点交叉方式对原基因位的扰动程度过大, 可能会破坏一些好的基因类型), 交叉操作方法具体如图2所示.

Step 5:变异操作.选取第i个个体的第j个基因进行变异, 对于二进制编码方式, 具体操作是将0变成1或1变成0.

Step 6:将优化得到的权阈值带到BP网络中训练, 进而用来预测.

2.3 GA-BP网络股指预测模型

2.3.1 模型的建立 股票价格的变化从一定程度上说均可以通过市场交易过程中的价量信息来体现, 如某企业或公司所处行业处于当前的浪潮和新风口区, 通常伴随着一种市场看多的预期, 因而股价会呈现出一种上涨的趋势, 再如某只个股的短期均线并列上扬并齐穿长期均线, 且MACD线表现出明显的金叉迹象, 这也预示了一种股价后期看涨的信号, 以上无论是从基本面还是技术指标等方面来预判未来股价的变化趋势, 均是一种基于历史价量信息的预测方式.并且目前大多数学者[16, 17]在研究股票指数的非线性预测时, 均是以历史价量信息为基础, 所以本文建立的BP神经网络股指预测模型以历史前一日的开盘价、收盘价、最高价、最低价、成交量、成交额和涨跌幅为输入变量, 以历史后一日的收盘价为输出变量, 即输入层含有7个神经元, 输出层含有1个神经元, 具体模型的表达式如下:

o(t)=f(o(t-1), c(t-1), u(t-1), l(t-1), v(t-1), e(t-1), p(t-1)), (10)

其中, o(t)网络的输出变量(后一日收盘价), o(t-1)、c(t-1)、u(t-1)、l(t-1)、v(t-1)、e(t-1)和p(t-1)为网络的输入变量(前一日开盘价、收盘价、最高价、最低价、成交量、成交额和涨跌幅).

2.3.2 模型的训练 在进行的模型训练之前不仅需要对样本数据进行一定的预处理, 而且还需要利用遗传算法来寻找一组最优的初始权阈值, 具体分为以下几个步骤来完成:

Step 1:数据预处理.为了消除各指标数据之间的数量级与量纲差异, 先进行归一化处理, 通过公式x'=b+(a-b) x-xminxmax-xmin将原始各项指标数据归一化至区间[a, b]上, 这里x'表示归一化的各维数据, x表示原始各维数据, xminxmax表示各维数据的最大值与最小值, 本文采取[0, 1]归一化处理.

Step 2:划分训练集与测试集样本.考虑到2015年股票市场于6月至8月期间经历了一场牛熊市场转换, 这与2007年股票市场的的变化规律十分相似, 所以本文将前2000份样本(2007年1月4日至2015年3月30日)作为训练数据, 后107个交易日(2015年3月31日至2015年8月31日)数据作为测试样本.

图2 单点交叉操作Fig.2 The operation of single point crossover

Step 3:遗传算法寻优.本文利用Matlab自带的遗传算法优化工具箱, 设置具体的遗传参数为:种群规模为200, 种群个体精度为20, 最大迭代次数为1000, 选择概率为0.9, 交叉概率为0.5, 变异概率为0.5.在寻优的过程中, 种群个体的最佳适应度与平均适应度变化为图3所示.

图3 种群迭代过程中的最优适应度与平均适应度Fig.3 Best fitness and average fitness of iteration process

图3可以看出, 在迭代的初始阶段, 种群个体离理想值较远时, 其下降的幅度非常大, 而在迭代的后期, 随着算法的不断收敛, 种群个体越来越靠近最优适应度.

完成上述3个步骤之后, 即获得了一组基于最小均方差的网络权阈值, 利用GA得到的上述权阈值对BP网络进行训练, 设置网络的训练参数为隐含层神经元个数为15个, 传递函数为单极S型函数, 训练函数为梯度下降的BP训练算法函数traingd, 最大训练次数为1000次, 学习速率为0.01, 学习最小均方差目标为0.000004.

利用训练好的网络对对训练集数据进行回测得到图4.

图4可以看出, 对于训练集数据来说, GA优化的BP网络可以较好地实现对开盘价的预测, 并且在股价波动幅度大的时段如:2007年8月15日至2008年1月11日, 未优化的BP网络预测结果呈现出高度震荡的变化趋势, 而经GA优化的BP网络可以较平缓的拟合原始开盘价, 相比较而言, GA优化后的BP网络预测效果更为理想.

2.3.3 模型的测试 虽然经遗传算法优化后的BP网络可以实现对训练集开盘价的准确预测, 但这可能是网络优化后处于过拟和状态下(对训练数据可以实现准确预测但对测试数据预测失真)的预测结果, 因而衡量一个BP网络预测模型的性能通常是利用样本外数据对其进行检验.这里利用测试集数据对其进行检验, 得到的结果具体见图5所示.

图5可以看出, 总体上GA-BP网络的预测结果较未优化的BP网络预测更贴近于真实开盘价, 但两者的预测精度都不高, 这主要是由于以下原因导致的:①受制于训练样本的数量, 网路并未实现对股价波动趋势的充分学习; ②股票价格的变动不仅关乎公司或企业的经营状况和盈利水平, 而且还与短期市场上的重大利好利坏消息紧密联系, 因而网络对于股价波动幅度大的时段会预测失真.所以在实际的股票投资中, 可以利用本文建立的模型对未来股价的变化趋势做一个大致的判断, 如果想实现对股价的精准预测, 还应结合其他预测方法进行综合考虑.

2.3.4 模型的对比 为了从进一步从误差角度来对比优化前后的BP神经网络的预测结果, 以下作出GA-BP网络与BP网络的绝对误差与相对误差, 具体如图6~7所示.

图4 训练集数据预测结果对比Fig.4 Comparison of prediction results of training data

图5 测试集数据预测结果对比Fig.5 Comparison of prediction results of testing data

图6图7可以明显地看出, 无论是对训练集数据还是对测试集数据来说, GA-BP网络预测的绝对误差与相对误差呈集中簇状态分布于0界线附近, 而未优化BP网络预测的绝对误差与相对误差呈分散化状态分布于0界线上下, 总体上说明GA-BP网络的预测精度要比BP网络高.

图6 训练集预测绝对误差与相对误差对比Fig.6 Comparison of absolute error and relative error in training data

图7 测试集预测绝对误差与相对误差对比Fig.7 Comparison of absolute error and relative error in testing data

3 结束语

本文首先利用具有良好非线性寻优能力的遗传算法来寻找一组良好的BP网络权阈值, 然后构建了基于历史日收盘价、最低价、最高价、成交量、成交额、和涨跌幅为输入变量, 日开盘价为输出变量的GA-BP网络股指预测模型, 最后从绝对误差与相对误差角度对比分析了BP网络优化前后的预测结果, 得出经遗传算法优化后的BP网络在对未来股价的趋势判断与指数预测方面均得到显著提高的结论.

本文中所建立的GA-BP预测模型虽然可以实现对未来股指变化趋势的大致预测, 但是无法实现对股指的精准预测.这主要是因为股票价格受到众多不确定性因素的影响, 尤其是当下国内的股票市场仍处于不成熟的发展状态, 短期内的宏观经济、政策意见以及投资者的心理预期等因素都会对股价造成一定程度的影响.所以, 在实际的操盘投资中, 还应综合考虑各个方面的因素如经营企业的基本面、技术指标等等, 以实现最大收益或规避最大风险的投资目标.

The authors have declared that no competing interests exist.

参考文献
[1] 李莎, 李红刚. 股票市场中技术分析有效性的实证研究[J]. 北京师范大学学报: 自然科学版, 2009, 45(2): 212-214.
LI S, LI H G. Empirical study on the validity of technical analysis in stock market[J]. Journal of Beijing Normal University: Natural Sciences Edition, 2009, 45(2): 212-214. [本文引用:1]
[2] 张秀云, 郭树. 股票基本面分析在实战中的应用[J]. 中国证券期货, 2011(5): 28-29.
ZHANG X Y, GUO S. Application of stock fundamental analysis in actual combat[J]. China Securities Futures, 2011(5): 28-29. [本文引用:1]
[3] ZHANG J, SHAN R, SU W F. Applying time series analysis builds stock price forecast model[J]. Modern Applied Science, 2009, 3(5): 56-59. [本文引用:1]
[4] 李战江, 张昊, 孙鹏哲, . 基于ARIMA模型的沪深300股指期货价格预测研究[J]. 鲁东大学学报: 自然科学版, 2013, 29(1): 22-24.
LI Z J, ZHANG H, SUN P Z, et al. Research on the forecast of shanghai and shenzhen 300 index futures based on ARIMA model[J]. Journal of Ludong University: Natural Sciences Edition, 2013, 29(1): 22-24. [本文引用:1]
[5] RM Kapila Tharanga Rathnayaka, DMKN Seneviratna, WEI Jianguo. Grey system based novel approach for stock market forecasting[J]. Grey Systems: Theory and Application, 2015, 5(2): 178-193. [本文引用:1]
[6] 李嵩松, 惠晓峰. 股票指数模糊随机预测与灰色预测实证比较研究[J]. 哈尔滨工业大学学报: 社会科学版, 2010, 12(5): 1-6.
LI S S, HUI X F. Study on fuzzy stochastic prediction and gray prediction of stock index[J]. Journal of Harbin Institute of Technology: Social Science Edition, 2010, 12(5): 1-6. [本文引用:1]
[7] Md Rafiul Hassan. A combination of hidden Markov model and fuzzy model for stock market forecasting[J]. Neurocomputing, 2009, 72(16): 3439-3446. [本文引用:1]
[8] 刘佳明, 刘海滨. 组合预测模型在股指短期预测中的应用——以上证综合指数为例的实证分析[J]. 中国商贸, 2014(5): 93-96.
LIU J M, LIU H B. Application of combination forecasting model in short-term forecast of stock index-an empirical analysis of Shanghai composite index[J]. China Merchants, 2014(5): 93-96. [本文引用:1]
[9] 黄宏运, 吴礼斌, 李诗争. BP神经网络在股票指数预测中的应用[J]. 通化师范学院学报, 2016, 37(5): 32-34.
HUANG H Y, WU L B, LI S Z. Application of BP neural network in stock index forecasting[J]. Journal of Tonghua Teachers College, 2016, 37(5): 32-34. [本文引用:1]
[10] CHEN D L, DISSANAYAKA M K N. Seneviratna. Using feed forward BPNN for forecasting all share price index[J]. Journal of Data Analysis and Information Processing, 2014, 2(4): 87-94. [本文引用:1]
[11] CHEN Q, HUANG K M, YANG X Q, et al. A BP neural network realization in the measurement of material permittivity[J]. Journal of Software, 2011, 66: 1089-1095. [本文引用:1]
[12] MEN H, ZHANG J, ZHANG L H. Intelligent recognition for microbiologically influenced corrosion based on hilbert-huang transform and BP neural network[J]. Journal of Computers, 2012, 7(9): 2283-2291. [本文引用:1]
[13] ZHANG H S, XU D P, ZHANG Y . Boundedness and convergence of split-complex back-propagation algorithm with momentum and penalty[J]. Neural Processing Letters, 2014, 39(3): 297-307. [本文引用:1]
[14] 葛继科, 邱玉辉, 吴春明, . 遗传算法研究综述[J]. 计算机应用研究, 2008, 25(10): 2912-2915.
GE J K, QIU Y H, WU C M, et al. Journal of computer applications[J] . Application Research of Computers, 2008, 25(10): 2912-2915. [本文引用:1]
[15] 黄宏运, 吴礼斌, 李诗争. GA优化的SVM在量化择时中的应用[J]. 南京师范大学学报: 工程技术版, 2017, 17(1): 1-8.
HUANG H Y, WU L B, LI S Z. Application of GA-Optimized SVM in quantitative timing[J]. Journal of Nanjing Normal University: Engineering and Technology Edition, 2017, 17(1): 1-8. [本文引用:1]
[16] 王天娥, 叶德谦. 基于GA的改进型动态网络在股市预测中的应用[J]计算机技术与发展, 2009, 19(1): 214-216.
WANG T E, YE D Q. Application of improved dynamic network based on GA in stock market forecasting[J]. Computer Technology and Development, 2009, 19(1): 214-216. [本文引用:1]
[17] 黄宏运, 吴礼斌, 李诗争, . 一种改进的IPSO-BP神经网络在股指预测中的应用—以上证综指为例[J]. 延边大学学报: 自然科学版, 2016, 42(4): 351-356.
HUANG H Y, WU L B, LI S Z, et al. Application of an improved IPSO-BP neural network in stock index forecasting[J]. Journal of Yanbian University: Natural Sciences Edition, 2016, 42(4): 351-356. [本文引用:1]