股指期货合约价格预测中的BP算法应用

2014-05-28 20:51刘洋
2014年42期
关键词:股指期货人工神经网络

刘洋

摘 要:本文利用BP网络对数据的压缩性和非线性映射功能,模拟股指期货合约的各项数据之间的关系,建立起一个基于神经网络的股指期货合约结算价格预测系统。用交易数据进行网络训练,生成网络后,用另外的数据对生成的网络进行验证,验证发现该网络的预测精度较高,具备一定的应用价值。

关键词:BP算法;人工神经网络;股指期货

1.引言

股市投资是我们日常生活中一种十分普及的,具备高风险高收益特性的投资方式。2010年4月,沪深300股指期货经过证监会的审核,开始在我国发行。股指期货的推出革命性地改变股票市场的游戏规则,将期货与股票结合,使市场参与者在股市下跌的时候可以做空获利。

随着神经网络算法的研究深入发展,人们逐步将神经网络应用于经济领域,比如金融实际交易分析中。本文使用matlab工具箱中的BP算法,建立一个具有平滑学习函数的神经网络,做出一个可以合理响应输入的数据训练模型,以便对股指期货合约的短期价格进行检验以及预测判断。

2.BP神经网络

2.1 BP神经网络的构成

神经网络在很大程度上仿照人脑神经系统的信息处理、存贮及检索功能,因而人工神经网络的主要功能具备学习功能、记忆功能、计算功能以及各式智能处理功能。人工神经网络是人类大脑的一个抽象概念,是一个由大量的神经元互相连接并且用它的各连接的权重值的分布向量来表示特定知识概念而组成的一种较为复杂的网络。

人工神经网络的模型相当多,一般在matlab建立模型时用得最多,相对于其他工具箱工具来说应用的最为广泛的是BP(Back-propagation)神经网络。标准的BP网络由三层神经元组成,分别是输入层、隐含层、输出层,数据在不同层级间传递,都涉及到一定的权重因子。

2.2 BP网络和BP算法的特点

BP网络的输入和输出是并行的两个模拟量,网络的输入输出关系由链接各层的权重因子决定,不需固定的算法,权重因子通过学习信号来调节。学习越多,隐含层就越多,输出层的精度就越高,其中个别权重因子的损坏不会对网络输出产生大的影响。

BP算法是由两部分组成,分别是信息的正向传递和误差的反向传播。在正向传递的过程中,因为输入信息是逐層传递的,每一层神经元的状态只能影响到下一层神经元的状态,如果在输出层未得到期望的输出,则计算输出层的误差变化值,然后开始反向传播,通过网络将误差信号沿原来的连接通路反传回来,修改各层神经元之间的权重因子,再次进行信息的正向传递,反复运行直至达到期望目标。

3.BP神经网络在期货合约价格预测中的应用

3.1输入层的节点的确定

在matlab中编程的时候,首先考虑输入层的参数选取。对于股指期货合约价格的变动,从宏观方面来考虑我们可以认为它受以下因素的影响。

a.宏观经济状况:一些能反映经济运行状况的经济指标,比如GDP、PPI、CPI,恩格尔系数等;b.宏观经济政策:政府的一些货币政策和财政政策,比如降息,降准,减税,社保改革等;c.与标的物相关的各种信息:比如某些标的指数中的一些权重较大的成份股进行定增融资、派息转送等;d.国际金融市场走势:比如国际汇率,石油,黄金等价格波动走势;e.到期时间长短:股指期货合约有到期日,合约期限的不同会影响到合约价格的波动变化 。

从数据指标方面来考虑,最常接触到的就是沪深300股指期货合约每日的开盘价、收盘价、最低价、最高价、交易量、总交易金额等等数据。这6个方面的数据是精确化的历史性数据,可以直接用于算法里面的数据训练。因而,在输入层的选择上,本文取这6组数据作为节点,即输入层的节点数为6。

3.2隐含层节点,输出节点的确立

