前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基于『大语言模型』和『新闻数据』的股票预测研究

基于『大语言模型』和『新闻数据』的股票预测研究

作者头像
量化投资与机器学习微信公众号
发布于 2024-08-01 10:48:14
发布于 2024-08-01 10:48:14
4640
举报
作者: Tian Guo、Emmanuel Hauptmann

前言

量化投资依赖于从各种数据源(包括市场价格、经济指标、财务文本等)提取定量特征或信号,以构建和优化投资组合。近年来,由于自然语言处理(NLP)技术的发展,使用文本数据进行量化投资的趋势显著增长。特别是,大语言模型(LLMs)在各种语言理解和生成任务上展示了卓越的性能,并且微调技术允许将预训练的LLMs适应于量化投资。

本文专注于使用财务新闻进行股票预测以进行选股。传统使用财务新闻数据应用于选股方法涉及,如下图a所示,包括特征标注(例如,情感、主题、受欢迎程度等),提取特征(例如,训练财务情感分类模型),并通过统计分析或构建预测模型来验证提取特征的预测能力。这个过程可能是耗时的,并且需要额外的数据(例如,标记的财务情感数据)和持续的改进。

本文探索了通过微调LLMs使用新闻直接进行股票收益预测,如上图b所示:

1、我们设计了一个包含文本表示和预测模块的基于LLM的收益预测模型。

2、我们假设,仅包含编码器的和仅包含解码器的大型语言模型在预训练和微调阶段对文本序列的处理方式不同,因此它们的文本表示性能可能会有所差异;基于此,我们提出比较仅使用编码器的模型(如DeBERTa)和仅使用解码器的模型(如Mistral和Llama3)作为预测模型中的文本表示模块。

3、考虑到LLM生成的文本表示在Token级别,我们提出了两种简单的方法将Token表示集成到预测模块中:bottleneck表示和aggregated表示。

4、我们在真实的财务新闻和各种股票池上进行实验。除了评估预测误差外,我们还通过在样本外时期进行回测来评估基于收益预测构建的两种类型的投资组合。对仅包含编码器的和仅包含解码器的LLMs的实验,为识别适合不同投资策略和市场的文本表示提供了帮助。

具体介绍

下图为使用大模型基于新闻数据进行股票收益预测的流程:

我们知道大语言模型大部分是基于Transformer结构,其中又分为encoder-only(仅使用编码器部分),decoder-only(仅使用解码器部分)和encoder-decoder。本文中对encoder-only和decoder-only两类大语言模型的预测效果进行了对比。

Encoder-Only LLMs(编码器LLMs):

这类模型主要关注于学习输入文本的上下文嵌入(contextual embeddings)。它们通过预训练阶段的掩码语言建模(masked-language modeling)来实现这一目标。

在掩码语言建模中,文本序列中的一些标记(tokens)会被随机遮蔽(mask),然后模型的任务是预测这些被遮蔽的标记。这个过程使得模型学习到的每个标记的向量表示能够结合其左侧和右侧的上下文信息。

一个著名的例子是(BERTBidirectional Encoder Representations from Transformers),它通过这种方式生成输入文本的双向表示。

在预训练中,模型会看到如“[MASK]”这样的特殊标记,并尝试根据周围的上下文来预测这个位置原本的词。

Decoder-Only LLMs(解码器LLMs):

decoder-onlyLLMs在预训练中使用下一个词预测任务(next-token prediction task),它们被训练来生成文本,通过预测序列中下一个词来建模。

这类模型的预训练目标是自回归地(autoregressively)建模输入序列,即每个词的预测都依赖于之前已经看到的词。

为了模拟序列的第一个词,通常会在序列开始处添加一个特殊的开始序列标记(BOS,Beginning-of-Sequence token)。

一个例子是GPT-3(Generative Pretrained Transformer 3),它通过这种方式生成文本,并能够捕捉序列的流动性和连贯性。

作者还提到了两种将LLMs生成的标记级(token-level)向量表示整合到预测模块的方法:瓶颈表示(bottleneck representations)和聚合表示(aggregated representations)。这两种方法都旨在将LLMs生成的文本表示转化为能够用于预测股票回报的形式,但它们在如何整合序列信息方面采取了不同的策略。瓶颈表示通过一个单一的向量来捕捉整个序列的信息,而聚合表示则通过综合考虑序列中所有标记的信息来实现。论文的实验结果表明,这两种方法在不同的投资领域和不同的LLMs中表现各有优劣。

