如何徒手写一个申万行业分类数据

警告
本文最后更新于 2023-04-15,文中内容可能已过时。

申万行业分类作为国内比较权威的A股分类标准,对于研究股票具有重要的参考价值。我们观察到,目前市面上(至少免费层面)没有一个相对完善、完整的历史数据与每日更新数据。

  • 号称国内数据之王的万得,一方面对于用户提取的数据量有严格的限制,这导致我们在复原历史数据的过程经常会触发阈值;另一方面,我们发现万得会确实部分数据,以及存在臭名昭著的脏数据问题。比如,万得由于授权原因,无法提供上交所科创板股票的申万行业分类数据;再比如,这个票 000008.SZ,我们通过申万网站查询该票的历史变更情况:

    000008.SZ

    可以查询到该票其实应该数据机械设备,相应的申万行业代码为 801890.SI,但是万得竟然标注为 801050.SI

    000008.SZ

    而根据《申万行业分类2014标准》这个代码对应的行业是 有色金属,简单查询这个股票即可以这个完全没有涉及金属业务,明显存在数据错误。

  • 我们之前依赖一个 HF 的 stock.industry 数据库,后面发现这个也是完全瞎扯,他们直接利用现在的行业代码去更新历史的数据,没有考虑这个票在历史可能存在的主营业务发生变化、或者产生了重组,申万会相应的调整行业分类。

如何找思路

最简单的思路是:去申万官网查看是否提供历史数据。不过很遗憾,这个数据其实算收费项目,对方并不提供历史的行业分类数据。

技多不压身

凡事难不倒一个会爬虫的开发,我查看发现申万网站提供了股票历史的分类记录,可以通过该记录条款,逐一地把历史的分类数据还原。

申万指数官网

下载得到的数据是这样的:

申万指数官网

犹抱琵琶半遮面

查看上面的数据,我们发现申万只提供了内部的行业代码(如 000001.SZ 最近的行业代码是 480301,这个表示:

  • 一级行业分类是银行
  • 二级行业分类是股份制银行II
  • 三级行业分类是股份制银行III

申万指数官网

现在有点麻烦的是,研究员希望我们提供对应的申万指数代码,即我们经常看到的 801780.SI(一级行业代码)。

目前的情况是,我们已经得到申万内部的一个行业代码,需要将其映射到外部常用的申万指数代码。这个肯定需要从其他地方获取相关的信息。

柳暗花明又一村

这时候需要用梯子查找信息了。经过一番摸鱼后,发现几个宝贝玩意:

  1. 申万分别在 2011、2014、2021 发现了三份研究报告,介绍了申万行业指数的编制规则与调整说明
  2. 其中 2011、2014 的两份报告中,有明确说明内部行业代码与对应的指数代码,我们可以利用这个信息做一个映射
  3. 而在 2021 的这份数据,则没有对照表,我发现聚宽提供了一份行业名称与指数代码的对照表,那么我们可以通过名称找到对应的指数代码

申万指数官网 申万指数官网 申万指数官网 申万指数官网

目前看,食材都已就绪。

如何清洗数据

去读 pdf 数据

清洗数据

生成目标数据

数据入库

相关内容

william 支付宝支付宝
william 微信微信
0%