摘 要 BP网络通过对以往历史数据的学习,找出期货市场发展的内在规律,并将其存储在网络具体的权值、阀值中,用以预测未来的走势。文章在深入分析期货市场预测面临的关键问题的基础上,探讨利用BP(Back Propagation)神经网络对期货价格走势进行分析和预测的可行性。
关键词 期货价格预测;BP神经网络;matlab应用
引言
期货市场作为现代金融市场的一个重要方面,从其诞生那天开始就引起了投资者的广泛关注。期货价格准确预测也成为了金融分析师们和投资者们所不懈追求的目标。一百多年来,一些分析方法随着期货市场的产生和发展逐步完善起来,如:K线图分析法、指数平滑法、灰色预测法等。这些方法的一个共同特点是对价格波动的长期走势有较好的预测效果,而短期波动的预测的效果往往难以令人满意。在实际金融投资中短期期货价格的变化往往是投资者更感兴趣的信息。基于BP 算法的前馈网络可以以任意精度逼近任何非线性函数,对短期价格预测效果良好。因此,本文选择BP神经网络作为理论模型对期货价格做出预测。
一、期货的基本概念
期货(Futures),通常指期货合约。是由期货交易所统一制定的、规定在将来某一特定的时间和地点交割一定数量标的物的标准化合约。这个标的物,可以是某种商品,也可以是某个金融工具,还可以是某个金融指标。期货合约的买方,如果将合约持有到期,那么他有义务买入期货合约对应的标的物;而期货合约的卖方,如果将合约持有到期,那么他有义务卖出期货合约对应的标的物,期货合约的交易者还可以选择在合约到期前进行反向买卖来冲销这种义务。广义的期货概念还包括了交易所交易的期权合约,大多数期货交易所同时上市期货与期权品种。
二、BP神经网络预测方法介绍
人工神经网络是在现代神经科学研究成果的基础上,采用仿生学原理,从模仿人脑基本功能的角度发展起来的一种计算方法。本方法用于预测期货市场的可行性在于期货市场中影响期货价格的因素包罗万象,在期货价格变动的长期趋势中,在一段较长时期内有某些确定的基本因素起作用,有一定的趋势性,但又受许多随机因素的影响,可以说期货价格变动是一种不规范的经济行为。因此,人们一直难以用传统的统计经济学方法建立期货市场的有效数学模型。而神经网络具有很强的非线性模拟、自组织、自学习等能力,因此,神经网络在期货市场中的应用具有高度的适应性及强大的参考价值。
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
三、预测应用的步骤与实施
这是理论付诸实践的部分,本文以上海期货交易所的RU201005合约(2010年01月01日至2010年03月31日)为例,应用BP神经网络对该期货的价格进行预测。
(一)输入输出变量的构造
考虑到不同期货品种的数据来源不同,它们的交易状况也不相同,为了研究方便,本文使用的模型的输入变量由它们共有的指标组成,这些指标是当日开盘价、当日最高价、成交量、开盘量等。
我们选择后3 天均价作为输出项, 这对实际的操作更具有指导意义, 平缓了价格的异常波动。选取未来3 天均价作为模型输出变量,即输出层为单变量。
我们利用相关系数法选取40个训练数据的每日开盘价、最高价、最低价、收盘价、成交量、持仓量以及前3 天均价与后3 天均价进行相关性分析, 选择相关性系数高的因素作为输入项,统计结果显示当日开盘价、当日最高价、当日最低价、当日收盘价、当日成交量、当日持仓量以及前3天均价与后3 天均价的相关系数均达到了相关性要求, 即相关性指数都大于0.5,所以我们将选择以上7 个参数作为输入层参数,确定下来的输入变量如下表。
表 1输入变量
输入变量
|
X1
|
X2
|
X3
|
X4
|
X5
|
X6
|
X7
|
因变量指标
|
当日开盘价
|
当日最高价
|
当日最低价
|
当日收盘价
|
当日成交量
|
当日持仓量
|
前3天均价
|
(二)数据预处理
本文是应用神经网络进行短期预测分析,这就需要对神经网络的传递函数的适用范围有所了解,在进行神经网络预测之前,为避免原始数据过大造成网络麻痹,所以要对原始数据进行归一化处理。对于预测值,由于变化幅度较大,也不宜直接作为神经网络的输出,因此仍需进行必要的规划。
归一化的算法很多,在本系统中,神经网络的传递函数是基于S型的函数,其输入范围在区间[0,1]最佳。采用如下的算法:要求将数据归一化到[0,1]之间,首先求出这段时间该原始数据库的最大值Xmax 和最小值Xmin ,X 为归一前后的数据,取期货价格下降隶属度:为归一后的数据。这样不但避免了输入数据落入饱和区域,保持了数据的原有特征,同时也带有了模糊意义。
由于 Xmin≤Xj≤Xmax,所以0≤Xj≤1 。当 Xj接近于1时,表明期价下降的的隶属度很大;当X 接近于0时,表明期价下降的隶属度很小,即价格要上升。
对网络输出,采用对输出数据的反归一化过程使输出数据与原始数据在同一个区域之内,反归一化的公式为:
X=Xmin+(Xmax-Xmin)Xj
完成数据预处理后,将已知的时间序列数据分为两组,前70%~80%的数据用来构成训练样本,后20%-30%的数据组成检验样本。
(三)输入层节点数的确定
期货价格预测指标有7个,所以应该有7个输入层的输入,因此,BP神经网络的输入层节点数就相应地确定为n=7个。
(四)输出层节点数的确定
期货价格预测结果只有一个,因此网络的输出层只设为m=1个输出节点。
(五)隐含层节点数的确定
到目前为止,如何选定最佳的隐含层节点个数仍是一个亟待解决的问题。如果我们选择的隐含层节点数太少,则会使整个神经网络的收敛速度变慢,且不易收敛,相反,如果我们选择的隐含层节点数太多,则会引起神经网络的拓扑结构复杂、迭代学习时计算量大,误差也不一定最佳等问题。此外隐含节点太多还会增加训练时间。目前,比较常见的确定隐含层节点数量的经验公式有:=5。n输入层节点个数,m输出层节点个数,s隐含层节点个数。
(六)神经网络层数的选择
由于3层BP可以以任意精度逼近任意映射关系,所以选择结构相对简单的3层BP神经网络。
(七)作用函数的选定
BP网络的作用函数有多种。Log-sigmoid型函数的输入值可取任意值,输出值在0和1之间;tan-sigmod型传递函数tansig的输入值可取任意值,输出值在-1到+1之间;线性传递函数purelin的输入与输出值可取任意值。BP网络通常有一个或多个隐层,该层中的神经元均采用sigmoid型传递函数,输出层的神经元则采用线性传递函数,整个网络的输出可以取任意值。各种传递函数如图1所示。
图1各种传递函数
因此,在这个模型中,选择将BP神经网络隐层单元的作用函数取为logsig函数,函数形式为: ,将输出层的作用函数选择为purelin函数。
(八)运用matlab编程实现模型
本文选用MATLAB6.5软件的神经网络工具箱进行建模。MATLAB软件的神经网络工具箱以人工神经网络理论为基础,用MATLAB语言构造出典型的神经网络的激活函数,如S型、线性型、竞争型等激活函数,使设计者对所选定网络输出的计算变成对激活函数的调用。
另外,根据各种典型的神经网络的修正网络权值的规则,加上网络的训练过程,用MATLAB语言编写出各种网络设计与训练的子程序,网络的设计者则可以根据自己的需要去调用和修改工具箱中有关神经网络的设计训练程序。
借助于matlab编写程序(代码略),通过多次对神经网络模型进行训练,达到理想的误差值,且多次运行以后得到稳定的状态:如下图
图 2 训练过程误差值收敛图
如下是训练完以后的仿真结果:
a = 0.6878 0.6854 0.7680 0.7458 0.6780 1.0077 1.0095 0.8590 1.0486 0.8773 0.7779 0.7941 0.8681
0.8619 0.6542 0.6457 0.6588 0.5055 0.3177 0.2716 0.1735 0.2916 0.2675 0.2447 0.1211 0.1086
0.0953 0.2069 0.4515 0.6215 0.7663 0.7040 0.7413 0.6673 0.6601 0.7265 0.5767 0.5834 0.5918 0.6055
学习样本的拟合效果如下图:
图3 学习样本模拟图
该图说明学习样本的模拟结果较好,即目标值与模拟值相近,通过学习神经网络的权值和阀值稳定,神经网络得以确定。
如下是检验样本仿真的结果:
b =0.7012 0.69287 0.64963 0.62793 0.59211 0.52888 0.48462 0.60023 0.60499 0.63918 0.6318 0.60906 0.60444 0.71124 0.77537 0.77385 0.74598
检验样本拟合效果如下图:
图 4 检验样本模拟图
通过对误差的分析,发现输出值和目标值之间的误差在13组数据之前拟合程度较差,此检验说明通过学习达到稳定的权值和阀值并不能很好地模拟期货市场所遵循的价格波动规律,此种不良结果有可能是由政策波动因素在短期(20100101-20100331)的冲击带来的,也有可能是由我国期货市场价格决定机制的不健全所引起,更有可能是由本文所选取的数据量不足所引起的学习量不够,而数据的获取存在着实际的困难,这也是本文的不足之处。
不过可以看出,模拟结果与目标值的变动趋势却是相同的,所以本模型还是可以用来粗略预测,以3月31日的数据为已知条件预测4月1日的该期货的结算价格。
k=[0.76 0.72 0.70 0.63 0.00 0.00 0.78 ];
l=sim(net,k);
预测期货价格0.69,进行反归一化之后,反归一化的公式为:X=Xmin+(Xmax-Xmin)Xj ,其中 Xmax、 Xmin分别是后三天均价的最小值、最大值,即22180、 25703。计算结果为 24610。与30日的结果相比为下降趋势,与检验样本预测趋势一致。由此可知,此模型能够为期货价格预测提供依据。
参考文献:
[1]华仁海,仲伟俊.中国期货市场期货价格波动与成交量和空盘量动态关系的实证分析[J].数量经济技术经济研究,2004,(7).
[2]禹建丽,孙增圻,V aleri Kroumov,成久洋之,刘治军.基于BP神经网络的股市建模与决策[J]. 系统工程理论与实践,2003,(5).
[3]侯媛彬等编著.神经网络[M].西安:西安电子科技大学出版社,2007.
[4]汤建明.基于BP神经网络的股市预测[D].华中科技大学,2006.10.
[5]张铮等编著.MATLAB程序设计与实例应用[M].北京:中国铁道出版社,2003,(1l).