瓶颈表示(Bottleneck Representations):

1、这种方法的核心思想是在微调(fine-tuning)过程中,促使LLMs将整个文本序列的信息压缩成一个单一的向量表示。

2、实际操作中,通过在输入序列的末尾添加一个序列结束(End-of-Sequence, EOS)标记来实现。由于EOS标记在所有序列中都是相同的,它的向量表示将依赖于序列中的实际标记。

3、在微调过程中,EOS标记的向量表示被送入预测模块,并在训练过程中通过反向传播(backpropagation)来调整,以总结序列中实际标记的表示。

4、对于encoder-only LLMs,这种方法与预训练阶段的掩码语言建模任务一致,可能有助于更有效地总结序列级特征。

聚合表示(Aggregated Representations):

1、与瓶颈表示不同,聚合表示不是将信息压缩成一个单一的向量,而是允许预测模块综合考虑序列中所有标记的向量表示。

2、这种综合可以通过简单的方法实现,例如对所有标记的向量表示进行平均,或者使用更复杂的方法,如注意力机制(attention mechanisms)。

3、论文中选择了简单的平均方法,因为它不需要训练额外的参数,并且可以清晰地与瓶颈表示进行比较。

4、对于decoder-onlyLLMs,使用聚合表示可能会增加预训练和微调之间的差异,因为每个标记的表示是基于上下文和自身,而不是预训练中的掩码标记。

5、对于decoder-only LLMs,平均所有标记的表示可能会导致对输入序列中早期标记的偏见,因为在自回归设置中,早期标记会反复合并到后续所有标记的表示中。

实证结果

作者使用了2003年至2019年间的公司级财务新闻流数据,这些数据由一家金融数据供应商提供。每条新闻都包含一个或多个公司标识符,表示新闻主要关注的公司。测试范围为北美、欧洲及新兴市场。

模型训练和验证数据覆盖了2003年至2014年,剩余的数据用于样本外测试(out-of-sample testing)。模型训练使用了32的批量大小(batch size)、1e-5的学习率。微调LLMs时,所有线性层都应用了秩为4的低秩适应(Low-Rank Adaptation, LoRA)技术。所有模型都在两个A100 GPU上进行了10个epoch的训练。

此外,我们还将基于预测的投资组合与传统基于情感分析的投资组合进行了比较,使用了FinBERT和FinVader这两种情感分析方法来构建基于情感的投资组合,并使用相同的方法,但以情感值为排名标准。通过这些设置和指标,作者能够全面评估不同LLMs和表示方法在股票回报预测任务上的有效性。

上门的两幅图和表格揭示了在北美市场进行股票收益预测时,大语言模型(LLMs)的实证研究成果。研究表明,聚合表示法(Aggregated Representations)通常在生成增强多头仓位和长空头仓位投资组合表现的回报预测方面优于瓶颈表示法(Bottleneck Representations)。具体来说,在顶部分位数(如第9分位数)上,聚合表示法能够产生更高的回报,这对多头仓位投资组合有利。然而,瓶颈表示法在某些情况下,如Llama模型,也能展现出与聚合表示法相当的性能。

在不同模型的对比中,Mistral模型在多个投资领域展现出了更为稳健的表现,尤其是在使用聚合表示法时。DeBERTa模型虽然在某些情况下表现良好,但在大型投资领域中,其基于瓶颈表示法的预测模型表现不如基于聚合表示法的模型。Llama模型虽然在某些分位数上表现不俗,但在整体的一致性和稳健性方面似乎不如Mistral。

表格内容进一步证实了这些发现,显示基于预测的投资组合在年化收益和夏普比率上普遍优于传统的基于情感分析的投资组合。这表明,直接从LLMs的文本表示中派生出的回报预测是一个强有力的信号,能够有效地支持量化投资组合的构建,超越了传统的基于情感的分析方法。

