GRU-PFG:利用图神经网络从股票因子中提取股票间相关性
“GRU-PFG: Extract Inter-Stock Correlation from Stock Factors with Graph Neural Network”
论文地址:https://arxiv.org/pdf/2411.18997
摘要
股票预测模型可以分为两个主要类别:第一类,例如GRU和ALSTM,这些模型仅基于股票本身的数据进行预测,其准确性有一定的局限性;第二类,像HIST和TRA这样的模型,则融合了行业趋势、财务报表以及公众情绪等多方面的信息,虽然能够更全面地反映股票之间的关联,但在数据的标准化处理和模型泛化能力方面遇到了挑战。本文介绍了一种新的模型——GRU-PFG,它依然只利用股票本身的因素,但借助图神经网络来挖掘不同股票间的联系,从而实现了比单纯依赖股票数据的模型更优的预测性能,并且其效果可与结合多种信息源的第二类模型相媲美。
在CSI300指数成分股的数据集测试中,GRU-PFG模型的秩相关系数(IC)达到了0.134,这一成绩不仅超过了HIST模型的0.131,也明显优于传统的GRU和Transformer模型,证明了该模型具有更强的泛化能力。尽管股票投资是实现资产增值的有效途径之一,但它同样伴随着市场波动和企业业绩不佳所带来的风险,投资者可能会因此面临资本损失。
简介
随着机器学习技术的发展,特别是神经网络(例如CNN和Transformer)的应用,越来越多的投资者开始重视其在股票预测中的潜力。股票预测模型通常可以分为两大类:一类模型仅依赖于股票的历史价格和其他直接相关的市场数据;而另一类则整合了额外的信息,比如行业动态、市场资本化等非传统因素。尽管后者的模型,如MDGNN和HIST,能够提供更高的预测精度,但它们也面临着信息选取的主观性、数据更新的滞后性以及适应快速变化的行业环境的挑战。
本研究引入了一种新的模型——GRU-PFG,它以股票自身因素为基础,并通过图神经网络捕捉股票之间的关系,以此来增强预测性能。GRU-PFG利用Alpha360股票因子作为输入,深入挖掘这些数据中的隐含信息,相较于传统的ALSTM和GRU模型表现出了显著的优势,为从股票因子中提取有用信息提供了创新的方法。实验结果显示,该模型的表现与那些基于多种信息源的复杂预测模型(如HIST和TRA)相当,同时展现了更强的泛化能力,成功地解析了股票因子间的相互联系。
01相关工作
股票因素
长期以来,股票预测的定量分析工作由于难以获取内幕信息而带有一定的保密性。研究者们一直致力于利用公开可用的数据,如市场价格和成交量,来构建既稳定又可靠的预测模型。在这一领域,有的量化分析师专注于根据股票的历史趋势来设定模式,而其他的分析师则通过量化和标准化数据来开发用于预测的股票因子。
2015年,Zurab Kakushadze与Igor Tulchinsky首次界定了4000个可能影响未来股票价格变动的数值特征。随后,Kakushadze进一步简化了这些特征,提炼出101个更为关键的数值。Xiao Yang等人随后将这些股票因子的概念引入到qlib这个开源量化投资平台上,创建了Alpha360和Alpha158两个因子集。这些因子集成为了GRU、图注意力网络(GATs)、Transformer等深度学习算法进行日常股票趋势预测的标准输入,广泛应用于学术研究和实际投资策略中。
基于Alpha360的预测模型
Alpha360股票因子集因其高维度特性,非常适合应用于如GRU、LSTM和Transformer等深度学习模型。这些模型主要依赖标准化的股票因子进行预测,虽然在处理多源信息方面有所欠缺,但其数据标准化程度很高。相比之下,多层感知器(MLP)作为基础模型,能够执行多维数据的降维和非线性转换,不过在学习股票因子之间的复杂关系上能力有限。而GRU、LSTM、ALSTM以及Transformer这类模型则将股票因子视为时间序列数据来处理,从而能够更有效地提取特征信息,但在捕捉不同股票之间的相互关系时表现并不理想。
基于多信息源的预测模型
学者们正探索将额外的信息,例如公众情绪、公司的市值以及行业概念,融入到股票预测模型中,以期提高预测的准确性。虽然多源信息的整合有可能增强模型的性能,但这种方法也遇到了一些挑战:
- 主观性选择
确定哪些额外信息应该被包含在模型中往往依赖于研究人员的判断,这引入了一定程度的主观性。不同的研究者可能会基于不同的理论或经验选择不同的信息来源,从而影响模型的一致性和可重复性。 - 标准化困难
不同类型的额外信息通常来自各种不同的源,格式和质量各不相同。要将这些非结构化或半结构化的数据整合进一个统一的预测框架,并确保其标准化处理,是一项复杂且耗时的任务。 - 信息滞后
许多额外信息,特别是那些从新闻报道、社交媒体或其他公开渠道获取的数据,可能存在更新延迟的情况。这种滞后可能导致模型使用的是过时的信息,从而降低预测的准确性和时效性。 - 新公司和新兴行业的信息匮乏
对于较新的公司或快速发展的新兴行业,可能缺乏足够的历史数据和其他相关信息来进行有效的分析和预测。这使得构建适用于所有市场参与者的通用模型变得更加困难。
这些问题都对多源信息模型的实际应用构成了挑战,需要通过技术创新和方法改进来逐步解决。
02基础
股票趋势相关概念
股票价格是由公司财务状况、市场情绪以及宏观经济环境等多种因素共同作用的结果,其变动通常是渐进的而非突然的。我们可以通过比较价格的变化速率来研究股票的趋势,这一分析方法的计算公式为:
日收益率计算公式为:
Alpha360因子模型旨在通过整合基本面分析、技术分析、市场情绪以及宏观经济数据等多个方面的信息,来评估接下来60天内股票价格的可能走向,其目标是增强预测的精确度。请注意,任何预测方法都无法保证完全准确,投资股市有风险,决策需谨慎,并建议咨询专业的财经顾问。
GRU在股票预测中的局限性
GRU网络采用360个因子来预测每日的股票回报,其性能超越了Transformer和LSTM模型。这些因子每6个组成一个时间步,总共构建了60个时间步。在最后一个时间步中,数据经过降维处理,然后通过线性函数输出一个维度的回报预测。GRU在网络中高效地提取时间序列特征并进行降维,然而它在捕捉不同股票之间的关系方面的能力较弱,这限制了其对市场动态变化的全面理解。
03方法
本文介绍了一种新型模型——GRU-PFG,该模型基于Alpha360因子集,旨在提升股票预测的性能。模型结构由三个主要部分组成:初步信息提取、主要关系建模和次要关系建模。
在初步信息提取阶段,采用GRU网络对360个因子进行处理,生成64维的特征表示,从而有效地捕捉了股票因子的基础信息。接下来,在主要关系建模阶段,通过使用softmax函数和Pearson相关系数来计算因子之间以及股票之间的关联度,进而构建出一个反映这些关系的相关性矩阵R1。最后,在次要关系建模阶段,模型考虑到了未直接显现的关系,并结合之前的主要关系,构建了一个综合性的聚合矩阵R2。
最终,模型将两个阶段提取到的特征整合为一个综合特征F_last,用于预测股票的价格变动趋势。为了优化模型参数,训练过程中采用了均方误差(MSE)作为损失函数。这一设计使得GRU-PFG不仅能够有效提取时间序列信息,还能更好地理解股票之间的复杂关系,从而提高预测的准确性。
04实验
实验设置
使用CSI100和CSI300数据集,本研究将2007年1月1日至2014年12月31日的数据作为训练集,2015年1月至2016年12月的数据作为验证集,而2017年1月至2020年12月的数据则用于测试。通过qlib平台计算的Alpha360因子被用作模型输入,模型的输出是预测的日收益率,实际的日收益率则作为标签进行监督学习。
评估模型性能的指标包括信息系数(IC)、排名IC以及Precision@N。在训练过程中,IC被用作损失函数的一部分,而在测试阶段,较高的IC值表明模型具有更好的预测能力。GRU-PFG模型与多种其他模型进行了对比,这些模型包括基于Alpha360因子的MLP、ALSTM和GRU,还有依赖多源输入的TRA和HIST等。尽管HIST模型被认为是预测效果最好的,但其面临数据标准化和泛化能力的挑战;相比之下,GRU和ALSTM在仅使用Alpha360因子的模型中表现最为出色。
结果
GRU-PFG模型在CSI100和CSI300数据集上的表现显著优于仅依赖Alpha360因子的其他模型,尤其在信息系数(IC)、排名IC(Rank IC)和Precision@N等评估指标上。特别是在CSI300数据集上,GRU-PFG不仅超越了HIST模型,而且仅使用股票因子作为输入,便实现了更高的预测精度。这表明GRU-PFG在捕捉股票间相关性方面具有更强的能力,可能是其在CSI300数据集上表现出色的原因之一。
与基于Alpha360因子的其他模型(如ALSTM、GRU、GATs)相比,GRU-PFG在大多数测试期间的月均IC表现更为突出。尽管在Precision@N指标上,GRU-PFG的优势不如在IC指标上那么明显,但它在多数月份中仍然保持领先地位。这一结果进一步证明了GRU-PFG模型在股票预测方面的优越性能。
模型参数和结构的影响
为了评估模型各部分对预测性能的贡献,我们进行了结构上的宏观和微观调整,并通过消融实验来系统地分析每个组件的影响。以下是具体的做法和结果:
1.模型结构调整与消融实验:
- 通过宏观和微观调整模型结构,进行消融实验。
- 目的是评估各个组件对预测性能的具体贡献。
2.主要组件:
- 初步信息提取:使用GRU网络处理初始数据,提取基础特征。
- 主要关系提取:捕捉因子之间及股票之间的主要关联。
- 次级关系提取:考虑潜在的、未直接显现的关系,进一步增强模型表现。
3.性能提升:
- 随着更多组件的逐步加入,模型的预测性能逐步提高。
- 特别是次级关系提取部分的引入,显著提升了CSI300数据集上的预测效果。
4.关系捕捉:
- 使用Pearson相关系数来衡量股票之间的关联性。
- 与余弦相似度相比,在信息系数(IC)和Precision@30等关键指标上表现出更优的性能。
这些调整和优化不仅揭示了各个组件对整体模型的重要性,还证明了通过精细设计模型结构可以有效提高股票预测的准确性。
05总结
本文介绍了一种新的股票预测模型GRU-PFG,该模型基于Alpha360因子,并引入了图表示法来描绘股票间的关联性,旨在解决传统模型存在的问题。实验结果显示,在相同的测试数据上,此方法能够有效提高诸如信息系数(IC)等评估标准。展望未来,我们的目标是优化这一模型,使其能够在多种数据环境下展现出更出色的预测能力,同时希望其应用能为投资者提供有价值的参考。然而,需要注意的是,任何投资都伴随着风险,投资者应根据个人的财务状况和风险承受能力做出谨慎的投资决策,并考虑寻求专业理财顾问的意见。
相关文章:

