4. 回测数据准备
回测结论是否可信,首先不取决于模型算法,而取决于数据准备是否严谨。LGD(违约损失率)回测与PD回测最大的差异在于:PD只需要判断“是否违约”,而LGD必须同时回答“违约后损失了多少”,这要求数据同时具备违约时点、敞口余额、清收现金流、清收成本、抵押物处置结果等完整链路。数据准备一旦出现口径偏差,后续分层验证与偏差分析都会建立在错误地基上。
一、核心原理:LGD回测的数据闭环
LGD回测的数据准备本质上是在构建一个“违约—清收—损失”的闭环样本。其核心逻辑可以概括为:
- 违约识别:确定哪些客户、哪些债项在观测期内触发了违约定义。
- 敞口锁定:以违约时点(或违约确认时点)的敞口作为LGD分母,避免用清收后的余额倒推。
- 现金流归集:收集违约后所有回收现金流、处置收入、担保代偿等。
- 成本扣减:扣除清收费用、法律费用、处置税费等直接成本。
- 清收期截断:设定合理的清收观察期,未完成清收的样本需做特殊处理。
只有这五个环节的数据都能对齐到同一债项、同一违约事件,LGD才具备可计算性。否则会出现“分母用A时点、分子用B时点”的错配。
二、方法流程:六步完成回测数据准备
- 确定数据来源:核心业务系统提供敞口与违约标识,清收系统提供回收流水,财务系统提供成本与核销数据,担保系统提供抵押物处置信息。
- 定义样本选择规则:明确纳入哪些产品、哪些客户类型、哪些违约年份,排除重组、核销后无清收记录的异常样本。
- 设定时间窗口:划分观测期与清收期,确保违约样本在清收期内有足够长的表现时间。
- 统一违约定义:与PD回测保持一致,通常采用“逾期90天以上”或“实质性债务重组”等监管口径。
- 设计清收期与观测期:观测期用于识别违约,清收期用于观察回收,两者不能重叠混淆。
- 数据质量校验:检查敞口缺失、现金流时间倒挂、成本未分摊、抵押物估值虚高等问题。
三、关键设计:时间窗口、违约定义与清收期
时间窗口设计是LGD回测中最容易被低估的环节。常见做法是:以某一年为违约观测年,向前锁定该年内所有触发违约的债项,向后设置清收观察期(如36个月或60个月)。清收期太短,会高估LGD(因为很多回收还没发生);清收期太长,会引入过多未完成样本,导致回测结果不稳定。
违约定义必须与模型开发阶段完全一致。如果开发时用“逾期90天”,回测时却用“逾期60天”,样本量会虚增,LGD分布也会被拉低。对于零售类资产,还需注意“违约后再次违约”的处理,通常以首次违约事件为准,避免同一债项重复计入。
清收期的截断处理有三种常见策略:
- 完整清收样本:只保留清收期结束后已结清的样本,偏差小但样本量少。
- 固定窗口截断:统一观察固定月数,未回收部分按0回收处理,偏保守。
- 滚动清收曲线:用历史清收曲线外推未完成样本,适合清收周期长的对公资产。
四、案例与清单:对公与零售的差异
以某银行对公贷款组合为例:观测期设为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;
只有通过上述校验的样本,才能进入后续的分层验证与偏差分析。数据准备阶段多花一天,回测结论的可信度就多一分保障。