在这里,出于简便考虑,只选择一层隐含层。这里只预测第二天的股指期货的结算价,因而输出节点,可以看作是1。由此可看出建立的本BP网络的一个特点,那就是多元输入,单项输出。

3.3数据选取

由于需要将数据作为多种用途使用,有的用于学习训练,有的用于测试输入,因而样本容量必须足够大。沪深300股指期货,从2010年4月推出起,已经运行了接近5年时间,有上千天的交易数据。本文拟选取一个整年,用这一年的交易日数据,来建立模型。

这里通过互联网,从新浪财经网站上查询到2014年3月1日至2015年2月28日的沪深300股指期货合约相关交易数据。这一年中,有243个有效交易日。其中,选取前233组数据,进行神经网络的训练,选取后10组,作为测试输入和对照。

4.利用MATLAB建立预测模型

将收盘价作为Y变量,因为这是模型预测和对照的数据组。将其他五个参数的数据作为X变量。X变量是一个243*5的矩阵,Y变量是一个243*1的矩阵。由于X变量中的前三列与后两列的数据相差巨大,可以在系统设置中,将数据改成长数据形式。现在用MATLAB建立BP神经网络模型,进行运算和对比检测。首先,对X和Y进行赋值,然后运行以下命令。

>> temp = randperm(size(x,1));

K_train = x(temp(1:233),:);

L_train = y(temp(1:233),:);

K_test = x(temp(234:end),:);

L_test = y(temp(234:end),:);

N = size(K_test,2);

net = newff(K_train,L_train,9);

net.trainParam.epochs = 1000;

net.trainParam.goal = 1e-3;

net.trainParam.lr = 0.01;

net = train(net,K_train,L_train);

L_sim_bp = sim(net,K_test);

figure

plot(1:N,K_test,b:*,1:N,L_sim_bp,r-o)

>> xlabel(检验样本)

ylabel(沪深300股指收盘价)

经过运行之后,MATLAB即显示出BP预测值与真实值(以*为标记)的对比图。可看出BP神经网络所预测的收盘价与真实收盘价的吻合度较高,两者的变化曲线基本重合。

5.结论

通过matlab编程,结合实际数据,可以发现训练出来的神经网络在实际预测中达到了所预想的精度要求,在上述输入测试值中,代码运行结果比较令人满意。

我们将技术分析引入到期货合约结算价格的预测中去,用文中所述的训练编制的神经网络进行预测,对于短期合约价格的预测在一般情况下还是具有不错的精度和合理的误差的。

可以认为网络的预测有效程度主要取决于一下两方面。

(1)针对股指期货交易市场,在建立模型时,考虑到越多的相关影响因素,网络的实际运用可行性会更强。(2)股指期货交易市场,其完善程度和网络预测精度有着一定的正想关性,市场越完备,其效果越好。在实际情况中,如果市场不够成熟,可能会造成预测的实用性不够显著。

在重复运行的时候,本文发现了一个问题,就是该模型对于源代码中固定的那个输入测试值的预测是在不断变动的,且与真实值之间的误差大小也是在不断改变的,这与模型变量的选择和模型算法有一定的关系。

本文核心在于将神经网络算法和期货合约历史数据结合起来,提出了这样一种思想来预测期货合约价格,对于在短期做空做多决策方面是有着一定参考作用,如果今后在这方面的探索中继续进行改进,尤其是变量的选取和算法的改进,将更能提高其预测值的实用价值。(作者单位:华东交通大学经管学院)

猜你喜欢
股指期货人工神经网络
利用人工神经网络快速计算木星系磁坐标
人工神经网络实现简单字母的识别
滑动电接触摩擦力的BP与RBF人工神经网络建模
股指期货对股票价格波动影响分析
基于ECM—GARCH模型的
股指期货对现货市场的影响
浅谈股指期货的风险管理
股指期货市场亟待恢复常态化
人工神经网络和安时法电池SOC估计
基于声发射和人工神经网络的混凝土损伤程度识别