BP神经网络在股票行情预测中的应用研究

    付世凤 赵莉 蔡文君

    

    摘要:文章以证券行业的历史数据作为原始数据集,采用BP神经网络算法找出股票运行规律和走势情况,并对预测结果进行分析,结果表明该预测结果正确率比较高。

    关键词:BP神经网络;股票行情

    中图分类号:TP393? ? ? ? 文献标识码:A

    文章编号:1009-3044(2021)18-0201-02

    开放科学(资源服务)标识码(OSID):

    证券业是信息化比较早的行业,其行业数据实时更新,积累了大量的历史数据,如果证券从业人员能针对这些历史数据进行分析,发现股票的运行规律和走势情况,这会在证券从业人员作未来市场决策时起非常重要的作用。

    1业务分析

    证券行业的业务数据主要由证券交易过程中产生的数据组成,其中与本文预测目的有关的就是行情数据,某支股票的历史收盘价是预测的重要依据:其中的以gi表示股票在i日的股价,股票价格的变化应该是存在某些规则,如果某天的股价为gn,那么g1,g2....gn-1表示它前面n-1天的股价,gn与g1,g2....gn-1之间应该存在某种关系,而找出这种关系是解决问题的关键,本文拟采用BP神经网络算法来实现。

    2 BP神经网络算法原理

    1)BP神经网络算法模型[1]

    BP神经网络算法是模拟人神经网络工作原理具自学习、自适应性的一种高效算法。

    神经网络结构是由很多节点构成,这些节点分成三类,一部分属于输出层记为I1 I2 I3 I4,一部分属于隐藏层记为 Y5 Y6? Y7 Y8 ,一部分属于输出层记为O9,每个节点在接收到输入信号后会处理成输出信号,且在此结构中节点并不孤立存在,它们相互之间存在关联,形成一个网络,具体如下:

    a)I1 I2 I3 I4是输入节点,其输入不做处理即输出:

    Out_I1=Input_I1 ;Out_I2=Input_I2;

    Out_I3=Input_I3 ;Out_I4=Input_I4;

    b)Y5 Y6? Y7 Y8是隐藏层节点其输入需做处理后输出:

    Input_Y5=Out_I1*W15+Out_I2*W25+Out_I3*W35+Out_I4*W45 +θ5;

    Input_Y6=Out_I1*W16+Out_I2*W26+Out_I3*W36+Out_I4*W46 +θ6;

    Input_Y7=Out_I1*W17+ Out_I2 *W27+ Out_I3 *W37+ Out_I4 *W47+θ7;

    Input_ Y6=Out_I1*W18+ Out_I2 *W28+ Out_I3*W38+ Out_I4 *W48+θ8;

    Out_Y5=f(input_Y5);

    Out_Y6=f(input_Y6);

    Out_Y7=f(input_Y7);

    Out_Y8=f(input_Y8);

    其中f是处理函数;Wij是指第i个节点到第j个节点的权值,以Y5节点为例,它的前续节点有I1 I2 I3 I4,这些节点的输出信息都可以作为 Y5节点的输入,但是所占权重不同,而权重分别就是W15 W25 W35 W45。

    c)O9是输出层节点,其输入需做处理后输出:

    Input_O9=Out_Y5 *W59+ Out_Y6 *W69+ Out_Y7 *W35+ Out_Y8 *W89+θ9;

    Out _O9=f(input_O9);

    Out _O9是该节点计算出的实际输出,该节点的理论输出可由训练集得到,记为Out_O9,这两者之间值并不相等,也就是经由实际神经网络结构计算出的值存在误差,决定这个误差的就是Wij即节点之间的权值,所以需要对神经网络结构中的权值不断修正,以使误差缩小到一个可以允许的范围,这个过程就是神经网络训练过程。

    2)BP神经网络算法的流程[2]

    神經网络训练是一个重复的过程,需要不断从训练集中取出记录向量进行训练,将取出每一个记录向量分成输入向量和输出向量两部分,输入向量作为输入层节点的值,输出向量作为输出层节点的理论值,通过运转网络来获得输出层节点的实际值,所以首先可求出输出层节点的误差,然后根据误差以及特定参数调整权值,新的权值不断迭代旧的权值,直到迭代后某次误差足够小或者迭代次数达到最大即停止,权值修正过程与计算节点输出的过程正好相反[3],是一个反向的过程。Errj是第j个节点的误差,误差计算和权值修正的顺序应该符合刚才的反向过程,最先计算的应该是第9个节点,即Err9,能更新的权值有W59 W69 W79W79;其次计算Err5、Err6、Err7、Err8能更新的权值有W15 W25W35 W45W16 W26 W36W46 W17 W27 W37 W47 W18 W28 W38 W48具体公式如下:

    Errj= Out _Oj- Out _Oj”

    Wij(k+1)= Wij(k)+ △Wij = Wij +(1-α)*L* D(k)+α* D(k-1)

    D(k)= Wij(k)-Wij(k-1)

    其中参数α为弹性因子,L为学习率,k为迭代次数。

    3 BP神经网络在股票行情预测的过程

    本文主要研究对股票变化趋势作出预测,预测是数据挖掘研究的分支之一,在数据挖掘中要发现预测型知识可以简单遵循三个步骤[4]:

    (1)从历史数据中提取出与数据挖掘有关的数据,再分割成两部分,一部分作为训练集,一部分作为测试集。

    (2)选择合适的算法对训练集进行训练,训练的过程也就是找出股票运行规律的过程,本文拟采用BP神经网络算法来完成。

    (3)对发现的规律进行评估,即用测试集的数据来验证找出规律的正确性。

    (4)根据历史数据找出的规律对未来的走势进行预测。

    3.1数据处理[5]

    (1)数据准备

    本文得到的数据来从证券交易所的数据仓库中直接导出,且已经删除某些无效记录,该数据集中包括200个交易日的数据信息,包括证券代码、证券名称、昨日收盘价、今日开盘价以及k指标、最近成交价、成交数量、成交金额、成交数量等内容。

    (2)数据清理

    在数据准备阶段准备的数据集中涉及的数据项不是都可以直接进行训练,其中的某些错误数据以及与数据挖掘无关的数据应该清理掉,得到干净的数据进行训练才行,因为某些错误的数据混入其中,可能会对整个过程产生“干扰”,对结果产生干扰,例如:因股价每日变动剧烈,往往前一日跌了数百点,隔日马上涨回数百点,这种变动极端的经常出现,对分析是相当不利的。为了消除此种股价震动的噪声,本研究以中位数的方式,来取得当日股价的平均价格,其公式如下: 假设i日股价形态为Xi=(Oi,Hi,Li,Ci), 其中Oi为开盘价,Hi为最高价,Li为最低价,Ci为收盘价,则i日的股价平均水准为[6]: Pi=MEDIAN(Oj, Hj,Lj,Cj)

    (3)数据分割

    实施数据挖掘后所得的结果,需要评估分析,因为某些得到的初始的结果可能是无效的或者只是满足某个特定的数据集,所以需要把数据准备阶段处理好的数据集分割成两部分:一个训练集和一个测试集,如果用训练集训练出的规律,利用测试集进行测试,也能得到正确结果,可以认为训练阶段得到的规律是合理的。

    3.2 BP神经网络算法对训练集进行训练

    (1)实验设计

    设神经网络的输入层节点有10个,输出层节点3个,隐藏层并不固定,可以调整(个数陆续选取2,4,6个),并设置学习率为0.05,动量因子0.9,选取100个交易日的行情数据进行训练。

    (2)实验结果

    评估结果也证实选择隐藏节点为4得到的预测效果也最好。

    4结果分析

    神经网络训练是一个复杂的过程,参数学习率,动量因子的选取会直接影响训练效果,如何取定参数需要经过大量实验验证,在实验阶段,动量因子及学习率取值相同的情况下,隐藏节点的个数分别选取2个、4个和6个,隐藏节点选取较小的2,得到6次实验的训练误差比较大,所以将隐藏层个数增至4个,误差相对变小,继续将隐藏层节点数增至6个,但误差并未继续变小,证明隐藏个数并非越大越好,也并非越小越好,应根据大量实验结果选取一个合适的数,原因是:隐藏层节点太少,神经网络结构过于简单,那么它的学习能力和分类能力就会降低,但是隱藏层节点太多,有会让神经网络结构过于复杂,网络负荷过重,效率也会降低,推广能力变差。据此得出结论:训练一方面要保证神经网络的分类能力,一方面也要保证神经网络的推广能力。

    参考文献:

    [1] 沈世镒.神经网络系统理论及其应用[M].北京:科学出版社,2000.

    [2] 赵燕.基于神经网络的股票预测分析和研究[D].西安:长安大学,2006.

    [3] 袁晓东.神经网络在股票价格预测中的应用[J].北京机械工业学院学报,2002,17(3):70-74.

    [4] 周晓宇,李慎之,戚晓芳,等.数据挖掘技术初探[J].小型微型计算机系统,2002,23(3):342-346.

    [5] Han J W,Kamber M.数据挖掘:概念与技术[M].2版.范明, 孟小峰, 译.北京:机械工业出版社, 2007.

    [6] 殷洪才,赵春燕.基于神经网络股票预测的研究[J].哈尔滨师范大学自然科学学报,2007,23(3):47-49,55.

    【通联编辑:代影】