搜索
查看: 5082|回复: 21

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

[复制链接]
发表于 2002-1-13 05:22 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

来自:MACD论坛(bbs.macd.cn) 作者:coolsun 浏览:5082 回复:21

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
[这个贴子最后由coolsun在 2002/01/12 09:23pm 编辑]

具有自纠错功能的神经网络在股市趋势预测中的应用
coolsun
明夏阳人工智能有限公司www.nextsun.com
1 引言
  在金融系统的预测研究中 ,股票预测是一个热门的课题 ,并且也有了许多运用于股票预测的优秀算法。现在研究较多的是传统统计经济学方法和人工神经网络方法。传统的统计经济学方法存在不适合动态系统、建模复杂等局限性 ,而在股市中影响股票价格的因素包罗万象 ,在股票价格变动的长期趋势中 ,在一段较长时期内有某些确定的基本因素起作用 ,即有一定的趋势性 ,但又受许多随机因素的影响 ,可以说股票价格变动是一种不规范的经济行为 ,因此 ,传统的统计经济学方法运用于股票预测只能预测一段时期内股票价格变动的大致趋势。相比之下 ,人工神经网络作为一种大规模并行处理的非线性系统 ,依据数据本身的内在联系建模 ,具有良好的适应性与自学习能力、较强的抗干扰能力 ,在股票价格的短期预测中已取得了令人比较满意的成绩。而在神经网络股票预测中又以滚动预测较困难 ,所谓滚动预测 ,即通过一组历史数据预测未来某一时刻的值 ,然后又将这一预测值视为历史数据继续预测下去 ,如此进行逐步预测未来一段时期的值。它存在影响因素多、误差大等难点 ,极大影响了神经网络预测效果。本文采用一种进的快速BP算法 ,并提出一种神经网络自纠错方法 ,结合几点新想法 ,对股票滚动预测进行了一些研究。
2 神经网络预测方法与算法
2 .1 神经网络预测方法
  所谓预测 ,即通过一些已知历史数据对未来未知数据的取值进行估计 ,设有时间序列 {Xi},其中历史数据Xn,Xn+1 ,…… ,Xn+m,对未来n+m+k(k>0)时刻的取值进行预测 ,即预测Xn+m+k的值 ,方法是求出历史数据Xn,Xn+1 ,…… ,Xn+m 与Xn+m+k的某种非线性函数关系 :
Xn+m+k =F(Xn,Xn+1 ,…… ,Xn+m) (1 )
  用神经网络进行预测即用神经网络来拟合函数F(·) ,得出未来数据的取值。常用如下三种类型的预测 :
(1 )单步预测
  当k=1时 ,即网络输入Xn,Xn+1 ,…… ,Xn+m m个历史数据 ,输出Xn+m+1的值。此类预测明显不适用于股票价格预测。
(2 )多步预测
  当k>l时 ,即网络输入m个历史数据 ,输出Xn+m+1 ,Xn+m+2 ,…… ,Xn+m+k的值 ,实验证明此类预测用于股票价格预测误差较大。
(3 )滚动预测 ,又叫迭代一步预测
  先进行单步预测 ,然后将输出反馈给输入端作为网络输入的一部分 ,即像如下形式 (预测未来q个时刻的取值 ) :

执行步骤       神经网络输入           输出 (预测结果 )
1 Xn,Xn+1 ,      … ,           Xn+m Xn+m +1
2 Xn+1 ,Xn+2 ,    … ,           Xn+m+1 Xn+m+2
…            …                 …
q Xn+q-1 ,Xn+q,   … ,        Xn+m +q-1 Xn+m +q
此类预测是本文研究的重点。
2 .2 BP算法
  由于一个三层BP网络可以实现任意精确近似任何连续的非线性函数 ,因此BP网络的应用非常广泛 ,本文也采用BP算法作为核心算法。设有m层神经网络 ,其第k层第i个神经元输入总和为netki,输出Omi ,由第k -1层的第j个神经元到第k层的第i个神经元的结合权值为Wij,取第 p (p =1 ,2 ,…… ,n)组输入样本 ,则神经元的输出为
  Oim =f(netik) (2 )
  netik=∑j WijVik-1 (3 )
f (·)为神经元激活函数 ,取Sigmoid函数f(x) =1/(1 +e-x) (4)
定义误差函数E为期望输出tj 与实际第m层输出Oim之差的平方和
  E =0.5∑j(Ojm -tj) 2 (5)
  BP算法实际上是有指导的学习 ,学习的实质是求误差函数的极小值 ,利用非线性规划中的最快下降法 ,
  即 △Wij=-ε*?E/?Wij (6 )
