股票行情查询

股票入门基础知识,股票交易手续费,股票大全,股票行情查询

股票学习网和我学炒股网宋磊学历

2024-01-23 05:49分类:股票分析 阅读:

 

摘要: 用机器学习来把股价走势安排的明明白白!

机器学习和深度学习已经在金融机构中找到了自己的位置,因为它们能够以高精度预测时间序列数据,并且工程师们仍在继续研究以使模型更好。这篇文章是我使用机器学习来预测股票价格的入门项目。

它基于我的项目AlphaAI,这是一个堆叠的神经网络架构,可以预测各个公司的股票价格。该项目是2018年iNTUtion的决赛项目之一。

工作流程

该项目的工作流程基本上是以下步骤:

1.获取股票价格数据;

2.使用小波变换去噪数据;

3.使用Stacked Autoencoders提取特征;

4.使用特征训练LSTM;

5.测试预测准确性的模型;

在这篇文章中,我将详细介绍每个步骤以及为什么做出某些决定。

1.数据采集

pandas_datareader是借助雅虎财经的API,它可以很容易获得股票价格数据,只需使用以下命令即可完成:

stock_data = pdr.get_data_yahoo(self.ticker, self.start, self.end)

2.数据去噪

由于股票市场动态的复杂性,股票价格数据通常充满了可能分散机器学习算法分散趋势和结构的噪声。因此,删除一些噪声是符合我们的诉求,同时也可以保留数据中的趋势和结构。起初,我想使用傅里叶变换(不熟悉的人应该阅读这篇文章),但我认为小波变换可能是保留数据时间因素的更好选择,而不是仅产生基于频率的输出。

小波变换

小波变换与傅立叶变换密切相关,只是用于变换的函数是不同的,并且这种变换发生的方式也略有不同。

过程如下:

1.使用小波变换来变换数据;

2.消除超过完全标准偏差的系数(在所有系数中);

3.反变换新系数以获得去噪数据;

以下是小波变换如何对时间序列数据进行去噪的示例:

如你所见,在去噪版本中不存在初始信号中存在的随机噪声,这正是我们要查看的股票价格数据。

这是去噪数据的代码:

x = np.array(self.stock_data.iloc[i: i + 11, j]) (ca, cd) = pywt.dwt(x, "haar") cat = pywt.threshold(ca, np.std(ca), mode="soft") cdt = pywt.threshold(cd, np.std(cd), mode="soft") tx = pywt.idwt(cat, cdt, "haar")

该库pywt非常适合小波变换,这也极大地减轻了我的负担。

3.提取特征

在大多数机器学习环境中,提取特征需要专家领域知识,这是我没有的奢侈品。我或许可以尝试使用某种形式的技术指标,如平均线或平均收敛差异(MACD)或动量指标,但我觉得盲目地使用它可能不是最优的。

但是,通过使用堆叠自动编码器或其他机器学习算法(如受限的Boltzmann机器),可以实现自动特征提取。由于编码的可解释性与限制Boltzmann机器的概率相比,我选择使用堆叠自动编码器。

堆叠式自动编码器

从本质上讲,堆叠式自动编码器非常适合压缩数据并再次复制数据。我们感兴趣的是压缩部分,因为它意味着重现数据所需的信息以某种方式以压缩形式编码。这表明这些压缩数据在某种程度上可能是我们试图从中提取特征的数据的特征。以下是堆叠自动编码器的网络结构:

输入数据被压缩成所需的许多神经元,并且网络被迫使用自动编码器重建初始数据。这会强制模型提取数据的关键元素,我们可以将其解释为要素。需要注意的一点是,由于没有输入输出对,这个模型实际上属于无监督学习,但输入和输出其实都是相同的。

我们可以使用keras构建这样的模型。

