
做实证研究这几年要说哪类数据最容易让人产生一种“下载完就等于做完了”的错觉股东股权质押数据绝对排得上号。从2003年到2024年A股上市公司股东把手中股份质押给银行、券商或者信托去换融资每一笔都会在交易所公告里留下痕迹研究股权质押和企业风险、公司治理、大股东行为的论文几乎都要用到这批记录。数据不缺下载也不难难的是怎么把它从一张张零散的质押公告变成能直接放进面板回归的干净表格。这篇文章就来拆一拆这份数据里面到底有什么怎么理解怎么清洗以及做完之后能回答哪些实证问题。不管你是准备写毕业论文还是刚开始接手公司金融研究课题把这套流程走一遍后面会省很多事。1. 拆解这个数据集股权质押数据到底在记录什么1.1 股东为什么要拿股权质押先把底层逻辑讲清楚。股权质押对股东来说本质上是一笔以股票市值为担保品的融资。假设你手上有一家上市公司20%的股份总市值两个亿但你急用五千万现金。直接卖股要公告、要面对市场猜测而且卖多了还可能丢掉控制权把股份质押出去钱到手了股份名义上还记在你名下投票权也不受影响。这种方式在资金需求比较急、又不想减持的股东眼里天然有吸引力。债权人也不是做慈善。券商、银行和信托在接受质押时通常只按市值的五折左右放款也就是质押率在30%到50%之间还会设置预警线和平仓线。一旦股价跌到预警线股东必须补充担保品或者提前还款跌穿平仓线更麻烦债权人有权处置股票。这个机制是整个数据最具分析价值的点股东质押之后股价波动不再只是市场波动它会直接影响股东的融资安全和控制权安全于是股东在财务决策、信息披露、分红回购上的行为都会跟着变。几乎所有的股权质押实证研究起点都是这个行为推断。这也是为什么研究里经常把股权质押看成“大股东面临资金压力”和“大股东有市值管理动机”的标志变量。1.2 2003到2024二十年质押数据里的周期变化2003到2024这个区间横跨的时间足够长背后的制度环境变化非常明显。2005年股权分置改革之前大量股份还不能自由流通公开市场上的质押案例少记录也多集中在少数法人股东身上样本量很小数据反映的更像是个案融资行为。2007到2012年前后市场进入快速扩容阶段质押交易的参与机构以银行信托为主质押对象更多地绑定在单一项目上。真正的转折发生在2013年。那一轮券商股权质押业务规范化之后股票质押式回购成为标准化产品流程快、门槛低大批中小股东和控股股东涌进来。到2016、2017年市场整体质押比例已经处在一个相当高的位置不少公司的累计质押比例超过总股本的40%创业板的民营公司尤其明显。这种高比例状态当然不可能长久持续。2018年监管对股票质押出台更严格的管理要求单只股票整体质押比例、单一机构接受同一只股票质押的比例都被框定叠加当时市场估值下行高比例质押的公司集中暴露风险纾困基金进场“解押”“延期”和“被动减持”的记录明显变多。2020年往后存量风险慢慢化解质押数据里的新增大额质押变少但每年仍在发生。这样一个包含宽松期、爆发期、收紧期的长窗口对实证研究是很好的素材可以拿2018年的规则调整当外生冲击做事件研究也可以比较不同制度环境下股权质押对公司行为影响的差异。如果手里只有最近三四年的质押数据很多这类设计都做不了。2. 建模之前的数据准备源库选择与核心变量拆解2.1 数据从哪来商用数据库和公告手工整理怎么选刚开始接触这个课题的人通常会先被一个问题卡住数据哪里来市面上主流的商用数据库国泰安CSMAR、Wind、锐思RESSET基本都覆盖了股权质押专题。我自己最常用的还是CSMAR的股票质押库不是因为它一定比别家好而是它字段拆得细直接按上市公司、股东、质权人逐笔登记且能导出匹配Stata和Python的格式对学术研究友好。具体对比可以看下面这张表。数据来源内容颗粒度主要优势主要局限CSMAR股票质押库逐笔质押/解押明细字段细、历史长、适合建模需授权部分字段需自行拼接Wind股权质押专题公司汇总部分明细展示直观、更新快历史明细可能被合并字段不如学术库细锐思RESSET等库类似CSMAR可作交叉验证覆盖面和使用习惯因人而异交易所公告手工整理原始公告全文可核对细节、补充缺口工作量极大易漏易错做研究我一般建议以CSMAR或同类学术库为主、公告核验为辅。拿到数据后别急着用先看它的字段说明文档重点确认三件事是否区分质押和解押、是否包含股东类型、日期字段是哪一种。这些在数据说明里都有不看等于白吃亏。2.2 拿到的字段怎么认核心变量与容易遗漏的细节一份标准的股权质押明细数据通常包含下面这些字段。别小看这张表绝大多数清洗错误都发生在对字段含义理解不到位上面。字段含义常见口径问题证券代码上市公司标识历史代码可能变更需统一格式股东名称质押股东全称简称、更名、关联主体需统一处理股东类型控股股东/非控股部分库没有需与持股数据合并质押股数本次质押数量注意单位是股还是万股质押市值质押股票市值不同库计算的时点不同质押起始日权利设立日与公告日有差异需区分使用质押到期日权利到期日缺失率高需用解押记录补全质权人类型银行/券商/信托/其他分类标准可能不一致质押目的融资/担保等早期记录缺失较多字段认完之后有两处值得单独提醒。一是股东名称同一家集团下面可能挂着多个持股主体名称里有全角空格、繁体、括号写法不一不统一后面没法做累计统计。二是质权人类型银行、券商、信托这三类机构的放款逻辑完全不同银行更看信用评级、券商更看质押率和流动性、信托则经常做通道业务做机制分析时往往要把质权人类型拆开看。2.3 哪些衍生变量要自己造从单笔到累计的处理思路明细数据本身只是一条一条的交易实证研究真正需要的是能反映“状态”的变量。最常见的衍生变量有这么几类。是否质押虚拟变量某年某股东是否发生过未解押的质押或者年末是否存在存续质押用0/1表示。这个变量适合做事件型研究比如“存在质押的公司审计收费是否更高”。累计质押比例把同一股东或者同一公司在某一年度内存续的质押股数加总再除以总股本或该股东持股数。这是最核心的解释变量用来衡量质押强度。构造时最关键的一步是把已经解押的质押记录从累计中剔除不然当年的存量会被高估。另外还有质押集中度、平均质押期限、质权人是否为券商等变量。这些看着简单但每一步都依赖明细数据的准确性和日期口径的一致性。所以千万不要觉得“先下载一份现成的质押比例指标”就够了。商用数据库确实会提供现成指标但不同库的算法不同有的按公告累计、有的按存续状态累计用之前必须搞清楚它的口径否则回归结果很容易被质疑。3. 实操环节用Python手把手完成数据清洗3.1 读入与去重先把明细压实成一张干净表实操部分先把去重和基本面检查走一遍。我用pandas做示范Stata的逻辑完全一样。import pandas as pd # 读入质押明细表 pledge pd.read_csv(pledge_detail.csv, encodinggbk) print(pledge.shape) print(pledge.head()) # 排除已经解押的初始记录只保留当期存续 pledge pledge[pledge[解押日期].isna() | (pledge[解押日期] pledge[质押起始日期])] # 去重同一笔质押可能因为公告多次出现而重复 dedup_cols [证券代码, 股东名称, 质权人名称, 质押起始日期, 质押股数] pledge_clean pledge.drop_duplicates(subsetdedup_cols, keeplast)去重这一步是很多翻车现场的开始。我自己拿到一份第三方整理数据时就发现同一笔质押因为公司发了更正公告在表里出现了两次质押股数一样但公告日期不同。如果不先drop_duplicates后面加总时会把这笔质押算成两份。去重完成后做一次比例检查生成公司层面的质押股数合计和数据库自带的质押余额对比差异明显就说明数据源本身有脏数据需要回到公告核验。3.2 质押比例两种算法按总股本还是按持股算质押比例是实证里用得最多的变量但“比例”的定义有两种混用会出大问题。第一种是按总股本算的公司整体质押比例公式是公司在t年末存续的累计质押股数除以总股本。它衡量的是市场上有多大权重的股票被锁定成担保品股价下跌时更容易被动卖出。第二种是按股东持股算的股东质押比例公式是某个股东累计质押股数除以该股东持股总数。它衡量的是股东自身控制权的风险如果这个比例逼近80%乃至100%说明股价稍微跌一点股东就得措手不及地补仓治理行为非常可能变形。举个例子某控股股东持有1.2亿股占总股本20%押出去7200万股。按总股本算是12%看起来不高按该股东持股算却是60%风险信号完全不同。做实证时具体用哪一种要跟你的研究问题走研究股价风险用公司整体质押比例研究大股东治理动机用股东层面比例。很多论文会在稳健性检验里换着跑。构造股东层面比例需要先把股东持股数匹配进来这一步常常要回到股东持股明细库不能只用公司层面的总股本。3.3 合并财务与行情数据构建公司年度面板清洗完质押明细接下来要把它变成公司年度面板和财务数据、行情数据做匹配。我的习惯是先把质押明细按“证券代码年份”聚合得到公司每年的质押状态。这里的年份用哪个日期必须想清楚如果研究市场对质押公告的反应用公告年份如果研究存续质押对公司行为的影响用质押存续状态的覆盖年份——只要质押起始日在t年之前、解押日在t年之后就计入t年存续。两种口径会产出不同的数字一定要在论文数据说明里写清楚。pledge_clean[存续年度] pledge_clean[质押起始日期].str[:4].astype(int) firm_year pledge_clean.groupby([证券代码, 存续年度]).agg( 累计质押股数(质押股数, sum), 质押笔数(质押股数, count) ).reset_index()然后和财务数据合并时要注意证券代码的口径。券商数据库导出时有的给6位纯数字代码有的带交易所后缀merge之前先统一格式否则明明是同一家公司左右表就是匹配不上。面板数据构建好以后做三个快检看面板是否平衡2003到2007年样本量是否明显偏少看质押比例分布有没有大于1的异常值大概率是重复累计对比连续两年质押余额的跳跃是否合理。跳出明显异常再进入建模环节。4. 实证应用这份数据能回答哪些研究问题4.1 股权质押与企业价值代理成本视角的经典设计数据准备好了它能回答什么第一类是经典的公司治理问题最典型的是股权质押与公司价值。大股东通过质押把流动性风险转嫁给股价同时保留了控制权这会加剧“第二类代理问题”——大股东和中小股东之间利益并不完全一致。质押比例高时大股东一方面有掏空动机通过关联交易、资金占用等方式转移公司资源另一方面又要防止股价下跌导致控制权旁落于是可能减少研发等长期投入。这个设计的被解释变量常用托宾Q或ROA解释变量就是公司整体质押比例或者是否质押虚拟变量。一个常见的基准模型是Value_it α β1 * PledgeRatio_it γ * Controls_it μ_i λ_t ε_it控制变量至少包括资产负债率、公司规模、盈利能力、成长性、两权分离度等。用固定效应模型控制公司层面的不随时间变化的特征。这类研究最容易被审稿人挑的问题是内生性。质押决策不是随机的可能恰好是资金紧张的公司才质押而资金紧张本身也会影响价值。处理方式可以上Heckman两阶段、PSM匹配或者找一个外生冲击做DID比如2018年质押规则调整之后原本高比例质押公司的行为是否发生突变。手里这份2003到2024年的长面板正好能支撑这类设计。4.2 股权质押与股价崩盘风险信息隐藏这条线另一条重要的线是股权质押与股价崩盘风险。它的逻辑链条很有意思股东质押之后股价一旦跌破平仓线可能导致被强制平仓于是股东有强烈动机在股价下行时做市值管理把坏消息压一压、挑好消息放一放。坏消息不会凭空消失只会越积越多最后集中释放的时候股价就容易崩得非常惨。实证上被解释变量通常用NCSKEW或者DUVOL这两个指标都是基于个股周收益率计算出来的。解释变量依然是质押比例样本往往是2010到2023年这一段因为太早的年份质押样本太少崩盘风险指标的方差也不稳定。做这个方向要特别注意数据匹配崩盘风险指标需要用行情库重新算不能用别人论文里给的现成数据因为不同区间、不同频率算出来的指标完全不同。另外质押比例到崩盘风险之间不是简单线性关系有的论文发现存在门槛效应样本的尾部特征差异很大做异质性分析时可以把样本按质权人类型、股东类型、产权性质分组观察。这些都是这份数据能直接支撑的边际贡献点。4.3 从研究设计反推数据需求别让字段限制问题还有一类思路是反向拆解先定研究问题再看需要什么字段。下面这张表可以拿来当参考。研究问题核心解释变量需要的字段股权质押与企业创新控股股东累计质押比例股东类型、累计质押、持股数股权质押与融资约束是否质押、质押规模质押笔数、质押市值、质权人类型股权质押与审计收费质押比例、有无质押质押明细、审计数据股权质押与股价波动公司整体质押比例质押明细、行情数据股权质押与减持行为质押到期分布质押起始日、到期日、股东名称这样做的好处是不会因为数据库里已有的字段而限制了自己的想象力。很多有意思的研究关键变量反而是自己组装的数据库里并没有现成的股权质押存续状态指标。比较推荐的做法是确定研究主题后先写一段一页以内的设计说明把核心变量的构造公式写下来再用这份明细去实现。直接一条一条翻明细找灵感效率很低也容易被数据里偶然的分布带偏。5. 排雷实录我踩过的常见坑和排查方法5.1 字段口径混乱重复记录和名称变体怎么处理重头戏来了说说我实际踩过的坑。第一个坑是字段口径混乱。现象一同一股东名称在不同年份写法不同比如“XX控股集团股份有限公司”和“XX控股集团”同时出现如果不多做一步标准化累计统计时会被拆成两个主体。解法是用正则把公司后缀、空格、特殊符号统一规范化后再分组。现象二数据里既有质押记录又有解押记录但没有明确的状态字段导致同一笔质押被反复计入。解法是先按质押起始日、质权人、股数去重再通过解押日期判断当年存续状态。现象三数据库的汇总表和自己加总对不上。这时候不要盲目信汇总我遇到过汇总表把已解押记录也留在余额里的情况。必须回到逐笔明细核对必要时抽查几笔交易公告截图做佐证。检查的标准动作按年度画出质押余额走势再看有没有突然清零又恢复的年份这种通常都是口径切换或数据错误。5.2 时间维度陷阱公告日、质押起始日和到期日怎么选第二个大坑是时间口径。股权质押数据里至少有三个日期公告日、质押起始日、质押到期日有的库还有解押日。用不对结果天差地别。如果研究是事件研究比如“质押公告发布后股价如何反应”应该用公告日作为事件日因为市场只能对公告做出反应。如果研究是存续状态的影响比如“股权质押是否影响分红”则应该构造存续期覆盖只要质押起息日在报告期之前且在期末尚未解押就计入。很多同学图省事直接把质押起始日对应的年份当成年份变量这样会带来一个明显的问题一笔在2023年12月29日开始的质押会被记入2023年但其对公司的实际影响基本发生在2024年时间归属就偏了。处理办法是同时生成两个年份字段一个用于公告层分析一个用于存续层分析并在稳健性检验里互换。到期日的缺失也是一个麻烦。早期记录里不少质押只有起始日没有到期日有的是展期之后数据库没更新。遇到这种情况我会用同一股东后续的解押日反推或者把缺失的到期日标记为9999在存续计算时默认仍存续但这个默认必须写进数据说明。5.3 代码变更与退市样本别让历史数据拖垮面板最后一个常被忽略的坑是证券代码变更和退市样本。A股代码在2003到2024年间总体稳定但发生过借壳上市、吸收合并等事项的公司代码或者简称会变化有的公司在数据库里存在新旧两套标识。如果只用新代码去匹配历史数据那么该公司改名之前的质押记录会全部丢失。退市问题更隐蔽。商用数据库通常以当前存续股票为范围退市公司的质押历史很可能直接不在下载结果里。这会带来幸存者偏差早期高质押比例的公司如果大量退市而你只拿存续样本回归估计出来的质押—风险关系很可能被低估。实操办法是下载时把退市、ST、*ST样本一并纳入或者先拿到历史退市公司名单再从公告渠道回补质押记录。当然这一步不是所有研究题目都需要做。如果你的样本期是2013年以后、研究对象以存续公司为主退市影响相对小但只要你声称用的是全市场面板就一定要在数据来源里说清楚覆盖范围。审稿人只要看到样本筛选过程就会比较敏感提前做好准备比事后补说明从容得多。最后说一点我自己的使用体感。这份2003到2024年的股权质押数据表面上是一张张冷冰冰的质押公告真正用起来之后你会发现每一笔背后都站着一个缺钱又不想丢控制权的股东他的每一个选择都在数据里留下痕迹。三年的数据只能看到一个横截面二十多年的数据才能看到周期和制度变化。我自己的习惯是每接到一批新数据不急着跑回归先把质押明细合并成公司-年度-股东的存量表把每年存续质押的状态看清楚再用这张表去对照公告里的典型案例。数据清洗的阶段花多少时间都不算多它其实占了整个研究周期一半的精力但也是最有收获的阶段。之后再做相关性检验和建模心里会特别有底。