gs-quant 数据字段枚举 Fields 全面指南:从市场价格到基本面指标的统一字段体系

📅 发布时间:2026/9/15 16:39:47
gs-quant 数据字段枚举 Fields 全面指南:从市场价格到基本面指标的统一字段体系
gs-quant 数据字段枚举 Fields 全面指南从市场价格到基本面指标的统一字段体系【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant本篇技术指南围绕 gs-quantPython quantitative finance toolkit中gs_quant.data.fields.Fields数据字段枚举展开它统一封装了数据平台中的度量Measures与维度Dimensions两类字段是Dataset.get_data、get_data_series与DataCoordinate等数据查询接口的基石。读完本文你将掌握 Fields 的完整成员清单、三类枚举的动态扩展机制以及如何在行情与基本面数据查询中正确使用这些字段。一、Fields 是什么数据查询的统一字段入口在 gs-quant 中Fields是定义于 gs_quant/data/fields.py 的枚举类其 docstring 明确说明它是 Enumeration of fields available through data APIs即通过数据 API 可用的全部字段枚举。它的特殊之处在于Fields 本身不直接声明成员而是通过extend_enum在运行时将另外两个枚举的成员动态注入for enum in DataMeasure: extend_enum(Fields, enum.name, enum.value) for enum in DataDimension: extend_enum(Fields, enum.name, enum.value)也就是说Fields是DataMeasure与DataDimension的并集。这种设计让调用方只需要记住一个枚举类就能覆盖行情量Measure与维度键Dimension两大类字段。三枚举的职责划分枚举定义语义示例成员DataMeasure数值型度量可在时间段上聚合的事实量如价格、成交量CLOSE_PRICE、VOLUMEDataDimension维度键描述/限定度量上下文用于筛选或分组数据TENOR、EXPIRATION_DATEFields前两者并集统一字段入口上述全部DataMeasure与DataDimension的官方语义在源码中均有明确注释Measure 是facts that are usually quantities and that can be aggregated over a defined period of time如 tradePrice、volumeDimension 是describe or provide context to measures, and can be used to select or group data如 ticker、exchange。三者都基于aenum.Enum实现。二、Fields 完整成员参考根据 docs/classes/gs_quant.data.fields.Fields.rst 的 Attributes 清单并结合源码中DataMeasurefields.py与DataDimensionfields.py的成员值可按语义分组如下。2.1 市场价格类行情度量枚举成员底层值含义Fields.ASK_PRICEaskPrice卖价Fields.BID_PRICEbidPrice买价Fields.HIGH_PRICEhighPrice最高价Fields.MID_PRICEmidPrice中间价Fields.LOW_PRICElowPrice最低价Fields.OPEN_PRICEopenPrice开盘价Fields.CLOSE_PRICEclosePrice收盘价Fields.TRADE_PRICEtradePrice成交价Fields.SPOT_PRICEspot即期价格Fields.VOLUMEvolume成交量2.2 复权后Adjusted价格类枚举成员底层值含义Fields.ADJUSTED_ASK_PRICEadjustedAskPrice复权卖价Fields.ADJUSTED_BID_PRICEadjustedBidPrice复权买价Fields.ADJUSTED_HIGH_PRICEadjustedHighPrice复权最高价Fields.ADJUSTED_LOW_PRICEadjustedLowPrice复权最低价Fields.ADJUSTED_OPEN_PRICEadjustedOpenPrice复权开盘价Fields.ADJUSTED_CLOSE_PRICEadjustedClosePrice复权收盘价Fields.ADJUSTED_TRADE_PRICEadjustedTradePrice复权成交价Fields.ADJUSTED_VOLUMEadjustedVolume复权成交量2.3 波动率与衍生品度量枚举成员底层值含义Fields.IMPLIED_VOLATILITYimpliedVolatility隐含波动率Fields.VAR_SWAPvarSwap方差互换Fields.PRICEprice通用价格Fields.NAV_PRICEnavPrice净值价格Fields.SPREADspread价差Fields.NAV_SPREADnavSpread净值价差Fields.IMPLIED_VOLATILITY_BY_DELTA_STRIKEimpliedVolatilityByDeltaStrike按 Delta 行权价划分的隐含波动率Fields.FORWARD_POINTforwardPoint远期点2.4 基本面度量Fundamentals枚举成员底层值含义Fields.DIVIDEND_YIELDDividend Yield股息率Fields.EARNINGS_PER_SHAREEarnings per Share每股收益Fields.EARNINGS_PER_SHARE_POSITIVEEarnings per Share Positive正每股收益Fields.NET_DEBT_TO_EBITDANet Debt to EBITDA净债务/EBITDAFields.PRICE_TO_BOOKPrice to Book市净率Fields.PRICE_TO_CASHPrice to Cash市现率Fields.PRICE_TO_EARNINGSPrice to Earnings市盈率Fields.PRICE_TO_EARNINGS_POSITIVEPrice to Earnings Positive正收益市盈率Fields.PRICE_TO_EARNINGS_POSITIVE_EXCLUSIVEPrice to Earnings Positive Exclusive剔除负值后的正收益市盈率Fields.PRICE_TO_SALESPrice to Sales市销率Fields.RETURN_ON_EQUITYReturn on Equity净资产收益率Fields.SALES_PER_SHARESales per Share每股销售额2.5 当前成分股Current Constituents基本面以下 12 个成员对应指数/篮子当前成分股维度的基本面聚合底层值均为Current Constituents 指标名格式CURRENT_CONSTITUENTS_DIVIDEND_YIELD、CURRENT_CONSTITUENTS_EARNINGS_PER_SHARE、CURRENT_CONSTITUENTS_EARNINGS_PER_SHARE_POSITIVE、CURRENT_CONSTITUENTS_NET_DEBT_TO_EBITDA、CURRENT_CONSTITUENTS_PRICE_TO_BOOK、CURRENT_CONSTITUENTS_PRICE_TO_CASH、CURRENT_CONSTITUENTS_PRICE_TO_EARNINGS、CURRENT_CONSTITUENTS_PRICE_TO_EARNINGS_POSITIVE、CURRENT_CONSTITUENTS_PRICE_TO_SALES、CURRENT_CONSTITUENTS_RETURN_ON_EQUITY、CURRENT_CONSTITUENTS_SALES_PER_SHARE以及CURRENT_CONSTITUENTS_NET_DEBT_TO_EBITDA对应的全部同类指标。2.6 时间窗口Period度量枚举成员底层值含义Fields.ONE_YEAR1y一年期Fields.TWO_YEARS2y两年期Fields.THREE_YEARS3y三年期Fields.FORWARDforward前瞻口径Fields.TRAILINGtrailing滚动/历史口径注意这里枚举成员名与底层值的对应关系如ONE_YEAR对应字符串1y使用时若需原始字符串应取Fields.ONE_YEAR.value。2.7 维度字段Dimensions以下 8 个成员来自DataDimension用于在查询中筛选或分组数据枚举成员底层值含义Fields.ASSET_IDassetId资产标识Fields.NAMEname名称Fields.RICricRIC 代码Fields.TENORtenor期限Fields.STRIKE_REFERENCEstrikeReference行权价参考如spot、DeltaFields.RELATIVE_STRIKErelativeStrike相对行权价Fields.EXPIRATION_DATEexpirationDate到期日Fields.UPDATE_TIMEupdateTime更新时间2.8 方法__init__与属性unitFields.__init__作为aenum.Enum的枚举成员构造方法。由于Fields成员均由extend_enum动态注入正常使用时无需也不应直接构造新成员。Fields.unit一个只读属性property声明返回Optional[str]用于返回字段的单位。当前源码实现中返回None并带有# TODO: Define units and look up appropriate unit for self注释即单位映射机制尚未实现调用时应假定其当前恒为None不要依赖具体单位字符串。三、在数据查询中使用 FieldsFields枚举被Dataset的查询接口直接接受是类型安全的字段入参。3.1 Dataset.get_data在 gs_quant/data/dataset.py 中get_data的fields参数类型为Iterable[Union[str, Fields]]即既支持原始字符串也支持Fields枚举。内部_build_data_query会统一转换为底层值field_names None if fields is None else list(map(lambda f: f if isinstance(f, str) else f.value, fields))因此以下两种写法等价from gs_quant.data import Dataset, Fields import datetime as dt # 方式一使用 Fields 枚举推荐可获得 IDE 补全与类型检查 data Dataset(EDRVOL_PERCENT_STOCK_STANDARD).get_data( startdt.date(2023, 1, 1), enddt.date(2023, 12, 31), fields(Fields.IMPLIED_VOLATILITY,), tenor1m, ) # 方式二使用原始字符串 data Dataset(EDRVOL_PERCENT_STOCK_STANDARD).get_data( startdt.date(2023, 1, 1), enddt.date(2023, 12, 31), fields(impliedVolatility,), tenor1m, )3.2 Dataset.get_data_seriesget_data_series只针对单个字段其入参同样为Union[str, Fields]dataset.pyseries Dataset(WEATHER).get_data_series( Fields.CLOSE_PRICE, # 也支持 Fields 枚举成员 dt.date(2016, 1, 15), dt.date(2016, 1, 16), city(Boston, Austin), )内部_build_data_series_query通过field if isinstance(field, str) else field.value提取底层值并利用provider.symbol_dimensions(self.id)校验该数据集仅有一个 symbol 维度保证返回结果是一条可索引的单序列pd.Series。3.3 DataCoordinate 坐标构建在 gs_quant/data/coordinate.py 中DataCoordinate是唯一定位数据平台上一根时间序列的不可变对象其measure参数直接接受DataMeasure枚举from gs_quant.data import DataCoordinate, DataMeasure, DataDimension coord DataCoordinate( dataset_idEDRVOL_PERCENT_STOCK_STANDARD, measureDataMeasure.IMPLIED_VOLATILITY, dimensions{ DataDimension.TENOR: 1m, DataDimension.STRIKE_REFERENCE: Delta, DataDimension.RELATIVE_STRIKE: 50, }, )3.4 基本面字段的便捷获取DataMeasure提供了类方法list_fundamentals()fields.py返回上述全部 23 个基本面指标含 Current Constituents 系列的底层字符串值可用于批量遍历基本面数据集from gs_quant.data import DataMeasure print(DataMeasure.list_fundamentals()) # [Dividend Yield, Earnings per Share, ..., Current Constituents Sales per Share]四、源码机制枚举的动态扩展与维度排序理解 Fields 的底层机制有助于在实际项目中复用同样的模式动态合并Fields借助aenum.extend_enum在模块导入时并入DataMeasure与DataDimension的全部成员fields.py。因此Fields的成员集合取决于上述两个枚举的定义顺序任何新加入DataMeasure/DataDimension的成员都会自动出现在Fields中无需改动消费方代码。字符串与枚举互转在 coordinate.py 中坐标解析通过DataMeasure._value2member_map_与DataDimension._value2member_map_将底层字符串反向映射为枚举成员measure DataMeasure(measure) if measure in DataMeasure._value2member_map_ else measure这意味着同一个字段既可用DataMeasure.CLOSE_PRICE传入也可用closePrice传入二者在坐标对象内部归一化处理。维度排序保证相等性BaseDataCoordinate.__init__会将维度字典按键排序后存储为元组coordinate.py因此维度传入顺序不同但内容相同的坐标在相等性比较时结果一致——测试用例 test_data_coordinate.py 对此有明确验证dimensions_a与dimensions_b键序不同构造出的坐标仍然相等。度量与维度语义校验DataCoordinate的构造函数会区分枚举类型DataDimension成员被当作维度键、DataMeasure成员被当作度量值避免混淆字段语义。五、结合测试用例理解正确用法仓库测试 gs_quant/test/data/test_data_coordinate.py 提供了权威使用范式dimensions { DataDimension.TENOR: 1m, DataDimension.STRIKE_REFERENCE: Delta, DataDimension.RELATIVE_STRIKE: 50, } coord1 DataCoordinate(Dataset.GS.EDRVOL_PERCENT_STANDARD, DataMeasure.IMPLIED_VOLATILITY, dimensions) coord2 DataCoordinate(Dataset.GS.EDRVOL_PERCENT_STANDARD, DataMeasure.IMPLIED_VOLATILITY, dimensions) # 相同 measure 相同维度 - 坐标相等 assert coord1 coord2 # 修改任一维度如 TENOR - 2m后坐标不再相等另外在 gs_quant/test/analytics/test_datagrid.py 中DataMeasure.CLOSE_PRICE、DataMeasure.TRADE_PRICE被用于构建 datagrid 的数据坐标说明 Fields/DataMeasure 贯穿数据查询data模块与数据分析analytics模块两条链路。六、最佳实践小结优先使用枚举而非字符串Fields/DataMeasure/DataDimension是类型安全的能获得 IDE 补全与静态检查且底层值由源码统一定义避免拼写错误。需要原始字符串时取.value例如将字段传给自定义 API 调用时用Fields.CLOSE_PRICE.value得到closePrice。区分度量与维度度量字段价格、成交量、波动率用于请求数值维度字段TENOR、STRIKE_REFERENCE、RELATIVE_STRIKE、EXPIRATION_DATE用于筛选通常以 kwargs如tenor1m或DataCoordinate的dimensions字典传入。基本面批量遍历用DataMeasure.list_fundamentals()获取全部基本面指标字符串适合循环请求多指标场景。unit属性当前返回None源码中单位查找仍为 TODOfields.py需要单位信息时应从数据集自身的字段元数据获取不要依赖Fields.unit。七、扩展阅读字段定义源码gs_quant/data/fields.py坐标对象与维度归一化gs_quant/data/coordinate.py数据集查询接口get_data/get_data_seriesgs_quant/data/dataset.py数据模块统一导出Fields、DataMeasure、DataDimension均从gs_quant.data顶层导出gs_quant/data/init.py官方 API 参考页docs/classes/gs_quant.data.fields.Fields.rst【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考