你好,游客 登录 注册 搜索
阅读新闻

深度研习LSTM-RNN成立股票预测模子39555红太阳221111

[日期:2019-11-22] 浏览次数:

  硕士结业之前一经对基于LSTM轮回神经搜集的股价预测技巧实行过幼幼的探索,趁着迩来职责不忙,把个中的一局部实质写下来做以纪录。

  此次股票价值预测模子仅凭据股票的史籍数据来修树,不思考音讯面临个股的影响。曾有日本学者运用深度练习的技巧来对当天的音讯实质实行分解,以判决其对股价正面性/负面性影响,并将其与股票的史籍数据相维系,各自给与必然的权重来对克日的股价实行预测[1]。该预测技巧赢得了必然的结果。

  2.音讯的切确性难以保障:互联网上音讯散播速率极速,媒体之间通常会呈现彼此模仿音讯的处境,而这种抄来的音讯(非原创音讯)往往没有原委肃穆的审核,存正在着实质作假,扩大传布的或许性。一朝分解模子错用了某条谣言或确凿性不高的音讯,很有或许得出失误的预测结果。

  3.言语的歧义性:一条音讯,其正面性/负面性往往存正在着多种解读。比方“习主席告示中国将裁军30万”——新华逐日电讯2015.09.04。这条音讯平常意思上可能解读为:核心当局深刻促进改变,精兵简政,大肆繁荣国防军工工作。这是一种正面性的解读。而正在运用呆板练习模子时,如古板的稀奇值剖析算法(SVD),很有或许会判断其与“客岁五大行裁人近3万”这种音讯拥有较高的肖似度,因此将其划分为负面音讯。

  4.本事实行较为繁杂:这实在是一个极端紧要的因由啦~,曹一菲:股特码合数单双表 票的三大时间目标了解,获取准确的音讯并实行NLP操作,往往必要原委以卑鄙程:人为浏览网页确定不变牢靠的音讯源→策画爬虫实行有用音讯的获取→策画音讯裁剪(填充)计划以应对区别长度的音讯→人为标注音讯的正/负性(也可能用当日股价涨跌来标注)→策画搜集模子→练习及验证模子。个中的每一步都极端困难耗时,况且对付个股来说,并不是每天城市有音讯呈现。

  上面说了这么多,还没有首先对我这个预测模子实行先容,下面首先进入正题。正在定夺摈斥音讯面的考量之后,我首先思索股价涨跌的性子,我以为股价便是资金博弈结果的再现。这回修树的预测模子,朴质的思法是通过深度练习模子来洞悉农家的操作秩序,对拉升、砸盘的处境实行预测。为了到达以下宗旨,39555红太阳221111 我定夺采取以下七个特点来构修搜集模子,即:

  运用这七个特点来对股票的涨跌处境以及资金的滚动处境修树适应的模子。别的,其他的目标相似MACD、均线等也是通过极少根柢数据的运算得出,正在构修模子时并没有将其纳入考量局限。

  通过某股票贸易软件,我得回的源数据约有20来个特点,搜罗:涨幅、现价、涨跌、买入、卖价、成交量等等。为了获得上面所述的七种特点,挑选出涨跌幅、大单净流入、中单净流入、幼单净流入、换手率这5个特点,并阴谋最飞腾幅、最高跌幅两个特点。通过下列公式阴谋得回。

  图中的特点挨次为:日期,大单净流入,中单净流入,幼单净流入,涨跌幅,最飞腾幅,最高跌幅,换手率,股价。股价正在这里的用途是拼接练习样本输出时,阴谋多日的总涨跌幅。

  注:正在对源数据实行处分的岁月,通常会遭遇空值题目:即,有些特点值为0的岁月,体系给出的源数据为”-”或”“。必要实行异常处分。(通常不期而遇新股第一天的涨跌幅为空,或某贸易日大单净流入为空。)

  起初修树一个滑动窗口,本次测验中将滑动窗口修树为50个贸易日。每一个练习样本由50个不断的贸易日构成,每个贸易日的数据蕴涵上述的七个特点,即一个50*7的矩阵,而一个样本的输出则是三个贸易日之后的收盘价比照今日(即样本的输入中终末一个贸易日)收盘价的涨跌幅,修树其上限为0.3,下限为-0.3(当然,不断三个涨停板的涨幅会突出0.3,39555红太阳221111 这里将其团结视作0.3)。之于是挑选三个贸易日之后的涨跌幅行为练习样本的输出,是由于我国股市是T+1操作法则,当日买入弗成卖出,预测的稍微靠后极少可留有操作空间;再有便是一天的拉升/砸盘无意性太大,不易预测,对稍微历久一点的情景实行预测有着更高的不变性。

  归一化联系职责:由于神经搜集激活函数的控造,必要正在练习前将数据映照到0~1区间。本次试验中,中邦经有钱人论坛网址 济的高杠杆题目何解。对近两年的数据,获取其各项特点的最大值与最幼值。修树归一化与函数,正在样本拼接的同时将数据实行归一化。

  修树滑动窗口sample_window = [],每次遍历一行特点数据,归一化后插入窗口末尾,当窗口巨细满50时,阴谋3天后涨跌幅,拼接出一个练习样本,并将sample_window中第一个贸易日的值弹出。

  遍历完所少见据行后,得回数百个练习样本。并将练习样本转存为numpy.array方式以简单练习。

  注:跳点题目,完全分为除权(涨跌幅突出10%)与停盘(相邻贸易日间隔突出10天)。对付跳点题目,咱们判决其是否产生,一朝产生跳点,就清空sample_window,从下一个贸易日从新首先阴谋样本输入,以杜绝样本输入中有跳点数据。

  这里运用keras深度练习框架对模子实行迅疾搭修。修树Sequential模子,向个中增添LSTM层,设定Dropout为0.2,参加Dense层将其维度群集为1,激活函数运用relu,耗费函数定为交叉熵函数。之前也运用过古板的sigmoid行为激活函数,但经测验感想结果不如relu。

  最初的岁月,我对全豹的股票的练习样本堆叠到一同,练习出一个大模子(貌似当时有9万多个练习样本,整整练习了一天=,=),之后对每个股票都实行预测,图谋寻得越日涨幅最高的前5支股票。厥后涌现基本做不到……每支股票的操作秩序都不雷同,运用单个模子无法有用的控造个股的涨跌趋向。

  之后,我孤单选了中国软件这个股票(这个票看起来像农家主导的那种),对它孤单实行分解。运用了一年半的贸易数据行为练习集,共有293个练习样本,练习140个epoch。终末练习出模子对测试纠集的60个测试样本实行验证。预测偏差如下图。

  个中前40个是练习纠集的样本,咱们运用其输入局部实行预测,涌现预测结果贴合很是精细;后60个是咱们测试集的样本,我对其预测结果依然斗劲惬意的,大跌、大涨根基都有预测到,除了第67到第75个点那一波大跌预测的欠好。随后我运用模子实行模仿贸易,设定初始资金两万元,正在预测三天后会上涨时买入,预测三天后会下跌时卖出,均以收盘价为贸易价值,买入时扣除万分之2.5的佣金。收益弧线如下,蓝色线条代表按模子实行贸易的收益,绿色线条代表无间持有股票的收益。

  可能看出,模子的预测结果依然不错的。加倍是首先的20多个点,也许较为切确的避开一波回调下跌。

  但我也清爽,对模子实行验证的样本数目依然太少,又过了一个月,正在分表征采了20个贸易日的数据之后,我又对该样本实行了测试。

  从上图可能看出,正在紫色方框圈出来的地方,模子多次预测会有一波涨幅,但紧随着又立马预测股价要跌,对股票实行了扔售,错过了这两次大涨的机缘;正在黄色方框圈出的地方,模子两次正在极点做出了切确的预测,精准扔售,躲过两次大跌。

  原委股票数据的验证,运用LSTM-RNN来对股票实行预测拥有必然的可行性,但结果不佳(倘使结果好的话我揣度也不会分享到网上,己方闷声发大财啦,哈哈~~~)。