如何用高盛GS Quant对贵州茅台进行PnL归因回测?精准拆解策略收益与交易成本

一、问题引入:高盛的量化工具箱,普通人能用吗?

GS Quant 是高盛开源的 Python 量化金融工具包——对,就是那个华尔街投行高盛。它把高盛内部用于衍生品定价、风险管理、组合优化的核心能力打包成了一个开源库。华尔街级别的金融工程能力,一行 pip install 就能装。但 GS Quant 的上手门槛也不低:金融工程师写的 API、衍生品级别的数据模型、需要理解高盛自己的金融工具抽象层——没有金融工程背景的人,打开文档的第一反应通常是"这些词我都认识,但组合在一起就看不懂了"。

能不能把 GS Quant 的回测能力封装为一个 Skill——不需要理解高盛的金融工程术语,用自然语言输入就能跑出华尔街级别的回测报告?本文以贵州茅台(600519)的真实回测数据,展示 GS Quant 从配置到输出的完整流程。

二、成果展示:GS Quant 对贵州茅台的回测全输出

2.1 回测概览

image

 

image

 

gs_quant_equity_curve

 

项目
标的 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 CashTransaction CostsTotal(总权益)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 归因:多标的组合回测,看每个标的对总盈亏的贡献度

资源链接:

你觉得 PnL 归因在你的交易中有用吗?还是说"只知道总盈亏就够了"?欢迎在评论区聊聊你对精细化和简化这两种投资管理风格的看法。

posted @ 2026-07-24 17:14  PC修复电脑医生  阅读(2)  评论(0)    收藏  举报