3. 数据准备:财务数据源与非财务数据源

做关联交易挖掘,数据准备这一步,我个人的经验是——花多少时间都不为过。你想想看,模型再牛,算法再炫,喂进去的数据是脏的、乱的、缺的,那结果就是垃圾进垃圾出。我在项目里见过太多人,一上来就急着跑模型,结果被数据坑得欲哭无泪。

说白了,数据准备就是打地基。地基不稳,楼盖得再高也得塌。今天我们就聊聊,关联交易分析需要哪些数据源,以及怎么把这些数据洗干净、标准化。

3.1 财务数据源:财报与审计报告

财务数据是关联交易分析的核心。没有财务数据,你根本没法判断交易是否公允、是否存在利益输送。

主要数据源包括:

  • 上市公司年报/半年报/季报:利润表、资产负债表、现金流量表、附注
  • 审计报告:特别是非标意见、关键审计事项(KAM)
  • 关联交易专项公告:定价政策、交易金额、余额
  • 临时公告:重大关联交易、关联方资金占用

我个人习惯,拿到一份财报后,先看三样东西:

  1. 关联交易附注——这里藏着最直接的信息
  2. 审计意见——非标意见是红色警报
  3. 关键审计事项——审计师都盯着的点,你也不能放过

避坑指南:我曾经遇到一个项目,某公司财报里关联交易金额看起来很小,但仔细一查附注,发现大量交易被归类为"日常经营交易"而豁免披露。嗯,这里要注意,豁免不等于不存在。很多关联交易就是钻了这个空子。

3.2 非财务数据源:工商信息、舆情、供应链数据

光看财务数据,你只能看到冰山一角。非财务数据才是真正帮你挖出隐藏关联方的利器。

工商信息数据源:

  • 企业基本信息(股东、高管、注册资本)
  • 股权结构图(穿透到自然人)
  • 董监高任职信息(一人兼任多家公司)
  • 变更记录(股权变更、法人变更)

舆情数据源:

  • 新闻、媒体报道
  • 监管问询函、处罚公告
  • 社交媒体讨论(雪球、股吧)
  • 行业研究报告

供应链数据源:

  • 供应商/客户名单(前五大、前十大)
  • 采购合同、销售合同
  • 物流、仓储数据
  • 招投标信息

为什么会需要这些非财务数据?我举个例子。某公司财报显示,它向一家"非关联方"采购原材料,金额巨大。但一查工商信息,发现这家供应商的法人代表,竟然是该公司财务总监的亲戚。这就是典型的隐性关联方,光看财报根本发现不了。

3.3 数据清洗与标准化

数据源搞定了,接下来就是最磨人的环节——数据清洗。说实话,我做了这么多年风控,80%的时间都花在数据清洗上。这不是夸张,是真的。

常见的数据问题:

问题类型 具体表现 我的处理方式
缺失值 关联交易金额为空、交易对手信息缺失 先查公告补全,补不全的标记为"待核实"
重复值 同一笔交易在多个公告中出现 按交易日期+交易对手+金额去重
格式不一致 "张三" vs "张 三"、"100万" vs "1,000,000" 统一格式,金额转数字,名称去空格
逻辑错误 交易金额为负数、日期晚于当前 人工复核,确认后修正或剔除
编码不统一 同一公司不同数据源用不同代码 建立统一的企业ID映射表

数据标准化的核心步骤:

  1. 实体对齐:把不同数据源中的同一家公司识别出来。比如"阿里巴巴"和"Alibaba Group"要映射到同一个ID。
  2. 金额标准化:统一货币单位(人民币)、统一数量级(万元或元)。
  3. 日期标准化:统一为YYYY-MM-DD格式。
  4. 分类标准化:关联交易类型(购销、资金拆借、担保等)统一编码。
  5. 关联方关系标准化:母子、兄弟、联营、合营等关系统一标签。

我的小技巧:在做实体对齐时,我习惯用"企业名称+法人代表+注册地址"三个字段联合匹配。光靠名称匹配,很容易漏掉那些改过名的公司。我曾经就因为没做地址匹配,漏掉了一个关键的关联方,差点酿成大错。

3.4 知识体系总览

下面这张图,是我自己总结的数据准备阶段的知识体系。你可以把它当作一个检查清单,做数据准备时对照着来,基本不会漏掉什么。

关联交易数据准备知识体系 数据准备 财务数据源 非财务数据源 供应链数据 财报 审计报告 关联交易公告 工商信息 舆情 监管信息 供应商 客户 招投标信息 数据清洗与标准化 缺失值处理 重复值去重 格式统一 实体对齐 逻辑校验 输出:标准化关联交易数据集

重要提醒:数据清洗不是一次性工作。我每次跑完一轮分析,发现异常数据,都会回头再清洗一遍。这是个迭代的过程,别指望一步到位。

3.5 实战小贴士

最后,分享几个我在实战中总结的经验:

  • 先看数据量级:拿到数据后,先跑个describe(),看看最大值、最小值、均值。如果关联交易金额突然暴增,那就要警惕了。
  • 建立数据字典:每个字段的含义、来源、格式,都记录下来。不然过两个月你自己都忘了这个字段是干嘛的。
  • 保留原始数据:清洗后的数据要另存一份,千万别覆盖原始数据。我吃过这个亏,清洗错了想回退,结果原始数据没了,只能重新爬。
  • 自动化清洗脚本:把清洗流程写成脚本,每次有新数据直接跑。别每次都手动操作,效率低还容易出错。

好了,数据准备这块就聊到这儿。数据准备好了,下一节我们就可以开始真正的关联交易挖掘了。


专注资料整理