class AutoEncoder: def __init__(self, encoding_dim): self.encoding_dim = encoding_dim def build_train_model(self, input_shape, encoded1_shape, encoded2_shape, decoded1_shape, decoded2_shape): input_data = Input(shape=(1, input_shape)) encoded1 = Dense(encoded1_shape, activation="relu", activity_regularizer=regularizers.l2(0))(input_data) encoded2 = Dense(encoded2_shape, activation="relu", activity_regularizer=regularizers.l2(0))(encoded1) encoded3 = Dense(self.encoding_dim, activation="relu", activity_regularizer=regularizers.l2(0))(encoded2) decoded1 = Dense(decoded1_shape, activation="relu", activity_regularizer=regularizers.l2(0))(encoded3) decoded2 = Dense(decoded2_shape, activation="relu", activity_regularizer=regularizers.l2(0))(decoded1) decoded = Dense(input_shape, activation="sigmoid", activity_regularizer=regularizers.l2(0))(decoded2) autoencoder = Model(inputs=input_data, outputs=decoded) encoder = Model(input_data, encoded3) # Now train the model using data we already preprocessed autoencoder.compile(loss="mean_squared_error", optimizer="adam") train = pd.read_csv("preprocessing/rbm_train.csv", index_col=0) ntrain = np.array(train) train_data = np.reshape(ntrain, (len(ntrain), 1, input_shape)) # print(train_data) # autoencoder.summary() autoencoder.fit(train_data, train_data, epochs=1000)

我使用从2000年到2008年的去噪股票价格数据训练了自动编码器。经过1000个epoch的训练后,RMSE降至0.9左右。然后,我使用该模型将剩余的股票价格数据编码为特征。

4. LSTM模型

LSTM模型不需要介绍,因为它在预测时间序列中变得非常普遍和流行。它从细胞状态的存在中获得了卓越的预测能力,使其能够理解和学习数据的长期趋势。这对我们的股票价格数据尤为重要,下面我将讨论我认为重要的设计选择的某些方面。

优化器

所使用的优化器类型可以极大地影响算法收敛到最小值的速度。此外,重要的是存在一些随机性概念,以避免陷入局部最小值且未达到全局最小值。这其中有一些很棒的算法,但我选择使用Adam优化器。Adam优化器成功的结合了另外两个优化器的优势:ADAgrad和RMSprop。

ADAgrad优化器基本上对每个参数和每个时间步使用不同的学习速率。ADAgrad背后的问题是:不常见的参数必须具有较大的学习率,而频繁的参数必须具有较小的学习率。换句话说,ADAgrad的随机梯度下降更新成为:

,其中

基于已经为每个参数计算的过去梯度来计算学习速率。因此,

其中G是过去梯度平方和的矩阵,这种优化的问题是随着迭代次数的增加,学习率开始迅速消失。

RMSprop考虑通过仅使用一定数量的先前梯度来固定递减的学习速率。更新成为

其中

既然我们已经理解了这两个优化器是如何工作的,那么我们可以研究一下Adam的工作方式。

自适应矩估计(Adam)是另一种通过考虑过去平方梯度的指数衰减平均值来计算每个参数的自适应学习率的方法。这可以表示为

v和m可以分别被认为是梯度的第一和第二时刻的估计,因此得到自适应矩估计的名称。当这是第一次使用时,研究人员观察到存在0的固有偏差,他们通过使用以下估计来反驳这一点:

这导致我们进入最终的梯度更新规则

这是我使用的优化器,其好处总结如下:

1. 每个参数和每次迭代的学习率都不同;

2. 与ADAgrad一样,学习并没有减少;

3. 梯度更新使用权重分布矩阵。

正则化

训练模型的另一个重要方面是确保权重不会太大并关注一个数据点,或者称为过度拟合。所以我们应该对大权重设置惩罚(大的程度取决于所使用的常规者的类型)。我选择使用Tikhonov正则化,可以将其视为以下最小化问题:

函数空间在再生核Hilbert空间(RKHS)中确保了规范的概念存在。这允许我们将规范的概念编码到我们的正则化器中。

Dropout

一种新的防止过度拟合的方法,具体用在当一些神经元突然不起作用时会发生什么。这迫使模型不要过度依赖任何神经元组,而是考虑所有这些神经元。dropout已经发现它们可以使神经元更加健壮,从而使它们能够预测趋势,而无需关注任何一个神经元。以下是使用dropout的结果:

5.模型实施

上述所有分析都可以在keras及其功能API轻松地实现。这是模型的代码(查看整个代码,查看我的GitHub:AlphaAI)

