ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

gs-quant IndicesDatasets 枚举解析:篮子与指数数据集标识符的选型、路由与调用指南

2026/9/15 18:53:39 拓冰建站 浏览量
gs-quant IndicesDatasets 枚举解析:篮子与指数数据集标识符的选型、路由与调用指南 gs-quant IndicesDatasets 枚举解析篮子与指数数据集标识符的选型、路由与调用指南【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant导读IndicesDatasets是 gs-quant 中用于统一标识 Marquee 平台上索引、篮子Basket及其成分数据集的枚举类它把CA、GSBASKETCONSTITUENTS、GSCB_FLAGSHIP这类底层数据集 ID 封装成语义化的常量供篮子基本面、公司行动、成分构成、STS 指数、主题贝塔等数据查询使用。阅读本文后你将掌握IndicesDatasets全部成员的取值与用途、它如何在源码中被路由和消费以及如何通过高层 API如Basket.get_corporate_actions、Stock.get_thematic_beta间接使用这些数据集并能在需要时直接以GsDataApi.query_data完成底层查询。一、定位IndicesDatasets 是什么在 gs_quant/markets/indices_utils.py 中IndicesDatasets被定义为继承EnumBase, Enum的枚举类class IndicesDatasets(EnumBase, Enum): Indices Datasets BASKET_FUNDAMENTALS BASKET_FUNDAMENTALS COMPOSITE_THEMATIC_BETAS COMPOSITE_THEMATIC_BETAS CREDIT_EOD_PRICING_V1_STANDARD CREDIT_EOD_PRICING_V1_STANDARD CORPORATE_ACTIONS CA GIRBASKETCONSTITUENTS GIRBASKETCONSTITUENTS GSBASKETCONSTITUENTS GSBASKETCONSTITUENTS GSCB_FLAGSHIP GSCB_FLAGSHIP GSCREDITBASKETCONSTITUENTS GSCREDITBASKETCONSTITUENTS STS_FUNDAMENTALS STS_FUNDAMENTALS STS_INDICATIVE_LEVELS STS_INDICATIVE_LEVELS THEMATIC_FACTOR_BETAS_STANDARD THEMATIC_FACTOR_BETAS_V2_STANDARD def __repr__(self): return self.value与之配套的官方 API 参考页 docs/classes/gs_quant.markets.indices_utils.IndicesDatasets.rst 通过autoclass与autosummary收录了该枚举及其核心属性说明它是被文档化支持的公共 API 之一。从实现上看EnumBase定义于 gs_quant/base.py为枚举提供了与 gs-quant 序列化、JSON 编码体系兼容的基础能力__repr__直接返回self.value意味着打印成员时得到的是真实的数据集 ID 字符串——这正是传给数据查询 API 的关键参数。需要特别强调的是IndicesDatasets中的常量名与其底层值并不总是同名。最典型的是CORPORATE_ACTIONS CA和THEMATIC_FACTOR_BETAS_STANDARD THEMATIC_FACTOR_BETAS_V2_STANDARD前者把不易理解的缩写CA映射为清晰的语义名后者表明当前使用的主题因子贝塔数据集是V2版本尽管常量名本身不含版本号。这正是该枚举存在的意义——屏蔽底层数据集命名细节为上层 API 提供稳定的符号化入口。二、成员速查表11 个数据集标识符IndicesDatasets共定义了 11 个成员覆盖篮子基本面、公司行动、成分构成、旗舰篮子、信用篮子、STS 指数与主题贝塔等数据域。下表整理自 indices_utils.py 的源码定义成员名数据集 IDvalue数据域与用途BASKET_FUNDAMENTALSBASKET_FUNDAMENTALS篮子基本面指标股息率、估值等见下文get_fundamentalsCOMPOSITE_THEMATIC_BETASCOMPOSITE_THEMATIC_BETAS组合主题贝塔用于实体Entity维度计算CREDIT_EOD_PRICING_V1_STANDARDCREDIT_EOD_PRICING_V1_STANDARD信用类资产 EOD收盘定价数据V1标准版CORPORATE_ACTIONSCA公司行动拆分、分红、并购等取值缩写为CAGIRBASKETCONSTITUENTSGIRBASKETCONSTITUENTSGSIndexResearch 篮子成分研究篮子构成GSBASKETCONSTITUENTSGSBASKETCONSTITUENTSGS 自定义篮子成分自定义篮子构成GSCB_FLAGSHIPGSCB_FLAGSHIPGS 旗舰篮子Custom Basket Flagship价格数据GSCREDITBASKETCONSTITUENTSGSCREDITBASKETCONSTITUENTSGS 信用篮子成分STS_FUNDAMENTALSSTS_FUNDAMENTALSSTSSystematic Trading Strategies指数基本面STS_INDICATIVE_LEVELSSTS_INDICATIVE_LEVELSSTS 指数指示性点位水平THEMATIC_FACTOR_BETAS_STANDARDTHEMATIC_FACTOR_BETAS_V2_STANDARD个股相对篮子的主题因子贝塔当前为 V2 标准版对应文档页 IndicesDatasets.rst 的 Attributes 区重点列出了BASKET_FUNDAMENTALS、CORPORATE_ACTIONS、GIRBASKETCONSTITUENTS、GSBASKETCONSTITUENTS、GSCB_FLAGSHIP五个属性它们是篮子数据查询中最常用的数据集其余成员则在 STS 指数、主题贝塔等场景中发挥作用。三、源码内部路由如何按资产类别与篮子类型选数据集IndicesDatasets不只是一个常量表它还承担着数据集选型路由的职责。在 indices_utils.py 中有一个内部函数__get_dataset_iddef __get_dataset_id(asset_class: AssetClass, basket_type: BasketType, data_type: str) - str: if asset_class AssetClass.Equity or asset_class AssetClass.Equity.value: if data_type price: return IndicesDatasets.GSCB_FLAGSHIP.value elif basket_type BasketType.CUSTOM_BASKET or basket_type BasketType.CUSTOM_BASKET.value: return IndicesDatasets.GSBASKETCONSTITUENTS.value else: return IndicesDatasets.GIRBASKETCONSTITUENTS.value raise NotImplementedError(f{data_type} data for {asset_class} baskets is unsupported at this time)从这段逻辑可以清晰看出成员之间的分工股票Equity篮子的价格数据→GSCB_FLAGSHIP旗舰篮子价格股票自定义篮子BasketType.CUSTOM_BASKET→GSBASKETCONSTITUENTS自定义篮子成分股票研究篮子其他类型→GIRBASKETCONSTITUENTS研究篮子成分非股票资产类当前直接抛出NotImplementedError提示该资产类的数据暂不支持。与之配套的公开函数get_constituents_dataset_coverage()会返回各成分数据集的覆盖情况其 docstring 中给出了三个典型调用见 indices_utils.pyGSBASKETCONSTITUENTS_COVERAGE get_constituents_dataset_coverage() GIRBASKETCONSTITUENTS_COVERAGE get_constituents_dataset_coverage(basket_typeBasketType.RESEARCH_BASKET) GSCREDITBASKETCONSTITUENTS_COVERAGE get_constituents_dataset_coverage(asset_classAssetClass.Credit)即默认查询自定义篮子成分覆盖GSBASKETCONSTITUENTS传入BasketType.RESEARCH_BASKET查询研究篮子成分覆盖GIRBASKETCONSTITUENTS传入AssetClass.Credit查询信用篮子成分覆盖GSCREDITBASKETCONSTITUENTS。在官方文档示例 0005_get_basket_composition_dataset_coverage.ipynb 中可以看到完全一致的三段式用法。四、消费链路从高层 API 到数据集 IDIndicesDatasets的成员并非被直接使用而是经由 gs-quant 的高层业务 API 间接消费——这些 API 内部将枚举成员.value传给GsDataApi发起数据查询。以下是几条可验证的核心调用链。4.1 篮子公司行动CORPORATE_ACTIONS在 gs_quant/markets/baskets.py 的Basket.get_corporate_actions中where dict(assetIdself.id, corporateActionTypeca_type) query DataQuery(wherewhere, start_datestart, end_dateend) response GsDataApi.query_data(queryquery, dataset_idIndicesDatasets.CORPORATE_ACTIONS.value) return pd.DataFrame(response)方法参数ca_type接受 CorporateActionType 枚举支持ACQUISITION收购、CASH_DIVIDEND现金分红、IDENTIFIER_CHANGE标识变更、RIGHTS_ISSUE配股、SHARE_CHANGE股本变更、SPECIAL_DIVIDEND特别分红、SPIN_OFF分拆、STOCK_DIVIDEND股票分红、STOCK_SPLIT拆股等类型。官方示例用法from gs_quant.markets.baskets import Basket from gs_quant.markets.indices_utils import CorporateActionType basket Basket.get(GSMBXXXX) basket.get_corporate_actions(ca_type[CorporateActionType.ACQUISITION])4.2 篮子基本面BASKET_FUNDAMENTALS同一文件的Basket.get_fundamentalsbaskets.py将IndicesDatasets.BASKET_FUNDAMENTALS.value作为数据集 IDwhere dict(assetIdself.id, periodperiod, periodDirectiondirection, metricmetrics) query DataQuery(wherewhere, start_datestart, end_dateend) response GsDataApi.query_data(queryquery, dataset_idIndicesDatasets.BASKET_FUNDAMENTALS.value)该方法支持period指标周期默认 1 年、direction展望方向默认 forward、metrics基本面指标列表默认取 DataMeasure.list_fundamentals() 全部指标。例如查询历史股息率from gs_quant.data.fields import DataMeasure from gs_quant.markets.baskets import Basket basket Basket.get(GSMBXXXX) basket.get_fundamentals(metrics[DataMeasure.DIVIDEND_YIELD])4.3 STS 指数STS_FUNDAMENTALS与STS_INDICATIVE_LEVELSSTSSystematic Trading Strategies指数相关查询位于 gs_quant/markets/index.py第 152 行使用IndicesDatasets.STS_FUNDAMENTALS.value查询 STS 基本面数据第 189 行与第 550 行使用IndicesDatasets.STS_INDICATIVE_LEVELS.value其中一处通过GsDataApi.last_data获取最新指示性点位。与之配套的STSIndexType枚举indices_utils.py定义了 STS 指数的四类形态ACCESS、MULTI_ASSET_ALLOCATION、RISK_PREMIA、SYSTEMATIC_HEDGING可作为筛选 STS 指数类型的参数。4.4 主题贝塔THEMATIC_FACTOR_BETAS_STANDARD在 gs_quant/markets/securities.py 的Stock.get_thematic_beta中数据集 ID 为IndicesDatasets.THEMATIC_FACTOR_BETAS_STANDARD.value实际对应THEMATIC_FACTOR_BETAS_V2_STANDARDquery DataQuery( where{gsid: self.get_identifier(AssetIdentifier.GSID, end), basketId: _id}, start_datestart, end_dateend, ) response GsDataApi.query_data(queryquery, dataset_idIndicesDatasets.THEMATIC_FACTOR_BETAS_STANDARD.value)该方法首先通过GsAssetApi.resolve_assets校验basket_identifier对应的资产确实是 Custom 或 Research 篮子BasketType.to_list()再以个股gsid 篮子basketId作为查询条件返回包含date、gsid、basketId、thematicBeta字段并以日期为索引的 DataFrame。这一链路展示了资产解析 → 类型校验 → 数据集查询的完整数据流。4.5 实体主题贝塔COMPOSITE_THEMATIC_BETAS在 gs_quant/entities/entity.py 中两处查询均使用IndicesDatasets.COMPOSITE_THEMATIC_BETAS.value说明该数据集服务于实体如个股维度的组合主题贝塔计算与 4.4 的个股-篮子配对查询形成互补。五、直接使用以GsDataApi做底层查询IndicesDatasets的.value是标准的数据集 ID 字符串因此除了依赖高层 API也可以直接构造DataQuery发起查询。所有内部实现都遵循同一模式参照 baskets.pyfrom gs_quant.api.gs.data import GsDataApi from gs_quant.markets.indices_utils import IndicesDatasets from gs_quant.target.data import DataQuery query DataQuery(where{assetId: GSMBXXXX}, start_date2024-01-01, end_date2024-12-31) response GsDataApi.query_data(queryquery, dataset_idIndicesDatasets.CORPORATE_ACTIONS.value)需要说明的是GsDataApi的请求最终依赖已初始化的会话GsSession见 gs_quant/session.py。gs-quant 数据接口均要求先完成 Marquee 凭据配置在未初始化会话的离线环境下直接调用会失败。因此实践中更推荐使用本文第四节中经过_validate装饰校验的高层 API。六、配套枚举与使用注意事项IndicesDatasets所在的 indices_utils.py 还定义了一批与之协作的枚举理解它们有助于正确构造查询参数BasketTypeCUSTOM_BASKET/RESEARCH_BASKET用于成分数据集路由与覆盖查询CorporateActionType公司行动类型过滤条件AssetClass资产类别决定__get_dataset_id的走向DataMeasure基本面指标如DIVIDEND_YIELD配合BASKET_FUNDAMENTALS使用。实践中有三点需要留意常量名 ≠ 数据集 ID始终通过IndicesDatasets.X.value取值不要硬编码字符串以免在数据集升级如V1→V2后遗漏同步路由有前提条件__get_dataset_id目前只支持股票类资产的价格/成分数据信用等其他资产类会抛NotImplementedErrorindices_utils.py离线环境不可用所有数据集查询都依赖 Marquee 数据服务与已认证的GsSession这是使用IndicesDatasets系列功能的环境前提。总结IndicesDatasets是 gs-quant 中连接业务 API 与底层数据服务的枢纽枚举它把CA、GSBASKETCONSTITUENTS、GSCB_FLAGSHIP、BASKET_FUNDAMENTALS等数据集 ID 语义化既在Basket.get_corporate_actions、Basket.get_fundamentals、Stock.get_thematic_beta等高层方法中被自动消费也通过__get_dataset_id承担着按资产类别、篮子类型选择成分数据集的路由职责同时保留.value供需要GsDataApi底层查询的场景直接使用。对照文档页 IndicesDatasets.rst 与源码 indices_utils.py即可获得该枚举完整、准确的成员清单与行为说明。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考