3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 聚宽平台上,查询指数中每只成分股权重的专用 API 函数是 get_index_weights。
以下是该函数的详细使用说明、代码示例及注意事项。
该函数用于获取指数成分股的权重信息,数据通常每月更新一次(一般在月底或月初)。
get_index_weights(index_id, date=None)
'000300.XSHG' (沪深300) 或 '000016.XSHG' (上证50)。'YYYY-MM-DD'。
context.current_dt.date()。datetime.now().date()。返回一个 pandas.DataFrame 对象,包含以下列:
以下代码展示了如何在研究环境或策略中获取沪深300指数的成分股权重:
# -*- coding: utf-8 -*-
from jqdata import *
# 获取沪深300指数(000300.XSHG)在2023-01-01的成分股权重
# 注意:如果指定日期是非交易日或无数据更新,系统会返回距离该日期最近的权重数据
df = get_index_weights(index_id='000300.XSHG', date='2023-01-01')
# 打印前5行查看结果
print(df.head())
# 示例输出格式:
# code display_name date weight
# 000001.XSHE 平安银行 2022-12-30 0.60
# 000002.XSHE 万科A 2022-12-30 0.65
# ...
weight 字段通常表示百分比。例如,如果某只股票的权重显示为 0.93,表示它占该指数权重的 0.93%。index_id 包含后缀(如 .XSHG 或 .XSHE),否则会报错。Q: get_index_weights 和 get_index_stocks 有什么区别?
A: get_index_stocks 仅返回指数成分股的代码列表(List),不包含权重信息;而 get_index_weights 返回一个 DataFrame,其中包含了成分股代码、名称以及具体的权重数值。
Q: 为什么我查询出来的日期和输入的 date 参数不一致?
A: 因为指数权重通常是按月更新的,而不是每天更新。API 会返回距离您输入日期最近的那个发布日的权重数据。
Q: 这个函数可以在回测中使用吗?
A: 可以。在回测中如果不填 date 参数,默认会使用回测当前的逻辑时间(context.current_dt)来获取当时已知的最新权重数据,这避免了未来函数的问题。
Q: 如何获取某个行业板块的成分股权重?
A: get_index_weights 仅适用于指数。对于行业板块,通常没有官方定义的“权重”概念(除非是行业指数)。如果您需要获取行业成分股,请使用 get_industry_stocks,然后根据市值或其他指标自行计算权重。