FAQ > 金融建模 > 建模问题 > 行业与板块

Q:怎么得到申万一级二级三级的归属与指数代码对照表?    

  • 获取指定日申万一级二级三级指数代码对照表
    实现方式:首先码获取申万一级二级三级行业代码对照表,再把行业代码转换为指数代码即可
    参考:
    FAQ:Q: 如何获取指定日所有的申万一级/二级/三级行业代码及指定行业代码在指定日的成份股?
    FAQ:Q: 指定日申万行业代码与申万行业指数代码的相互转换
    实现代码

      endt:=20230321t;
      swhy1:=GetBKByDate("SWHY.N",EndT);
      rt:=array();
      for i in swhy1 do
      begin
        hycode1:=swhy1[i];
        name1:=StockNameByDate(hycode1,endt);
        swhy2:=GetBKByDate(hycode1$".N",EndT);
        for j in swhy2 do
        begin
          hycode2:=swhy2[j];
          name2:=StockNameByDate(hycode2,endt);
          swhy3:=GetBKByDate(hycode2$".N",EndT);
          for k in swhy3 do
          begin
            hycode3:=swhy3[k];
            name3:=StockNameByDate(hycode3,endt);
            rt[x,"一级代码"]:=hycode1;
            rt[x,"一级名称"]:=name1;
            rt[x,"二级代码"]:=hycode2;
            rt[x,"二级名称"]:=name2;
            rt[x,"三级代码"]:=hycode3;
            rt[x++,"三级名称"]:=name3;
          end
        end
      end
      rt[:,array("一级代码","二级代码","三级代码")]::= StockIndustryIndexID(mcell,endt);
      rt:=select * from rt order by ["一级代码"],["二级代码"],["三级代码"] end;
      return rt;
    结果展示:


    通过申万一级指数代码获取二级三级指数代码
    实现方式:先把指数代码转为行业代码,再通过行业代码获取下级代码,最后把获取到的各级行业转为指数代码,实现过程参考上面的案例。
    通过申万三级指数代码获取一级二级指数代码
    实现方式:先把指数代码转为行业代码,再通过行业代码查询股票属性表获取上级属性代码,最后把获取到的各级行业代码转为指数代码
    参考:FAQ:股票行业分类信息
    实现代码

      endt:=20230321t;
      index:="SW850131";
      swhy3:=StockIndustryIndexID(index,endt);
      swhy2:=vselect ["上级属性代码"] from infotable 138 of swhy3 end;
      swhy1:=vselect ["上级属性代码"] from infotable 138 of swhy2 end;
      rt:=array();
      rt["一级代码"]:=StockIndustryIndexID(swhy1,endt);
      rt["一级名称"]:=StockNameByDate(swhy1,endt);
      rt["二级代码"]:=stockIndustryIndexID(swhy2,endt);
      rt["二级名称"]:=StockNameByDate(swhy2,endt);
      rt["三级代码"]:=index;
      rt["三级名称"]:=StockNameByDate(index,endt);
      return rt;
    结果展示: