🚀 AI 一键生成 joinquant 策略代码

聚宽(JoinQuant)的数据有没有标明每个ETF跟踪的哪个指数?

joinquant | 发布时间: 2026/5/27
以下内容由 EasyQuant 生成。

问题描述

聚宽的数据有没有标明每个etf跟踪的哪个指数?

解决方案

根据 JoinQuant 聚宽官方 API 文档,目前聚宽的数据接口中没有直接提供标明每个 ETF 跟踪具体哪个指数的字段或直接的映射关系 API。

例如,通过 get_security_info(code) 获取单个 ETF 信息,或者通过 get_all_securities(['etf']) 获取 ETF 列表时,返回的字段主要包括:display_name(中文名称)、name(缩写简称)、start_date(上市日期)、end_date(退市日期)和 type(类型),其中并不包含“跟踪标的指数代码”这一属性。

替代解决方案

虽然没有直接的 API 字段,但你可以通过以下方式在聚宽平台上进行相关研究:

1. 通过名称进行模糊匹配
ETF 的中文名称(display_name)通常会包含其跟踪的指数名称。你可以分别获取 ETF 列表和指数列表,通过名称进行文本匹配来建立映射关系。

# 获取所有 ETF 列表
etf_df = get_all_securities(['etf'])
print(etf_df.head())

# 获取所有指数列表
index_df = get_all_securities(['index'])
print(index_df.head())

2. 自行维护映射表
对于常用的 ETF(如沪深300ETF、中证500ETF、创业板ETF等),建议在策略的 initialize 函数中,或者通过上传本地的 CSV/JSON 文件(使用 read_file API 读取),自行维护一个 ETF 代码到指数代码的字典映射表。例如:

def initialize(context):
    # 自行维护的 ETF 与 跟踪指数 映射表
    g.etf_index_map = {
        '510300.XSHG': '000300.XSHG', # 华泰柏瑞沪深300ETF -> 沪深300
        '510500.XSHG': '000905.XSHG', # 南方中证500ETF -> 中证500
        '159915.XSHE': '399006.XSHE'  # 易方达创业板ETF -> 创业板指
    }

如果你需要极其精确的 ETF 跟踪标的映射数据,可能需要借助外部的金融数据终端(如 Wind、Tushare 等)导出映射表后,再导入到聚宽的研究环境中使用。