(上海对外经贸大学,上海 201620)
金融市场中的神经网络拐点预测法
胡悦
(上海对外经贸大学,上海 201620)
本文首先分析了前人学者在使用神经网络模型对金融市场进行预测时的局限和错误,提出了基于拐点预测的改进方法,接着使用该方法构建神经网络模型以上证综指为例展开实证研究,并对模型进行了评估,证明了模型的有效性。
神经网络;金融市场;预测
人工神经网络凭借其强大的拟合性能,在经济学预测领域得到了广泛的重视。刘国宏(2005)利用深圳的具体经济数据进行了实证预测研究,证明基于人工神经网络的经济预测是可行和有效的,利用神经网络进行经济预测对于有效指导经济决策具有较大的参考价值。刘德红(2012)在《基于微观结构理论的证券市场可预测性研究》一文中,使用BP神经网络对上证综指和万科A的每分钟收益率进行了预测,取得了一定效果,表明使用神经网络对上证综指进行预测是可行的。上证综指自1991年发布以来,已经成为中国股票市场的代表性指数,对上证综指进行预测,可以较好地对其他股票指数、个股、期货、期权等衍生品进行合理定价和交易。此外,依靠随时可更新的模型内在传导机理和运行结构,以尽可能避免小概率事件,人工神经网络的种种优势是传统的统计学模型和金融模型难以企及的。
过去十年间,有大量的学者研究了如何使用神经网络模型直接预测股票市场、债券市场、汇率市场及其他衍生品市场的价格或点数,几乎所有学者的论文得出了模型有效的结论。
在如下的例子中,使用上证综指2000年1月至2016年12月的日收盘价共4112条数据样本构建神经网络模型。将数据3阶前置并窗口化之后,作为输入项,将原始收盘价格直接作为输出目标值,这是目前绝大多数该领域学者的做法。使用前7/8的样本作为训练集,后1/8的样本作为验证集。
训练集部分样本如下表所示:
日期1收盘价1日期2收盘价2日期3收盘价3日期-目标收盘价-目标2000-01-041406.372000-01-051409.682000-01-061463.942000-01-071516.62000-01-051409.682000-01-061463.942000-01-071516.62000-01-101545.112000-01-061463.942000-01-071516.62000-01-101545.112000-01-111479.782000-01-071516.62000-01-101545.112000-01-111479.782000-01-121438.022000-01-101545.112000-01-111479.782000-01-121438.022000-01-131424.442000-01-111479.782000-01-121438.022000-01-131424.442000-01-141408.85
接下来,使用浅层BP神经网络构建上证综指预测模型。模型为单隐层结构,隐层节点数为10个,激活函数为函数:
(1)
迭代次数为1000次,经多次实验该迭代次数已足够使该浅层神经网络收敛。训练结果如下图所示。大部分前人学者得到了这一结果,并认为模型有效。
然而前人学者们忽略了一个严重的问题:神经网络输出的预测值,实际上是输入值的平移。例如,为了预测3天后的股票价格,研究者普遍会如上文选择将前置3阶的数据输入模型进行训练,并直接将第4天的价格作为输出目标值,而这样的模型输出的预测值将不会是真正的预测值,而只会是和输入值(3天前的值)非常接近的值。
这是因为BP过程实际上是一个反向求导过程,算法会向着梯度——即损失函数一阶导——的最小值靠近,但由于金融数据的复杂性,梯度函数中充满了各种局部极小点,算法在降低梯度的过程中,非常容易陷入局部极小,尽管统计验证结果较理想。当算法“认为”直接平移3天前的数据能够使误差达到一个很小的水平(局部极小)时,就很难再继续优化了。因此,前人的经验既有借鉴意义,也需要更深入的改进和优化。
从训练结果图中可见,神经网络不论是对训练集的拟合输出,还是对验证集的预测输出,似乎都是有效的。然而,放大训练结果图后,可以看到神经网络的拟合输出和预测输出在形态上均近似于目标值的滞后。
修改模型结构、修改样本结构、修改样本来源类别,仍将得到类似的结果。经过测试,使用DBN、SAE、RNN、LSTM等深度学习模型直接预测股票价格、点数,也会得到同样的结果,依然会陷入局部极小。
因此作者认为,以目前现有的算法、模型,使用机器学习技术直接预测金融产品的价格是几乎不可能的。若使用不包含输入项的目标值训练模型,虽然可以避免上述问题,但此时模型相当于在进行无限分类,对模型和设备的要求超出了客观现实条件。目前的条件下,使用神经网络进行金融预测需要另寻他法。
作者认为,可行的改进方法之一是对金融序列的拐点进行预测,以此为基础可以构建择时模型。
同样使用上证综指2000年1月至2016年12月的日收盘价共4112条数据构建神经网络模型。使用三阶前置窗口化的数据作为输入项,使用简单标注的底部拐点作为目标值。样本中,目标值的0表示改日非底部拐点,100表示该日收盘价是底部拐点。训练集部分样本如下表所示:
日期1收盘价1日期2收盘价2日期3收盘价3日期-目标拐点-目标2000-01-041406.372000-01-051409.682000-01-061463.942000-01-0702000-01-051409.682000-01-061463.942000-01-071516.62000-01-101002000-01-061463.942000-01-071516.62000-01-101545.112000-01-111002000-01-071516.62000-01-101545.112000-01-111479.782000-01-121002000-01-101545.112000-01-111479.782000-01-121438.022000-01-1302000-01-111479.782000-01-121438.022000-01-131424.442000-01-140
拐点的标注情况如下图所示。其中,红色点表示阶段底部拐点,绿色点表示阶段顶部拐点。
使用多层BP神经网络构建模型,模型为4隐层结构,每一层隐层的节点数目为10个,激活函数为函数。使用前95%的样本集作为训练集,使用后5%的样本集作为验证集。迭代6000次后神经网络收敛,训练结束。训练结果如下图所示,其中,蓝色“+”号为目标值,绿色“*”号为训练集的拟合输出结果,红色“.”号为未加入训练过程的验证集的预测输出结果。从训练结果图中可以看到,神经网络已经出现了过拟合现象,模型已经得到充分训练。
对基于后5%验证集的预测输出值进行回测,以检验模型的有效性。回测结果如下文的4张结果图所示。回测具体时间段为2016年3月3日至2016年12月31日,共206个交易日。用于回测的模拟账户共有100万元资金,模型发出底部拐点信号后,以上证综指点数为价格,买入100单位指数,并于从下1个交易日开始计算的第5个交易日平仓。
模型在该时间段内最终取得了3.30%的收益,年化收益率为3.90%。2016年市场无风险利率为1.50%,该时段的无风险利率为1.26%,低于模型取得的收益率。模型的夏普比率为1.6392,说明模型是有效的。但模型的CAPM收益率为12.04%,且最终收益率低于市场收益率,说明模型尚有改进空间。
年化收益率3.90%β2.4179最终收益率3.30%协方差0.0004平均收益率0.92%标准差0.0124无风险利率1.26%E(ri)0.1204市场收益率5.72%夏普比率1.6392
本文旨在提出正确使用神经网络模型对金融市场进行预测的方法,故在模型数据和结构选取时予以简化,并未达到最优。例如,输入的训练集仅为3阶窗口化的上证综指收盘价,目标值的标定也有改进空间,操作策略也过于简单。不过这些缺陷都不影响本文模型的有效性及本文的论点。
本文分析了前人学者使用神经网络模型对金融市场进行预测时的局限性和错误,并使用拐点预测法对上证综指进行了实证研究,接着对预测结果进行了评估,验证了该模型的有效性。
[1] 刘国宏.基于人工神经网络的经济预测研究[D].天津大学,2005.
[2] 刘德红.基于微观结构理论的证券市场可预测性研究[D].北京交通大学,2012.