# 分类属性代码(行业与基金分类) 天软把「个券归属会随时间变更」的分类维护成**分类属性**,用一套属性代码 (如 `SWHY210000`)标识。分类目录本身和个券归属分别放在不同的字典表里, 取数入口也不同。本页收拢这类分类的代码体系与取数路径。 本页是手写整理页,不由字典生成器产出;`references/data_dictionary/` 下的页面 是生成产物,不要把这里的内容写回那些页面。 ## 目前维护的分类属性 | 资产 | 所属属性代码 | 分类名称 | 级数 | 备注 | | ---- | ------------ | ------------------ | ---- | --------------------------- | | 股票 | `SWHY` | 申万行业 | 三级 | | | 股票 | `CAPCHY` | 中上协行业 | 二级 | 2024-02-19 起接替证监会行业 | | 股票 | `CSRCHY` | 证监会行业 | 二级 | **2024-02-19 起不再维护** | | 基金 | `YHFL` | 银河基金分类 | 二级 | 数据起始 2021-01-04 | | 基金 | `TSJJ02` | 投资风格 | 二级 | | | 基金 | `TSJJ03` | 净值增长率计算方法 | 二级 | | 属性代码的构成是「所属属性代码 + 层级编号」,例如 `SWHY` → `SWHY210000`(申万采掘, 一级)→ 其下二级、三级继续细分;`CSRCHY` → `CSRCHYA`(农、林、牧、渔业)→ `CSRCHYA01`(农业)。 ## 两类表:分类目录 vs 个券归属 分类目录(有哪些分类、上下级关系、启用与剔除日期)和个券归属(某只券在某段时间属于 哪个分类)是两张不同的表,访问代码不同: | 表 ID | 表名 | 访问代码 | 用途 | | ----- | --------------------- | ------------------------------------- | ------------------ | | 138 | 股票.股票行业分类信息 | **属性代码**,如 `SWHY`、`SWHY110000` | 股票分类目录 | | 355 | 基金.基金分类信息 | **属性代码**,如 `YHFL`、`YHFL010000` | 基金分类目录 | | 356 | 基金.基金分类 | **基金代码**,如 `OF000316` | 单只基金的分类归属 | 138 与 355 的字段结构一致:`属性代码`、`属性名称`、`级数`、`上级属性代码`、 `上级属性名称`、`入选日期`、`剔除日期`、`最新标识`、`所属属性代码`。 传错访问代码是这里最常见的错误:把基金代码传给 355、或把属性代码传给 356,都不会报错, 只会返回空表。字段清单与取数示例见字典页,用 `dictionary_lookup.py --query 股票行业分类信息` / `--query 基金分类信息` 取回。 ## 取分类目录 按属性代码取某个分类节点及其记录: ```tsl // 申万行业分类目录(全部层级) return select * from infotable 138 of "SWHY" end; ``` `getbk(板块名)` 可以一次取回某个分类下的全部属性代码,再喂给 `infotable`: ```tsl // 申万行业的全部分类属性代码,按级数分组展示 codes := getbk("申万行业"); t := select * from infotable 138 of codes end; return select ['级数'], select * from thisgroup end as '分类列表' from t group by ['级数'] order by ['级数'] end; ``` `getbk("属性代码")` 是跨资产的总入口,同时覆盖股票与基金两侧: ```tsl codes := getbk("属性代码"); t1 := select "股票" as '资产', * from infotable 138 of codes end; t2 := select "基金" as '资产', * from infotable 355 of codes end; return t1 union t2; ``` `getbk` 取的是**最新**成分,且入参是板块名称而非代码;签名与板块名约束见 `lookup.py --name getbk`。 ## 沿层级向下走 分类属性代码后缀 `.N` 表示「该属性下的所有下级分类属性代码」: ```tsl // 指定日所有申万一级行业代码 return getbkbydate("SWHY.N", 20210423T); // 指定一级行业下的二级行业代码 return getbkbydate("SWHY210000" $ ".N", 20210423T); ``` 三级同理,用二级代码加 `.N`。也有直接返回下级列表的函数,签名用 `lookup.py --name stockIndustryLowerArr` / `--name fundYHIndustryArr` 取回。 ## 取分类成分 不带 `.N` 时,`getBkByDate` 把属性代码当分类节点,返回该分类在指定日的成分券: ```tsl return getbkbydate("SWHY740000", 20220101T); // 申万煤炭成分股 return getbkbydate("CAPCHYD", 20240219T); // 中上协:电力、热力、燃气及水 return getbkbydate("YHFL030000", 20220101T); // 银河债券型成分基金 return getbkbydate("TSJJ0201", 20220101T); // 投资风格:股票型 ``` `getBkByDate` 的字典条目只描述了指数代码入参,分类属性代码入参同样成立;两种入参 共用一个函数。签名与 `extype` 参数见 `lookup.py --name getBkByDate`。 ## 行业分类代码 ≠ 行业指数代码 同一个申万行业有两套代码,用途不同,混用会取到空结果: | 用途 | 代码形态 | 示例 | | -------------------- | ------------------------ | ----------------------------- | | 行业**分类**属性代码 | `SWHY` + 层级编号 | `SWHY210000` 申万采掘 | | 行业**指数**代码 | `SWHY00000N`(N 为级数) | `SWHY000001` 申万一级行业指数 | 取行业指数代码序列走指数侧: ```tsl // 指定日所有申万一级行业指数代码 return getbkbydate("SWHY000001", 20190201T); // 最新的行业指数序列也可按板块名取 return getbk("申万一级行业指数"); ``` 二级、三级分别对应 `SWHY000002` / `SWHY000003`,板块名分别是 `申万二级行业指数` / `申万三级行业指数`。代码转名称用 `lookup.py --name stockName`。 ## 反查:个券在指定日属于哪个分类 申万各级有成对的名称/编码查询函数,与系统参数「证券」「日期」相关: ```tsl setSysParam(pn_stock(), "SZ000002"); setSysParam(pn_date(), 20200101T); return array("一级名称": stockSWIndustryName1(), "一级编码": stockSWIndustryID1(), "二级名称": stockSWIndustryName2(), "二级编码": stockSWIndustryID2(), "三级名称": stockSWIndustryName3(), "三级编码": stockSWIndustryID3()); ``` 批量反查配合 `spec(...)` 逐券切换系统参数: ```tsl endt := 20240103T; stocks := getbkbydate("SH000016", endt); setSysParam(pn_date(), endt); return select thisRow as "sid", spec(stockSWIndustryName1(), thisRow) as "一级行业名称", spec(stockSWIndustryID1(), thisRow) as "一级行业编码" from stocks end; ``` 这六个函数无参数,签名逐个用 `lookup.py --name stockSWIndustryName1` 等确认。 按板块分类批量反查另有 `stocksbklist`,其 `bktype` 是整数板块类别,取值不在本页 事实范围内,用前先确认。 ## 其它取数代码 少量非个券维度的数据也用代码位取:`HG000001` 宏观数据表格,`HG000001`~`HG000004` 分别对应港股通(沪)、沪股通、港股通(深)、深股通方向。其余特别数据(如国债收益率 曲线)按字典页或专题文档确认,不在本页枚举。 ## 事实边界 本页只给代码体系与取数路径。函数签名、参数类型、返回形态一律以 `lookup.py --name` 的条目正文为准,本页示例不作为签名依据。具体分类下有哪些属性代码 会随上游调整,不在本页硬编码;用上面的 `getbk` + `infotable` 组合在运行时取回当前列表。