Vibe-Trading 实战:基于 Tushare margin 接口构建融资融券交易汇总数据分析流水线
2026/9/12 2:04:47 网站建设 项目流程

Vibe-Trading 实战:基于 Tushare margin 接口构建融资融券交易汇总数据分析流水线

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

融资融券交易汇总(接口margin)是观察 A 股杠杆资金动向的核心数据源,它按交易所维度汇总每日融资买入、融资偿还、融券卖出与各类余额,直接支撑市场情绪研判、板块轮动追踪与系统性风险监控。本文以 Tushare 官方接口文档 融资融券交易汇总 为骨架,结合 Vibe-Trading 仓库中 Tushare Skill 的实际配置方式、同系列接口与情绪分析应用,完整讲解该接口的参数语义、返回字段、计算口径、权限限制与批量拉取实战,帮助你直接将其接入自己的量化数据流水线。

一、接口概述:定位、数据来源与权限门槛

margin接口用于获取沪深京三市每日融资融券交易汇总数据,即把全市场所有融资融券标的按交易所聚合为每日一行。它与同目录下的明细接口互补:

接口名接口 ID粒度说明
margin58交易所 × 交易日融资融券交易汇总,本文主角
margin_detail59个股 × 交易日融资融券交易明细,见 融资融券交易明细
margin_secs326标的列表融资融券标的(盘前更新),见 融资融券标的(盘前).md)
slb_len331转融资汇总转融通融资汇总,见 转融资交易汇总

完整接口清单(含 ID、分类、描述)记录在 SKILL.md 的数据接口列表中,margin归入「股票数据 / 两融及转融通」分类。

关于该接口需要记住三个硬性约束:

  • 限量:单次请求最大返回4000 行数据,超出部分需要按日期循环分页拉取;
  • 权限2000 积分可获得本接口权限,积分越高权限越大(更高积分通常对应更宽松的调用频次与总量限制);
  • 数据来源:融资融券数据从证券交易所网站直接获取,提供了有记录以来的全部汇总和明细数据。根据交易所网站提示,数据根据券商申报的数据汇总,由券商保证数据的真实、完整、准确。

二、输入参数详解:四种筛选维度

margin接口的全部输入参数均为可选(必选列均为 N),支持按交易日、日期区间与交易所任意组合筛选:

名称类型必选描述
trade_datestrN交易日期(格式:YYYYMMDD,下同)
start_datestrN开始日期
end_datestrN结束日期
exchange_idstrN交易所代码:SSE上交所、SZSE深交所、BSE北交所

使用要点:

  • 单日查询:直接传trade_date,返回当日全部交易所的汇总行(每交易所一行);
  • 区间查询:传start_date/end_date,适合一次拉取多日数据,但要受 4000 行上限约束;
  • 单所筛选:叠加exchange_id可只取特定交易所,例如只看上交所(SSE)的融资融券余额,既缩小返回体积,也是规避 4000 行上限的常用手段;
  • 日期格式务必统一为YYYYMMDD,与 Tushare 全站参数格式约定一致(SKILL.md 中「参数格式说明」明确:日期为 YYYYMMDD,股票代码为 ts_code 格式,返回 pandas DataFrame)。

三、输出参数详解:九个字段的业务含义

接口返回 9 个字段,覆盖融资(rz 前缀)与融券(rq 前缀)两条业务线:

名称类型描述
trade_datestr交易日期
exchange_idstr交易所代码(SSE 上交所 / SZSE 深交所 / BSE 北交所)
rzyefloat融资余额(元)
rzmrefloat融资买入额(元)
rzchefloat融资偿还额(元)
rqyefloat融券余额(元)
rqmclfloat融券卖出量(股/份/手)
rzrqyefloat融资融券余额(元)
rqylfloat融券余量(股/份/手)

