使用AI生成金融时间序列数据:解决股市场的数据稀缺问题并提升信噪比

news2025/1/23 4:49:25

“GENERATIVE MODELS FOR FINANCIAL TIME SERIES DATA: ENHANCING SIGNAL-TO-NOISE RATIO AND ADDRESSING DATA SCARCITY IN A-SHARE MARKET”

论文地址:https://arxiv.org/pdf/2501.00063

摘要

金融领域面临的数据稀缺与低信噪比问题,限制了深度学习在股市分析中的有效性。为此,本文介绍两种利用生成模型合成中国A股市场数据的新方法:

  • 行业基础合成策略,它通过识别不同行业板块股票的独特属性,采用近似非局部总变差技术平滑化数据,并运用傅里叶变换带通滤波减少噪声干扰,同时结合去噪扩散隐式模型加快采样速度;
  • 基于模式识别的递归合成方案,专门针对那些上市时间较短或缺乏可比公司的股票,借助模式识别技术和马尔科夫模型创建变化长度的股票序列,并应用子时间级别数据增强技术来应对数据不足的问题。

经过对多个市场(包括主板、科创板、创业板、北京证券交易所、NASDAQ、NYSE及AMEX)的数据进行测试,结果表明这些合成数据不仅提升了预测模型的表现和个股信号的清晰度,而且在解决数据稀缺方面效果尤为突出,尤其是在处理上市历史短暂或缺乏类似对比公司的股票时。

本研究为金融数据合成提供了新颖的方法论支持,有助于金融市场分析以及高频交易策略的发展,同时也加深了对中国A股市场动态特征的理解。

简介

金融市场在价格和收益预测上遭遇了数据质量与数量的双重挑战,尤其在股票市场中表现为低信噪比和数据同质性问题。此外,数据隐私法规进一步限制了金融行业的数据获取与共享,造成了信息不对称和数据孤岛的现象。面对这些挑战,人工智能和深度学习模型提供了一种创新的解决方案,通过生成合成金融数据来增加数据多样性、保护用户隐私,并提升预测准确性。值得注意的是,金融数据的独特特征,如尖峰厚尾分布、异方差性和波动聚集等,对于深入理解市场动态至关重要。

本研究提出了两种新的股票数据合成方法,主要目标是提高信噪比并缓解数据稀缺的问题,特别适用于那些上市时间较短或缺乏可比公司的股票。通过这些方法,我们旨在为金融行业面临的若干难题提供有效的解决策略。

01背景和相关工作

金融市场动态与数据稀缺

准确预测金融市场中的资产价格和回报至关重要,但由于市场的波动性和不可预测性,使得精准预测充满挑战。财务数据的稀缺性和低质量限制了深度学习在金融领域的应用,特别是在股票市场中,低信噪比和高数据同质性对模型构建造成了障碍。同时,财务数据的高度敏感性和价值意味着数据泄露或恶意操纵可能会带来严重的安全风险。

随着数据隐私法规的实施,金融行业在数据获取与共享方面遇到了难题,导致了信息不对称和“数据孤岛”的现象。为了应对这些问题,研究人员正在探索利用人工智能技术生成合成财务数据的方法,这种方法不仅能够保留原始数据的关键特征,还能增加数据多样性、保护用户隐私,并提高模型训练和预测的准确性。这样做的目的是为了解决当前面临的挑战,推动金融行业的进步。

金融中的生成模型

生成模型,例如变分自编码器(VAE)、生成对抗网络(GAN)和扩散模型,在合成金融数据方面显示出了卓越的能力,可以有效模拟真实的市场动态和客户交易习惯。VAE利用概率性的编码与解码技术,创造出与训练数据集特征相似的新数据实例。GAN则通过生成器和判别器之间的对抗机制革新了图像生成领域,提供了前所未有的创造能力。扩散模型通过逐步逆转添加噪声的过程来生成高质量的数据样本,实现了在保持数据结构的同时增加样本多样性的目标。这些方法共同为金融市场提供了一种强大的工具,用于创建既真实又多样的合成数据。

金融数据生成中的挑战

