20.10 类神经网络系统
所谓类神经网络被认为是揭示市场关系的有力工具。 [1] 该技术具有探明基本面信息、技术指标和价格数据之间非线性相关性的卓越能力。它的缺点是太强大了,如果不进行适当的控制,那它就会显示数据之间的相关性只有在偶然的情况下才会成立。 [2]
虽然计算机化的神经网络的思想和言论是基于人脑的生物学功能而被开发的,但是,人工神经网络(ANN)并不是大脑的模型,也不是人类感知的模型;它非常善于寻找行情模式,无论其是连续的还是离散的,抑或是出现在不同的时间序列当中。
人工神经网络的运行模式可以被认为是一个反馈过程,其类似于巴甫洛夫训练狗的方法:
(1)响铃;
(2)这条狗跑到3个碗中的1个;
(3)如果是对的,狗就会得到食物;如果错了,狗就会被电击;
(4)如果训练过了,则停止;如果没有经过训练,则回到步骤1。
20.10.1 神经网络系统的术语
计算机神经网络系统中使用的术语来自人体生物的对应物,如图20-16所示。以下是主要内容:
·神经元是组成大脑的细胞,其功能是处理和存储信息;
·网络是一组组的神经元。
·树突是信息的接收者,将信息直接传递给神经元;
·轴突是神经元输出的路径,其允许信息从一个神经元传递到另一个神经元。
·突触存在于神经元之间的路径之上,其可能会抑制或增强神经元之间的信息流。
上述的神经系统可以被认为是一种选择器。
图20-16 生物神经网络
资料来源:Perry Kaufman,Smarter Trading(New York:McGraw-Hill,1995),165.
注:其通过树突接收信息并传递给神经元进行存储;数据则由其他细胞通过移动而输出链接,我们称为轴突共享;突触可能位于个别神经元或神经网络之间的路径,它们通过抑制或增强信息流来选择相关的数据。
20.10.2 人工神经网络系统
利用本质上与生物神经网络相同的结构,计算机或人工神经网络(ANN)系统可以生成一个关于股票市场方向的决策模式, [3] 它在很大程度上依赖于突触:在这个过程中,其被解释为加权因子,为了实现其结果,它还要将应用于神经元层而相互作用的输入系统结合成单一的、更复杂的数据库,如图20-17所示,这是一个经典的三层神经网络,与已知的结果(学习阶段)相比,ANN系统将修改相应的加权因子且以最小化的方式输出误差。该系统模式与最小二乘回归方法不同,因为它包括了线性的、非线性的以及模式识别之间的相关性。
图20-17 确定股价走势的三层人工神经网络系统
资料来源:Perry Kaufman,Smarter Trading(New York:McGraw-Hill,1995),166.
为了提高效率且避免过度拟合,ANN系统的输入项应该是那些与股票价格方向所最相关的因素,我们这里选择了5个输入项,即国内生产总值(GDP)、失业率、产量或库存、利率和美元的价值,这些都是现成的数据;每一项都被输入并存储于单独的第一层神经元中。而改变前述这些神经元的数值则可能会对最终的输出产生正面或负面的影响,这就是所预期的股票价格的方向。GDP上升、失业率下降、库存减少以及美元走低都是经济增长的好兆头,并可导致利率上升。另外,加息是美联储为了防止通货膨胀而采取的防御措施,其最终会导致股票价格的下跌。同时,利率本身对股价有直接影响,随着借贷成本的下降,企业利润也会不断提高。
第一层的每个神经元接收来自树突的数据,再通过突触连接到第二层神经元。每个突触都可以通过分配权重因子来限制或增强信息。例如,如果失业率的变化对股价的最终影响大于GDP的变化,那么,它可能会得到1.5倍的权重,而GDP的权重为0.9。如果任何数据的微小变化被认为对结果不重要,那么突触就可以作为一个阈值,只允许数据于超过最小值时方能通过;如果数据无关紧要,则它的权重系数为0;如果数据与测试结果相反,则权重因子将为负值。
第二层的神经元被用来将初始数据合并到有意义的子集中。为了生成此种情境,第一层的每一个神经元都必须通过它自己的轴突与第二层中的每一个神经元相连。图20-17显示了可能生成的重要分组,其忽略了别的链接轴,因为这些链接会使插图变得混乱。GDP、失业率和库存会被合并成一个单一项,其被称为国内经济财富状况(DEH)。前述这些突触使用加权因子且允许每一个元素被赋予一个比DEH指标更大的权重度。我们这里还注意到:神经元DEH可因预期利率而改变,这是数据流转到第二层的另一个神经元的结果。最后,第二层的三个神经元根据重要性结合起来,其应用输入数据对股票净值进行映射。
第二层可以被称为隐藏层。因为我们通常只看到输入和输出层,所以,第二层有复杂的互链接属性,其允许生成反馈情境。通过添加另一个隐藏层,我们则可以生成更复杂的链接模式。一般来说,隐藏的图层越多,解析的时间就越长,答案也越精确。
人类大脑的工作方式与图20-17所示的人工神经网络非常相似,它会对数据进行分组和权衡并将它们组合成子集组,最后进行决策。人类衡量数据的过程是复杂的,但不必是透明的,也就是说,我们可能永远不知道精确的数据流、客观存在多少个层级,以及在最终决定之前如何分配和重新分配相应的权重。
因为计算机神经网络系统无法知道相关的答案是否正确,所以你必须告诉它,这个过程是通过给计算机提供历史数据和相应的答案来完成的。我们也可以通过给人工神经网络提供一个长期的历史信息的方式来确定并使用相应的反馈机制,而相关的加权因子通常会给出正确的结果。输入计算机的历史数据越多,它就越有可能找到一个可靠的答案。图20-18显示了使用不同的输入项来预测股票市场方向的结果,其输入两个项目:奥斯卡奖得主和NASA(美国国家航空航天局)发射的数量,从长远来看,相关数据不太可能有用,但其似乎可以为短期的经济活动提供有价值的信息。通过充分的比较,我们发现加权因子表明失业率对价格有很强的负面效应;GDP值则具有很强的正向效应;库存值则具有较弱的正向效应;其他项目没有一致性的预测能力,所以,它们得到的权重值为0,这个反馈过程叫作训练。
图20-18 通过反馈机制进行的学习过程
资料来源:Perry Kaufman,Smarter Trading(New York:McGraw-Hill,1995),166.
20.10.3 对输入项的选择和预处理模式
对于使用神经网络系统找到一个成功的解决方案所需要的输入项而言,其间存在着相当大的争议;然而,每个人都认同对输入项的选择模式是至关重要的。这些输入项必须以最直接的形式呈现,因为神经网络将无法改变它们,这个步骤叫作预处理。我们必须决定哪些因素最有可能影响股票的走势,同时评估其预测行情方向的能力,然后准备包含相关品质的信息数据,例如,我们可能想知道短期和长期的行情趋势、利率的方向、道琼斯效用指数、利率与黄金之比、经济数据(包括GDP和交易的平衡状况)、技术指标(包括相对强弱RSI指标、随机指标、ADX系统、20日移动平均线项下的美国股市和其他主要股市的相关性)等。另外,有无数因素会影响股票的走势,你所选择的因素越多,系统导出解决方案的速度就越慢,而系统弱化的概率就越大。如果你选择的因子太少,那么它们可能就没有足够的信息。因此,预处理问题需要强化实践的过程。你还可以构造一些简单的交易系统,以其显示利润,并将它们的基本成分作为神经网络系统的输入项;你可以为特定的系统创建一个性能系列,该系统只包含-1、0和1,表示空头、中性和多头的市场头寸,这样神经网络系统则可以被用来增强现有的交易策略。
20.10.4 成功的标准选择模式
按照类似于任何回测结果的评估方式,培训过程要求你选择成功的标准(有关这一点的全面讨论可以在第21章中找到)。可能成功的标准模式包括交易频率、每笔交易的利润规模、回报/风险比率以及盈利频率的组合情境。
根据鲁杰罗 [4] 的说法,神经网络系统可以预测价格走势,比如未来五天的百分比变化值。然而,此类形态更善于预测前瞻性的技术指标,因为这些技术指标往往会有趋于平稳的结果。大多数技术指标(比如顺势指标和动量计算模型)通常要对输入的价格数据进行平滑处理,而计算过程所用的时间越长,则数据就越平滑。鲁杰罗提出了一个输出函数,即
上式是5日随机变化指标的平均值,在相关的表示法中,括号中的[-5]所表示的是未来的5个周期。
20.10.5 反馈训练的过程
神经网络方法的核心是应用训练的反馈过程进行相关的操作,如图20-18所示。这是神经网络的一部分内容,许多人称为学习过程。为了观察良好的实证统计数据,我们建议只使用大约70%的数据进行培训。由于神经网络在每个输入和输入的组合项(输入和输出之间的层次)中提炼加权因子,所以,我们需要更多的数据来测试相应的结果。在其余30%的数据中,我们应将其中的20%用于测试,该方法的成功与否取决于测试数据的性能,剩余的10%可以作为样本外数据而被存储。
我们应用被称为基因演算法则的模式来发现相关的加权因子,这将在下一节中讨论并在第24章中进行详细的探讨。现在,我们需要知道:训练过程的初始阶段要为每个输入的加权因子配置任意值或随机值;随着训练过程的进展,这些加权因子则会随机发生突变或改变,直到发现最佳组合为止。同时,基因演算模型的变化方式可以将加权因子与适者生存的法则相结合,从而得到最佳的选择项且舍弃最坏的项目。
当测试结果以成功的标准来衡量时,此种测试过程则是无法改进的。也就是说,在对历史数据(最老的70%数据)进行了多次反馈循环之后,测试数据(接下来的20%)要与新的加权因子一起使用。而如果测试结果处于改进(也称为收敛)的过程之中,那么,这个过程则是可持续的。如果测试结果以非常慢的速度得以提高或者停止(主要是因为不能找到更好的组合),那么神经网络系统的运行过程就完成了。有时测试结果会变得更糟,而不是更好,这可以通过重新开始使用新的随机加权因子来确定;如果不能解决此类问题,那么很有可能是太多的输入项是无关紧要的,如此,我们应该从少量的基本输入项开始,让相关的流程回到正确的轨道之上。
由于基因演算法则是一个试错的过程,而不是一种分析方法,所以,最好的测试结果是偶然发现的,其不是通过因果关系而得到的。实际上,如果有了足够的数据,那就有可能发现两类事件的相关性,即使它们之间不存在真正的关联也无所谓。另外,为了避免明显的错误,我们有必要审查相应的测试结果。
20.10.6 一个训练过程的范例情境
如果我们想培养一个ANN系统,使其能够提示是否应该买入或卖出相应的股票,那么相对于输入项而言,我们会选择最相关的基本要素,即GDP、失业率、库存、美元指数和短期利率,该测试不使用任何诸如趋势或指标一类的预处理数据。为了简化流程,我们则采取以下方法:
(1)每个输入项都是标准化的,因此,它的数值介于+100和-100之间并表示强度由强到弱,而0为中性;
(2)当上述5个指标的组合值超过+125时,我们将构建一个多头仓位;当组合值低于-125时,我们将构建一个空头仓位;
(3)+125和-125之间的数值所对应的交易策略则被认为是中性的。
为了说明系统培训过程的工作原理,表20-7和表20-8显示了启动值的两个组合情境,如情况1和情况2所示。表20-7显示的是神经网络系统的初始状态,其中,我们首先将所有权重因子设置为1.0,而在实际训练中,网络系统可能要求所有权重的总和为1.0。另外,标准化的输入项的实际值被显示在标有相对价值的那一列中;正确的历史反应位于底部,标记为股票行情对相应数值所做出的强势和弱势的反应模式。为了使神经网络系统返回生成正确的答案,那么在情况1下,它必须生成大于+125的返回值;在情况2下,则须生成低于-125的值。然后,我们可以通过将1.0的初始权重赋予所有的输入项,如此,情况1的值为+75,情况2的值为+40,两者都未能符合历史数据情况,我们则需继续测试,进而寻找更好的加权因子。
表20-7 两个系统培训的范例情境(初始状态)
资料来源:Perry Kaufman,Smarter Trading(New York:MCGraw-Hill,1995).
表20-8 两个系统培训的范例情境(加权因子突变之后)
资料来源:Perry Kaufman,Smarter Trading(New York:MCGraw-Hill,1995).
在表20-8中,加权因子使用基因演算法则进行了突变测试:此范例情境尝试仅使用加权因子+1.0、0和-1.0,其通过扭转失业率和利率对股市走向的影响度并通过随机选择加权因子,从而使测试结果与历史的股票运行模式相匹配。相对于使用加权因子的分数值和更多的系统培训范例而言,ANN系统方法应该是在这些输入项和股票行情运行模式之间建立起当前潜在的相关体系。
20.10.7 测试成功的评价标准
在学习过程中,我们需要根据训练数据的度量系统ANN的输出项来确定成功的标准,进而寻找收敛的问题。其中,常见的测量是平均相关性(根据参数的数量进行调整)、t统计量、t2 统计量以及F统计量。t2 统计量对于神经网络系统而言则是唯一的,其测量了两个变量之间的非线性关系, [5] 即,
式中 σI ——输入数据的标准差;
σO ——输出数据的标准差;
n——观察的次数;
k——模型输入项的数量;
AS——横截面数据 [6] 的斜率平方的均值。
与大多数的比较模式一样,我们还需要根据样本的规模进行精度的测量,应用的是均方根(E)和平均绝对百分比误差(MAPE)指标,即,
式中 n——观察的次数;
ei ——观察的残差项i;
Ai ——观察的实际值i。
20.10.8 减少决策层次以及神经元数量
神经网络解决方案的稳健性直接关系到决策层级的数量、每个层级的神经元数目以及总输入项。较少的元素可以生成更一般化的但更稳健的解决方案。当存在许多决策层和神经元时,我们可以按照许多不同的方式进行组合或重组输入项,进而发现特定的模式。然而,过于特定化的运行模式会使最终解决方案被过度拟合的可能性更大,也就是说,如果过去生成的某些特定情境在将来不会出现,那么我们就要对其进行合理的调整。
如果有太多的输入项且基因演算法也允许生成太多的突变情境(在下一节讨论),那么,系统则不能收敛到解。神经网络可能非常复杂,你需要经过一定的训练才能有效地使用它们。
神经网络的权衡模式与大多数其他优化方法是一样的。过多的输入项和过于复杂的组合模式会增加测试的时间并有可能生成一个过度拟合的解。而过少的数值则可能会生成一个太过笼统的结果,这样做有很大的风险,而且不实用。我们最好从最全面的情境开始,然后朝着更具体的解决方案迈出明确的一步,这种方式能够使你更好地理解相应的过程,最终节省时间并能在达到相关方法的实际边际之后停止操作。
20.10.9 人类行为的建模方式
神经网络被认为是一个类似于人脑平行结构的学习过程。它可以在数据的分类上进行训练,然后用于查找同一类的新数据或者可以在函数的多个点上进行训练(例如,对数曲线或更复杂的循环情境),最后以之发现该函数的其他点。
其与价格预测相关的应用模式是:使每一层级的神经元都包含主要经济指标的结果;当相关数值与0没有显著差异时,级别1和级别2之间的突触将丢弃任何一项指标,这反映了公众对经济报告的看法。在经济复苏的情况下,如在2003年年初以及2008年的次贷危机之后,企业收益和收入的增长情境是最重要的,而其他报告的大部分内容都被忽略了。
收益改善、股市行情上涨之后,交易者要查找就业统计数据且以此来判断经济持续增长和股市价格反弹的情境,在这一点上,收益情况不再像以前那样与更多就业机会所相关的指标同等重要。我们可以构建神经网络系统来反映前述这种选择过程,从而使一两个经济报告比其他方式所给出的经济状况更加重要。应用之前的GDP指标、股票市场行情走势以及联邦基金的指示方向,我们则可以将整个神经网络的解决方案限制在一个或两个经济指标与未来股价走势之间的相关性系统之中——将第一层神经元中的其他报告的突触加权因子设置为0。如果经济报告的变化足以吸引公众的关注(至少1.5倍标准差变化),那么类似的方法可能使突触的加权因子为1,而任何其他时间框架下的数值都为0。因此,各种指标的微小变化对神经网络并没有累积的影响效果,而公众则会忽略相关的数据。
20.10.10 关于神经网络的最终评价
当使用神经网络和其他强大的搜索工具时,每个分析师都必须牢记神经网络几乎总是能在封闭系统中找到正确的解决方案,而其中的输出项则完全由所有的输入项来定义。另外,如果通过其他方式找到解决方案太过困难,例如,在化学或制造业的板块之中,相应公式可能会有太多的变量,那么我们通常会使用ANN度量系统。神经网络系统不仅能够解决相关问题,而且还可以非常快速地解决。然而,股票市场的情境则不尽相同,我们无法确定其间对指定的问题是否可以生成相应的解决方法。由于存在这种不确定性,所以我们不能保证相关的答案能否奏效,在此情境之下,你需要测试样本外的数据并根据测试结果来验证其是否成功。
[1] 本节部分内容来自Perry Kaufman,Smarter Trading(New York:McGraw-Hill,1995),164-171。
[2] 读者可以参考E.Michael Azoff,Neural Network Time Series Forecasting of Financial Markets(New York:John Wiley & Sons,1994);Robert Trippi,Neural Networks in Finance and Investing,2nd ed.(New York:McGraw-Hill,1996);Apostolos-Paul Refenes,Neural Networks in Capital Markets(New York:John Wiley & Sons,1995);and Edward Gately,Neural Networks for Financial Forecasting(New York:John Wiley & Sons,1996),其中展示了一个比较普通的入门的方法。在过去的10年里,虽然有更多的软件可以应用,但它们似乎很少被公开发表。
[3] 在英国斯特灵大学计算机神经科学中心的莱斯利·史密斯(Leslie Smith)教授所开发的网站www.cs.stir.ac.uk上,你可以发现一些非常有用的信息。
[4] Murray A.Ruggiero,Jr.,“Build a Real Neural Net,”Futures(June 1996),这是关于此类主题的一系列优秀文章中最好的一篇。
[5] Stephan Kudyba,“Are Neural Networks a Better Forecaster?”Futures(October 1998).
[6] 同一时间框架项下的数据。——译者注