Files
playbook/skills/tsl-api-reference/workflows/code-sequences.md
T

8.8 KiB
Raw Blame History

证券代码序列取数

「先拿到一批证券代码,再逐个取指标」是天软里最常见的起手动作。代码序列有三条互不 等价的取数路径,选错路径会静默拿到错误的样本集:

路径 函数 时点语义 入参
板块最新成分 getbk 最新,不带日期 板块中文名
板块历史成分 getAbkbyDate 指定日 板块中文名(仅限部分板块)
指数/分类历史成分 getBkByDate 指定日 指数代码或分类属性代码

getbk 没有日期入参,拿到的永远是当前成分;做历史回测时用它会引入前视偏差。 签名与各自的适用范围用 lookup.py --name getbk / --name getAbkbyDate / --name getBkByDate 取回。

本页是手写整理页,不由字典生成器产出。

板块名是复合的

多个板块名用英文分号拼接,一次传入:

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) 按板块中文名取指定日成分,并剔除暂停上市:

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 创业板
return getbkbydate("TSI000001", 20230810T);   // A股板块 20230810 成分

指数成分必须用指数代码

指数成分来源于指数成份变更表(infotable 752 指数.指数成份),与板块来源不同, 只能用指数代码取:

return getbkbydate("SH000300", 20210908T);   // 沪深300 指定日成分

板块名传给 getBkByDate 不会报错,只会返回空表。字段清单用 dictionary_lookup.py --query 指数成份 取回。

行业分类与行业指数是两套代码

getbkbydate("SWHY740000", ...) 取的是行业分类成分(来源:个股所属行业), getbkbydate("SW801150", ...) 取的是行业指数成分(来源:指数成份表)。两者 样本可能不同。先用 SWHY00000N 拿到该级全部行业指数代码,再逐个取成分:

idx := getbkbydate("SWHY000001", 20190201T);   // 所有申万一级行业指数代码
return getbkbydate(idx[0], 20190201T);          // 其中一个的成分股

分类属性代码体系见 classification-codes.md

沪深港通

沪深港通合资格名单也记在 infotable 752,用四个方向虚拟代码取:

代码 方向 代码 方向
HG000001 港股通(沪) HG000003 港股通(深)
HG000002 沪股通 HG000004 深股通
// 指定日北向(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;

基金:在市与运作状态是两回事

板块决定「是否上市」,运作状态要另外筛:

return getbk("上市基金");                                    // 当前在市
return getbk("已退市基金");                                  // 已退市
return getbkall("普通股票型");                               // 某分类全部,含已停止运作
return fundOperateFundsbyBkname("上市基金;已退市基金", 20200924T);  // 指定日仍在运作
return fundsOperateFunds(getbkall("股票型"), 20200101T);      // 对给定列表筛运作中

getBkAll 返回板块全部样本含退市,但对一批板块不适用(A股类、指数成份类、概念板块 等),限制清单见 lookup.py --name getBkAll 的条目正文。

按基金分类取指定日成分优先走分类属性代码:

return getbkbydate("TSJJ0201", 20220101T);   // 投资风格:股票型

一级市场代码与二级市场(交易)代码不同:getbk("上证基金;深证基金") 取的是交易代码, 两者可通过基金基本信息表里的交易代码字段互转。

债券

return getbk("深交所债券;上交所债券;银行间债券");   // 当前在市全部债券
return getbk("可转债");                            // 当前在市可转债
return getbk("可转债;退市可转债");                 // 含退市
return getbkall("可转债");                         // 同上,走 getBkAll
return bondConvertibleBonds2();                    // 专用函数:所有可转债
return cb_getTradeMarkByDate(20210813T);           // 指定日有交易的转债

券种板块名(国债企业债 等)走同一套 getbk 路径。两个专用函数的签名见 lookup.py --name bondConvertibleBonds2 / --name cb_getTradeMarkByDate

期货

期货有「合约」和「品种」两层,代码序列要分清取哪一层:

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

期权

return getbk("上市期权");                     // 当前在市合约
return getbk("ETF期权");                      // 按标的类型
return getbk("华泰柏瑞沪深300ETF期权");        // 按标的名称

其它代码位

HG000001 也用作宏观数据表格的取数代码位(如国内生产总值 816 表、居民消费价格 822 表)。其余特别数据(国债收益率曲线等)按字典页确认。

事实边界

本页只给取数路径与代码位体系。函数签名、参数类型、返回形态一律以 lookup.py --name 的条目正文为准。板块名清单、分类代码清单会随上游调整,不在本页 硬编码,用运行时取回。

FAQ 中出现但当前 API 索引查不到的名称(GetETFListByDateGetFuturesID)不作为 可用 API;需要时先用 lookup.py --kw 确认存在再使用,查不到就按 SKILL.md 的 CHECKPOINT 停止。上表中 getbk 系列、getAbkbyDategetBkByDategetBkAllgetFuturesBkbydatefundOperateFundsbyBknamefundsOperateFundsbondConvertibleBonds2cb_getTradeMarkByDate 均已在索引中核对存在。