4. 回测数据准备

回测结论是否可信,首先不取决于模型算法,而取决于数据准备是否严谨。LGD(违约损失率)回测与PD回测最大的差异在于:PD只需要判断“是否违约”,而LGD必须同时回答“违约后损失了多少”,这要求数据同时具备违约时点、敞口余额、清收现金流、清收成本、抵押物处置结果等完整链路。数据准备一旦出现口径偏差,后续分层验证与偏差分析都会建立在错误地基上。

一、核心原理:LGD回测的数据闭环

LGD回测的数据准备本质上是在构建一个“违约—清收—损失”的闭环样本。其核心逻辑可以概括为:

  • 违约识别:确定哪些客户、哪些债项在观测期内触发了违约定义。
  • 敞口锁定:以违约时点(或违约确认时点)的敞口作为LGD分母,避免用清收后的余额倒推。
  • 现金流归集:收集违约后所有回收现金流、处置收入、担保代偿等。
  • 成本扣减:扣除清收费用、法律费用、处置税费等直接成本。
  • 清收期截断:设定合理的清收观察期,未完成清收的样本需做特殊处理。

只有这五个环节的数据都能对齐到同一债项、同一违约事件,LGD才具备可计算性。否则会出现“分母用A时点、分子用B时点”的错配。

二、方法流程:六步完成回测数据准备

  1. 确定数据来源:核心业务系统提供敞口与违约标识,清收系统提供回收流水,财务系统提供成本与核销数据,担保系统提供抵押物处置信息。
  2. 定义样本选择规则:明确纳入哪些产品、哪些客户类型、哪些违约年份,排除重组、核销后无清收记录的异常样本。
  3. 设定时间窗口:划分观测期与清收期,确保违约样本在清收期内有足够长的表现时间。
  4. 统一违约定义:与PD回测保持一致,通常采用“逾期90天以上”或“实质性债务重组”等监管口径。
  5. 设计清收期与观测期:观测期用于识别违约,清收期用于观察回收,两者不能重叠混淆。
  6. 数据质量校验:检查敞口缺失、现金流时间倒挂、成本未分摊、抵押物估值虚高等问题。
建议在数据准备阶段就建立“债项—违约事件—现金流”三级映射表,后续分层验证和偏差分析都直接复用该表,避免反复取数造成口径漂移。

三、关键设计:时间窗口、违约定义与清收期

时间窗口设计是LGD回测中最容易被低估的环节。常见做法是:以某一年为违约观测年,向前锁定该年内所有触发违约的债项,向后设置清收观察期(如36个月或60个月)。清收期太短,会高估LGD(因为很多回收还没发生);清收期太长,会引入过多未完成样本,导致回测结果不稳定。

违约定义必须与模型开发阶段完全一致。如果开发时用“逾期90天”,回测时却用“逾期60天”,样本量会虚增,LGD分布也会被拉低。对于零售类资产,还需注意“违约后再次违约”的处理,通常以首次违约事件为准,避免同一债项重复计入。

清收期的截断处理有三种常见策略:

  • 完整清收样本:只保留清收期结束后已结清的样本,偏差小但样本量少。
  • 固定窗口截断:统一观察固定月数,未回收部分按0回收处理,偏保守。
  • 滚动清收曲线:用历史清收曲线外推未完成样本,适合清收周期长的对公资产。
不要用“核销即损失100%”的简化口径直接回测LGD。核销后仍可能有回收,直接按100%损失会系统性高估LGD,导致资本计提过度保守。

四、案例与清单:对公与零售的差异

以某银行对公贷款组合为例:观测期设为2019年1月至2020年12月,清收期设为违约后48个月。数据来源包括信贷系统(敞口、违约标识)、清收系统(现金回收)、财务系统(诉讼费、律师费)、押品系统(抵押物处置净值)。最终纳入样本1,842笔,剔除重组样本和缺失关键字段样本后剩余1,506笔。

零售信用卡资产的清收期通常更短,一般设为违约后24个月,因为无抵押、清收手段有限,回收集中在前期。下表对比两类资产的数据准备要点:

维度 对公贷款 零售信用卡
数据来源 信贷、清收、财务、押品系统 卡系统、催收系统、核销系统
违约定义 逾期90天或重组 逾期90天或核销
清收期 36~60个月 12~24个月
关键成本 诉讼费、律师费、处置税费 催收外包费、核销成本
常见偏差 抵押物估值虚高、清收期不足 核销后回收未归集、重复计算

五、误区复盘与数据校验

实际项目中,LGD回测数据准备最常见的误区有四个:

  • 敞口时点错配:用期末余额代替违约时点敞口,导致分母偏小、LGD偏高。
  • 回收现金流重复:同一笔回收在清收系统和财务系统各记一次,未去重。
  • 成本未分摊:只扣直接诉讼费,忽略内部清收人力与资金占用成本。
  • 样本选择偏差:只保留已结清样本,剔除了长期未回收样本,低估LGD。

建议在数据准备完成后运行以下校验逻辑,确保样本可用:

-- 校验1:违约时点敞口是否为空
SELECT COUNT(*) FROM lgd_sample WHERE exposure_at_default IS NULL;

-- 校验2:回收现金流是否早于违约日
SELECT COUNT(*) FROM lgd_cashflow
WHERE recovery_date < default_date;

-- 校验3:LGD是否超出[0,1]合理区间
SELECT COUNT(*) FROM lgd_sample
WHERE lgd_value < 0 OR lgd_value > 1;

-- 校验4:清收期不足样本占比
SELECT SUM(CASE WHEN observation_months < 24 THEN 1 ELSE 0 END) * 1.0 / COUNT(*)
FROM lgd_sample;

只有通过上述校验的样本,才能进入后续的分层验证与偏差分析。数据准备阶段多花一天,回测结论的可信度就多一分保障。