公司动态

K线不会说话,Kronos却听懂了:一次金融预测实战笔记

📅 2026/8/15 18:14:18
K线不会说话,Kronos却听懂了:一次金融预测实战笔记
K线不会说话Kronos却听懂了一次金融预测实战笔记【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos上周三晚上十一点我盯着屏幕上那只股票连续第43根阴线突然意识到一件尴尬的事看了三个月K线我只学会了哇又跌了。那些跳动的红绿柱子明明承载着海量信息——开高低收、成交量、资金流向但我只能靠眼睛目测。朋友甩给我一句话你去试试Kronos吧它就是专门为读懂K线而生的。这是我第一次听说Kronos一个把K线数据翻译成预测结果的开源金融基础模型。读完这篇你会和我一样用一个晚上跑通自己的第一次K线预测并知道模型微调和回测验证这条路该怎么走。为什么通用时间序列模型总是搞不定K线如果你尝试过用 LSTM、Transformer 预测股价大概会经历同样的挫败训练时loss降得很漂亮一上真实行情就预测均线。这不是你菜而是通用模型天生不适合这个任务。金融K线数据有三个让通用模型头疼的特性噪声极大价格在分钟级几乎随机游走真实信号淹没在波动里多维耦合open、high、low、close、volume 五个维度互相牵制最高价永远大于等于收盘价这种硬约束普通模型学不会分布漂移牛市和熊市的语言习惯完全不同模型容易过拟合到某一段历史。通用时间序列模型TSFM在天气、能源负荷上表现不错但面对K线这种高噪声、强约束、分布漂移的数据就力不从心。Kronos 的解法很直接既然通用模型读不懂金融市场的语言那就专门训练一个懂行的。Kronos 把K线拆成了金融单词Kronos 的核心设计是两阶段架构官方把它称为金融市场的语言The Language of Financial Markets。第一阶段一个专用的令牌化器Tokenizer把连续的 OHLCV 数据压缩成层次化离散令牌第二阶段一个大型自回归 Transformer 在这套金融词汇上做预训练学会预测下一根K线。上面这张架构图说明了整套预测流程原始K线先经过量化编码变成离散令牌序列再喂给 Transformer 自回归地生成未来令牌最后解码回价格。它采用的 BSQuantizer 做了分层量化前段令牌 s1 负责粗粒度走势、后段令牌 s2 补充细节这让模型既能抓住大趋势又不丢细节。更关键的是这套模型在超过45个全球交易所的数据上完成了预训练也就是说它见过美股、A股、港股、加密货币等各种方言。项目提供了四个规格的模型从轻到重分别是 Kronos-mini4.1M参数、Kronos-small24.7M参数、Kronos-base102.3M参数和 Kronos-large499.2M参数。新手推荐从 Kronos-small 入手预测质量够用单张消费级显卡甚至纯 CPU 都能跑。十五分钟跑通第一次K线预测上手过程比我想象的干净得多。克隆仓库、装依赖然后直接用KronosPredictor这个封装类它把数据预处理、归一化、预测、反归一化全部包好了git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos cd Kronos pip install -r requirements.txtfrom model import Kronos, KronosTokenizer, KronosPredictor # 加载预训练模型首次运行会自动从 Hugging Face 下载权重 tokenizer KronosTokenizer.from_pretrained(NeoQuasar/Kronos-Tokenizer-base) model Kronos.from_pretrained(NeoQuasar/Kronos-small) # 封装预测器max_context 对应模型最大上下文长度 predictor KronosPredictor(model, tokenizer, max_context512)准备输入数据时你需要一个 pandas DataFrame必须包含open / high / low / close四列volume和amount可选没有会自动补零。我拿了一只A股股票的5分钟线用前400根K线做回顾窗口预测后面120根import pandas as pd df pd.read_csv(your_kline.csv) df[timestamps] pd.to_datetime(df[timestamps]) lookback, pred_len 400, 120 x_df df.loc[:lookback-1, [open,high,low,close,volume,amount]] x_ts df.loc[:lookback-1, timestamps] # 历史时间戳 y_ts df.loc[lookback:lookbackpred_len-1, timestamps] # 未来时间戳 pred_df predictor.predict( dfx_df, x_timestampx_ts, y_timestampy_ts, pred_lenpred_len, T1.0, top_p0.9, sample_count1 ) print(pred_df.head()) # 输出预测的 open/high/low/close/volume/amount输出是一个 DataFrame索引就是你传入的 y_timestamp。把这套代码跑通全程大概就是十几分钟的事。上面是项目仓库里的一个预测示例图蓝色是真实行情、红色是模型预测。一眼扫过去预测线不是简单地把历史曲线平移而是跟着真实走势的转折在走——这正是自回归生成式模型和外推法的本质区别。真正决定预测质量的是这三个参数跑通只是开始想让预测质量上台阶关键在三个参数这也是我踩坑最多的地方参数作用我的经验T温度控制预测的随机性1.0 起步1.2~1.5 之间往往更准top_p核采样控制候选令牌的多样性0.9~1.0 能让模型考虑更多可能路径sample_count生成几条预测路径再取平均2~3 条方差明显下降另外有个容易忽略的坑Kronos-small 和 Kronos-base 的 max_context 是 512也就是说回顾窗口不要超过512根K线否则预测器会自动截断而截断意味着模型看不到足够长的历史。想要更长的上下文可以换用 context 为 2048 的 Kronos-mini。这就是为什么 WebUI 里的时间窗口默认是400120正好卡在 512 以内。进阶一点这几个参数本质上是在控制采样策略。Kronos 的生成过程和你用 ChatGPT 写文章一模一样——从预测的概率分布里采样令牌T越高采样越发散top_p控制只看概率最高的前多少令牌。理解了这个调参就不再是玄学。进阶让Kronos学会你那个市场的方言预训练模型已经很强但每个市场都有自己的脾气。港股、期货、加密货币的K线节奏和A股完全不同。Kronos 在finetune_csv/目录下提供了一套完整微调流程支持直接吃自定义 CSV 数据格式只要包含timestamps / open / high / low / close / volume / amount即可。仓库里自带一个港股阿里巴巴099885分钟K线的微调示例配置写在configs/config_ali09988_candle-5min.yaml改好数据路径后一行命令开训python train_sequential.py --config configs/config_ali09988_candle-5min.yaml脚本会按顺序自动完成两阶段训练先微调令牌化器让它适应你的数据分布再微调预测模型。如果机器有多张GPU还能用torchrun --standalone --nproc_per_node8做分布式加速。上面是微调后的预测结果示例模型在高频的5分钟K线上依然能贴合真实走势。注意看微调阶段不需要从零训练而是基于预训练权重继续学习所以数据量要求并不苛刻——日线级别有个一两年历史就足够跑出不错的效果。实战收尾预测好不好回测说了算预测图再漂亮也不能替代回测。Kronos 仓库里同时提供了完整的回测管线finetune/qlib_test.py会用微调后的模型在测试集上生成预测信号跑一个 top-K 策略输出累计收益曲线。上面这张回测图展示的是策略资金曲线绿色与基准的对比。看这类图时别只盯收益更要看三件事最大回撤净值从峰值回落多少、超额收益相对买入持有策略多赚多少、夏普比率每单位风险的回报。一个预测模型方向对了60%配上糟糕的资金管理照样亏钱——模型只负责信号风险控制是另一门功课。顺便说一句仓库的examples/yuce/目录里还放了几份A股个股的综合分析报告比如 000021 深科技把价格预测、成交量预测、涨跌幅分析、宏观与板块评分整合在了一起算是从预测到决策的完整演示值得参考。现在轮到你了回到开头那个盯着43根阴线发呆的夜晚——后来我用 Kronos 跑了一遍那只股票的预测又用历史数据做了回测虽然它没让我一夜暴富但至少让我第一次看懂了K线在说什么。对量化新手来说这是一个极佳的开始对经验丰富的交易员来说它可以成为你策略流水线上的一环。下一步你可以这样开始git clone https://gitcode.com/GitHub_Trending/kronos14/Kronos克隆仓库装好依赖跑通examples/prediction_example.py亲眼看看预测线和真实走势换上你自己的CSV数据用finetune_csv做一次针对性的微调有任何问题去仓库提 Issue开源社区的维护者就在那里。风险提示金融市场存在固有风险Kronos 的预测结果仅供研究参考不构成任何投资建议。任何策略在实盘前请务必经过充分的回测与风险评估并警惕过拟合与数据偏差。【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考