首页 › AI Agent实战项目案例库 › 金融分析系统实战项目 › 基于 LLM 的 Agent 金融分析系统

基于 LLM 的 Agent 金融分析系统

📜 简介​

​

🏖️

Kronos 是一个专为金融市场"语言"——K线序列预训练的 decoder-only 基础模型系列。与通用时间序列预测模型(TSFM)不同,Kronos 专门设计用于处理金融数据独特的高噪声特性。它采用创新的两阶段框架:​

​

​

飞书文档 - 图片

​

​

飞书文档 - 图片

​

📈 进行预测​

使用 Kronos 进行预测非常简单,只需通过 KronosPredictor 类即可完成。该类处理数据预处理、归一化、预测和反归一化等步骤,让你仅用几行代码就能从原始数据获得预测结果。​

​

📍

重要提示:Kronos-small 和 Kronos-base 的 max_context 值为 512。这是模型能处理的最大序列长度。为获得最佳性能,建议输入数据长度(即 lookback)不要超过此限制。KronosPredictor 会自动处理较长上下文的截断。​

​

加载分词器和模型​

首先,从 Hugging Face Hub 加载预训练的 Kronos 模型及其对应的分词器。​

​

代码块​

Python

from model import Kronos, KronosTokenizer, KronosPredictor​

​

# Load from Hugging Face Hub​

tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base")​

model = Kronos.from_pretrained("NeoQuasar/Kronos-small")​

​

实例化预测器​

创建 KronosPredictor 的实例,传入模型、分词器以及所需的设备。​

​

代码块​

Python

# Initialize the predictor​

predictor = KronosPredictor(model, tokenizer, max_context=512)​

​

准备输入数据​

predict 方法需要三个主要输入:​

•

df:包含历史 K 线数据的 pandas DataFrame。必须包含列 ['open', 'high', 'low', 'close']。volume 和 amount 为可选列。​

•

x_timestamp:与 df 中历史数据对应的时间戳 pandas Series。​

•

y_timestamp:你想要预测的未来时间段的时间戳 pandas Series。​

​

代码块​

Python

​

生成预测​

调用 predict 方法生成预测。您可以通过 T、top_p 和 sample_count 等参数控制概率性预测的采样过程。​

​

代码块​

Python

# Generate predictions​

​

predict 方法返回一个 pandas DataFrame,包含 open、high、low、close、volume 和 amount 的预测值,并以您提供的 y_timestamp 作为索引。​

为实现多时间序列的高效处理,Kronos 提供了 predict_batch 方法,支持对多个数据集同时进行并行预测。这在需要一次性预测多个资产或时间段时尤为实用。​

​

代码块​

Python

​

批量预测的重要要求:​

•

所有序列必须具有相同的历史长度(回看窗口)​

•

所有序列必须具有相同的预测长度(pred_len)​

•

每个 DataFrame 必须包含必需列:['open', 'high', 'low', 'close']​

•

volume 和 amount 列为可选列,若缺失将自动填充零值​

predict_batch 方法利用 GPU 并行机制实现高效处理,并自动为每个序列独立执行归一化与反归一化操作。​

示例与可视化​

有关包含数据加载、预测和绘图的完整可运行脚本,请参阅 examples/prediction_example.py。​

运行此脚本将生成一个对比真实数据与模型预测结果的图表,类似于下图所示:​

​

​

此外,我们还提供了一个无需交易量和成交额数据即可进行预测的脚本,可在 examples/prediction_wo_vol_example.py 中找到。​

🔧 使用自有数据进行微调(A股市场示例)​

我们提供了完整的流程,用于在您自己的数据集上对 Kronos 进行微调。作为示例,我们演示了如何使用 Qlib 准备中国A股市场数据并进行简单的回测。​

​

免责声明: 本流程旨在演示微调过程,是一个简化示例而非生产就绪的量化交易系统。稳健的量化策略需要更复杂的技术(如投资组合优化和风险因子中性化)才能获得稳定的阿尔法收益。​

​

微调过程分为四个主要步骤:​