class NeuralNetwork: def __init__(self, input_shape, stock_or_return): self.input_shape = input_shape self.stock_or_return = stock_or_return def make_train_model(self): input_data = kl.Input(shape=(1, self.input_shape)) lstm = kl.LSTM(5, input_shape=(1, self.input_shape), return_sequences=True, activity_regularizer=regularizers.l2(0.003), recurrent_regularizer=regularizers.l2(0), dropout=0.2, recurrent_dropout=0.2)(input_data) perc = kl.Dense(5, activation="sigmoid", activity_regularizer=regularizers.l2(0.005))(lstm) lstm2 = kl.LSTM(2, activity_regularizer=regularizers.l2(0.01), recurrent_regularizer=regularizers.l2(0.001), dropout=0.2, recurrent_dropout=0.2)(perc) out = kl.Dense(1, activation="sigmoid", activity_regularizer=regularizers.l2(0.001))(lstm2) model = Model(input_data, out) model.compile(optimizer="adam", loss="mean_squared_error", metrics=["mse"]) # load data train = np.reshape(np.array(pd.read_csv("features/autoencoded_train_data.csv", index_col=0)), (len(np.array(pd.read_csv("features/autoencoded_train_data.csv"))), 1, self.input_shape)) train_y = np.array(pd.read_csv("features/autoencoded_train_y.csv", index_col=0)) # train_stock = np.array(pd.read_csv("train_stock.csv")) # train model model.fit(train, train_y, epochs=2000)

结果

这些是我对各公司的预测结果。

对于雪佛龙来说,MSE是2.11

对于埃克森美孚,MSE为0.0945

很明显,使用这种神经网络架构的结果令人印象深刻,并且如果实施到策略中可以是有利可图的。

在线学习

除了从历史数据中学习模型之外,我还想让模型实时学习,甚至从预测中学习。因此,我已经使它成为一个学习和预测的在线模型。换句话说,它可以学习历史数据,预测明天的价格,另外当实际价格已知时,它也会学习使用它。所以模型总是在改进。

除了使用实际价格来改善之外,我还考虑制作一个二级模型,该模型使用关于公司的新闻和Twitter的情绪值。我将首先概述如何获取这些数据。

Twitter数据

除了股票价格数据,我还想尝试一些自然语言处理。因此,我尝试深入研究使用来自Twitter和新闻的情绪数据来改进股票预测。

第一个斗争就是免费获取推文,因为获取整个实时数据的Twitter API已经被禁止。但是,我找到了一个允许我在过去10天内获取推文的API,然后我可以实现某种形式的NLP来从推文中提取情绪数据。这不是最佳的,但对我的在线学习模型仍然有用。

新闻数据

与Twitter类似,获取新闻数据非常困难。我尝试分析彭博文章的网址,但实现从2000年手动报废网站几乎是不可能的。因此,我选择了具有相当强大的抓取模型的Aylien API。

这些新闻文章被删除的条件是他们只包括股票和财经新闻,过滤到前150个Alexa网站,并且使用指数加权移动平均线平均情绪分数,以考虑最近的新闻而不是旧的新闻。

在线模型

鉴于我的情绪分数,我使用额外的神经网络层来更正我的预测误差。但是,在本文发布时,结果不可用,因为生成一个数据点需要一天的时间。

结论

神经网络非常善于预测时间序列数据,当与情感数据结合时,可以真正建立一个实用的模型。虽然这里的结果令人印象深刻,但我仍然想方设法改进它,也许实际上可以从中制定完整的交易策略。目前,我正在研究使用强化学习来开发一个使用预测模型结果的交易代理。

本文由阿里云云栖社区组织翻译。

文章原标题《
using-machine-learning-to-predict-stock-prices》

作者:Vivek Palaniappan 译者:虎说八道,审校:。

 

 

半个月前,在不少人仍憧憬“牛市万点”的美梦时,一场猝不及防的暴跌将一路狂奔的牛头重重摁下。上周,在市场一片恐慌时,周六央行意外“双降”,再次打乱了市场可能延续下跌的节奏。

