结合金融数据和新闻文章使用大型语言模型预测股票价格变动

晚上看到一篇研究股票预测的论文,结合财务数据(如财务报表)和文本新闻,使用预训练的大型语言模型(LLMs)进行市场运动预测。采用检索增强技术,将相关新闻片段与公司财务指标结合,使用零、二、四次示例设置提示LLMs。数据集包含20家高交易量公司的新闻文章、历史股价和财务报告数据。这里记录下论文的阅读记录,感兴趣的话可以参考一下,如果想要直接阅读原英文论文的话可以移步这里,如下所示:

摘要

预测金融市场和股票价格变动需要分析公司的表现、历史价格变动、行业特定事件以及社会媒体和新闻报道等人为因素的影响。我们假设财务报告(如损益表、资产负债表和现金流量表)、历史价格数据和最近的新闻文章可以共同代表上述因素。

我们将表格形式的金融数据与文本新闻文章结合起来,并使用预训练的大型语言模型(LLMs)来预测市场变动。最近的研究表明,LLMs能够执行表格和文本分类任务,因此它们成为我们分类多模态数据的主要模型。我们利用检索增强技术来检索和附加与公司相关的财务指标的相关新闻文章片段,并在零样本、两样本和四样本设置中提示LLMs。我们的数据集包含从不同来源收集的新闻文章、历史股票价格和20家在股市中交易量最高的不同行业的公司的财务报告数据。我们使用了最近发布的语言模型作为基于LLM的分类器,包括GPT-3和4,以及LLaMA-2和3模型。

我们引入了一种基于LLM的分类器,能够使用表格(结构化)和文本(非结构化)数据的组合执行分类任务。通过使用该模型,我们预测了数据集中给定股票价格变动的加权F1得分为8.5%和59.1%,以及3个月和6个月期间的Matthews相关系数为0.175。

金融股票价格变动预测,大型语言模型,信息检索,检索增强生成

I 引言

随着语言模型的进步及其在金融行业的广泛应用[1],这些模型现在被应用于金融领域的各种用途。这些用途包括文本分类任务[2, 3],例如新闻的语义分析[4]。投资者还使用ChatGPT等语言模型来增强他们的财务理解,并且有关于金融聊天机器人和微调LLMs进行财务咨询的研究[5, 6]。

预测市场趋势和做出明智的投资决策一直是金融领域的重要任务。LLMs在这一领域的一个用途是预测价格在未来是上涨还是下跌,即价格变动预测[7, 8, 9]。为此,不同的研究利用各种数据来源来预测价格变动。

股票未来的表现通常受当前所有可用信息的影响[10]。许多因素,包括公司表现、行业动态、人类反应、社交媒体、新闻以及更广泛的政治和经济变化,都会影响市场行为。我们的目标是尽可能多地收集信息,以代表这些因素进行股票价格变动任务。这些信息可以是表格或文本格式;因此,我们的目标是设计一个能够使用不同格式数据的LLM模型进行股票价格变动分类。我们还认为,使用不同来源的信息提示LLM可以防止幻觉。

自然语言处理研究的主要趋势已经转向寻找正确的方法来利用预训练的LLMs解决问题,而不是训练新模型。此外,微调语言模型需要大量时间、计算资源和大数据集,因此我们将在零样本到四样本设置中进行此分析。

以下段落将包括我们的信息来源:

财务因素:美国每个上市公司都必须按照证券交易委员会(SEC)的规定在每个季度末披露其财务信息,其中10-K报告作为详细说明公司财务表现、风险和运营洞察的综合文件,按季度报告。为了包括公司的表现,我们在分析中包含了财务报告(即10-K文件)中的数据。

历史价格:公司历史价格变化的趋势可以指示潜在的未来变动,因此历史价格数据对价格变动预测很重要。

新闻:投资者经常参考社交媒体和新闻,这些因素显著影响他们的投资行为。新闻故事是社交媒体上最容易获取的内容类型;因此,我们将新闻文章中的信息作为分析中的一个信息来源。我们使用检索方法从新闻中提取信息,总结并根据相关性进行排序,以提供给模型。

公司行业和服务/产品:公司的行业和服务/产品很重要,因为不同的因素可以影响一个行业或一种服务/产品。我们将公司的行业和服务关键词作为输入进行分析。

