Vibe-Trading 股权质押明细数据接入指南:基于 Tushare `pledge_detail` 接口的 A 股质押风险分析实战
2026/9/11 16:14:00 网站建设 项目流程

Vibe-Trading 股权质押明细数据接入指南:基于 Tusharepledge_detail接口的 A 股质押风险分析实战

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

股权质押是 A 股上市公司大股东融资的重要渠道,质押比例过高往往意味着平仓风险与股价承压,是量化研究与基本面尽调中不可忽视的指标。本文以 Vibe-Trading 仓库内 Tushare 技能文档 股权质押明细数据 为核心,系统讲解pledge_detail接口的调用方式、字段语义与数据口径,并结合仓库中 tushare 数据接入层的真实实现,说明如何在回测、研究流程中正确获取与使用质押明细数据,帮助你构建可落地的股权质押风险监测与因子分析方案。

接口概述:pledge_detail能提供什么

pledge_detail是 Tushare 提供的股票质押明细数据接口,返回的是每一笔股权质押登记的明细记录,而非汇总统计。它记录的是「谁(股东)、在什么时候、把多少股票、质押给了谁」这类逐笔交易信息,粒度细到单次质押行为,因此非常适合用于:

  • 逐笔核对上市公司公告中披露的质押事项;
  • 跟踪重要股东质押-解押的完整时间轴;
  • 计算单笔质押占总股本比例,评估平仓风险敞口;
  • 结合回购标记(is_buyback)识别大股东「质押-回购」循环操作。

在 Vibe-Trading 的 tushare 技能体系中,该接口与同目录下的 股权质押统计数据(接口名pledge_stat)形成互补:pledge_stat给出的是按截止日期聚合的质押次数、无限售/限售质押数量与质押比例,而pledge_detail提供的是支撑这些统计数字的原始逐笔记录。两者可通过 SKILL.md 中「数据接口列表」定位(pledge_detail对应 ID 111,pledge_stat对应 ID 110)。

调用限制(以仓库内文档为准):

项目说明
接口名pledge_detail
数据范围股票质押明细数据
单次最大返回1000 条
权限要求用户至少需要500 积分方可调取

积分获取办法详见 Tushare 官方积分说明文档(doc_id=13)。文档中的「限量:单次最大 1000」意味着当单只股票历史质押笔数较多时,一次调用可能取不完,需要在应用层做分页或按时间切片处理。

输入参数:按股票代码精确查询

pledge_detail的输入参数非常简洁,仅需一个必选参数:

名称类型必选描述
ts_codestrY股票代码(Tushare 统一代码格式,如000014.SZ600000.SH

需要注意的要点:

  • ts_code采用「6 位数字 + 交易所后缀」的 Tushare 标准格式,这与仓库中 tushare loader 处理的代码体系一致(000001.SZ深圳、600000.SH上海);
  • 该接口按代码精确查询,不支持按日期区间批量拉取全市场,因此做全市场质押扫描时需要先通过股票列表接口(如stock_basic)获取全部ts_code再循环调用;
  • 日期格式遵循 Tushare 约定:YYYYMMDD(如20180106),这与仓库 SKILL.md 中「参数格式说明」一节的规定完全一致。

输出字段详解:13 个字段的语义与用途

pledge_detail共返回 13 个字段,分为「质押事件信息」和「持股与比例信息」两组。理解这些字段的准确含义是正确使用数据的前提。

字段类型描述关键用途
ts_codestrTS 股票代码关联股票维度
ann_datestr公告日期事件的信息披露时点,是判断信息可用性的关键
holder_namestr股东名称识别质押主体(大股东/实控人/机构)
pledge_amountfloat质押数量(万股本次质押的股份数量
start_datestr质押开始日期质押登记起始日
end_datestr质押结束日期质押到期日
is_releasestr是否已解押判断该笔质押当前状态
release_datestr解押日期实际解押时间点
pledgorstr质押方接收质押的质权人(券商/银行/信托等)
holding_amountfloat持股总数(万股质押时点该股东总持股
pledged_amountfloat质押总数(万股该股东累计质押股数
p_total_ratiofloat本次质押占总股本比例单笔质押的稀释/风险权重
h_total_ratiofloat持股总数占总股本比例股东持股集中度
is_buybackstr是否回购(0 否 1 是)识别「质押式回购」融资行为

字段语义的三个易错点

  1. 公告日(ann_date)≠ 质押开始日(start_dateann_date是公司对外披露的日期,start_date是质押登记生效的日期。文档的数据示例中(见下文),ann_date=20180106的记录对应start_date=20171114,两者相差近两个月,说明质押登记在先、公告披露在后。在做回测或事件研究时,必须用ann_date作为信息可得时点,否则会引入严重的前视偏差。

  2. 数量单位是万股,不是股pledge_amountholding_amountpledged_amount三个字段的单位均为万股。例如文档示例中pledge_amount=500.0000表示本次质押 500 万股,而非 500 股。换算成股本占比时需要与总股本(也按万股计)保持单位一致。

  3. 解押状态(is_release)与解押日期(release_date)可能为空:尚未解押的质押记录,release_date字段通常为空,is_release用于标记「是否已解押」,不能仅凭release_date是否为空来判断。

接口使用:两种等价调用方式

按照 股权质押明细数据.md 文档,调用方式有两种,等价且均返回 pandas DataFrame:

方式一:通过pro_api实例直接调用

import tushare as ts pro = ts.pro_api() # 或者显式传入 token: # pro = ts.pro_api('your token') df = pro.pledge_detail(ts_code='000014.SZ')

方式二:通过通用query方法调用

import tushare as ts pro = ts.pro_api() df = pro.query('pledge_detail', ts_code='000014.SZ')

在 Vibe-Trading 中的标准接入姿势

结合仓库内 stock_data_example.py 的写法,更符合本项目规范的做法是从环境配置中读取 token:

import tushare as ts from src.config.accessor import get_env_config # 读取环境变量 TUSHARE_TOKEN,或本地已记录的 token token = get_env_config().data.tushare_token or ts.get_token() pro = ts.pro_api(token) df = pro.pledge_detail(ts_code='000014.SZ') print(df.head())

其中TUSHARE_TOKEN是仓库 env_schema.py 中定义的配置项(tushare_token: str = Field(alias="TUSHARE_TOKEN", default="")),可在环境变量中配置:

export TUSHARE_TOKEN=your_token

数据示例解读

文档给出了000014.SZ(沙河股份)的真实返回示例,前 7 行如下:

ts_code ann_date holder_name pledge_amount start_date \ 0 000014.SZ 20180106 中科汇通(深圳)股权投资基金有限公司 500.0000 20171114 1 000014.SZ 20180106 中科汇通(深圳)股权投资基金有限公司 922.0055 20171114 2 000014.SZ 20171221 中科汇通(深圳)股权投资基金有限公司 600.0000 20171114 3 000014.SZ 20171216 中科汇通(深圳)股权投资基金有限公司 300.0000 20171114 4 000014.SZ 20171111 中科汇通(深圳)股权投资基金有限公司 2321.9955 20151127 5 000014.SZ 20170616 中科汇通(深圳)股权投资基金有限公司 0.0100 20151127 6 000014.SZ 20060927 深圳市沙河实业(集团)有限公司 1936.3698 20050119

从示例中可以观察到的数据特征:

  • 同一公告日出现多条记录:2018-01-06 当天同一股东披露了两笔质押(500 万股与 922.0055 万股),说明一个公告可能包含多笔质押明细,单日数据需要按记录逐笔处理,不能按公告日去重;
  • 同一股东长期多次质押中科汇通(深圳)股权投资基金有限公司自 2015 年起反复质押同一标的,质押日期跨度超过两年,是典型的连续质押行为,可作为「高质押滚动续作」的研究样本;
  • 历史数据覆盖久远:示例中最早的记录可追溯到 2006 年(start_date=20050119),说明该接口具备长历史数据支撑能力,可用于长周期质押行为研究。

结合 Vibe-Trading 数据层的源码级扩展

pledge_detail属于 Tushare 的参考数据类接口,与行情、财务类接口不同,它不直接参与 Vibe-Trading 回测引擎的 K 线获取链路。但仓库的 tushare 接入层可以为你提供「如何在项目里正确调用、容错处理 Tushare 接口」的成熟范式:

1. Token 管理与可用性判定

仓库 tushare loader 中DataLoader.is_available()通过检查TUSHARE_TOKEN是否为空或占位符your-tushare-token来决定数据源是否可用,这一判定逻辑同样适用于质押明细等所有 Tushare 接口:

TUSHARE_TOKEN_PLACEHOLDERS = {"", "your-tushare-token"} def is_available(self) -> bool: from src.config.accessor import get_env_config return get_env_config().data.tushare_token.strip() not in TUSHARE_TOKEN_PLACEHOLDERS

在编写质押数据采集任务前,先用同样的方式校验 token 配置,可以避免「积分不足」「token 无效」之外的配置类误用。

2. 频率限制(限流)与退避重试

质押明细接口与仓库 loader 中调用的dailyhk_daily等接口一样受 Tushare 积分频率限制约束。仓库在 tushare.py 中实现了成熟的限流识别与指数退避策略,可以直接复用到质押明细的批量抓取中:

  • 通过_RATE_LIMIT_MARKERS(如「每分钟」「频率」「rate limit」「too many requests」)识别异常消息中的限流特征,而非把所有异常都当作硬失败;
  • 通过_call_with_backoff(5s, 20s, 40s)的退避序列重试,总时长约 65 秒可跨过一个限流窗口;
  • 关键设计:只有限流才重试,普通失败(如代码不存在、字段错误)立即抛出,避免把坏请求变成数秒级的静默卡顿。

批量拉取全市场质押明细时,务必控制并发与调用节奏,并为限流预留退避逻辑。

3. 字段与数据类型的规范化处理

仓库 loader 在拿到 Tushare 返回后统一做排序、索引与数值化处理(pd.to_numeric(..., errors="coerce"))。对于质押明细数据,pledge_amountholding_amountpledged_amountp_total_ratioh_total_ratio等数值字段同样建议做类型强制转换,避免因缺失值或字符串污染导致后续计算失败。此外,ann_datestart_dateend_daterelease_date建议统一转为datetime类型,并显式处理空解押日期。

4. 与基本面数据提供器的时序保护思路对齐

仓库 tushare_fundamentals.py 为财务数据建立了「point-in-time」(时点)保护机制,强调必须用公告日(如f_ann_date/ann_date)而非报告期对齐事件。这一设计哲学对质押明细同样成立:任何基于质押数据的回测,都应使用ann_date作为信息可得时点,防止把未来披露的质押信息引入历史信号,造成前视偏差。

实战:基于pledge_detail的质押风险分析示例

以下示例完整演示「获取单只股票质押明细 → 清洗 → 计算质押风险指标」的全流程,可直接在 Vibe-Trading 环境中运行:

import tushare as ts import pandas as pd # 1. 初始化(优先使用环境配置中的 token) from src.config.accessor import get_env_config token = get_env_config().data.tushare_token or ts.get_token() pro = ts.pro_api(token) # 2. 拉取质押明细 df = pro.pledge_detail(ts_code='000014.SZ') # 3. 数据清洗:数值化 + 日期化 for col in ['pledge_amount', 'holding_amount', 'pledged_amount', 'p_total_ratio', 'h_total_ratio']: df[col] = pd.to_numeric(df[col], errors='coerce') for col in ['ann_date', 'start_date', 'end_date', 'release_date']: df[col] = pd.to_datetime(df[col], format='%Y%m%d', errors='coerce') # 4. 当前仍在质押、且未解押的记录(is_release 语义:'N' 或 '0' 表示未解押) active = df[df['is_release'] != 'Y'].copy() print(f"历史质押记录总数:{len(df)},当前未解押记录:{len(active)}") # 5. 按股东聚合:累计质押股数与占总股本比例 grouped = active.groupby('holder_name').agg( pledge_total=('pledge_amount', 'sum'), p_total_ratio_max=('p_total_ratio', 'max'), holding_amount=('holding_amount', 'max'), ).reset_index() print(grouped.sort_values('pledge_total', ascending=False))

提示:示例中的is_release判断逻辑需以实际返回值为准(文档字段描述为「是否已解押」,实践中可先print(df['is_release'].value_counts())确认取值后再写过滤条件)。p_total_ratio为「本次质押占总股本比例」,若要计算「累计质押占总股本比例」,需用pledged_amount / 总股本自行计算,总股本可通过daily_basic等接口获取。

进阶:将质押比例纳入因子研究

质押数据天然适合构建风险类因子,例如:

  • 高质押占比因子:按pledged_amount / 总股本计算累计质押比例,作为个股信用风险的截面特征;
  • 质押-解押事件因子:基于ann_date+is_release构造「新增质押」「解押完成」两类事件,做事件驱动研究;
  • 回购循环识别:利用is_buyback标记识别大股东「质押-回购」滚动融资行为,结合 股权质押统计数据 的pledge_count(质押次数)交叉验证质押强度。

这类参考数据与仓库的行情数据(如 历史日线 接口daily)按ts_code对齐后,即可纳入 Vibe-Trading 的回测与因子分析流程。

使用限制与注意事项

  1. 积分门槛pledge_detail需要至少 500 积分,批量全市场抓取对积分消耗较高,建议聚焦重点标的池(如持仓股、高质押风险股票池)而非全市场循环。
  2. 单次 1000 条上限:历史质押笔数较多的股票可能一次取不完,需自行实现翻页或按时间切片的补偿逻辑。
  3. 单位换算:所有数量字段均为万股,与daily_basic等接口的股本字段换算时需注意单位一致性。
  4. 信息时点:回测与事件研究一律以ann_date(公告日期)作为信息可得时点,规避前视偏差。
  5. 数据口径:字段的具体取值(尤其is_releaseis_buyback的取值方式)建议先对实际返回数据做取值分布检查,再写入过滤逻辑。

总结

pledge_detail是 Vibe-Trading 的 tushare 技能库中获取 A 股股权质押逐笔明细的核心接口,与pledge_stat统计数据互补,共同构成完整的质押风险数据视图。本文完整覆盖了接口的调用限制、输入输出参数、两种调用方式、真实数据样例解读,并结合仓库中 tushare loader、tushare_fundamentals.py 与 env_schema.py 的实现,给出了 token 管理、限流退避、字段规范化、公告日对齐等生产级实践建议。掌握这些要点后,你就可以在 Vibe-Trading 环境中搭建自己的股权质押风险监测与因子分析流程。

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

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

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

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

立即咨询