这一篇讲量化研究之后的一环:把”改个参数跑一遍”的散乱研究,变成可追踪、可复现、可上线的工程流水线。适合已经会做因子/模型/回测、但一到复现和上线就发怵的人。
本篇对应课程:MLflow × 量化工程流程化(25 讲)。系列总纲见 量化工程能力知识图谱与学习路线。 顶层总路径见 量化投资学习路径图。参考教材 / 源码
- 主参考:《Machine Learning Engineering with MLflow》Natu Lauchande(Packt)· 代码库 https://github.com/PacktPublishing/Machine-Learning-Engineering-with-MLflow
- 进阶:《Practical Deep Learning at Scale with MLflow》Yong Liu、Matei Zaharia(Packt)· 代码库 https://github.com/PacktPublishing/Practical-Deep-Learning-at-Scale-with-MLFlow
- MLflow 本体源码 https://github.com/mlflow/mlflow
为什么要学这块
量化研究员的真实日常大概是这样:改个参数跑一遍回测,夏普 1.3,不错;又改一版,忘了上一版参数是啥;结果图存在桌面 未命名7.png;三个月后老板说”那个夏普 1.3 的策略再跑一遍”——复现不出来了。
前面几门课解决的是”怎么做研究”(因子、模型、回测)和”怎么读框架”(qlib、RD-Agent)。但”研究做完之后怎么办”一直是散的:实验记在脑子里,环境靠回忆,上线的策略和当初回测的到底是不是同一个,说不清。这一层不解决,研究做得再好也留不下、传不出、上不了线。MLflow 就是补这一块的标准工具——它开源、纯 Python、本地即装即跑。
这一篇的角度:把研究工程化,不止跑出夏普
市面上的量化内容大多止步于”回测跑出夏普 1.3″。这套课接着往下讲研究之后怎么工程化——这是绝大多数人缺的一环:
- 每一环都真跑。25 讲用 qlib 的 CN 真数据,从因子实验到监控,几乎每讲都产出真实硬数字(IC / ICIR / 夏普 / 回撤 / PSI / 复现一致性),而不是书里过时股票 API 的示意。
- 贯穿一条主线:”一个量化策略的一生”——数据 → 因子实验 → 模型训练 → 回测 → 评估对比 → 打包 → 进 Registry(研究→纸上→实盘)→ 部署 → 监控。每一环都被 MLflow 记成一个可追溯的 run,串成完整流水线。
- 按 MLflow 3.14 现状讲,顺带纠偏教材。两本参考书是 1.x / 2.x 写法,很多点已经过时。本课全部真跑,发现并按现状讲清(见下文”版本纠偏”一节)。
你会学到什么(对应课程讲次)
按”量化策略全流程”分五组:
实验追踪(Tracking,第 02–07 讲)
| 讲次 | 内容 |
|---|---|
| 02 | 第一个 tracked 实验:log_param/metric/artifact,开 UI 看一个因子实验被记下来 |
| 03 | Tracking 概念模型:Experiment / Run / params / metrics / artifacts / tags 映射到量化实验 |
| 04 | 记录一个完整因子研究:lookback 当 param、IC/IR 当 metric、IC 曲线当 artifact |
| 05 | Autologging:sklearn/lightgbm 零侵入自动追踪 |
| 06 | 对比·检索·嵌套 run:search_runs 按 metric 自动找最优策略 |
| 07 | 🔬 Tracking 内核:backend store(sqlite)+ artifact store 到底把实验存哪了 |
可复现(第 08–10 讲)
| 讲次 | 内容 |
|---|---|
| 08 | MLflow Projects:MLproject + 环境声明,一次回测打包成”一条命令复现” |
| 09 | 代码 + 数据版本化:git commit 自动记 + 数据 md5/快照,根治”复现不了” |
| 10 | 参数扫描/HPO tracked:Optuna 每个 trial 一个子 run,超参搜索全程可追溯 |
Models & Registry(策略治理,第 11–14 讲)
| 讲次 | 内容 |
|---|---|
| 11 | MLflow Models:flavor / signature / log_model,把模型打包成标准件 |
| 12 | 自定义 pyfunc:把”一个策略”(因子 + 信号逻辑,不只是模型)包成标准件 |
| 13 | Model Registry:一个策略 研究→纸上→实盘 的生命周期治理 |
| 14 | 版本 · 别名(champion/challenger)· 治理:安全换上线策略、可回滚 |
评估与监控(第 15–17、23 讲)
| 讲次 | 内容 |
|---|---|
| 15 |
mlflow.evaluate + 自定义 metric:把夏普/最大回撤/换手率做成统一口径 |
| 16 | 模型解释追踪:SHAP × MLflow,把特征归因当 artifact 记录 |
| 17 | ⭐ 端到端量化流水线 tracked:数据→因子→模型→回测→报告 每步一个 run,父 run 汇总 |
| 23 | ⭐ 性能监控:数据/模型漂移、PSI/KS、告警——补上量化”上线后”的缺口 |
部署与编排(第 18–22、24–25 讲)
| 讲次 | 内容 |
|---|---|
| 18 | 数据与特征库(factor store):因子怎么存、复用、防训练-推理偏差 |
| 19 | ML 平台架构:MLflow 在平台里的位置(对比 Michelangelo/Kubeflow/qlib) |
| 20 | 部署与推理:本地服务 / 批量打分 / 在线 API——”信号即服务” |
| 21 | 规模化:MLflow × Spark/Ray/GPU,跑大回测、大规模超参搜索 |
| 22 | 编排调度:Airflow/Prefect 定时重训与滚动 |
| 24 | MLflow for LLM/GenAI(traces/prompt)+ 和 qlib 深度整合(QlibRecorder→mlruns) |
| 25 | 收官:一套”量化研究流程化”最佳实践脚手架(目录/命名/该 log 清单/checklist) |
几个亮点(真跑硬数据)
下面的数字都是在 qlib 的 .venv(mlflow 3.14 + qlib + lightgbm + CN 数据)里真跑出来的,出处在对应讲的课件:
-
search_runs自动选最优 lookback=20,IC=+0.0451(第 06 讲)。扫一批 lookback 参数、每个一个子 run,search_runs按 IC 排序直接把最优那次捞出来——不用翻记忆、不用比对桌面截图。这就是”实验追踪”最直接的价值:选最优是一句查询,不是靠脑子记。 -
mlflow run一条命令,IC 复现一致(第 08 讲)。把一次回测写成MLproject+ 环境声明,换个时间、换个人跑,IC 和原来对得上。这一条是”三个月后复现不出来”这个痛点的正面解法——参数、代码、环境全被钉死在一次可复现的 run 里。 -
alias 切换/回滚,champion 一键换上线策略(第 14 讲)。给策略版本打
champion/challenger别名,上线是把champion指到新版本,出问题是把它指回旧版本——秒级、可审计。团队管几十个策略版本靠的就是这套别名治理,而不是口头约定”现在用 v7″。 - PSI 漂移:整体 0.15 汇总掩盖,季度拆开 6–7 爆表(第 23 讲)。用整段样本算 PSI 得 0.15,看着”轻微漂移、还能用”;按季度拆开算,某几个季度直接冲到 6–7,严重漂移被年度汇总平均掉了。这是监控里最常见的坑:汇总口径会掩盖分段的剧烈漂移,上线后不分段看漂移,等于没看。
- 端到端流水线一眼定位过拟合(第 17 讲)。数据→因子→模型→回测五步各记一个子 run、父 run 汇总,真跑跑出一次过拟合翻车——训练集漂亮、回测拉胯,run 树上逐步对比就能一眼看出病因出在哪一步。
这些不是段子,是”工程化到底值不值”的可核对证据。看懂它们,你对”研究之后该做什么”的判断,会和只会跑回测的人明显不同。
顺带一提:MLflow 3.14 版本纠偏(比书新)
两本参考书是 MLflow 1.x / 2.x 时代写的,本课全部真跑,发现不少地方已经和书对不上,按现状讲清并写进坑里:
- 元数据默认进 sqlite,不是旧的 file 布局(第 07 讲实测 sqlite 表结构)。
-
Registry 用 alias,不用旧的 stage(
Staging/Production那套已弃用)。champion/challenger 别名是 3.x 的正解(第 14 讲)。 - 模型默认存 skops,不是 pkl(第 11 讲),更安全。
-
autolog 只记训练指标,不认业务指标(第 05 讲实测):IC、夏普这类量化 metric autolog 不会自动记,得自己
log_metric——这是量化场景最容易踩的一个坑。
建议的阅读顺序
按”量化策略全流程”从前往后走,每一讲都能真跑:
- 第 02 讲 · 跑通第一个 tracked 实验 —— 先把”记一次实验”跑通
- 第 04 讲 · 记录一个完整因子研究
- 第 06 讲 · 对比检索与嵌套 run ——
search_runs自动选最优 - 第 08 讲 · MLflow Projects:一条命令复现 —— 正面解决”复现不了”
- 第 11 讲 · MLflow Models:打包成标准件
- 第 13 讲 · Model Registry:生命周期治理、第 14 讲 · 版本别名与治理 —— alias 切换/回滚
- 第 17 讲 · 端到端量化流水线 tracked —— 把前面串成一条 pipeline
- 第 23 讲 · 性能监控:漂移检测 —— PSI 分段看漂移
- 第 25 讲 · 收官:流程化脚手架 —— 该 log 清单 + 研究→实盘 checklist
时间紧的话,至少读第 02、06、08、14、23 这五讲,”追踪→复现→治理→监控”这条工程主线就串起来了。想深挖内核的补第 07 讲(store 与溯源)。
承上启下
上一层 【工程·平台篇】解剖 qlib 与读框架方法论 把读懂并驾驭框架的能力练出来;这一篇教你把做出来的研究留得下、复现得了、上得了线——研究做得再好,复现不了、上不了线,价值就打折。往上一层是 【工程·进阶篇】LLM 自动化研究与后续方向:既有已经落地的前沿(LLM 自动研究),也有还没走完的路(执行/风控/实盘/衍生品)。完整地图见 量化工程能力知识图谱与学习路线。