“得失只在一线之间,爱恨的边缘,不到终点无法预言……”十年前的夏天,著名音乐人羽泉在创作《哪一站》这首情歌时,并没有想到,将之借喻到2015年上半年跌宕曲折的A股,也是如此贴切。

在上半年117个交易日串起的红绿相间的K线中,77根或长或短的阳线点燃的是激情与希望,而点缀其间的40根阴线似乎并不令人厌恶,他们更多被视为“千金难买牛回头”的“黄金坑”,只是最近几根阴线则写满“恐惧”。

统计显示,截至6月26日收盘,上证指数 、中小板指、创业板指年内分别上涨29.62%、70.40%和98.45%,但最近几个交易日的暴跌,让上述三大指数分别从年内最高点回调了20.06%、23.21和27.79%。

如果没有最后几个交易日的连续暴跌,想必各家机构的基金经理都会在皆大欢喜声中,盘点上半年各自的斩获。然而,正是在关键点位上攻防、进退、取舍间的细微差异,改变了他们的市场位次,甚至改写了个人荣辱。

通过对近二十位公私募基金经理的持续跟踪,上证报记者发现,尽管他们投资风格和风险偏好不一,但都对市场的风险充满敬畏并有所准备,甚至有两家私募在月初逆势清仓避开大跌,同时他们对下半年的布局也成竹在胸。

本报记者陈俊岭

净值大战:进攻与防守之间

“再见A股!”6月初,一家注册地在包头的私募负责人在朋友圈发了这样一段话,向投资人宣示了他们已经清仓了账户中所有股票 。出于好奇,记者辗转联系到这位私募,他称事先与投资人有约,暂时不愿接受媒体采访。

据与这家私募接触较多的格上理财资深研究员张彦介绍,该私募负责人很坦诚,也很低调,之所以做出“清仓”决定,一方面是在前期市场中获利不菲,二可能是意识到市场风险加大,于是选择“左侧”离场。

自2007年上半年著名私募人赵丹阳选择在4000点离场后,在市场逼近疯狂之际,追求绝对收益的阳光私募急流勇退的案例并不鲜见。面对前一段市场的疯狂,重庆穿石投资有限公司董事长蔡生俭也选择了暂时离场。

“从业二十年,总想抓住机会。抓了二十年,却一无所成。如果你问我折腾了二十年最大的收获是什么?我会脱口而出:最重要的不是抓住机会,而是回避风险,尤其是大涨之后,股神遍地时。”谈及为何离场,蔡生俭自谦称。

在蔡生俭看来,宴会的高潮总是让人流连忘返,但天下没有不散的宴席。“谨慎”不是保守,更不是胆小,而是一种投资态度。在市场的大海中,你我只是一叶扁舟,纵然你航海多年,依然要小心小心再小心,“小心驶得万年船”。

相比不受仓位限制的阳光私募,公募基金经理只能在狭小的空间腾挪,面对几年不遇的牛市,他们大多保持高仓位运作,也正因此,他们在上半年的绝大多数时间里,实现了优于市场其他投资者的高额收益。

来自东方基金的基金经理呼振翼是成长派的典型代表,在过去半年中,他甚少操作,依然持有一年前就已建仓完毕的成长股组合,尽管上半年局部时间段市场波动也很大,但他所管理的三只基金仍获得了平均70%以上的收益。

“上周我们也顺势减掉了部分仓位,但我们认为调整过后,市场炒作成长股的逻辑主线不会改变。”北京一家中型基金公司的基金经理告诉记者,减仓并不意味着他们不看好,更多是基于应对基金赎回的流动性考虑。

同是不受仓位限制的私募,与蔡生俭等选择离场观望不同,不少秉承自下而上投资的私募也采取了类似公募基金的策略,他们将注意力更多放在个股上,并没有太在意最近市场的系统性风险,也正因此在本轮回调中,净值回撤不少。

“这次暴跌,我一股没减,虽也损失惨重,但也远超今年预定目标。”面对部分投资人的质疑,重仓成长股的北京大君智萌董事长凯恩斯表示,股价暴涨暴跌的背后,并没有改变优质企业仍在高速发展的基本面。