生成模型在金融数据生成领域的应用尚处于起步阶段,面对市场复杂性和动态变化的挑战。为了生成高质量的合成数据,需要更深入地理解市场动态,并将深度生成模型与金融数据的特点紧密结合。目前,大多数模型主要依赖于西方市场数据(例如美国股市)进行训练,未能充分考虑到中国A股市场的独特规则和特性。由于各市场的分布特性及监管要求存在差异,这种局限性可能导致生成的合成数据不完全符合特定市场的规律和模式。因此,针对不同市场定制生成模型是必要的。

金融数据综合方法

各金融机构和学者已经提出了生成合成金融数据的框架,旨在保护实体信息不被泄露的同时,支持金融分析与研究工作。学术界对多种生成对抗网络(GAN)变体进行了探索,通过改进架构和损失函数来提升金融数据合成的效果。当前,生成模型在金融领域的研究依旧十分活跃,显示出开发更为复杂和精细的合成数据生成方法的巨大潜力,这将进一步增强金融模型和策略的预测能力。这些努力致力于在保障隐私的前提下,提高数据分析的准确性和可靠性。

02基于分数的生成模型

金融市场动态与数据稀缺

Score-based Generative Models (SGMs) 是一种自监督学习技术,它通过学习数据未知分布的得分函数来创建新样本。该方法的核心在于最小化目标函数 L(θ),其中使用神经网络 sθ 来逼近得分 ∇x log p(x)。然而,直接计算目标函数中的 tr(∇x sθ(x)) 需耗费大量计算资源,为此引入了去噪得分匹配(DSM)这一解决方案。

DSM 方法通过对原始数据添加噪声,以此估计含噪声数据分布的得分,并将训练目标调整为最小化一个更新后的目标函数。在特定情境下,DSM 的训练目标与去噪自编码器(DAE)的目标是等价的。

此外,这些模型可以通过随机微分方程(SDEs)整合进一个统一框架内,提供了一种逐步引入和移除噪声的方法,这有助于得分生成模型的设计与分析。这种方法不仅提高了模型的灵活性,也增强了其实用性。

与朗格万动力学的分数匹配

SMLD过程包含两个主要步骤:首先,采用去噪评分匹配来估计受噪声影响的数据分布的评分;其次,通过Langevin动态迭代从先验分布中进行采样。

Song等人提出的方法涉及对数据施加多级噪声,并训练一个噪声条件评分网络(NCSN)以估计在所有噪声水平下的评分。这种方法通过定义特定的扰动机制,使得网络能够学习不同噪声条件下数据的底层结构。这样做的目的是为了更准确地模拟数据的真实分布,从而提高生成模型的性能。扰动方法定义为:

设定噪声序列

,满足

,以使得

NCSN的训练目标是最小化加权去噪声评分匹配目标的损失函数。

SMLD使用Langevin MCMC采样方法生成新数据样本,更新规则为:

迭代从

开始,最终在

时,

将成为

的精确样本。

DDPM模型

Denoising Diffusion Probabilistic Model (DDPM) 可以被理解为一种分层的马尔可夫变分自编码器。在这个模型中,通过定义一系列噪声参数 β 和 α,可以推导出条件分布 q(x_t | x_0) 以及逆向的去噪过程。

DDPM 的训练目的是最小化一个加权的证据下界(ELBO)损失函数。这种方法允许模型学习如何从含有噪声的数据中恢复原始信息,从而在数据生成过程中有效地去除噪声,确保生成样本的质量和真实性。

从随机微分方程的角度统一SMLD和DDPM

根据 Song 等人的研究,SMLD 和 DDPM 模型可以通过随机微分方程 (SDEs) 统一来理解。

在描述前向扩散过程时,使用了包含漂移项 f(x, t) 和扩散项 g(t)dw 的随机微分方程 (SDE)。反向过程同样用 SDE 来表示,通过逐步去除噪声来生成接近真实数据分布 p0 的样本 x0。这一过程依赖于训练得分网络 sθ(x, t) 来估计 ∇x log pt(x),其中目标函数包含了正权重函数 λ 和均匀分布的 t。

