news 2026/9/11 21:35:49

基于 Tushare `margin_secs` 的融资融券标的(盘前)数据接口实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 Tushare `margin_secs` 的融资融券标的(盘前)数据接口实战指南

基于 Tusharemargin_secs的融资融券标的(盘前)数据接口实战指南

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

本指南围绕 Vibe-Trading 仓库中 Tushare 技能库的"融资融券标的(盘前)"接口文档展开, 完整讲解 margin_secs 接口的限量规则、全部输入/输出参数、盘前批量提取方法, 并延伸到与之配套的 margin / margin_detail 接口,最后结合本仓库的技能加载机制说明其实际落地方式。

融资融券标的名单是 A 股两融研究的起点:它决定了"哪些证券可以融资买入、哪些证券可以融券卖出",也是计算个股两融余额覆盖率、构建标的池、规避非标的交易的前提。Tushare 提供的margin_secs接口(融资融券标的,盘前更新)每天开盘前刷新沪深京三大交易所的标的清单(含 ETF),是 Vibe-Trading 仓库中 tushare 技能库(SKILL.md)「股票数据 / 两融及转融通」分类下的核心接口之一(接口 ID 326)。本文将基于仓库内该接口的完整文档(融资融券标的(盘前).md.md)),逐项拆解其参数、用法与实战扩展。

一、接口速览

margin_secs接口的定位与基本约束如下表所示(内容直接取自原文档):

项目说明
接口名margin_secs
描述获取沪深京三大交易所融资融券标的(包括 ETF),每天盘前更新
限量单次最大 6000 行数据,可根据股票代码、交易日期、交易所代码循环提取
权限2000 积分可调取,5000 积分无总量限制,积分越高权限越大

三点需要特别留意:

  • 覆盖交易所:上交所(SSE)、深交所(SZSE)、北交所(BSE)三大市场全部覆盖,且标的类型不仅包括股票,还包括 ETF;
  • 更新时点:数据在每个交易日的盘前更新,即"今日名单"在开盘前即可取到,适合做盘前标的池过滤与盯盘清单生成;
  • 积分门槛:2000 积分起即可调用,5000 积分解锁无限量提取,因此若需要全市场全历史标的名单,需要 5000 积分权限并按交易所/日期分页循环拉取。

二、环境准备:Token 初始化与 Pro 接口

在调用margin_secs之前,需要先完成 Tushare 环境初始化。仓库的 tushare 技能文档(SKILL.md)给出了标准流程:

  1. 安装 Python 3.7+ 环境并安装 tushare 依赖包:
pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. 在 Tushare 官网注册获取 token,并配置环境变量:
export TUSHARE_TOKEN=your_token
  1. 初始化 Pro 接口实例:
import tushare as ts pro = ts.pro_api()

仓库的示例脚本 stock_data_example.py 展示了更稳健的 token 读取方式——优先从 Vibe-Trading 的配置系统中读取tushare_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)

对应的配置字段定义在 env_schema.py(tushare_token: str = Field(alias="TUSHARE_TOKEN", default="")),即通过环境变量TUSHARE_TOKEN注入即可被 Vibe-Trading 的配置系统自动识别。这与文档约定的返回格式(pandas DataFrame)一脉相承:所有接口返回DataFrame,日期参数统一使用YYYYMMDD格式,股票代码统一使用ts_code格式(如000001.SZ600000.SH)。

三、输入参数详解

margin_secs共支持 5 个输入参数,全部为可选(必选均为 N),通过组合不同参数可以灵活裁剪查询范围:

名称类型必选描述
ts_codestrN标的代码
trade_datestrN交易日
exchangestrN交易所(SSE 上交所 / SZSE 深交所 / BSE 北交所)
start_datestrN开始日期
end_datestrN结束日期

参数组合的核心逻辑:

  • 按交易日全量提取trade_date='20240417'即可拿到当天沪深京全部两融标的;
  • 按交易所过滤:与exchange='SSE'组合可只取上交所名单,适合按市场分别建池、分片拉取;
  • 按代码定向查询ts_code='510050.SH'可查询单只证券是否入选两融标的及其入选日期;
  • 按区间回溯start_date/end_date组合可查询一段历史区间内的标的变动,用于研究"标的扩容/缩容"事件。

四、输出参数详解

