gs-quant 量化回测快速上手:从鉴权到策略跑通的完整教程
【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant
gs-quant 是高盛量化团队打造的 Python 量化金融工具包,专治量化团队每天的三件头疼事:衍生品定价、组合风险管理和策略回测。它基于 25 年的市场风险平台打磨而来,读到这里读完,你就能在自己的环境里完成一次真实的量化回测,并知道怎么把它跑得又稳又安全。
gs-quant 能帮你解决什么
- 当你有一个新策略,想先看它在过去十年的行情里会不会亏钱时,gs-quant 的回测引擎可以按历史数据回放你的调仓动作,算出逐期盈亏。
- 当你手里有一堆期权、远期等衍生品,想搞清楚组合整体风险敞口时,gs-quant 可以一次定价整个组合,给你 delta、vega、P&L 这些指标。
- 当你需要拉历史行情做统计分析时,gs-quant 可以直接取数据序列,再叠加相关系数、波动率、回撤等计算,不用自己拼数据管道。
上手:从 0 到跑通第一次量化回测
1. 准备环境
gs-quant 需要 Python 3.9+,装包只要一行:
pip install gs-quant这么做是因为时间序列分析、定价、回测这些模块都在同一个包里,不用你自己拼依赖。
2. 登录鉴权
所有 API 调用都需要 client id 和 secret,向高盛的销售或 Marquee Sales 申请即可。代码里一行GsSession.use完成鉴权:
from gs_quant import GsSession GsSession.use(client_id="你的id", client_secret="你的secret", scopes=('read_product_data', 'run_analytics'))只申请这两个 scope 是因为权限最小化——你只是读数据和跑分析,全量权限列表定义在 gs_quant/session.py 里,用哪个申请哪个。
3. 跑一次真实定价 🚀
最简路径是定一个组合,跑通鉴权到结果的全链路:
from gs_quant.markets import Portfolio, MarqueePricingContext portfolio = Portfolio({'EURUSD': 1.0}) # 一单位 EURUSD result = portfolio.price(MarqueePricingContext()) print(result.pricing)会返回一个含 P&L 和风险指标的 DataFrame。要做真正的策略回测,gs_quant/backtests/ 下的通用引擎支持定义再平衡、加仓、平仓等动作序列并回放历史窗口:
from gs_quant.backtests import GenericBacktestEngine # 策略动作、历史区间、风险计量等完整参数 # 见官方 notebook,照着抄即可完整可运行的示例就在 gs_quant/documentation/04_backtesting/,里面从预定义引擎到自定义引擎都有 notebook。
进阶配置:让量化回测更稳
改什么:GsSession 的 environment 参数怎么改:
from gs_quant.session import Environment GsSession.use(Environment.PROD, client_id="你的id", client_secret="你的secret")效果:默认连的是 DEV 环境,数据和权限跟生产不一样。切到 PROD 后,回测用的就是真实行情。
改什么:scopes 权限范围怎么改:
GsSession.use(client_id="你的id", client_secret="你的secret", scopes=('read_product_data',)) # 只读效果:token 权限越小,泄露时影响面越小。run_analytics只有在跑分析任务时才需要加。
改什么:超时与重试(一般不用手动改)🔧怎么改:
# session.py 内置:65 秒超时,指数退避最多重试 5 次 from gs_quant.session import DEFAULT_TIMEOUT print(DEFAULT_TIMEOUT) # 65效果:行情服务偶尔 502 或超时时,请求会自动退避重试,回测脚本不会因一次网络抖动就挂掉。
怎么确认配置真的生效了
# 1. 包已安装且可导入 python -c "import gs_quant; print(gs_quant.__version__)"看到版本号输出、没有 ModuleNotFoundError 就是正常的。
# 2. 鉴权链路通了 python -c "from gs_quant import GsSession; GsSession.use(client_id='id', client_secret='sec', scopes=('read_product_data',)); print('ok')"打印ok且没有抛 MqAuthenticationError,说明凭据有效。
# 3. 端到端定价能出结果 python -c "from gs_quant.markets import Portfolio, MarqueePricingContext; print(Portfolio({'EURUSD': 1.0}).price(MarqueePricingContext()).pricing.shape)"看到形如(1, n)的形状输出,全链路就通了。
踩过的坑
现象:启动就报 MqAuthenticationError。原因:client id/secret 是空的或过期了——gs-quant 的 API 只对机构客户开放,没有匿名通道。解决:找销售要正式凭据,别拿占位符跑:
GsSession.use(client_id="真实id", client_secret="真实secret")现象:回测数据是空的,同事同样的代码却跑得出结果。原因:你没指定环境,默认连 DEV,数据和生产对不上。解决:显式指定 PROD:
GsSession.use(Environment.PROD, client_id="你的id", client_secret="你的secret")现象:大组合定价超时或反复 502。原因:单请求太重,一次塞了几百个产品。解决:分批定价再合并,让内置重试兜底:
results = portfolio.price_many([ctx]) # 分批处理接下来可以看看
教程体系从数据集、组合到回测都有可运行的 notebook,推荐入口是 04_backtesting 目录,里面的 GenericEngine 示例值得逐行读一遍。
如果你的策略是围绕一篮子股票或指数建的,gs_quant/documentation/06_baskets/ 里的篮子调仓和再平衡示例能让你少走很多弯路——把第一个策略跑通之后,真正的乐趣才刚开始。
【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考