
Kronos实测拆解首个K线预测基础模型是怎么把行情变语言的【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos凌晨三点你刚跑完一个回测心里却虚得很策略在历史区间里漂亮可下一段行情它接得住吗这种时候你缺的不是更多指标而是一个能拿真实K线快速试错的预测器。Kronos就是干这个的——一个专门针对金融K线序列训练的基础模型foundation model简单说就是用海量数据预训练、开箱即可迁移复用的模型。它先把OHLCV开高低收加成交量压成分层离散token再让自回归只看过去、逐位往后猜的Transformer顺着token把未来的K线写出来。K线预测基础模型到底在解决什么先把K线想象成邮件Kronos干的是把邮件塞进标准信封。行情数据是连续浮点数维度还多直接喂网络模型得像背单词一样记住每个数值。Kronos的做法是先装箱一段行情先被压成离散token后面整个Transformer只跟token打交道。价格预测于是被翻译成了语言问题。第二个类比更贴一份报纸先出头版再出正文。Kronos的每个K线token自带两截——粗粒度的管趋势方向细粒度的管精确数值。先看大势再抠细节模型学到的是行情长什么样而不是死记某一天的价格。这也是它敢跨市场用的底气45个交易所的数据喂出来的A股、港股、美股共用的语法是相通的。拆开Kronos分词器内部token是怎么炼成的BSQuantizer一个没有码本的量化器它做了什么把连续特征向量归一化后按固定二进制基取正负号再拼成整数token。为什么这么做常规VQ-VAE靠学出来的码本训练时常发生码字坍缩——大部分码字没人用词表名存实亡。Kronos的词表是天然写死的永远不会塌。跟常见做法差在哪码本是死的二进制位粗码细码只是同一整数的不同位段拆合零成本。实现见 BSQuantizer源码不长值得逐行看。HierarchicalEmbedding高低位各拿一张embedding卡它做了什么按位拆token高位当粗码、低位当细码各自查嵌入表再融合。为什么趋势和波动本来就该分开建模混在一张表里细粒度信息容易被大趋势淹没。差在哪很多分词器一个token是原子的Kronos的一个时间戳对应两个有依赖关系的子token后面还会再用到。# 一个token拆成粗码s1和细码s2高位/低位 mask (1 s2_bits) - 1 s2_ids t mask # 低位是细码 s1_ids t s2_bits # 高位是粗码DependencyAwareLayer细码要看过粗码它做了什么生成细码token时用交叉注意力cross attention一种拿问题去另一组信息里找答案的机制去查粗码一侧的隐藏状态。为什么细节必须服务于趋势。先定了这一段大概跌细码才不会被允许编出向上尖峰两层信息被显式地绑成因果链。差在哪普通序列模型每个位置一步到位Kronos的一步其实是两步且第二步必须参考第一步。3行命令跑通Kronos预测看看它输出什么环境准备就三步git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos pip install -r requirements.txt模型权重从Hugging Face自动下载仓库里没有第一次跑耐心等一会儿。注意 prediction_example.py 里读的./data/XSHG_5min_600977.csv并不在仓库里得自己准备一份5分钟K线列名对齐就行。from model import Kronos, KronosTokenizer, KronosPredictor tokenizer KronosTokenizer.from_pretrained(NeoQuasar/Kronos-Tokenizer-base) model Kronos.from_pretrained(NeoQuasar/Kronos-small) predictor KronosPredictor(model, tokenizer, max_context512) pred_df predictor.predict( # 400步历史往后预测120步 dfx_df, x_timestampx_timestamp, y_timestampy_timestamp, pred_len120, T1.0, top_p0.9, sample_count1)出结果是一张上下两栏的图上栏收盘价、下栏成交量。你可能会注意到价格那一栏红色预测段顺着蓝色历史的尾部惯性走方向感挺对成交量那一栏真实值里一根根冲天尖峰预测却是一段平缓的斜线。别急着下结论它预测的是量能水平不是逐个复刻异常值——这点和它学分布不记数值的设计是一回事。你会用TimesFMKronos又多了什么拿单变量时序基础模型比如TimesFM当参照系最直观它把一条数字序列当文章来读喂价格就能出价格。如果你已经会用这类工具Kronos多给你的有三样。其一OHLCV是整体进、整体出成交量、成交额不用另起炉灶多变量结构是原生建模的。其二24.7M参数的Kronos-small消费级显卡毫无压力TimesFM动辄两亿参数起步。其三训练语料横跨45个交易所换个市场的数据它基本能直接上手通用时序模型在K线这种语法上没专门学过。反过来也一样诚实你要是只要单变量快速点预测、或者机器只剩一张4G显存的独显TimesFM这类更省心的选择未必更差。适合Kronos的人做多资产、多时间尺度的行情研究想要现成基础模型打底、还想微调的。不适合的人显存极小的纯CPU环境或者期望拿预测值直接下单的——它给的是分布式的探索路径不是买卖指令。我踩过的几个坑坑一示例数据文件不在仓库里现象照着文档跑 prediction_example.py第一行就报FileNotFoundError。原因./data/XSHG_5min_600977.csv只是示意路径仓库没带这份数据。解法自己下载对应标的的5分钟K线列名对齐 open/high/low/close/volume/amount/timestamps 即可。坑二每次结果都不一样是不是模型坏了现象同一段数据跑两次预测曲线的细节明显抖。原因采样本身带随机性T和top_p就是控制这个抖动的旋钮。解法sample_count5取多条路径平均或者调低T压随机性。坑三y_timestamp别乱造现象预测结果时间轴错位画出来和真实数据对不上。原因y_timestamp的间隔必须和真实交易节奏一致5分钟线就是5分钟一格。解法直接从原始数据里往后切120行取时间戳别手拼。坑四单卡微调脚本起不来现象照 finetune 目录的说明跑torchrun报分布式错误。原因示例命令按多卡写的。解法把--nproc_per_node改成1单卡照样能起。展开想只看效果备一份5分钟K线的CSV二十分钟能跑通 prediction_example.py。想真正吃透它的量化逻辑先把BSQ那篇论文和 model/module.py 里 BSQuantizer 的源码读一遍——搞清楚token为什么能拆成粗细两半后面的DependencyAwareLayer才算真正看懂。【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考