APP下载

构建多层循环神经网络结构对金融指标数据的验证分析

2021-03-24刘超云谢玮

数字技术与应用 2021年1期
关键词:时刻向量神经网络

刘超云 谢玮

(1.中国联合网络通信有限公司广西分公司,广西南宁 530022;2.广西财经学院,广西南宁 530022)

1 传统的金融分析机器学习方法

在金融数据分析领域(股票、期货),我们最常用的指标有MA、RSI、MACD等,预测分析用机器学习方法常用的有线性回归计算、SVM支持向量机,朴素贝叶斯和随机森林(决策树)算法等。这些传统的机器学习算法大多都是回归算法的衍生,对过去时刻的数据的特征学习缺乏连续性记忆[1]。

还有一个常用于预测的马尔科夫模型(Markov models),其最基本的模型就是马尔科夫链,就是用来确定一系列时间序列状态之间的关系[2],预测状态输出则由当前状态矩阵(各状态的概率矩阵)与状态之间的概率对称矩阵进行乘积;

Pn(t-1)为时刻t-1的第n个状态单元发生概率,Pn(t)为时刻t的第n个状态单元发生概率,而[P1(t)…Pn(t)]则为各个状态的概率向量(矩阵),最后可以算出哪个状态单元发生的概率最大。

但是马尔科夫链预测的状态输出只和上一时刻状态的概率矩阵有关系,和过去其他时刻的状态分布无关,其并不依赖过去其他时刻的状态,有一定的局限性。

2 神经网络结构

自循环神经网络Recurrent Neuralnetwork被提出以来,作为机器学习的神经网络一种,已经广泛被人们用于金融、识别和安全等领域。rnn在处理连续序列数据(Sequential Data)的分析上十分有效[3],克服传统神经网络对历史权值参数(Hyperparameter)关联性联系弱的缺点,对数据信息状态能够进行记忆。同时,基础的rnn非常依赖前一时刻的网络状态(Previous States),在每个时刻(Timestep)都会与前一时刻的网络状态相关联(一般为输入向量卷积状态向量)通过rnn内部结构得出输出和下一时刻的状态,以此反复循环训练并得出最佳结果,也可以用到金融分析[4]。

循环神经网络(RNN)其实是前馈神经网络的进一步延伸,但是其结构并不是单一的循环结构,其只是在输入和输出在连续时间节点上的循环(Timestep),同时其输入并不是最初的输入值,而是不断更新的新输入数据。x(t)表示时刻t的输入数据,S(t)表示时刻t的网络状态,y(t)表示时刻t的输出数据,Wx代表时刻t输入训练参数向量(矩阵),Ws代表时刻t网络状态训练参数向量(矩阵)。因此根据rnn的特征,在t时刻的输出y(t),是受到t-1时刻的输入x(t-1)影响的,因而有如下公式0:

其中bs为状态的偏置量参数(parameters)。

regress_function是回归函数,可以是softmax也可以是logistic回归,Wy是输出状态参数向量,by为状态的偏置量参数(parameters),y(t)为通过输入x(t)经过网络后得出的实际输出值。

3 金融数据前期计算处理

现在有很多的数据都有每日的交易量和OHLS基本数据如股票、期货、货币指数等,所以我们选择基本的股票数据即可,这些股票的历史数据可以从各大金融网站接口直接获取。

在股票数据分析里,我们主要对股票的趋势指数平滑移动平均线(M AC D)和开盘收盘价进行分析。MA CD 我们采用普遍的12日快指数移动平均线(EMA)减去26日慢指数移动平均线求得。通过构建循环神经网络(R N N)分析MACD和其他移动平均线的历史数据,预测每日的开盘和收盘价格[5]。

4 循环神经网络结构设计

用神经网络分析预测股票数据,以及验证指标和指标组合可行性,可以用不同类型的网络进行分析,如C N N、R N N 等,这里我们主要使用循环神经网络R N N 来做我们的金融数据分析和验证。

