Qlib实战:逐日归因分析贵州茅台AI策略,收益22.45%超额年化10.62%
一、问题引入:AI 量化平台的**,Qlib 强在哪里?
Qlib 是微软亚洲研究院开源的 AI 量化投资平台——不是"一个回测工具",而是一个从数据到模型到执行的完整生态。它的核心思路是把量化投资流程标准化为 Data → Model → Strategy → Backtest → Analysis 五个环节,每个环节都有对应的模块和接口。在 Qlib 的框架下,"跑一次回测"不仅仅是得到一组绩效数字——它把每日收益率拆解为策略收益、基准收益和交易成本三个维度,让你精确看到策略的每一天、每一分钱分别来自市场的 Beta 还是策略的 Alpha。
本文以贵州茅台(600519)的真实回测数据,展示 Qlib 的日频归因分析和完整输出。
二、成果展示:Qlib 对贵州茅台的完整回测输出



2.1 回测概览
| 项目 | 值 |
|---|---|
| 标的 | 600519(贵州茅台) |
| 回测区间 | 2022-01-04 → 2023-12-29 |
| 初始资金 | ¥1,000,000 |
| 最终价值 | ¥1,224,456.43 |
| 总收益率 | +22.45% |
2.2 绩效摘要
| 指标 | 值 | 说明 |
|---|---|---|
| Total Return | +22.45% | 绝对收益——是目前所有回测中最高的 |
| Benchmark Return | -11.53% | 同期基准下跌 |
| Excess Return(年化) | +10.62% | 剔除了大盘涨跌后的纯 Alpha |
| Information Ratio | 0.366 | 超额收益的稳定性 |
| Max Drawdown | -20.02% | 收益越高,回撤越大——经典的正相关性 |
22.45% vs 之前的约11%:Qlib 的 AI 模型驱动策略在贵州茅台上跑出了比传统规则策略(双均线约11%)高出一倍的绝对收益。但代价是最大回撤从 ~15% 扩大到 ~20%——超额收益和风险控制永远在博弈。
2.3 report_normal(逐日归因——Qlib 特色)
Qlib 最独特的设计:把每一天的收益拆解为策略收益(return)、基准收益(bench)和交易成本(cost)三列。以下是前10行样本:
| 日期 | 策略收益 | 基准收益 | 成本 | 解读 |
|---|---|---|---|---|
| 2022-02-22 | 0.0000 | -0.0368 | 0.0 | 空仓,避开大盘3.68%的下跌 |
| 2022-02-23 | 0.0000 | +0.0106 | 0.0 | 空仓,错过大盘1.06%的反弹 |
| 2022-02-24 | 0.0000 | -0.0344 | 0.0 | 空仓,再次避开大盘3.44%的下跌 |
| 2022-02-25 | 0.0000 | +0.0198 | 0.0 | 空仓,再次错过大盘反弹 |
| 2022-02-28 | 0.0000 | -0.0048 | 0.0 | 空仓中 |
| …… | ||||
| 2023-03-21 | +0.0006 | +0.0177 | 0.0 | 小幅正收益 |
| 2023-03-27 | +0.0012 | +0.0103 | 0.0 | 策略和基准同步上涨 |
| 2023-04-04 | -0.0001 | -0.0036 | 0.0 | 微亏 |
逐日归因让你可以精确回答一个问题:策略在某一天赚了/亏了,多少来自市场的 Beta、多少来自策略的 Alpha、多少被交易成本吃掉?在 2022年2月22日大盘暴跌 3.68% 那天,策略空仓避开了全部下跌——这就是 Alpha 在极端行情下的价值。
2.4 positions_normal(持仓快照)
Qlib 还提供每日的持仓明细——持仓股数、现金余额和总权益:
| 日期 | 持仓股数 | 现金 | 总权益 | 状态 |
|---|---|---|---|---|
| 2022-02-22 | 0 | ¥1,000,000 | ¥1,000,000 | 空仓 |
| 2022-09-28 | 300 | ¥492,414 | ¥1,001,143 | 持有300股 |
| 2022-11-23 | 700 | ¥599 | ¥1,102,983 | 加仓至700股 |
这种逐日持仓追踪让你可以复盘任何一天的资金分配决策——"为什么那天只买了300股而不是全仓?""现金余额为什么这么高?"
2.5 日频统计分析
Qlib 按基准收益和超额收益两个维度分别做统计分析:
| 维度 | 均值 | 标准差 | 年化收益 | 信息比率 | 最大回撤 |
|---|---|---|---|---|---|
| 基准收益 | 0.006% | 1.63% | +1.44% | 0.056 | -33.99% |
| 超额收益(无成本) | 0.042% | 1.83% | +10.62% | 0.366 | -20.02% |
基准年化收益仅 +1.44%,而策略超额年化 +10.62%——超额收益是基准收益的7倍以上。这意味着策略赚的不是市场的钱,而是自己的钱。
2.6 输出文件
qlib_output/
├── qlib_backtest_result.json ← 完整回测结果
├── qlib_report.csv ← 逐日归因数据
├── qlib_positions.csv ← 逐日持仓快照
├── ️ qlib_equity_curve.png ← 权益曲线图
└── qlib_backtest_600519.py ← 回测脚本(可复现)
三、Step 1:环境准备
从 EasyClaw 官网下载并安装最新版。本文所有操作均通过自然语言对话完成,不需要手动安装 Qlib 及其 AI 模型依赖。
打开 EasyClaw → 左侧面板 →「Skill」→「Skill Creator」。如看不到该入口,在「设置 → 通用」中启用「开发者模式」后重启。
| 问题 | 解决方法 |
|---|---|
| Skill Creator 灰显 | 启用开发者模式后重启 |
| 网络连接失败 | 检查代理设置 |
四、Step 2:项目架构
从 GitHub 拉取 Qlib 项目(https://github.com/microsoft/qlib),展示目录结构,标注 Data/Model/Strategy/Backtest/Analysis 五层架构。
qlib/
├── qlib/
│ ├── data/ ← ★ 数据层(Data):数据源+特征工程
│ ├── model/ ← ★ 模型层(Model):AI预测模型(LightGBM/LSTM/Transformer)
│ ├── strategy/ ← ★ 策略层(Strategy):topk_dropout策略,将模型预测转化为交易信号
│ ├── backtest/ ← ★ 回测层(Backtest):事件驱动回测+逐日归因
│ └── analysis/ ← ★ 分析层(Analysis):report_normal + positions_normal + 日频统计
└── examples/
| 层 | 职责 |
|---|---|
| Data | 数据拉取+特征工程,生成模型可用的训练/测试数据 |
| Model | AI 模型训练和预测(LightGBM/LSTM等) |
| Strategy | 将模型预测分数转化为买卖信号(topk_dropout等) |
| Backtest | 事件驱动回测引擎,输出逐日归因 |
| Analysis | 日频统计分析+基准对比+超额归因 |
五、Step 3:参数与 Skill 创建
3.1 参数一览
| 参数 | 含义 | 默认值 | 说明 |
|---|---|---|---|
| symbol | 交易标的 | — | 必填 |
| start_date | 起始日期 | — | 至少覆盖2年 |
| end_date | 结束日期 | — | 格式 YYYY-MM-DD |
| initial_capital | 初始资金 | 1000000 | — |
| model_type | AI模型类型 | lightgbm | 可选:lightgbm/lstm/tft |
| topk | 持仓股票数 | 1 | 只做茅台时设为1 |
3.2 用自然语言创建 Skill
从 GitHub 拉取 Qlib 项目(https://github.com/microsoft/qlib),自动分析五层架构。
重点关注:
- data/:数据层,自动拉取行情+计算158个Alpha因子
- model/:AI模型训练(LightGBM预测未来收益)
- strategy/:topk_dropout策略,将预测分数转化为买卖信号
- backtest/:事件驱动回测,输出逐日归因(return/bench/cost)
- analysis/:日频统计+超额收益分析
额外加入能力:
- 自动拉取symbol的行情数据并计算Alpha因子
- 回测输出report_normal(策略收益/基准收益/成本三列)
- 回测输出positions_normal(持仓股数/现金/总权益)
封装为 EasyClaw Skill:
- 名称:Qlib回测
- 输入:symbol、start_date、end_date、initial_capital(默认1000000)、model_type(默认lightgbm)、topk(默认1)
- 输出:qlib_backtest_result.json + qlib_report.csv + qlib_positions.csv + qlib_equity_curve.png + 回测脚本
六、Step 4:运行与结果
4.1 启动
@Qlib回测 symbol=600519 start_date=2022-01-01 end_date=2023-12-31
4.2 核心发现
- 22.45% 是目前所有回测中绝对收益最高的:AI 模型驱动的策略显著跑赢了规则策略(双均线约11%)。但回撤也放大了——从~15%到~20%,超额收益的获取从来不是免费的
- 逐日归因让 Alpha 和 Beta 泾渭分明:2022年2月22日大盘暴跌3.68%,策略空仓避开全部下跌——但2月23日大盘反弹1.06%,策略也错过了。逐日归因让你精确衡量空仓避险和空仓踏空之间的平衡
- 超额年化10.62% = 基准年化1.44% × 7.4倍:策略的盈利核心不是市场方向的判断,而是独立于大盘的选股/择时能力
4.3 效率对比
| 环节 | 手动操作 | EasyClaw Skill |
|---|---|---|
| 环境+模型训练 | 约2-3小时 | 0 分钟 |
| 回测+报告 | 约30分钟 | 一键输出 |
| 总计 | 约2.5-3.5小时 | — |
七、Step 5:进阶与常见问题
5.1 切换AI模型
@Qlib回测 symbol=600519 model_type=lstm ← 用LSTM替代LightGBM
5.2 常见问题
| 错误 | 原因 | 解决方法 |
|---|---|---|
| 模型训练时间过长 | 特征因子太多或数据量太大 | 减少训练数据的时间跨度 |
| 回测收益为0 | 策略从未触发买入信号 | 检查topk参数设置,确认模型预测分数是否正常 |
八、总结
Qlib 代表了量化投资平台的专业标准——五层架构从数据到分析形成完整闭环,逐日归因让策略的每一次决策都可追溯、可归因。贵州茅台的 AI 模型回测取得了22.45%的绝对收益(基准仅-11.53%),超额年化10.62%,但回撤也拉大到了-20.02%。这再次印证了投资中的铁律:不存在"收益高+回撤低"的神器——任何策略都是在收益和风险两个维度上做取舍。Qlib 的逐日归因帮你精确量化这个取舍。
下一步可以尝试:
- 多模型对比:同一标的跑 LightGBM vs LSTM vs Transformer,看哪种AI模型更适合A股
- 多标的Alpha挖掘:用Qlib的158个Alpha因子在白酒板块五只股票上同时回测,找最优标的+模型组合
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=712
- Qlib GitHub:https://github.com/microsoft/qlib
22.45%的高收益配20.02%的高回撤,你觉得这个风险收益比可以接受吗?还是更偏好那种回撤小但收益也低的保守策略?欢迎分享你的风险偏好。

浙公网安备 33010602011771号