4. 信用额度定价核心指标:PD、LGD、EAD 的计算逻辑
信用额度定价的核心在于准确量化风险,而风险量化的三大支柱指标是:违约概率(PD)、违约损失率(LGD) 和 违约风险暴露(EAD)。这三个指标共同构成了预期损失(EL)的计算基础:
预期损失公式: EL = PD × LGD × EAD
在流式决策链路中,每个指标都需要实时计算或动态更新,以反映客户最新的信用状况。下面逐一拆解其计算逻辑与Spark实现要点。
4.1 违约概率(PD)
PD 衡量借款人在未来一定时期内(通常为12个月)发生违约的可能性。在流式场景下,PD 需要根据客户行为数据(如还款记录、交易频次)实时调整。
4.1.1 计算逻辑
- 逻辑回归模型: 使用历史样本训练,输入特征包括征信评分、收入负债比、近期查询次数等,输出0~1之间的概率值。
- 评分卡映射: 将模型输出的概率通过分段函数映射为信用评分,再反查对应PD。
- 实时校准: 在流式管道中,每收到一条新交易或还款事件,触发特征更新,重新计算PD。
4.1.2 Spark 流式实现要点
// 伪代码:使用 Structured Streaming 实时计算 PD
val pdModel = LogisticRegressionModel.load("path/to/model")
val streamingDF = spark.readStream
.format("kafka")
.option("subscribe", "customer_events")
.load()
val featuresDF = streamingDF
.selectExpr("cast(value as string) as json")
.select(from_json($"json", schema).as("data"))
.select(
$"data.customer_id",
assembleFeatures($"data") // UDF 组装特征向量
)
val pdDF = pdModel.transform(featuresDF)
.select($"customer_id", $"probability" as "pd")
流式优化提示: 使用
mapGroupsWithState 维护每个客户的特征状态,避免每次全量重算,降低延迟。
4.2 违约损失率(LGD)
LGD 表示一旦违约,银行可能损失的金额比例(0%~100%)。它取决于抵押品价值、回收流程和优先级。
4.2.1 计算逻辑
- 历史回收率法: LGD = 1 - (回收金额 / 违约时暴露额)。基于同类型产品(如抵押贷、信用贷)的历史回收数据统计。
- 抵押品折价模型: 根据抵押品类型(房产、车辆)和市场波动,动态估算变现折扣率。
- 宏观调整因子: 在经济下行期,LGD 通常上调10%~20%。
4.2.2 产品类型与 LGD 参考
| 产品类型 | 典型 LGD 范围 | 关键影响因素 |
|---|---|---|
| 住房抵押贷款 | 10% - 30% | 房产估值、首付比例 |
| 汽车贷款 | 30% - 50% | 车辆折旧率、回收渠道 |
| 信用卡循环贷 | 70% - 90% | 无抵押、回收成本高 |
| 小微企业信用贷 | 50% - 80% | 担保情况、行业风险 |
4.3 违约风险暴露(EAD)
EAD 指违约发生时,银行面临的风险敞口总额。对于循环额度(如信用卡),EAD 需要估算当前已用额度与未来可能提款的部分。
4.3.1 计算逻辑
- 固定额度产品: EAD = 当前未偿还本金 + 应计利息。
- 循环额度产品: EAD = 当前已用额度 + (授信总额 - 已用额度) × 信用转换系数(CCF)。
- CCF 估算: 基于历史数据,统计违约前客户的平均提款比例,通常为20%~50%。
4.3.2 流式 EAD 更新
// 伪代码:实时计算循环额度 EAD
val eadStream = usageStream
.groupByKey(_.customer_id)
.mapGroupsWithState(GroupStateTimeout.ProcessingTimeTimeout) {
case (cid, events, state) =>
val currentUsage = events.last.amount
val creditLimit = state.getOption.getOrElse(loadLimit(cid))
val ccf = 0.35 // 默认 CCF
val ead = currentUsage + (creditLimit - currentUsage) * ccf
(cid, ead)
}
4.4 三指标联动与预期损失计算
在流式决策链路中,PD、LGD、EAD 并非孤立计算,而是通过一个统一的 Spark 流式管道协同更新:
4.5 流式场景下的关键挑战与应对
| 挑战 | 描述 | Spark 应对方案 |
|---|---|---|
| 特征时效性 | PD 依赖最新行为,延迟过高会导致定价偏差 | 使用 mapGroupsWithState 维护每个客户的最新特征快照 |
| LGD 动态调整 | 抵押品价值随市场波动,需要定期更新 | 旁路广播变量,每日从 Hive 加载最新 LGD 参数表 |
| EAD 高并发 | 循环额度产品每秒可能产生数万笔交易 | 使用 Kafka 分区 + Spark 水位线控制,避免背压 |
| 模型版本管理 | PD 模型需要灰度上线和回滚 | 模型路径作为配置参数,通过 Redis 或 Zookeeper 动态切换 |
注意: 在流式管道中,PD、LGD、EAD 的计算频率可能不同。PD 可以每笔交易更新,LGD 每日更新,EAD 实时计算。务必在 EL 聚合时对齐时间窗口,避免使用不同时间粒度的指标相乘。