我们在分析金融数据的时候,通常会使用到很多指标公式,常用的有M A C D、M A、E M A、W M A、R S I、D IF、A B I、MP中间价指数等指标,如何验证这些指标或者指标组合在某一个金融数据、股票或者期货适用,我们可以使用神经网络来验证。

图1 多层RNN 单元结构Fig.1 Structure of multilayer RNN unit

在单个循环神经网络单元里,我们训练数据,一般是设置好rnn单元的状态数量,同时设置好step每次输入数据数目,把数据分成多维的数据序列或者向量矩阵,输入到神经单元里,然后得到一个step数和状态数的向量序列;拿这个向量序列做预测或验证,同时可以与样本标签结果进行比较或者做回归计算,并且最小化损失函数,训练出的参数模型来改进预测结果。

在本篇我们主要设计一个多层的rnn单元结构,来测试我们的股票指标算法组合的可行性。多层的rnn结构,我们可以把一个rnn单元cell看做一个神经层,多个rnn单元并联,前一个rnn单元的状态输出为下一个rnn单元的输入,如图1,t时刻输入向量input从一个rnn单元进入,经过n个单元层,输出向量o u t p u t,如果数据输入的批量数batchsize为b和输出状态数为h,那单次输出状态向量矩阵的维度为3个维度Ot=(b,n,h)。然后我们需要取第n个单元层的状态输出向量作为预测输出P,通过转化Ot矩阵到(n,b,h),取第一个维度n的最后一组数据作为预测用的输出数据O’维度为(b,h)。对O’再经过一个全链接层和加上偏置量,得出预测值Pt,如下公式。

其中Wt为时刻t 时神经层r nn 单元最后一层权值参数矩阵,*为矩阵的乘积,为O’的状态矩阵,bt为偏置量。

有了以上的神经网络结构,我们可以把数据批量分成b数量的输入值input集合{xn}和每个输入值相对应的实际标签值集合{yn},{xn}输出到网络,得出状态向量输出{Pt}集合,通过损失函数(loss function)对预测值Pt和实际标签值y做比较[6],通过梯度反向计算最小化损失函数参数值。

我们可任意选取一个标准普尔500指数的公司股票数据(S&P500),我们在这里选微软公司的从1986年起的数据作为分析对象。我们为了验证指标数据组合是否适合用来预测股票结果,我们用8000组的12天MA、MACD、DIFF和12天RSI的指标组合数据,进行10次(Epochs)以上的循环训练、最后得到预测值(Predict)和标准化以后每日收盘价格(Close)曲线如图2。

图2 预测价格predict 标准化值与收盘价close 标准化值对比Fig.2 Comparison of predicted normalized value and close normalized value of forecast price

我们对8000个样本数据进行训练循环次数(Epochs)在10次以上,得到了预测标准值最后的0.700036接近实际的最后收盘价格标准值0.744255,由此可以看出MA、MACD、DIFF和RSI的指标组合对股票还是有比较好的预测性。

如果我们单纯用MACD数据做训练输入,会得到图3的预测值曲线,和图2实际收盘价格曲线有很大的差距,这也符合我们做金融股票数据分析时候,使用多个股票指标组合来分析,对判断数据走势准确度有很大的帮助。

5 总结

我们通过构建多层的循环神经网络,对金融股票数据指标算法组合进行验证,可以有效推断出比较合适的金融分析方法,有助于金融分析工具使用。我们在构建循环神经网络时使用了多个的神经网络单元并联对神经元状态信息进行多层过滤和筛选,最后输出预测结果去与实际值做对比并得到有效的验证效果。在数据源方面,除了金融股票的数据和指标数据,还可以利用公司其它披露的经营信息和大盘总趋势信息进行量化作为数据输入到神经网络进行训练和分析,将能得到更好的效果。

猜你喜欢

时刻向量神经网络
向量的分解
冬“傲”时刻
捕猎时刻
聚焦“向量与三角”创新题
神经网络抑制无线通信干扰探究
向量垂直在解析几何中的应用
基于神经网络的拉矫机控制模型建立
向量五种“变身” 玩转圆锥曲线
复数神经网络在基于WiFi的室内LBS应用
基于支持向量机回归和RBF神经网络的PID整定