4、滚动率分析的数据准备
滚动率分析的准确性高度依赖数据质量与时间窗口的统一定义。本节将详细说明所需数据字段、清洗规则以及逾期状态的时间窗口划分标准,确保后续迁移率计算与预警模型建立在可靠的数据基础上。
4.1 所需数据字段清单
滚动率分析的核心输入是客户-期次-时间三维数据,至少需要包含以下字段:
| 字段类别 | 字段名称 | 字段说明 | 示例值 |
|---|---|---|---|
| 客户标识 | contract_id | 合同唯一编号 | CNT20240001 |
| 时间戳 | obs_date | 观察日期(快照日) | 2024-06-30 |
| 应还信息 | due_date | 当期应还日期 | 2024-06-15 |
| 应还信息 | due_amount | 当期应还金额(元) | 5000.00 |
| 实还信息 | paid_amount | 截至观察日累计实还金额 | 3000.00 |
| 逾期计算 | overdue_days | 截至观察日的逾期天数 | 15 |
| 逾期状态 | overdue_status | 根据逾期天数映射的M状态 | M1 |
| 还款计划 | installment_no | 当前期次编号 | 3 |
| 产品属性 | product_type | 贷款产品类型 | 消费贷 |
字段扩展建议:实际生产环境中建议额外保留
loan_balance(剩余本金)、collection_stage(催收阶段)和 is_extension(是否展期)字段,用于后续分层分析和异常值过滤。
4.2 数据清洗规则
原始数据通常包含噪声,必须经过以下清洗步骤才能用于滚动率计算:
- 重复记录去重:同一合同同一观察日期的多条记录,保留最后更新的一条,其余删除。
- 异常值过滤:
- 逾期天数
overdue_days为负数(提前还款)的记录,标记为 M0 状态。 - 逾期天数超过合同剩余期限的记录,视为数据错误,直接剔除。
- 应还金额
due_amount小于等于 0 的记录,剔除。
- 逾期天数
- 缺失值处理:
paid_amount缺失时,默认填充为 0。overdue_days缺失时,根据obs_date与due_date差值计算补全。
- 状态一致性校验:确保同一合同在连续观察日期的逾期状态不会出现跳跃(如从 M0 直接跳到 M3),若出现则回滚至上一期状态。
- 时间窗口对齐:所有观察日期必须对齐到月末或固定周期日(如每月最后一天),避免因日期偏移导致状态误判。
常见陷阱:展期、借新还旧、债务重组等特殊操作会导致逾期天数重置,这类记录在滚动率分析中应单独标记或剔除,否则会严重低估真实迁移风险。
4.3 时间窗口定义(M0, M1, M2…)
滚动率分析将逾期天数划分为离散的“M状态”,每个状态代表一个逾期阶段。标准定义如下:
| 逾期状态 | 逾期天数范围 | 业务含义 | 预警等级 |
|---|---|---|---|
| M0 | 0 天(含提前还款) | 正常还款或未到期 | 无预警 |
| M1 | 1 ~ 30 天 | 早期逾期,催收黄金期 | 低预警 |
| M2 | 31 ~ 60 天 | 中期逾期,风险上升 | 中预警 |
| M3 | 61 ~ 90 天 | 严重逾期,进入法催阶段 | 高预警 |
| M4+ | 91 天及以上 | 坏账预备,核销候选 | 紧急预警 |
时间窗口的划分直接影响迁移率的计算粒度。建议根据产品周期灵活调整:短期消费贷可细化到 M1~M3,长期房贷可扩展至 M6 甚至 M12。
4.4 时间窗口的行业变体
不同金融机构对 M 状态的定义存在细微差异,以下列出常见变体供参考:
| 机构类型 | M1 起始 | M2 起始 | M3 起始 | M4+ 起始 | 备注 |
|---|---|---|---|---|---|
| 银行信用卡 | 1 天 | 31 天 | 61 天 | 91 天 | 含 3 天宽限期 |
| 消费金融 | 1 天 | 31 天 | 61 天 | 91 天 | 无宽限期 |
| 汽车金融 | 1 天 | 31 天 | 61 天 | 91 天 | 部分含 5 天宽限期 |
| P2P 网贷 | 1 天 | 16 天 | 31 天 | 61 天 | 更严格,加速预警 |
最佳实践:在数据准备阶段,建议将原始逾期天数保留为连续变量,同时生成 M 状态分类变量。这样既支持滚动率分析,也便于后续构建逾期天数回归模型或生存分析模型。
4.5 数据准备流程总结
以下流程图展示了从原始数据到滚动率分析就绪数据的完整链路:
完成上述数据准备后,即可进入下一阶段——计算各 M 状态之间的迁移率矩阵,构建贷后预警模型的核心输入。