金融数据基础与缺失值概述

金融数据分析与建模的起点,往往不是华丽的算法或复杂的模型,而是对数据本身质量的深刻理解。在信贷审批、量化交易、风险定价、客户画像等典型金融场景中,数据缺失是最普遍、最棘手的数据质量问题之一。缺失值处理不当,轻则导致模型参数估计有偏,重则引发风险决策失误,造成实质性资金损失。本章作为整个技术手册的基石,将系统梳理金融数据的类型体系,严格定义缺失值的概念,深入剖析缺失机制的三种理论分类(MCAR/MAR/MNAR),并结合银行信贷、证券交易、保险精算等真实业务场景,帮助读者建立一套从“看见缺失”到“理解缺失”再到“应对缺失”的完整认知框架。

金融数据缺失机制全景图 金融数据类型 • 结构化数值型(股价、利率) • 类别型(行业、评级) • 时序型(日频收益率) • 文本型(财报附注) • 稀疏型(交易对手方) → 不同类型缺失影响差异显著 缺失值定义 • 未记录:字段为空/Null • 占位符:-9999, 'N/A' • 隐式缺失:0值代表缺失 • 截断/删失:极端值被剔除 → 识别“假缺失”是关键第一步 缺失机制(Rubin 1976) MCAR MAR MNAR 完全随机缺失 随机缺失 非随机缺失 缺失与观测值 均无关 缺失与其他 观测变量相关 缺失与缺失 值本身相关 金融场景示例映射 信贷:收入字段缺失 风控:抵押物价值缺失 量化:停牌日收益率 保险:理赔金额截断 处理策略(后续章节展开) 删除法 均值/中位数插补 回归插补 多重插补(MICE) 模型法

上图从宏观视角勾勒了金融数据类型、缺失值定义与缺失机制之间的逻辑关系。在后续内容中,我们将逐一拆解每个模块,并深入探讨如何在实际金融项目中识别和应对不同类型的缺失。

2.1 金融数据类型体系

金融数据具有鲜明的行业特征,其类型划分直接影响缺失值处理的策略选择。从数据结构角度,金融数据主要分为以下五大类,每类数据的缺失模式和处理难度截然不同。

数据类型典型字段常见缺失原因缺失影响
结构化数值型股价、利率、贷款金额、信用评分系统故障、人工录入遗漏直接导致模型输入不完整
类别型行业分类、信用评级、地区代码分类标准变更、信息未采集影响分组统计和哑变量编码
时序型日收益率、月度宏观指标停牌、节假日、数据源中断破坏时间序列连续性
文本型财报附注、新闻舆情、客户备注非结构化提取失败影响NLP特征工程
稀疏型交易对手方、担保人信息业务本身不存在该属性需区分“真缺失”与“结构缺失”

值得注意的是,金融数据中还存在一种特殊的“隐式缺失”。例如,在贷款申请表中,申请人若没有信用卡,则“信用卡额度”字段为空,这并非数据缺失,而是业务逻辑上的“不适用”。在数据处理时,必须将此类结构性缺失与随机缺失严格区分,否则会引入严重偏差。

2.2 缺失值的严格定义与识别

在金融语境下,缺失值不能简单等同于“空值”。一个严谨的定义是:缺失值是指本应存在但未被观测、未被记录或无法获取的数据值。这一定义包含三个层次:

  • 物理缺失:数据采集时因设备故障、网络中断等原因未写入,表现为数据库中的NULL。
  • 逻辑缺失:数据存在但被业务规则屏蔽。例如,银行对“反洗钱风险等级”字段设置了权限控制,部分风控人员无法查看,导出数据时该字段为空。
  • 编码缺失:数据被填充为特殊占位符,如-9999、999999、'N/A'、'Unknown'。这类值在统计时若不预处理,会被误认为有效数值参与计算。
风险警示:在金融风控建模中,将“编码缺失”直接作为数值参与逻辑回归,会导致系数估计严重失真。例如,某银行将缺失的“年收入”填充为-9999,模型训练后该特征的权重异常增大,实际应用时误判了大量低收入客户为高风险。务必在数据清洗阶段将占位符统一转换为标准缺失标记。

识别缺失值的标准流程包括:① 使用df.isnull().sum()统计各字段空值数量;② 检查字段的取值分布,查找-9999、0、空字符串等异常占位符;③ 结合业务逻辑判断“0值”是否为有效值(如“逾期天数”为0表示未逾期,而“授信额度”为0可能表示未授信);④ 绘制缺失值矩阵图,观察缺失是否呈现某种规律性分布。

2.3 缺失机制:MCAR / MAR / MNAR 深度解析

Rubin(1976)提出的缺失机制分类是选择插补方法的理论基石。理解这三种机制,决定了我们是应该删除数据、均值插补,还是采用更复杂的模型法。

2.3.1 MCAR(完全随机缺失)

当数据缺失的概率与任何观测变量或未观测变量均无关时,称为MCAR。例如,交易系统因偶发硬件故障导致部分订单记录丢失,这种缺失与订单金额、客户类型、交易时间均无关联。MCAR是最“安全”的缺失类型,因为观测数据仍然是总体的无偏样本。处理上可以直接删除缺失记录,或使用简单的均值插补,不会引入系统性偏差。

