Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >变分自编码器:金融间序的降维与指标构建(附代码)

变分自编码器:金融间序的降维与指标构建(附代码)

作者头像
量化投资与机器学习微信公众号
发布于 2019-07-10 02:58:28
发布于 2019-07-10 02:58:28
2.2K0
举报

正文

本文探讨了使用一个变分自动编码器来降低使用Keras和Python的金融时间序列的维度。我们将进一步检测不同市场中的金融工具之间的相似性,并将使用获得的结果构建一个自定义指数。

获取全部代码,见文末

使用变分自动编码器的降维

在本节中,我们将讨论:

  • 创建几何移动平均数据集
  • 使用随机模拟扩充数据
  • 构建变分自动编码器模型
  • 获取预测

▍创建几何移动平均数据集

为了比较各种价格区间的时间序列,我们选择计算收益的几何移动平均时间序列,定义如下:

我们选择d=5,因为它代表了一周的交易日。

本文使用的数据集包含从2016年1月4日到2019年3月1日期间的423个几何移动平均时间序列。

类似于这样:

结果可以通过绘制一些样本股价时间序列及其几何移动平均曲线来验证:

然后,刚刚构建的dataframe可以分为两个等长的时间段,仅在第一阶段内转置一个。第1阶段从2016年1月12日到2017年8月4日。第2阶段从2017年8月7日到2019年3月1日。

我们将只使用第1阶段的数据来获取预测。

我们对dataframe进行转置,以便每一行表示给定股票的时间序列:

▍使用随机模拟扩充数据

我们将使用随机模拟来生成合成的几何移动平均曲线。目标不是精确地建模返回,而是获得具有类似于真实数据的行为的曲线。通过仅使用模拟曲线训练模型,我们可以保留真实的数据来获得预测。

使用几何布朗运动生成合成曲线。我们遵循以下步骤操作:

1、使用第一阶段dataframe,随机选择100只股票代码;

2、对于所选的每只股票代码,计算一个对数收益的向量,以便:

3、然后对于所选的每只股票代码,我们将生成100条路径,以便:

这里有一条模拟曲线和一条真实曲线的示例:

我们已将423个时间序列的数据集扩展为100 * 100 = 10,000个与股票数据集相似(但不相等)的新时间序列。

这将允许我们保留实际的股票数据集范围以进行预测,甚至不必使用它进行验证。

在构建变分自动编码器(VAE)模型之前,创建训练和测试集(使用80%-20%的比率):

读者还应该注意,在训练模型之前,无需删除时间序列的季节性和趋势。

▍构建变分自动编码器模型(VAE)

我们将使用变分自动编码器将具有388个项目的时间序列向量的维度降低到二维点。

自动编码器是用于压缩数据的无监督算法。它们是由一个编码器、一个解码器和一个丢失函数构成,用于测量压缩和解压缩数据表示之间的信息丢失。

该编码器模型具有:

  • 一个长度为388的输入向量
  • 一个长度为300的中间层,具有整流线性单元(ReLu)激活功能
  • 一个二维编码器。

解码器模型具有:

  • 一个二维输入向量(从潜在变量中采样)
  • 一个长度为300的中间层,具有整流线性单元(ReLu)激活功能
  • 具有S形激活函数的长度为388的解码向量。

以下代码改编自Keras上Github团队的variational_autoencoder.py。它用于构建和训练VAE模型。

https://github.com/keras-team/keras/blob/master/examples/variational_autoencoder.py

训练结束后,我们绘制训练和验证损失曲线:

▍获取预测

我们将只使用编码器来获取预测。我们将使用实值矩阵,包括股票数据集和一个或多个感兴趣的时间序列。

在我们的项目中,我们针对在另一个国家以不同货币所列出的前一个月期货合约测试了一个股票数据集。

我们获得了以下结果:

在绘制结果之前,我们必须:

1、计算期货合约点与dataframe中所有其他股票之间的距离。

2、选择最接近期货合约的50pints。

我们现在可以绘制获得的结果,以可视化最近的50只股票:

我们已经对另一个国家所列出的期货合约进行了分析,但是对于来自于同一交易所的股

票,我们可以按照第1部分中的相同步骤进行。