在我们的方法中,我们使用上述信息提示预训练的语言模型。我们利用一个假设的用户查询来检索特定公司特定时间的相关信息。为此,我们收集了20家高交易量股票的新闻文章和财务数据。我们的模型和数据将在本研究论文发表后公开。

II 文献综述

提示LLMs

我们现在可以提示语言模型执行各种任务,分类是LLMs能够解决的重要任务。它们不仅能够分类文本数据,还能够分类表格数据,甚至在少样本设置中[11, 12]。在金融领域,提示语言模型已被用于任务,如语义分析[13, 14, 15]。

除了零样本提示外,我们还可以通过在提问前提供一些任务示例及其预期结果来提高语言模型的性能[16]。这种方法称为少样本提示,不涉及训练过程,但已被证明有助于语言模型理解任务及其输入和预期输出的分布。

Lewis等人[17]通过引入检索增强,表明在提示中添加上下文信息可以提高模型准确性并防止幻觉。Kong等人[18]和Pasunuru等人[19]分别提出了关键词提取和抽象摘要的检索增强方法。我们研究了这些方法并改编了它们的概念,以开发我们自己的检索增强方法。

股票价格变动

传统方法[20, 21]通常使用表格分类格式和机器学习算法,如支持向量机、决策树和前馈神经网络。例如,Weng等人[20]使用了广泛的功能,包括关于公司的Google新闻文章数量。后来的研究转向使用顺序神经网络(如LSTM和GRU)以及一些包含CNN网络[22, 23, 24]的架构进行预测和变动分类。

最近的研究探索了使用大型语言模型预测价格变动[7, 25, 8]。Wang等人[7]介绍了LLMFactor模型,该模型将历史价格数据与新闻文章结合,提取关键词、因素和情感,并在提示中提供以增强分析。类似地,Tong等人[8]结合了新闻和历史价格数据,采用了一种利用一系列"专家"(技术专家、语义专家和人类专家)分析股票相关特征的策略。他们的方法涉及根据市场条件和专家意见生成看涨和看跌的理由,以做出最终决策。

III 数据集

我们从2021年至今收集了20家公司的数据。这些数据包括从10-K报告中收集的财务数据和新闻文章。公司是根据不同行业的交易量选择的,因此我们选择了在不同行业中交易量最大的公司。新闻网站和公司的列表以及新闻文章样本见表I。

新闻文章

我们使用爬虫收集讨论所选公司投资的文章内容,基于新闻文章的标签/关键词和标题中公司名称的出现。我们使用简单的搜索查询在新闻网站上提及特定日期和公司名称来爬取链接。随后,我们从生成的文章中抓取信息并构建数据集。从2021年10月到2024年1月,共提取了20家公司5000篇新闻文章。数据集样本见表I。

财务数据

财务数据来自10-K季度报告。这些报告包含运营/损益表、现金流量表和资产负债表,这些信息可在公司网站上获取。表II包含财务报告中一些信息的描述。

此外,我们在研究中包含了历史价格数据。我们不将历史数据视为时间序列数据。相反,我们通过包括过去6个月和12个月的价格变化来捕捉价格动量。

IV 方法论

检索方法

由于新闻文章数量众多且每个公司在给定日期有大量信息,我们需要找到一种方法从大量文章中提取重要信息。过滤和总结过程应能够检测新闻文章的相关部分并选择最相关的部分以供查询。

表I 数据集信息

表II 从损益表、资产负债表和现金流量表中提取的财务报告中可用财务数据的描述。

基于Sarthi等人[26]的方法,我们实施了分层总结方法。首先,我们根据标题、副标题和出版日期等关键元数据过滤新闻文章,搜索文章中的公司名称和指数代码。随后,我们继续总结选定的文章。为了比较,我们采用了抽象和抽取总结技术。对于抽取总结,我们使用OpenAI和Sentence-BERT嵌入对长度为三句话的新闻文章片段进行编码,并计算与用户查询的相似度。此外,对于抽象总结,我们利用GPT-3.5模型生成与用户查询最相关文章的摘要。图1展示了总结过程。

为了模拟用户查询,我们尝试了一系列不同的查询,例如:

  • *在_日期_投资_公司名称_公司。

  • *我应该在_日期_投资_公司名称_公司吗?

  • *_公司名称_公司在_日期_之后是看涨/上涨还是看跌/下跌?

表V展示了总结示例。文章片段可以来自一篇或多篇新闻文章。两种方法,OpenAI和Sentence BERT嵌入,可能产生相同的片段。此外,一种方法可以从同一篇文章中推荐多个片段。