DDPM 可以被视为连续时间 SDE 的一种离散形式,分别对应于离散的前向过程和连续形式的 xi 和 dx。

在 VE-SDE 中,f(x, t)=0,g(t)=q d[σ²(t)] dt;而在 VP-SDE 中,f(x, t)=-β(t)²x,g(t)=pβ(t)。通过替换 f(x, t) 和 g(t) 的值,可以得到适用于 SMLD 或 DDPM 的反向过程的 SDE 形式。这种方法提供了一个统一框架,使得不同模型之间的比较和转换变得更加直观和简便。

03方法

本研究引入了CS-Diffusion方法,采用扩散模型来合成A股市场数据,以此增加数据量。此方法的目标是解决数据稀缺问题,并提高对股票潜在回报率预测的准确性。

基于A股市场板块类型的训练方法

问题定义

输入包括具有特定长度的时间序列 x 和条件 c,经过处理后生成去噪的时间序列 xˆ。

训练阶段

在训练过程中,通过随机选择噪声水平(t ∼ U(0, T))对输入数据进行前向扩散处理,其中最大噪声级别由 T 控制,T=1 表示最高噪声水平。训练条件扩散模型时,采用无分类器引导的方法,结合条件模型与无条件模型,避免了额外的分类器训练需求。为了增强模型的条件生成能力,并解决中国股市波动特性未被充分考虑的问题,我们引入了两种正交条件数据:股票对应的申万二级行业和板块信息。申万二级行业涵盖124个类别,而A股市场则分为5个板块。使用嵌入层及独热编码技术来生成条件向量 c。这种方法不仅提升了模型针对具体市场条件的生成能力,也确保了数据处理的有效性和准确性。

现有抽样方法的改进

去噪过程

在去噪过程中,从x_t中减去噪声以恢复

。使用神经网络参数化

来估计

是用于预测扩散过程中的噪声的可训练项。

加速抽样

传统扩散概率模型虽然能够生成高质量的样本,但其采样速度较慢,通常需要数千个时间步才能完成。为了解决这一问题,DDIM提出了一种新的加速采样方法,通过隐式建模条件分布来实现更高效的去噪过程。这种方法结合了确定性和随机性元素,能够在减少所需扩散步骤T的同时保持样本的质量。

