FinceptTerminal AI Quant Lab 实战指南:基于 Qlib 与 RDAgent 的自动化量化研究体系
【免费下载链接】FinceptTerminalFinceptTerminal is a modern finance application offering advanced market analytics, investment research, and economic data tools, designed for interactive exploration and>项目地址: https://gitcode.com/GitHub_Trending/fi/FinceptTerminal
AI Quant Lab 是 FinceptTerminal 内置的量化研究实验室,它以微软开源量化平台 Qlib 为底层引擎、以 RDAgent 研发智能体为自动化大脑,覆盖数据加工、因子挖掘、模型训练、回测、组合优化与知识沉淀的完整闭环。读完本文,你将掌握 AI Quant Lab 的 15+ 模块划分与核心 API、Qlib 全套工作流的配置方法,以及如何通过 CLI 与 Qt/C++ 界面驱动这条"假设生成→验证→沉淀"的自动化策略生产线。
系统总览:两大支柱组成的量化研究流水线
AI Quant Lab 由两条技术线协同组成(详见 fincept-qt/scripts/ai_quant_lab/README.md):
| 组件 | 模块规模 | 职责 |
|---|---|---|
| Qlib Integration | 15 个 Python 模块 | 完整的 Qlib 覆盖——回测、机器学习、强化学习、高频交易、在线学习 |
| RDAgent System | 4 个核心模块 | 假设生成、知识库、提案系统与研发自动化 |
其核心价值在于:把"研究员提出假设→手动写因子→训练模型→回测验证"的传统流程,改造为"LLM 生成策略假设→自动化因子构造→自动调参与回测→结果回写知识库"的迭代闭环。仓库内实际文件均位于 fincept-qt/scripts/ai_quant_lab/ 目录,RDAgent 侧的实现则落在 fincept-qt/scripts/agents/rdagents/ 目录下(loops、config、cli、mcp_server 等),供上层应用调用。
Qlib 模块全景:从基础回测到 100% 覆盖
核心模块
| 模块 | 文件 | 用途 |
|---|---|---|
| Advanced Backtest | qlib_advanced_backtest.py | 多因子回测引擎 |
| Data Processors | qlib_data_processors.py | 数据清洗、标准化、特征提取 |
| Evaluation | qlib_evaluation.py | 策略绩效评估与指标计算 |
| Feature Engineering | qlib_feature_engineering.py | Alpha 因子构造与特征选择 |
| Portfolio Optimization | qlib_portfolio_opt.py | 组合构建与风险管理 |
| Reporting | qlib_reporting.py | 绩效报告与可视化(另有 qlib_reporting_legacy.py 兼容旧版) |
| Strategy | qlib_strategy.py | 交易策略实现 |
| Service | qlib_service.py | 面向 C++ 集成的主服务接口 |
进阶模块(面向策略全生命周期)
| 模块 | 文件 | 用途 |
|---|---|---|
| Reinforcement Learning | qlib_rl.py | RL 交易智能体(PPO、DQN、A2C、SAC、TD3) |
| Online Learning | qlib_online_learning.py | 实时模型更新、增量学习、概念漂移检测 |
| High Frequency Trading | qlib_high_frequency.py | 高频交易、订单簿动态、做市策略 |
| Meta Learning | qlib_meta_learning.py | 模型选择、集成方法、AutoML |
| Rolling Retraining | qlib_rolling_retraining.py | 自动化模型重训调度 |
| Advanced Models | qlib_advanced_models.py | 时序模型(LSTM_TS、Transformer_TS、Localformer 等) |
主服务接口:qlib_service.py 源码级剖析
qlib_service.py 是整个 AI Quant Lab 的中枢,它把 Qlib 的数据、模型、回测能力封装为统一的QlibService类,并暴露一套 JSON 化的 CLI 命令供 Qt/C++ 界面(PythonRunner)调用。
环境初始化与数据前提
QlibService.__init__接受两个关键参数:
def __init__(self, provider_uri: str = "~/.qlib/qlib_data/us_data", region: str = "us"):provider_uri:Qlib 数据目录,默认指向~/.qlib/qlib_data/us_data(美国市场数据);region:"us"或"cn",分别对应REG_US与REG_CN,决定交易日历、价格字段等市场约定。
值得注意的是,模块对 Qlib 采用"可选依赖"设计:try/except包裹全部导入,若环境未安装 Qlib 或未下载数据,QLIB_AVAILABLE置为False,其余接口仍能返回状态信息而非崩溃。数据未下载时,接口会提示执行官方下载命令:
python -m qlib.run.get_data qlib_data --target_dir ~/.qlib/qlib_data/us_data --region us模型注册表:16 种开箱即用的算法
list_models()返回 16 个预置模型,按类型可分为四族:
- 树模型:LightGBM(
num_leaves=210, max_depth=8, learning_rate=0.05)、XGBoost(max_depth=6, lr=0.1)、CatBoost(depth=6, lr=0.03, iterations=1000); - 线性基准:Linear(
alpha=0.001); - 神经网络:LSTM、GRU、ALSTM(注意力 LSTM)、Transformer(
d_model=64, nhead=4)、TCN、AdaRNN、HIST、TabNet、SFM、GATs、ADD; - 集成:Double Ensemble(默认组合 lightgbm + lstm)。
每个模型都带有中文场景化的元信息(适用场景、可用性标记、推荐超参),可直接渲染成量化面板的模型选择列表。list_models()返回结构包含success、models、count、available_count与model_types分组,便于前端按类型过滤。
数据处理器与因子库
get_data_handlers()暴露四套因子处理器:
| 处理器 | 因子数 | 说明 |
|---|---|---|
| Alpha158 | 158 | 动量、波动率、成交量等技术因子,窗口 [5, 10, 20, 30, 60] |
| Alpha360 | 360 | 扩展时间窗 + 截面特征,窗口 [5, 10, 20, 30, 60, 120, 240] |
| Alpha158vwap | 158 | Alpha158 + VWAP 偏离/动量特征 |
| Alpha360vwap | 360 | Alpha360 + VWAP 扩展特征 |
get_factor_library()则优先从 Qlib 的Alpha158DL/Alpha360DL实时拉取真实的因子表达式,失败时回退到内置的规范表达式库,例如:
KMID ($close-$open)/$open RSV5 ($close-Min($low,5))/(Max($high,5)-Min($low,5)+1e-12) CORR5 Corr($close,Log($volume+1),5) CNTP5 Mean($close>Ref($close,1),5)这套"先读真实配置、失败再回退"的策略保证了界面永不空窗。
训练管线中的关键细节
train_model()是整个管线的核心,源码中有几个重要设计:
- 股票池归一化:内置
pool_names = {"sp500", "nasdaq100", "all", "csi300", "csi500", "csi100"},股票池名与小写 ticker 统一转小写处理; - 处理器自动切换:
ALPHA360_MODELS = {'adarnn', 'gats', 'add', 'sfm'}这四类模型会把特征重塑为d_feat=6, len_seq=60的时序格式,因此自动改用 Alpha360 处理器,且必须额外传入fit_start_time/fit_end_time; - HIST 特例:HIST 模型需要 CSI300 的
stock2concept.npy与stock_index.npy映射文件,源码中显式探测~/.qlib/qlib_data/下这两份数据; - 自动 80/20 切分:CLI 层在未显式给出验证集时,会按日期区间自动计算 80% 训练 / 20% 验证切分点;
- 模型持久化:
save_model/load_model借助 Qlib 的to_pickle/load序列化能力,保存后可脱离训练会话复用。
回测引擎的撮合配置
run_backtest()内置了贴近真实交易的默认交易所配置:
default_exchange = { "limit_threshold": 0.095, # 涨跌停阈值 9.5% "deal_price": "close", # 以收盘价成交 "open_cost": 0.0005, # 开仓成本 5bp "close_cost": 0.0015, # 平仓成本 15bp "min_cost": 5.0, # 单笔最低手续费 "trade_unit": 100, # 一手 100 股 "cash_limit": None # 不设现金上限 }支持topk_dropout(按信号持有 Top-K 并定期淘汰)与enhanced_indexing(跟踪基准的同时争取超额收益)两类策略,topk默认 50、n_drop默认topk // 5。此外还提供calculate_ic()直接基于 SciPy 计算 Pearson IC 与 Spearman Rank IC,用于因子有效性检验。
完整的 CLI 命令集
CLI 以 JSON 参数传递、JSON 结果返回,命令清单如下:
| 命令 | 用途 | 关键参数 |
|---|---|---|
check_status | 检查 Qlib/模型/处理器可用性 | 无 |
list_models/get_data_handlers/get_factor_library/get_strategies | 查询各类资源 | 无 |
get_data | 拉取行情 | instruments, start_date, end_date, fields, freq |
create_dataset | 构建数据集 | instruments, start_time, end_time, handler_type, segments |
train_model | 训练模型 | model_type, instruments, train_start/end, valid_start/end, handler_type, model_config |
predict | 模型推理 | model_id, instruments, start_date, end_date |
run_backtest | 历史回测 | model_id, strategy_type, benchmark, topk, n_drop, account |
get_factor_analysis | 因子/模型绩效分析 | model_id, analysis_type(ic/returns/risk) |
get_feature_importance | 特征重要性 | model_id |
save_model/load_model | 模型持久化 | model_id, path |
get_calendar | 交易日历 | start_date, end_date, freq |
get_instruments | 股票池成分 | market |
get_data内部还会对日期做日历钳制(clamp):当请求区间超出本地数据范围时自动收敛到实际可用区间并返回warning字段,避免因日期越界直接失败。
完整工作流
AI Quant Lab 把一次策略研究组织为从数据到知识沉淀的流水线:
┌─────────────────┐ │ Market Data │ ← Stock prices, fundamentals └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Data Processing │ ← Clean, normalize, extract features └────────┬────────┘ │ ▼ ┌─────────────────┐ │ RDAgent │ ← Generate hypotheses │ Hypothesis Gen │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Feature Eng │ ← Create alpha factors └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Model Training │ ← Train ML models └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Strategy │ ← Trading signals └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Backtest │ ← Historical simulation └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Portfolio Opt │ ← Optimal weights └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Evaluation │ ← Performance metrics └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Knowledge Base │ ← Store results └─────────────────┘核心能力清单
数据加工
- 标准化:Z-score、Min-Max、稳健缩放(Robust);
- 缺失值:前向填充、插值;
- 异常检测:统计方法、孤立森林;
- 特征提取:量价特征、技术指标。
因子工程
- Alpha 因子:158+ 内置因子(对应 Alpha158/Alpha360 处理器);
- 技术指标:MACD、RSI、布林带、ATR;
- 市场微观结构:VWAP、价差、流动性;
- 自定义因子:基于
$open/$close/$high/$low/$volume等字段的自由表达式。
回测仿真
- 真实感模拟:滑点、交易成本、市场冲击;
- 多频率:日线、小时线、分钟线;
- 仓位约束:多空限制、杠杆上限;
- 风险管理:止损、止盈、回撤限制。
组合优化
- 均值-方差优化(Markowitz 有效前沿);
- 风险平价(等风险贡献);
- 最小方差组合;
- 最大 Sharpe 组合;
- 自定义目标函数。
模型库(30+ 算法)
- 线性:Ridge、Lasso、ElasticNet;
- 树模型:XGBoost、LightGBM、CatBoost;
- 神经网络:MLP、LSTM、GRU、Transformer、ALSTM;
- 时序模型:LSTM_TS、GRU_TS、Transformer_TS、Localformer、TCTS;
- 进阶架构:HIST、KRNN、IGMTF、TRA、Sandwich;
- 集成:Stacking、Blending、自适应随机森林;
- 强化学习:PPO、DQN、A2C、SAC、TD3。
评估指标
- 收益:年化收益、累计收益、日收益;
- 风险:波动率、最大回撤、VaR、CVaR;
- 风险调整:Sharpe、Sortino、Calmar 比率;
- 交易质量:胜率、盈利因子、换手率。
RDAgent:从"人写策略"到"AI 研发策略"
假设生成
- LLM 驱动的交易假设生成(识别市场状态、挖掘新 Alpha、套用策略模板);
- 研发循环由 fincept-qt/scripts/agents/rdagents/loops.py 落地,提供
build_factor_loop()、build_model_loop()、build_quant_loop()三套循环构建器,分别对应因子研发、模型研发与量化全流程研发。
知识库
- 沉淀成功策略、验证过的 Alpha 因子、失败案例分析、累积的交易经验,形成持续进化的研究记忆。
提案系统
- 策略按潜力排序、自动化回测、超参搜索、多策略集成组合。
LLM 后端配置(rdagents/config.py)
fincept-qt/scripts/agents/rdagents/config.py 负责把 Fincept 的 LLM 配置翻译成 RDAgent 依赖的环境变量:
env_vars["CHAT_MODEL"] = litellm_model # 模型名(litellm 前缀化) env_vars["OPENAI_API_KEY"] = api_key # 所有 provider 统一走 litellm env_vars["CHAT_OPENAI_BASE_URL"] = base_url # OpenAI 兼容自定义端点 env_vars["EMBEDDING_MODEL"] = "text-embedding-3-small" # 默认嵌入模型关键设计点:
- 内置 provider 前缀映射,如
anthropic/、deepseek/、groq/、mistral/、together_ai/、openrouter/等,自动为模型名加上 litellm 前缀; - MiniMax、DeepSeek 等走 OpenAI 兼容协议的自建端点时,使用原始模型名并注入 base URL;
- Anthropic 额外写入
ANTHROPIC_API_KEY; - 重复调用时自动清除残留的
CHAT_OPENAI_BASE_URL,避免串配置。
loops 侧还支持把 MCP 工具注入研发循环(enable_mcp/mcp_port=18765),让智能体在执行循环过程中调用外部工具集。
使用示例
Qlib 回测
README 提供了高层调用示意:
from ai_quant_lab.qlib_service import run_backtest results = run_backtest( strategy='top_k', universe='csi300', start_date='2020-01-01', end_date='2023-12-31', top_k=30 ) print(f"Sharpe Ratio: {results['sharpe']}") print(f"Annual Return: {results['annual_return']}")结合源码可以确认:完整的调用路径是先在QlibService上完成train_model获得model_id,再调用run_backtest(model_id=..., strategy_type='topk_dropout', benchmark='SH000300', topk=50, account=100000000);top_k风格策略对应策略注册表中的topk_dropout(qlib_service.py 中STRATEGIES_AVAILABLE部分)。
因子工程
from ai_quant_lab.qlib_feature_engineering import create_alpha_factors factors = create_alpha_factors( data=stock_data, factors=['momentum', 'value', 'quality'] )RDAgent 假设生成
from ai_quant_lab.rd_agent_service import generate_hypothesis hypothesis = generate_hypothesis( market_regime='bull_market', asset_class='equities', timeframe='daily' ) print(f"Hypothesis: {hypothesis['description']}") print(f"Factors: {hypothesis['factors']}")从仓库结构看,generate_hypothesis的完整实现对应 RDAgent 研发循环:实际落地由 agents/rdagents/loops.py 的循环构建器与 agents/rdagents/mcp_tools.py、agents/rdagents/task_manager.py 配合完成,假设生成后会自动进入因子构造→回测→知识沉淀的迭代。
组合优化
from ai_quant_lab.qlib_portfolio_opt import optimize_portfolio weights = optimize_portfolio( returns=expected_returns, covariance=cov_matrix, method='max_sharpe', constraints={'long_only': True} )配置指南
Qlib 配置
- 数据源:Yahoo Finance、CSV、数据库(实际由
provider_uri指向的本地 Qlib 数据目录承载,需预先用python -m qlib.run.get_data下载); - 股票池:CSI300、S&P500 或自定义(源码内置
sp500/nasdaq100/all/csi300/csi500/csi100池名); - 频率:1min、5min、1day(
freq参数); - 基准:用于对比的指数(如
SH000300)。
RDAgent 配置
- LLM 模型:通过 agents/rdagents/config.py 配置,支持 OpenAI、Anthropic、MiniMax、DeepSeek、OpenRouter、Together、Fireworks、Groq、Mistral、Cohere,默认
gpt-4o;本地可经 Ollama 接入; - 知识库:SQLite、向量数据库;
- 假设数量:单轮生成的假设个数;
- 评估标准:Sharpe、收益、回撤(循环构建器的
target_ic参数即用于设定因子质量门槛)。
技术栈明细
- 框架:Qlib(微软量化平台)
- ML 库:XGBoost、LightGBM、CatBoost、PyTorch
- RL 库:Stable-Baselines3、Gymnasium(qlib_rl.py 直接导入
PPO, DQN, A2C, SAC, TD3与DummyVecEnv/SubprocVecEnv/EvalCallback) - 在线学习:River(增量 ML)
- 数据处理:Pandas、NumPy
- 优化:SciPy、cvxpy
- LLM:Ollama(本地)、OpenAI API
- 存储:SQLite(知识库)、MLflow(实验追踪)
- 语言:Python 3.11+
性能优化手段
- 数据缓存:Pickle、HDF5 加速重复加载;
- 并行处理:多核回测;
- GPU 加速:PyTorch 神经网络训练(SFM 封装类即通过
torch.cuda.is_available()自动选择cuda:0或cpu); - 向量化:NumPy/Pandas 批处理运算。
与 FinceptTerminal 的集成方式
AI Quant Lab 的全部服务通过 C++ 命令层暴露给桌面端:
qlib_service.py:主 Qlib 接口;qlib_rl.py:强化学习智能体;qlib_online_learning.py:在线/增量学习;qlib_high_frequency.py:高频交易操作;qlib_meta_learning.py:元学习与 AutoML;qlib_rolling_retraining.py:自动化重训;qlib_advanced_models.py:进阶神经网络;- RDAgent 接口(经由 agents/rdagents/ 的 loops/config/cli/mcp_server)。
这些 Python 脚本由 Qt/C++ 应用通过PythonRunner调用。从 fincept-qt/src/python/PythonRunner.cpp 可以看到,运行器对ai_quant_lab/前缀脚本做了专门处理,并在注释中标注了qlib_rl.py(RL 训练会长时间流式输出进度)、qlib_rolling_retraining.py等长任务脚本。Qt 侧的量化工作台界面集中在 fincept-qt/src/screens/ai_quant_lab/(AIQuantLabScreen、QuantModulePanel 及其回测/因子/模型展示面板),负责把上述 CLI 的 JSON 输出渲染为可视化模块。
v2.0 新增能力速览
强化学习(qlib_rl.py)
- 算法:PPO、DQN、A2C、SAC、TD3;
- 交易环境:连续/离散动作空间;
- 特性:组合优化、风险调整奖励、Sharpe 优化;
- 训练:Stable-Baselines3 集成、模型保存/加载。
在线学习(qlib_online_learning.py)
- 增量训练:实时模型更新;
- 漂移检测:ADWIN 概念漂移算法;
- 模型:线性、树模型、自适应随机森林;
- 滚动更新:自动化重训调度。
高频交易(qlib_high_frequency.py)
- 订单簿模拟:买卖价动态、深度管理;
- 微观结构特征:价差、VWAP、深度失衡;
- 做市:Avellaneda-Stoikov 模型;
- 毒性流检测:识别知情交易;
- 延迟优化:超低延迟执行。
元学习(qlib_meta_learning.py)
- 模型选择:自动化模型对比;
- 集成:加权集成、Stacking;
- AutoML:超参数优化;
- 数据集选择:基于 IC 的数据集筛选。
滚动重训(qlib_rolling_retraining.py)
- 自动化调度:小时级、日级、周级重训;
- 窗口管理:滚动窗口训练;
- 历史追踪:重训绩效日志。
进阶模型(qlib_advanced_models.py)
- 时序:LSTM_TS、GRU_TS、Transformer_TS;
- 注意力:Localformer、TCTS;
- 进阶架构:HIST、KRNN、IGMTF。
快速上手路径
- 安装 Python 3.11+ 与 Qlib 依赖(XGBoost/LightGBM/CatBoost、PyTorch、Stable-Baselines3、River 等);
- 下载市场数据:
python -m qlib.run.get_data qlib_data --target_dir ~/.qlib/qlib_data/us_data --region us; - 运行
python qlib_service.py check_status确认 Qlib 与各模型/处理器可用性; - 按
create_dataset → train_model → predict → run_backtest顺序在 CLI 层走通最小闭环; - 配置 RDAgent 的 LLM 环境变量(agents/rdagents/config.py),启动因子/模型研发循环;
- 在 FinceptTerminal 的 AI Quant Lab 面板中观察结果,策略与因子自动沉淀至知识库。
说明:以上流程以当前仓库实际代码为准。Qlib 数据下载与模型训练依赖本地环境安装情况,未安装 Qlib 时接口会返回明确的可用性状态与错误提示,不影响桌面端其他功能运行。
【免费下载链接】FinceptTerminalFinceptTerminal is a modern finance application offering advanced market analytics, investment research, and economic data tools, designed for interactive exploration and>项目地址: https://gitcode.com/GitHub_Trending/fi/FinceptTerminal
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考