GRU-PFG:利用图神经网络从股票因子中提取股票间相关性
“GRU-PFG: Extract Inter-Stock Correlation from Stock Factors with Graph Neural Network” 论文地址:https://arxiv.org/pdf/2411.18997 摘要 股票预测模型可以分为两个主要类别:第一类,例如GRU和ALSTM,这些模型仅基于股票…...

数字化供应链创新解决方案在零售行业的应用研究——以开源AI智能名片S2B2C商城小程序为例
摘要: 在数字化转型的浪潮中,零售行业正经历着前所未有的变革。特别是在供应链管理方面,线上线下融合、数据孤岛、消费者需求多样化等问题日益凸显,对零售企业的运营效率与市场竞争力构成了严峻挑战。本文深入探讨了零售行业供应…...
安卓Activity执行finish后onNewIntent也执行了
测试反应投屏时下一集可能播放不成功。 首先看一下日志: onCompletion onCast handlerMessage: 2 finish: PlayerActivityabc7fdc onPause: PlayerActivityabc7fdc onNewIntent: PlayerActivityabc7fdc onResume: PlayerActivityabc7fdc onPause: PlayerActivityab…...

数据结构.期末复习.学习笔记(c语言)
《数据结构》复习概要 一、概论 二、基础1. 基本概念2. 四种逻辑结构及特点3. 算法的概念、特性4. 算法设计的4个要求 三、线性结构1.顺序表2.单链表3.循环链表双向链表4.栈(后进先出)5.队列(先进先出) 四、树和二叉树1.树2.二叉…...

Kafaka安装与启动教程
1.下载 先去官网Apache Kafka可以查看到每个版本的发布时间。选择你要安装的版本。 然后进入linux建立要存放的文件夹,用wget命令下载 2.安装 先解压缩: tar -xvzf kafka_2.12-3.5.1.tgz -C ../ 3.配置文件 修改server.properties: cd .…...
根据docker file 编译镜像
比如给到一个Dockerfile 第一步编译镜像 cd /path/to/Dockerfiledocker build -t <DOCKER_IMAGE_NAME> . build 命令编译镜像 -t 镜像名字 . 指dockerfile 所在目录 如果遇到报错 [] Building 0.3s (3/3) FINISHED …...
联邦学习的 AI 大模型微调中,加性、选择性、重参数化和混合微调
联邦学习的 AI 大模型微调中,加性、选择性、重参数化和混合微调 在联邦学习的 AI 大模型微调中,加性、选择性、重参数化和混合微调是不同的操作方式,具体如下: 加性微调 定义与原理:加性微调是在原始模型的基础上添加额外的可训练参数来进行模型调整。这种方式不会改变原…...

android 外挂modem模块实现Telephony相关功能(上网,发短信,打电话)
一.背景 当前模块不支持Telephony相关的功能,例如上网、发短信等功能,就需要外挂另一个模块实现此功能,这就是外挂modem模块实现Telephony功能,此篇主要就是说实现外挂modem模块功能中的Framework层实现逻辑,如下流程是在Android 13中实现的外挂pcie模块的流程 二.ril库相…...

