注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

金融期货

算法交易

 
 
 

日志

 
 

神经网络与交易系统的构建  

2016-12-14 12:56:57|  分类: 量化交易 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

简介


神经网络被认为是一种用于挖掘相关模式的强大工具。由于在寻找市场数据、技术指标和基本面因子等任意组合之间的非线性关系上的出色表现,这种技术在20世纪90年代后期得到了华尔街的注意。很多人都听说过神经网络,但是不知道它是什么以及它是如何用于交易的。

本文的目的是通过平时的语言来介绍神经网络的所有原理,并说明如何利用它来预测价格方向或做出交易决策。然而,在我们开始介绍其在交易中的应用之前,有必要理解一些基础知识。

生物神经网络

“神经网络”这个词实际上是来自生物学。一个真正的神经网络是由几个到数十亿被称作神经元(Neurons)的细胞组成,神经元是我们大脑中用于存储和处理信息的微小细胞。它们都是通过树突(Dendrites,接收信息)和轴突(Axons,发送信息)连接的。突触(Synapses)存在于树突和轴突之间,充当管理神经元之间信息流的过滤器或控制器。如下图所示。
神经网络与交易系统的构建 - star - 金融期货
不要被这些术语吓到,我们没必要记住它们,只要掌握一个总体思路,就是我们的大脑中包含大约100亿个这样的神经元,信息就是通过类似上图的网络结构进行传递的。

人工神经网络

在这篇文章中,我们将主要介绍人工神经网络(ANN)。

人工神经网络(ANN)试图模拟生物架构及其运作。为了这个目的,许多人工神经元将被“创建”并以适当的方式连接以解决现实问题,至少3个或是多达数千个神经元,这取决于实际需要。

本质上和生物神经网络是相同的,人工神经网络中的每一个神经元都有特定数量的输入变量。对应每一个输入变量,有一个类似权重控制器的突触(Synapses)。在人工神经网络中,权重控制器是非常重要的组成部分,在把信息传递到神经元之前,它将重新计算输入连接网络中的所有其他神经元的信息。
神经网络与交易系统的构建 - star - 金融期货
如上图所示的这个网络里,对于每一个输入的Xi,权重控制器都会给它分配一个权重Wi,然后加总所有加权后的输入变量可以得到传递给神经元的最终净值。传递给神经元的值= X1*W1 + X2*W2 + … + Xi*Wi + … + Xn*Wn,其中n是输入变量的总数。

当神经元接收到加总输入值之后,它将根据事先设定好的一些规则对这些信息进行处理。在人工神经网络(ANN)中,这些规则就是某种类型的函数,它们将加总值作为输入值,返回一个输出值,然后该值又将传递到网络的其他神经元。

这种转换的一个简单例子就是“阶梯函数”,当输入值大于某一阈值,返回1,否则返回0。
神经网络与交易系统的构建 - star - 金融期货
神经网络交易系统

权重控制器和变换函数还可以有很多其他的定义方法。对于这个例子,我们使用的是二元阶梯函数,在这个函数里,有一个阈值,当输入值大于阈值时,控制器把1传递到神经元,否则把0传递到神经元。我们也可以使用任何其他的线性或非线性函数来计算出最终返回给神经元的值。

同样,对于网络中连接神经元的构建方法也有很多种。在这里,我们选择最常用的前向式架构(forward-feedingstructure),建立一个以交易为目的的决策系统。

前向系统以市场数据作为输入层,输出买入或卖出的信号。使用两个不同的神经元作为输出层,一个给出买入信号,另一个给出卖出信号。如果已经购买某只股票,交易系统将一直持有这个头寸直到卖出信号出现,或者在没有持仓的情况下进行卖空。

在输入层和输出层之间,我们可以设置隐藏层,其中包含几个基本面或技术面指标,比如市盈率、市净率、相对强弱指数、随机振荡器和动量指标,以形成最终交易决策的基础。
神经网络与交易系统的构建 - star - 金融期货
如上图所示,信息流一步一步向前,直到我们得到最终的输出决策。现在,让我们来看看更多的细节。

输入层

输入层在人工神经网络(ANN)中是非常关键的,因为原始数据的选择直接影响到最终的结果和整个交易系统的预测能力。另外,为了避免过度优化,我们应该选择那些与交易标的价格走势最相关的数据。如果输入无关的数据,最终得出好的结果也只能归于运气。“垃圾进,垃圾出”也就是这个道理。

隐藏层

同输入层一样,在这一层,我们应该只选择那些与市场方向最相关的因子(或指标)。

需要指出的是,在这些指标的计算过程中,我们需要对像市盈率和市净率这样的指标进行标准化,解决量纲不一致的问题,使得各个不同的证券之间具有可比性。

输出层

在这一层,我们把两个神经元分别用于生成买入和卖出信号。以买入神经元为例,它将采用从隐藏层获得的信息,基于某些规则给出买入信号。然而,隐藏层中的五个指标,每一个都不具有可比性。最简单的办法就是对它们进行标准化,然后各自分配权重,最后进行加总。

正如前面所讨论的,如果我们用X表示指标输出值,W表示每个指标的权重,那么输出神经元的输入值 = X1* W1 + X2* W2 + ... + Xn*Wn,在我们的例子中n = 5。

在得到输出层的输入信息后,下一个问题就是把输入信息转换成买入信号。我们可以使用前面谈到的阶梯函数。如果加总值超过阈值,买入神经元返回1,产生买入信号,否则返回0,什么都不做。

一个新的问题是,如何确定每个指标的权重,以及输出神经元的合适阈值。这时,遗传算法又能派上用场了。

遗传算法将随机分配权重和阈值到系统中,用训练数据得出每一组权重和阈值所对应的绩效,然后不断的进化,直到绩效改进上不再具有统计显著性。

一些常见的方法包括t统计量、F统计量、平均绝对误差百分比等,更详细的信息可参考Stephan Kudyba的“神经网络是个更好的预测者吗?”。

绩效评估

为了对一个交易系统进行评估,我们可以使用一些通用的标准,如夏普比率、最大回撤、收益风险比、交易频率、组合换手率等。

由于我们这个神经网络交易系统的目的是对价格方向进行预测,因此,在这个情况下,我们也可以采用Murray A. Ruggiero提出的办法,评估信号发出后未来5天内的价格变化幅度。

过度拟合

然而,由于试错法的特征所决定,最终得到的结果很可能只是偶然。为了避免过度拟合的问题,有几点是需要注意的。

谨慎选择输入数据:选择那些与你的模型输出信息最相关的数据。大量数据变量和非相关因子得出的交易系统稳定性大概率上会很差。

给算法输入足够长的数据,并进行合理分配。一个好的例子就是使用70%的数据进行训练,采用20%的数据进行检测,还有10%的数据进行样本外测试。

控制神经元的数量和决策层数。神经网络的鲁棒性,在很大程度上取决于神经元的数量和决策层数。更少的元素将产生更广泛的解决方案。更多的神经元和决策层,将更有可能产生得到某些特定的形态,而这些形态在输入信息变化后将无法正常工作。

总结

人工神经网络经常在一般优化方法不好使的情况下会用到。它可以迅速找到近似解,但是存在过度拟合的风险。在股票市场中,一个过于特定的解决方案将很难成功,并持续获利。由于这种特质,在应用神经网络技术构建交易系统的时候,我们需要特别小心,并使用样本外数据对结果进行验证。
(网摘)
  评论这张
 
阅读(596)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017