3. 违约定义与口径
在零售信贷PD建模中,违约定义与口径是整条建模链路的“地基”。如果违约事件界定不清、观察期与表现期划分混乱、违约率计算口径前后不一致,后续无论使用逻辑回归、XGBoost还是深度学习,模型结果都难以解释,更无法通过监管验收与业务落地。本节将围绕四个关键问题展开:什么是违约事件、观察期与表现期如何切分、违约率如何计算、常见误区如何复盘。
一、核心原理:违约事件界定
违约事件界定,本质上是回答“什么样的情况算违约”。在零售信贷中,常见界定维度包括逾期天数、债务重组、破产、核销、欺诈等。最常用的是逾期天数口径,例如M1(逾期1-30天)、M2(逾期31-60天)、M3(逾期61-90天)、M3+(逾期90天以上)。巴塞尔协议与国内监管通常将逾期90天以上作为违约的核心标志,同时将“债务人因财务困难发生债务重组”也纳入违约事件。
需要特别强调的是,违约定义不是单一维度,而是事件集合。一个客户可能同时满足“逾期90天以上”和“债务重组”,在建模样本中只能标记为一次违约,避免重复计数。因此,在数据准备阶段必须建立违约事件标志表,按客户、账户、时间三个维度进行去重与合并。
核心原则:违约定义一旦确定,应在整个模型开发、验证、监控周期内保持一致。若因监管要求或业务变化需要调整,必须同步回溯历史数据,重新计算违约率,并记录版本变更。
二、方法流程:观察期、表现期与违约率计算
零售信贷PD建模通常采用观察期+表现期的滚动窗口设计。观察期用于采集客户特征,表现期用于观察是否发生违约。两者之间通常设置一个缓冲期,避免“特征采集时点”与“违约发生时点”重叠导致信息泄露。
典型流程如下:
- 确定观察点:选择某个时间点T作为客户特征快照时点。
- 设置观察期:通常为T之前6-12个月,用于计算历史行为特征,如近6个月平均逾期天数、近12个月查询次数等。
- 设置表现期:通常为T之后12个月,用于观察客户是否发生违约。
- 设置缓冲期:在观察期与表现期之间留出1-3个月,防止特征窗口与表现窗口重叠。
- 计算违约率:违约率 = 表现期内发生违约的客户数 / 观察点有效客户数。
下面是一个典型的参数配置示例,用于定义观察期、表现期与违约口径:
{
"observation_window": "2023-01-01 ~ 2023-06-30",
"buffer_window": "2023-07-01 ~ 2023-07-31",
"performance_window": "2023-08-01 ~ 2024-07-31",
"default_definition": {
"dpd_threshold": 90,
"restructure_flag": true,
"bankruptcy_flag": true,
"writeoff_flag": true
},
"default_rate_formula": "default_count / valid_customer_count"
}
在实际建模中,观察期与表现期的长度选择需要权衡:观察期太短,特征不稳定;表现期太短,违约事件不足;表现期太长,样本陈旧,无法反映当前风险。通常零售信贷PD模型采用12个月表现期,若产品周期较短,也可采用6个月。
三、案例/场景:某消费金融公司的违约口径设计
某消费金融公司开发现金贷PD模型,初始方案将“逾期30天以上”定义为违约。但在业务复盘中发现,部分客户逾期30天后很快还款,实际损失很小;而部分客户虽然未逾期30天,但发生了债务重组,最终损失更大。于是调整违约定义:
- 逾期90天以上,或
- 发生债务重组,或
- 被核销,或
- 被判定为欺诈。
调整后,违约率从原来的8.5%下降到6.2%,但模型区分度(KS)从0.32提升到0.41,说明违约定义更贴近真实风险。同时,该公司将观察期设为6个月,表现期设为12个月,缓冲期1个月,确保特征与表现不重叠。
| 口径版本 | 违约定义 | 违约率 | KS | 业务解释 |
|---|---|---|---|---|
| V1 | 逾期30天以上 | 8.5% | 0.32 | 高估风险,区分度低 |
| V2 | 逾期90天以上或重组/核销/欺诈 | 6.2% | 0.41 | 更贴近真实损失 |
提示:违约率计算时,分母应为“观察点有效客户数”,而非“放款客户数”。有效客户需排除观察期内已注销、已结清且无表现期数据的客户,否则会低估违约率。
四、误区/复盘:常见违约口径陷阱
在实际项目中,违约定义与口径常见以下误区:
- 误区一:违约定义过宽。将逾期1天即视为违约,导致违约率虚高,模型学到大量噪声。
- 误区二:观察期与表现期重叠。特征窗口包含了表现期信息,造成信息泄露,模型离线表现好、上线表现差。
- 误区三:分母口径不一致。建模时用“放款客户数”,监控时用“有效客户数”,导致违约率无法对比。
- 误区四:忽略债务重组与核销。仅看逾期天数,遗漏了非逾期类违约事件,低估真实风险。
- 误区五:违约定义频繁变更。不同版本模型使用不同口径,导致模型无法横向比较与继承。
警告:违约定义一旦确定,必须写入模型开发文档,并在模型监控中持续跟踪。若业务要求调整,需重新计算历史违约率,并评估对PD校准的影响。
复盘建议:建立违约口径字典,明确每个字段的业务含义、计算逻辑、时间窗口与版本号。在模型开发前,先与风险、业务、合规三方确认违约定义,避免后期返工。同时,在样本构建阶段,保留违约事件明细表,便于后续追溯与审计。
最后,违约率计算口径应区分时点违约率与累计违约率。时点违约率用于监控当前风险,累计违约率用于PD模型校准。两者不可混用,否则会导致PD高估或低估。只有在违约事件界定、观察期、表现期、计算口径四者统一的前提下,PD期限结构与生命周期违约率建模才能稳健推进。