收益率16.6%!超越ChatGPT的股票预测模型来了,还能给出合理解释

news2024/11/15 11:17:05

股市变换莫测,任何一点风吹草动都可能影响股票的走势,面对这种不确定性,投资者们常常感到无所适从。

图片

于是研究者们盯上了如今大火的大模型技术,试图通过高效地处理和分析海量的股市数据,挖掘出其中的隐藏规律和趋势,快速捕捉到新信息对市场的即时影响,预测未来股价的走势,为投资者提供决策支持。

例如,前不久小瑶就跟大家分享过一篇论文《碾压华尔街,GPT-4 选股收益超40%》。

今天再跟大家分享一篇近期发表在信息检索顶级会议WWW2024上的一篇论文,不仅收益率达到恐怖的16.6%,超越了ChatGPT,而且还能给出合理的决策解释!

论文标题
Learning to Generate Explainable Stock Predictions using Self-Reflective Large Language Models

论文链接为
https://arxiv.org/pdf/2401.18058.pdf

这篇论文提出了一个“总结-解释-预测”Summarize-Explain-Predict (SEP)的框架,该框架利用了一种模型自反思思想和近端策略优化(PPO),使LLM能够自主学习如何生成可解释的股票预测。

通过自反思过程,模型学习如何解释过去的股票波动。PPO训练过程中的训练样本来自反思过程中生成的响应,无需人工标注,极大得节省了人力,增大了生成的解释质量,并进一步提高股票预测的正确性。

任务定义:可解释的股票预测

给定一只股票及其过去天的相关文本语料库,目标是为下一个交易日生成一则股票预测,其中包括了一个二进制价格变动 和一个可读的解释。

Summarize-Explain-Predict(SEP)框架

SEP框架包含三个主要组件,如下图所示:

图片

  1. 总结:从非结构化文本输入中生成事实信息的摘要;

  2. 解释:通过迭代的自反思过程生成股票预测的解释并进行改进;

  3. 预测::通过微调语言模型后使用自动生成的注释样本生成基于置信度的预测。

1. 自我总结模块:从海量文本中提取关键信息

鉴于𝑇天的原始文本中的信息会超过字符限制,自我总结模块利用LLMs强大的摘要能力,将大量文本输入数据转换为事实信息的要点摘要。提示包过两个可变输入:指定的股票,和每天的非结构化文本输入。然后LLM 生成影响股票的新闻摘要,例如“包括苹果(AAPL)、谷歌、亚马逊和Facebook在内的大型科技股票超出了盈利预期”。可以表示为:

图片

2. 自我解释模块:通过自反思过程生成股价解释

自我解释模块的目标是双重的:一方面生成清晰的股票预测解释,另一方面通过迭代的自反思过程改进LLM自身的预测。

解释模块的提示包含两个变量输入:指定的股票和前一个模块生成的一系列提取信息的序列。给定这些输入,LLM 生成响应,其中应包含下一交易日的价格变动 和一个可读的解释。形式化为:

图片

在此过程中,还加入了自我反思循坏迭代改进回复,如下图所示:

图片

从生成的价格变动中,通过评估其与实际情况的一致性获得二进制反馈。对于错误的样本,引入LLM 为每一次迭代生成一个口头反馈。

图片

对于每一次迭代,每个反思代表LLM从失败中学到的教训,将其表示为一组反思,连同原始输入再次输入LLM ,以生成下一次迭代的价格变动和解释。

图片

通过这个过程,能够获得每个成功的反思所对应的正确和错误回答的一对。分别将其定义为和,用于后续模块预测股票走势。

3. 自我预测模块:利用PPO训练优化预测能力

自我预测模块使用自我解释模块构建的数据样本微调LLM,以便在测试期间生成最可能的股票预测和解释。具体流程如图所示:

图片

  1. 收集演示数据:从初始迭代中的正确预测中获取的,没有相应的“错误”回答。这些样本用于使用监督微调(SFT)方法训练一个监督策略。

  2. 收集比较数据:其中包含每个结构化输入的配对正确和错误回答和。是模型成功反思的正负样本对,用于训练一个奖励模型,为正确的回答给予更高的奖励分数。

  3. 使用有监督的策略初始化模型,然后利用它为整体数据集中随机选择的样本生成预测。接下来,奖励模型用于为每个回复生成奖励。通过最大化总体奖励来优化PPO模型。

图片

在推理过程中,首先使用预训练的LLM对无结构化输入文本进行总结。然后,使用训练好的策略从总结的事实生成下一天的预测。对于生成预测,使用一个最佳采样器,在生成个响应之后,使用奖励模型的分数选择最佳响应。

实验设计

1. 数据集构建

本文遵循ACL18 StockNet数据集的收集方法,原始数据集的持续时间跨越2014年至2016年,作者又采集了2020年至2022年的更新版本。选择了11个行业中市值最高的前5只股票,共计55只股票。股价数据从Yahoo Finance收集,而推文数据则通过Twitter API获取。由于每天的推文数量庞大,作者采用了BERTopic聚类来识别每天的代表性推文,这些推文将作为所有模型的文本输入。

2. 评估指标

本文采用预测准确性和Matthews相关系数(MCC)作为评估指标,用于二元股票分类任务。准确性指标衡量模型预测的准确度,而MCC则考虑了真正例和假正例的比率,是一个更全面的性能指标。此外,还通过定性分析来评估模型生成解释的质量。

实验结果

1. 预测准确性

在预测准确性方面,SEP框架经过实验验证,能够在预测准确性和MCC方面超越传统深度学习和LLM方法,如表1所示。

图片

在使用GPT生成的解释进行微调的SEP模型中,预测准确性比最强基线(GRU+Attention)提高了2.4%。

在MCC指标上,SEP模型在所有设置下都优于所有模型,展示了模型在考虑随机猜测后理解自然语言文本对股票走势影响的真实能力。

2. 解释质量的提升

除了生成更好的预测外,使用LLM而不是传统深度学习方法的一个自然优势是它们能够为预测生成解释。而SEP模型在使用自我反思数据微调后,相比一般的LLM能够更加果断地权衡新闻信息,给出质量更高的解释。

作者创建了一组解释质量指标,并使用GPT-4对样本进行评分。这些指标包括与股票运动的相关性、财务指标、全球和行业因素、公司发展、时间意识、正负信息的平衡、情境理解、清晰度和连贯性、信息一致性以及对更新的敏感性,对比结果如下表所示,可以看到SEP模型在所有指标上都取得了最高分。

图片

组件效能分析:各模块对SEP框架性能的贡献

SEP有三个核心组件:总结、解释‘预测’模块。这些模块共同构成了SEP框架,它们各自的功能和对整体性能的贡献是不可或缺的。

1.总结模块

通过摘要,模型能够提取出最关键的信息,为后续的预测和解释提供了坚实的基础。作者将SEP与未经总结和经过总结的输入文本进行比较,还比较了分享最多前30篇文本和随机抽取30篇文本之间的信心量的影响,如下表所示:

图片

  • 使用最常分享的文本要比随机抽样更好。

  • 总结的文本提供了更好的结果。这也表明总结过程没有丢失任何可能导致退化的重要信息。

  • 总结时删除一些非信息性的文本,可以提高表现。

2.解释模块

解释模块的目标是生成清晰的股票预测解释,并通过迭代的自我反思过程来提炼这些解释。

为了调整LLM以产生预测和解释,解释模块必须首先通过二进制反馈和自省尝试生成正确注释的样本。为了展示其效果,作者绘制了每次反思迭代后生成的“决定性”和“正确”预测数目的变化百分比,如下图:

图片

可以看到随着多次自反思迭代,模型生成了越来越多的明确正确的注释样本。这凸显了解释模块在生成标注样本方面的有效性,而无需人工专家的帮助。

3.预测模块

预测模块的目标是通过使用PPO算法微调LLM,以便在测试期间生成最可能的股票预测和解释。

作者对每个变体删除了一个附加组件,即在推理中没有𝑛-shot采样[SEP(1-shot)];没有使用PPO增强学习[SEP(no PPO)];以及没有解释[SEP(binary)],即简单地将LLM调整为进行二元的上升/下降预测。

图片

  • 在指令调整过程中增加解释组件,即从SEP(binary)到(binary),模型平均改进了6.9%。

  • PPO强化学习的加入显著提高了模型的预测准确性,平均改进了14.8%,这突显了预测模块在提升SEP框架性能中的关键作用。

