Vibe-Trading 的 Tushare 技能实战:转融券交易汇总(slb_sec)接口深度解析
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
本文以 Vibe-Trading 仓库中 Tushare 技能的数据接口参考文档 转融券交易汇总(停).md.md) 为核心,系统讲解转融通体系中「转融券交易汇总」接口slb_sec的字段含义、调用方式、积分与限量约束,并对照同族接口与仓库源码给出可落地的数据拉取与因子化使用方案。读完本文,你将掌握如何通过 Tushare Pro 获取全市场转融券余量、融出数量与期末余额数据,理解其与融资融券(两融)、转融资、做市借券等接口的差异,并能将其接入 Vibe-Trading 的量化研究链路。
一、业务背景:什么是转融券与转融通
在 A 股两融业务中,「转融通」是证券金融公司(证金公司)向证券公司出借资金或证券、证券公司再转借给客户的业务机制,分为两条主线:
- 转融资:证金公司向证券公司出借资金,证券公司再向客户提供融资服务,对应接口
slb_len(转融资交易汇总); - 转融券:证金公司向证券公司出借证券(股票),证券公司再将其融券出借给客户,是融券做空端券源的核心来源,对应接口
slb_sec(转融券交易汇总)与slb_sec_detail(转融券交易明细)。
slb_sec汇总的是「转融券」这一上游环节的每日交易全貌:每天有多少券被证金公司融出给券商(lent_qnt)、各标的上剩余多少可出借余量(ope_inv/cls_inv)、按市值计算的期末余额(end_bal)。它比普通两融的margin/margin_detail更靠上游——后者统计的是券商与客户之间的融资融券成交,而slb_sec统计的是证金公司与券商之间的券源批发环节。对于研究融券做空压力、券源紧张程度与转融券费率变化的量化策略而言,这份数据是两融视角的必要补充。
二、接口概览:基本信息与访问限制
slb_sec接口的基础信息如下(来自 转融券交易汇总(停).md.md)):
| 项目 | 说明 |
|---|---|
| 接口名 | slb_sec |
| 功能描述 | 转融通转融券交易汇总 |
| 单次限量 | 单次最大可提取5000 行数据,可循环获取所有历史 |
| 积分要求 | 2000 积分:每分钟请求 200 次;5000 积分:每分钟请求 500 次 |
从仓库的接口索引看,该接口在 Tushare 技能文档中登记为 ID 332,归类为「股票数据 / 两融及转融通」(见 SKILL.md)。值得注意的是,接口标题带「(停)」标记,说明该接口在 Tushare 侧已处于停止更新/停用状态,仓库内数据样例截止到 20240620,研究历史数据时可用,但增量获取请以 Tushare 官方在线文档的最新状态为准。这一点在第八节还会展开说明。
三、输入参数详解
slb_sec的四个输入参数全部可选(必选均为 N),可以按交易日、按股票或按日期区间三种方式灵活查询:
| 名称 | 类型 | 必选 | 描述 |
|---|---|---|---|
trade_date | str | N | 交易日期(YYYYMMDD 格式,下同) |
ts_code | str | N | 股票代码(如000001.SZ、688981.SH) |
start_date | str | N | 开始日期 |
end_date | str | N | 结束日期 |
组合查询建议:
- 单日全市场截面:只传
trade_date,一次拿回当日全部标的的转融券汇总,如pro.slb_sec(trade_date='20240620'); - 单只股票历史序列:只传
ts_code与start_date/end_date,观察某只标的券源余量的时间演变; - 日期区间批量:传
start_date+end_date,配合 5000 行/次的限量,通过分页循环即可覆盖全部历史。
日期统一使用YYYYMMDD紧凑格式(如20240620),这是整个 Tushare 技能文档约定的通用参数格式(见 SKILL.md 的「参数格式说明」)。股票代码使用带交易所后缀的ts_code格式(000001.SZ表示深市,600000.SH表示沪市,688798.SH表示科创板)。
四、输出参数详解
接口返回 5 个字段,全部默认显示:
| 名称 | 类型 | 默认显示 | 描述 |
|---|---|---|---|
trade_date | str | Y | 交易日期(YYYYMMDD) |
ts_code | str | Y | 股票代码 |
name | str | Y | 股票名称 |
ope_inv | float | Y | 期初余量(万股) |
lent_qnt | float | Y | 转融券融出数量(万股) |
cls_inv | float | Y | 期末余量(万股) |
end_bal | float | Y | 期末余额(万元) |
字段的量化含义需要特别留意单位:
ope_inv(期初余量):交易日开始时,该标的上可转融券出借的余量,单位万股;lent_qnt(转融券融出数量):当日实际向券商融出的数量,单位万股;当日无融出时返回None(详见下方数据示例中的000006.SZ、000008.SZ等行);cls_inv(期末余量):交易日结束时剩余可出借余量,单位万股,一般满足cls_inv ≈ ope_inv − lent_qnt + 当日归还;end_bal(期末余额):期末余量按收盘价折算的市值规模,单位万元。
由于三个数量字段均以「万股」为单位、余额字段以「万元」为单位,做金额或数量合并统计时必须先做单位换算,避免量纲错误——这与仓库中agent/src/tools/tushare_fallbacks.py对 Tushare 资金流字段(万元)统一换算为元的处理思路一致。
五、快速上手:从官方示例到可复用代码
文档给出的最小调用示例为:
pro = ts.pro_api() df = pro.slb_sec(trade_date='20240620')在 Vibe-Trading 中接入该接口时,建议参照仓库 Tushare 技能的初始化规范(见 SKILL.md 与 stock_data_example.py),使用环境变量或本地 token 初始化:
# 配置 token(Tushare 官网注册后获取) export TUSHARE_TOKEN=your_tokenimport os import tushare as ts # 读取环境变量中的 token,或读取本地记录的 token token = os.getenv('TUSHARE_TOKEN') or ts.get_token() # 初始化 pro 接口实例 pro = ts.pro_api(token) # 方式一:按单日拉取全市场转融券交易汇总 df = pro.slb_sec(trade_date='20240620') # 方式二:按股票 + 日期区间拉取单标的序列 df_stock = pro.slb_sec( ts_code='688981.SH', start_date='20240601', end_date='20240620', ) # 方式三:循环拉取完整历史(接口单次限量 5000 行) all_parts = [] start, end = '20240101', '20240630' batch_start = start while batch_start <= end: part = pro.slb_sec(start_date=batch_start, end_date=end) if part is None or part.empty: break all_parts.append(part) # 以接口返回的最大日期为游标推进(或直接按 5000 行步进日期窗口) batch_start = part['trade_date'].max() if len(part) < 5000: break df_all = pd.concat(all_parts, ignore_index=True).drop_duplicates()代码要点:
ts.pro_api(token)与pro.query('slb_sec', ...)两种调用等价,文档及仓库示例多用属性式调用;- 单次 5000 行限量要求全量历史必须游标式循环:优先按
trade_date最大值推进,必要时辅以更细的日期窗口防止遗漏; - 返回为 pandas DataFrame,后续可直接做筛选、透视与因子计算。
六、数据示例解读
文档给出的 20240620 样例(截取)如下:
trade_date ts_code name ope_inv lent_qnt cls_inv end_bal 0 20240620 000001.SZ 平安银行 186.97 1.43 188.40 2004.70 1 20240620 000002.SZ 万科A 3456.26 3.18 3376.80 24346.73 2 20240620 000006.SZ 深振业A 17.08 None 17.08 64.56 3 20240620 000008.SZ 神州高铁 17.07 None 17.07 33.97 4 20240620 000009.SZ 中国宝安 315.61 0.66 310.56 2822.99 ... ... ... ... ... ... ... ... 2253 20240620 689009.SH 九号公司 259.35 5.72 253.62 10583.56可以从样例中读出三层信息:
None语义:000006.SZ 深振业A与000008.SZ 神州高铁当日lent_qnt为None,代表当日无券源融出(无成交),并非数据缺失。做统计时需将None按 0 处理或显式过滤;- 量级参考:
000001.SZ 平安银行期末余量 188.40 万股、期末余额约 2004.70 万元;000002.SZ 万科A期末余量 3376.80 万股、余额约 2.43 亿元,可见转融券集中在流动性好、可出借券源充足的大盘蓝筹; - 口径差异:同日样例中不同标的的
cls_inv与ope_inv变化方向不同(如平安银行期末略增、万科A略减),说明转融券余量受当日融出、归还双向影响,适合用lent_qnt / ope_inv构造「出借活跃度」类指标。
七、同族接口对照:两融与转融通全家桶
slb_sec并非孤立接口。在仓库 两融及转融通 目录下,Vibe-Trading 的 Tushare 技能还收录了 6 个同族接口,形成完整的券源与杠杆数据体系:
| 接口名 | 文档 | 数据内容 | 主要输出维度 |
|---|---|---|---|
margin | 融资融券交易汇总.md | 沪深两市每日融资融券汇总 | 融资余额、融券余额、融资买入额、两融余额(按交易所) |
margin_detail | 融资融券交易明细.md | 沪深两市每日融资融券明细 | 个股融资/融券余额、买入/偿还、卖出/偿还量 |
slb_len | 转融资交易汇总.md | 转融通融资汇总 | 期初/期末余额(亿元)、竞价/再借成交、偿还金额 |
slb_sec | 转融券交易汇总(停).md.md) | 转融通转融券交易汇总 | 期初/期末余量(万股)、融出数量、期末余额(万元) |
slb_sec_detail | 转融券交易明细(停).md.md) | 转融券交易明细 | 期限、融出费率(%)、融出数量(按笔) |
slb_len_mm | 做市借券交易汇总(停).md.md) | 做市借券交易汇总 | 期初/期末余量、融出数量、期末余额(面向做市商) |
三条使用线索:
- 层级关系:
margin/margin_detail反映券商—客户环节,slb_sec/slb_len反映证金—券商环节,slb_len_mm反映做市商专用借券环节。做券源压力研究时建议交叉验证margin_detail(客户融券成交)与slb_sec(上游出借); - 明细补齐汇总:
slb_sec_detail按「期限 + 融出费率」展开每一笔转融券成交,可配合slb_sec的汇总字段计算加权融出费率(明细文档样例中 20240620 常见期限 14 天、费率 1.40%~7.10%); - 单位差异要警惕:
slb_len的金额单位是亿元,slb_sec的数量单位是万股、余额单位是万元,margin系列金额单位是元。三套口径混用前必须统一。
八、「(停)」标记的含义与注意事项
文档标题中的「(停)」与接口索引中的描述一致:slb_sec、slb_sec_detail、slb_len_mm均标注为停止状态,而slb_len、margin、margin_detail未标注停用(见 SKILL.md 接口列表)。使用该接口时需注意:
- 存量可用,增量存疑:仓库文档内数据样例截至 20240620,说明该时点接口仍有数据返回;此后是否继续入库应以 Tushare 官方在线文档(对应 doc_id=332)与数据工具的实际返回为准;
- 积分前提:文档明确该接口需要 2000 积分起步(200 次/分钟),5000 积分可提升到 500 次/分钟,低积分账号调用会被拒;
- 合规边界:仓库仅将 Tushare 作为数据源技能收录,实际调用仍需用户自行注册 Tushare 账号、购买相应积分并遵守其数据使用条款,本文所述均基于仓库文档事实。
九、在 Vibe-Trading 中的工程接入方式
Vibe-Trading 把 Tushare 封装为标准化数据源技能,slb_sec这类接口遵循统一的接入范式:
- 接口索引注册:所有 Tushare 数据接口在 SKILL.md 中登记 ID、接口名、标题链接、分类与描述,
slb_sec登记为 ID 332,便于 Agent 按需检索与路由; - Token 配置:技能文档建议通过环境变量
TUSHARE_TOKEN配置凭证,仓库示例脚本 stock_data_example.py 展示的标准初始化方式为os.getenv('TUSHARE_TOKEN') or ts.get_token(); - 兜底适配器模式:仓库 tushare_fallbacks.py 展示了 Vibe-Trading 对 Tushare 的工程化封装思路——以公共免费源为主、Tushare 为可选兜底,通过统一的
_pro_api()懒加载、_ts_code()代码规范化、_to_float()空值兜底与_date_window()日期窗口封装,把 Tushare 返回的 DataFrame 归一化为内部信封结构。其中fetch_margin_trading对margin_detail字段(rzye、rzmre、rqye、rqyl、rzrqye)的归一化逻辑,可直接推广到slb_sec的ope_inv/lent_qnt/cls_inv/end_bal字段映射; - 数据消费场景:
slb_sec的截面数据适合做转融券余量排行、券源充足度打分,时序数据适合研究做空券源的增减趋势,可与两融、股东减持、限售解禁等参考数据(见 两融及转融通 同目录与 参考数据)组合成多因子输入。
十、实战建议小结
- 字段口径先行:先确认
ope_inv、lent_qnt、cls_inv的「万股」单位与end_bal的「万元」单位,统计前完成量纲归一; - 空值按业务语义处理:
lent_qnt的None表示当日无融出,做均值、占比类因子时按 0 填充并打标区分「无交易」与「真实为 0」; - 循环拉取注意频率:5000 行/次的限量下,全历史拉取要设计游标循环;同时受积分对应的分钟级请求次数(200/500 次)约束,建议加上限速与重试;
- 结合停用状态决策:若需要的是增量更新的转融券数据,应先核实 Tushare 侧该接口的当前状态;若仅做历史回测,仓库文档中
slb_sec的样例与slb_sec_detail、slb_len的同族数据足够支撑历史区间的券源研究。
通过本文的字段解析、调用示例与仓库源码对照,你可以直接在 Vibe-Trading 的数据链路上复现「拉取转融券汇总 → 归一化字段 → 构造券源因子」的完整流程,为融券压力与做空意愿类研究补齐上游数据视角。
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考