深度学习前沿 | 利用GAN预测股价走势

前言

本篇文章中利用了生成对抗性网络(GAN)预测股票价格的变动,其中长短期记忆网络LSTM是生成器,卷积神经网络CNN是鉴别器,使用贝叶斯优化(以及高斯过程)和深度强化学习(DRL)优化模型中超参数。此外,文章中非常完整地实现了从特征抽取、模型建立、参数优化、实现预测的过程,其中运用了多种机器学习方法,比如BERT进行文本情绪分析、傅里叶变换提取总体趋势、autoencoder识别高级特征、XGboost实现特征重要性排序等。本文学习的思路是:GAN算法概览 – 项目思路 – 项目详解。拟在学习完成后,在Bigquant平台上尝试实现GAN算法预测股价走势。

1 GAN算法概览

GAN(Generative Adversarial Networks)生成式对抗网络,顾名思义,是通过对抗的方式学习数据分布的生成式模型。所谓对抗,指的是生成网络和判别网络的互相对抗。生成网络尽可能生成逼真的样本,判别网络尽可能去分析该样本是真实的还是生成的。GAN的目的是通过这种对抗博弈得到效果良好的生成式网络,从而应用于图像生成、语音生成、视频生成等,如近期很火的“AI换头”就可能运用了GAN生成可接受的“另一副面孔”。GAN的具体示意如下:

img

ZZ为隐变量,是随机噪声通常服从高斯分布。ZZ通过生成器generator生成XfakeXfake,判别器discriminator分辨输入的数据是生成样本XfakeXfake还是真实样本XrealXreal。模型训练的目标为尽可能使得XrealXreal和XfakeXfake的分布相似,如果以距离来衡量就是两个分布间距离最小,如可以交叉熵来表示:

img

训练时,生成器和判别器采取交替训练,即先训练判别器再训练生成器,直到两者收敛到纳什均衡,即真实和生成样本预测概率均为1/2,难以区分。

从GAN算法的原理可以看出它主要应用于生成新的对象,如创建现实图像、绘画、音频和视频。那这样的生成式模型如何被应用于股价走势这种时间序列预测呢?

背后的逻辑在于一个假设:“历史可以重演”。市场不是100%随机的,股价未来的模式和行为应该或多或少是相同的(除非它开始以一种完全不同的方式运作,或者经济发生剧烈变化)。因此,文章作者希望为未来“生成”与已有的历史交易数据分布类似(当然不是完全相同)的数据,以此来预测股价走势。

这是一种对于市场有效性的自信,并且原文作者在2010年1月1日至2018年12月31日的(训练集7年,测试集2年)美股“Goldman Sachs(高盛)”股票上做了尝试,效果还是很好的。

2 股价预测思路

img

上图是Boris股价预测的整体思路。

特征工程:项目除高盛公司的历史股价之外,使用许多不同类型的输入数据,包括相关资产价格或利率、相关技术指标、基于财报和新闻的基本面分析、利用傅里叶变换提取的总体趋势方向、基于ARIMA的降噪后的预测价格,以便尽可能多地获取关于股票的信息、模式、相关性等。然后,利用变分自动编码器VAE生成一些高维特征,并利用XGBoost进行特征重要性分析和筛选,PCA降维构建特征组合。

模型建立:建立了LSTM作为时间序列生成器,CNN作为判别器的GAN模型,参考了Metropolis-Hastings GAN(MHGAN)和Wasserstein GAN(WGAN)的一些方法,使用判别器来选择生成的接近真实数据分布的样本,使用平滑的Wasserstein distance作为损失函数衡量方法,使得学习过程更为稳定、更易收敛。

超参数优化:用贝叶斯优化替代网格搜索确定模型超参数。此外,在GAN训练200期后,它将记录(LSTM的误差函数,GG)并将其作为奖励价值传递给强化学习,将决定是否改变超参数,使模型更适应不断变化的市场。

3 股价预测详解