指标构建

让我们使用在第1部分中获得的结果来创建一个指标。

由于VAE模型的随机性,我们将无法获得每次运行的前50只股票的准确列表。为了得到最接近50个点的公平表示,我们将运行VAE模型(每次运行时重新初始化和重新训练)。然后,我们将在每次运行中找到的50个最近点,以创建一个长度为500的dataframe closest_points_df。

一旦建立了dataframe closet_points_df:

1、按距离对点进行排序;

2、删除重复的代码,只保留第一次出现;

删除重复项后,我们只保留50个最近点。

▍计算每只股票的权重

在指数构建中,股票权重的计算采用不同的方法,如市值法或股票的价格法。

相反,我们将计算每只股票的权重,使得最接近期货合约点的点将比离它较远的点获得更高的权重。

对于非匿名股票数据,在计算股票权重之前,对得到的结果进行过滤是非常重要的。应删除异常值并改进市值范围。

▍计算样本权重

计算每只股票的股数

计算权重后,我们计算了自定义指标中每只股票的股数。我们需要:

  • 在2016年1月4日(第1期的第一天)获得的每只股票的价格
  • 定义净资产金额
  • 计算每只股票的股数

我们为2016年1月4日的股价增添了一列

我们为股份数增添了一列

指标构建

为了建造指标,我们将使用拉斯拜尔指数(Laspeyresindex),计算如下:

我们绘制了获得的自定义指标:

将我们的自定义指标与期货时间序列进行比较

我们必须缩放期货价格数据,以便将其绘制在与我们自定义指标相同的图表中。要做到这一点,我们必须:

  • 计算期货价格数据的日百分比变化
  • 设置S_0=100

现在我们将曲线绘制在同一张图表中:

除2018年下半年外,我们的指数与参考期货时间序列的趋势大致相同。因为我们使用匿名数据,所以我们没有过滤股票的异常值和市值限制。此外,在观察到的两个时间段内没有重新平衡,并且我们忽略了分布。

如果识别出股票代码并删除异常值,则自定义指数绝对有可能击败期货指数。

我们鼓励大家利用在线提供的免费(GPU)实例创建自己的指标。这对我们来说是一个有趣的实验,我们发现了一些有趣的股票模式。

结论

使用变分自动编码器可以加快外国股票市场新指数的发展,即使分析师不熟悉它们。此外,还可以创建符合客户利益的利基指数或投资组合。

