Vibe-Trading 实战指南:用 Tushareslb_len接口构建转融资交易汇总数据管线
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
本篇技术指南以 Vibe-Trading 仓库内置的 Tushare 技能文档 转融资交易汇总 为核心,系统讲解转融通融资汇总接口slb_len的调用方式、参数语义、字段字典与数据勾稽关系。读完本文,你将掌握如何在 Vibe-Trading 的 Agent 技能体系中接入该数据源,并能独立编写"循环拉取全历史 + 本地落盘"的完整数据获取脚本,为两融资金面的量化研究提供日频基础数据。
一、接口定位:两融及转融通数据家族中的"转融资汇总"
在 Vibe-Trading 的 Tushare 技能目录中,slb_len被归类在"股票数据 > 两融及转融通"分类下。查阅技能索引 SKILL.md 可以看到,该接口的注册信息为:
| 字段 | 内容 |
|---|---|
| 接口 ID | 331 |
| 接口名 | slb_len |
| 标题 | 转融资交易汇总 |
| 分类 | 股票数据, 两融及转融通 |
| 描述 | 转融通融资汇总 |
从接口字段与数据示例的结构看,slb_len反映的是证券金融公司向证券公司转融通融出资金的全市场汇总口径:ob(期初余额)与cb(期末余额)刻画资金池规模,repo_amount(再借成交金额)与repay_amount(偿还金额)刻画资金进出节奏。它不包含个股维度,每个交易日仅返回一行汇总记录,适合作为宏观资金面观察指标。
在"两融及转融通"目录下,slb_len与四个兄弟接口共同构成完整的数据家族,它们在维度与口径上互补:
- 融资融券交易汇总(
margin):券商向投资者融资融券的每日交易汇总,按交易所维度(SSE/SZSE/BSE)输出; - 融资融券交易明细(
margin_detail):沪深两市每日融资融券明细,个股维度; - 转融券交易汇总(停).md)(
slb_sec):转融通转融券交易汇总,个股维度(现已标注停止); - 做市借券交易汇总(停).md)(
slb_len_mm):做市借券交易汇总(现已标注停止)。
对比可见,slb_len是"两融及转融通"家族中目前仍在维护、且口径为全市场汇总的转融资数据接口,这一点从目录命名(转融券与做市借券文件名均带"(停)"后缀,转融资未标注)可以得到印证。
二、调用前置条件:环境、Token 与积分权限
1. 安装与 Token 配置
依据 SKILL.md 的快速上手说明,首先安装 Python 运行环境(推荐 Python 3.7+)与tushare依赖包:
pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple随后在 Tushare 官网注册账号获取 token,并配置环境变量:
export TUSHARE_TOKEN=your_token在 Vibe-Trading 项目中,仓库提供的股票数据示例脚本 stock_data_example.py 展示了更工程化的 token 读取方式——优先从项目环境配置读取,失败时回退到ts.get_token():
import tushare as ts from src.config.accessor import get_env_config token = get_env_config().data.tushare_token or ts.get_token() pro = ts.pro_api(token)这说明在 Vibe-Trading 中,Tushare token 已纳入项目的统一环境配置体系(tushare_token配置项),Agent 调用数据接口时无需在代码中硬编码密钥。
2. 积分与频率限制
根据关联文档,slb_len接口的权限门槛如下:
- 限量:单次最大可提取 5000 行数据,可循环获取所有历史;
- 积分:2000 积分每分钟可请求 200 次,5000 积分每分钟可请求 500 次。
由于slb_len每日仅产生一行汇总数据,5000 行的单次上限可覆盖约 20 年的全部历史记录,一般场景下单次调用即可取全;若需高频率轮询,请按积分档位控制请求节奏,避免触发限频。
三、输入参数详解
slb_len共支持 3 个输入参数,均为可选(必选列均为 N),格式约定为YYYYMMDD:
| 名称 | 类型 | 必选 | 描述 |
|---|---|---|---|
trade_date | str | N | 交易日期(YYYYMMDD 格式,下同) |
start_date | str | N | 开始日期 |
end_date | str | N | 结束日期 |
参数组合逻辑:
- 按单日查询:仅传
trade_date,返回指定交易日的数据(推荐用于盘后增量更新); - 按区间查询:同时传
start_date与end_date,返回区间内全部交易日数据(推荐用于历史回补); - 不传参数:可返回近期默认数据,用于快速了解数据结构。
需要注意,交易日与自然日并不完全重合。若传入区间内包含节假日或周末,接口不会返回对应日期的记录(参考数据示例中 20240614 之后直接跳到 20240617,中间 6 月 15 日、16 日为周末,无数据行)。
四、输出参数详解与数据字典
slb_len返回 6 个字段,全部默认显示:
| 名称 | 类型 | 默认显示 | 描述 |
|---|---|---|---|
trade_date | str | Y | 交易日期 |
ob | float | Y | 期初余额(亿元) |
auc_amount | float | Y | 竞价成交金额(亿元) |
repo_amount | float | Y | 再借成交金额(亿元) |
repay_amount | float | Y | 偿还金额(亿元) |
cb | float | Y | 期末余额(亿元) |
字段业务含义与使用要点:
ob(Opening Balance,期初余额):当日开盘前的转融资资金存量,单位亿元;auc_amount(Auction Amount,竞价成交金额):通过竞价方式撮合的转融资成交金额。从数据示例看,该字段在多数交易日为None,仅个别日期有值(如 20240604 为 50.00),可以推断竞价成交并非转融资的常规路径,仅在特定情形下发生,因此处理该列时需做好空值兼容;repo_amount(Repurchase Amount,再借成交金额):当日再借(展期/续借)成交金额,是转融资资金滚动续作的主要通道;repay_amount(Repay Amount,偿还金额):当日偿还的转融资资金;cb(Closing Balance,期末余额):当日收盘后的转融资资金存量,单位亿元。
在 Vibe-Trading 中调用时,返回对象为 pandas DataFrame(SKILL.md 明确"返回格式:pandas DataFrame"),可直接基于trade_date建立时间索引进行时序分析。
五、接口示例与完整可运行代码
1. 原文档示例
关联文档给出的最小调用示例如下:
pro = ts.pro_api() df = pro.slb_len(start_date='20240601', end_date='20240620')2. 工程化完整示例
结合 SKILL.md 的初始化约定与 stock_data_example.py 的 token 读取方式,可将其扩展为可复制的完整脚本:
import os import tushare as ts # 方式一:环境变量 token = os.getenv('TUSHARE_TOKEN') or ts.get_token() # 方式二:Vibe-Trading 项目统一配置(仓库示例脚本采用) # from src.config.accessor import get_env_config # token = get_env_config().data.tushare_token or ts.get_token() pro = ts.pro_api(token) # 按日期区间查询转融资交易汇总 df = pro.slb_len(start_date='20240601', end_date='20240620') print(df)slb_len同样支持 Tushare 的通用查询语法(与margin接口的用法一致,参见 融资融券交易汇总):
df = pro.query('slb_len', start_date='20240601', end_date='20240620')3. 循环拉取全部历史的实战模板
由于单次最多提取 5000 行,而slb_len每日仅一行,实际上一次请求即可覆盖全部历史;但如果希望按年分片、稳健回补并落盘,可以按如下模式组织:
import pandas as pd def fetch_slb_len_all(pro, start='20100101', end='20241231', chunks=('0101', '1231')): frames = [] for year in range(int(start[:4]), int(end[:4]) + 1): s = f"{year}{chunks[0]}" e = f"{year}{chunks[1]}" part = pro.slb_len(start_date=s, end_date=e) if part is not None and not part.empty: frames.append(part) # 按积分档位控制频率,例如 time.sleep(0.3) df = pd.concat(frames, ignore_index=True) if frames else pd.DataFrame() df = df.sort_values('trade_date').drop_duplicates('trade_date') df.to_csv('slb_len_history.csv', index=False) return df分年片请求既能规避单次 5000 行的行数上限风险,也便于断点续传与增量更新。
六、数据示例解读:从一行记录读懂转融资业务
关联文档给出的数据示例(2024 年 6 月部分交易日)如下:
trade_date ob auc_amount repo_amount repay_amount cb 0 20240620 1435.50 None 3.10 3.10 1435.50 1 20240619 1435.50 None 2.70 2.70 1435.50 2 20240618 1440.20 None 29.50 34.20 1435.50 3 20240617 1442.20 None 3.00 5.00 1440.20 4 20240614 1442.20 None None None 1442.20 5 20240613 1445.20 None 2.90 5.90 1442.20 6 20240612 1445.20 None 3.30 3.30 1445.20 7 20240611 1454.20 None 2.70 11.70 1445.20 8 20240607 1454.20 None None None 1454.20 9 20240606 1454.20 None 26.00 26.00 1454.20 10 20240605 1455.60 None 6.00 7.40 1454.20 11 20240604 1406.00 50.00 6.40 6.80 1455.60 12 20240603 1406.00 None 1.00 1.00 1406.00从这组真实数据中可以验证三个关键规律:
(1)期初余额承接上一交易日期末余额。例如 20240620 的ob(1435.50)恰好等于 20240619 的cb(1435.50);20240619 的ob又等于 20240618 的cb。这印证了ob/cb的存量承接关系,可用于数据完整性校验。
(2)期末余额大体满足"期初 + 再借成交 − 偿还"的勾稽关系。例如 20240618:1440.20 + 29.50 − 34.20 = 1435.50,与cb完全一致;20240617:1442.20 + 3.00 − 5.00 = 1440.20,同样吻合。多数交易日该恒等式成立,但在个别交易日(如 20240604)存在竞价成交等额外因素扰动,因此不能机械地仅用三列求和,建议以接口原始数据为准。
(3)auc_amount空值常态化。12 行示例中仅 1 行有值,其余均为None。在做均值、占比等统计前,必须先以fillna(0)或dropna()明确空值策略。
七、与两融及转融通家族其他接口的对比
| 接口 | 方法名 | 维度 | 关键字段 | 状态 |
|---|---|---|---|---|
| 转融资交易汇总 | slb_len | 全市场汇总(日频 1 行) | ob / auc_amount / repo_amount / repay_amount / cb | 正常 |
| 融资融券交易汇总 | margin | 按交易所汇总(SSE/SZSE/BSE) | rzye / rzmre / rqye / rqmcl / rzrqye | 正常 |
| 融资融券交易明细 | margin_detail | 个股维度 | rzye / rqye / rzmre / rqyl / rzrqye | 正常 |
| 转融券交易汇总 | slb_sec | 个股维度 | ope_inv / lent_qnt / cls_inv / end_bal | 已停 |
| 做市借券交易汇总 | slb_len_mm | 个股维度 | ope_inv / lent_qnt / cls_inv / end_bal | 已停 |
选择建议:若研究券商融资资金总盘子与资金面压力,使用slb_len(全市场口径、字段聚焦资金存量与流转);若需拆分沪深北交易所看投资者两融余额,使用margin;若需定位到具体标的的融资融券敞口,使用margin_detail。注意已标注停止的slb_sec与slb_len_mm仅可回取历史数据,不再产出新记录。
八、在 Vibe-Trading 项目中的接入方式
Vibe-Trading 通过"技能(Skill)"体系向 Agent 暴露外部数据源,Tushare 技能即其中之一。其接入路径如下:
- 技能清单与接口索引:所有 Tushare 数据接口统一登记在 SKILL.md 的"数据接口列表"中,
slb_len(ID 331)以标准表格形式收录,Agent 可通过技能清单发现该接口并定位其详细文档 转融资交易汇总; - 技能注册与调度:从 skills.py 的统计口径看,
tushare是项目内被高频使用的数据供给技能之一(在该文件中记录的技能用量统计中占有显著比例),这意味着两融及转融通数据可以被 Agent 在行情分析、资金面研究中按需调用; - Token 统一配置:仓库示例脚本 stock_data_example.py 展示了从
get_env_config().data.tushare_token读取密钥的规范写法,接口调用统一经由ts.pro_api(token)初始化。
因此,在 Vibe-Trading 中构建转融资数据管线时,推荐流程为:先在 SKILL.md 确认接口清单与参数格式约定,再按本文第五节模板编写拉取脚本,最后将 DataFrame 按trade_date索引持久化,供后续因子计算或策略研究使用。
九、注意事项与使用建议
- 行数与频率限制:单次最大 5000 行、按积分档位限频(2000 积分 200 次/分钟,5000 积分 500 次/分钟)。
slb_len日频仅一行,历史全量通常一次可取完,但建议保留循环分片逻辑以备扩展。 - 空值处理:
auc_amount普遍为None,repo_amount/repay_amount偶发为空,聚合统计前务必统一空值策略。 - 交易日对齐:返回数据仅含交易日,若需与
daily等行情数据按日期对齐,建议先通过 交易日历 接口(trade_cal)获取交易日列表。 - 单位换算:
slb_len全部金额字段单位为亿元,而margin系列接口的金额单位为元(见 融资融券交易汇总),跨接口计算时务必统一量纲。 - 勾稽校验:可用"期初余额承接上一交易日期末余额"这一规律对历史数据做完整性校验,发现跳变时优先核对是否跨节假日或存在竞价成交(
auc_amount非空)。 - 已停接口区分:如需转融券或做市借券数据,注意对应接口(
slb_sec、slb_len_mm)已标注停止,仅适合历史研究,不应接入增量调度。
综上,slb_len是一个调用门槛低、口径清晰、历史完整的日频宏观资金面接口,配合 Vibe-Trading 的 Tushare 技能体系与统一 token 配置,可以快速纳入 Agent 的两融资金面分析管线。
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考