ε为学习步长 ,△Wij为权值改变量。
不难导出
  -ε*?E/?Wij =ε·djk·Ojk-1 ,k=1 ,2 ,…… ,m (7)
其中
  djm =Ojm(1 -Ojm) (tj-Ojm)
  djk=Ojk(1 -Ojk)∑lWijdjk-1 (8)
得到权值修改的迭代过程 ,即
  Wmj(t+1 ) =Wmj(t) +εdjmOjm
  Wij(t+1 ) =Wij(t) +εdikOik (9)
其中Wmj(t) ,Wji(t)为t时刻权值 ,Wmj(t+1 ) ,Wji(t+1 )为t+1时刻权值。
2 .3 改进的算法
  因为BP算法存在着收敛的速度慢 ,易陷入局部极小等缺点 ,为使算法具有更大的实用性 ,必须改进BP算法。本文采用一种快速的BP算法 ,它对经典BP算法做如下改进[3 ],变量说明同上。
(1 )误差函数与激活函数对收敛的影响 ,主要反映在等效误差分量djm 与djk 的大小和正负变化上。根据BP网络误差逆向传播算法 ,djm 的影响更重要 ,用下式代替 (5)式
  E=-∑j[tj·logOjm +(1 -tj)·djm·log(1 -Ojm) (1 0 )
因为logl=0 ,当期望输出值为 0或 1时 :
  djm =tj-Ojm (1 1 )
(2 )为了抑制迭代过程的振荡 ,在公式 (9)右边增加一动量项 ,即
  Wmj(t+1 ) =Wmj(t) +εdjm Ojm +α△Wmj(t)
  Wji(t+1 ) =Wji(t) +εdikOik+α△Wji(t) (1 2 )
α为动量项常数。
(3 )采取变学习速率法 ,即
  若En+1 -En< 0时 ,ε=ε1 ,α =α1
  否则ε=ε2 ,α=0
本文实验中取ε1 =1 0 ,ε2 =0.5,α1 =0.9
2 .4 输入特征值提取
  神经网络系统本身具有自组织、自学习、自适应的特点。在一定意义上 ,网络本身的学习就是实现模式变换与特征提取。我们可以用神经网络通过自适应聚类学习找到不同模式的特征信息进行识别。在股票滚动预测实验中 ,我们采用神经网络主要分量分析(PCA) [2 ]对输入不同类的数据进行特征提取。网络结构如下


    图 1

对应的输入输出关系为
  z=∑j=1nqjXj (1 3 )
其中z是输出 ,qj是网络连接权值 ,xj是输入 ,其初始值本文实验都取 0 3。学习规则:
  △qj=β(xjz-qjz2 ) , j=1 ,2 ,…… ,n (1 4)
其中xjz为学习项 ,在输入xj 与输出z相关时,会加强输入端与输出端连接,第二项qjz2 为阻尼项 ,用来保证qj2 约束接近 1 ,β取 0.5,当∑j=1n△qj<α时停止学习 ,α取一足够小值 ,本文实验中取 1 0 -5。
3 神经网络之股票滚动预测的几点想法及自纠错方法
3 .1 神经网络之股票滚动预测的几点想法
  在跌宕起伏的股票价格中掌握其内在规律以求得股票未来一段时间的变动趋势是每一个投资者关心的问题。所以能否比较准确的反映未来较长一段时期数据变化趋势是衡量一个算法是否有效 ,是否实用的标准。神经网络股票滚动预测在以往的研究中效果都不理想 ,主要存在以下难点 :
(1 )影响股票价格因素多 ,因此需要学习、预测的不同类数据多。众所周知 ,由于我国股市还不成熟 ,来自政界、经济界、新闻界的消息对股市刺激很大 ,还有投资者的心理因素影响等等。神经网络以输入数据的内在联系建模 ,要有好的效果 ,势必增加输入与预测数据种类 ,而很多影响因素难以用数据表示。
(2 )误差大。在神经网络滚动预测中 ,网络输出值要反馈给输入端作为输入的一部分 ,网络输出存在一定的误差 ,这些误差又将带入输入层。由神经网络通过学习输入模式建模的特性 ,这种误差的反馈必然带来输入模式的误差与不确定性 ,这样最终将极大的影响预测质量。
(3 )无自检验。这是任何一种预测算法都存在的难点 ,在神经网络预测上 ,给网络一个输入序列就有一个输出 ,至于输出是否可靠及可靠性就不得而知了。对此 ,针对神经网络股票滚动预测 ,本文提出几点想法 :
①趋势预测
  由于神经网络滚动预测存在误差大 ,输入模式不确定等难点。本文提出不追求细节上的精确逼近 ,强调中短期股票价格变动趋势的预测。作为一个投资者 ,他想知道的是股票未来一段时间是涨还是跌而不是该股票的具体价格。强调趋势预测可以增强系统的实用性。
②放大股市变化情况
  根据 [文 4]的建议 ,采用涨跌差价 ,及引入"人气"的因素。通过用涨跌差价作为网络输入 ,可放大股市变化 ,本文将涨跌差价也作为预测输出 ,放大股市趋势变化。由于我国股市还不很成熟 ,各种消息对股市刺激很大 ,这种刺激又通过影响投资者的心理起作用 ,而成交量、成交金额可间接反映股市"人气"因素。鉴于"人气"影响力 ,本文将成交量、成交金额都作为输入数据 ,以提高输入数据中"人气"的比例。
③自纠错
  由于神经网络滚动预测无法自检验预测值是否可靠 ,属于一种静态的预测。如果设立一个检验位 ,对不可靠输出进行一定的自学习 ,提高预测的可靠性 ,则这是一种动态的预测。
3 .2 自纠错方法
  根据以上想法 ,为增强网络的自检验、自适应能力 ,提高网络预测可靠性 ,本文提出为神经网络增加自纠错功能。尝试在网络输出中增加一检验位 ,通过检验位对网络输出进行监控。当网络预测输出时 ,有检验位提示输出模式不可靠 ,则通过对检验位进行纠错训练 ,用BP算法进行修改权值 ,达到自纠错的目的。设网络期望输出都为 0或 1 ,输出层 (第m层 )第i个神经元Oim(i=1 ,2 ,… ,k) ,又设第 1个神经元为检验位 ,当∑i=2k Oim 为奇数时,Oim =1 ;当∑i=2kOim 为偶数时 ,Oim =0 ;当网络输出不符合以上情况时 ,则进行纠错。纠错时 ,设输出层期望输出值为ti(i=1 ,2 ,… ,k) ,则
  若Oim ≥ 0.5,
  则tl(t) =0
  则t1 (t) =1ti(t) =Oim(t) ,i=2 ,… ,k
然后用改进的BP算法进行训练。纠错时网络权值的改变仅影响当前输出 ,对以后的预测输出不影响。
4 网络结构
4.1 输入数据处理
  本文选取沪市A股上海金陵 1992 . 3 . 1 2到 1993 .8.6的 200个交易日的收盘价、成交量、成交金额作为实验数据 ,其中 1992 .3 .1 2到 1993 .6 .1 1的 130个交易日数据为网络训练数据 ;又取沪市A股申达实业1993 .1 .1 1到 1993 . 9. 7的 200个交易日的收盘价、成交量、成交金额作为实验数据 ,其中 1993 . 1 . 1 1到1993 .7.1 3的 130个交易日数据为网络训练数据。网络的输入数据取股票的当天收盘价、成交量、成交金额 ,其中成交量、成交金额都是反映股市"人气"的数据 ,体现前述提高股市"人气"在输入数据中的比例的想法。为减小输入数据的变化范围 ,先对所选股票的收盘价、成交量、成交金额进行预处理 ,生成输入序列 ,如下 :
  Pi=收盘价÷ 100
  Hi=(成交量 +0.1 ) 0.25÷ 400
  Mi=(成交金额 +0.1 ) 0.25÷ 800
又基于放大股市变化情况的思想 ,网络输入、输出均采用输入序列相邻数据之差 ,即相邻日子间股票收盘价之间、成交量之间、成交金额之间的差值。并把差值序列用二进制序列表示。设网络的输出为七位二进制数 ,第 1位Bi1为检验位 ,第 2 ,3位Bi2 ,Bi3为涨跌位 ,后 4位表示差值序列。

  {xi} ,i =1 , 2 ,… ,n为某一输入序列 ;
  {ri} ,i =1 , 2 ,… ,m ,ri=|xi-xi-1 | =|△xi|为差值序列 ;
  {bi} ,i =1 , 2 ,… ,m ,为差值序列对应二进制序列 ;
其关系见表 1和表 2。
Bi1的取值方法 ,当∑j=27 Bij为奇数时 ,Bi1 =1 ;为偶数时 ,Bi1 =0



  这样我们可以由差值序列查表 1、表 2推出输入序列 {Xi}的值 ,虽然存在一定的误差 ,但反映了涨跌趋势。两支股票参数均方误差如下 (2 0 0个数据 ) :表 3

4.2 网络结构
  构造三个神经网络 ,其网络结构相同 ,输入层各有70个神经元 ,隐层各有 40个神经元 ,输出层各有 7个神经元 ,三个网络相互独立 ,分别训练和预测一支股票的收盘价、成交量、成交金额。股票收盘价、成交量、成交金额的差值序列对应的七位二进制序列先经PCA提取特征信息送入输入层 ,经BP算法训练好以后进行滚动预测。
  网络结构见图 2。

        图 2
5 实验结果
5.1 与经典BP算法比较
  用上海金陵 1 992 .3 . 1 2到 1 993 . 6 . 1 1的 1 3 0个输入数据分别送入经典BP网络与快速自纠错网络训练 ,均方误差达到小于 1 ,网络的迭代次数如下 :表 4

  可见本文使用的改进算法比经典BP网络算法在收敛速度上有很大提高 ,也就是说其比BP网在股票预测上更有实用性。
5.2 自纠错网性能
  网络对上海金陵和申达实业各自前 1 3 0个数据进行学习 ,训练 ,滚动预测后 70个数据 ,结果见以下各图 :(粗线为网络输出 ,细线为实际走势)


  由以上各图所显示的结果可以看出 ,网络加上了自纠错功能后 (见右边一组图 ) ,对比未加上自纠错功能的情况 (见左边一组图 ) ,较明显提高了其在股票短期滚动预测上的精度 ,改善了其对股票走势波峰波谷的预测 ,即提高了其对股票趋势预测的性能。并且可以看到由于采用二进制序列对应误差序列 ,网络在学习训练期的滚动预测无误模式识别 ,即网络在学习训练期的滚动预测值与期望值的均方误差就是输入数据处理时的均方误差 (见表 3 ) ,而与训练后的网络输出无关。
  我们再比较一下该算法在 3 0点预测 ,50点预测与1 0 0点预测的性能差异 :

  由表 5、表 6、表 7可以看出本文采用的神经网络在股票滚动预测中短期预测比中长期预测效果要好 ,自纠错方法的运用对短期预测性能的改善较大。也可以看出由于成交金额变化较大 ,非线性很强 ,有时自纠错方法的运用反而增大了预测的均方误差 ,但由预测输出走势图可以看出 ,运用自纠错方法以后 ,网络对股票收盘价、成交量、成交金额的短期走势预测比无自纠错功能的网络预测要好 ,对长期走势预测也比无自纠错功能的网络有所改善。因此 ,从本文提出的趋势预测想法上来看 ,自纠错方法是有效的。
6 结束语
由以上实验结果可以得出结论 ,本文提出的自纠错快速BP网络在股票短期滚动预测上的应用是有效的。可以看出 ,此算法比经典BP算法在速度和预测精度上都有很大提高 ,且自纠错功能的引入在一定程度上提高了股票滚动预测的精度 ,短期内较好的预测了股票变动的趋势。但我们也可以看出 ,滚动预测的精度还不很令人满意 ,可以在以下几方面加以改进 :
  (1 )股市是一个复杂的系统 ,应用神经网络进行股市预测 ,应增加学习训练数据量 ,输入层增加更多的影响股市变化的因素的数据。
  (2 )本文指出的自纠错网络 ,仅设计了一位检验位来判断 ,纠正输出模式 ,可以设计更好的纠错算法来提高网络性能。
总之 ,要达到比较精确的预测股票的走势 ,尚需要进行更多的深入研究

coolsun(neustock@hotmail.com,Oicq:452582)
广州明夏阳人工智能技术有限公司

  
金币:
奖励:
热心:
注册时间:
2001-2-23

回复 使用道具 举报

发表于 2002-1-15 08:52 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

通俗地讲,人工智能或者人工生命比传统的预测方法准确率高,带有智能特点。
金币:
奖励:
热心:
注册时间:
2001-12-26

回复 使用道具 举报

发表于 2002-2-4 07:54 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

从贴图很明显可以看出图中没有任何“生命”迹象,如股价是具有生命特征的话,你的预测图实质上是股价生命活动的影射波动
金币:
奖励:
热心:
注册时间:
2002-2-3

回复 使用道具 举报

 楼主| 发表于 2002-2-5 17:57 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

rise兄好!所谓“生命迹象”请参看文中详细算法,神经网络算法其实就是拟生算法,具备某种意义上的人工生命特点。您可以参考神经网络方面的书看看。期待与您进一步探讨。

coolsun
金币:
奖励:
热心:
注册时间:
2001-2-23

回复 使用道具 举报

发表于 2002-3-2 19:39 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

很有意思的!不错,但你可以用与实战吗?在实战中有资金的限定吗?考虑到自我的扰动了吗?……
金币:
奖励:
热心:
注册时间:
2002-1-18

回复 使用道具 举报

发表于 2002-3-18 06:50 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

您好,苍雕,请您看机器操盘的贴,资金会有限定的,需要在实战中测试,自我扰动的问题提得很好。
金币:
奖励:
热心:
注册时间:
2001-12-26

回复 使用道具 举报

发表于 2002-4-19 02:20 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

其实在中国的股市有那麽复杂吗,鬼信.我信人!
金币:
奖励:
热心:
注册时间:
2002-3-5

回复 使用道具 举报

发表于 2002-4-19 03:24 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

我信机器,不信“人”。
我可不是鬼!
金币:
奖励:
热心:
注册时间:
2001-12-11

回复 使用道具 举报

发表于 2002-4-19 18:08 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

股市人为因素太多,你的机器选的股这两天涨了吗,指南针每天都选出了股,这两天你敢买吗?
金币:
奖励:
热心:
注册时间:
2002-3-5

回复 使用道具 举报

发表于 2002-4-24 19:50 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

神秘人,名字不错,我喜欢,希望你的系统也和你一样神秘!从你的说话来看,你对这很有研究呀,不错,问个问题:时间是固定的一天24个小时吗?
金币:
奖励:
热心:
注册时间:
2002-1-18

回复 使用道具 举报

发表于 2002-5-12 07:35 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

造一个象人的机器,还不如直接造一个人,哇~~~
金币:
奖励:
热心:
注册时间:
2001-5-23

回复 使用道具 举报

发表于 2002-5-12 19:01 | 显示全部楼层

[中期研究成果] 具有自纠错功能的神经网络在股市趋势预测中的应用

苍雕,您好,有空电话聊聊。
金币:
奖励:
热心:
注册时间:
2001-12-26

回复 使用道具 举报

签到天数: 4 天

发表于 2006-4-4 18:58 | 显示全部楼层
是好东西
金币:
奖励:
热心:
注册时间:
2006-1-26

回复 使用道具 举报

发表于 2006-4-4 22:45 | 显示全部楼层

文中很多经验值得借鉴,谢了,

金币:
奖励:
热心:
注册时间:
2005-11-15

回复 使用道具 举报

发表于 2006-4-11 21:02 | 显示全部楼层

版主的这篇文,很有深度,但可惜没人讨论,应该是很好的发展方向,

可怜版主一片心意,这里就向一座孤庙,香火稀少,人烟冀,四年前的文,真是可贵,
金币:
奖励:
热心:
注册时间:
2005-11-15

回复 使用道具 举报

发表于 2006-4-16 21:29 | 显示全部楼层

版主的这篇文,很有深度,但可惜

d
金币:
奖励:
热心:
注册时间:
2005-11-15

回复 使用道具 举报

签到天数: 1 天

发表于 2006-4-16 21:54 | 显示全部楼层
原帖由 张溪溪 于 2006-4-16 21:29 发表
版主的这篇文,很有深度,但可惜

脏兮兮小朋友到底有没有看明白别人在干什么?
金币:
奖励:
热心:
注册时间:
2003-11-6

回复 使用道具 举报

发表于 2006-4-17 03:26 | 显示全部楼层
哪儿都有,争不到头。
还是禅道养身。
金币:
奖励:
热心:
注册时间:
2001-4-26

回复 使用道具 举报

签到天数: 1 天

发表于 2006-4-17 07:08 | 显示全部楼层
原帖由 无聊嘛 于 2006-4-17 03:26 发表
哪儿都有,争不到头。还是禅道养身。

没事贴贴,聊增一分两分。
金币:
奖励:
热心:
注册时间:
2003-11-6

回复 使用道具 举报

发表于 2006-4-17 09:16 | 显示全部楼层
水平不够,没看懂
金币:
奖励:
热心:
注册时间:
2006-4-6

回复 使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站声明:1、本站所有广告均与MACD无关;2、MACD仅提供交流平台,网友发布信息非MACD观点与意思表达,因网友发布的信息造成任何后果,均与MACD无关。
MACD俱乐部(1997-2019)官方域名:macd.cn   MACD网校(2006-2019)官方域名:macdwx.com
值班热线[9:00—17:30]:18292674919   24小时网站应急电话:18292674919
找回密码、投诉QQ:89918815 友情链接QQ:95008905 广告商务联系QQ:17017506 电话:18292674919
增值电信业务经营许可证: 陕ICP19026207号—2  陕ICP备20004035号

举报|意见反馈|Archiver|手机版|小黑屋|MACD俱乐部 ( 陕ICP备20004035号 )

GMT+8, 2024-4-29 01:58 , Processed in 0.077070 second(s), 7 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表