综上所述,SEP框架中的每个组件都对性能有着显著的贡献。总结模块通过提取关键信息减少了输入的噪声,解释模块通过自我反思生成了高质量的训练样本,而预测模块则通过PPO训练提高了预测的准确性。这些组件的协同工作使得SEP框架在股票预测任务中表现出色。

跨任务泛化能力:SEP框架在投资组合构建任务中的应用

SEP框架不仅在股票预测任务中表现出色,其泛化能力也在投资组合构建任务中得到了验证。

对于投资组合任务,采用与上述相同的方法来微调LLM。输入信息是每天股票篮子的所有生成解释。对于这个实验任务,仅筛选出具有正预测的股票,以减少LLM需要评估的股票数量,并防止产生负权重。然后,提示LLM根据每个给定股票的前景生成投资组合权重,如下图所示:

图片

在每次自我反思迭代中,向反思型LLM提供投资组合权重和对应的总体利润,引导其思考如何提高预测准确性来增加利润。基于这些反思,LLM生成新的权重。接着,将新旧权重输入PPO训练器,选择利润更高的权重作为优化方向。

结果如下表所示:

图片

SEP模型在多个投资组合性能指标上表现出色,包括总收益、累计收益、收益的标准差和年化夏普比率。这些结果表明,SEP框架能够有效地将股票预测任务中学到的信息量化权衡,用于投资组合构建任务。

结论

本文研究了利用自反思大型语言模型进行股市预测的可解释性任务,并提出了SEP框架。该框架结合自反思代理和近端策略优化(PPO)技术,让LLM自主学习生成可解释的股票预测。实验结果显示,SEP框架在预测准确性和生成解释的质量方面均优于传统方法和LLM。在投资组合构建任务上的测试也证明了其泛化能力。

未来研究可关注减少SEP框架的累积误差、利用更多数据源提高预测质量,并改进股票解释的评估指标。

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

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

相关文章

使用ffmpeg提取视频中的音频并保存为单声道wav

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 $ ffmpeg -i C0439.MP4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable…

