♻️ refactor(tsl-api): tighten docs and retire stale tests
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
# 证券代码序列取数
|
||||
|
||||
「先拿到一批证券代码,再逐个取指标」是天软里最常见的起手动作。代码序列有三条互不
|
||||
等价的取数路径,选错路径会静默拿到错误的样本集:
|
||||
|
||||
| 路径 | 函数 | 时点语义 | 入参 |
|
||||
| ----------------- | -------------- | ------------------ | -------------------------- |
|
||||
| 板块最新成分 | `getbk` | **最新**,不带日期 | 板块中文名 |
|
||||
| 板块历史成分 | `getAbkbyDate` | 指定日 | 板块中文名(仅限部分板块) |
|
||||
| 指数/分类历史成分 | `getBkByDate` | 指定日 | 指数代码或分类属性代码 |
|
||||
|
||||
`getbk` 没有日期入参,拿到的永远是当前成分;做历史回测时用它会引入前视偏差。
|
||||
签名与各自的适用范围用 `lookup.py --name getbk` / `--name getAbkbyDate` /
|
||||
`--name getBkByDate` 取回。
|
||||
|
||||
本页是手写整理页,不由字典生成器产出。
|
||||
|
||||
## 板块名是复合的
|
||||
|
||||
多个板块名用英文分号拼接,一次传入:
|
||||
|
||||
```tsl
|
||||
return getbk("深证A股;上证A股"); // 只要主板
|
||||
return getbk("A股;暂停上市;终止上市"); // 含退市与暂停上市
|
||||
return getbk("港股;终止上市港股"); // 全部港股
|
||||
return getbk("上市指数;退市指数"); // 全部指数
|
||||
return getbk("上证基金;深证基金"); // 在市基金交易代码
|
||||
```
|
||||
|
||||
`A股` 本身就是复合板块,等于 `深证A股;上证A股;创业板;科创板;北证A股`。需要单独一个
|
||||
板块时直接写该板块名,不要在 `A股` 结果上二次过滤。
|
||||
|
||||
板块划分会随上游调整:港股在 2026-06-25 之前全部在「港股」板块内,之后拆出
|
||||
「终止上市港股」。依赖板块名的代码在跨越这类调整时要复核。
|
||||
|
||||
具体有哪些板块名不在本页事实范围内;`getbk` 要求名称与板块管理中的名称完全一致,
|
||||
先在客户端板块管理里确认。
|
||||
|
||||
## 指定日的市场板块成分
|
||||
|
||||
`getAbkbyDate(bk_name, endt)` 按板块中文名取指定日成分,并剔除暂停上市:
|
||||
|
||||
```tsl
|
||||
return getAbkbyDate("A股", 20200210T);
|
||||
return getAbkbyDate("深证A股;上证A股;北证A股", 20200210T);
|
||||
```
|
||||
|
||||
它只支持市场板块(`A股`、`上证A股`、`深证A股`、`北证A股`、`创业板`、`科创板`、
|
||||
`中小企业板`),其它板块名不支持。
|
||||
|
||||
另一条等价路径是用天软自编的市场板块**指数**代码走 `getBkByDate`:
|
||||
|
||||
| 代码 | 板块 | 代码 | 板块 |
|
||||
| ----------- | ------- | ----------- | ------- |
|
||||
| `TSI000001` | A股 | `TSI000006` | 北证A股 |
|
||||
| `TSI000002` | 上证A股 | `TSI000007` | B股 |
|
||||
| `TSI000003` | 科创板 | `TSI000008` | 上证B股 |
|
||||
| `TSI000004` | 深证A股 | `TSI000009` | 深证B股 |
|
||||
| `TSI000005` | 创业板 | | |
|
||||
|
||||
```tsl
|
||||
return getbkbydate("TSI000001", 20230810T); // A股板块 20230810 成分
|
||||
```
|
||||
|
||||
## 指数成分必须用指数代码
|
||||
|
||||
指数成分来源于指数成份变更表(`infotable 752` 指数.指数成份),与板块来源不同,
|
||||
只能用指数代码取:
|
||||
|
||||
```tsl
|
||||
return getbkbydate("SH000300", 20210908T); // 沪深300 指定日成分
|
||||
```
|
||||
|
||||
板块名传给 `getBkByDate` 不会报错,只会返回空表。字段清单用
|
||||
`dictionary_lookup.py --query 指数成份` 取回。
|
||||
|
||||
## 行业分类与行业指数是两套代码
|
||||
|
||||
`getbkbydate("SWHY740000", ...)` 取的是**行业分类**成分(来源:个股所属行业),
|
||||
`getbkbydate("SW801150", ...)` 取的是**行业指数**成分(来源:指数成份表)。两者
|
||||
样本可能不同。先用 `SWHY00000N` 拿到该级全部行业指数代码,再逐个取成分:
|
||||
|
||||
```tsl
|
||||
idx := getbkbydate("SWHY000001", 20190201T); // 所有申万一级行业指数代码
|
||||
return getbkbydate(idx[0], 20190201T); // 其中一个的成分股
|
||||
```
|
||||
|
||||
分类属性代码体系见 [`classification-codes.md`](classification-codes.md)。
|
||||
|
||||
## 沪深港通
|
||||
|
||||
沪深港通合资格名单也记在 `infotable 752`,用四个方向虚拟代码取:
|
||||
|
||||
| 代码 | 方向 | 代码 | 方向 |
|
||||
| ---------- | ------------ | ---------- | ------------ |
|
||||
| `HG000001` | 港股通(沪) | `HG000003` | 港股通(深) |
|
||||
| `HG000002` | 沪股通 | `HG000004` | 深股通 |
|
||||
|
||||
```tsl
|
||||
// 指定日北向(A股)合资格名单
|
||||
return getbkbydate("HG000002", 20240701T) union2 getbkbydate("HG000004", 20240701T);
|
||||
|
||||
// 指定日南向(港股)合资格名单
|
||||
return getbkbydate("HG000001", 20240701T) union2 getbkbydate("HG000003", 20240701T);
|
||||
|
||||
// 曾经进过港股通的全部港股代码
|
||||
return sselect distinct ["证券代码"]
|
||||
from infotable 752 of array("HG000001", "HG000003") end;
|
||||
```
|
||||
|
||||
## 基金:在市与运作状态是两回事
|
||||
|
||||
板块决定「是否上市」,运作状态要另外筛:
|
||||
|
||||
```tsl
|
||||
return getbk("上市基金"); // 当前在市
|
||||
return getbk("已退市基金"); // 已退市
|
||||
return getbkall("普通股票型"); // 某分类全部,含已停止运作
|
||||
return fundOperateFundsbyBkname("上市基金;已退市基金", 20200924T); // 指定日仍在运作
|
||||
return fundsOperateFunds(getbkall("股票型"), 20200101T); // 对给定列表筛运作中
|
||||
```
|
||||
|
||||
`getBkAll` 返回板块全部样本含退市,但对一批板块不适用(A股类、指数成份类、概念板块
|
||||
等),限制清单见 `lookup.py --name getBkAll` 的条目正文。
|
||||
|
||||
按基金分类取指定日成分优先走分类属性代码:
|
||||
|
||||
```tsl
|
||||
return getbkbydate("TSJJ0201", 20220101T); // 投资风格:股票型
|
||||
```
|
||||
|
||||
一级市场代码与二级市场(交易)代码不同:`getbk("上证基金;深证基金")` 取的是交易代码,
|
||||
两者可通过基金基本信息表里的交易代码字段互转。
|
||||
|
||||
## 债券
|
||||
|
||||
```tsl
|
||||
return getbk("深交所债券;上交所债券;银行间债券"); // 当前在市全部债券
|
||||
return getbk("可转债"); // 当前在市可转债
|
||||
return getbk("可转债;退市可转债"); // 含退市
|
||||
return getbkall("可转债"); // 同上,走 getBkAll
|
||||
return bondConvertibleBonds2(); // 专用函数:所有可转债
|
||||
return cb_getTradeMarkByDate(20210813T); // 指定日有交易的转债
|
||||
```
|
||||
|
||||
券种板块名(`国债`、`企业债` 等)走同一套 `getbk` 路径。两个专用函数的签名见
|
||||
`lookup.py --name bondConvertibleBonds2` / `--name cb_getTradeMarkByDate`。
|
||||
|
||||
## 期货
|
||||
|
||||
期货有「合约」和「品种」两层,代码序列要分清取哪一层:
|
||||
|
||||
```tsl
|
||||
return getbk("上市期货"); // 当前在市合约
|
||||
return getbk("上市期货;退市期货"); // 含退市合约
|
||||
return getbk("期货品种代码"); // 品种代码(CU、IF 这类)
|
||||
return getbk("期货品种代码;退市期货品种代码");
|
||||
return getbk("期货主力"); // 主力线;期货连续/次主力/指数线同理
|
||||
return getFuturesBkbydate("上市期货;退市期货", 20251218T); // 指定日在市合约
|
||||
return getFuturesBkbydate("郑州商品交易所;中国金融期货交易所", 20240508T);
|
||||
```
|
||||
|
||||
`getFuturesBkbydate` 的板块名可以是交易所名、期货类别(`股指期货`、`商品期货`、
|
||||
`农产品期货`)或品种名,签名见 `lookup.py --name getFuturesBkbydate`。
|
||||
|
||||
品种代码与主力/次主力/指数线/连续代码的对照关系在 `infotable 708`
|
||||
(期货.期货品种代码对照表),任一形态的代码都能查到其余形态;访问代码与字段用
|
||||
`dictionary_lookup.py --query 期货品种` 取回。按品种取全部合约要先把品种代码换成
|
||||
品种名称再走 `getBkAll`。
|
||||
|
||||
## 期权
|
||||
|
||||
```tsl
|
||||
return getbk("上市期权"); // 当前在市合约
|
||||
return getbk("ETF期权"); // 按标的类型
|
||||
return getbk("华泰柏瑞沪深300ETF期权"); // 按标的名称
|
||||
```
|
||||
|
||||
## 其它代码位
|
||||
|
||||
`HG000001` 也用作宏观数据表格的取数代码位(如国内生产总值 816 表、居民消费价格
|
||||
822 表)。其余特别数据(国债收益率曲线等)按字典页确认。
|
||||
|
||||
## 事实边界
|
||||
|
||||
本页只给取数路径与代码位体系。函数签名、参数类型、返回形态一律以
|
||||
`lookup.py --name` 的条目正文为准。板块名清单、分类代码清单会随上游调整,不在本页
|
||||
硬编码,用运行时取回。
|
||||
|
||||
FAQ 中出现但当前 API 索引查不到的名称(`GetETFListByDate`、`GetFuturesID`)不作为
|
||||
可用 API;需要时先用 `lookup.py --kw` 确认存在再使用,查不到就按 SKILL.md 的
|
||||
CHECKPOINT 停止。上表中 `getbk` 系列、`getAbkbyDate`、`getBkByDate`、`getBkAll`、
|
||||
`getFuturesBkbydate`、`fundOperateFundsbyBkname`、`fundsOperateFunds`、
|
||||
`bondConvertibleBonds2`、`cb_getTradeMarkByDate` 均已在索引中核对存在。
|
||||
Reference in New Issue
Block a user