上图是在北美市场对不同大语言模型(LLMs)的性能进行了深入的比较分析,揭示了研究的关键发现。首先,第一幅图展示了encoder-only和decoder-only LLMs在适合的表示方法下的表现。结果表明,decoder-only模型Mistral和Llama在预测高回报(第9分位数)和低回报(第0分位数)方面表现突出,这直接反映在多头仓位和长空头仓位投资组合的优越表现上。特别是,decoder-only模型在长空头仓位投资组合中的表现尤为显著,这强调了在投资组合的多头和空头两边都进行有效股票选择的重要性。

第二幅图进一步将基于预测的投资组合与基于情感分析的投资组合进行了对比。基于LLM的预测型投资组合不仅在年化收益和夏普比率上超越了情感型投资组合,而且在累积收益图表中也显示出更优的曲线。特别是,基于LLM预测的多空头仓位投资组合的收益曲线比多头仓位投资组合更为平滑,这表明空头部分有助于降低整体投资组合的波动性。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Springboot输出PDF文件
有个人(死需求)跑过来跟你说,这些都给我输出成报告,pdf格式的,所以就有了下面这个,做一下笔记,以后有用直接过来拿。在网上找了一下,发现大家都是在用itext。iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
用户3467126
2019/09/27
2.9K2
Springboot输出PDF文件
itext根据模板生成pdf(支持分页)
// 利用模板生成pdf public static void pdfout(Map<String,Object> o,String newPDFPath){ // 模板路径 File file = new File(""); String filePath = null; try { filePath = file.getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); } System.out.println(filePath); String templatePath = "C:/Users/pc/Desktop/990696 list -1.pdf"; String templatePaths = "C:/Users/pc/Desktop/990696 list -2.pdf"; // 生成的新文件路径 PdfReader reader; PdfReader readers; FileOutputStream out;
故久
2019/09/29
4K0
itext根据模板生成pdf(支持分页)
Itext根据模板生成pdf
public class PdfUtils { // 利用模板生成pdf public static void pdfout(Map<String,Object> o,String newPDFPath){ // 模板路径 String templatePath = "C:/Users/pc/Desktop/990696 list -1.pdf"; // 生成的新文件路径 PdfReader reader; F
故久
2019/09/29
3.2K0
Itext根据模板生成pdf
【iText5 生成PDF】纯Java代码实现生成PDF(自定义表格、文本水印、单元格样式)
​ 工作中遇到需要生成PDF。最终选择了iText。其他也有通过html再生成。感觉不太适合就用了代码实现。 使用iText 5.5.13.1版本。纯Java代码实现 1.自定义表格合并指定行列
小帅丶
2019/07/22
8.8K0
【iText5 生成PDF】纯Java代码实现生成PDF(自定义表格、文本水印、单元格样式)
iText5实现Java生成PDF文件完整版
最近项目中使用到Java实现导出PDF文件,经过一番参考研究最终决定使用itextpdf来实现,当然也可以参考 PDF Java类库:Spire.PDF for Java(https://www.e-iceblue.cn/spirepdfjava/create-pdf-in-java.html)。本文是使用第一种来实现的。
全栈程序员站长
2022/07/02
6.3K0
iText5实现Java生成PDF文件完整版
java(iText)工具包生成PDF
iText是一个非常著名的能够快速产生PDF文件的Java类库。支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合
王念博客
2019/07/25
10.3K1
SpringBoot + ITextPdf:高效生成 PDF 预览文件
其实公司之前的项目里是用到了帆软报表的,然而最近接了一个新项目,这个项目独立部署在甲方的独立环境中,组长的意思是不用再单独部署一套帆软报表,成本太大,用其他方式实现一下。虽然我不太理解成本大在哪儿,不过身为助理工程师,别管那么多,照着干就完事了。
程序员皮皮林
2024/10/08
8620
SpringBoot + ITextPdf:高效生成 PDF 预览文件
怎么通过itextpdf架包实现报表导出为pdf文件?
程序猿川子
2024/08/01
730
怎么通过itextpdf架包实现报表导出为pdf文件?
itextPdf工具类使用纪实-01
需求:将数据库中的一些表格信息导出并存入pdf文件。于是乎接触到了itextpdf工具类,帮助我们更好的编排内容显示的位置和文件的导出。
猫老师的叶同学
2023/03/01
1.1K0
itextpdf生成表格的常见用法
在前面的文章介绍了itextpdf基本用法和使用itextpdf生成图片,itextpdf还可以实现很多功能,非常强大,今天主要介绍如何使用itextpdf生成表格式的pdf,在实际项目中也非常常用,首先举一个非常简单的例子,熟悉一下生成表格的基本步骤和流程:
全栈程序员站长
2022/07/02
2K0
itextpdf生成表格的常见用法
从xls或xlsx文件转换为PDF文件的Java代码示例
本文介绍了如何使用Java代码将Excel文件转换为PDF文件,重点演示了如何使用iText库来实现这一功能。通过深入了解代码示例,您将能够轻松地将Excel文件转换为PDF,并且可以自定义字体、样式等。
默 语
2024/11/20
1780
spring-boot整合PDF打印
1.导入jar(一定要注意版本,踩过很多坑) <!--pdf依赖--> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.1</version> </dependency> <!-- https://mvnrepository.com/artifact/
用户5927264
2019/10/08
1.9K0
文件系统(01):基于SpringBoot框架,管理Excel和PDF
Excel一款电子表格软件。直观的界面、出色的计算功能和图表工具,在系统开发中,经常用来把数据转存到Excel文件,或者Excel数据导入系统中,这就涉及数据转换问题。
知了一笑
2020/02/17
1.7K0
文件系统(01):基于SpringBoot框架,管理Excel和PDF
Java输出Pdf(2021)集成springboot
1.首先,新建一个word文档,内容如下,另存为pdf格式,我的命名:mytest.pdf。
知识浅谈
2021/05/10
1.1K0
Java输出Pdf(2021)集成springboot
PDF文件添加二维码水印教程
maven配置iText的jar,主要不是所有私服都有iText的jar,maven仓库没有的,可以去https://mvnrepository.com/artifact/com.itextpdf/itextpdf/5.5.12 这里下载
SmileNicky
2019/06/15
1.5K0
itextpdf设置页码_word页码相同怎么改
项目需要样式比较复杂,刚开始因为时间比较紧所以采用了Itextpdf插件代码生成pdf ,实话说过程十分繁琐,因为pdf文件样式比较多,表格也比较多,各种的表格,还有就是页眉页脚页码都要自己找页面位置坐标但是又不能像html那样方便更改查看样式,只能改一点导出来看看合适不,然后再改再导出来看。 私下调研了很多,现在罗列一下我所用到的一些样式处理,希望可以帮助需要做这个功能的朋友少踩坑,少尝试,直接出完美pdf报告。
全栈程序员站长
2022/11/14
3.8K0
itextpdf设置页码_word页码相同怎么改
SpringBoot集成itextpdf动态生成pdf并展示
接上文SpringBoot集成markdown实现文档管理,对于表格的支持markdown不是特别友好,同时内部文档管理需要增加表格式api接口文档的功能,所以决定采用结合数据库存储与动态生成pdf借助目录结构展示的方式
code2roc
2023/07/19
1.1K0
SpringBoot集成itextpdf动态生成pdf并展示
java导出pdf模板_java模板导出PDF[通俗易懂]
一对一,点对点的给对应的地方写值,比如模板里面放了个name标识,在程序里把“张三”赋给name,那么输出的pdf里面name的地方就变成了张三,准确方便快捷
全栈程序员站长
2022/08/25
2.6K0
java导出pdf模板_java模板导出PDF[通俗易懂]
itext实现pdf自动定位合同签订
需求 需要实现如下效果(最终效果) 思考 需求方的要求就是实现签订合同,实现方法不限,但过程中又提出需要在签章的过程中把签订日期的文字也打上去,这就有点坑了~ 一开始的想法是想办法定位需要签名的位
老梁
2019/09/10
2.4K1
itext实现pdf自动定位合同签订
itext实现合同尾部签章部分自动添加,定位签名
使用的pom <!-- pdf处理 start--> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <vers
老梁
2019/09/10
1.6K0
itext实现合同尾部签章部分自动添加,定位签名
推荐阅读
相关推荐
Springboot输出PDF文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档