配置:设置路径和超参数​

数据准备:使用 Qlib 处理和拆分数据​

模型微调:微调 Tokenizer 和 Predictor 模型​

回测:评估微调后模型的性能​

环境要求​

首先确保已安装 requirements.txt 中的所有依赖项​

本流程依赖 qlib,请通过以下命令安装:​

​

代码块​

Shell

pip install pyqlib​

​

需要准备 Qlib 数据。请遵循 Qlib 官方指南 下载并在本地设置数据。示例脚本假定您使用日频数据​

步骤一:配置实验​

所有数据、训练和模型路径的设置均集中在 finetune/config.py 中。在运行任何脚本前,请根据您的环境修改以下路径:​

•

qlib_data_path: 您本地 Qlib 数据目录的路径。​

•

dataset_path: 用于保存处理后的训练/验证/测试 pickle 文件的目录。​

•

save_path: 保存模型检查点的基目录。​

•

backtest_result_path: 用于保存回测结果的目录。​

•

pretrained_tokenizer_path 和 pretrained_predictor_path: 您希望从中开始训练的预训练模型路径(可以是本地路径或 Hugging Face 模型名称)。​

您还可以调整其他参数,如 instrument、train_time_range、epochs 和 batch_size,以适应您的具体任务。如果不使用 Comet.ml,请设置 use_comet = False。​

步骤 2:准备数据集​

运行数据预处理脚本。该脚本将从您的 Qlib 目录加载原始市场数据,进行处理,将其分割为训练集、验证集和测试集,并保存为 pickle 文件。​

​

代码块​

Shell

python finetune/qlib_data_preprocess.py​

​

运行后,您将在配置文件中 dataset_path 指定的目录中找到 train_data.pkl、val_data.pkl 和 test_data.pkl。​

步骤 3:运行微调​

微调过程包含两个阶段:首先微调分词器,然后微调预测器。两个训练脚本均设计为使用 torchrun 进行多 GPU 训练。​

3.1 微调分词器​

此步骤调整分词器以适应您特定领域的数据分布。​

​

代码块​

Shell

# Replace NUM_GPUS with the number of GPUs you want to use (e.g., 2)​

torchrun --standalone --nproc_per_node=NUM_GPUS finetune/train_tokenizer.py​

​

最佳分词器检查点将被保存到 config.py 中配置的路径(该路径由 save_path 和 tokenizer_save_folder_name 派生而来)。​

3.2 微调预测器​

此步骤针对预测任务微调主要的 Kronos 模型。​

​

代码块​

Shell

# Replace NUM_GPUS with the number of GPUs you want to use (e.g., 2)​

​

最佳预测器检查点将被保存到 config.py 中配置的路径。​

步骤 4:通过回测进行评估​

最后,运行回测脚本来评估您微调后的模型。该脚本会加载模型,在测试集上执行推理,生成预测信号(例如,预测价格变动),并运行一个简单的 Top-K 策略回测。​

​

代码块​

Shell

# Specify the GPU for inference​

python finetune/qlib_test.py --device cuda:0​

​

脚本将在控制台输出详细的性能分析,并生成一张图表,显示您的策略相对于基准的累计收益曲线,类似于下图所示:​

​

​

💡 从演示到生产:重要注意事项​

•

原始信号 vs. 纯Alpha: 本演示中模型生成的信号为原始预测。在实际量化工作流中,这些信号通常会被输入投资组合优化模型。该模型会施加约束以对冲常见风险因子(如市场Beta、规模和价值等风格因子)的敞口,从而分离出**"纯Alpha"**并提升策略的稳健性。​

•

数据处理: 提供的 QlibDataset 是一个示例。对于不同的数据源或格式,您需要调整数据加载和预处理逻辑。​

•

策略与回测复杂性: 此处使用的简单Top-K策略是一个基础起点。生产级策略通常包含更复杂的投资组合构建逻辑、动态头寸规模调整和风险管理(如止盈止损规则)。此外,高保真度的回测应精细地模拟交易成本、滑点及市场冲击,以更准确地评估实际表现。​

​