无论是看似决裂的清仓离场,还是固执地坚守仓位,对于任何一个基金经理而言,临近半年之考,净值大战与外界的是否评说都是他们无法回避的。择时也好,择股也罢,终究需要面临投资人对于净值多少与回撤幅度的拷问。

方向抉择:牛熊与多空之争

继前一周上证指数暴跌13.32%后,上周股指在稍作反弹后,进一步下挫再度暴跌6.37%。截至上周五,9个交易日的暴跌,让上证、中小板、创业板分别从年内最高点回调了20.06%、23.21和27.79%。

尤其是上周五,A股更是上演了两千余只个股跌停的惨淡一幕,去杠杆带来的市场阵痛使得牛熊之争再起。有机构认为,最近各大指数都全部破位,任何支撑的点位都被击穿,中短期来看都不乐观。这是否意味着,牛市是否就此转熊?

上海某知名私募的观点颇具代表——短期看,市场仍存在巨大的杠杆,考虑到前期市场上涨的疯狂程度,以及投资者普遍巨大的浮盈,虽然目前已经有了很大的跌幅,但不论从时间还是空间上看,这一次的调整仍然没有结束。

不过,多数机构倾向乐观地认为调整已经接近尾声。“从上一轮牛市来看,中级调整的幅度通常在10-20%,极端情况可能达到30%,但目前来看出现极端情况的可能性并不大。”北京一家公募基金研究员分析称。

同样,南方基金首席分析师杨德龙认为,从估值来看,目前沪深300平均估值不到25倍,而2007年沪深300估值到了45倍,估值比较合理。“任何一轮牛市,都会炒过头,目前创业板估值偏高,但主板估值相对合理。”他称。

与上述公募观点不约而同的是星石投资首席策略师杨玲 。她判断,中期调整已近尾声,本轮牛市启动以来,资金驱动特征极为显著,目前大类资产配置转移进程仍在延续,更为重要的是目前宏观经济已经有了企稳复苏的迹象。

杨玲认为,近期市场大幅调整是每轮牛市都有的中期调整,没有必要过分担忧。最近两周A股调整幅度已经达到20%左右,我们判断此次中期调整已经差不多了,坚定认为牛市行情仍将延续。

“这次调整不会再现2008年的暴跌走势,一是没有2008年的全球金融危机,二是流动性极其巨大,无风险利率下降趋势还在。”凯恩斯认为,泥沙俱下正是底部换仓好时机,在过去25年股指跌宕起伏,仍有上百只个股涨幅超过50倍。

尽管机构对这次调整的周期,以及接下来上涨的空间仍存争议,市场的分歧在于企稳的时间,有认为在7月份,有人认为调整将持续3个月,企稳要看9月份,但统一的共识是:牛市根基还在,未来将从“快牛”进入“慢牛”。

“当前市场念的经是——徙木立信,久久为功,踏石留印,抓铁有痕。”最近,神农投资总经理陈宇如此点评市场,意思是“慢牛”别老想着挣快钱,震荡分化行情中应当“反向操作”,大跌大买,不跌不买,急涨就卖,等待花开。

在陈宇看来,近期市场的恐慌状态不可能长时间延续,但受到教训之后,市场也将改变前期其爆炒概念的风格而转向有估值支撑的品种,精选个股是在之后的行情中的重点。

“根据历史规律,一轮规模较大的牛市,绝大多数指数都会创造历史新高,现在显然还没有到牛市终结的时候。”一位选择上半年“奔私”的前明星基金经理对上证报记者如是称,目前仍有不少相对低估的板块和个股有待挖掘。

不过,也有机构不屑于争议牛熊是否终结的话题,他们不去判断市场走势,而是要跟随市场走势,这一策略在量化投资私募上颇具代表性。

“这有点像索罗斯的反射理论,在市场受某一利空事件影响下,往往会出现同向走势的强化效应:利空消息—市场下跌—消息发酵—加速下跌,反之亦然。” 一家在股指期货上建仓中线多单的私募负责人对记者表示。

在上述私募负责人看来,无论是监管层检查两融、IPO加速,还是汇金减持、高管套现等都不是新事物,这些利空在短期叠加,可能对投资者的心理影响更大一些,此时市场各方的投资人心理非常敏感当属正常。