本部分为了保持简洁,并没有附上原文的代码。所有的代码都可以在原文 193中找到。

3.1 特征工程
3.1.1 原始数据

2010年1月1日至2018年12月31日的(训练集7年,测试集2年)高盛股票收盘价数据:

img

3.1.2 特征提取

(1)相关资产

  • 类似于GS的公司,包括大小摩、花旗集团等;

  • 全球经济指标,包括Libor利率、国债利率等;

  • 每日波动率指数(VIX);

  • 综合市场指数,例Nasdaq和NYSE、FTSE100指数、Nikkei225指数、恒生指数和BSE Sensex指数;

  • 货币,全球贸易经常反映在货币的走势上,因此我们将使用一篮子货币(如美元兑日元、英镑兑美元等)作为特征。

(2)技术指标 7日/21日移动平均、21日/26日指数移动平均、MACD、20日标准差、ma7、ma21、26ema、12ema、MACD、20sd、上下布林带、动量、指数动量等

img

(3)基本面指标 对于基本面分析,我们将对所有关于GS的每日新闻进行情绪分析。最后使用sigmoid,结果将在0到1之间。得分越接近0,负面消息就越多(接近1表示正面情绪)。对于每一天,我们将创建平均每日分数(作为0到1之间的数字),并将其添加为一个特征。

(4)傅里叶变换

G(f)=∫∞−∞g(t)e−i2πftdtG(f)=∫−∞∞g(t)e−i2πftdt

使用傅里叶变换来提取GS股票的整体和局部趋势,并对其进行降

img

(4)ARIMA 将ARIMA的预测价格作为一个特征,也是起到了趋势抓取和降噪的功能。

进行了异方差、多重共线、序列相关性检查后,一共提取了112个特征。

3.1.3 特征生成和处理

此部分运用了XGBoost进行特征重要性分析、PCA降维处理和VAE高维特征生成,由于平台上已有关于XGBoost 10PCA 4的介绍和封装模块,此处不做过多解释。主要展现文章中的VAE生成特征部分。

变分自编码器(Variational Auto-Encoders,VAE)作为深度生成模型的一种形式,是由 Kingma 等人于 2014 年提出的基于变分贝叶斯(Variational Bayes,VB)推断的生成式网络结构。与传统的自编码器通过数值的方式描述潜在空间不同,它以概率的方式描述对潜在空间的观察,在数据生成方面表现出了巨大的应用价值

img

文章中使用了3层编码器和解码器的VAE模型,激活函数使用GELU -高斯误差线性单元。最后生成了112个特征,然后运用PCA对于这112个生成的特征以解释80%方差的标准进行降维,从而形成高维特征组合。最后,产生了84个特征组合。

3.2模型建立

img

3.2.1 生成器

为了对序列数据进行分析,生成器自然选用了长短期记忆网络LSTM(具体介绍可参见平台此处)。LSTM结构比较简单,特征数量个输入单元,500个隐藏单元,一个输出单元(股票价格),损失函数为L1正则化的mae,优化器为adam。

LSTM背后的逻辑是:取17天的数据(这些数据是GS股票每天的股价+当天的所有其他特性——相关资产、情绪等),并尝试预测第18天。然后将窗口后移,再次预测第18天,如此迭代整个数据集。

平台上对于LSTM的介绍在此处 42

3.2.2 判别器

CNN通常用于图像相关的工作。在股价预测中,数据点形成小趋势,小趋势形成大趋势,趋势反过来形成模式,所以CNN检测特征的能力可用于提取有关GS股价走势模式的信息。此外,CNNs可以很好地处理空间数据——这意味着彼此距离较近的数据点之间的关系比分布在各处的数据点之间的关系更密切。这适用于时间序列,两天的时间越近,它们之间的关系就越密切。有一件事需要考虑,那就是季节性以及它可能如何改变CNN的工作。

平台上对于CNN的介绍在此处 25

