ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

企业票据承兑数据:供应链金融研究的隐藏富矿

企业票据承兑数据:供应链金融研究的隐藏富矿 1. 票据承兑数据供应链金融研究里容易被低估的一块拼图第一次在 CnOpenData 上看到“企业票据承兑信息情况表”的时候我其实没太当回事。当时手头正在做企业商业信用相关的课题满脑子都是应收账款、应付账款这些财务报表科目觉得票据不过是贸易结算的一种补充工具数据价值有限。直到后来有一次需要分析供应链上下游之间的资金传导才发现票据承兑信息几乎是从公开渠道能拿到的、最能反映企业真实商业信用行为的颗粒度数据。也是从那时候起我把这张表加进了自己的重点数据清单。先说清楚企业票据承兑到底是什么。票据本质上是一张约定付款的凭证出票人开出一张汇票承诺在未来某个时间点向收款人支付一笔钱。但这张票能不能兑付关键看承兑人是谁。所谓承兑就是付款人承诺在票据到期日无条件支付票面金额的行为。按承兑主体不同汇票分两类银行承兑汇票银承和商业承兑汇票商承。银承的承兑人是银行信用等级高市场认可度也高商承的承兑人是企业本身说白了就是一家企业用自己的商业信用做担保承诺到期还钱。这种商承票能开出去多少、承兑余额有多大直接反映了市场对这家企业信用的真实评估。那为什么说这张表的数据价值被低估了呢因为大多数企业不会在财报里主动披露自己开出了多少商业承兑汇票。应收账款和应付账款是会计科目可以在年报附注里查到但票据承兑业务通常属于表外业务不体现在资产负债表的强制披露科目里。CnOpenData 这家数据平台做的其实就是把原本分散在各类公开渠道的票据承兑信息抓取、清洗、结构化整理成一张可以直接用于实证分析的表格。对做公司金融、供应链金融、资产定价的 researchers 来说这相当于拿到了一个此前很难系统观测的维度——企业的真实商业信用承诺。这篇内容我打算把这张表从字段结构、数据口径、清洗匹配到研究应用的完整链路都说一遍。既有我自己的使用体验也有踩坑后的复盘。适合四类人看一是想用票据数据做学术研究的老师和同学二是做供应链金融风险分析的从业者三是搞企业信用评估、风控建模的朋友四是单纯想搞清楚商承票和银承票数据到底能干什么的好奇读者。不同基础的人都能从中找到自己能用的部分。2. 字段拆解与数据口径先把这张表的“零件”看清楚2.1 核心字段都有哪些拿到任何一张数据表第一步不是急着跑描述性统计而是把字段含义逐个捋清楚。根据公开票据要素和主流数据平台的一般整理习惯企业票据承兑信息情况表通常会包含以下几类字段我整理成一个表格方便对照字段类别常见字段项字段含义说明票据基础信息票据号码、票据类型、票面金额、票据张数票据唯一标识区分银承/商承票面金额是绝对金额值参与主体信息出票人名称、承兑人名称、收款人名称、出票人开户行票据流转的主要参与方承兑人是最关键的主体字段时间信息出票日期、承兑日期、到期日期、付款期限用于构造时间序列、计算票据期限业务状态票据状态正常/逾期/结清、承兑情况判断票据是否按时兑付风险分析的核心变量登记信息登记机构、披露日期、数据来源用于追溯数据出处核验真实性这里面最核心的是三个维度承兑人、票面金额、票据状态。承兑人决定了票据的信用等级票面金额反映了业务规模票据状态则直接与违约风险挂钩。做企业信用分析时把这三个字段联合起来就能构造出一家企业的票据承兑总规模、逾期比例、兑付记录等信息。这些信息在传统的上市公司财报数据里是找不到的。需要注意不同的数据版本、不同年份的表结构可能存在差异。比如早期版本可能没有承兑日期只有出票日期有的版本会单列“承兑人统一社会信用代码”有的版本只有名称。拿到表之后我建议先花半小时把每一列从头到尾扫一遍对不理解的字段名称及时查阅平台提供的数据字典。不要想当然地认为字段名长什么样、数据就是什么含义票据数据尤其如此。2.2 最容易混淆的几组口径这一节要重点说因为我就因为口径搞混吃过亏。第一组是“累计承兑金额”和“期末承兑余额”。累计承兑金额指的是企业在某个时间段内新签发的票据总量反映的是业务活跃度期末承兑余额则是截至某个时间点还尚未到期的票据总量反映的是存量信用承诺。打一个不太严谨但容易理解的比方累计承兑金额是“这个月开了多少张支票”期末承兑余额是“现在手上还有多少张没付出去的支票”。做融资约束研究时用哪个口径背后的经济学含义差别很大。累计口径体现的是票据使用频次余额口径才是企业表外负债的代理变量。第二组容易混淆的是“承兑人逾期”和“票据逾期”。承兑人逾期是指企业作为承兑人其承兑的票据到期后未能按时兑付票据逾期则是单张票据本身到期未付的状态。两者是总体和个体的关系。很多平台提供的“承兑人逾期名单”是按企业维度汇总的如果直接用这个名单去匹配单张票据会高估票据层面的违约率。正确做法是先把逾期名单拆解到票据层面或者反过来从票据状态字段中直接提取逾期记录再做企业汇总两个口径要能对得上。第三组是“承兑余额”和“开票余额”。从业务逻辑上承兑是开票后的承诺付款环节承兑余额应该大于等于实际兑付金额。但因为部分票据开立后可能未完成承兑登记或者发生背书转让表里的承兑余额和出票人自己统计的开票余额经常对不上。这不是数据质量问题而是业务链条里各个环节的登记时点不同。遇到这种情况我一般以承兑人维度的数据为准因为承兑是不需要依赖下游配合的、相对独立的承诺行为。2.3 时间覆盖与更新频率直接决定研究设计票据承兑数据的起止时间直接影响你能做什么研究。如果表里只有最近两三年的数据那就只能做截面分析或者短期事件研究如果能覆盖五到十年就可以做面板数据分析了。我之前看过的一个版本涵盖了近十年的票据承兑记录时间跨度足够支撑企业层面的面板回归。但要注意早期年份的数据量和字段完整度通常不如近期数据缺失率会明显偏高。做描述性统计时如果发现早期样本的企业数量断崖式下降不要急着认为是市场萎缩大概率只是数据覆盖的问题。更新频率方面有的表按月更新有的按季度或年度更新。如果做的是月度高频指标比如票据逾期率对信用利差的传导那就需要按月更新的版本如果做的是年度面板研究季度更新也够用。我个人倾向于尽量使用更新频率更高的版本因为票据承兑是一个动态变化的业务低频快照很容易遗漏期间内发生又结束的短期票据。3. 拿到数据之后清洗、匹配与关联的完整流程3.1 第一步永远是企业名称标准化票据承兑数据里最麻烦的字段不是金额而是企业名称。同一家企业在不同票据上的名称写法可能差很多全称和简称混用、股份有限公司写成有限公司、地名括号的位置不一致、繁体简体并存、英文名和中文名交替出现。如果直接用原始名称做匹配匹配率可能连六成都不到。我自己的处理流程是这样先做一轮标准化清洗把全角字符转半角、去掉所有空格和特殊符号、统一括号类型、将“股份有限公司”“有限公司”“集团”这类常见后缀统一为规范写法。这一步用 Python 的正则表达式就能完成不需要复杂的算法。下面是一个简单的清洗函数示例import re def normalize_company_name(name): if not isinstance(name, str): return # 全角转半角 name name.replace(, ().replace(, )) # 去除所有空白字符 name re.sub(r\s, , name) # 统一括号 name name.replace(【, [).replace(】, ]) # 统一常见后缀 name re.sub(r股份有限公司, 股份有限公司, name) name re.sub(r有限责任公司, 有限责任公司, name) return name.upper()清洗完之后我建议保存一版“原始名称-标准化名称”的映射表。这个映射表非常有用后续做任何数据关联都从映射表里直接取标准化名称避免每次都重复清洗。更重要的是如果平台方后续更新了数据版本只用重新跑一次映射就能保持所有下游分析的一致性。3.2 第二步与工商注册库匹配名称标准化只是前提真正的难点在于把票据数据中的企业名称匹配到工商注册库中的企业记录。匹配成功后才能拿到统一社会信用代码、注册地、行业分类、注册资本、股东结构等工商信息这些变量是后续研究的基础。匹配策略我建议分两步走。第一步是精确匹配用标准化后的名称直接关联。如果票据表里本身就有统一社会信用代码字段那这一步基本能解决八成以上的匹配问题。第二步是模糊匹配针对精确匹配失败的企业使用编辑距离、Jaro-Winkler 相似度等算法做候选集召回。但模糊匹配有一个问题误匹配率不低。两个名称相似但完全不同的企业可能被错误地关联到一起。我在实操中有一个校验技巧如果两个企业名称相似度很高但注册地不同宁可判为不匹配也不要强行关联。注册地是非常强的排他性特征尤其对重名率高的企业名称加上注册地约束后能显著降低误匹配。3.3 第三步关联到上市公司或发债企业把票据数据关联到上市公司是很多研究设计的必经之路。但这里有一个隐蔽的坑上市公司通常以集团形式存在票据的承兑人可能是上市公司本身也可能是它的子公司、孙公司。如果只按公司名称精确匹配上市公司本身会漏掉大量通过子公司开展票据业务的情况。正确的做法是把上市公司的合并范围考虑进来。先获取上市公司的控股子公司清单再把票据承兑人名称与“上市公司及其子公司”的名称集合做匹配。这样一张票据只要承兑人是上市公司体系内的任意一家企业都能归集到上市公司层面。我在实际操作中还遇到过另一个问题跨年份的子公司范围在变化今年纳入合并报表的子公司明年可能就处置掉了。如果做面板数据建议按年份分别匹配当年度的合并范围而不是用最新一期子公司清单去匹配全部年份的票据数据。这虽然麻烦一点但对结果准确性影响很大。匹配完成后我建议做一轮人工抽检。随机抽取50到100条匹配成功的记录逐一核对名称、注册地和所属行业确认没有系统性错误。抽检虽然土但永远是检验匹配质量的终极手段。3.4 处理文档和代码要跟着数据一起留档这一步很多人会忽视但我想单独拿出来说。票据承兑数据的清洗和匹配流程比较繁琐涉及的中间文件多如果不在最开始就建立清晰的文件结构三个月后再回来处理同一份数据很可能会忘记当时某个变量是怎么构造的某个过滤条件为什么要加。我自己的习惯是每个数据项目建一个 README 文件记录数据来源、下载时间、处理脚本路径、关键口径选择、清洗规则和已知问题。这看起来是额外的功夫但长期来看节约的时间远超写作成本。4. 这张表能回答哪些研究问题从商业信用到风险传染4.1 供应链核心企业的信用传导机制票据承兑数据最有特色的应用场景是研究供应链中的核心企业如何通过商业信用向上游和下游传导流动性。想象一个场景一家大型制造业企业作为核心企业向上游供应商开出大量商业承兑汇票这些票据相当于核心企业用自己的信用为供应商提供了一种类融资工具。供应商拿到商承票后可以选择持有到期也可以背书转让给下游还可以去银行贴现提前获取资金。票据市场因此成了核心企业信用向供应链上下游扩散的重要通道。用企业票据承兑信息数据可以实证检验这种信用传导的强度与边界。比如可以计算每家核心企业每年开出的商承票总额占其营业收入的比例构造一个“商业信用供给强度”指标看这个指标与其上下游企业的融资成本、经营绩效、投资行为之间的关系。还以分析核心企业出现票据逾期事件后其供应商的融资约束是否显著收紧这种风险传染的影响范围有多大、持续多长时间。这些研究问题在传统财报数据里几乎无从下手但票据承兑数据提供了天然的准自然实验场景。4.2 企业融资约束的新测度方式衡量企业融资约束学术界通常用的是 Kaplan-Zingales 指数、WW 指数、SA 指数这类基于财报和市值构造的代理变量或者用信贷可得性的调查数据。这些指标各有问题有的是基于发达市场构建的直接套用到中国情境未必适用有的依赖上市公司样本把大量非上市中小企业排除在外。票据承兑数据给了我们一个全新的、基于真实交易行为的切入角度。逻辑其实很直白一家企业如果愿意开商业承兑汇票而且供应商愿意接受它的商承票说明市场对该企业的信用是认可的反过来如果一家企业开出的商承票没人愿意收或者只能通过提高票面利率、缩短付款期限来吸引收款人那就说明它的商业信用边际在恶化。基于票据数据可以构造商承票使用率商承余额占总资产比例、贴现率、逾期率等指标这些指标直接反映了企业在商业信用市场上的融资能力。对非上市的中小微企业而言这可能是目前能拿到的、为数不多的市场化信用评估信息。我自己做的研究里把票据逾期率作为一个增量风险指标加入财务困境预测模型相比只使用传统财务指标模型的区分度有明显提升。这背后的经济学逻辑是财务报表反映的是历史经营结果而票据违约反映的是企业当前在真实经营活动中履行支付承诺的能力两者的信息时滞不同往往票据市场的恶化信号会早于财报数据的恶化。4.3 货币政策传导与信贷周期的观察窗口票据市场对货币政策的变化极其敏感。当货币政策收紧时银行信贷额度紧张企业会更依赖票据贴现来补充流动性票据市场的利率首先上行反过来宽松周期下票据利率快速下行。所以企业票据承兑数据天然就带了一层货币政策传导的信息。用票据承兑数据研究货币政策有两条可以走的路。一是把票据承兑总量当作企业外部融资需求的实时指标研究货币政策的变动如何影响不同规模、不同所有制企业的票据使用行为这可以直接对接“利率渠道”和“信贷渠道”的传导研究。二是利用商承票与银承票的结构差异。商承票的兑付依赖企业信用银承票的兑付依赖银行信用两端承兑人的信用基础不同对货币政策变化的敏感度也不同。通过比较货币政策冲击下两类票据规模的相对变化可以识别政策如何在不同信用层级之间重新分配流动性。这类问题的数据门槛过去要拿央行或票交所的内部数据才能做现在用公开的票据承兑信息表就能展开初步探索。4.4 票据违约的信用风险定价研究票据违约事件在公开市场上并不常见但每一次发生对相关企业的信用影响都极其显著。原因是票据违约具有高度的信息传染性一家企业连自己承兑的票据都无法兑付市场有理由怀疑它的其他债务偿付能力。票据承兑数据把这类违约事件系统地记录了下来而且能精确到单张票据、单一承兑人这为信用风险定价研究提供了难得的微观数据基础。可以把票据逾期记录构造为信用事件研究事件发生前后该企业关联债券的信用利差变化或者该企业在其他融资渠道上的成本变化。还可以研究票据违约的行业聚集效应和区域传染效应比如同一行业内一家核心企业票据违约后其他企业的票据融资成本是否同步上升。这类研究对理解中国信用市场的风险传导机制有直接帮助。5. 实操中的注意事项与踩坑记录5.1 样本偏差问题你看到的不一定是真实的全貌票据承兑数据虽然已经比大多数公开数据源更细致但它仍然存在样本偏差。最大的偏差来源是披露的自愿性并不是所有票据承兑信息都会被完整披露通常只有以下情况才会进入公开记录——票据发生了逾期、被纳入了监管关注名单、或者承兑人是上市公司等需要履行信息披露义务的主体。换句话说一个没有逾期记录、也不需要公开披露的中小企业它的票据承兑活动可能根本不会出现在数据里。这意味着什么如果你直接把表里的企业集合当作全部票据承兑企业的代表会严重低估正常承兑企业的数量同时高估整体逾期率。处理这个问题我想了两个办法。第一是明确研究边界如果研究的是逾期风险的特征与后果那样本偏差的影响相对可控因为研究样本本身就是“进入披露范围的企业”但如果研究的是票据使用的普遍程度那必须谨慎对待最好能拿到票据市场总量数据做比对校准。第二是尽可能结合其他数据源交叉验证比如票交所发布的整体市场统计数据或者银行端贴现业务量数据用总量去推算覆盖率。5.2 票据状态的时效性问题票据状态字段是判断是否逾期、是否兑付的关键但它的时效性容易被忽视。一张票据到期后如果企业暂时没有兑付系统里可能标记为逾期但过了几天企业补足了资金状态又会更新为已结清。如果做研究时只抓取了一个时间点的快照很多暂时性逾期会被误判为最终违约。处理方式也要看研究问题。如果研究的是“票据违约对企业信用的冲击”那应该关注的是逾期事件是否发生而不是最终是否兑付因为市场的负面反应在逾期发生那一刻就已经产生了。但如果研究的是“企业真实的信用损失”那就应该用最终兑付状态。我建议的做法是把两个口径都构造出来主回归用一个稳健性检验用另一个看结论是否一致。这比在两种口径之间反复纠结更高效。5.3 关联数据的应收账款核验票据数据和应收账款数据结合使用的时候有一个容易踩的坑。很多企业的应收账款里已经包含了收到的票据而且是按票面金额入账的但票据实际上并没有到期兑付。这时候如果直接用应收账款余额加上票据承兑余额来衡量企业的总商业信用敞口就会把同一笔业务重复计算。我之前在做企业流动性压力测试的时候就掉进过这个坑后来改用票据余额占应收账款比例这个相对指标才避免了总量层面的重复计算问题。5.4 跟宏观数据的对接方法如果想把票据承兑数据拉到宏观层面做时间序列分析需要特别注意季节性问题。票据业务有明显的季节性特征季末、年末通常会出现脉冲式的增长这和银行信贷冲量、企业集中结算的周期性行为有关。做年度数据分析时影响不大但做季度或月度分析时必须做季节调整否则趋势项会被季节性波动干扰。5.5 互补数据源的选择票据承兑数据虽然好用但它不是万能的做研究时最好能和其他数据源配合。我常用的互补数据包括三类。第一类是工商注册信息用于补充企业的股东、行业、规模等静态特征。第二类是司法和行政处罚数据用于识别企业是否卷入法律纠纷因为票据逾期和司法诉讼之间有很强的相关性出了票据逾期的企业往往伴随着被起诉的记录。第三类是财务报表数据尤其是现金流量表中的经营性应付项目和“支付的其他与经营活动有关的现金”等明细科目可以和企业票据数据进行交叉验证。这三类数据的组合基本能覆盖从信用事件发生、到企业特征暴露、再到财务后果体现的完整链条。如果你也有票据承兑数据的使用经验我强烈建议做一次这样的多源数据整合很多单看一张表看不出来的规律放到多源数据的框架里立刻清晰了。最后再分享一个小经验拿到任何一张新数据表不要急着跑复杂模型先做“数据体检”——字段覆盖率、异常值分布、时间序列的断档情况、与企业名单的重合度这些基础检查花不了多少时间但能帮你避开后续分析中一半以上的坑。票据承兑数据尤其如此它的口径复杂、来源多元前期多花三十分钟做体检后期能少走三天的弯路。
返回列表