APP下载

基于粒子优化神经网络算法的股票价格预测方法

2023-12-25王一斐

电脑知识与技术 2023年31期

王一斐

摘要:为了提高股票价格预测的准确性并降低预测耗时,文章引入了粒子优化神经网络算法。通过融合神经网络和粒子群优化算法,构建了一个更有效的预测模型,以更好地反映股票价格的动态变化。同时,引入混沌干扰因子和变异因子增加算法多样性,进一步提高预测的精确性和稳定性。这种基于粒子优化神经网络的方法为股票价格预测领域的研究和应用提供了一种新的解决方案。

关键词:股价预测;粒子优化;PSO;神经网络算法;SVM

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

文章编号:1009-3044(2023)31-0041-03

开放科学(资源服务)标识码(OSID) :<G:\飞翔打包文件一\电脑2023年第三十一期打包文件\9.01xs202331\Image\image246.png>

随着全球金融市场的不断扩展和金融技术的快速发展,股票市场作为重要的投资领域吸引了广泛的关注。股票价格预测成为投资者、金融机构和研究人员研究的核心问题。较为准确的股票价格预测不仅有助于投资者做出明智的投资决策,还可以为金融机构提供更好的风险管理工具。由于股票市场受宏观经济指标、公司业绩、市场情绪等复杂因素的影响,股票价格预测具有非常大的难度。

传统的股票价格预测方法往往基于统计学模型或时间序列分析,如移动平均法和指数平滑法等。这些方法在一定程度上能够提供预测结果,但在应对非线性关系和多变量影响时往往表现不佳。此外,传统方法的预测精度和效率也受到极大限制。近年来,为了克服传统方法的局限性,机器学习技术逐渐开始应用于股票价格预测领域。神经网络作为一种强大的非线性模型,在捕捉复杂股票价格关系方面显示出了巨大潜力。然而,神经网络的参数优化往往依赖于梯度下降等迭代方法,这在大规模数据和复杂网络结构下可能导致收敛速度较慢的问题。

1 传统股票价格预测方法

1.1 移动平均法

移动平均法是一种基本的平滑方法,它通过计算一段时间内股票价格的均值来预测未来的价格。然而,该方法在应对非线性趋势和突发事件时表现不佳。其公式为(1) :

[MAt=P1+...+Ptt] (1)

其中,MAt表示时间t的移动平均值,P1表示第1个时间点的股票价格,t为移动平均的时间窗口大小。

1.2 指数平滑法

指数平滑法是基于加权平均的思想,对历史数据进行指数加权平均,预测未来的股票价格。然而,该方法无法准确捕捉复杂的市场波动和非线性变化。其公式如下(2) :

[ESt=α⋅Pt+1-α⋅ESt-1] (2)

式中,ESt表示时间点t的指数平滑值,Pt表示时间点t的股票价格,α为平滑系数。

1.3 自回归移动平均模型

自回归移动平均模型(ARIMA) 是一种常用的时间序列分析方法,它考虑了数据的自相关和移动平均性质,以捕捉时间序列的趋势和周期性变化。然而,该模型对数据的平稳性和线性关系有一定要求,无法处理非线性关系和复杂的市场情况[1]。

2 基于粒子优化的神经网络算法

2.1 粒子优化算法

粒子优化算法(Particle Swarm Optimization,PSO) 是一种启发式优化算法,其核心概念源自模拟鸟群或鱼群中个体之间的协作与信息共享。粒子优化算法可以用来在股票价格预测中优化神经网络模型的参数,提高预测准确性。PSO算法中,每个搜索解被表示为一个粒子,每个粒子的位置代表神经网络的参数配置。粒子通过跟踪个体历史最优位置和群体历史最优位置来调整自身位置,从而逐渐逼近最优解[2]。算法执行步骤如式(3) :

更新粒子速度:

[Vit+1=w?Vit+c1⋅r1⋅Pbest,it-Xit+c2⋅r2⋅Gbestt-Xit] (3)