理解这组字段的关键在单位与口径

  • 金额类字段rzyerzmrerzcherqyerzrqye)单位均为,从样例数据可见其数值量级为e+11(数千亿元),读作时应除以 1e8 换算为亿元便于展示;
  • 数量类字段rqmclrqyl)单位为股/份/手:标的证券为股票时按股、为基金时按份、为债券时按手(该单位说明同时出现在明细文档 融资融券交易明细 中);
  • rzrqye(融资融券余额)=rzye+rqye,是全市场杠杆资金规模的直接量度。

四、快速上手:Token 配置与两种调用方式

在 Vibe-Trading 仓库中,Tushare 的 Token 通过环境变量TUSHARE_TOKEN配置,其声明位于 env_schema.py(tushare_token: str = Field(alias="TUSHARE_TOKEN", default=""))。配置方式有两种:

# 方式一:命令行环境变量 export TUSHARE_TOKEN=your_token # 方式二:项目配置中心(等价于写入 TUSHARE_TOKEN 环境变量) # 详见 agent/src/api/settings_routes.py 中 token 的保存与注入逻辑

示例脚本 股票数据获取示例 给出了标准的初始化模式——优先读取项目配置中心的 Token,缺失时回退到 tushare 本地记录的 Token:

import os import tushare as ts import pandas as pd from src.config.accessor import get_env_config token = get_env_config().data.tushare_token or ts.get_token() pro = ts.pro_api(token)

初始化pro实例后,margin接口支持两种等价调用方式:

# 方式一:直接方法调用 df = pro.margin(trade_date='20180802') # 方式二:通用 query 接口 df = pro.query('margin', trade_date='20180802', exchange_id='SSE')

返回值为 pandas DataFrame。以trade_date='20180802'为例,原始数据样例为:

trade_date exchange_id rzye rzmre rzche \ 0 20180802 SZSE 3.495054e+11 1.347549e+10 1.463921e+10 1 20180802 SSE 5.311746e+11 1.484584e+10 1.573947e+10 rqye rqmcl rzrqye 0 1.083380e+09 24418046.0 3.505888e+11 1 6.029618e+09 83721012.0 5.372042e+11

可见 2018-08-02 当天深市(SZSE)融资余额约 3495 亿元、沪市(SSE)约 5312 亿元,两者相加即为当日全市场融资余额。建议在读取后对trade_date统一做字符串到datetime的转换,并将金额列除以 1e8 转换为「亿元」单位以便可视化。

五、批量拉取实战:突破 4000 行上限

单次请求最多返回 4000 行,而 A 股 2010 年至今约 3700+ 个交易日,按交易所展开约 1 万行以上,因此多日期历史回补必须循环拉取。推荐两种策略:

策略一:按交易日逐日拉取(最稳健)

import tushare as ts pro = ts.pro_api() def fetch_margin_by_day(start_date: str, end_date: str): """逐日拉取,每天一次请求,天然规避 4000 行上限。""" import pandas as pd from tushare.util import dateu as _ # 仅示意,实际可用交易日历接口生成日期序列 frames = [] # 用 trade_cal 接口生成 A 股交易日序列,再逐日请求 cal = pro.trade_cal(exchange='SSE', start_date=start_date, end_date=end_date, is_open='1') for day in cal['cal_date'].tolist(): df = pro.margin(trade_date=day) if df is not None and not df.empty: frames.append(df) return pd.concat(frames, ignore_index=True) margin_all = fetch_margin_by_day('20240101', '20241231')

策略二:按日期区间 + 交易所拆分(请求数更少)

单日两市最多 3 行(SSE/SZSE/BSE),4000 行上限意味着单次请求可覆盖上千个交易日。若只需单一交易所,可放心使用大区间:

# 单所大区间:上交所 2024 全年一次拉取 df = pro.margin(exchange_id='SSE', start_date='20240101', end_date='20241231') # 跨所全量时,再对每个交易所分别拉取后 concat import pandas as pd parts = [] for ex in ('SSE', 'SZSE', 'BSE'): parts.append(pro.margin(exchange_id=ex, start_date='20240101', end_date='20241231')) df = pd.concat(parts, ignore_index=True).sort_values(['trade_date', 'exchange_id'])

实战建议:exchange_id为主拆分维度、以日期区间为次拆分维度,既能把每次返回控制在限额内,又便于按交易所建分区表。拉取后注意两点:一是BSE(北交所)纳入两融体系的时间较晚,早期日期没有对应记录属正常现象;二是节假日无交易日数据,拼接结果中天然缺行。

六、数据口径与统计规则:理解余额是如何算出来的

要正确解读字段,必须掌握交易所的汇总口径。文档「说明」部分明确给出了四组递推公式:

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

这组公式有三个值得注意的推论:

  1. 融资余额是存量而非流量:它反映的是「截至当日收盘全市场借来的资金还剩多少」,因此跨日对比要关注净变化量(融资净买入 =rzmre - rzche),而非原始余额本身;
  2. 融券余额依赖收盘价rqye不是直接申报值,而是「融券余量 × 当日收盘价」的估值,因此同一天融券余量不变时,个股价格波动也会引起融券余额变化——解读时要分清是「量的变化」还是「价的变化」;
  3. 2014-09-22 起口径扩大:自该日起,「融资融券交易总量」数据包含调出标的证券名单的证券的融资融券余额。也就是说,标的调出两融名单后其存量余额仍被计入汇总,历史对比跨过这一日期时要注意口径跳变,避免把口径变化误读为资金面变化。

另外,转融资(slb_len)接口的样例显示其金额单位为亿元(字段ob/cb为期初/期末余额),与margin接口的「元」不同,跨接口对账时务必先统一单位(参见 转融资交易汇总)。

七、在 Vibe-Trading 中的实战应用:从数据到信号

融资融券汇总数据在 Vibe-Trading 中并不只是孤立的数据源,而是被纳入情绪分析与板块轮动等研究链路:

1. 杠杆资金情绪信号(情绪分析 Skill)

情绪分析 的「融资融券信号(A股)」章节给出了基于这些字段的研判框架:

  • 融资余额:底部企稳后连续增加是看多信号;高位加速增加则需警惕过热(历史极端值如 2015 年牛市顶部约 2.27 万亿、2018 年熊市底部约 0.76 万亿);
  • 融资净买入:连续 5 天净买入看多,连续 5 天净卖出看空;
  • 融券余额:大幅增加后回落代表空头回补(偏多);突然大增则提示有人集中做空;
  • 融资/融券比:比值回落后反弹偏多,极端高位提示杠杆过热;
  • 经验法则:融资余额月增/月减超 10% 分别触发过热与恐慌警示。

margin汇总数据落地这些规则非常直接:rzye的周环比/月环比对应「融资余额变化率」,rzmre - rzche对应「融资净买入」,rqye对应「融券余额」。同时注意该 Skill 中特别提醒:融资融券数据为 T+1 日公布,存在滞后,信号落地时需错位对齐交易日期,避免未来函数。

2. 板块与市场轮动的杠杆验证(行业轮动 Skill)

行业轮动 将「融资余额变化」作为杠杆资金方向指标纳入轮动因子库,用于验证趋势强度:融资余额持续流入通常与指数上行互相印证,反之则提示趋势资金动能减弱。汇总数据的交易所粒度恰好适合做「沪市 vs 深市」的杠杆结构对比,结合margin_detail的个股粒度可下钻到具体标的。

3. 与其他数据源的交叉验证

  • 两融数据同样由东方财富 Skill 提供免费免鉴权入口get_margin_trading(见 Eastmoney Skill),可与 Tushare 的margin/margin_detail双源交叉校验,发现某个源数据缺失或异常时自动降级到另一源(数据路由层在 contenteditable="false">【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询