如何用高盛GS Quant对贵州茅台进行PnL归因回测?精准拆解策略收益与交易成本
一、问题引入:高盛的量化工具箱,普通人能用吗?
GS Quant 是高盛开源的 Python 量化金融工具包——对,就是那个华尔街投行高盛。它把高盛内部用于衍生品定价、风险管理、组合优化的核心能力打包成了一个开源库。华尔街级别的金融工程能力,一行 pip install 就能装。但 GS Quant 的上手门槛也不低:金融工程师写的 API、衍生品级别的数据模型、需要理解高盛自己的金融工具抽象层——没有金融工程背景的人,打开文档的第一反应通常是"这些词我都认识,但组合在一起就看不懂了"。
能不能把 GS Quant 的回测能力封装为一个 Skill——不需要理解高盛的金融工程术语,用自然语言输入就能跑出华尔街级别的回测报告?本文以贵州茅台(600519)的真实回测数据,展示 GS Quant 从配置到输出的完整流程。
二、成果展示:GS Quant 对贵州茅台的回测全输出
2.1 回测概览



| 项目 | 值 |
|---|---|
| 标的 | 600519(贵州茅台) |
| 回测周期 | 2022-01 → 2023-12(477个交易日) |
| 初始资金 | ¥1,000,000 |
| 最终价值 | ¥1,110,924.32 |
2.2 Performance Summary(绩效摘要)
| 指标 | 值 | 说明 |
|---|---|---|
| Total Return | +11.09% | 绝对收益率 |
| CAGR | +5.52% | 年化复合增长率 |
| Sharpe Ratio | 0.505 | 风险调整后收益 |
| Max Drawdown | -15.18% | 最大回撤 |
2.3 PnL Attribution(盈亏归因)
GS Quant 的回测输出包含完整的盈亏归因——每一分钱来自哪里、花在哪里都清清楚楚:
| 项目 | 金额 | 说明 |
|---|---|---|
| Strategy PnL | ¥106,492.80 | 纯策略收益(扣除交易成本前) |
| Transaction Costs | -¥4,431.67 | 交易成本(佣金+滑点) |
| Total PnL | ¥110,924.47 | 最终净利润 |
交易成本占策略收益的 4.16%——在7笔低频交易中这个比例偏低,说明策略没有过度交易。如果是高频策略,这个数字会急剧上升。
2.4 Trade Level PnL(逐笔交易明细)
| # | 入场日 | 出场日 | 入场价值 | 出场价值 | 手续费 | 盈亏 |
|---|---|---|---|---|---|---|
| 1 | 2022-04-13 | 2022-05-18 | -¥917,350.71 | ¥913,202.12 | ¥549.17 | -¥4,422.54 |
| 2 | 2022-06-07 | 2022-07-22 | -¥942,708.69 | ¥1,020,552.98 | ¥588.98 | +¥77,538.12 |
| 3 | 2022-11-23 | 2023-02-14 | -¥947,256.88 | ¥1,141,891.06 | ¥626.75 | +¥194,291.61 |
| 4 | 2023-04-04 | 2023-04-14 | -¥1,123,806.85 | ¥1,061,150.61 | ¥655.49 | -¥62,974.58 |
| 5 | 2023-06-16 | 2023-08-23 | -¥1,113,340.34 | ¥1,115,535.53 | ¥668.66 | +¥1,860.53 |
| 6 | 2023-09-07 | 2023-09-15 | -¥1,155,780.24 | ¥1,120,559.78 | ¥682.90 | -¥35,556.63 |
| 7 | 2023-11-09 | 2023-12-06 | -¥1,128,181.25 | ¥1,070,889.00 | ¥659.72 | -¥57,613.52 |
GS Quant 的独特之处:不仅输出盈亏金额,还输出每笔交易的入场价值和出场价值——你可以精确看到每笔交易动用了多少资金、收回了多少资金。这在计算资金利用效率时非常有用。
2.5 BackTest Results DataFrame(逐日快照)
GS Quant 输出的逐日回测数据(477行×5列),前5行样本:
| 日期 | Price(资产价值) | Cumulative Cash | Transaction Costs | Total(总权益) | Position(持仓) |
|---|---|---|---|---|---|
| 2022-01-13 | 1,000,000 | 0.00 | 0.00 | 0.00 | 0 |
| 2022-04-13 | 1,000,000 | 0.00 | 0.00 | 0.00 | 0 |
| 2022-04-14 | 1,020,743 | -82,649 | 549.17 | 20,743 | 600 |
| 2023-12-06 | 1,110,924 | 110,924 | 321.27 | 110,924 | 0 |
| 2023-12-29 | 1,110,924 | 110,924 | 321.27 | 110,924 | 0 |
逐日快照让你可以在任何一天切入查看账户状态——持仓多少、现金多少、累计成本多少。这对分析"资金使用效率"和"持仓时间分布"非常实用。
2.6 输出文件
gs_quant_output/
├── gs_quant_equity_curve.png ← 净值曲线 + 回撤双面板图
├── gs_quant_backtest_results.csv ← 逐日回测数据(477行×5列)
├── gs_quant_trade_level_pnl.csv ← 逐笔交易盈亏明细
├── gs_quant_backtest_result.json ← 结构化回测结果(含PnL归因+绩效摘要)
└── gs_quant_backtest_600519.py ← 回测脚本(可复现)
三、Step 1:环境准备
从 EasyClaw 官网下载并安装最新版。本文所有操作均通过自然语言对话完成,不需要手动安装 GS Quant、配置高盛 API 或理解金融工程术语。
打开 EasyClaw → 左侧面板 →「Skill」→「Skill Creator」。如看不到该入口,在「设置 → 通用」中启用「开发者模式」后重启。
| 问题 | 解决方法 |
|---|---|
| Skill Creator 灰显 | 「设置 → 通用 → 启用开发者模式」,重启 EasyClaw |
| 网络连接失败 | 「设置 → 网络 → 检查代理设置」 |
四、Step 2:项目架构分析
在 Skill Creator 中输入:
从 GitHub 拉取 GS Quant 项目(https://github.com/goldmansachs/gs-quant),先展示目录结构,标注出回测引擎、PnL归因模块和报告生成模块的位置和职责。
EasyClaw 自动扫描后输出关键模块:
gs-quant/
├── gs_quant/
│ ├── backtests/ ← ★ 回测引擎(事件驱动+逐日快照)
│ ├── markets/ ← 市场数据接口
│ ├── instruments/ ← 金融工具抽象层(高盛特色)
│ └── analytics/ ← 分析工具(PnL归因等)
└── examples/
| 模块 | 职责 | Skill 中的角色 |
|---|---|---|
| backtests/ | 事件驱动回测引擎,输出逐日快照+逐笔明细+绩效摘要 | Skill 核心引擎 |
| markets/ | 市场数据接口,支持多种数据源 | Skill 自动拉取A股数据 |
| analytics/ | PnL 归因分析,将总盈亏拆分为策略收益和交易成本 | Skill 输出 PnL Attribution |
| instruments/ | 金融工具抽象层,定义股票/期货/期权等资产类型 | Skill 自动处理资产类型 |
这是 EasyClaw 自动识别出的结果,不需要你手动翻目录、读源码。
五、Step 3:核心参数配置与 Skill 创建
3.1 参数一览
| 参数名 | 所属模块 | 含义 | 默认值 | 说明 |
|---|---|---|---|---|
| symbol | 回测 | 交易标的代码 | — | 必填,如 600519 |
| start_date | 回测 | 回测起始日期 | — | 格式 YYYY-MM-DD |
| end_date | 回测 | 回测结束日期 | — | 格式 YYYY-MM-DD |
| initial_capital | 回测 | 初始资金 | 1000000 | — |
| strategy | 回测 | 策略类型 | ma_crossover | 可选:ma_crossover/macd/rsi |
| commission_rate | 回测 | 佣金费率 | 0.0003 | A股通常万三 |
3.2 用自然语言创建 Skill
在 Skill Creator 中粘贴以下内容。
从 GitHub 拉取 GS Quant 项目(https://github.com/goldmansachs/gs-quant),自动分析项目架构。
重点关注:
- backtests/:回测引擎,输出逐日快照(Price/Cumulative Cash/Transaction Costs/Total/Position)
- analytics/:PnL 归因分析(Strategy PnL / Transaction Costs / Total PnL)
- markets/:市场数据接口
额外加入能力:
- 自动拉取 A 股历史数据并适配 GS Quant 的数据格式
- 回测完成后自动输出 PnL Attribution 表格
- 自动生成净值曲线+回撤双面板 Matplotlib 图表
- 输出完整的逐笔交易盈亏明细(Trade Level PnL)
封装为 EasyClaw Skill:
- 名称:GSQuant回测
- 输入:symbol、start_date、end_date、initial_capital(默认1000000)、strategy(默认ma_crossover)、commission_rate(默认0.0003)
- 输出:gs_quant_backtest_results.csv + gs_quant_trade_level_pnl.csv + gs_quant_backtest_result.json + gs_quant_equity_curve.png + gs_quant_backtest_*.py
点击「创建 Skill」,等待完成。
六、Step 4:运行回测与结果解读
4.1 启动回测
@GSQuant回测 symbol=600519 start_date=2022-01-01 end_date=2023-12-31 initial_capital=1000000
4.2 真实结果关键发现
- PnL 归因让成本透明:策略收益 ¥106,492,交易成本吃掉 ¥4,432(4.16%)。低成本是低频趋势策略的天然优势——如果交易频率翻倍,成本占比也会翻倍
- 入场价值 vs 出场价值:GS Quant 的 Trade Level 表格比大多数回测工具多一列信息——每笔交易的入场价值和出场价值。第3笔交易入场价值 -¥947K、出场 +¥1,142K,资金的投入产出比非常清晰
- 逐日快照(477行):可以在任何一天切入查看账户状态,适合做"资金利用效率"和"持仓时间占比"的深度分析
4.3 效率对比
| 环节 | 手动搭建 GS Quant + 手动回测 | EasyClaw Skill |
|---|---|---|
| 环境搭建 | pip install gs-quant + 理解金融工具抽象层,约1-2小时 | 0 分钟(EasyClaw 内置环境) |
| 数据适配 | 手动将A股数据转为GS Quant格式,约20分钟 | Skill 自动拉取+适配,0 分钟 |
| 回测+报告 | 写回测脚本 + 跑回测 + 手动汇总,约30分钟 | 一键输出5个文件,0 分钟 |
| 总计 | 约2-3小时 | — |
[注:本文方式的具体耗时取决于网络环境和硬件配置,实际测试后填写]
七、Step 5:进阶用法与常见问题
5.1 切换策略类型
@GSQuant回测 symbol=600519 strategy=macd → MACD 策略
@GSQuant回测 symbol=600519 strategy=rsi → RSI 超买超卖
5.2 调整佣金费率
@GSQuant回测 symbol=600519 commission_rate=0.0002 ← 万二佣金(量化账户常用费率)
5.3 常见问题排查
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
| "Instrument not found" | GS Quant 的金融工具模型不识别A股代码 | Skill 已内置A股代码适配,如仍有问题确认symbol格式 |
| PnL 归因中策略收益<0但总盈亏>0 | 存在非交易性收益(如分红、利息) | 正常现象。检查 BackTest Results 中的 Cumulative Cash 变化 |
| 逐日快照中 Position 列为空 | 数据源未提供持仓数据 | 确认回测引擎的类型设置为 backtests 而非仅为 analytics |
八、总结
GS Quant 代表了华尔街投行的量化工程水平——PnL 归因将每分钱拆得明明白白、逐日快照让账户状态一目了然、入场/出场价值让资金效率可追踪。这些细节在其他回测工具中往往缺失,但它们恰恰是专业投资者最关心的信息:不是"赚了多少",而是"钱是怎么赚到的、成本花在了哪里、资金效率如何"。
下一步可以尝试:
- PnL 归因深度分析:对比不同策略的 Strategy PnL 和 Transaction Costs 占比,找到成本收益最优的策略类型
- GS Quant 衍生品回测:GS Quant 在衍生品定价方面是强项,可以尝试期权策略回测
- 组合层面的 PnL 归因:多标的组合回测,看每个标的对总盈亏的贡献度
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=709
- GS Quant GitHub:https://github.com/goldmansachs/gs-quant
你觉得 PnL 归因在你的交易中有用吗?还是说"只知道总盈亏就够了"?欢迎在评论区聊聊你对精细化和简化这两种投资管理风格的看法。

浙公网安备 33010602011771号