3.2.3 超参数
  • batch_size : the batch size of the LSTM and CNN

  • cnn_lr: the learning rate of the CNN

  • strides: the number of strides in the CNN

  • lrelu_alpha: the alpha for the LeakyReLU in the GAN

  • batchnorm_momentum: momentum for the batch normalization in the CNN

  • padding: the padding in the CNN

  • kernel_size’:1: kernel size in the CNN

  • dropout: dropout in the LSTM

  • filters: the initial number of filters

3.3参数优化

股票市场一直在变化。即使成功地训练了GAN和LSTM来创建非常准确的结果,结果也可能只在一定时期内有效。也就是说,我们需要不断优化整个过程:

1、添加或删除特征(例如添加可能相关的新股票或货币)

2、完善深度学习模式。改进模型最重要的方法之一是优化超参数

3.3.1 DRL

由于我们不能够了解股票市场运行的完整规则,所以需要采用无模型算法(model-free algorithms)。文章中采用Q-学习和策略优化的方法。

  • Q-learning:在Q-learning中,我们从给定的状态学习采取行动的价值。q值是采取行动后的预期收益。我们将使用Rainbow,它是7个Q-learning算法的组合。

  • 策略优化:学习从给定状态采取的操作,准确设置奖励R:Reward=2∗lossG+lossD+accuracyG,Reward=2∗lossG+lossD+accuracyG, ,使用了PPO(Proximal Policy Optimization)方法。

关于强化学习的详细介绍可参考平台此处 27

3.3.2 贝叶斯优化

不同于网格搜索的枚举式,贝叶斯优化是一种近似逼近的方法。如果说我们不知道某个函数具体是什么,那么可能就会使用一些已知的先验知识逼近或猜测该函数是什么。这就正是后验概率的核心思想。假设有一系列观察样本,并且数据是一条接一条地投入模型进行训练(在线学习)。这样训练后的模型将显著地服从某个函数,而该未知函数也将完全取决于它所学到的数据。因此,我们的任务就是找到一组能最大化学习效果的超参数。

3.4模型结果

在测试集上进行预测,epoch不同次数的模型效果分别如下:

(1)第一次epoch后

img

(2)第50次epoch后

img

(3)第200次epoch后

img

(4)DRL后 RL运行10episodes(我们将eposide定义为200个epochs上的一个完整GAN训练)

img

可见200次epoch迭代后模型效果已经不错,强化学习后达到了非常惊艳的效果。


最后

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。

因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

五、面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下。
在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GAN生成对抗网络)是一种用于生成新数据样本的机器学习模型,它由生成器和判别器组成。生成器负责生成新的样本,而判别器则负责判断生成的样本与真实样本的区别。虽然GAN在图像生成等领域取得了很大成功,但是预测股价走势是一个相对复杂和难以预测的问题。 预测股价走势通常是一个时间序列预测问题,涉及到众多的经济、金融和市场因素。简单地使用GAN预测股价走势可能会面临以下挑战: 1. 数据不确定性:金融市场受到许多不确定因素的影响,如宏观经济指标、政府政策、公司业绩等。这些因素的变化很难用简单的模型捕捉到。 2. 非线性关系:股价走势往往是非线性的,GAN模型可能无法有效地学习到复杂的非线性关系。 3. 数据量和质量:GAN需要大量的数据来训练模型,并且需要高质量的数据。在金融领域,获取高质量的历史股价数据并不容易。 尽管如此,可以尝试以下方法来利用GAN预测股价走势: 1. 数据预处理:对历史股价数据进行预处理和特征工程,例如平滑、缩放和创建技术指标等,以提供更好的输入数据给GAN模型。 2. 序列生成:使用生成器部分的GAN生成多个可能的股价序列,并进行模拟和分析。 3. 风险管理:通过GAN生成的序列,可以帮助分析风险和不确定性,提供决策支持。 需要注意的是,金融市场的预测一直是一个具有挑战性的问题,没有任何模型能够完美解决。因此,在使用GAN或其他模型进行股价预测时,应保持谨慎,并结合其他分析方法和专业意见进行决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值