GS Quant 项目中的投资组合(Portfolio)使用教程
前言
在金融量化分析中,经常需要同时处理多个金融工具(instruments)。GS Quant 项目提供的 Portfolio 类可以简化这一过程,让用户能够以统一的方式管理和操作一组金融工具。本文将详细介绍 Portfolio 的功能和使用方法。
准备工作
在使用 Portfolio 功能前,需要先初始化 GsSession 并获取相应的权限。run_analytics
权限是必需的。
from gs_quant.session import GsSession
GsSession.use(client_id=None, client_secret=None, scopes=('run_analytics',))
什么是 Portfolio
Portfolio 是金融工具的集合,它简化了对多个金融工具进行操作时的语法和计算过程。Portfolio 继承了 Priceable 类的所有方法,包括 price
、as_dict
和 calc
等。即使在 Portfolio 层面执行这些操作,用户仍然可以访问组合中单个金融工具的结果。
创建 Portfolio
首先,我们需要创建一些金融工具作为 Portfolio 的组成部分。以下示例创建了两个欧元利率互换期权(IRSwaption):
from gs_quant.instrument import IRSwaption
from gs_quant.common import PayReceive, Currency
swaption1 = IRSwaption(PayReceive.Pay, '5y', Currency.EUR, expiration_date='3m', name='EUR-5y3m')
swaption2 = IRSwaption(PayReceive.Pay, '5y', Currency.EUR, expiration_date='6m', name='EUR-5y6m')
然后,我们可以导入 Portfolio 类并将这两个互换期权加入组合:
from gs_quant.markets.portfolio import Portfolio
portfolio = Portfolio((swaption1, swaption2))
也可以通过直接赋值的方式设置或重置 Portfolio 的组成:
portfolio.pricables = (swaption1, swaption2)
访问 Portfolio 中的特定金融工具
Portfolio 提供了多种方式来访问其中的金融工具:
- 通过位置索引
- 通过金融工具对象本身
- 通过金融工具的名称
portfolio[0] # 通过位置
portfolio[swaption2] # 通过金融工具对象
portfolio['EUR-5y6m'] # 通过名称
Portfolio 的操作方法
Portfolio 支持与单个金融工具相同的操作方法,包括 resolve
、price
和 calc
等。所有计算都可以在 Portfolio 层面进行汇总。
基本操作示例
portfolio.resolve() # 解析组合
portfolio.price().aggregate() # 定价并汇总结果
风险指标计算
Portfolio 可以计算各种风险指标,如美元价格(DollarPrice)和利率风险(IRDelta):
import gs_quant.risk as risk
result = portfolio.calc((risk.DollarPrice, risk.IRDelta))
访问单个金融工具的结果
可以通过两种方式访问组合中单个金融工具的计算结果:
result[risk.DollarPrice]['EUR-5y3m'] # 先指定风险指标再指定金融工具
result['EUR-5y3m'][risk.DollarPrice] # 先指定金融工具再指定风险指标
汇总 Portfolio 层面的结果
使用 aggregate
方法可以汇总整个 Portfolio 的结果:
price = result[risk.DollarPrice].aggregate()
delta = result[risk.IRDelta].aggregate()
实际应用建议
- 命名规范: 为 Portfolio 中的金融工具设置有意义的名称,便于后续引用和分析。
- 批量操作: 利用 Portfolio 的批量操作特性,可以显著提高计算效率。
- 结果分析: 既关注组合层面的汇总结果,也关注单个金融工具的详细表现。
- 动态调整: 根据市场变化或策略需要,灵活调整 Portfolio 的组成。
总结
GS Quant 的 Portfolio 功能为金融量化分析提供了强大的工具集,使得管理多个金融工具变得简单高效。通过本教程的学习,您应该已经掌握了 Portfolio 的创建、操作和结果分析方法,可以在实际工作中灵活运用这些技术进行投资组合管理和风险分析。