华为OD机试 - 垃圾信息拦截(Java 2024 C卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&a…

网络安全之渗透实战学习

前言 本次渗透以SMB共享之SCF文件攻击为突破点,利用burp编码爆破Basic Authorization认证、smb连接的多种方法、windows用户的NTLM值破解方法、evil-winrm的运用、windows主机信息收集工具、msf运行powershell脚本、远程运行powershell脚本、PrintNightmare漏洞提权…

内存抖动导致shared pool资源征用分析

业务hang住,后台查看事件都是“latch: shared pool” 根据堵塞的blocking_session检查sid为1873的会话 发现都是MMAN进程堵塞,我们都知道Oracle的MMAN进程(Memory Manager Process,内存管理进程)会根据系统负载的变化和…

2024.3.11 C++作业

1、提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {char str[20];cout << "please enter the str:";gets(str);in…

2024 年广东省职业院校技能大赛(高职组) “云计算应用”赛项样题⑤

2024 年广东省职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项样题⑤ 模块一 私有云&#xff08;50 分&#xff09;任务 1 私有云服务搭建&#xff08;10 分&#xff09;任务 2 私有云服务运维&#xff08;25 分&#xff09;任务 3 私有云运维开发&#xf…

基于云效构建部署NodeJS项目到ACK

准备工作 01、编写Dockerfile文件可以根据不同的环境&#xff0c;新建不同的Dockerfile文件&#xff0c;比如Dockerfile-PROD # Deliver the dist folder with NginxFROM nginx:stable-alpine ENV LANGC.UTF-8 ENV TZAsia/ShanghaiCOPY dist/ /usr/share/nginx/html COPY ngi…

Redis中AOF数据持久化

AOF介绍 AOF&#xff08;Append Only File&#xff09;持久化&#xff1a;以独立日志的方式存储了 Redis 服务器的顺序指令序列&#xff0c;并只记录对内存进行修改的指令。 当Redis服务发生雪崩等故障时&#xff0c;可以重启服务并重新执行AOF文件中的指令达到恢复数据的目的…

Windows系统中安装docker及镜像加速的配置

文章目录 一.安装wsl二.下载docker desktop三.更换Docker镜像引用出处 一.安装wsl 在安装wsl之前&#xff0c;先在Windows中配置WSL环境,步骤很简单&#xff0c;按照以下文章进行 Windows10/11配置WSL(Ubuntu)环境 以管理员身份打开Windows PowerShell&#xff0c;执行以下命…

怎样将PPT转成文本格式?PPT文本一键生成文本格式 工作经验分享

在日常工作和学习中&#xff0c;我们经常需要将PPT文件转换为文本格式&#xff0c;以便更好地进行编辑、搜索和分享。下面&#xff0c;我将介绍2种常见的PPT转文本格式的方法&#xff0c;帮助大家轻松实现这一需求。 方法一、使用汇帮PDF转换器软件里的“PPT文件操作”菜单进行…

Linux面试题汇总!附答案详解!学习提升必备!(30w+收藏)

Linux 概述 什么是Linux Unix和Linux有什么区别&#xff1f; 什么是 Linux 内核&#xff1f; Linux的基本组件是什么&#xff1f; Linux 的体系结构 BASH和DOS之间的基本区别是什么&#xff1f; Linux 开机启动过程&#xff1f; Linux系统缺省的运行级别&#xff1f; L…

Python docx学习笔记

个人学习笔记。 1 工具介绍 python-docx 是用于创建可修改 微软 Word 的一个 python 库&#xff0c;提供全套的 Word 操作&#xff0c;是最常用的 Word 工具。 1.1 基本概念 Document&#xff1a;是一个 Word 文档 对象&#xff0c;不同于 VBA 中 Worksheet 的概念&#xf…

带你搞清楚strtok函数和strerror函数的使用!

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

Linux 多进程开发(上)

第二章 Linux 多进程开发 2.1 进程概述2.2 进程状态转换2.3 进程创建2.4 exec 函数族2.5 进程控制 网络编程系列文章&#xff1a; 第1章 Linux系统编程入门&#xff08;上&#xff09; 第1章 Linux系统编程入门&#xff08;下&#xff09; 第2章 Linux多进程开发&#xff08;…

python 基础知识点(蓝桥杯python科目个人复习计划62)

今日复习内容&#xff1a;做题 例题1&#xff1a;付账问题 问题描述&#xff1a; 几个人一起出去吃饭是常有的事&#xff0c;但在结账的时候&#xff0c;常常会出现一些争执。 现在有n个人出去吃饭&#xff0c;他们总共消费了S元&#xff0c;其中第i人带了ai元。幸运的是&a…

关于仅销售预包装食品的食品经营者备案有关事项的通知

江北新区、各区市场监督管理局、行政审批局&#xff1a; 为贯彻落实《中华人民共和国食品安全法》第三十五条规定和国务院《关于深化“证照分离”改革进一步激发食品安全发展活力的通知》精神《市场主体》&#xff08;国发[2021]7号&#xff09;&#xff0c;现将仅销售预包装食…

ModuleNotFoundError: No module named ‘serial.tools‘

解决以上报错的方法&#xff1a; 1、大家在使用以下代码时&#xff1a; port_list list(serial.tools.list_ports.comports()) 会出现报错&#xff1a; ModuleNotFoundError: No module named serial.tools; serial is not a package 这个时候我们应该先安装serial 然…

Codeforces Round 933 (Div. 3)C:Rudolf and the Ugly String

题目链接&#xff1a;Dashboard - Codeforces Round 933 (Div. 3) - Codeforces 解题思路&#xff1a; 解题思路&#xff1a; 题目大概意思是字符串中最少去掉几个单词可以使字符串变漂亮&#xff0c;其实只要找“map"和”pie“这两个单词数量&#xff0c;注意判断&quo…

19、deque赋值操作

#include <iostream> using namespace std; #include <deque>void printdeque (const deque<int>& d) {for (deque<int>::const_iterator it d.begin(); it ! d.end(); it ){//*it 100 容器中的数据不可修改cout << *it << " &…

CAN一致性测试:物理层测试之位时间测试

从本周开始结合工作实践&#xff0c;给大家总结CAN一致性相关的测试 包括&#xff1a;物理层、数据链路层、应用层三大块知识点 CAN一致性测试:物理层测试之位时间测试 试验目的&#xff1a;测试控制器输出的差分电平位信号的特征。 试验依据&#xff1a;GMW3122&#xff0…