DDIM通过将前向过程修改为非马尔可夫过程来加快采样速度,其中σ参数用于控制随机过程的幅度。当设置σ_t=0时,去噪过程转变为完全确定性的过程,沿着一条确定的路径快速进行。这意味着DDIM可以在远少于原始T步骤(即T'≪T)的情况下完成去噪,从而大幅提高了采样效率。

近似非局部总变差损失

在生成时间序列数据时,如何控制生成序列的方差同时保留其整体趋势和特征是一个重大挑战。传统方法,如全变差(TV)正则化,可能会导致不自然的块状效应或过度平滑问题。为此,提出了一种基于Liu等人非局部全变差(NTV)的方法改进版——近似非局部全变差(ANTV)损失函数,以更好地捕捉时间序列的全局结构。

ANTV方法通过分析局部窗口内的数据点间的非局部依赖关系来降低计算复杂度。在ANTV损失函数中,α作为正则化参数,x代表时间序列数据,w(i)表示局部窗口,而ω(i, j)是用于衡量相似性的权重函数,这里采用高斯核进行表达。该算法的步骤包括在每次去噪后计算非局部梯度,并更新x_i,以此减少方差并确保序列的一致性。这种方法特别适合于像A股市场这样的场景,能够有效地生成符合实际市场特性的序列数据。

傅里叶变换滤波的应用场景

由于历史数据有限,北京证券交易所(BSE)在模型训练方面遇到了挑战。为解决这一问题,可以采用迁移学习的方法,先利用数据更为丰富的成熟市场(如上海和深圳证券交易所)进行预训练。接着,通过逐步引入噪声并应用带通滤波损失(Bandpass Filter Loss)来生成合成数据。带通滤波损失的设计目的是确保信号的频域特征与目标相匹配,从而保留特定频率范围内的重要信息。这种方法能够有效弥补数据不足的问题,提高模型在北京证券交易所的适用性和准确性。

采样算法总结

使用条件扩散模型的采样过程结合了DDIM采样技术和损失函数优化,以生成高质量数据。首先设定要生成的数据量m、采样步数T'以及条件向量c,并准备一个空列表用于存储结果。从高斯分布N(0, I)中随机抽取初始噪声x T'作为起点,然后从t=T'逐步更新至t=0。在每一步中,应用近似非局部全变差损失和带通滤波损失,以增强时间序列数据的结构一致性和频率特征。

完成整个采样流程后,将最终生成的时间序列x 0加入结果列表中,当列表中的样本数量达到m时,计算这些样本的均值作为最终输出x ˆ。这种方法能够高效地生成高质量的时间序列数据,并通过调整条件向量c来适应特定领域的特征需求。这样不仅提高了生成数据的质量,也确保了其在目标领域的适用性。

04实验

实验设置

通过实验验证以下问题:

  • 验证基于扩散模型合成的股票时间序列数据能否提升信噪比。
  • 检验这些合成数据在实际交易操作中的盈利能力。
  • 评估提出的基于行业的股票数据合成方法是否能够有效缓解数据稀缺的问题。

数据集

数据来源于RiceQuant,覆盖2014年1月1日至2024年6月1日期间的A股日频数据,包括主板、创业板、科创板及北京证券交易所的公司。股票分类标准如下:以30开头的是创业板,002代表中小板,60对应上海主板,000为深圳主板,688是科创板,而83/87/88则属于北京证券交易所。行业分类使用Wind终端提供的申万二级行业标准,确保行业属性准确无误。

采用了一个60天的滑动窗口,步长设为20,并将数据集按照4:1的比例划分为训练集和测试集。对于停牌股票,短期停牌通过线性插值进行填补,长期停牌则采用前向填充的方式处理,而对于那些频繁停牌的股票,则直接从数据集中移除。为了避免因价格波动过大而影响模型,新上市股票在初期不会被纳入数据集中。

所有股票都进行了前向权利调整,以消除股息发放和配股对股价的影响,保证历史价格之间的可比性。如果发生行业变更,会统一采用最新的申万行业信息来反映公司的最新业务状况。经过上述预处理步骤,确保了数据的完整性和一致性,从而提升了模型训练效果和预测准确性。

评估指标

回报率(RR):股票预测的核心目标是获得显著的盈利。

对数收益率(LR):这是金融数据分析中常用的指标,它展示了价格变化的比例,并具备可加性及近似正态分布的特点。

信息系数(IC):这一指标衡量的是预测值与实际值之间的线性相关程度。

排名信息系数(Rank IC):用于评估预测值和真实值之间的排序相关性。通过这些指标,可以全面了解模型预测能力及其在金融市场中的表现。

实现细节

采用Gao等人开发的DiffsFormer,这是一种基于Transformer的神经网络sθ(x, t, c),用于估计噪声。其输入包括时间序列x、条件信息c和正弦嵌入的时间t。条件嵌入网络是一个3层的多层感知器(MLP),隐藏层维度为128,激活函数选用SiLU。扩散模型网络采用了Transformer架构,包含一个输出通道数为64的卷积层、8个注意力头和4个残差块,激活函数为ReLU。去噪过程总共设置为400个步骤。

在优化过程中,近似非局部总变差系数λANTV被设定为0.03,傅里叶变换过滤系数λBP同样设为0.03,而分类器无关引导尺度ω则设置为7.5。这些参数配置旨在优化模型性能,确保生成高质量的数据样本。

基线

  • MLP:采用2层各含256个单元的多层感知器,适用于股票价格预测。
  • LSTM:基于长短期记忆网络,特别适合处理具有长期依赖性的序列数据。
  • GRU:门控循环单元,是LSTM的一种简化版本,拥有更为简洁的结构和较少的参数。
  • SFM:状态频率记忆网络,通过分解隐藏状态的记忆单元来建模交易模式。
  • ALSTM:一种增强型LSTM,加入了时间注意力聚合层,可以更有效地关注不同时间点的信息。
  • Transformer:基于Transformer架构,利用自注意力机制捕捉复杂的长距离依赖关系,非常适合处理复杂的时间序列数据。
  • HIST:一种图基框架,能够挖掘预定义及隐含概念中的共享信息,从而实现更加全面的特征表示。这些模型各自具备独特的优势,适用于不同的金融数据分析任务。

实验结果

基于板块类型的股票数据合成方法在A股数据集上进行了训练,特别针对主板、科创板、创业板和北京证券交易所的数据进行了增强处理。为了模拟交易,采用了“top20drop20”策略,即每次选取表现最佳的20只股票,并定期调整以剔除表现最差的20%。这种方法旨在优化投资组合,提高预测模型的实用性与准确性。

实验结果表明,所提出的方法在RR、IC和Rank IC这些指标上显著超越了Original和DiffsFormer方法,显示了其在预测准确性和稳定性方面的提升。特别是在信噪比较低的情况下,如ALSTM和HIST这样的模型显示出明显的性能改进,这证明了该方法有效地提高了原始股票数据的信噪比。

同样地,在美国股市(包括NYSE、NASDAQ和AMEX)进行的实验也验证了该方法的有效性,实现了8.34%的性能提升。考虑到中国A股市场短线操作机制相对有限,且主要由机构投资者参与,而美国市场则允许零售投资者更为灵活地进行卖空操作,实验设计时假设所有市场的参与者都能够自由做空,以此来消除因不同市场的短线机制差异对实验结果造成的影响。这样做的目的是为了确保结果的可比性和公正性。

05总结

本文提出的基于板块类型的股票数据合成方法在多个市场(包括主板、创业板、科创板和北京证券交易所)上的表现超越了现有算法,显著提升了预测的准确性和稳定性。该方法有效提高了股票数据的信噪比,特别是在低信噪比环境下,增强了ALSTM和HIST模型的表现。此外,此方法在美国股市(NYSE、NASDAQ、AMEX)的应用也证明了其广泛适用性和强鲁棒性。

未来的工作将集中在进一步优化这一模型,并探索其在其他金融市场中的应用潜力。通过不断改进,期望能够为金融数据分析和投资策略提供更加有力的支持。

​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Qt】05-菜单栏

做菜单 前言一、创建文件二、菜单栏 QMenuBar2.1 示例代码2.2 运行结果 三、工具栏 QToolBar3.1 运行代码3.2 结果分析 四、状态栏 QStatusBar4.1 运行代码4.2 运行结果 五、文本编辑框 QTextEdit5.1 运行代码5.2 运行结果 六、浮动窗口 addDockWidget6.1 运行代码6.2 运行结果…

细说STM32F407单片机电源低功耗StandbyMode待机模式及应用示例

目录 一、待机模式基础知识 1、进入待机模式 2、待机模式的状态 3、退出待机模式 二、待机模式应用示例 1、示例功能和CubeMX项目设置 (1) 时钟 (2) DEBUG、LED1、KeyRight、USART6、CodeGenerator (3&#x…

中国综合算力指数(2024年)报告汇总PDF洞察(附原数据表)

原文链接: https://tecdat.cn/?p39061 在全球算力因数字化技术发展而竞争加剧,我国积极推进算力发展并将综合算力作为数字经济核心驱动力的背景下,该报告对我国综合算力进行研究。 中国算力大会发布的《中国综合算力指数(2024年…

w-form-select.vue(自定义下拉框组件)(与后端字段直接相关性)

文章目录 1、w-form-select.vue 组件中每个属性的含义2、实例3、源代码 1、w-form-select.vue 组件中每个属性的含义 好的,我们来详细解释 w-form-select.vue 组件中每个属性的含义,并用表格列出它们是否与后端字段直接相关: 属性解释表格&…

前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!

引言 时光飞逝,2024年已经来临,回顾过去一年,科技的迅猛进步简直让人目不暇接。 在人工智能(AI)越来越强大的今天,我们不再停留在幻想阶段,量子计算的雏形开始展示它的无穷潜力,Web …

消息队列篇--原理篇--RabbmitMQ(Exchange,消息转换器、docker部署,绑定和确认机制等)

RabbitMQ是一个基于AMQP协议的消息队列系统,支持多种消息传递模式,包括点对点(P2P)、发布/订阅(Pub/Sub)和路由模式。RabbitMQ 的设计目标是提供高可用性、可扩展性和可靠性,适用于企业级应用集…

C++入门 详细版

欢迎来到干货小仓库!! 一分耕耘一分收获,离自己的目标越来越近。 passion!passion!!passion!!! 1.命名空间 由于C语言无法避免名字或者函数重复等问题,当有多…

一文大白话讲清楚webpack基本使用——9——预加载之prefetch和preload以及webpackChunkName的使用

文章目录 一文大白话讲清楚webpack基本使用——9——预加载之prefetch和preload1. 建议按文章顺序从头看,一看到底,豁然开朗2. preload和prefetch的区别2. prefetch的使用3. preload的使用4. webpackChunkName 一文大白话讲清楚webpack基本使用——9——…

Android AutoMotive --CarService

1、AAOS概述 Android AutoMotive OS是谷歌针对车机使用场景打造的操作系统,它是基于现有Android系统的基础上增加了新特性,最主要的就是增加了CarService(汽车服务)模块。我们很容易把Android AutoMotive和Android Auto搞混&…

(三)线性代数之二阶和三阶行列式详解

在前端开发中,尤其是在WebGL、图形渲染、或是与地图、模型计算相关的应用场景里,行列式的概念常常在计算变换矩阵、进行坐标变换或进行图形学算法时被使用。理解二阶和三阶行列式对于理解矩阵运算、旋转、平移等操作至关重要。下面,我将结合具…

Linux Bash 中使用重定向运算符的 5 种方法

注:机翻,未校。 Five ways to use redirect operators in Bash Posted: January 22, 2021 | by Damon Garn Redirect operators are a basic but essential part of working at the Bash command line. See how to safely redirect input and output t…

蓝桥杯算法日常|c\c++常用竞赛函数总结备用

一、字符处理相关函数 大小写判断函数 islower和isupper:是C标准库中的字符分类函数,用于检查一个字符是否为小写字母或大写字母,需包含头文件cctype.h(也可用万能头文件包含)。返回布尔类型值。例如: #…

MySQL(4)多表查询

引言:为什么需要多表的查询? A:提高效率,多线进行。 高内聚、低耦合。 一、多表查询的条件 1、错误的多表查询: SELECT employee_id,department_name FROM employees,departments; SELECT employee_id,department…

‘list‘ object has no attribute ‘mul‘

原来运行得好好的,突然出现错误:list object has no attribute mul ,更换一个输入路径,又没问题,改一个路径,还是出现错误,很奇怪,后来又没有问题,记录一下。 参考这文…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的旅行社在线预订与行程管理系统

开题报告 本文旨在设计研究与开发一个旅行社在线预订与行程管理系统。首先,本文介绍了旅行社在线预订与行程管理系统相关技术集成开发环境、软硬件环境,SpringBoot框架、Vue.js框架的基本原理和优势,以及在旅行社在线预订与行程管理系统开发…

HarmonyOS快速入门

HarmonyOS快速入门 1、基本概念 UI框架: HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。 方…

[论文阅读] (36)CS22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…

SQL sever数据导入导出实验

1.创建数据库TCP-H (1)右键“数据库”,点击“新建数据库”即可 (2)用sql语言创建,此处以创建数据库DB_test为例,代码如下: use master;go--检查在当前服务器系统中的所有数据里面…

Vue平台开发三——项目管理页面

前言 对于多个项目的使用,可能需要进行项目切换管理,所以这里创建一个项目管理页面,登录成功后跳转这个页面,进行选择项目,再进入Home页面展示对应项目的内容。 一、实现效果图预览 二、页面内容 功能1、项目列表展…

PyCharm+RobotFramework框架实现UDS自动化测试- (四)项目实战0x10

1.环境搭建 硬件环境:CANoe、待测设备(包含UDS诊断模块) 2.pythonPyCharm环境 pip install robotframework pip install robotframework-ride pip install openpyxl pip install udsoncan pip install python-can pip install can-isotp3…