gs-quant 实战:用 Index.get_fundamentals 获取 STS 指数基本面数据

发布时间:2026/9/15 20:19:23
gs-quant 实战:用 Index.get_fundamentals 获取 STS 指数基本面数据 gs-quant 实战用 Index.get_fundamentals 获取 STS 指数基本面数据【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant导读在 gs-quant 中Index是封装指数实体的核心类而Index.get_fundamentals是它提供基本面数据查询的唯一入口。本文以 docs/functions/gs_quant.markets.index.Index.get_fundamentals.rst 为主题完整讲解该方法的签名、全部参数语义、支持的基本面指标metrics、期间period与方向direction规则并结合 gs_quant/markets/index.py 的源码实现与 gs_quant/data/fields.py 的枚举定义说明其底层数据查询链路。读完本文你将能直接调用Index.get_fundamentals拉取 STSSystematic Trading Strategies指数的股息率、市盈率、净资产收益率等历史基本面数据并知道它与其他实体如Basket.get_fundamentals的差异与适用边界。方法签名与参数说明Index.get_fundamentals定义在 gs_quant/markets/index.py#L114-L156完整签名如下def get_fundamentals( self, start: dt.date DateLimit.LOW_LIMIT.value, end: dt.date dt.date.today(), period: Optional[DataMeasure] None, direction: DataMeasure DataMeasure.FORWARD.value, metrics: list[DataMeasure] DataMeasure.list_fundamentals(), ) - pd.DataFrame:各参数语义与 docstring 一一对应参数类型默认值含义startdt.dateDateLimit.LOW_LIMIT.value即 1952-01-01见 gs_quant/common.py#L40-L43查询起始日期enddt.datedt.date.today()查询结束日期默认今天periodOptional[DataMeasure]None即不限期间指标对应的期间可为ONE_YEAR(1y)、TWO_YEARS(2y)、THREE_YEARS(3y)directionDataMeasureDataMeasure.FORWARD.value即forward展望期间的方向forward或trailingmetricslist[DataMeasure]DataMeasure.list_fundamentals()即全部基本面指标需要返回的基本面指标列表返回值为pd.DataFrame包含基本面信息查询区间为空或指标不支持时结果可能为空表调用方应自行处理。注意get_fundamentals的默认periodNone与Basket.get_fundamentals的默认periodDataMeasure.ONE_YEAR.value见 gs_quant/markets/baskets.py#L500-L507不同。Index 版本默认返回全部期间的数据Basket 版本默认只返回 1 年期间。支持的基本面指标metricsmetrics参数接受DataMeasure枚举成员或字符串值。基础指标定义在 gs_quant/data/fields.py#L58-L80共 22 个分为两组指数自身聚合指标11 个DataMeasure 枚举字符串值DataMeasure.DIVIDEND_YIELDDividend YieldDataMeasure.EARNINGS_PER_SHAREEarnings per ShareDataMeasure.EARNINGS_PER_SHARE_POSITIVEEarnings per Share PositiveDataMeasure.NET_DEBT_TO_EBITDANet Debt to EBITDADataMeasure.PRICE_TO_BOOKPrice to BookDataMeasure.PRICE_TO_CASHPrice to CashDataMeasure.PRICE_TO_EARNINGSPrice to EarningsDataMeasure.PRICE_TO_EARNINGS_POSITIVEPrice to Earnings PositiveDataMeasure.PRICE_TO_EARNINGS_POSITIVE_EXCLUSIVEPrice to Earnings Positive ExclusiveDataMeasure.PRICE_TO_SALESPrice to SalesDataMeasure.RETURN_ON_EQUITYReturn on EquityDataMeasure.SALES_PER_SHARESales per Share当前成分股聚合指标11 个前缀CURRENT_CONSTITUENTS_DataMeasure 枚举字符串值DataMeasure.CURRENT_CONSTITUENTS_DIVIDEND_YIELDCurrent Constituents Dividend YieldDataMeasure.CURRENT_CONSTITUENTS_EARNINGS_PER_SHARECurrent Constituents Earnings per ShareDataMeasure.CURRENT_CONSTITUENTS_EARNINGS_PER_SHARE_POSITIVECurrent Constituents Earnings per Share PositiveDataMeasure.CURRENT_CONSTITUENTS_NET_DEBT_TO_EBITDACurrent Constituents Net Debt to EBITDADataMeasure.CURRENT_CONSTITUENTS_PRICE_TO_BOOKCurrent Constituents Price to BookDataMeasure.CURRENT_CONSTITUENTS_PRICE_TO_CASHCurrent Constituents Price to CashDataMeasure.CURRENT_CONSTITUENTS_PRICE_TO_EARNINGSCurrent Constituents Price to EarningsDataMeasure.CURRENT_CONSTITUENTS_PRICE_TO_EARNINGS_POSITIVECurrent Constituents Price to Earnings PositiveDataMeasure.CURRENT_CONSTITUENTS_PRICE_TO_SALESCurrent Constituents Price to SalesDataMeasure.CURRENT_CONSTITUENTS_RETURN_ON_EQUITYCurrent Constituents Return on EquityDataMeasure.CURRENT_CONSTITUENTS_SALES_PER_SHARECurrent Constituents Sales per ShareDataMeasure.list_fundamentals()gs_quant/data/fields.py#L91-L119正是按上表顺序返回这 22 个指标的字符串值列表作为metrics的默认值即默认一次取回全部指标。若只想取部分指标把要取的DataMeasure枚举放进列表即可例如metrics[DataMeasure.DIVIDEND_YIELD]。期间与方向period / directionperiod与direction共同描述基本面指标的观察窗口二者均在 gs_quant/data/fields.py#L81-L85 定义period取值ONE_YEAR1y、TWO_YEARS2y、THREE_YEARS3y。Index 版本默认None不限期间返回所有期间也可显式传DataMeasure.ONE_YEAR.value即1y等字符串。direction取值FORWARDforward前瞻或TRAILINGtrailing回溯默认forward。在数据语义上forward表示使用未来期间的预期/展望数据例如远期股息率、预期市盈率trailing表示使用已实现的历史滚动数据。选用哪个方向取决于研究目标估值分析常用trailing前瞻性筛选常用forward。源码在构造查询条件时直接将direction原样放入where见下文因此传入非法字符串会由底层数据 API 校验并报错调用前应使用DataMeasure.FORWARD.value/DataMeasure.TRAILING.value保证取值正确。使用示例docstring 中给出的官方示例gs_quant/markets/index.py#L141-L145from gs_quant.markets.index import Index from gs_quant.data.fields import DataMeasure index Index.get(GSMBXXXX) index.get_fundamentals(metrics[DataMeasure.DIVIDEND_YIELD])更完整的用法from gs_quant.markets.index import Index from gs_quant.data.fields import DataMeasure # 1. 按标识符获取 Index 实例ric、ticker 等常见标识符均可 index Index.get(GSMBXXXX) # 2. 取最近 1 年、前瞻方向的历史股息率 df index.get_fundamentals( metrics[DataMeasure.DIVIDEND_YIELD], periodDataMeasure.ONE_YEAR.value, # 1y directionDataMeasure.FORWARD.value, # forward ) # 3. 取全部期间、全部指标默认行为 df_all index.get_fundamentals()返回的pd.DataFrame行对应查询区间内的数据记录列对应所请求的指标。Index.get支持任意常见标识符ric、ticker 等非Index标识符会抛出MqValueError见 gs_quant/markets/index.py#L100-L112。源码剖析从调用到数据的完整链路get_fundamentals的实现非常简洁gs_quant/markets/index.py#L147-L156if self.__is_sts_index(): where dict(assetIdself.id, periodDirectiondirection, metricmetrics) if period: where[period] period query DataQuery(wherewhere, start_datestart, end_dateend) response GsDataApi.query_data(queryquery, dataset_idIndicesDatasets.STS_FUNDAMENTALS.value) return pd.DataFrame(response) else: raise MqValueError(This method currently supports STS indices only)关键点一仅支持 STS 指数。方法开头通过self.__is_sts_index()校验指数类型只有 STSSystematic Trading Strategies指数才能查询基本面其他类型指数直接抛出MqValueError(This method currently supports STS indices only)。STS 指数类型包括Access、Multi-Asset Allocation、Risk Premia、Systematic Hedging四类见 gs_quant/markets/indices_utils.py#L198-L211这也解释了 docstring 首行的“Currently supports STS indices only”。关键点二底层数据源是STS_FUNDAMENTALS数据集。查询使用IndicesDatasets.STS_FUNDAMENTALS值为STS_FUNDAMENTALS见 gs_quant/markets/indices_utils.py#L107-L121作为dataset_id。where条件包含三项assetId当前Index的 idperiodDirection即direction参数注意底层字段名是periodDirectionmetric即metrics列表若传了period额外追加period条件。关键点三查询通过DataQueryGsDataApi.query_data执行。DataQuery来自gs_quant.target.data承载where条件与起止日期GsDataApi.query_datags_quant/api/gs/data.py#L272-L283负责把查询发送到对应数据集并解析响应最终pd.DataFrame(response)将结果规范化为表格。对照实现Basket.get_fundamentals。篮子Basket提供了同名方法gs_quant/markets/baskets.py#L499-L534签名几乎一致但默认periodDataMeasure.ONE_YEAR.value且不限制指数类型篮子本身即结构化资产不区分 STS。两者的查询链路相同均走DataQueryGsDataApi.query_data差异仅在默认期间与适用实体上可作为迁移参照。局限与注意事项适用实体有限Index.get_fundamentals只支持 STS 指数普通指数调用会抛MqValueError。若需要普通股票指数的基本面可评估改用Basket或逐成分股通过Asset.get_data_series获取。默认范围大start默认 1952-01-01、end默认今天、periodNone且metrics默认全量 22 个指标首次调用可能返回较大数据量建议按需缩小日期窗口与指标列表。参数取值由底层 API 校验period与direction直接拼接进where应使用DataMeasure枚举的.value保证取值合法1y/2y/3yforward/trailing。数据可用性取决于数据集覆盖STS_FUNDAMENTALS数据集的覆盖范围与历史深度由底层数据服务决定返回空 DataFrame 时应先检查日期区间与指标是否在数据集覆盖内。需要有效会话与其他访问 Marquee 数据服务的方法一样Index.get_fundamentals依赖已配置的 gs-quant 会话与数据访问权限未初始化会话时调用会失败。小结Index.get_fundamentals是 gs-quant 中查询 STS 指数基本面数据的一站式入口通过start/end控制时间窗period/direction控制观察期间与方向metrics从 22 个预定义指标中按需挑选。其实现短小精悍——类型校验、查询条件组装、数据集访问三层结构清晰底层统一由STS_FUNDAMENTALS数据集与GsDataApi.query_data支撑。理解其仅限 STS 指数的边界与参数默认值即可在实战中精准、高效地获取指数基本面数据。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询