虽然这种方法可以用于创建ETF,但我们相信它也可以为全球的直接指数和智能投顾公司创造新的投资可能性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码
股票市场在经济发展中占据重要地位。由于股票的高回报特性,股票市场吸引了越来越多机构和投资者的关注。然而,由于股票市场的复杂波动性,有时会给机构或投资者带来巨大损失。考虑到股票市场的风险,对股价变动的研究与预测能够为投资者规避风险。传统的时间序列模型ARIMA无法描述非线性时间序列,并且在建模前需要满足诸多条件,在股票预测中无法取得显著成果(点击文末“阅读原文”获取完整代码数据)。
拓端
2025/03/11
2200
Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码
金融数据分析与挖掘具体实现方法 -1
关于投资的几个类别,一般我们将天使、VC、PE三个部分统称为私募(Private Equity),指的是没有在证券交易所公开上市交易的资产。
汪凡
2019/03/01
1.5K0
金融数据分析与挖掘具体实现方法 -1
卧槽,我学会了用Python预测股票价格
作为一种技术手段,预测在金融、证券领域的应用非常广泛,尤其是对股票价格的预测。我们介绍一下获得股票数据的方法,并基于此对数据进行预处理,接着使用数据分析方法,建立基础特征,进一步构建预测模型,且基于新数据验证模型效果。拟使用VAR及LSTM两种算法建立预测模型。
统计学家
2020/07/17
5.4K0
卧槽,我学会了用Python预测股票价格
【机器学习】--- 序列建模与变分自编码器(VAE)
在机器学习领域,序列建模与变分自编码器(Variational Autoencoder, VAE) 是两个至关重要的技术,它们在处理时间依赖性数据与复杂数据生成任务中都发挥着关键作用。序列建模通常用于自然语言处理、语音识别等需要保持顺序关系的任务,而VAE是生成模型的典型代表,旨在学习数据的分布并生成类似数据。将两者结合的模型在序列生成、数据增强、预测等任务上有广泛应用。本文将详细剖析序列建模与VAE的基本原理,阐述二者结合的架构,并提供详细的代码示例。
凯子坚持C
2024/09/23
3420
基于变分自编码器的静息态fMRI数据的表征学习
静息状态功能性磁共振成像(rsfMRI)数据显示出复杂但结构化的模式。然而,在rsfMRI数据中,潜在的起源是不清楚的和纠缠的。在这里,我们建立了一个变分自编码器(VAE),作为一个生成模型可用无监督学习训练,以解开rsfMRI活动的未知来源。在使用人类连接组项目(Human ConnectomeProject)的大量数据进行训练后,该模型学会了使用潜在变量表示和生成皮层活动和连接的模式。潜在表征及其轨迹表征了rsfMRI活动的时空特征。潜变量反映了皮层网络潜轨迹和驱动活动变化的主梯度。表征几何学捕捉到潜在变量之间的协方差或相关性,而不是皮质连通性,可以作为一个更可靠的特征,从一个大群体中准确地识别受试者,即使每个受试者只有短期数据可用。我们的研究结果表明,VAE是现有工具的一个有价值的补充,特别适合于静态fMRI活动的无监督表征学习。
悦影科技
2022/02/22
5390
变分自编码器如何淘汰经典的推荐系统
随着信息过载的增加,我们不可能通过观看海量的内容来获取我们想要的项目。推荐系统可以来拯救我们。推荐系统是一种模型,通过向用户展示他们可能感兴趣的内容,帮助他们探索音乐和新闻等新内容。
磐创AI
2020/07/17
1.3K0
视频 | 论文最爱的变分自编码器( VAE),不了解一下?
AI 科技评论按:喜欢机器学习和人工智能,却发现埋头苦练枯燥乏味还杀时间?这里是,雷锋字幕组编译的 Arxiv Insights 专栏,从技术角度出发,带你轻松深度学习。 原标题: Variation
AI科技评论
2018/03/29
1.4K0
金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA预测股票价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)
读取数据->生成标签(下一天收盘价)->分割数据集->LSTM模型预测->可视化->预测结果评估
汀丶人工智能
2023/07/08
2.6K0
金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA预测股票价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)
如何用LSTM自编码器进行极端事件预测?(含Python实现)
原标题 | Extreme Event Forecasting with LSTM Autoencoders
AI研习社
2019/09/25
3.2K1
如何用LSTM自编码器进行极端事件预测?(含Python实现)
【干货】一文读懂什么是变分自编码器
【导读】本文是工程师Irhum Shafkat的一篇博文,主要梳理了变分自编码器的相关知识。我们知道,变分自编码器是一种生成模型,在文本生成、图像风格迁移等诸多任务中有显著的效果,那么什么是变分自编码
WZEARW
2018/04/13
11.4K0
【干货】一文读懂什么是变分自编码器
变分自编码器(VAEs)
GAN专题结束了,按照计划,继续介绍生成模型。除了GAN,还有一类很有名生成模型variational auto-encoder(VAE,变分自编码器)。接下来的几期里面,我打算系统地了解一下VAEs。
CreateAMind
2018/07/24
3.8K0
变分自编码器(VAEs)
自编码器数据降维实践
数据降维是一件困难的事情,而难点通常集中在主成分分析上。此前,我介绍过一种基于自动编码器的降维方法(https://quantdare.com/outliers-detection-with-autoencoder-neural-network/)。然而,在那一段时间里,我专注于如何使用自动编码作为预测器,而现在我想把它们看作是一种降维技术。
AI研习社
2019/12/24
1.4K0
自编码器数据降维实践
QuantML | 使用财务情绪与量价数据预测稳健的投资组合(附代码)
投资组合管理是最大化投资组合回报的过程。投资组合经理根据他们对风险的偏好,代表客户做出交易决策。他们在决定他们应该在投资组合中持有哪些股票以平衡风险和获取最大回报之前,分析不同的资产的优势和劣势。这使得投资组合管理变得困难。我们的目标是通过使用预测建模和深度学习技术使这个过程更好,根据下个季度的预测股价生成稳定的投资组合。
量化投资与机器学习微信公众号
2019/06/20
2.2K0
【干货】深入理解变分自编码器
【导读】自编码器是一种非常直观的无监督神经网络方法,由编码器和解码器两部分构成,自编码器近年来很受研究人员的欢迎。本文是机器学习工程师Jeremy撰写的一篇非常棒的博文,介绍了变分自编码器理论基础和工作原理,通过人脸示例帮助读者更直观的理解。本文强调了变分自编码器的理论推导和实现细节,在文末展示了变分自编码器作为生成模型的输出结果。希望深入理解变分自编码器的读者不妨读一读。 Variational autoencoders 变分自编码器 自编码器是发现数据的一些隐状态(不完整,稀疏,去噪,收缩)表示的模型
WZEARW
2018/04/08
1.9K0
【干货】深入理解变分自编码器
Python3对多股票的投资组合进行分析「建议收藏」
目前,金融市场总是变幻莫测,充满了不确定因素,是一个有许多投资风险的市场。这与其本身的市场规律和偶然性有关,金融危机、国家政策以及自然灾难等都会影响到金融市场,均会影响投资的收益情况。所以投资者总是希望能够找到应对的方法来减少投资的风险而增加收益。随着老百姓对合理的财富分配理论有着迫切的需求,学会优化投资理财,做到理性投资,是当前投资者最关心的问题。
全栈程序员站长
2022/09/27
2.6K0
Python3对多股票的投资组合进行分析「建议收藏」
获取A股行情数据方法[通俗易懂]
做股票量化分析,获取股票行情数据是第一步,结合网上的信息,和我用过的一些东西,做个总结。以后有新信息,逐步完善。
全栈程序员站长
2022/07/25
8.3K0
稳博投资研究类笔试2024
面向研究类的笔试题目,主要是数理统计和编程题,本次笔试时长三小时,整体五个题,分别是魔法跳棋、金融数据计算、机器学习题、数学题、物理题,本次给出其中的两题,剩下的题及全部解答在知识星球中获取。
量化投资和人工智能公众号
2024/06/28
2501
稳博投资研究类笔试2024
变分自编码器 VAE
简单来讲,变分自编码器是可以和GAN相媲美的生成网络。我们可以输入一个低维空间的Z,映射到高维空间的真实数据。比如,生成不同样的数字,人脸等等。
为为为什么
2022/09/27
1.7K0
变分自编码器 VAE
【译】变分自编码器教程 一、简介
“生成建模”是机器学习的一个广泛领域,它处理分布模型P(X),定义在数据点X上,它在一些潜在的高维空间X中。例如,图像是一种流行的数据,我们可以为其创建生成模型。每个“数据点”(图像)具有数千或数百万个维度(像素),并且生成模型的工作是以某种方式捕获像素之间的依赖性,例如,邻近的像素具有相似的颜色,并且被组织成对象。 “捕获”这些依赖关系的确切含义,取决于我们想要对模型做什么。一种直接的生成模型,简单允许我们以数字方式计算P(X)。在图像的情况下,看起来像真实图像的X值应该具有高概率,而看起来像随机噪声的图像应该具有低概率。然而,像这样的模型并不一定有用:知道一个图像不太可能无法帮助我们合成一个可能的图像。
ApacheCN_飞龙
2022/05/07
2780
【译】变分自编码器教程 一、简介
FactorVAE:基于变分自编码器的动态因子模型
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,荣获2021年度AMMA优秀品牌力、优秀洞察力大奖,连续2年被腾讯云+社区评选为“年度最佳作者”。 量化投资与机器学习公众号 独家解读 量化投资与机器学公众号  QIML Insight——深度研读系列 是公众号全力打造的一档深度、前沿、高水准栏目。 公众号遴选了各大期刊前沿论文,按照理解和提炼的方式为读
量化投资与机器学习微信公众号
2022/06/24
1.3K0
FactorVAE:基于变分自编码器的动态因子模型
推荐阅读
相关推荐
Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文