论文部分内容阅读
[摘要]证券市场是一个高风险高收益的投资市场,获取比较高的收益同时降低风险是投资者追求的目标,径向基函数(Radial Basis Function ,RBF)神经网络以其简单的结构,优良的全局逼近性能而引起了学者们的广泛关注。由于RBF神经网络的种种优越性,使得它在函数逼近和非线性时间序列预测等方面得到广泛应用。将RBF神经网络应用在股市趋势预测中,以上证指数作为对象进行建模与预测,结果表明,此种网络具有较好的学习和泛化能力,在股市趋势预测中取得了较好的效果。
[关键词]股票预测 人工神经网络 RBF算法
中图分类号:F83 文献标识码:A 文章编号:1671-7597(2008)0720125-02
一、引言
短短十数年间,股票市场成为了一个热门话题。上海证券交易所从1990年12月成立时的31亿元市值发展到如今的突破20万亿元,在全球交易所中排名第15位。上海证券市场股票指数已经在国民经济中占有了举足轻重的位置。它反映了我国的经济实力,是宏观经济的晴雨表,也是分析微观经济的重要指标,所以研究上证综合指数的走势预测方法的研究具有相当重要的现实意义和应用价值。
股票预测的理论和方法层出不穷,这些预测方法都在一定程度上揭示了股市的运行规律,但是股价系统内部结构的复杂性和外部因素的多变性决定了股市预测的艰巨性,现有的分析预测方法应用效果并不理想。而神经网络具有优良的非线性特性,特别适用于高度非线性系统的处理,因此基于神经网络的智能预测将是解决非线性股市预测问题的有效方法。本文在过去十年上证综合指数收盘点数的基础上,借助计算机工具语言MATLAB,建立一个径向基函数(Radial Basis Function, RBF)神经网络,实现通过利用前三天的收盘指数预测第四天的收盘指数。
二、径向基函数RBF神经网络介绍
径向基函数RBF神经网络(Radial basis function)是由J.Moody和C.Darken于20世纪80年代末提出的一种神经网络结构,它是具有单隐层的三层前馈网络,目前已经证实,径向基RBF网络能以任何精度逼近任意连续函数,RBF神经网络结构图如图1所示。
径向基函数网络(简称RBF 网络)是在借鉴生物局部调节和交叠接受区域知识的基础上提出的一种采用局部接受域来执行函数映射的人工神经网络,具有最优逼近和全局逼近的特性。隐含层用的是高斯径向基函数
RBF 网络的权值训练是一层一层进行的,对径向基层的权值训练采用无导师训练,在输出层的权值设计采用误差纠正算法,为有导师训练。在RBF 网络中,输入层到隐含层的基函数输出是一种非线性映射,而输出则是线性的。这样,RBF 网络可以看成是首先将原始的非线性可分的特征空间变换到另一线性可分的空间(通常是高维空间),通过合理选择这一变换使在新空间中原问题线性可分,然后用一个线性单元来解决问题,从而很容易的达到从非线性输入空间向输出空间映射的目的。值得指出的是,由于RBF 网络的权值算法是单层进行的,它的工作原理采用的是聚类功能,由训练得到输入数据的聚类中心,通过σ值来调节基函数的灵敏度,也就是RBF 曲线的宽度,虽然网络结构看上去是全连结的,实际工作时网络是局部工作的,即對输入的一组数据,网络只有一个神经元被激活,其他神经元被激活的程度可忽略。所以RBF网络是一个局部逼近网络,这使得它的训练速度要比BP 网络快2~3个数量级。
三、研究工具MATLAB介绍
本文借助计算机工具语言MATLAB进行研究。MATLAB是一款功能强大的工程计算和仿真软件,诞生于20世纪70年代Cleve Moler博士和他的同事。MATLAB擅长于数值计算,能处理大量的数据,而且效率比较高。MATLAB的核心是一个基于矩阵运算的快速解释程序,它交互式地接收用户输入的各项命令,输出计算结果。MATLAB具有众多面向具体应用的工具箱和仿真模块,包含了完整的函数集,其中的神经网络功能提供了大量可直接调用的函数和命令,基本囊括了目前比较成熟的神经网络设计方法,用MATLAB可以使我们从繁琐的编程中解脱出来,大大提高了工作效率和解题质量。
四、研究实验
(一)研究思路
本文希望通过建立一个径向基函数(Radial Basis Function, RBF)神经网络,实现利用前三天的收盘指数预测第四天的收盘指数,即用上证综合指数的前天、昨天和今天的收盘价, 预测明天的收盘价,函数表达式为f(T1,T2,T3)->T4。本文选取1998年1月1日至2008年1月15日共2420个交易日收盘指数作为原始样本数据,其中2008年1月2日至15日共10个交易日收盘指数作为测试样本。网络的预测能力将由该10天的预测值与实际收盘值的绝对误差平均值决定。
因此本研究的核心主要有2点:(1)RBF神经网络能否实现指数预测?准确率能达到多少?(2)神经网络需要一定的数据进行训练学习,时间多长为宜?
(二)RBF神经网络的函数选择
MATLAB的神经网络工具箱为径向基网络提供了许多工具箱函数,本文采用了其中的创建函数newrbe,它能够建立基于设计向量快速、无误差设计的径向基网络,调用格式为:
Net=newrbe(P,T,SPREAD)
其中 P: Q组输入向量组成的R×Q维矩阵,
本文的输入向量由N组3个收盘指数(T1,T2,T3)组成的。
T: Q组目标分类向量组成的S×Q维矩阵,
本文的目标向量为N个T4的实际收盘指数。
SPREAD:径向基函数的扩展速度。
该函数设计的径向基网络NET可用于函数逼近。径向基函数的扩展速度SPREAD越大,函数的拟合就越平滑。但过大的SPREAD意味着需要非常多的神经元以适应函数的快速变化。如果SPREAD设定过小,则意味需要许多神经元来适应函数的缓慢变化,这样设计的网络性能就不会很好,因此,本研究需要以不同的SPREAD值进行尝试,以确定一个最优值。
(三)样本处理
为了满足网络输入输出对数据的要求,在学习之前首先对数据按下式进行归一化处理,本文选择了如下公式来进行归一化处理:X=(X-Xmin)/(Xmax-Xmin)。其中 Xmin代表十年来上证指数的最低收盘点位(2005年7月11日的1011.499),Xmax代表十年来上证指数的最高收盘点位(2007年10月16日的6092.057)。
根据该公式可将十年来的上证指数节选列表1显示如下:
(四)训练与测试
这里将每三天作为一个周期,前三天的上证指数收盘点数作为网络的输入向量。输出则为第四天的预测上证指数点数票价格。因此输入层的神经元的个数是N=3,输出层的神经元的个数是M=1。这里首先选择2007年12月份的20个交易日收盘数据作为训练样本,网络创建代码为:
spread=1;net=newrbe(P,T,spread); 其中spread是RBF网络的分布密度,spread越大,网络的预测性能越平滑,但是并不是越大越好,过大的spread可能导致计算上出现问题,这里先将其设定为1;本文以2008年1月1日至15日共10个交易日收盘指数作为测试样本,每个预测值与实际值的偏差值取绝对值后计算平均值,该测试代码为:
net=newrbe(P,T,i);
P_test1=[0.8459 0.8365 0.8387 ]'; %1月2日的预测值
Y1=sim(net,P_test1)-0.8480%1月2日的预测值与实际收盘值的误差
P_test2=[0.8365 0.8387 0.8480 ]'; %1月3日的预测值
Y2=sim(net,P_test2)-0.8562%1月3日的预测值与实际收盘值的误差
P_test3=[0.8387 0.8480 0.8562 ]';
Y3=sim(net,P_test3)-0.8625
P_test4=[0.8480 0.8562 0.8625 ]';
Y4=sim(net,P_test4)-0.8611
P_test5=[0.8562 0.8625 0.8611 ]';
Y5=sim(net,P_test5)-0.8708
P_test6=[0.8625 0.8611 0.8708 ]';
Y6=sim(net,P_test6)-0.8749
P_test7=[0.8611 0.8708 0.8749 ]';
Y7=sim(net,P_test7)-0.8805
P_test8=[0.8708 0.8749 0.8805 ]';
Y8=sim(net,P_test8)-0.8831
P_test9=[0.8749 0.8805 0.8831 ]';
Y9=sim(net,P_test9)-0.8724
P_test10=[0.8805 0.8831 0.8724 ]';
Y10=sim(net,P_test10)-0.8423
(abs(Y1)+abs(Y2)+abs(Y3)+abs(Y4)+abs(Y5)+abs(Y6)+abs(Y7)+abs(Y8)+abs(Y9)+abs(Y10)) /10%显示10个测试样本点的绝对误差平均值。
通过不断改变spread的值,可以观察到它对输出的影响,结果如下表2所示。
可見,spread越大,网络的输出就越接近于真实值,而且当spread增加到13后,对输出的影响就没有那么明显了。因此,这里取最优spread=10,这时的预测误差为0.0066。
(五)测试结果汇总
依照4.4的训练与测试方法,然后通过不断增加训练样本点,可以寻找出训练周期为1个月、1个季度、1年、3年、5年甚至10年的最佳spread值和预测误差,结果如下表3所示:
根据实验结果,可以看出当训练周期增加到1年(样本点242个)后,该神经网络比较稳定,spread值与输出误差就不再发生较大的改变。
由于训练过程中使用的是经过归一化后的数据,因此神经网络的输出值也是在区间[0,1]内,无法直观地看出上证指数的预测结果,故再据归一化函数的反函数对神经网络的输出值进行处理,计算出预测的上证指数,以此与上证指数的实际值进行比较,验证预测结果的准确性。3年训练期的预测结果见下表4所示:
从该表可见,采用BRP神经网络来预测股指取得了非常好的效果,准确率全部达到97%以上,这表明采用BRF神经网络构建模型能较好地实现上证指数短期走势的模拟。
五、研究结论
从上述试验结果可知, 人工神经网络在处理诸如股票数据这种非线性时间序列的预测方面, 具有很好的学习、映射和泛化能力和应用价值,本文建立的RBF神经网络具有预测精度高、收敛速度快的特点。在选取足够的样本点(1年242个样本点)后该网络能通过学习,对股票短期预测取得了令人满意的结果。从而进一步说明神经网络不仅能够学习训练集的例子,且能从训练集中提炼出某种一般性原理、规律,具有很强的非线性函数拟合特性。较之传统的统计学方法,提出了另类的解决方法,具有一定的优越性。
由于时间关系,本文仅讨论了BRF神经网络对上证指数的短期预测,没有涉及到长期预测问题;同时对股市的各项影响参数没有进一步考虑,例如:成交量的变化、移动平均线的趋势、输入向量的多寡都会影响预测精度,以上几个方面都有待以后进一步的研究和改进。
参考文献:
[1]韩力群.人工神经网络教程.北京邮电大学出版社,2006.
[2][日]沟口理一郎,石田亨编,卢伯英译.人工智能.科学出版社,2003.
[3]张颖,刘艳秋.软计算方法.科学出版社,2002.
[4]肖伟,刘忠,曾新勇,吕兰兰.MATLAB程序设计及应用.清华大学出版社, 2005.
作者简介:
尹越安,男,汉族,广东,本科,工学学士,广州市救助管理站科员,广东省工业大学,在职工程硕士。
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
[关键词]股票预测 人工神经网络 RBF算法
中图分类号:F83 文献标识码:A 文章编号:1671-7597(2008)0720125-02
一、引言
短短十数年间,股票市场成为了一个热门话题。上海证券交易所从1990年12月成立时的31亿元市值发展到如今的突破20万亿元,在全球交易所中排名第15位。上海证券市场股票指数已经在国民经济中占有了举足轻重的位置。它反映了我国的经济实力,是宏观经济的晴雨表,也是分析微观经济的重要指标,所以研究上证综合指数的走势预测方法的研究具有相当重要的现实意义和应用价值。
股票预测的理论和方法层出不穷,这些预测方法都在一定程度上揭示了股市的运行规律,但是股价系统内部结构的复杂性和外部因素的多变性决定了股市预测的艰巨性,现有的分析预测方法应用效果并不理想。而神经网络具有优良的非线性特性,特别适用于高度非线性系统的处理,因此基于神经网络的智能预测将是解决非线性股市预测问题的有效方法。本文在过去十年上证综合指数收盘点数的基础上,借助计算机工具语言MATLAB,建立一个径向基函数(Radial Basis Function, RBF)神经网络,实现通过利用前三天的收盘指数预测第四天的收盘指数。
二、径向基函数RBF神经网络介绍
径向基函数RBF神经网络(Radial basis function)是由J.Moody和C.Darken于20世纪80年代末提出的一种神经网络结构,它是具有单隐层的三层前馈网络,目前已经证实,径向基RBF网络能以任何精度逼近任意连续函数,RBF神经网络结构图如图1所示。
径向基函数网络(简称RBF 网络)是在借鉴生物局部调节和交叠接受区域知识的基础上提出的一种采用局部接受域来执行函数映射的人工神经网络,具有最优逼近和全局逼近的特性。隐含层用的是高斯径向基函数
RBF 网络的权值训练是一层一层进行的,对径向基层的权值训练采用无导师训练,在输出层的权值设计采用误差纠正算法,为有导师训练。在RBF 网络中,输入层到隐含层的基函数输出是一种非线性映射,而输出则是线性的。这样,RBF 网络可以看成是首先将原始的非线性可分的特征空间变换到另一线性可分的空间(通常是高维空间),通过合理选择这一变换使在新空间中原问题线性可分,然后用一个线性单元来解决问题,从而很容易的达到从非线性输入空间向输出空间映射的目的。值得指出的是,由于RBF 网络的权值算法是单层进行的,它的工作原理采用的是聚类功能,由训练得到输入数据的聚类中心,通过σ值来调节基函数的灵敏度,也就是RBF 曲线的宽度,虽然网络结构看上去是全连结的,实际工作时网络是局部工作的,即對输入的一组数据,网络只有一个神经元被激活,其他神经元被激活的程度可忽略。所以RBF网络是一个局部逼近网络,这使得它的训练速度要比BP 网络快2~3个数量级。
三、研究工具MATLAB介绍
本文借助计算机工具语言MATLAB进行研究。MATLAB是一款功能强大的工程计算和仿真软件,诞生于20世纪70年代Cleve Moler博士和他的同事。MATLAB擅长于数值计算,能处理大量的数据,而且效率比较高。MATLAB的核心是一个基于矩阵运算的快速解释程序,它交互式地接收用户输入的各项命令,输出计算结果。MATLAB具有众多面向具体应用的工具箱和仿真模块,包含了完整的函数集,其中的神经网络功能提供了大量可直接调用的函数和命令,基本囊括了目前比较成熟的神经网络设计方法,用MATLAB可以使我们从繁琐的编程中解脱出来,大大提高了工作效率和解题质量。
四、研究实验
(一)研究思路
本文希望通过建立一个径向基函数(Radial Basis Function, RBF)神经网络,实现利用前三天的收盘指数预测第四天的收盘指数,即用上证综合指数的前天、昨天和今天的收盘价, 预测明天的收盘价,函数表达式为f(T1,T2,T3)->T4。本文选取1998年1月1日至2008年1月15日共2420个交易日收盘指数作为原始样本数据,其中2008年1月2日至15日共10个交易日收盘指数作为测试样本。网络的预测能力将由该10天的预测值与实际收盘值的绝对误差平均值决定。
因此本研究的核心主要有2点:(1)RBF神经网络能否实现指数预测?准确率能达到多少?(2)神经网络需要一定的数据进行训练学习,时间多长为宜?
(二)RBF神经网络的函数选择
MATLAB的神经网络工具箱为径向基网络提供了许多工具箱函数,本文采用了其中的创建函数newrbe,它能够建立基于设计向量快速、无误差设计的径向基网络,调用格式为:
Net=newrbe(P,T,SPREAD)
其中 P: Q组输入向量组成的R×Q维矩阵,
本文的输入向量由N组3个收盘指数(T1,T2,T3)组成的。
T: Q组目标分类向量组成的S×Q维矩阵,
本文的目标向量为N个T4的实际收盘指数。
SPREAD:径向基函数的扩展速度。
该函数设计的径向基网络NET可用于函数逼近。径向基函数的扩展速度SPREAD越大,函数的拟合就越平滑。但过大的SPREAD意味着需要非常多的神经元以适应函数的快速变化。如果SPREAD设定过小,则意味需要许多神经元来适应函数的缓慢变化,这样设计的网络性能就不会很好,因此,本研究需要以不同的SPREAD值进行尝试,以确定一个最优值。
(三)样本处理
为了满足网络输入输出对数据的要求,在学习之前首先对数据按下式进行归一化处理,本文选择了如下公式来进行归一化处理:X=(X-Xmin)/(Xmax-Xmin)。其中 Xmin代表十年来上证指数的最低收盘点位(2005年7月11日的1011.499),Xmax代表十年来上证指数的最高收盘点位(2007年10月16日的6092.057)。
根据该公式可将十年来的上证指数节选列表1显示如下:
(四)训练与测试
这里将每三天作为一个周期,前三天的上证指数收盘点数作为网络的输入向量。输出则为第四天的预测上证指数点数票价格。因此输入层的神经元的个数是N=3,输出层的神经元的个数是M=1。这里首先选择2007年12月份的20个交易日收盘数据作为训练样本,网络创建代码为:
spread=1;net=newrbe(P,T,spread); 其中spread是RBF网络的分布密度,spread越大,网络的预测性能越平滑,但是并不是越大越好,过大的spread可能导致计算上出现问题,这里先将其设定为1;本文以2008年1月1日至15日共10个交易日收盘指数作为测试样本,每个预测值与实际值的偏差值取绝对值后计算平均值,该测试代码为:
net=newrbe(P,T,i);
P_test1=[0.8459 0.8365 0.8387 ]'; %1月2日的预测值
Y1=sim(net,P_test1)-0.8480%1月2日的预测值与实际收盘值的误差
P_test2=[0.8365 0.8387 0.8480 ]'; %1月3日的预测值
Y2=sim(net,P_test2)-0.8562%1月3日的预测值与实际收盘值的误差
P_test3=[0.8387 0.8480 0.8562 ]';
Y3=sim(net,P_test3)-0.8625
P_test4=[0.8480 0.8562 0.8625 ]';
Y4=sim(net,P_test4)-0.8611
P_test5=[0.8562 0.8625 0.8611 ]';
Y5=sim(net,P_test5)-0.8708
P_test6=[0.8625 0.8611 0.8708 ]';
Y6=sim(net,P_test6)-0.8749
P_test7=[0.8611 0.8708 0.8749 ]';
Y7=sim(net,P_test7)-0.8805
P_test8=[0.8708 0.8749 0.8805 ]';
Y8=sim(net,P_test8)-0.8831
P_test9=[0.8749 0.8805 0.8831 ]';
Y9=sim(net,P_test9)-0.8724
P_test10=[0.8805 0.8831 0.8724 ]';
Y10=sim(net,P_test10)-0.8423
(abs(Y1)+abs(Y2)+abs(Y3)+abs(Y4)+abs(Y5)+abs(Y6)+abs(Y7)+abs(Y8)+abs(Y9)+abs(Y10)) /10%显示10个测试样本点的绝对误差平均值。
通过不断改变spread的值,可以观察到它对输出的影响,结果如下表2所示。
可見,spread越大,网络的输出就越接近于真实值,而且当spread增加到13后,对输出的影响就没有那么明显了。因此,这里取最优spread=10,这时的预测误差为0.0066。
(五)测试结果汇总
依照4.4的训练与测试方法,然后通过不断增加训练样本点,可以寻找出训练周期为1个月、1个季度、1年、3年、5年甚至10年的最佳spread值和预测误差,结果如下表3所示:
根据实验结果,可以看出当训练周期增加到1年(样本点242个)后,该神经网络比较稳定,spread值与输出误差就不再发生较大的改变。
由于训练过程中使用的是经过归一化后的数据,因此神经网络的输出值也是在区间[0,1]内,无法直观地看出上证指数的预测结果,故再据归一化函数的反函数对神经网络的输出值进行处理,计算出预测的上证指数,以此与上证指数的实际值进行比较,验证预测结果的准确性。3年训练期的预测结果见下表4所示:
从该表可见,采用BRP神经网络来预测股指取得了非常好的效果,准确率全部达到97%以上,这表明采用BRF神经网络构建模型能较好地实现上证指数短期走势的模拟。
五、研究结论
从上述试验结果可知, 人工神经网络在处理诸如股票数据这种非线性时间序列的预测方面, 具有很好的学习、映射和泛化能力和应用价值,本文建立的RBF神经网络具有预测精度高、收敛速度快的特点。在选取足够的样本点(1年242个样本点)后该网络能通过学习,对股票短期预测取得了令人满意的结果。从而进一步说明神经网络不仅能够学习训练集的例子,且能从训练集中提炼出某种一般性原理、规律,具有很强的非线性函数拟合特性。较之传统的统计学方法,提出了另类的解决方法,具有一定的优越性。
由于时间关系,本文仅讨论了BRF神经网络对上证指数的短期预测,没有涉及到长期预测问题;同时对股市的各项影响参数没有进一步考虑,例如:成交量的变化、移动平均线的趋势、输入向量的多寡都会影响预测精度,以上几个方面都有待以后进一步的研究和改进。
参考文献:
[1]韩力群.人工神经网络教程.北京邮电大学出版社,2006.
[2][日]沟口理一郎,石田亨编,卢伯英译.人工智能.科学出版社,2003.
[3]张颖,刘艳秋.软计算方法.科学出版社,2002.
[4]肖伟,刘忠,曾新勇,吕兰兰.MATLAB程序设计及应用.清华大学出版社, 2005.
作者简介:
尹越安,男,汉族,广东,本科,工学学士,广州市救助管理站科员,广东省工业大学,在职工程硕士。
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”