资讯动态

gs-quant 权限化 Basket 列表查询:深入解析 get_my_baskets 的用法与底层实现

发布时间:2026/9/15 15:07:01 来源:尧图企业网站定制
gs-quant 权限化 Basket 列表查询深入解析 get_my_baskets 的用法与底层实现【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant导读在 gs-quant 量化工具包中Basket篮子是组合管理、指数构建与因子研究的核心载体而实际业务中往往需要按用户权限维度查询可访问的篮子集合。本文以 gs_quant.markets.indices_utils.get_my_baskets 为线索完整讲解该函数的签名、参数语义、返回值结构、认证前置条件并结合仓库源码剖析其基于 Monitor监视器与资产批量查询接口的底层调用链帮助你在自己的策略与数据分析流程中快速、可靠地获取当前或指定用户被授权的所有 Custom Basket 列表。一、函数速览签名、参数与返回值get_my_baskets定义于 gs_quant/markets/indices_utils.py官方 RST 文档get_my_baskets.rst通过autofunction指令将其自动渲染为 API 参考页面其完整签名如下def get_my_baskets(user_id: str None) - Optional[pd.DataFrame]: Retrieve a list of baskets a user is permissioned to :param user_id: Marquee user/app ID (default is current applications id) :return: dataframe of baskets user has access to 核心语义一句话即可概括检索某个用户被授权permissioned可以访问的篮子列表。具体参数与返回值说明如下项目说明user_idMarquee 用户或应用 ID类型为str可选。不传时默认使用当前 GsSession 的应用 IDGsSession.current.client_id返回值Optional[pd.DataFrame]包含用户有权访问的篮子信息当底层监视器无数据时返回None见下文实现剖析从源码结构看该函数位于gs_quant/markets/indices_utils.py这一「指数与篮子工具」模块中与其同族的函数还包括get_flagship_baskets、get_flagships_with_assets、get_flagships_performance、get_flagships_constituents等见 indices_utils.py它们共同构成 gs-quant 中面向篮子数据的查询工具集。get_my_baskets的特色在于它不按资产类型、区域或风格过滤而是以用户权限为维度返回与该用户绑定的全部篮子。二、前置条件先建立 GsSession 认证会话get_my_baskets内部依赖当前全局GsSession发起 API 请求因此在调用之前必须先完成会话认证。仓库自带的官方示例 Notebook 给出了标准三步流程见 0005_get_your_permissioned_baskets.ipynbfrom gs_quant.markets.indices_utils import get_my_baskets from gs_quant.session import Environment, GsSession client CLIENT ID secret CLIENT SECRET GsSession.use(Environment.PROD, client_idclient, client_secretsecret)要点说明Environment.PROD指向 Marquee 生产环境示例 Notebook 位于documentation/06_baskets/examples/07_basket_permissions/目录下专门演示与篮子权限相关的查询场景client_id/client_secret为 Marquee 应用凭据需替换为真实值会话建立后get_my_baskets()即可直接使用当前会话的应用 ID 作为默认查询对象源码user_id if user_id is not None else GsSession.current.client_id正是这一行为的实现见 indices_utils.py。三、快速上手一行代码拿到我的篮子清单认证完成后的调用非常简洁from gs_quant.markets.indices_utils import get_my_baskets baskets get_my_baskets() print(baskets)get_my_baskets()返回一个pandas.DataFrame每一行代表一个篮子包含以下五列列名含义monitor_name该篮子所属 Monitor监视器的名称id篮子在 Marquee 资产主数据中的唯一标识mqidticker篮子的行情代码name篮子名称live_date篮子生效live日期需要查询其他用户的授权篮子时显式传入user_id即可baskets get_my_baskets(user_idanother_user_or_app_id)这在多用户协作、代客维护篮子或做权限审计时尤为实用。四、源码级剖析从 Monitor 到资产数据的完整调用链理解get_my_baskets的返回结果关键在于弄清它背后的两层数据来源。完整实现如下indices_utils.pyuser_id user_id if user_id is not None else GsSession.current.client_id tag fCustom Basket:{user_id} response GsMonitorsApi.get_monitors(tagstag) if len(response): row_groups get(response, 0.parameters.row_groups) my_baskets [] for row_group in row_groups: entity_ids [entity.id for entity in row_group.entity_ids] baskets GsAssetApi.get_many_assets_data(identity_ids, fields[id, ticker, name, liveDate]) my_baskets [ dict( monitor_namerow_group.name, idget(basket, id), tickerget(basket, ticker), nameget(basket, name), live_dateget(basket, liveDate), ) for basket in baskets ] return pd.DataFrame(my_baskets)可以拆解为四个步骤步骤 1拼接 Monitor 标签并查询监视器。函数以Custom Basket:{user_id}为 tag 调用GsMonitorsApi.get_monitors。从 gs_quant/api/gs/monitors.py 可以看到get_monitors支持limit默认 100、monitor_id、owner_id、name、folder_name、monitor_type、tags等筛选参数最终构造GET /monitors?{query}请求并返回Monitor元组。也就是说Marquee 端将「某用户可访问的 Custom Basket」组织成带特定 tag 的监视器get_my_baskets正是靠 tag 精确命中这些监视器。步骤 2提取 row_groups。通过get(response, 0.parameters.row_groups)pydash 的路径式取值取出第一个监视器响应中的parameters.row_groups。每个row_group携带一组实体引用entity_ids它们就是要返回的篮子资产。步骤 3批量获取篮子资产详情。遍历每个row_group把entity.id收集为entity_ids列表再调用GsAssetApi.get_many_assets_data一次请求获取id、ticker、name、liveDate四个字段。该 API 客户端实现在 gs_quant/api/gs/assets.py内部通过POST /assets/data/query提交查询载荷返回results列表类上还标注了_cached装饰器说明该查询结果带有缓存能力多次调用同一资产集不会重复产生网络开销。步骤 4组装 DataFrame。以monitor_name标识篮子来源配合id、ticker、name、live_date四列组成字典列表最终pd.DataFrame(my_baskets)输出。值得注意的边界行为当get_monitors(tagstag)返回空列表时if len(response)不成立函数隐式返回None这也与返回值类型标注Optional[pd.DataFrame]一致——没有对应监视器数据时得到的是None而非空表使用方应做空值判断。五、延伸同模块篮子查询函数对比理解了get_my_baskets之后可以顺带把握它在 indices_utils 工具箱中的定位。同文件中的其他查询函数indices_utils.py共享内部辅助函数__get_baskets其默认返回字段为id、name、ticker、region、type、description、styles、liveDate、assetClass并通过GsAssetApi.get_many_assets_data_scroll滚动拉取支持basket_type、asset_class、region、styles、as_of等丰富筛选条件见 indices_utils.py函数查询维度典型用途get_my_baskets(user_id)用户权限获取当前/指定用户被授权的全部 Custom Basketget_flagship_baskets(...)资产属性按类型、资产类别、区域、风格筛选旗舰篮子get_flagships_with_assets(identifiers, ...)成分资产找出包含指定标的如AAPL UW的篮子get_flagships_performance/get_flagships_constituents表现/成分获取旗舰篮子业绩与成分数据从实现路径可见get_my_baskets走的是「Monitor 标签 → row_groups → 资产批量查询」的权限驱动链路与其他函数「资产查询 → 滚动返回」的属性驱动链路不同二者恰好互补前者回答「我有权用哪些篮子」后者回答「有哪些篮子满足某种特征」。六、使用建议与注意事项先认证再调用函数强依赖GsSession.current未初始化会话或凭据失效时会话内请求会失败建议参照官方示例 Notebook 的GsSession.use(...)流程完成初始化。默认返回当前应用视角user_id缺省时取GsSession.current.client_id若你的应用同时被多个用户使用建议显式传入目标用户 ID 以免语义混淆。处理空结果无权限或监视器未配置时返回None调用方应使用if baskets is None: ...或if not baskets.empty: ...做防护。字段是固定的当前实现只返回monitor_name、id、ticker、name、live_date五列如需更多资产元数据可基于返回的id结合GsAssetApi或同模块的篮子查询函数进一步补充。理解 Monitor 语义由于结果来自带Custom Basket:{user_id}标签的监视器篮子的可见范围取决于 Marquee 侧监视器/权限配置而非本地计算因此结果天然反映了服务端的授权关系。总体而言get_my_baskets是 gs-quant 中面向「用户权限」的篮子入口一条简单调用即可把服务端授权关系映射为结构化的 DataFrame方便进一步接入业绩归因、风险分析或组合构建流程。【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价