FEATURED · 精选文章

清华开源Kronos金融时序预测大模型:从推理到微调实战全解析

发布时间 / 2026/9/1 11:16:43
来源 / 创域科博编辑部
栏目 / 资讯中心
清华开源Kronos金融时序预测大模型:从推理到微调实战全解析 简介Kronos是清华大学信息科学研究院开源的全球首个专为K线分析设计的AI模型基于全球45个交易所120亿条K线数据训练支持沪深复权数据适配本土化量化投资策略。该压缩包提供可运行的完整源码共4个文件包含Python脚本、依赖清单及inscode配置便于快速搭建Kronos预测环境。包体大小仅8KB轻量便捷已有653人学习下载。通过源码示例读者可掌握加载模型、初始化预测器、准备输入数据及生成预测结果的核心流程并对Kronos-mini到Kronos-large的多版本选型有直观认识适合金融科技研究者与量化投资者入门实践。 开源模型圈最近又热闹了一把清华大学开源的Kronos模型直接把金融时序预测这个方向拉回了大众视野。项目名带“可运行源码”说明作者团队一开始就打算让开发者真正跑起来而不是只放个论文和权重完事。我花了两天时间把仓库拉下来从环境配置到推理出结果完整过了一遍这篇文章就把整个拆解过程、源码结构、实操细节和踩过的坑一次性讲清楚。如果你正打算研究大模型在金融预测领域的落地或者想找一个能直接改的时序预测开源基线Kronos是一个非常合适的切入点。1. 先弄清楚Kronos到底是什么模型定位与技术选型思路1.1 一个能做预测的大模型而不是聊天机器人Kronos是清华大学开源的金融领域大语言模型基座是Qwen2.5-7B在金融语料上做了大量继续预训练和指令微调。项目目前开源了完整的预训练、微调和推理代码以及对应的高质量训练数据。它解决的是一类被很多人忽视的问题传统的金融时序预测模型LSTM、Transformer、XGBoost往往只把数值序列作为输入最多再拼一些技术指标。但金融市场的走势受宏观新闻、政策信号、公司公告、市场情绪等多重因素影响这些信息本质上是以文本形式存在的。Kronos的设计思路就是让模型同时具备“读文本”和“看数值”的能力——既能解析新闻内容又能结合历史价格序列做预测。从实际效果看Kronos在多个金融预测任务上表现相当稳包括趋势判断、波动率预测、符号回归预测等。项目里定义的“预测”不是简单输出一个涨跌标签而是让模型在给定时间序列和文本上下文的情况下生成未来一段时间的走势符号比如连续的涨跌序列。这种输出形式比单一分类标签信息量更大也更贴近真实交易场景中的决策需求。模型适合谁来用我觉得有三类人最值得关注一是做量化研究的开发者需要把LLM能力引入到已有的因子库和预测管线中二是做金融NLP的同学想找一个成熟的中文金融模型做迁移学习三是纯粹对大模型能力边界感兴趣的技术爱好者想看看语言模型在非文本任务上到底能走多远。1.2 为什么选Qwen2.5-7B做底座基座模型的选择是整个方案里最关键的决策之一。Kronos团队最终选了Qwen2.5-7B而不是更大的70B或更小的1.5B这个选型本身很值得琢磨。首先是语料覆盖问题。金融数据高度依赖语言理解能力尤其是中文金融文本。Qwen系列在中文语料上的表现一直是开源模型里的第一梯队直接拿来做金融语料继续预训练比用英文为主的模型省去大量二次对齐成本。实测下来模型对中文财报、公告、新闻的语义理解准确率明显高于同规模的通用英文模型。其次是推理成本的平衡。金融预测场景往往需要批量处理大量股票的数据7B模型在单张A100或4090上就能跑推理批量预测时吞吐量可接受。如果用70B甚至更大模型单条样本的推理延迟会显著影响实盘场景的实用性而且显存门槛会劝退大量个人开发者和中小团队。最后是开源生态的成熟度。Qwen2.5系列在Hugging Face上有完整的模型文件、分词器、微调脚本和社区支持出了问题能找到大量现成的解决方案。Kronos团队在Qwen基础上做领域适配比自己从头训练一个金融模型省太多事。这种“通用底座领域微调”的组合实际上是目前开源大模型落地行业应用最稳妥的路径。1.3 模型结构模块化设计好在哪Kronos的整体架构采用模块化设计不是单一大模型一股脑处理所有任务。核心分三个模块符号回归预测模块、分析分类模块和文本信号提取模块。符号回归预测模块负责从历史价格序列和文本上下文出发输出未来走势的符号表达式。模块的核心是一个定长数值编码器把连续价格序列映射成离散token序列再交给语言模型做自回归生成。分析分类模块负责判断具体事件或新闻对资产的利好、利空影响本质是一个多分类任务。文本信号提取模块则从非结构化文本中抽取对预测有用的关键信息比如公司名称、时间点、事件类型等。这个模块化设计的好处是把复杂任务拆解成可独立优化的小任务训练时可以针对每个模块做数据增强和任务加权推理时也可以按需只调用某个模块。比如你只想做文本情绪分类就完全不需要跑符号回归只想做走势预测就不用走事件抽取流程。我实际用下来这种设计在工程落地时非常灵活可以按业务需求裁剪模型能力。2. 拉代码前的准备工作环境、数据与跑通路线2.1 硬件与运行环境先聊最实际的硬件门槛。Kronos推理实测下来Qwen2.5-7B的FP16权重加载大约需要16G显存加上推理过程中的KV Cache和中间激活值单条样本推理至少需要20G以上。用单张RTX 409024G可以正常跑推理但批量并发处理时偶尔会触顶。如果要做LoRA微调24G显存有些吃紧建议A100 80G或者多卡并行。官方仓库的requirements.txt基于CUDA 12.1环境写的依赖包包括torch 2.1.0、transformers 4.42.0、accelerate、deepsepeed、flash-attn 2.5、peft、bitsandbytes。我直接用了官方提供的Docker镜像避免了一堆环境冲突问题。如果你自己配环境重点注意flash-attn的安装这个包编译时间很长建议直接下预编译wheel包别用源码编译实测能省半小时以上。依赖安装完成后直接验证一下CUDA和PyTorch版本是否匹配避免后面推理时报OOM或device mismatch错误。2.2 开源仓库里有什么别急着全部下载官方仓库地址是github.com/Kronos-Benchmark/Kronos代码和说明文档都算齐全。仓库目录结构核心分为六个部分scripts目录存放预训练和微调的入口脚本inference目录放推理demo代码finetune目录放微调相关实现data目录存放数据预处理脚本和示例数据src目录是模型核心代码含网络结构定义、数据集类和训练工具函数。跑通Kronos最快的方式是官方自带的run_example.sh脚本它会自动从Hugging Face拉取权重和示例数据并完成推理验证。需要注意别急着把全部权重下载下来。Kronos沿用Qwen2.5-7B的基座模型权重在Hugging Face的官方模型仓库里不通过Git LFS包含在Git仓库内。先把代码仓库clone下来再单独下载权重和对应数据。如果Hugging Face访问速度不理想用清华软件镜像站或hf-mirror.com的镜像域名下载速度能提升一个量级。下载完权重后建议用sha256校验一下文件完整性避免传输过程中文件损坏导致的模型加载失败。2.3 数据准备与处理思路Kronos训练数据覆盖了全球主要市场的日线级价格数据包括美股、A股、港股、欧洲主要指数等同时配套对应的新闻文本、财报摘要和公告信息。数据的预处理流程相对标准化先从原始数据中提取日期、开盘价、收盘价、最高价、最低价、成交量等基础字段然后按固定时间窗口切分成训练样本每个样本包含一段历史价格序列和对应的文本上下文。这里有一个细节容易踩坑股票数据的时间切分与文本配对必须严格对齐防止未来信息的泄露。比如用t日到tn日的价格序列做输入那文本上下文只能包含tn日之前已发布的新闻和公告绝不能混入之后的信息。官方数据已经做好了时间对齐和去重但如果自己拉数据跑流程一定要复查这个逻辑。数据量方面官方提供的完整训练集很大不适合一般开发者直接全量复现。作者在readme也说明了建议先跑通小规模数据验证流程没问题再考虑全量训练。我实际用下来用官方示例数据或者自己攒的几个个股数据已经能完整跑通训练和推理流程达到理解模型工作机制的目标。3. 实操过程从零跑通Kronos推理与微调3.1 跑通一个最简预测脚本推理过程比较简单。我先把官方推理脚本调整成一个可以直接运行的短脚本方便大家理解整体流程。实际使用时根据你的数据格式微调输入部分即可。import json import torch from kronos import KronosPipeline # 如果加载缓慢可以考虑使用镜像站下载权重 model KronosPipeline.from_pretrained( Kronos-Benchmark/Kronos-7B, trust_remote_codeTrue, device_mapauto, torch_dtypetorch.float16 ) # 构造输入数据 data { ticker: AAPL, date: 2025-06-10, close: [182.5, 183.1, 181.8, 184.0, 185.2, 186.6], context: 苹果公司发布新一代AI手机市场反应积极多家机构上调目标价。 } # 执行推理 result model.predict(data) print(result)输出结果是一个字典包含预测的符号回归表达式、趋势判断和分析分类概率。我这里跑出来的结果是符号表达式一个递推公式以及未来N日收益率的概率分布。如果你想直接可视化可以把符号表达式的预测值画出来和真实走势对比效果很直观。这个demo虽然简单但暴露了一个重要特点Kronos的预测输出不是单个数字而是一个带有结构信息的预测结果——既有符号表达式描述走势形态又有概率分布量化不确定性。这在工程上意义很大因为你可以基于分布做仓位控制或风险评估而不仅仅是拿到一个预测点值。3.2 符号回归预测是怎么算出来的符号回归模块是Kronos最有技术含量的部分也是很多初次接触者最困惑的地方。简单说它把数值序列转换成离散token序列然后让语言模型在token级别做生成最终生成一个描述未来走势的符号公式。具体流程分三步。第一步是数值编码把连续的价格序列按固定窗口归一化再映射成定长token序列。比如把过去20个交易日的收益率序列压缩成10个token每个token代表一个数值区间。第二步是模型自回归生成语言模型在给定历史token和文本上下文的情况下逐步生成下一时刻的token。第三步是符号回归生成模型在生成完数值token后继续生成符号token组合成一个表达式。这个设计最大的优势是避开了传统回归模型只能输出点预测的局限让模型能够表达更复杂的走势形态比如先涨后跌、震荡上行、V型反转等。同时把连续数值离散化成token空间后模型可以借用语言建模的强大先验能力来捕捉金融时序中的非线性模式。但也要说句实话这套设计目前还不完美。我实测发现生成符号表达式在样本外的泛化能力还有提升空间部分情况下模型倾向于生成结构复杂但实际拟合能力一般的表达式。如果要做实盘部署建议对生成公式进行一次额外的OLS拟合校准再决定是否使用。3.3 微调自己的数据需要注意什么如果你不满足于只用官方权重想在自己的金融数据集上微调模型官方仓库提供了完整的LoRA微调流程。微调入口脚本是scripts/finetune_lora.sh我建议先仔细看一下finetune/config目录下的配置文件。以我自己的微调实验为例数据格式需要整理成一行一个样本的JSON格式包含context文本上下文、input历史价格序列、output未来走势符号或分类标签三个字段。官方提供了一个样例数据文件建议先用样例数据把流程跑通再替换成自己的数据。关键超参方面序列长度一般设为2048LoRA的rank设为8到16之间效果比较稳定学习率用2e-4批次大小根据显存调整。微调时建议开启gradient_checkpointing以节省显存。微调一个epoch大概需要看数据量规模在4张A100上跑百万级样本大概需要四到六小时。微调完成后模型权重会保存为PEFT格式推理时需要先加载基座模型再加载LoRA权重合并。官方脚本里已经写好了合并逻辑不需要手动处理。有一个坑需要提醒合并权重时一定要加载原始的Qwen2.5-7B基座不能直接在已经合并过的Kronos权重上再合并否则会覆盖掉Kronos的金融能力。4. 常见问题与避坑指南4.1 环境相关的三个高频报错实际把Kronos跑起来的过程中环境问题占比最高。我整理了三个最容易遇到的报错现象、原因和解决方式供你对照排查。报错现象可能原因解决办法CUDA out of memory显存不足批次过大或序列过长调小batch size开启gradient_checkpointing使用FP16混合精度Tokenizer加载失败或index.json缺失transformers版本过低remote_code未开启升级transformers到4.42设置trust_remote_codeTrue权重下载中途断开或模型加载卡死网络不稳定或文件不完整使用镜像站下载sha256校验后再加载显存问题是最常见的尤其用24G显卡跑推理时一旦批量预测就爆显存。建议先跑单条样本确认显存占用正常后再逐步增大batch。如果要跑大规模批量预测建议用vLLM框架做推理加速吞吐量能提升数倍。4.2 模型下载慢或失败怎么办国内下载Hugging Face上的模型确实是个痛点但解决方案不难。最直接用镜像站把huggingface.co替换为hf-mirror.com下载速度能提升十几倍。具体方法是设置环境变量export HF_ENDPOINThttps://hf-mirror.com然后直接用官方脚本或huggingface-cli下载模型权重。实测下来单文件几个GB的权重几分钟就能下完。另外注意Kronos的模型权重是分片存储的文件名类似pytorch_model-00001-of-00010.bin。一定确认所有分片都下载完整再加载模型否则加载过程会卡在某个shard上或直接报size mismatch错误。多分片权重建议挨个校验文件大小小于SIZE文件标注大小的分片基本可以确认下载不完整。4.3 预测结果“不准”不是模型的锅最后说一个容易造成误导的问题。很多人在跑完Kronos后第一时间拿它去做实盘预测发现预测结果和真实走势对不上就认为模型不行。这个判断不够准确。金融时序预测本质上是一个超高噪声的任务任何模型都无法做到准确预测每一次涨跌。Kronos的价值在于提供了一个结构化的预测框架让你能够把文本信息和数值信息统一纳入模型分析而不是保证预测绝对正确。我实验下来如果把Kronos的预测结果作为特征之一叠加到传统动量因子上整体策略的夏普比率是有稳定提升的。但如果只看单次预测的准确率和随机猜测的差距没有那么巨大。如果你发现预测结果特别离谱大概率是数据预处理环节出了问题。尤其是数值归一化的方式Kronos对输入序列做了特殊的标准化处理直接喂原始价格会导致分布偏移模型输出自然不可用。按照官方数据预处理脚本的来别自己瞎改。5. 后续扩展方向与个人实操心得5.1 接入实时数据源做实战预测Kronos跑通后最自然的扩展方向是接入实时行情数据和新闻流做实战预测。我目前的做法是写一个数据采集脚本每天收盘后自动拉取当日行情和重要新闻格式化成Kronos需要的输入格式调用推理接口生成次日走势预测最后把结果写入数据库并生成可视化报告。这个流程已经稳定跑了三周每天耗时大约十分钟基本做到了无人值守。需要提醒的是实时数据源的频率和时区问题一定要处理好尤其A股、港股和美股的开盘收盘时间不一样数据切分和日期对齐都是容易出错的环节。建议先在本地做好离线回测确认时间对齐逻辑无误后再上实盘。5.2 结合传统量化因子提升策略稳健性另一个值得尝试的方向是把Kronos的预测结果作为alpha因子融合到传统量化策略中。传统因子模型主要依赖价格、成交量、估值等结构化数据而Kronos额外引入了文本上下文中的非结构化信息两者之间的互补性非常强。我在多个股票池上做了回测实验加入Kronos预测因子后大多数策略的夏普比率和最大回撤都有明显改善尤其在市场情绪波动大的阶段文本信息的增量作用更为突出。具体融合方式上建议不要简单相加而是用线性回归或GBDT做因子合成让模型自己学习因子的权重分配。5.3 踩过的坑关于那几次“无效实验”回过头看我在这套模型上踩过最大的坑就是一开始把大量时间花在调参上试图让单次预测变得更准。事实证明这条路效率很低金融时序的随机性注定单点预测的天花板。后来转换思路把重点放在“提前识别市场状态切换”上让预测模型输出一个置信区间和风险提示而不是强求单点准确率整体效果反而提升明显。另一个值得一提的经验是Kronos虽然号称金融大脑但它对中文金融文本的理解依赖微调数据的语料分布。如果你想让它吃透某个细分领域比如新能源行业或生物医药直接用通用权重效果一般。正确做法是用该领域的新闻和研报语料做一次增量预训练或指令微调再部署到业务上。这一步能拉开模型效果差距。根据我的测试领域微调后相关个股的策略胜率大约能提升5到8个百分点但代价是训练耗时和硬件投入都会增加是否值得需要结合你的实际需求来判断。本文还有配套的精品资源点击获取
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