根据我们的观察,片段的粒度会影响信息提取。较小的片段大小可能导致抽象的"投资/不投资"总结,而较大的片段大小可以提供更多解释。类似地,抽取总结可以突出提到股票价格变动的文本部分,而抽象总结可以包括文本中的其他信息。最后,我们决定使用OpenAI嵌入的抽取总结,片段大小为三句话,以检索更多相关信息。

提示生成和标注

提示格式在模型性能中起着至关重要的作用,因为信息的结构和顺序会显著影响模型生成准确响应的能力。我们尝试了不同的信息顺序和提示位置,例如将提示问题放在开头或结尾,并尝试了各种提示问题,直到找到效果最好的提示。

在收集新闻文章和财务数据后,我们的下一步是生成提示。每个提示包含公司产品及其行业的句子、最多6个最相关的新闻文章片段、前四个季度的财务特征,最后是提示问题。每个提示的标签将是提示问题中提到的日期之后未来三个月和六个月的二进制格式的前向回报。我们的提示通常平均约2500个令牌,因为它们包含来自多个来源的信息。提示样本见表III。

例如,如果提示问题是:"我应该在2022年7月投资苹果公司吗?"新闻文章将从2022年5月至6月采样,并将包含2022年6月之前最后四个季度的财务特征。此外,我们将根据股票在之后几个月的价格是否上涨(标记为1)或下跌(标记为0)来评估目标(在表II中称为前向回报)。

在我们的分析中,我们检查了语言模型在三个月和六个月前向回报的响应,以确定预测的最佳时间段。提示生成过程如图2所示。

公司一般信息:我们包含了一个关于公司产品、主要活动和所在行业的简短陈述。这一添加有两个目的。首先,股票价格通常受行业趋势影响,我们希望语言模型在生成响应时考虑这一背景。其次,由于提示设定在过去(例如,2022年2月的提示),目标结果已经发生。这引入了数据泄露的风险,因为语言模型已经在线训练了可用信息。因此,在提示生成过程中,我们将公司名称替换为占位符,如"公司"。然而,为了提供公司运营的必要背景,我们在提示开头包含了一个一般信息句子。

模型

我们使用了广泛的预训练语言模型。我们使用了Meta的LLaMA2 7B、13B和70B版本,LLaMA3 8B和70B版本,以及OpenAI的GPT-3.5和GPT-4模型。

值得注意的是,一些四样本学习的提示非常大,以至于超过了LLaMA2模型的最大输入令牌限制。因此,我们排除了LLaMA2在四样本分析中的使用。

V 实验设置

提示过程在零样本、两样本和四样本格式中进行。对于零样本学习,我们向语言模型提供一组包含用户查询、公司信息、一组生成的新闻文章和相应财务指标的提示。为了测试我们模型的预测准确性,我们准备了一组120个样本提示。然后,我们在两样本和四样本设置中重复相同的过程,向语言模型提供两个和四个带有答案的示例提示(如果股价下跌则为"[DOWN]",如果上涨则为"[UP]")。我们选择了样本,以便在两样本示例中每个类别有一个,在四样本示例中每个类别有两个,以便语言模型熟悉答案分布。

评估指标

最初我们使用准确率定义为​,反映了模型的整体正确性,但无法捕捉数据集不平衡情况下的性能。

我们测试样本的56.4%和70.1%的股票在接下来的三个月和六个月内价格上涨。精度(Precision)和召回率(Recall)等指标可以捕捉模型在每个类别中的性能。精度衡量每个类别预测的准确性,而召回率衡量预测的完整性。

WF1和MCC指标并不总是相互一致。虽然我们的主要关注点是WF1得分,但我们也在分析中讨论MCC结果,以进行全面评估。

表III 提示样本;在提示LLMs之前,公司名称(例如"亚马逊")将被替换为未知公司名称,如"公司X"。

表IV 股票价格变动二分类的负类精度(NP)、正类精度(PP)、负类召回率(NR)、正类召回率(PR)、加权F1得分(WF1)、Matthews相关系数(MCC)和准确率(ACC)指标显示在此表中。五个LLaMA模型和两个GPT模型用于预测未来3个月和6个月的价格变动。绿色和蓝色高亮显示分别基于WF1和MCC的每组N-shot学习中最佳模型。结果是10次运行的平均值,WF1子文本显示10次运行中WF1的标准差。

