<论文>时序大模型如何应用于金融领域?

ops/2025/1/16 11:25:38/

一、摘要

        本文介绍2024年的论文《Financial Fine-tuning a Large Time Series Model》,论文探索了主流的时间序列大模型在金融领域的微调应用实践,为时序大模型的领域微调提供了参考。

84b3d4bc03fb461d8cee72c4452f6c5c.png

译文:

        大型模型在自然语言处理、图像生成以及近期的时间序列预测方面展现出了前所未有的能力。这就引出了一个问题:将市场价格视为时间序列,能否用大型模型来预测市场?在本文中,我们通过评估最新的时间序列基础模型 TimesFM 在价格预测方面的性能来回答这个问题。我们发现,由于价格数据的不规则性,直接应用 TimesFM 效果不佳,并提出针对价格预测任务在金融数据上对 TimesFM 进行微调。这是通过在包含 1 亿个时间点、涵盖不同金融工具且具有小时和日粒度的价格数据上对最新的时间序列基础模型 TimesFM 进行持续预训练来实现的。微调后的模型在价格预测准确性上比基线模型更高。我们在各种金融市场中对模型进行模拟交易,结果表明该模型在收益、夏普比率、最大回撤和交易成本等方面均优于各种基准。

二、核心创新点

        首先,我们需要了解一下论文所使用的时序大模型,即TimesFM。在TimesFM中,输入的时间序列会被加入到长度为eq?input%20%5C_%20patch%20%5C_%20len%20%3D%20l_%7Bi%7D的补丁中,接着由堆叠的多层Transformer层进行处理,从中预测出包含输出补丁长度为eq?l_%7Bo%7D的时间序列。这些预测的结果使用MSE进行评估:

eq?Train_Loss%20%3D%20%5Cfrac%7B1%7D%7BN%7D%20%5Csum_%7Bj%3D1%7D%5E%7BN%7DMSE%28%5Chat%7By%7D_%7Bl_%7Bi%7Dj+1%3Al_%7Bi%7Dj+l_%7Bo%7D%7D%2Cy_%7Bl_%7Bi%7Dj+1%3Al_%7Bi%7Dj+l_%7Bo%7D%7D%29

        TimesFM作者通常将eq?l_%7Bi%7D设置为32,eq?l_%7Bo%7D设置为128,且建议eq?l_%7Bo%7D%3El_%7Bi%7D以仅解码器模式来训练模型。在此基础上,本文作者做出了两处的训练改动。

1e8bedae31c049adacd46456daf8b64f.png

1、损失函数

        作者认为,原始的MSE损失在金融价格数据上进行训练时会存在一系列的缺陷,例如倾向于大规模数值的偏差(平均价值为1000美元的股票指数在训练中的权重会比平均价值为0.0001BUSD的加密货币的权重更大),同时还容易受到市场崩盘事件导致的不稳定性影响。由此,作者对原始时间序列应用一个对数变换,基于变换后的序列来进行预测,再在这些取对数后的序列上计算MSE:

eq?z%20%5Cleftarrow%20log%28y%29

        其中,z作为模型的输入来使用,有:

eq?Train_Loss%20%3D%20%5Cfrac%7B1%7D%7BN%7D%20%5Csum_%7Bj%3D1%7D%5E%7BN%7DMSE%28%5Chat%7Bz%7D_%7Bl_%7Bi%7Dj+1%3Al_%7Bi%7Dj+l_%7Bo%7D%7D%2Cz_%7Bl_%7Bi%7Dj+1%3Al_%7Bi%7Dj+l_%7Bo%7D%7D%29

        对于y的微小变化,计算z=log(y)的MSE等同于计算百分比MSE,而对于y的较大变化,则对数函数的逐渐变缓会导致z的变化小于成比例的变化,从而稳定了训练过程。

2、掩码机制

        作者采用了已有的时序掩码机制,但为了能够随机采样时间序列的起点和重点,进行了以下操作:首先将时间序列分解为长度不超过max_context_length+output_length的序列,然后从[最小上下文长度,最大上下文长度]中随机采样一个eq?t_%7Bend%7D并从[0,eq?t_%7Bend%7D-min_context_length]中再随机采样一个eq?t_%7Bstart%7D。由此,[eq?t_%7Bstart%7Deq?t_%7Bend%7D]中的点就是输入,模型在训练过程中预测后面长度为output_length的时间点并评估损失。

        在上述两个策略下,作者实现了在1小时内完成80M个时间点的TimesFM微调且期间没出现任何的NaN损失。

 


http://www.ppmy.cn/ops/150537.html

相关文章

opengauss数据库的日常运维操作

主从切换 1.1 在从节点执行如下命令 gs_ctl switchover -D /opt/huawei/install/data/dn cm_ctl switchover -n 1 -D /opt/huawei/install/data/dn1.2 查看集群状态 gs_om -t status –detail1.3 如果主节点宕机,可以使用如下命令进行failover gs_ctl failover …

Cyber Security 101-Offensive Security-Shells Overview(shells概述)

了解不同类型的 shell。 任务1:房间介绍 介绍 网络安全中的 shell 被攻击者广泛用于远程控制系统,使其成为攻击链的重要组成部分。在这个房间里,我们将探讨进攻性安全中使用的不同 shell、它们之间的区别以及它们的用例。这些知识有助于提高…

x86-64架构的Linux服务器上运行.NET 6.0应用程序,安装runtimes

在x86-64架构的Linux服务器上运行.NET 6.0应用程序,你确实只需要dotnet-runtime-6.0.28-linux-x64.tar.gz这个运行时压缩包。以下是搭建.NET环境的步骤: 下载.NET运行时 首先,确保你已经下载了dotnet-runtime-6.0.28-linux-x64.tar.gz文件。你…

Python海龟绘图库:从入门到精通 - Python官方文档(三万字解析!)

turtle --- 海龟绘图 源码: Lib/turtle.py 概述 海龟绘图是对 最早在 Logo 中引入的受欢迎的几何绘图工具 的实现,它由 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 在 1967 年开发。 入门 请想象绘图区有一只机器海龟,起始位置在…

在AWS云平台上实现多架无人机自主飞行控制和管理的系统设计和实现代码

为了为低空飞机设计和实施自主飞行控制系统,使其能够远程规划和监控飞行路径、设置目标位置以及通过 AWS 云管理多架飞机,我们需要集成几个关键组件。 该技术栈将低级控制与实时处理、基于云的数据管理和高级路径规划算法相结合。您可以根据真实飞行数据…

pytorch小记(一):pytorch矩阵乘法:torch.matmul(x, y)

pytorch小记(一):pytorch矩阵乘法:torch.matmul(x, y)/ x y 代码代码 1:torch.matmul(x, y)输入张量:计算逻辑:输出结果: 代码 2:y y.view(4,1)…

苹果手机ios脚本用按键精灵文件配置代码

以下是一个大致的思路来使用按键精灵在 iOS 手机上实现文件配置导出功能(需要注意的是,在 iOS 上使用按键精灵等类似工具要确保符合苹果应用的相关使用规范和权限要求哦),但实际操作中可能会受限于 iOS 系统的封闭性以及应用本身的…

Golang概述

文章目录 1. 什么是程序2. Go语言的诞生小故事2.1 Go 语言的核心开发团队--三个大牛2.2 Google 创造 Golang 的原因2.3 Golang 的发展历程 3. Golang 的语言的特点 1. 什么是程序 程序:就是完成某个功能的指令的集合。画一个图理解: 2. Go语言的诞生小故…