gs-quant 旗舰篮子成分获取:get_flagships_constituents 完全指南

📅 发布时间:2026/9/15 20:25:04
gs-quant 旗舰篮子成分获取:get_flagships_constituents 完全指南
gs-quant 旗舰篮子成分获取get_flagships_constituents 完全指南【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant本篇技术指南围绕 gs-quantGoldman Sachs 开源的量化金融 Python 工具包中gs_quant.markets.indices_utils模块的核心函数get_flagships_constituents展开讲解如何批量获取旗舰篮子Flagship Baskets的成分股constituents数据及其底层实现原理。读完本文你将掌握该函数的全部参数语义、日期范围查询、按篮子类型/地区/风格/代码过滤的实战用法以及它如何串联篮子元数据查询、成分数据集与资产信息查询的完整数据链路。函数定位它解决什么问题在 gs-quant 的indices_utils工具模块中围绕旗舰篮子提供了一组互补的函数源码见 gs_quant/markets/indices_utils.py函数职责get_flagship_baskets返回符合条件的旗舰篮子元数据列表id、名称、代码、区域、类型、风格、上市日期等get_flagships_with_assets返回包含指定资产如 AAPL的旗舰篮子get_flagships_performance返回旗舰篮子在指定日期的价格/表现数据get_flagships_constituents返回旗舰篮子及其成分明细本文主角get_flagships_constituents的核心价值在于它不满足于有哪些篮子而是进一步拉取每个篮子在某时间区间内的成分构成underlying asset 明细并以pandas.DataFrame返回每个篮子一行、其constituents字段携带成分列表。这在指数/篮子复现、归因分析、成分历史回溯等场景中非常实用。函数签名与参数详解源码定义于 gs_quant/markets/indices_utils.pydef get_flagships_constituents( fields: list[str] [], basket_type: list[BasketType] BasketType.to_list(), asset_class: list[AssetClass] [AssetClass.Equity], region: list[Region] None, styles: list[Union[CustomBasketStyles, ResearchBasketStyles]] None, start: dt.date None, end: dt.date None, **kwargs, ) - pd.DataFrame:各参数语义如下参数类型默认值说明fieldslist[str][]除 mqid、name、ticker、region、basket type、styles、live date、asset class 之外额外需要返回的资产字段basket_typelist[BasketType]BasketType.to_list()篮子类型过滤默认两者都查CUSTOM_BASKET自定义篮子、RESEARCH_BASKET研究篮子asset_classlist[AssetClass][AssetClass.Equity]资产类别默认仅股票Equityregionlist[Region]None篮子所属地区过滤Americas / Asia / EM / Europe / Globalstyleslist[Union[CustomBasketStyles, ResearchBasketStyles]]None篮子风格过滤如CustomBasketStyles.FACTORS、ResearchBasketStyles.WAVEFRONTS等startdt.date前一工作日成分查询起始日期缺省为prev_business_date()enddt.date前一工作日成分查询截止日期缺省为prev_business_date()**kwargs——透传给底层资产查询接口的额外过滤条件例如ticker见下方实战示例关键枚举值BasketTypeCUSTOM_BASKET Custom Basket、RESEARCH_BASKET Research Basket定义位置RegionAMERICAS、ASIA、EM、EUROPE、GLOBAL定义位置CustomBasketStyles涵盖FLAGSHIP、FACTORS、ESG、THEMATIC、VOLATILITY、MOMENTUM等 23 种风格定义位置ResearchBasketStyles涵盖WAVEFRONTS、HEDGE_FUND、POSITIONING、SECTOR、THEMATIC等 24 种研究风格定义位置。快速上手官方文档Sphinx autofunction 生成的 API 文档页给出的最小示例为 from gs_quant.markets.indices_utils import * get_flagships_constituents()仓库中的配套 Notebook0006_get_flagship_baskets_compositions.ipynb展示了完整调用流程from gs_quant.markets.indices_utils import get_flagships_constituents from gs_quant.session import Environment, GsSession client CLIENT ID secret CLIENT SECRET GsSession.use(Environment.PROD, client_idclient, client_secretsecret, scopes(read_product_data,)) get_flagships_constituents()使用前需先通过GsSession.use()完成 Marquee 平台认证申请read_product_data权限。不加任何过滤参数时该函数会返回 Equity 资产类别下全部 Custom Basket 与 Research Basket 旗舰篮子按前一工作日的成分快照。按时间区间查询成分历史成分数据是带日期的时序数据同一篮子在不同时间点的成分可能不同。通过start/end参数可以拉取指定区间的成分快照官方示例0007_get_flagship_baskets_compositions_for_date_range.ipynbimport datetime as dt get_flagships_constituents(startdt.date(2021, 1, 7), enddt.date(2021, 3, 27))该调用会返回 2021-01-07 至 2021-03-27 区间内每个旗舰篮子的成分明细可用于研究篮子调仓rebalance历史、成分进出场时点等。组合过滤类型、地区、风格与代码basket_type、region、styles可以任意组合实现精准筛选。以下用法均来自仓库配套示例 Notebook按篮子类型过滤0008_filter_flagship_baskets_by_basket_type.ipynbget_flagships_constituents(basket_type[BasketType.RESEARCH_BASKET])按地区与风格组合过滤0010_filter_flagship_baskets_by_styles.ipynbget_flagships_constituents( region[Region.EM], styles[CustomBasketStyles.FACTORS, ResearchBasketStyles.WAVEFRONTS], )按篮子 ticker 精确指定0011_filter_flagship_baskets_by_ticker.ipynb通过**kwargs透传ticker参数tickers [GSTHHVIP, GSCBLMOM ] # Insert list of basket tickers get_flagships_constituents(tickertickers)注意ticker属于**kwargs透传参数最终会进入底层GsAssetApi.get_many_assets_data_scroll的查询条件见下文实现解析。返回结构与字段说明函数返回pd.DataFrame每个旗舰篮子一行核心字段包括id篮子的 Marquee 资产 IDmqidname篮子名称ticker篮子代码如 GSTHHVIPregion、type、styles、liveDate、assetClass篮子元数据constituents该篮子在查询区间内的成分明细列表每行成分包含assetId成分资产 ID、underlyingAssetId、日期等字段并叠加你通过fields参数请求的额外资产字段如名称、ticker 等。默认字段集合由源码 第 506-508 行 固定保证basket_fields list( set(fields).union(set([id, name, ticker, region, type, styles, liveDate, assetClass])) )底层实现原理源码级解析get_flagships_constituents的实现位于 gs_quant/markets/indices_utils.py其数据获取链路分为四步理解它有助于你预估调用成本与响应时间第一步筛选旗舰篮子并解析数据集。调用内部辅助函数__get_baskets第 267-287 行在查询条件中固定写入flagship[True]从而只保留旗舰篮子再通过__get_dataset_id第 290-298 行按资产类别与篮子类型解析成分数据集 ID——Equity 资产下Custom Basket 对应GSBASKETCONSTITUENTSResearch Basket 对应GIRBASKETCONSTITUENTS而价格覆盖数据使用GSCB_FLAGSHIP。第二步分批查询成分数据。从GsDataApi.get_coverage拿到篮子的成分数据集覆盖范围后将篮子 ID 按每批 25 个分批源码第 525-535 行构造DataQuery(where{assetId: batch}, startDatestart, endDateend)。第三步并行执行查询。使用ThreadPoolManager.run_async每轮并行执行 2 个查询任务并在轮间sleep(1)做节流源码第 537-541 行既提升吞吐又避免触发接口限流。第四步回填资产详情。收集所有成分的underlyingAssetId通过GsAssetApi.get_many_assets_data_scroll按每批 100 个分批获取资产数据低于滚动查询的 scroll size 限制源码第 546-554 行再将fields中请求的字段回填到每条成分记录上最后按篮子归并返回源码第 557-565 行。可以看出一次get_flagships_constituents调用背后实际发生了篮子筛选 → 数据集解析 → 覆盖查询 → 25/批成分查询 → 100/批资产详情查询的多次 API 往返因此建议通过参数过滤缩小篮子范围如指定region、styles、ticker避免一次拉取全量数据造成超时。与兄弟函数的配合使用get_flagships_constituents常与同模块的另外三个函数配合构成完整的旗舰篮子分析工作流各函数 docstring 中均以 See also 相互引用如 第 501-503 行先用get_flagship_baskets()浏览有哪些旗舰篮子及其元数据用get_flagships_with_assets(identifiers[AAPL UW])反向定位包含某只股票的篮子用get_flagships_performance()获取这些篮子的表现数据最后用get_flagships_constituents()拿到篮子成分用于复现指数、计算篮子内权重或做成分归因。注意事项认证前提所有旗舰篮子数据均来自 Goldman Sachs Marquee 平台必须先配置GsSession且账号需具备相应数据权限默认日期start与end缺省均为前一工作日prev_business_date()即默认只取最近一个交易日的成分快照资产类别限制从__get_dataset_id的实现第 290-298 行看目前成分数据集仅支持 Equity 资产类别其他类别会抛出NotImplementedError返回粒度返回的是每篮子一行的宽表成分明细嵌套在constituents列中如需扁平化可按行展开处理。通过本指南你可以直接上手get_flagships_constituents完成旗舰篮子的成分批量拉取并结合仓库中的 08_flagship_baskets 系列 Notebook 与 indices_utils 模块源码 做进一步探索。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考