式中,Vi(t+1)是粒子i在时间t+1的速度,w是惯性权重,c1和c2是学习因子,r1和r2是随机数,Pbest,i(t)是粒子i的历史最优位置,Gbest(t)是粒子群体的最优位置,Xi(t)是粒子i的当前位置。

更新粒子位置(4) :

[Xit+1=Xit+Vit+1] (4)

计算适应度(5) :

[FitnessXit+1=1ni=1nyi-yi2] (5)

更新个体最优位置和群体最优位置(6) :

[Pbest,it+1=Xit+1,若FitnessXit+1<FitnessPbest,itGbestt+1=Xit+1,若FitnessXit+1<FitnessGbestt] (6)

2.2 引入混沌干扰因子与变异因子

引入混沌干扰因子(Chaos Perturbation Factor) 和变异因子(Mutation Factor) 是增加算法多样性和全局搜索能力的一种有效方法。这些因子能够使粒子在搜索过程中具有更大的随机性,从而更好地探索参数空间,避免陷入局部最优解中。混沌干扰因子是一种引入随机性的方法,用于调整粒子的速度和位置。其核心思想是利用混沌序列生成随机的扰动项,以增加搜索的多样性。混沌序列通过Logistic 映射等复杂的非线性动力学方程来生成(7) :

[xn+1=r⋅xn⋅1-xn] (7)

式中,r是控制参数,而xn表示混沌序列的第n个元素[3]。将混沌序列映射到合适的范围,并结合粒子原有的速度和位置,可以得到混沌干扰因子C(8) :

[C=xn-minxmaxx-minx] (8)

这里的min(x)和max(x)分别是混沌序列的最小值和最大值。混沌干扰因子会在每次迭代中对粒子的速度和位置进行调整,从而增加搜索的多样性。

变异因子则用于控制粒子在搜索空间中的局部变化。变异因子是一个随机项,可以调整粒子的位置。变异因子的引入能够保持算法的多样性,避免陷入局部最优解。变异因子可以表示为M = R × 搜索空间范围,随机数R在每次迭代中都会由程序重新生成。

2.3 神经网络模型构建

本研究选择以下几个关键特征进行预测:1) 股票/股指历史价格;2) 成交量;3) EMA;4) RSI。基于这些特征,可以设定神经网络模型的输入层参数如下:

股票/股指历史价格:作为一个序列数据,选择过去若干交易日的股票/股指收盘价作为特征。如选择过去15个交易日的数据,那么输入层的节点数就是15。

成交量:成交量通常与股票/股指价格的波动密切相关,本研究选择过去12个交易日的成交量作为另一个特征。类似地,如选择过去X个交易日的成交量数据,那么需要额外添加X个节点。

技术指标:EMA和RSI是常用的技术指标,用于衡量股票价格的趋势和市场买卖双方力量[4]。引入EMA和RSI两种技术指标作为特征,那么需要添加2个节点。

总结起来,本研究选择了过去15个交易日的股票/股指收盘价、过去12个交易日的成交量数据以及2种技术指标作为输入特征,输入层的节点数为:15 + 12 + 2 = 29。每个节点对应一个特征,它们将作为神经网络模型的输入,用于预测股票价格的变化趋势。

3 实验设计与数据处理

3.1 数据收集与预处理

选择了沪深300指数、中证500指数以及中信证券(股票代码:600030) 自2012年9月13日至2022年5月24日的日K(开盘价、收盘价、最高价、最低价以及成交量,来源:Wind) 作为回测数据,用于构建和评估基于粒子优化神经网络算法的股票价格预测模型。在数据预处理阶段,采取了以下方法来处理原始数据:

1) 缺失值处理。首先检查数据中是否存在缺失值。对于存在缺失值的数据点,使用线性插值方法进行填充,保持数据的连续性。设定前一个已知数据点为y1,后一个已知数据点为y2,它们之间的时间间隔为x。对于缺失值yi,使用以下公式进行插值(9) :

