摘要以往神经网络在对金融时间序列预测的过程中存在训练不足和训练过度的问题。为了使神经网络在进行预测之前得到最佳的训练,作者提出了自适应神经网络预测算法,可以使神经网络在训练的过程中自动选择参数和与之对应的最佳训练次数,并利用matlab软件编码来实现算法,还利用股市中的真实数据对算法进行了检验和实证分析。
【关键词】金融时间序列预测 神经网络 算法
1 神经网络在金融时间序列预测中的应用
关于金融时间序列的分析和预测一直被人们所重视,但是由于金融时间序列的非线性和高度复杂性,导致众多分析和预测方法的应用效果都难如人意。近年来,计算机技术和人工智能技术的迅速发展,为金融时间序列的建模和预测提供了新的技术和方法。
神经网络因为其卓越的非线性映射的拟合和泛化能力,在非线性系统的预测方面得到了广泛的应用。RBF网络是一种新颖有效的前馈型神经网络,由于输出层是对中间层的线性加权,因此该网络避免了像BP网络那样繁琐冗长的计算,具有较高的运算速度和外推能力,同时,还使得网络具有较强的非线性映射的能力。RBF网络是通过径向基函数的线性组合实现从输入空间RN到输出空间RM的非线性映射。金融时间序列是一类非线性较强的时间序列,对他们进行预测,实质上就是先找出隐藏在金融时序中的从RN到R的非线性映射关系,之后再利用非线性映射关系和历史数据计算未来的时序数据。因此,可以说径向基函数网络特别适合于金融时间序列的预测。
2 自适应神经网络预测算法
神经网络在对时间序列的未来数据进行预测之前,需要利用已有的历史数据进行适当的训练,即让神经网络通过训练,找到最佳的参数设置和最合适的训练次数,从而可以较好的拟合出金融时间序列中所隐藏的非线性映射关系。
RBF神经网络的创建代码为:
net=newrbe(P,T,spread);
其中,P为输入数据,T为输出数据,spread为径向基函数的分布密度,spread越大,预测结果越平滑,但是,并不是越大越好。过大的spread会使神经网络结构过于复杂,反而会降低预测精度。当spread确定以后,对神经网络的训练又存在训练不足和训练过度的问题。显然,如何确定spread的值,以及如何找到spread对应的最佳训练次数直接关系到预测效果的好坏,也是金融时间序列预测算法设计的关键。为了使神经网络在进行预测之前得到最佳的参数设置和训练,作者提出了自适应神经网络预测算法,可以使神经网络在训练的过程中自动选择参数和与之对应的最佳训练次数。
自适应神经网络预测算法通过让神经网络进行多组多轮的训练和预测,通过对比预测效果从而找到参数的最佳取值和与之相对应的最佳训练次数,最后利用这一组参数值和训练次数完成实际预测。
2.1 算法的基础设计
设为金融时间序列的历史观测值,由于金融时间序列中蕴含的相关性是有长度限制的,因此这里截取了金融时间序列的后300个数据作为神经网络训练与预测的数据,其中前297个数据,即
{χt/t=T-299,T-298,L,T-3}作为
神经网络的训练数据集,最后三个数据,即{χt/t=T-2,L,T}作为神经网络的检验数据集。实践证明:当令 N=18,M=1时,可以收到较好的预测效果。即让神经网络通过学习拟合出金融时间序列中蕴含的18个数据到1个数据的映射关系。
2.2 算法的流程设计
Step1:设定spread的值;
Step2:设定训练次数,让神经网络在该次数下进行训练和预测,并记录下预测误差;
Step3:重复步骤2多次,之后对比预测误差,选择最小的预测误差所对应的训练次数作为spread下的最佳训练次数;
Step4:重复步骤1,2,3多次,可以得到多组srpead值和与之对应的最佳训练次数,以及相对应的预测误差,选择最小的预测误差所对应的那组spread值和训练次数作为参数spread的最佳取值和与之相对应的最佳训练次数;
Step5:利用步骤4得到的最佳spread取值和最佳训练次数进行预测。
2.3 算法的伪Matlab代码描述
创建m行3+k列的数组I,每行用于存
储在不同参数和相对应的最佳训练次数下得到的仿真数据。
for spread=1:m
创建n行3+k列的数组II,每行用于存
储在不同训练次数下得到的仿真数据。
for num=1:n
{利用金融时序中的后50+10*num个数据对网络进行训练和仿真,求出的仿真数据存储在数组II第num行里。};
end
创建n行1列的误差数组III,每行用
于存储在不同训练次数下得到的仿真
数据的最大绝对误差。
for num=1:n
{计算num组仿真数据与真实数据的最大绝对误差,并将此误差存储在误差数组III的第num行内。}
end
依据最大绝对误差最小为最优的原则,通过误差数组III找到使预测误差最小的那组仿真数据,并将该组仿真数据存储到数组I的spread行内。即为在参数为spread和对应的最佳训练次数下得到的最优仿真数据。
end
创建m行1列的误差数组IV,每行用于存储在不同参数值spread和相对应的最佳训练次数下得到的仿真数据的最大绝对误差。
for spread=1:m
{计算数组I中spread组仿真数据与真
实数据最大绝对误差,并将此误差存储
在误差数组IV的第spread行内。}
end
再依据预测最大绝对误差最小为最优的原则,通过误差数组IV找到使预测误差最小的仿真数据,保存数据并绘图。该组仿真数据就是神经网络在最佳的参数设置和相对应最佳训练次数下得到的最优仿真数据。这组仿真数据的前三个数据为检验数据,通过观察检验数据曲线和实际数据曲线的逼近程度可以判断出神经网络模型的好坏;后k个数据即为金融时间序列未来k天的预测值。训练数据见表1,检验与预测数据见表2。
3 算法的检验与实证分析
下面以上证综合指数2013年11月13日之前的收盘指数时间序列作为试验数据,利用上面所介绍的自适应神经网络预测算法对上证综指未来3天的收盘指数进行预测试验。令m=40,n=25,k=3,试验结果见图1。
接下来再以一般的神经网络预测算法进行建模预测,令径向基函数的分布密度为196,训练次数为127。预测结果见图2。
图中的蓝色曲线为历史数据线,蓝色的星号为历史数据点;红色的曲线为预测数据线,红色的星号为预测数据点。
两种算法的预测结果和实际数据的比较见表3。
两种算法的预测误差对照见表4。
通过对比可知:自适应预测算法的预测结果不管是从定量(数值)分析上,还是从定性(趋势)分析上都要优于一般预测算法。自适应预测算法给出的预测结果基本上能够反映出股票价格时序数据未来3天的走势。效果远远好于指定训练参数和训练次数的神经网络模型的给出预测结果。对于帮助证券投资者预先作出合理决策具有重要的指导意义。
自适应神经网络预测算法理论上可以给出非线性映射关系的最优拟合模型,但是它受限于计算机的计算能力,实际应用中只能获得相对最优的拟合模型。
参考文献
[1]张世英,许启发,周红.金融时间序列分析[M].北京:清华大学出版社,2008.
[2]飞思科技产品研发中心.神经网络理论MATLAB7实现[M].西安:电子工业出版社,2005.
[3]李兴绪,崔建福.MATLAB在金融时间序列分析及建模中的应用[J].计算机工程与科学,2004,26(7):100-104.
[4]杨晴.神经网络方法在证券市场预测中的应用研究[D].电子科技大学硕士学位论文,2004(03).
[5]刘劲松.自适应预测方法在时间序列数据挖掘中的应用[J].应用能源技术,2007(07):42-44.
[6]吕林涛,王鹏等.基于时间序列的趋势性分析及其预测算法研究[J].计算机工程与应用,2004(19):172-174,208.
[7]A.A.Mahdi,A.J.Hussain,and D.Al-Jumeily.Adaptive Neural Network Model Using the Immune System for FinancialTime Series Forecasting[C]. 2009 International Conference on Computational Intelligence, Modelling and Simulation,2009,104-109
[8]Charles Wong•Massimiliano Versace.CARTMAP:a neural network method for automated featureselection in financial time series forecasting[J].Neural Comput & Applic,2012(21).
作者单位
1.沈阳工业大学辽宁省沈阳市110870
2.中国联合网络通信有限公司辽宁分公司辽宁省沈阳市110002