在金融量化领域,时间序列模型与自然语言处理的融合一直是研究热点。传统方法往往将市场数据视为单纯的数值序列,忽视了 K 线(蜡烛图)本身所蕴含的结构化语义信息。Kronos 作为首个面向金融市场 K 线语言的开源基础模型,提出了一种全新的两阶段训练框架,将连续的高噪声金融数据转化为离散的层级化符号序列,进而通过大规模自回归 Transformer 进行预训练。这一范式不仅在价格预测任务上取得了显著的性能提升,更为零样本跨资产预测提供了可行路径。
K 线数据的独特挑战与模型设计动机
金融市场数据与普通时间序列存在本质差异。首先,K 线数据具有极高的噪声水平,价格波动受到宏观经济、政策变化、交易者行为等多重因素影响,数据分布高度非平稳且随市场状态动态变化。其次,金融市场存在显著的 regime-switching 特性 —— 牛市与熊市的统计规律完全不同,同一模型很难在不同市场环境下保持稳定的预测能力。再者,不同交易所、不同资产类别的数据粒度差异巨大,从分钟级到日线级,从股票到期货、加密货币,数据的维度和分布存在显著异质性。
通用时间序列基础模型(TSFM)在处理金融数据时往往表现不佳,原因在于它们缺乏对金融市场特有结构的建模能力。Kronos 的设计动机正是针对这些挑战:构建一个专门理解 “K 线语言” 的基础模型,将 OHLCV(开盘价、最高价、最低价、收盘价、成交量)数据视为一种特殊的符号序列,而非单纯的数值向量。这一思想类似于大型语言模型对自然语言的处理 —— 将离散的 token 序列作为 Transformer 的输入,学习其中的模式和规律。
两阶段训练框架:分词器与预训练模型
Kronos 的核心创新在于其两阶段训练框架。第一阶段是构建专用的分词器(Tokenizer),将连续的、多维的 K 线数据量化离散的层级化 token;第二阶段是使用这些 token 对大规模自回归 Transformer 进行预训练。
在分词器设计上,Kronos 采用了针对金融数据特点的特殊量化策略。与自然语言处理中的 BPE 或 WordPiece 分词不同,Kronos 的分词器需要对 OHLCV 五个维度的数据进行联合建模。模型首先对每个维度独立进行离散化处理,然后将不同维度的离散结果组合为层级化的 token 表示。这种设计使得模型能够捕捉到不同价格维度之间的相关性,例如开盘价与收盘价之间的缺口、最高价与最低价之间的波动范围等。
分词器的参数量与模型规模相匹配。Kronos-mini 采用 2k 规模的 tokenizer,而 Kronos-base 及以上版本采用更大规模的 base tokenizer。分词器本身也经过预训练,能够学习到金融数据中的典型模式。例如,分词器会将对数收益率的连续空间划分为若干个离散的区间,每个区间对应一个特定的 token,从而实现对价格变动的精细化表示。
预训练阶段采用标准的自回归语言建模目标。给定历史的 K 线 token 序列,模型学习预测下一个时间步的 token。这种 - next-token-prediction 的训练方式使得模型能够掌握金融市场的时间依赖结构。预训练数据来自超过 45 个全球交易所的 K 线记录,总量超过 120 亿条 K 线数据,涵盖了股票、期货、加密货币等多种资产类别。这种大规模、多样化的预训练数据是模型具备零样本迁移能力的根本保障。
模型族与推理参数
Kronos 发布了一个完整规模的模型家族,以满足不同计算资源和应用场景的需求。Kronos-mini 参数量为 410 万,采用 2k tokenizer,上下文长度支持 2048 个时间步,适合资源受限的边缘部署场景。Kronos-small 参数量为 2470 万,采用 base tokenizer,支持 512 个时间步的上下文窗口,是性价比最高的版本。Kronos-base 参数量达到 1.023 亿,同样使用 base tokenizer 和 512 上下文长度,在推理能力和计算成本之间取得较好平衡。Kronos-large 参数量为 4.992 亿,目前尚未开源,但代表了该技术路线的上限能力。
在实际推理时,Kronos 提供了灵活的预测接口。开发者可以通过 KronosPredictor 类进行单序列预测,也可以使用 predict_batch 方法进行批量推理。关键的超参数包括:T(温度参数)控制采样随机性,top_p(核采样概率)决定采样集合的大小,sample_count 控制生成多条预测路径后取平均。max_context 参数默认为 512,意味着输入的历史 K 线序列不应超过 512 个时间步,否则会自动截断。
性能提升与实际应用
根据论文报告的实验结果,Kronos 在多个金融预测任务上取得了显著的性能提升。在价格序列预测任务上,Kronos 的 RankIC 相比最好的通用时间序列基础模型提升了 93%,相比非预训练的基线方法提升了 87%。在已实现波动率预测任务上,Kronos 的 MAE 降低了 9%。在生成任务上,模型合成的 K 线序列在逼真度指标上提升了 22%。
这些提升的根源在于预训练阶段学习到的金融市场通用模式。不同资产、不同市场的 K 线数据虽然表面上千差万别,但背后存在一些共通的结构性规律,例如成交量与波动率的相关性、价格缺口的意义、均线收敛发散模式等。Kronos 通过大规模预训练掌握了这些通用知识,从而能够在下游任务中实现零样本或少样本迁移。
在实际部署中,需要注意几点工程化要点。首先,Kronos 输出的原始信号需要经过投资组合优化模型的进一步处理,以消除对常见风险因子的暴露,获取纯净的 Alpha。其次,数据预处理脚本假设输入数据包含必需的 OHLCV 列,缺失的 volume 和 amount 列会自动填充为零。再次,批处理预测要求所有输入序列具有相同的历史长度和预测长度,这一点在构建输入数据时需要特别留意。
面向生产环境的关键考量
将 Kronos 从 Demo 级别提升到生产级别需要考虑多个维度的工程化问题。在数据层面,需要确保输入 K 线数据的质量,处理好缺失值、异常值和复权问题。在模型层面,fine-tuning 流程提供了在特定市场(如 A 股)上进行域适应的能力,需要使用 torchrun 进行多 GPU 分布式训练。在策略层面,简单的 top-K 选股策略只是起点,生产环境需要更复杂的组合构建逻辑,包括仓位动态管理、止损止盈规则等。
另一个重要考量是回测的可信度。真实的交易环境存在手续费、滑点、市场冲击等摩擦成本,这些因素在简单回测中往往被忽略。Kronos 的论文提供了基础的回测框架,但在实际使用时需要添加更精细的成本建模,以获得更接近实盘的性能估计。
从技术演进的角度看,Kronos 证明了将 K 线数据视为一种 “语言” 进行建模的可行性。未来这一方向可能进一步发展,例如将新闻文本与 K 线序列进行联合训练,构建更加多模态的金融市场理解模型。当前的 Kronos 聚焦于价格序列本身,而金融市场的完整信息空间还包括公告、研报、社交媒体等海量文本数据,打通这些异构数据源将是下一代金融基础模型的重要方向。
资料来源:GitHub: shiyu-coder/Kronos (https://github.com/shiyu-coder/Kronos)