图3:单股票价格变动二分类的加权F1得分。结果显示了LLaMA和GPT模型在3个月和6个月预测的加权F1得分。

结果的统计显著性

由于LLMs是生成模型,我们使用其各自的API提示了第4.3节中列出的语言模型,并重复评估五次以确保结果的统计显著性。最后,我们计算了WF1得分的标准差,以评估模型在重复试验中的性能一致性。

VI 结果与讨论

在我们的结果和讨论中,我们主要关注加权F1得分(WF1),因为它提供了评估两个类别的平衡指标。结果见表IV和图3。三个月和六个月预测的最佳模型是GPT和LLaMA3-8B模型。我们观察到,在两样本和四样本学习中添加更多示例并没有显著提高这些顶级模型的性能。

语言模型的影响:图3中的结果表明,更高级的模型,如LLaMA3和GPT模型,优于LLaMA2模型。此外,LLaMA2模型随着参数数量的增加表现出性能提升。GPT-4模型通常在WF1和MCC上表现优于GPT-3.5模型,除了在零样本设置的三个月预测中,GPT3.5的WF1和MCC更好。

一个有趣的观察是,LLaMA3模型的性能在WF1上随着参数数量从8B增加到70B而下降,这一趋势在六种情况中有五种一致;这一观察在MCC上也是一致的。最后,GPT-4模型和LLaMA3-8B模型的WF1得分通常在同一范围内。

具体而言,三个月预测的最高WF1得分为0.592,由GPT-3.5在零样本设置中实现。对于六个月预测,GPT-4在两样本学习中实现了最佳结果,WF1得分为0.591%。

根据MCC结果,最佳模型仍然是LLaMA3和GPT模型。然而,三个月变动预测的最佳表现是GPT3.5在零样本设置(0.175)和GPT4在两样本设置(0.162)。对于六个月变动预测,最佳表现模型是GPT4在两样本学习(0.175)。

少样本学习的影响:表IV和图3中的结果表明,最佳模型的性能在WF1得分和准确率方面并没有显著提高。这可能是由于每个提示的平均长度为2500个令牌,导致在堆叠两个或四个示例时提示非常长。这种长提示可能会混淆语言模型,特别是像LLaMA2 7B这样的较小版本,在添加两个示例后性能下降。然而,LLaMA2 13B和70B模型在添加少样本学习后性能有所提高。

对于顶级模型如LLaMA3和GPT,LLaMA3模型通常随着示例数量的增加性能下降,除了LLaMA3-70B在四样本设置中实现了0.576的WF1得分,用于六个月预测。GPT模型表现出类似的趋势,尽管GPT-4在六个月前向回报中从零样本到两样本学习显示出改进(0.591 WF1)。

从零样本到两样本设置的性能提升,以及从两样本到四样本设置的性能下降,可以通过MCC结果检测到。通常,两样本模型是性能最高的模型。

标准差:WF1得分在10次运行中的标准差范围在0到0.033之间,表明结果在统计上是稳定的。不太先进的模型,如LLaMA2 7B,在重复试验中表现出更大的标准差,表明其性能不如更高级的模型稳定。

相关推荐
机器之心21 分钟前
质量超越o1,成本仅4%,UCSD张怡颖教授团队开源生成式AI工作流自动优化器
人工智能·后端
星辰@Sea30 分钟前
使用OpenCV和卡尔曼滤波器进行实时活体检测
人工智能·opencv·计算机视觉
Tronlongtech33 分钟前
基于OpenCV的拆分和合并图像通道实验案例分享_基于RK3568教学实验箱
人工智能·opencv·计算机视觉
算力魔方AIPC39 分钟前
PyTorch 2.5.1: Bugs修复版发布
人工智能·pytorch·python
Joyner201842 分钟前
pytorch中有哪些归一化的方式?
人工智能·pytorch·python
Niuguangshuo43 分钟前
PyTorch 实现动态输入
人工智能·pytorch·python
总有一天你的谜底会解开1 小时前
pytorch加载预训练权重失败
人工智能·pytorch·python
每天八杯水D1 小时前
python使用pdfplumber工具包加载pdf格式数据
人工智能·python·机器学习·pdfplumber·加载pdf数据
promising_xxx1 小时前
大语言模型微调与 XTuner 微调实战
人工智能·语言模型·自然语言处理
大道随心1 小时前
语言模型测试系列【11】
人工智能·语言模型·自然语言处理