[yi=y1+xx2-x1⋅y2-y1] (9)

这种方法确保了缺失值的填充是基于相邻数据点之间的线性趋势,从而保留了数据的内在模式。如果缺失值较多或无法合理插值,则将这些数据点从数据集中删除。

2) 异常值处理。使用统计方法检测数据中的异常值。对于价格数据,可以計算每日价格与其移动平均值之间的差异,并设置阈值来判定异常值。对于成交量数据,可以根据历史成交量的范围来判断是否存在异常值。

3) 数据标准化。将股票价格和交易量等连续数据进行标准化,以便在模型训练过程中不同特征之间的尺度保持一致。采用Z-score标准化方法,将数据转化为均值为0,标准差为1的分布。对于某个特征x,其Z-score标准化的计算方式为(10) :

[Z=x - μσ] (10)

式中,Z表示标准化后的值,x是原始数据的值,μ是该特征的均值,σ是该特征的标准差。对股票价格和成交量等特征应用上述Z-score标准化公式,可以将这些特征转化为具有相同均值和标准差的标准分布,在模型训练中减少不同特征之间的尺度差异对模型性能的影响,从而提高模型的稳定性和收敛速度。

4) 数据分割。整个数据集的70%划分为训练集,30%划分为测试集。这样可以确保模型在未见过的数据上进行测试,评估其预测性能。

5) 时间序列处理。对于时间序列数据,采用滑动窗口方法。将时间序列数据划分为多个窗口,每个窗口包含一定数量的连续数据点,用于训练和测试模型的滚动预测能力。

3.2 实验设置与参数选择

为了评估基于粒子优化神经网络算法的股票价格预测方法的性能,在实验前进行了软硬件设置和参数选择:

硬件配置 Intel Core i9-11900K(3.50 GHz,8核心16线程),32GB DDR4内存(3200MHz) ,NVIDIA GeForce RTX 3080 × 3(10GB GDDR6X,8 704个CUDA核心),确保模型的训练和测试过程具有足够的计算资源。

软件配置 使用Python 3.10编写实验脚本,借助TensorFlow和Keras等深度学习框架来构建神经网络模型。还使用了NumPy和Pandas等库来进行数据处理和分析。实验代码在Jupyter Notebook中运行,并通过Git进行版本控制。

神经网络模型配置 构建了一个多层感知器(Multi-Layer Perceptron,MLP) 的神经网络模型,其中包括输入层、若干隐藏层以及输出层。输入层的节点数根据特征的数量来确定(本研究为29个),每个隐藏层都包含若干神经元,输出层用于进行股票价格的回归预测。本文选择了ReLU作为激活函数,并在每个隐藏层之间添加了Dropout层以防止过拟合。

PSO算法参数设置 在粒子优化神经网络算法中设置了以下参数:惯性权重w=0.7,学习因子c1 = c2 = 2,随机数r1和r2的范围为[0, 1]。为了引入混沌干扰因子,选择了Logistic映射方程,并通过设置控制参数r来生成混沌序列。变异因子M通过随机数R与搜索空间范围相乘得到。

训练和测试参数 将训练集输入模型进行训练,采用均方误差(Mean Squared Error,MSE) 作为损失函数。训练过程选择了学习率为 0.000 3的Adam优化器,并设置了64的批量大小,训练集迭代18轮次。为了防止过拟合,在训练过程中采用早停策略,并在验证集上监控模型性能[5]。

3.3 评价指标的选择

1) 均方根误差(Root Mean Squared Error,RMSE) 。RMSE是衡量预测值与实际值之间误差的标准差,能够反映模型预测的精度。其计算公式如下(11) :

[RMSE=1ni=1nyi-yi2] (11)

式中,n表示样本数量,yi为实际股票价格,ŷi为模型预测的股票价格。