每次调用返回 4 个字段,均为默认显示:

名称类型默认显示描述
trade_datestrY交易日期
ts_codestrY标的代码
namestrY标的名称
exchangestrY交易所

该输出结构非常精简,只描述"谁在什么时间、属于哪个交易所的标的名单",不含余额、买入额等交易指标。交易指标需要由同分类下的 margin(融资融券交易汇总) 和 margin_detail(融资融券交易明细) 两个接口提供(详见第六节)。

五、接口用法与实战示例

5.1 基础调用

原文档给出的最小可运行示例:

pro = ts.pro_api() # 获取2024年4月17日上交所融资融券标的 df = pro.margin_secs(trade_date='20240417', exchange='SSE')

得到的DataFrame数据样例(节选,完整 1786 行)如下:

trade_date ts_code name exchange 0 20240417 510050.SH 50ETF SSE 1 20240417 510100.SH SZ50ETF SSE 2 20240417 510150.SH 消费ETF SSE 3 20240417 510180.SH 180ETF SSE 4 20240417 510210.SH 综指ETF SSE ... ... ... ... ... 1781 20240417 688799.SH 华纳药厂 SSE 1782 20240417 688800.SH 瑞可达 SSE 1783 20240417 688819.SH 天能股份 SSE 1784 20240417 688981.SH 中芯国际 SSE 1785 20240417 689009.SH 九号公司 SSE

从样例可以看到:上交所标的名单从510050.SH(50ETF)等 ETF 开始,到科创板个股(688xxx.SH)结束,同时覆盖 ETF 与股票两类标的。

5.2 单次 6000 行限量下的循环提取

限量规则明确指出"单次最大 6000 行数据,可根据股票代码、交易日期、交易所代码循环提取"。全市场单日两融标的规模(沪深京股票 + ETF)通常超过 6000 行,因此一次调用拿不全,需要按交易所分片循环:

import time import tushare as ts pro = ts.pro_api() def fetch_margin_secs(trade_date): """按交易所分片拉取某交易日全市场两融标的,规避单次6000行限量""" frames = [] for exchange in ('SSE', 'SZSE', 'BSE'): df = pro.margin_secs(trade_date=trade_date, exchange=exchange) frames.append(df) time.sleep(0.2) # 适度限速,避免触发频率限制 return pd.concat(frames, ignore_index=True) # 示例:拉取 2024年4月17日 全市场标的名单 all_secs = fetch_margin_secs('20240417') print(all_secs['exchange'].value_counts())

按日期循环则用于回溯历史名单,通常与交易日历接口(trade_cal)配合确定有效交易日序列,再逐日调用并做增量合并,即可得到完整的标的池变更历史。

5.3 标的入选状态查询与标的池构建

对单只证券,可用ts_code精确查询其入选记录,判断其是否在两融标的内、何时入选:

# 查询某只个股的两融标的入选记录 df = pro.margin_secs(ts_code='688981.SH', start_date='20240101', end_date='20241231')

更常见的实战场景是构建盘前两融标的池:每日盘前拉取当日名单,与自有股票池做交集过滤,确保策略只在可融资融券的标的上执行,或用于统计标的池覆盖率:

# 过滤出非 ETF 的股票标的,并统计各交易所数量 stocks = all_secs[~all_secs['ts_code'].str.endswith(('.SH', '.SZ')) is False] stocks = all_secs[all_secs['name'].str.contains('ETF') == False] print(stocks.groupby('exchange').size())

说明:上述代码基于文档输出结构(ts_code/name/exchange三列)所做的常规过滤,实际生产中建议结合stock_basic(股票列表)接口交叉核对标的类型。

六、与两融交易数据的配套使用

margin_secs只解决"哪些证券是标的"的问题,不解决"标的余额/交易多少"的问题。完整的融资融券研究链路需要与同分类下的另外两个接口联动:

接口文档作用输出核心字段
margin(融资融券交易汇总)融资融券交易汇总.md沪深京各交易所每日两融总量rzye融资余额、rqye融券余额、rzrqye两融余额、rzmre融资买入额、rqmcl融券卖出量等
margin_detail(融资融券交易明细)融资融券交易明细.md逐只证券的每日两融明细rzyerqyerzmrerqyl融券余量、rzcherqchlrqmclrzrqye