【计算机视觉技术 - 人脸生成】2.GAN网络的构建和训练
GAN 是一种常用的优秀的图像生成模型。我们使用了支持条件生成的 cGAN。下面介绍简单 cGAN 模型的构建以及训练过程。 2.1 在 model 文件夹中新建 nets.py 文件 import torch import torch.nn as nn# 生成器类 class Generator(nn.Module):def __init__(self, nz100, nc3, n…...

数据中台与数据治理服务方案[50页PPT]
本文概述了数据中台与数据治理服务方案的核心要点。数据中台作为政务服务数据化的核心,通过整合各部门业务系统数据,进行建模与加工,以新数据驱动政府管理效率提升与政务服务能力增强。数据治理则聚焦于解决整体架构问题,确保数据…...

【Qt】将控件均匀分布到圆环上
1. 关键代码 for(int i0; i<10; i){/*m_panLabelIcon - 大圆环控件m_slotsIcon[i] - 小圆控件*/QString idxStr QString::number(i1);m_slotsIcon[i] new QLabel(m_panLabelIcon);m_slotsIcon[i]->setFont(ftSlot);m_slotsIcon[i]->setText(idxStr);m_slotsIcon[i]-…...
第四、五章补充:线代本质合集(B站:小崔说数)
视频1:线性空间 原视频:【线性代数的本质】向量空间、基向量的几何解释_哔哩哔哩_bilibili 很多同学在学习线性代数的时候,会遇到一个困扰,就是不知道什么是线性空间。...
2025年贵州省职业院校技能大赛信息安全管理与评估赛项规程
贵州省职业院校技能大赛赛项规程 赛项名称: 信息安全管理与评估 英文名称: Information Security Management and Evaluation 赛项组别: 高职组 赛项编号: GZ032 1 2 一、赛项信息 赛项类别 囚每年赛 □隔年赛(□单数年…...
松鼠状态机流转-@Transit
疑问 状态from to合法性校验,都是在代码中手动进行的吗,不是状态机自动进行的? 注解中from状态,代表当前状态 和谁校验:上下文中初始状态 怎么根据注解找到执行方法的 分析代码,创建运单,怎…...

微信小程序调用 WebAssembly 烹饪指南
我们都是在夜里崩溃过的俗人,所幸终会天亮。明天就是新的开始,我们会变得与昨天不同。 一、Rust 导出 wasm 参考 wasm-bindgen 官方指南 https://wasm.rust-lang.net.cn/wasm-bindgen/introduction.html wasm-bindgen,这是一个 Rust 库和 CLI…...
# LeetCode Problem 2038: 如果相邻两个颜色均相同则删除当前颜色 (Winner of the Game)
LeetCode Problem 2038: 如果相邻两个颜色均相同则删除当前颜色 (Winner of the Game) 在本篇博客中,我们将深入探讨 LeetCode 第2038题——如果相邻两个颜色均相同则删除当前颜色。该问题涉及字符串处理与游戏策略,旨在考察如何在给定规则下判断游戏的…...

Redis面试相关
Redis开篇 使用场景 缓存 缓存穿透 解决方法一: 方法二: 通过多次hash来获取对应的值。 小结 缓存击穿 缓存雪崩 打油诗 双写一致性 两种不同的要求 强一致 读锁代码 写锁代码 强一致,性能低。 延迟一致 方案一:消息队列 方…...

4.CSS文本属性
4.1文本颜色 div { color:red; } 属性值预定义的颜色值red、green、blue、pink十六进制#FF0000,#FF6600,#29D794RGB代码rgb(255,0,0)或rgb(100%,0%,0%) 4.2对齐文本 text-align 属性用于设置元素内文本内容的水平对齐方式。 div{ text-align:center; } 属性值解释left左对齐ri…...

Mongo高可用架构解决方案
Mongo主从复制哪些事(仅适用特定场景) 对数据强一致性要求不高的场景,一般微服务架构中不推荐 master节点可读可写操作,当数据有修改时,会将Oplog(操作日志)同步到所有的slave节点上。那么对于从节点来说仅只读,所有slave节点从master节点同步数据,然而从节点之间互相…...
Rabbitmq 业务异常与未手动确认场景及解决方案
消费端消费异常,业务异常 与 未手动确认是不是一个场景,因为执行完业务逻辑,再确认。解决方案就一个,就是重试一定次数,然后加入死信队列。还有就是消费重新放入队列,然后重新投递给其他消费者,…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...