2) 平均绝对误差(Mean Absolute Error,MAE) 。MAE是预测值与实际值之间绝对误差的平均值,用于衡量模型的预测准确性。其计算公式如下(12) :

[MAE=1ni=1nyi-yi] (12)

3) 预测准确率(Prediction Accuracy) 。将预测值与实际值进行比较,通过设定一定的误差容忍度,可以计算出预测准确率。假设误差容忍度为δ,预测准确率可表示为(13) :

预测准确率 = (1 - 误差在δ范围内的样本数 / 总样本数)× 100%  [(13)]

4) 预测耗时(Prediction Time) 。預测耗时是模型进行预测所需的时间,用于评估模型的计算效率。本文在实验中记录了每次预测的时间,并计算平均预测耗时。

4 预测结果分析

4.1 算法效果与准确性分析

不同算法对股指/股价的预测结果见表1。

从RMSE和MAE的数据来看,基于粒子优化神经网络算法的股票价格预测方法在所有情况下都表现出相对较低的误差值。也就是说该算法在预测股票价格时更能接近实际值,与传统的移动平均法和支持向量机(SVM) 相比,具备更高的预测精度。在股票市场中,预测的准确性对于投资者的决策至关重要,因此低误差值是一项显著的优势。从预测准确率的角度来看,基于粒子优化神经网络算法的股票价格预测方法在所有情况下均取得了较高的预测准确率。尤其在中信证券(600030) 这个具体个股上,预测准确率达到了80%以上,展现了该方法在个股预测中的优越性。高预测准确率意味着该方法能够相对准确地判断股价的涨跌趋势,为投资者提供更可靠的参考。与移动平均法和支持向量机相比,基于粒子优化神经网络算法的方法在预测沪深300和中证500的股指价格时也表现出更低的误差和更高的准确率。这说明该算法在股指价格的预测中同样具有较好的适用性,能够更精准地捕捉股市整体趋势。

4.2 预测耗时与效率比较

预测耗时与效率比较见图1。

可以看出,基于粒子优化神经网络算法的股票价格预测方法在平均预测耗时方面表现相对较低,平均预测耗时为23.7 s。相比之下,移动平均法和SVM方法分别需要45.1 s和38.9 s的预测耗时。这说明基于粒子优化神经网络的方法在预测过程中具有更高的计算效率,能够更快地生成预测结果。此外,还观察到基于粒子优化神经网络算法的方法在CPU和GPU的使用率方面相对充分,分别为75.23%和55.87%,意味着该方法能够充分利用计算资源,实现更高效的预测。同时,其内存占用为17.2GB(53.8%) ,与其他算法相比内存占用较高。

5 结束语

虽然粒子优化神经网络方法在预测方面表现出较好的结果,但仍然需要进一步探究不同因素对预测结果的影响,以及如何更好地调整模型参数来提高预测性能。本文提出的基于粒子优化神经网络算法的股票价格预测方法为股票市场的投资决策提供了一种新的有效工具。未来的研究可以在此基础上进一步优化算法,拓展数据源,实现更精准的预测,为投资者提供更有价值的决策支持。

参考文献:

[1] 翁紫霞.基于ARIMA模型的股价分析与预测——以建设银行为例[J].现代信息科技,2023,7(14):137-141.

[2] 朱文元.基于改进粒子群算法优化神经网络的股价预测研究[D].秦皇岛:燕山大学,2022.

[3] 刘玲伶,李梅梅.一类指数型离散Logistic迭代方程的动力学分析[J].重庆师范大学学报(自然科学版),2021,38(6):71-76.

[4] 李娜,毛国君,邓康立.基于k-means聚类的股票KDJ类指标综合分析方法[J].计算机与现代化,2018(10):12-17.

[5] 任佳屹,王爱银.融合因果注意力Transformer模型的股价预测研究[J].计算机工程与应用,2023,59(13):325-334.

【通联编辑:光文玲】