Vibe-Trading Tushare 数据接入指南申万行业分类接口 index_classify 全解析与量化应用【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading申万行业分类是 A 股量化研究中最常用的行业划分标准之一。本文以 Vibe-Trading 仓库内 Tushare 技能文档为骨架系统讲解index_classify接口的权限要求、入参与出参约定、调用示例并完整呈现 2021 版申万行业分类体系31 个一级行业、134 个二级行业、346 个三级行业的清单与变动规律同时结合仓库内 sector-rotation 技能、申万行业成分(分级).md)、申万行业指数日行情 等资源说明如何把行业分类数据串联成完整的行业轮动与行业配置分析流水线。读完本文你将能够独立获取申万行业分类清单理解新旧版本差异并将分类数据接入自己的因子库与策略框架。一、申万行业分类体系概览申万行业分类是申万宏源证券研究所发布的上市公司行业划分标准也是 A 股行业研究、指数编制和量化投资中事实上的行业基准。Tushare 通过index_classify接口提供两个历史版本的分类列表版本一级分类二级分类三级分类说明申万 2014 年版SW201428 个104 个227 个早期常用版本申万 2021 年版SW202131 个134 个346 个当前默认推荐版本从文档与仓库使用情况看2021 版是当前主推版本申万行业指数日行情 明确注明默认是申万 2021 版行情sector-rotation 技能 也直接以31 个一级行业作为行业轮动分析的分类基础。2021 版与 2014 版的差异要点相较于 2014 版2021 版的主要变化体现在一级行业数量增加由 28 个扩充到 31 个新增了煤炭、石油石化、环保、美容护理等独立一级行业如 740000 煤炭、750000 石油石化、760000 环保、770000 美容护理均为2021新增细分颗粒度提升三级行业由 227 个增加到 346 个细分方向明显变多如电池、光伏设备、风电设备、电网设备从旧体系中拆分为独立二级/三级行业命名规范化大量行业名称统一加ⅡⅢ后缀以区分层级如中药Ⅱ中药Ⅲ动物保健Ⅱ动物保健Ⅲ避免上下级名称混淆代码替换与迁移部分三级行业沿用旧代码或整体迁移到新父级变动原因标注为2021替换代码xxx例如农化制品下的氮肥850331替换旧代码220301。从仓库内 申万行业分类.md 的完整清单看变动原因字段取值主要有四类2021保留新旧版本沿用、2021新增本次新设、2021改名名称调整、2021替换代码代码归属迁移。理解这些变动标识有助于在历史回测时正确跨版本映射行业归属避免使用过时分类。二、接口基本信息与权限index_classify接口的核心定位是获取申万行业分类的静态列表信息行业代码、层级、父级关系、发布状态它不提供行情数据而是为后续获取行情、成分等数据提供行业代码字典。接口名index_classify功能描述获取申万行业分类可获取 2014 年版本28/104/227和 2021 年版本31/134/346列表信息权限要求用户需 2000 积分方可调取具体积分获取办法见 Tushare 官方积分文档原文档中链接指向官方积分获取办法doc_id13需要特别说明的是行业指数有发布门槛指数成分股小于 5 条的行业其指数行情不发布。这一点对后续拉取行情影响很大——例如上表中粮食种植成分 2 条、食用菌4 条、林业Ⅱ3 条等行业的is_pub字段为 0意味着这些行业虽然存在分类但没有对应发布的行业指数行情不能用于sw_daily等行情接口回测。三、输入参数详解index_classify支持以下四个输入参数全部为可选参数N可根据需要组合使用以缩小查询范围名称类型必选描述index_codestrN指数代码levelstrN行业分级L1/L2/L3parent_codestrN父级代码一级为 0srcstrN指数来源SW2014申万 2014 年版本SW2021申万 2021 年版本参数组合的使用逻辑src是最关键的筛选维度决定返回哪一套分类体系。实践中绝大多数场景应显式指定srcSW2021避免默认行为与预期不符level控制层级粒度传L1获取一级行业31 条、L2获取二级行业134 条、L3获取三级行业346 条。不传则返回全部层级parent_code支持按父级过滤一级行业的父级代码为 0二级行业的父级代码是一级行业代码如 110000 农林牧渔三级行业的父级代码是二级行业代码。利用该参数可以一次性取回某个一级行业下所有二级行业或某个二级行业下所有三级行业index_code精确匹配传入行业指数代码如 801010.SI可精确返回该行业及其子级信息。常见查询范式# 取某一级行业下的全部二级/三级行业 df pro.index_classify(parent_code110000, srcSW2021) # 农林牧渔及其下所有子级 df pro.index_classify(parent_code110000, levelL2, srcSW2021) # 仅二级 # 按指数代码精确查询 df pro.index_classify(index_code801010.SI, srcSW2021)四、输出参数详解接口返回的 DataFrame 包含以下字段默认显示为 Y 的字段在默认输出中返回名称类型默认显示描述index_codestrY指数代码industry_namestrY行业名称parent_codestrY父级代码levelstrY行业层级industry_codestrY行业代码is_pubstrY是否发布了指数srcstrN行业分类SW 申万字段语义与实战要点industry_code与index_code的区别industry_code是申万内部行业编码如110000、110100index_code是对应的行情指数代码如801010.SI。前者用于行业归类标识后者用于行情接口sw_daily、rt_sw_k的数据拉取parent_code构建树形关系借助该字段可以复原一级 → 二级 → 三级的完整行业树。一级行业parent_code为 0is_pub决定可回测性值为 1 表示该行业发布了指数行情值为 0 表示未发布成分股 5 条。构建行业动量/轮动因子时必须过滤is_pub 1的行业否则行情数据为空level用于层级筛选L1/L2/L3与输入参数level对应。五、接口调用示例完整可运行原文档给出如下标准示例直接调用即可获取申万 2021 版各层级行业列表# 获取申万一级行业列表 df pro.index_classify(levelL1, srcSW2021) # 获取申万二级行业列表 df pro.index_classify(levelL2, srcSW2021) # 获取申万三级级行业列表 df pro.index_classify(levelL3, srcSW2021)在此基础上结合仓库内 Tushare 技能快速上手文档 中的初始化方式可以写出一个完整的可运行脚本import os import tushare as ts # 读取环境变量中的 token或读取本地记录的 token token os.getenv(TUSHARE_TOKEN) or ts.get_token() # 初始化 pro 接口实例 pro ts.pro_api(token) # 获取申万 2021 版一级行业列表 df_l1 pro.index_classify(levelL1, srcSW2021) print(df_l1[[industry_code, index_code, industry_name, is_pub]]) # 获取申万 2021 版全部二级行业 df_l2 pro.index_classify(levelL2, srcSW2021) print(df_l2[[industry_code, index_code, industry_name, parent_code, is_pub]]) # 获取申万 2021 版全部三级行业 df_l3 pro.index_classify(levelL3, srcSW2021) print(df_l3[[industry_code, index_code, industry_name, parent_code, is_pub]]) # 只取已发布指数的行业排除成分股不足 5 条、无行情的行业 df_pub df_l3[df_l3[is_pub] 1] print(df_pub.shape)前提说明运行以上代码需要已安装tushare依赖包推荐 Python 3.7可从清华 PyPI 镜像安装并完成 Tushare 官网注册、获取 token、配置TUSHARE_TOKEN环境变量同时账户积分达到 2000 分。仓库内还提供了 股票数据获取示例 与 基金数据获取示例 两个脚本展示了 token 读取与 pro 接口调用的完整模式。六、2021 版申万一级行业分类全览原文档的数据示例展示了levelL1的部分返回结果实际 2021 版一级行业共 31 个。结合原文档完整分类表可整理出以下一级行业清单行业代码、指数代码、成分股数来自原文档清单含是否发布信息行业代码指数代码一级行业变动原因成分股数110000801010农林牧渔2021保留100220000801030基础化工2021改名311230000801040钢铁2021保留43240000801050有色金属2021保留125270000801080电子2021保留284280000801880汽车2021保留221330000801110家用电器2021保留77340000801120食品饮料2021保留113350000801130纺织服饰2021改名113360000801140轻工制造2021保留131370000801150医药生物2021保留331410000801160公用事业2021保留120420000801170交通运输2021保留128430000801180房地产2021保留131450000801200商贸零售2021保留104460000801210社会服务2021改名72480000801780银行2021保留41490000801790非银金融2021保留87510000801230综合2021保留40610000801710建筑材料2021保留76620000801720建筑装饰2021保留147630000801730电力设备2021改名239640000801890机械设备2021保留379650000801740国防军工2021保留97710000801750计算机2021保留239720000801760传媒2021保留149730000801770通信2021保留100740000801950煤炭2021新增38750000801960石油石化2021新增47760000801970环保2021新增97770000801980美容护理2021新增27其中2021改名的一级行业包括基础化工原化工、纺织服饰原纺织服装、社会服务原休闲服务、电力设备原电气设备2021新增的四个一级行业为煤炭、石油石化、环保、美容护理——这些行业在旧版中属于其他一级行业下的二级分类2021 版将其独立出来反映了分类体系对能源、环保与消费细分赛道的重视。从二级行业层面看2021 版共 134 个二级行业覆盖从农林牧渔种植业、渔业、林业Ⅱ、饲料、农产品加工、养殖业、动物保健Ⅱ、农业综合Ⅱ到美容护理个护用品、化妆品、医疗美容的全部产业环节。三级行业更是细到种子粮食种植食用菌生猪养殖锂电池光伏电池组件等具体赛道例如农林牧渔 → 种植业 → 种子850111、粮食种植850112、食用菌850114电子 → 半导体 → 数字芯片设计850814、模拟芯片设计850815、集成电路制造850816、集成电路封测850817、半导体设备850818电力设备 → 电池 → 锂电池857371、电池化学品857372、燃料电池857374机械设备 → 自动化设备 → 机器人850781、工控设备850782、激光设备850783完整的三级行业明细346 个可通过pro.index_classify(levelL3, srcSW2021)一次性获取无需从静态文档手工抄录这也是接口相比文档表格的核心优势。七、分类变动规律与跨版本注意事项从原文档清单中的变动原因列可以总结出 2021 版分类调整的四大规律保留为主、增量拆分大量行业标注2021保留说明 2014 版的骨干结构得到延续变化主要集中在新增与替换——新设了电池、光伏设备、风电设备、电网设备、煤炭开采等成长型与能源型赛道命名层级规范化二级/三级行业普遍使用Ⅱ/Ⅲ后缀如白酒Ⅱ/白酒Ⅲ特钢Ⅱ/特钢Ⅲ一级行业不加后缀规避同名歧义代码替换可追溯部分三级行业标注2021替换代码-改名如磷肥及磷化工替换 220302 并改名这类行业在历史回测时需要建立新旧代码映射表否则会因代码不连续而漏算成分股成分股数差异巨大从 0 条如镍、本地生活服务Ⅲ到 379 条机械设备不等成分股数少于 5 条的行业不发布指数行情is_pub0。例如银行板块的其他银行Ⅱ成分 0 条、传媒板块社交Ⅱ成分 0 条、社会服务板块本地生活服务Ⅱ成分 0 条这些行业无法直接用于指数收益计算。量化使用建议构建行业池时优先用levelL1is_pub1过滤得到可回测的 31 个一级行业其中煤炭、石油石化等新增行业的历史长度较短回测起点需相应调整做细分赛道轮动时使用levelL3并结合 申万行业成分(分级) 接口 index_member_all.md) 获取每个三级行业的成分股如l3_code850531.SI提取黄金板块全部成分股实现分类 → 成分 → 行情 → 因子的完整链路做跨版本长周期研究时以 2021 版代码为基准对 2014 版行业的迁移关系建立映射字典原文档变动原因字段中的替换/改名记录即为天然映射素材。八、仓库内的实战串联从行业分类到行业轮动在 Vibe-Trading 仓库中申万行业分类并不是孤立的一张静态表而是行业研究数据链路的入口。围绕 申万行业分类.md 形成的数据链如下1. 分类字典层index_classify提供行业代码、指数代码、层级与发布状态。这是所有后续申万数据的主键字典。2. 成分映射层index_member_all申万行业成分(分级).md) 接口index_member_all按三级分类提取成分股支持l1_code/l2_code/l3_code/ts_code四个查询维度单次最大 2000 行、总量不限制输出in_date纳入日期与out_date剔除日期可用于成分股口径下的行业组合构建与历史回放# 获取黄金分类850531.SI的成份股 df pro.index_member_all(l3_code850531.SI) # 获取 000001.SZ 所属行业 df pro.index_member_all(ts_code000001.SZ)3. 行情层sw_daily 与 rt_sw_k申万行业指数日行情 接口sw_daily返回申万行业日线行情默认 2021 版输出开高低收、涨跌幅、成交量、成交额以及pe、pb、float_mv、total_mv等估值与市值字段单次最大 4000 行、需 5000 积分。用index_classify拿到的ts_code如 801010.SI可以直接作为sw_daily的输入# 获取 20230705 当日所有申万行业指数的行情与估值 df pro.sw_daily(trade_date20230705, fieldsts_code,name,open,close,vol,pe,pb)申万实时行情 接口rt_sw_k提供申万行业指数最新截面数据现价、昨收、最高、最低、成交量、成交额、涨跌幅支持按ts_code逗号分隔批量查询适合盘中行业监控。4. 策略应用层sector-rotation 技能仓库内的 sector-rotation 技能 正是建立在31 个申万一级行业基础上的行业轮动分析框架从景气度评分盈利增速 30% 盈利趋势 20% 景气指标 20% 政策支持 15% 估值安全 15%、行业动量排名、产业链传导、估值/盈利/资金流多维比较四个维度输出行业超配/低配建议。其行业动量计算可直接套用申万行业指数收益数据def sector_momentum(sector_returns: pd.DataFrame, lookback: int 60, skip: int 5) - pd.Series: Args: sector_returns: 行业日收益率columns行业名 lookback: 回看窗口交易日 skip: 跳过最近N天避免短期反转 Returns: 行业动量得分排名 cum_return (1 sector_returns).rolling(lookback).apply(lambda x: x[:-skip].prod() - 1) return cum_return.iloc[-1].rank(ascendingFalse)行业收益数据正是由sw_daily历史与rt_sw_k实时供给而index_classify负责确认哪些行业有指数、口径是哪个版本——三者构成了完整的行业分类 → 行业行情 → 行业轮动策略闭环。九、最佳实践与注意事项积分门槛是硬约束index_classify需 2000 积分sw_daily需 5000 积分rt_sw_k需单独申请权限。设计数据管道时应先用分类接口建立代码白名单再按权限逐级开通行情接口必须过滤is_pub成分股 5 条的行业无指数行情拉取sw_daily前务必用is_pub 1过滤否则会出现大量空数据并污染动量/轮动计算显式指定src新旧版本分类差异显著28 vs 31 个一级行业所有调用都应显式传srcSW2021或SW2014不要依赖默认值层级树从parent_code复原parent_code一级为 0提供了完整的父子关系可用于递归展开任一行业的下属子行业构建自下而上的行业聚合行情限量与循环提取sw_daily单次最大 4000 行跨多行业、多日期提取时应按指数代码和日期循环分页index_member_all单次 2000 行但总量不限同样适合循环拉取区分分类代码与指数代码行业归类和跨版本映射用industry_code行情拉取用index_code带.SI后缀二者不可混用。综上index_classify是 Vibe-Trading 中所有申万行业量化分析的起点接口。掌握其参数语义、版本差异与is_pub过滤逻辑再配合index_member_all成分、sw_daily/rt_sw_k行情以及 sector-rotation 技能策略框架即可在仓库内构建一套数据口径一致、可回测、可跟踪的行业研究体系。【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考