GS Quant 宏风险模型上传与使用指南
2025-07-06 08:16:40作者:廉皓灿Ida
概述
在金融量化分析领域,风险模型是评估投资组合风险的重要工具。GS Quant 提供的 MacroRiskModel
类允许用户上传自定义的宏风险模型,并与 Marquee 投资组合分析工具无缝集成。本文将详细介绍如何使用 GS Quant 创建、上传和查询宏风险模型。
准备工作
环境初始化
首先需要导入必要的模块并初始化会话:
from gs_quant.session import GsSession, Environment
from gs_quant.models.risk_model import MacroRiskModel, RiskModelCalendar, Term, CoverageType, UniverseIdentifier
# 配置客户端凭证
client = '您的客户端ID'
secret = '您的客户端密钥'
# 初始化会话
GsSession.use(Environment.PROD, client_id=client, client_secret=secret)
print('GS 会话初始化完成')
创建宏风险模型
模型参数说明
创建宏风险模型时需要指定以下关键参数:
参数名称 | 是否可修改 | 描述 |
---|---|---|
id | 否 | 模型唯一标识符 |
name | 是 | 模型名称 |
description | 是 | 模型详细描述 |
term | 是 | 模型期限(长期/中期/短期) |
coverage | 是 | 资产覆盖范围(全球/地区/国家等) |
vendor | 是 | 模型供应商 |
version | 是 | 模型版本 |
universe_identifier | 否 | 资产标识符类型(SEDOL/CUSIP等) |
entitlements | 是 | 模型访问权限设置 |
创建模型实例
model_id = 'MY_MODEL'
model_name = '我的风险模型'
description = '我的自定义宏风险模型'
term = Term.Medium # 中期模型
coverage = CoverageType.Country # 国家级别覆盖
universe_identifier = UniverseIdentifier.sedol # 使用SEDOL作为资产标识符
vendor = 'Goldman Sachs'
model = MacroRiskModel(
id_=model_id,
name=model_name,
description=description,
coverage=coverage,
term=term,
universe_identifier=universe_identifier,
vendor=vendor,
version=1,
)
model.save() # 保存模型
上传模型日历
风险模型日历定义了模型应包含数据的日期,确保数据完整性:
calendar = RiskModelCalendar([
'2021-01-29',
'2021-01-28',
# 更多日期...
'2021-01-01'
])
model.upload_calendar(calendar)
上传模型数据
数据结构要求
完整的数据上传需要包含两部分:
-
因子数据:
- factorId: 因子唯一标识
- factorName: 因子显示名称
- factorCategoryId: 因子类别ID
- factorCategory: 因子类别名称
- factorReturn: 因子日收益率(%)
-
资产数据:
- universe: 资产列表
- factorExposure: 资产因子暴露度
- specificRisk: 年化特定风险(%)
- totalRisk: 总风险(%,可选)
- historicalBeta: 历史贝塔(%,可选)
完整数据上传示例
data = {
'date': '2021-01-13',
'assetData': {
'universe': ['B02V2Q0', '6560713', 'B3Q15X5', '0709954'],
'specificRisk': [12.09, 45.12, 3.09, 1.0],
'factorExposure': [
{'1': 0.23, '2': 0.023},
{'1': 0.023, '2': 2.09, '3': 0.3},
# 更多资产因子暴露...
],
'totalRisk': [12.7, 45.5, 12.7, 10.3],
},
'factorData': [
{
'factorId': '1',
'factorName': 'USD',
'factorCategory': 'Currency',
'factorCategoryId': 'CUR',
'factorReturn': 0.5,
},
# 更多因子数据...
],
}
model.upload_data(data)
查询模型数据
上传数据后,可以使用多种指标查询模型数据:
from gs_quant.models.risk_model import Measure, DataAssetsRequest
import datetime as dt
# 获取模型实例
model = MacroRiskModel.get(model_id)
# 设置查询参数
start_date = dt.date(2021, 1, 13)
end_date = dt.date(2021, 1, 13)
# 定义查询指标
data_measures = [
Measure.Universe_Factor_Exposure,
Measure.Asset_Universe,
Measure.Specific_Risk,
# 更多指标...
]
# 执行查询
macro_factor_data = model.get_data(
data_measures,
start_date,
end_date,
DataAssetsRequest(universe_identifier.value, []),
limit_factors=True
)
最佳实践
- 数据一致性:确保因子ID和名称在整个时间序列中保持一致
- 日历完整性:上传数据前确保日历日期完整且无间断
- 数据验证:上传后立即查询验证数据准确性
- 增量更新:对于大规模数据,考虑分批上传
通过以上步骤,您可以成功创建、上传和查询自定义宏风险模型,为投资组合分析提供强大的风险评估工具。