“牛”还是“熊”?“多”或者“空”?这些看似小儿科的提问,体现的是基金持有人对基金经理投资能力与方向判断的关切,而基金经理的回答,以及在仓位与标的上的拿捏与甄选,也是接下来持有人用钱投票的重要参照物。

下半年“风口”:成长与蓝筹之辩

上半年,谁敢于重仓持有“互联网+ +”、“工业4 .0”等成长股,谁就站在了市场的“风口”。在经历最近两周创业板暴跌后,下半年的“风口”会否转化为上半年滞涨的“蓝筹股”?

“虽然手里拿着小股票,但也在密切关注大股票什么时候会起来,一旦起来就坚决地去参与。”在接受记者专访时,民生加银基金研究部总监宋磊透露称,现在需要摈弃“选大选小”的传统思维。

在宋磊看来,A股市场特有的“二元结构”,时常让大市值的股票与中小市值的股票在价格上产生背离,如果不能踏准节奏,不但“满仓踏空”,甚至“满仓被套”,而随着小股票的估值提高,市场对大股票的有利因素也在不断增强。

不过,谈及二八转化启动时机,宋磊认为下半年市场有可能切换为二八行情,但在二八行情转化前,可能会经历一次“大小盘齐跌”的过程。这一观点,也得到了部分机构的认同。

不过,在创业板股票纷纷高位退朝后,银行股能否迎来一波补涨行情?一家机构负责人私下告诉记者,上周看到银行股反弹建了些仓位做防御,但后来发现预期变化了,全部清仓,他称调整到位后依然看好创业板。

上述负责人向记者透露,他们在选股上秉承“两匹马前行”原则,一匹是防御性的品种,即估值合理,前期滞涨及短期催化剂确定的标的,另一匹是优质稀缺品种,即生命周期处于早期,空间大的标的,两匹马视市场情况随时切换。

谈及牛市下半场可能会带来二八风格转化的观点,蔡生俭认为,大小盘的风格在A股三轮牛市中并不稳定,1996-2001 年牛市中小盘股持续战胜大盘股,风格始终都未转换;2005至2007年牛市中,在“530”调整后后风格才偏向大盘股,2009年3月剧烈调整后,才实现二八转化。

“今年1.19大跌后A股市场热点由周期股转向科技股,这次大跌后,市场风格将再度发生转换。”杨玲认为,由于该板块估值相对较低,补涨需求强烈,业绩正在发生反转,判断消费板块有望站上下一阶段市场风口之上。

通过对这一段市场的观察,一位不愿具名的正处于建仓期的私募经理发现,在市场下跌过程中,保险 、银行和消费品等板块跌幅较少,他判断市场在经过此番风险教育和洗礼后,资金可能会转而关注基本面好、涨幅较小、业绩良好的股票,而对“故事”、“概念”等等主题类投资的偏好会下降。

下半年更看好那些板块?华商基金基金经理李双全认为,首先第一位是信息服务领域,不仅三季度,也是未来一直重点看好的领域。其次,环保也是一直持续看好的。此外他看好的还有大健康、大消费,尤其品牌消费。

中邮基金基金经理张腾表示,他长期看好的方向是创新和智能制造行业,短期他更看好民参军,符合这样条件的公司可以成为重点挖掘的方向。而东方基金基金经理呼振翼看好的方向则包括医疗服务、高端制造和软件、传媒。

最近市场暴跌,幸运地躲过本轮大跌的蔡生俭又开始忙碌起来,他想趁着市场的调整,为下半年的收成提前物色些标的。“之前心仪的公司被我放掉了,感谢这几天的大跌让我纠错了!”他称。

转眼羊年已到中点,展望下半年,蔡生俭表示要由过去的进攻为主转向防守,在防守中坚持运动战和游击战。在他看来,纵然调整也阻挡不了经济转型的脚步和政府改革的决心,改革和转型是本轮行情的精髄。

新浪声明:此消息系转载自新浪合作媒体,新浪网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。

https://www.xusbuy.net

上一篇:周易炒股秘诀或股票秘籍

下一篇:炒股心得体会300字以及炒股的心得体会500字

相关推荐

返回顶部