论文 | Financial Fine-tuning a Large Time Series Model
代码 | https://github.com/pfnet-research/timesfm_fin
一 本文概要
本文研究的问题是:能否将大型时间序列基础模型应用于金融市场价格预测。作者通过评估最新的时间序列基础模型TimesFM在价格预测任务上的表现发现,直接应用TimesFM在价格数据上效果不佳。因此,提出通过在包含1亿时间点的金融数据上对TimesFM进行微调,从而提高其在价格预测任务上的准确性。微调后的模型在预测准确性上优于基线模型,并在多种金融市场中通过模拟交易实验显示出在收益率、夏普比率、最大回撤和交易成本等方面优于多个基准模型,最高可以获得1.68的夏普比。
二 背景知识
1. 时间序列预测
时间序列预测是金融市场分析中的重要任务,旨在通过历史数据预测未来的价格走势。传统方法包括移动平均、自回归模型(AR)、条件方差模型(如GARCH)等。这些方法依赖于对市场动态的数学建模,能够捕捉价格趋势和波动性。随着神经网络架构的发展,RNN和LSTM等模型被广泛应用于价格分析,提升了预测能力。
2. Transformer模型
Transformer模型最初由Vaswani等人提出,广泛应用于自然语言处理和计算机视觉等领域。其核心在于自注意力机制,能够有效处理长距离依赖关系。近年来,Transformer模型被引入时间序列预测中,成为时间序列基础模型的一个重要方向。与传统RNN相比,Transformer在处理大规模数据和长序列时具有更好的性能。
3. 大型语言模型在时间序列中的应用
大型语言模型(如GPT-4)由于其强大的预训练能力,被尝试应用于时间序列预测。通过零样本学习能力,这些模型可以在无需大量特定领域数据的情况下进行预测。然而,最新研究质疑大型语言模型在时间序列预测中的有效性,指出其在金融数据上的表现不如专门训练的时间序列模型。
三 本文方法
本文的主要贡献包括:
-
数据集构建:为价格数据的微调收集并整理了包含1亿时间点的金融数据,覆盖多种金融工具和不同的时间粒度。
-
模型微调:在预训练的TimesFM模型基础上,采用持续预训练的方法对其进行金融数据上的微调,形成专门用于金融时间序列预测的基础模型。
-
训练方法改进:针对金融价格数据的不规则性,对损失函数和掩码策略进行了调整,以稳定训练过程。
-
模型评估:通过模拟交易实验评估微调后模型的性能,验证其在实际金融市场中的应用效果。
-
公开模型:公开了代码和模型权重,促进结果的可重复性和进一步研究。
1. TimesFM模型描述
TimesFM是一个基于解码器的2亿参数模型,训练于包含1000亿时间点的时间序列数据,任务为下一个值预测。输入时间序列数据被划分为长度为的补丁,通过堆叠的Transformer层进行处理,预测包含个时间点的输出。训练时采用均方误差(MSE)作为损失函数,公式如下:
作者通常设置和,并建议以在仅解码器模式下训练模型,同时最小化推理时所需的自回归步骤。训练过程中还应用了随机掩码策略,确保模型能够处理所有可能的上下文长度。
2. 微调方法
为了在金融数据上微调TimesFM,采用持续预训练的方法,即从预训练的TimesFM权重开始,继续在金融价格数据上进行随机梯度下降训练。训练过程包括以下两个主要改进:
A. 损失函数的调整
原始的MSE损失在金融数据上存在偏向大规模值和由于市场崩盘事件导致的训练不稳定性的问题。具体来说:
-
偏向大规模值:例如,平均值为1000美元的股票指数在训练中权重远大于平均值为0.0001美元的加密货币。
-
训练不稳定性:高价股票在经历超过99%的快速崩盘时,单步损失可能出现NaN,导致收敛失败。
为解决这些问题,本文对原始时间序列进行了对数变换,并在变换后的序列上计算MSE损失,公式如下:
然后,
对于的微小变化,计算的MSE等同于计算百分比MSE损失。而对于的较大变化,函数的缓和效应使得的变化不成比例,从而稳定训练过程。
B. 掩码策略的调整
采用与原TimesFM类似的随机掩码策略,通过随机选择时间序列的起始和结束点,确保模型在训练过程中能够预测不同长度的价格序列。具体方法如下:
为提高训练效率,时间序列被分割为长度最多为的序列。然后从中随机采样,再从中随机采样。选取区间的点作为输入,模型在训练时预测接下来的个点,并在这些点上计算损失。
通常设置,确保模型在有意义的(足够长的)示例上训练。随机掩码策略在批次和训练步骤之间变化,防止过拟合,提升模型的泛化能力。
通过上述策略,本文能够在1小时内在8个V100 GPU上完成对TimesFM的微调,训练过程中无NaN损失。
表I 微调所用数据的总结
表II 微调所用的超参数和架构设置
四 实验分析
1. 实验设计
本文的实验旨在验证微调后的TimesFM模型在金融市场价格预测中的有效性。实验包括以下几个部分:
-
数据集和设置:使用来自Yahoo Finance和Binance的股票、指数、外汇和加密货币价格数据,覆盖小时和日级别的粒度。训练集包含75%的数据,验证集25%,测试集为2023年及之后的数据,以避免未来数据的提前使用偏差。
-
模型训练:根据表II中的超参数设置,使用8个V100 GPU在1小时内完成微调,训练过程中无NaN损失。训练曲线见图2。
-
性能评估:通过准确率、宏F1分数和模拟交易实验评估模型性能,比较微调后的TimesFM与原始TimesFM及其他基准模型(随机模型和AR1模型)的表现。
2.关键实验结果
A.训练结果:损失曲线
如图2所示,微调过程中训练和验证损失曲线逐渐收敛,最终训练损失约为原始损失的70%。训练过程中由于随机掩码策略的应用,损失曲线存在一定波动。延长训练超过100个epoch或使用更大学习率可能导致过拟合,未来工作可考虑使用更大的训练集、更强的数据增强或提前停止策略以提升泛化能力。
图2 微调TimesFM的训练和验证损失曲线
B. 性能评估
1. 准确率
如图3所示,微调后的TimesFM在所有预测视窗长度(从2到128)上均优于原始TimesFM和随机基准模型。在7个预测视窗中,原始TimesFM在4个视窗上表现不及随机模型,而微调后的模型在所有视窗上均超过随机基准,表明其预测能力显著提升。
图3 微调后与原始TimesFM及随机模型的准确率对比
2. 宏F1分数
如图4所示,宏F1分数的评估结果与准确率一致,微调后的TimesFM在所有预测视窗上均优于原始模型和随机基准,进一步验证了其在类别不平衡情况下的有效性。
图4 微调后与原始TimesFM的宏F1分数对比
3. 模拟交易实验
通过基本策略和市场中性策略,评估微调后模型在实际交易中的表现。
- 基本策略:根据模型预测买入或卖出,结果如图5所示,微调后的TimesFM在不同视窗长度上均实现正收益,但波动较大。
图5 使用基本策略在S&P500股票上的实现PnL
- 市场中性策略:通过对基本策略进行均值归零,减少市场整体波动影响。结果如图6和表III、IV所示,市场中性策略在多个视窗长度上实现了更稳定和优异的表现,夏普比率最高达1.68。
图6 使用市场中性策略在S&P500股票上的实现PnL
此外,表III和IV展示了不同模型在夏普比率和中性成本上的比较,微调后的TimesFM在所有市场中均优于原始TimesFM和随机模型,尽管在货币和加密货币市场上表现不如AR(1)模型,但仍是唯一在所有市场中实现正收益的模型。
表III 各视窗长度下不同模型的夏普比率
表IV 各模型在不同市场中的夏普比率比较
表V 各模型在不同市场中的中性成本比较
3.结果分析
实验结果表明,微调后的TimesFM显著提升了价格预测的准确性和模型性能,在模拟交易中实现了更高的收益和更好的风险控制。具体来说:
-
准确率:原始TimesFM在多个预测视窗上表现不佳,甚至低于随机基准,而微调后的模型在所有视窗上均优于随机模型,验证了微调的有效性。
-
宏F1分数:与准确率一致,微调后的TimesFM在所有视窗上均表现优异,表明其在处理类别不平衡时的鲁棒性。
-
模拟交易:基本策略下,微调后的TimesFM实现了正收益但波动较大;市场中性策略下,模型实现了更稳定的收益和较高的夏普比率,尤其在S&P500市场上表现突出。此外,微调后的模型在所有市场中均实现了正收益,尽管在货币和加密货币市场上不如AR(1)模型,但仍表现优于原始模型和随机基准。
这些结果表明,通过在金融数据上进行微调,大型时间序列模型能够在金融市场价格预测中实现显著的性能提升。
五 总结展望
本文通过在金融价格数据上对大型时间序列基础模型TimesFM进行微调,显著提升了其在价格预测任务上的表现。微调后的模型不仅在准确率和宏F1分数上超越了原始模型和随机基准,还在模拟交易实验中实现了更高的收益和更好的风险控制,尤其在S&P500市场上取得了显著的夏普比率。未来研究可以进一步优化微调方法,例如通过平衡不同时间粒度和市场的数据集,或者采用更先进的损失函数来提升模型的泛化能力。此外,探讨如何在保证模型在金融市场预测性能的同时,保持其在通用时间序列预测任务上的表现,也是值得深入研究的方向。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。