基于深度学习的金融衍生品RSI指标预测模型

2019-08-22 07:26侯瑞高凤阳魏赫男
电子技术与软件工程 2019年12期
关键词:隐层原始数据偏置

文/侯瑞 高凤阳 魏赫男

RSI 作为一种滞后指标,在预测短线波动中不能起到太大的作用,理论上来说,短周期RSI 指标虽然敏感,但在区间内快速波动的次数较多,可靠性较差;大周期的RSI 指标虽然非常准确,但敏感度不够,比较迟钝,容易错过最佳买卖点。此外,RSI 是由收盘价决定的,如果日内行情波动较大,上下影线非常长,RSI 就不能够反映行情变化。因此,在实际K线中,如果短期RSI 曲线向上突破长期RSI 曲线时,称为RSI 指标“黄金交叉”,构成买入信号;当短期RSI 曲线向下突破长期RSI 曲线时,称为RSI 指标“死亡交叉”,构成卖出信号。在本模型中,采用了RSI12日指标来作为原始数据。本文中采用普遍采用方法:即RSI 计算方法RS=N 天内收盘价涨幅和的均值÷N 天内收盘价跌幅和的均值RSI=100-100÷(1+RS)计算方法。

1 实现过程

1.1 Keras

Keras 属于高层神经网络API,由纯Python 编写,基于谷歌TensorFlow、Theano以及微软CNTK 后端。Keras 可以快速构建一个实验项目,得到准确的结果。

1.2 RNN

RNN(循环神经网络)是一种主流的人工神经网络,RNN 在不同层的神经元之间也建立带权连接,当序列推进,以前的隐藏层将对后来的隐藏层产生作用

RNN 具有以下特点:

(1)RNN 的结构与全连接网络类似。

(2)RNN 有按时间展开的特性。

(3)全连接网络对每一个样本只做一次forward,RNN 对一个样本会做多次forward。

(4)RNN 的缺陷是当输入数据的时间间隔渐渐变长时,将失去较长时间之前的学习,这种现象称为梯度消失。

1.3 实现方法

我们的实验环境为Python 3.7,keras 库

2.2.4 ,采用Tushare 获取RSI 数据集

建立多层神经网络RNN1,RNN1 为RSI形成买卖指标时交易品种的价格变化,建立多层神经网络RNN2,RNN2 为K 线趋势产生反复时RSI 的超买超卖强度,输入原始数据,进行神经网络学习,输出数据集。

图1:实验输出结果

RNN1: 100 个节点,接受input1 的50 个特征,以及自身的偏置值,故有(50+1)*100=5100 个参数;

2RNN1: 50 个节点,接受input2 的30 个特征,以及自身t-1 时刻的50 个隐层输出,故有(30+50+1)*50=4050 个参数;

RNN2: 100 个节点,接受dense1 的100 个隐层输出,以及自身的偏置值,故有(100+1)*100=10100 个参数;

2RNN2: 50 个节点,接受2RNN1 的50 个隐层的输出、自身t-1 隐层的输出,以及自身的偏置值,故有(50+50+1)*50=5050 个参数;

output: 3 个节点,接受RNN2 的100 个隐层的输出、rnn2 的50 个隐层的输出,以及自身的偏置值,故有(100+50+1)*3=453 个参数。

2 Python部分代码

X1 = np.random.rand(10000,50) # 10000 个样本,50 个特征

X2 = np.random.rand(10000,60,30) # 10000个样本,60 个时间点,30 个特征

y = np.random.choice([0,1,2],size=10000)

y = np.eye(3,dtype=int)[y]

Input1 = layers.Input(shape=(50,),name='Ex ample3_input1')

RNN1 = layers.Dense(100,activation='relu',name='Example3_RNN1')(Input1)

RNN2 = layers.Dense(100,activation='relu',name='Example3_RNN2')(RNN1)

Input2 = layers.Input(shape=(60,30,),name='Example3_input2')

2RNN1 = layers.SimpleRNN(60,return_seq uences=True,name='Example3_2RNN1')(Input2)

2RNN2 = layers.SimpleRNN(60,name='Exa mple3_2RNN2')(rnn1)

concat = layers.Concatenate(axis=-1,name='Example3_concat')([RNN2,2RNN2])

Output = layers.Dense(3,activation='softmax',name='output')(concat)

model = Model(inputs=[Input1,Input2],outp uts=Output)

model.compile(optimizer='sgd',loss='categor ical_crossentropy')

model.fit([X 1,X 2],y,batch_size=200,epochs=10)

3 实验结果分析

3.1 结果

在matlab 中将其绘制在坐标轴上,利用线性回归方程验证相关性,观察曲线后发现RSI 超买超卖指标与趋势变化表现出较强的相关性,但在实际应用中可能有一定的滞后。如图1所示。

3.2 结论

通过深度学习我们发现RSI 指标在市场中可以起到积极的指导作用,尤其是在长线投资中,投资者可以通过判断RSI 强弱变化来进行交易。

猜你喜欢
隐层原始数据偏置
GOLDEN OPPORTUNITY FOR CHINA-INDONESIA COOPERATION
基于40%正面偏置碰撞的某车型仿真及结构优化
基于双向线性插值的车道辅助系统障碍避让研究
基于RDPSO结构优化的三隐层BP神经网络水质预测模型及应用
全新Mentor DRS360 平台借助集中式原始数据融合及直接实时传感技术实现5 级自动驾驶
一级旋流偏置对双旋流杯下游流场的影响
基于近似结构风险的ELM隐层节点数优化
最优隐层BP神经网络的滚动轴承故障诊断
面向TIA和缓冲器应用的毫微微安偏置电流运放可实现500MHz增益带宽
世界经济趋势