典型的三接口联动模式:

  1. 盘前用margin_secs获取当日标的池;
  2. 盘中/盘后用margin_detail获取个股两融余额,计算标的池内的两融覆盖率rzrqye / 流通市值等指标);
  3. margin获取全市场两融总量,观察杠杆资金整体变化方向。

需要注意的是两个配套接口同样有各自的限量:margin单次最大 4000 行、margin_detail单次最大 6000 行,均需按日期循环拉取全量。此外,margin_detail文档还给出了余额口径的官方定义(由证券公司报送数据汇总):

  • 本日融资余额(元) = 前日融资余额 + 本日融资买入 - 本日融资偿还额
  • 本日融券余量(股) = 前日融券余量 + 本日融券卖出量 - 本日融券买入量 - 本日现券偿还量
  • 本日融券余额(元) = 本日融券余量 × 本日收盘价
  • 本日融资融券余额(元) = 本日融资余额 + 本日融券余额

同时注意单位约定:股(标的证券为股票)、份(标的证券为基金)、手(标的证券为债券);自 2014 年 9 月 22 日起,"融资融券交易总量"数据包含调出标的证券名单的证券的两融余额。理解这些口径,才能在分析标的池变动时正确解释"标的已调出但余额仍存在"的现象。

七、在 Vibe-Trading Agent 中的使用机制

margin_secs接口文档位于 tushare 技能的 references 目录下,由 Vibe-Trading 的技能加载体系(skills.py)统一管理:

  • 渐进式披露:系统提示词中只注入技能的一行摘要,完整文档按需加载(load_skill工具触发),避免上下文被长文档撑爆;
  • 按目录分节读取:加载时按标题结构将文档切成多个 section,逐节返回,便于 Agent 精准定位到"输入参数""输出参数""接口用法"等具体章节,而不必一次性读完整篇;
  • 支持文件按需读取Skill.load_support_file()允许按文件名读取技能目录下的支撑文件(如references/...下的接口文档),margin_secs文档正是通过这一机制被按需加载的。

从接口索引看,margin_secs在 SKILL.md 中登记为 ID 326、分类"股票数据, 两融及转融通",与该分类下的margin(ID 58)、margin_detail(ID 59)、slb_len转融资交易汇总(ID 331)、slb_sec转融券交易汇总(ID 332)等接口并列。Agent 在回答两融相关问题、生成盘前交易清单或构建杠杆资金分析时,可通过该技能索引快速定位到本文档,再按上面的参数表组装调用。

八、注意事项与最佳实践

  1. 限量是循环的动力:单次 6000 行上限意味着任何"全市场、全历史"诉求都必须按交易所 + 日期双维度分页;建议将循环逻辑封装为通用函数,并对每次调用做轻量限速(如time.sleep)。
  2. 盘前更新语义:数据为每日盘前更新,当日名单在开盘前即可获取,但请以交易所实际披露为准;若需与当日行情对齐,注意trade_date使用YYYYMMDD且必须为交易日。
  3. 标的名单会变动:标的池并非静态,个股可能因规则调整被调入/调出,用start_date/end_date回溯时应对齐交易日历(可配合trade_cal交易日历接口)。
  4. 积分与权限:2000 积分可调取但受总量限制,5000 积分解锁无总量限制;计划长期全量拉取的用户需要将积分提升到 5000 档。
  5. 数据口径区分:标的名单(margin_secs)与交易汇总/明细(margin/margin_detail)是三个独立接口,字段语义、限量规则、更新时点各不相同,使用时不要混淆。

九、总结

margin_secs是构建 A 股融资融券研究体系的第一块拼图:它用 4 个输出字段、5 个可选输入参数,以每天盘前更新的节奏,提供了沪深京三大交易所(含 ETF)的两融标的名单。配合单次 6000 行的限量规则、按交易所/日期/代码的循环提取模式,以及与marginmargin_detail的联动使用,即可搭建起从"标的池"到"余额明细"再到"市场总量"的完整两融数据链路。本文所依据的接口文档位于 融资融券标的(盘前).md.md),接口索引与积分说明可进一步参考 SKILL.md。

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 21:34:37

K8s中部署vLLM推理服务:GPU利用率与吞吐优化实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 21:34:26

OpenClaw本地部署实战:大模型接入与Skill配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华