2.3.2 MAR(随机缺失)

当数据缺失的概率依赖于其他已观测变量,但与缺失值本身无关时,称为MAR。这是金融场景中最常见的缺失机制。例如,在信贷数据中,年轻客户的“工作年限”字段更容易缺失,而“年龄”是已观测变量。此时,缺失概率与“年龄”相关,但与“工作年限”的具体数值无关。MAR情况下,若直接删除缺失记录,会导致样本偏向年长客户,产生选择偏差。更优的策略是利用年龄、学历等完整变量建立插补模型。

2.3.3 MNAR(非随机缺失)

当数据缺失的概率与缺失值本身的大小或属性相关时,称为MNAR。这是最棘手的情况。例如,在私募基金业绩报送中,业绩差的基金更倾向于不披露净值数据,导致“净值”字段缺失与“净值”本身低相关。又如,在贷款违约预测中,高违约风险的借款人可能故意隐瞒“负债率”信息。MNAR情况下,简单的插补方法会严重低估风险,必须引入外部数据源或构建样本选择模型(如Heckman两阶段模型)进行修正。

判断方法:实践中,可通过“分组对比法”初步判断缺失机制。将数据按缺失标志分为两组,比较其他变量的均值差异。若所有变量均无显著差异,则倾向于MCAR;若某些变量存在显著差异,则可能是MAR;若无法通过观测变量解释缺失规律,则需警惕MNAR。更严谨的做法是使用Little's MCAR检验,其原假设为数据满足MCAR,p值小于0.05则拒绝原假设。

2.4 金融场景案例拆解:信贷申请数据中的缺失机制识别

某股份制银行零售信贷部门在构建“个人消费贷违约预测模型”时,发现训练数据集中“月收入”字段缺失率高达23%。初始团队直接采用均值插补后建模,模型在验证集上的AUC仅为0.68,且“月收入”特征的系数为负,与业务常识相悖。我们介入后进行了系统排查。

关键输入数据:该数据集包含10万条历史申请记录,字段包括年龄、性别、学历、职业、单位性质、月收入、负债率、征信查询次数、违约标签。缺失主要集中在“月收入”和“负债率”两个字段。

分析判断过程:首先,我们绘制了缺失值矩阵,发现“月收入”缺失与“职业”字段高度相关——自由职业者和个体户的缺失率高达45%,而受雇于企事业单位的客户缺失率仅为8%。进一步做Little's MCAR检验,p值小于0.001,强烈拒绝MCAR假设。结合业务逻辑判断,自由职业者收入不稳定,银行客户经理在录入时往往无法获取准确数值,因此该缺失机制更符合MAR——缺失概率依赖于“职业”这一已观测变量。

实际操作步骤:① 放弃均值插补,改用基于逻辑回归的预测均值匹配法(PMM),以年龄、职业、学历、单位性质作为预测变量;② 对“负债率”字段,因其缺失与“月收入”存在联动,采用链式方程多重插补(MICE)同时插补两个变量;③ 插补后重新训练模型,AUC提升至0.74,且“月收入”系数恢复为正,符合业务逻辑。

结果对比与复盘:通过正确识别MAR机制并采用多重插补,模型性能提升约8.8%。复盘经验:在金融建模中,缺失值处理不是“数据清洗”的末端环节,而应前置到特征工程阶段。团队需要与业务人员深度访谈,理解每个字段的采集流程,才能准确判断缺失机制。若盲目使用均值插补,不仅降低模型区分度,更可能扭曲特征与目标变量的真实关系。

2.5 常见误区与总结复盘

在金融数据缺失值处理中,以下误区需要特别警惕:

  • 误区一:将所有缺失值一律视为MCAR。这会导致过度删除数据,损失大量有效信息。例如,在回测量化策略时,若某只股票因停牌导致收益率缺失,直接删除该日数据会破坏投资组合的连续性,产生“幸存者偏差”。
  • 误区二:用0值填充数值型缺失。在金融领域,0往往具有实际业务含义(如“逾期金额为0”表示正常还款),用0填充缺失会引入大量噪声。
  • 误区三:忽视缺失机制对模型可解释性的影响。在监管合规场景下,模型必须可解释。若使用复杂的深度生成模型插补,虽然预测精度高,但难以向监管机构解释特征与风险的关系。
  • 误区四:未区分“不适用”与“缺失”。例如,未婚客户的“配偶收入”字段为空,这是结构性不适用,不应参与插补,而应单独编码为“无配偶”类别。
经验总结:处理金融数据缺失值的核心原则是“先诊断,后处理”。诊断包括三个维度:① 缺失比例(<5%可简单处理,>20%需谨慎建模);② 缺失机制(MCAR/MAR/MNAR);③ 业务含义(真缺失/假缺失/不适用)。只有完成这三个维度的判断,才能选择正确的处理策略。对于MNAR场景,建议优先考虑收集外部补充数据,而非依赖内部插补。