ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Vibe-Trading 实战指南:使用 Tushare index_member_all 接口获取申万行业成分(三级分级)

Vibe-Trading 实战指南:使用 Tushare index_member_all 接口获取申万行业成分(三级分级) Vibe-Trading 实战指南使用 Tushare index_member_all 接口获取申万行业成分三级分级【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading申万行业分类是 A 股投研中应用最广的行业框架之一而成分股映射是所有基于行业的中观策略行业轮动、板块动量、产业链传导的数据地基。本篇技术指南以 Vibe-Trading 仓库内置的 Tushare 技能文档为骨架完整讲解index_member_all接口的调用方式、参数与返回字段语义并结合仓库中的行业分类体系与源码级资料演示如何在量化研究流程中按行业取成分股与按股票反查行业归属。读完本文你将能够独立完成申万三级行业成分数据的获取、历史纳入/剔除关系的还原以及把行业标签接入策略研究的全流程。一、接口总览index_member_all 能做什么index_member_all是 Tushare 数据服务中用于获取**申万行业成分构成分级**的接口所属技能文档位于 申万行业成分(分级).md.md)。其核心能力可以概括为一句话按三级分类提取申万行业成分可提供某个分类的所有成分也可按股票代码提取所属分类参数灵活。两种典型用法互补正向查询按行业 → 成分股给定一级 / 二级 / 三级行业代码返回该行业当前或历史上的全部成分股清单反向查询按股票 → 行业给定股票代码ts_code返回该股票所属的一级、二级、三级行业全路径。这在多因子研究与行业中性化处理中非常关键例如将个股收益分解为行业 Beta 个股 Alpha时需要精确的行业归属表构建行业动量组合时则需要按行业代码拉取成分股全集。调用限制与权限项目说明限量单次最大 2000 行总量不限制权限用户需 2000 积分可调取由于单次返回上限为 2000 行而部分三级行业如 2021 版基础化工下的化学制品、机械设备下的通用设备等成分股数量可能较多建议在批量拉取时结合行业代码逐一分批查询或按需裁剪fields字段以降低单次返回体积。积分获取属于账号体系范畴仓库文档中标注的权限门槛为2000 积分具体获取与充值方式不在本仓库文档范围内。二、输入参数详解index_member_all的五个输入参数全部可选均用于过滤查询范围。参数之间可以自由组合这是其参数灵活的体现。名称类型必选描述l1_codestrN一级行业代码l2_codestrN二级行业代码l3_codestrN三级行业代码ts_codestrN股票代码is_newstrN是否最新默认为 Y是关键理解点行业代码采用三级编码体系。以申万 2021 版为例一级行业代码形如801050.SI有色金属二级行业代码形如801053.SI贵金属三级行业代码形如850531.SI黄金。行业代码带.SI后缀是申万Shenwan Index的指数代码标识而股票代码ts_code使用000001.SZ、600000.SH这类带交易所后缀的格式。这两套编码规则在仓库的 tushare 技能文档 SKILL.md 中也有明确约定股票代码ts_code 格式如 000001.SZ, 600000.SH。is_new控制当前成分还是历史成分。默认值为Y是即默认只返回最新一期成分。若需要研究历史纳入/剔除时点例如观察某行业近年来成分股的进出可传入is_newN并结合输出参数中的in_date、out_date使用。参数组合的语义只传l3_code可获取某个三级子行业如黄金的全部成分股只传ts_code可反查一只股票所属的完整行业链同时传l1_code与is_newN可追溯整个一级行业的历史成分变动。需要提醒的是并非所有行业层级都存在已发布的三级分类——在申万 2021 版中部分三级行业成分股数量过少其指数行情并不发布详见下文行业分类体系说明调用前可先通过分类接口确认目标行业代码是否有效。三、输出参数与数据语义接口返回的每行记录描述某只股票在某三级行业中的从属关系及其时间区间共 10 个字段全部默认显示名称类型默认显示描述l1_codestrY一级行业代码l1_namestrY一级行业名称l2_codestrY二级行业代码l2_namestrY二级行业名称l3_codestrY三级行业代码l3_namestrY三级行业名称ts_codestrY成分股票代码namestrY成分股票名称in_datestrY纳入日期out_datestrY剔除日期is_newstrY是否最新Y 是 / N 否对研究最有价值的三个字段in_date/out_date股票被纳入与剔除该行业分类的日期。当out_date为空时表示该股票当前仍在行业内当is_newN时历史上已被剔除的股票会带出非空的out_date。借助这两个字段可以精确重建任意时点的行业成分截面避免用最新成分回测历史造成的幸存者偏差survivorship bias。is_new快速区分当前成员与历史成员默认查询即过滤为Y。l1_name → l2_name → l3_name三级行业名称全路径可直接用于行业标签映射无需再单独 JOIN 行业字典。四、接口调用示例仓库文档给出了两个最典型的调用示例均通过 Tushare 的 pro 接口实例调用# 获取黄金分类的成份股 df pro.index_member_all(l3_code850531.SI) # 获取 000001.SZ平安银行所属行业 df pro.index_member_all(ts_code000001.SZ)将这两个示例放入完整的可运行流程中需要先完成 token 配置与 pro 接口初始化。这一步在仓库的 tushare 技能文档 SKILL.md 中给出了标准做法import os import tushare as ts # 读取环境变量中的 token, 或者读取本地记录的 token token os.getenv(TUSHARE_TOKEN) or ts.get_token() # 初始化 pro 接口实例 pro ts.pro_api(token) # 获取黄金分类的成份股 df pro.index_member_all(l3_code850531.SI) print(df)配置 token 的方式二选一通过环境变量注入export TUSHARE_TOKENyour_token在 Tushare 官网注册后获取 token调用ts.set_token()写入本地记录再通过ts.get_token()读取字段裁剪与批量拉取建议接口支持fields参数指定返回字段。例如只关注行业归属与代码可以这样调用# 只取关键字段缩小单次返回体积 df pro.index_member_all(l3_code850531.SI, fieldsl3_code,l3_name,ts_code,name,in_date,is_new) # 反向查询按股票反查完整行业链 df pro.index_member_all(ts_code000001.SZ, fieldsl1_name,l2_name,l3_name,ts_code,name,in_date)当需要拉取多个行业的成分时建议将行业代码列表循环逐行业请求每次请求控制在 2000 行以内再通过pd.concat合并避免触发单次行数上限import pandas as pd l3_codes [850531.SI, 850551.SI, 850552.SI] # 黄金、铝、铜 frames [] for code in l3_codes: frames.append(pro.index_member_all(l3_codecode)) df_all pd.concat(frames, ignore_indexTrue)五、数据示例黄金三级行业的成分构成以下为仓库文档中index_member_all(l3_code850531.SI)返回的真实数据片段展示了有色金属一级→ 贵金属二级→ 黄金三级这条行业链下的成分股明细l1_code l1_name l2_code l2_name l3_code l3_name ts_code name in_date 0 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 000506.SZ *ST中润 20220729 1 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 001337.SZ 四川黄金 20230224 2 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 600988.SH 赤峰黄金 20040414 3 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 600489.SH 中金黄金 20030812 4 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 600547.SH 山东黄金 20030826 5 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 002155.SZ 湖南黄金 20070815 6 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 002237.SZ 恒邦股份 20080428 7 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 601069.SH 西部黄金 20150115 8 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 000975.SZ 银泰黄金 20190724 9 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 300139.SZ 晓程科技 20220729 10 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 600687.SH 退市刚泰(退市) 20130701 11 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 600807.SH 济南高新 20220729 12 801050.SI 有色金属 801053.SI 贵金属 850531.SI 黄金 600311.SH *ST荣华(退市) 20140102从这份示例可以观察到三个实战要点行业代码与名称的层级一致性同一行业链下所有成分股共享相同的l1_code/l1_name、l2_code/l2_name、l3_code/l3_name非常适合直接作为宽表落库将行业信息冗余在各成分行上查询时无需反复 JOIN。成分会滚动变化同一只股票可能有不同的in_date纳入时点且列表中出现了退市刚泰(退市)、*ST荣华(退市)这类已退市/ST 标的。如果研究目标是当前可交易成分应在拿到数据后按is_new Y过滤并剔除退市标记如果目标是历史回测则应利用in_date/out_date重建时点截面。代码风格统一行业代码统一以.SI结尾、股票代码统一为.SH/.SZ后缀与仓库 tushare 技能文档 SKILL.md 约定的 ts_code 格式完全一致可直接与行情接口如daily、daily_basic按ts_code做内连接。六、延伸从申万行业分类到行业成分的完整数据链路index_member_all解决的是成分映射问题而其上游的分类字典由另一个接口index_classify提供。仓库技能文档 申万行业分类.md 明确记载了申万分类体系的版本与规模申万 2014 版28 个一级分类、104 个二级分类、227 个三级分类申万 2021 版31 个一级分类、134 个二级分类、346 个三级分类。index_classify的调用方式同样简单注意其参数与index_member_all不同# 获取申万 2021 版一级行业列表 df pro.index_classify(levelL1, srcSW2021) # 获取申万 2021 版二级行业列表 df pro.index_classify(levelL2, srcSW2021) # 获取申万 2021 版三级行业列表 df pro.index_classify(levelL3, srcSW2021)其输出字段包括index_code指数代码、industry_name行业名称、parent_code父级代码一级为 0、level行业层级 L1/L2/L3、industry_code行业代码、is_pub是否发布指数、srcSW2014 / SW2021 来源标识。综合两个接口即可构建一套完整的申万行业数据管线index_classify分类字典含行业代码/名称/层级/父级 │ level industry_code ▼ index_member_all成分映射含三级行业 成分股 纳入/剔除日期 │ ts_code ▼ daily / daily_basic / moneyflow个股行情 / 指标 / 资金流按 ts_code 关联2021 版三级行业代码规律结合 申万行业分类.md 中的分类表可以总结出明显的编码规律以有色金属为例层级行业代码指数代码行业名称一级240000801050.SI有色金属二级240400801053.SI贵金属三级240401850531.SI黄金即行业代码6 位的前两位标识一级行业大类中间两位标识二级、末两位标识三级而接口中实际使用的指数代码一级/二级通常为801xxx.SI形态三级通常为850xxx.SI形态。同时文档还提示了一个重要约束指数成分股小于 5 条该指数行情不发布——例如白银成分 2 条、镍成分 0 条这类三级行业尽管分类存在但行业指数行情不会发布涉及这类行业的成分查询与行情研究需要留意该限制。相似接口对比中信行业成分 ci_index_member仓库技能文档中还包含结构几乎一致的中信行业成分接口 中信行业成分.md接口名ci_index_member两者的输入/输出字段设计完全对齐l1_code/l2_code/l3_code/ts_code/is_new仅存在三处差异对比项申万 index_member_all中信 ci_index_member单次限量最大 2000 行最大 5000 行积分门槛2000 积分5000 积分代码后缀行业代码.SI行业代码.CI如果你的研究需要在两套行业框架之间切换或做交叉验证可以复用同一套调用逻辑仅替换接口名与代码后缀。七、在 Vibe-Trading 行业研究体系中的落点申万行业成分数据在 Vibe-Trading 仓库中并非孤立存在而是行业研究类技能的数据底座。仓库内置的 sector-rotation/SKILL.md行业轮动分析即明确以A 股申万行业分类体系为框架从景气度评分、动量排名、估值比较、资金流向四个维度输出行业超配/低配建议。该技能文档中的行业清单煤炭、有色、石油石化、钢铁、基础化工等上游周期行业电子、计算机、通信、传媒等 TMT 行业与申万一级行业分类一一对应而具体落地时每个行业的成分股集合、行业指数的行情与估值数据正是通过本文讲解的申万行业接口族来获取的。典型的研究工作流如下用index_classify(levelL1, srcSW2021)拉取 31 个申万一级行业清单用index_member_all(l1_code...)逐个拉取一级行业或其下三级行业的成分股按ts_code关联个股行情与财务指标计算行业聚合景气度、动量与估值分位输出行业轮动信号与超配/低配排序。在这一链路中index_member_all提供的in_date/out_date 历史字段是保证回测无幸存者偏差的关键——任何按最新行业成分回测历史收益的做法都会系统性高估业绩而利用纳入/剔除日期重建时点截面是行业轮动策略研究中必须养成的习惯。八、注意事项与最佳实践小结积分与限量index_member_all需 2000 积分单次返回最多 2000 行批量获取多个行业时逐行业循环调用并合并结果。默认只取最新is_new默认为Y研究历史成分需显式传is_newN并配合in_date/out_date使用。警惕退市与 ST 标的成分列表可能包含带(退市)、*ST标记的股票做当前可投资池时必须过滤。区分两套代码体系行业代码.SI后缀与股票代码.SH/.SZ后缀不能混用l1_code/l2_code/l3_code是行业维度参数ts_code是股票维度参数。三级行业可能无行情成分股少于 5 条的三级行业行业指数行情不发布相关研究需额外处理。字段裁剪善用fields参数只取所需列既降低传输体积也便于落库。以上内容全部以 Vibe-Trading 仓库内置的 Tushare 技能文档为依据关键参考文件包括申万行业成分(分级).md.md)本篇主文档、SKILL.mdtoken 配置与 ts_code 约定、申万行业分类.md行业分类字典与 2021 版编码规则、中信行业成分.md相似接口对比以及 sector-rotation/SKILL.md行业轮动研究中的应用落点。读者可以循着这些文件继续深入仓库中对应的数据源技能与行业研究技能。【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表