返回金融系统设计
高频与风险科学 · 章节

信用风险建模 — 风控科学基础

06-hft-risk-science/04-credit-risk-modeling.md

信用风险建模 — 风控科学基础

系列:高频交易与风控科学基础 · Part B · 第 4 篇
定位:金融架构师/PM 必须掌握的信用风险建模科学
前置:已完成风控引擎系统设计(FIN-DESIGN-03)+ 信贷系统设计(FIN-DESIGN-04)
目标:不需要自己训练模型,但需要能评审建模方案、设计系统架构、理解监管要求
日期:2026-04-13


一、核心概念与直觉

1.1 信用风险是什么

一句话:借出去的钱收不回来的风险。

更精确地说,信用风险是交易对手未能按照合同约定履行义务(还款、交割、担保)的可能性及由此造成的损失。它是银行面临的最大风险类型,通常占银行总风险资本的 60-80%。

类比理解:

你把 100 万借给 10 个人:
├── 9 个人按时还了 → 你收回 90 万 + 利息
├── 1 个人违约了 → 你只收回了 40 万(抵押物变卖)
│
├── 违约概率 PD = 1/10 = 10%
├── 违约损失率 LGD = (100-40)/100 = 60%
├── 违约风险暴露 EAD = 100 万
│
└── 预期损失 EL = PD × LGD × EAD = 10% × 60% × 100 万 = 6 万

1.2 信用风险的三个维度

维度全称含义直觉
PDProbability of Default借款人违约的概率"这个人会不会赖账?"
LGDLoss Given Default违约后损失的比例"赖账了能追回多少?"
EADExposure at Default违约时的风险暴露金额"赖账时还欠多少钱?"

三者的关系:

预期损失 EL = PD × LGD × EAD

这就是银行需要计提的"拨备"(贷款损失准备金)
利润 = 利息收入 - 资金成本 - 运营成本 - 预期损失 - 资本成本

1.3 为什么 PM/架构师需要懂

场景不懂的后果懂了的优势
评审模型方案只看 AUC,忽略稳定性和可解释性能质疑"你的 PSI 多少?WOE 是否单调?"
设计评分系统架构把评分卡当黑箱调用理解特征计算→评分→决策的全链路
理解监管要求被监管问住知道 Basel 对 IRB 方法的具体要求
与建模团队沟通听不懂"分箱""穿越""过拟合"对齐语言,做出正确的架构决策
系统容量规划不知道模型推理的计算量精准评估特征计算和评分服务的资源需求

二、评分卡方法论

面试高频指数:★★★★★
评分卡是信用风险建模中最经典、最实用、面试最高频的知识点。

2.1 逻辑回归为什么是评分卡首选

在所有机器学习算法中,逻辑回归(Logistic Regression)至今仍是信用评分卡的绝对主力。原因:

特性逻辑回归XGBoost深度学习
可解释性每个变量有明确系数和方向需要 SHAP/LIME 辅助黑箱
单调性WOE 编码后天然保证无法保证无法保证
稳定性不容易过拟合容易过拟合极易过拟合
监管友好完全满足部分满足不满足
计算效率毫秒级毫秒级较慢
样本要求中等较多大量

监管的核心要求:模型必须可解释。当模型拒绝一个客户时,银行必须能说清楚"因为你的 X、Y、Z 指标不达标"。逻辑回归的系数天然提供了这种解释。

逻辑回归的数学形式:

P(违约) = 1 / (1 + e^(-z))

其中:z = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ

β₀ = 截距
βᵢ = 第 i 个变量的回归系数
xᵢ = 第 i 个变量的值(经过 WOE 编码)

2.2 WOE (Weight of Evidence) 编码

核心中的核心,面试必考。

2.2.1 什么是 WOE

WOE 是一种将分类变量和连续变量都转换为"证据权重"的编码方式。它来源于信息论,衡量的是一个分箱中"好客户"和"坏客户"的分布差异。

WOE_i = ln(好客户占比_i / 坏客户占比_i)

其中:
好客户占比_i = 第 i 箱的好客户数 / 总好客户数
坏客户占比_i = 第 i 箱的坏客户数 / 总坏客户数

直觉理解

WOE > 0 → 这个分箱好人多于坏人 → "正面证据"
WOE = 0 → 好人坏人比例与总体一致 → "无证据"
WOE < 0 → 这个分箱坏人多于好人 → "负面证据"

2.2.2 完整的计算示例

假设有 1000 个客户,其中 800 个好客户(未违约),200 个坏客户(违约)。按年龄分箱后:

年龄分箱    好客户  坏客户  好占比         坏占比         WOE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
18-25岁     80      60    80/800=0.100   60/200=0.300   ln(0.100/0.300) = -1.099
26-35岁     200     60    200/800=0.250  60/200=0.300   ln(0.250/0.300) = -0.182
36-45岁     240     40    240/800=0.300  40/200=0.200   ln(0.300/0.200) = +0.405
46-55岁     200     30    200/800=0.250  30/200=0.150   ln(0.250/0.150) = +0.511
56岁以上     80      10    80/800=0.100   10/200=0.050   ln(0.100/0.050) = +0.693
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
合计         800     200   1.000          1.000

解读

  • 18-25 岁 WOE = -1.099 → 这个年龄段坏客户比例远高于平均,信用风险高
  • 56 岁以上 WOE = +0.693 → 这个年龄段好客户比例高,信用风险低
  • WOE 从低到高单调递增 → 年龄越大越安全(在这个例子中)

2.2.3 WOE 编码的五大优点

优点 1:自动处理缺失值
├── 缺失值单独成一个分箱
├── 缺失值也有自己的 WOE 值
└── 不需要额外的缺失值填充策略

优点 2:保证单调性
├── 分箱后可以手动调整确保 WOE 单调
├── 单调性意味着"变量越大(或越小),风险越高(或越低)"
└── 这是监管对评分卡的基本要求

优点 3:消除量纲差异
├── 所有变量都被转换为 WOE 值(对数尺度)
├── 不需要标准化或归一化
└── 不同变量之间直接可比

优点 4:自动处理异常值
├── 极端值被归入最高/最低分箱
├── WOE 值是分箱级别的
└── 个别异常值不影响结果

优点 5:提升逻辑回归性能
├── WOE 本身就是对数odds的差异
├── 与逻辑回归的 log-odds 天然契合
└── 数学上可以证明,WOE编码后逻辑回归等价于朴素贝叶斯

2.3 IV (Information Value) — 特征筛选

IV 衡量一个变量对区分好坏客户的信息量,是评分卡开发中最重要的特征筛选指标。

2.3.1 公式

IV = Σ (好占比_i - 坏占比_i) × WOE_i

展开:
IV = Σ (好占比_i - 坏占比_i) × ln(好占比_i / 坏占比_i)

沿用上面的年龄例子:

分箱         好占比   坏占比   差值      WOE      贡献
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
18-25岁      0.100   0.300   -0.200   -1.099   0.220
26-35岁      0.250   0.300   -0.050   -0.182   0.009
36-45岁      0.300   0.200    0.100    0.405   0.041
46-55岁      0.250   0.150    0.100    0.511   0.051
56岁以上     0.100   0.050    0.050    0.693   0.035
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                                     IV总计 = 0.356

年龄的 IV = 0.356,属于"强预测力"变量。

2.3.2 IV 判断标准

IV 范围预测力决策
< 0.02无预测力剔除
0.02 - 0.10谨慎使用
0.10 - 0.30中等优先选入
0.30 - 0.50选入但注意过拟合
> 0.50过强可能存在信息泄露/过拟合,必须排查

面试陷阱:IV > 0.5 不一定是好事!可能意味着:

  • 该变量本身就是目标变量的近似(如"是否逾期过"用来预测"是否会逾期")
  • 存在特征穿越(使用了未来信息)
  • 样本选择偏差导致的虚假相关

2.3.3 IV 与信息增益的关系

IV 本质上是 KL 散度(Kullback-Leibler Divergence)的对称版本:

KL(好||坏) = Σ 好占比_i × ln(好占比_i / 坏占比_i)   → 不对称
KL(坏||好) = Σ 坏占比_i × ln(坏占比_i / 好占比_i)   → 不对称

IV = KL(好||坏) + KL(坏||好)   → 对称的"距离"

信息增益(Information Gain)衡量的是分箱后目标变量熵的减少量,与 IV 高度正相关,但 IV 的优势在于:

  • 数值直觉更好(有明确的阈值标准)
  • 与 WOE 天然配合
  • 在信用风险领域更通用

2.4 分箱策略 (Binning)

分箱是 WOE 编码的前提。好的分箱直接决定评分卡的质量。

2.4.1 分箱方法

方法原理优点缺点
等频分箱每箱样本数相同简单、每箱样本充足不考虑目标变量
等距分箱每箱区间宽度相同简单、可解释可能某些箱样本极少
卡方分箱 (ChiMerge)合并卡方值最小的相邻箱考虑目标变量容易过拟合
MDLP最小描述长度原则自动确定箱数实现较复杂
最优分箱 (决策树)用决策树分裂点作为分箱边界最大化信息增益需要后处理保证单调

2.4.2 分箱原则

原则 1:每箱样本 > 5%
├── 保证统计显著性
├── 样本太少的箱 WOE 不稳定
└── 与邻近箱合并

原则 2:WOE 单调
├── 单调递增或单调递减
├── 非单调时需要合并箱
└── 这是监管的强制要求(确保逻辑合理)

原则 3:箱数 3-8 个
├── 太少 → 信息损失大
├── 太多 → 过拟合风险
└── 实践中 4-6 箱最常见

原则 4:相邻箱 WOE 差异足够大
├── 差异太小 → 合并
├── 经验阈值:|ΔWOE| > 0.05
└── 合并后重新计算 WOE

原则 5:特殊值单独成箱
├── 缺失值 → 单独一箱
├── 0 值(如果有特殊业务含义) → 单独一箱
└── 异常值 → 归入最高/最低箱

2.5 评分映射

逻辑回归的输出是概率值 P(违约),但最终呈现给业务和客户的是一个"分数"。需要做映射。

2.5.1 映射公式

Score = A - B × ln(odds)

其中:
odds = P(违约) / P(不违约) = P / (1-P)
ln(odds) = β₀ + β₁×WOE₁ + β₂×WOE₂ + ... + βₙ×WOEₙ

A = 基准分 + PDO × ln(基准odds) / ln(2)
B = PDO / ln(2)

2.5.2 标准评分卡参数

行业惯例:

基准分 = 600 分(当 odds = 50:1 时,即 PD = 1/51 ≈ 2%)
PDO = 20(Points to Double the Odds,odds 翻倍时分数减少 20)

代入公式:
B = 20 / ln(2) = 28.85
A = 600 + 28.85 × ln(50) = 600 + 112.88 = 712.88

验证:
- odds = 50:1 → Score = 712.88 - 28.85 × ln(50) = 712.88 - 112.88 = 600 ✓
- odds = 100:1 → Score = 712.88 - 28.85 × ln(100) = 712.88 - 132.88 = 580
  (odds 翻倍,分数降低 20) ✓
- odds = 25:1 → Score = 712.88 - 28.85 × ln(25) = 712.88 - 92.88 = 620
  (odds 减半,分数增加 20) ✓

2.5.3 评分 → PD 的映射

Score → odds → PD

odds = e^((A - Score) / B)
PD = odds / (1 + odds)

示例(基准分 600,PDO=20):
Score=600 → odds=50   → PD=1.96%
Score=620 → odds=25   → PD=3.85%
Score=580 → odds=100  → PD=0.99%
Score=700 → odds=1.62 → PD=38.2%
Score=500 → odds=1543 → PD=0.065%

业务含义:分数越高,PD 越低,信用越好。一般 600 分以上通过,500 以下拒绝,中间人审。

2.6 完整的评分卡开发流程

┌──────────────────────────────────────────────────────────┐
│                   评分卡开发全流程                         │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  ① 数据准备                                              │
│  ├── 定义样本窗口                                        │
│  │   ├── 观察期(Observation Window):收集特征的时间段    │
│  │   ├── 表现期(Performance Window):观察违约的时间段    │
│  │   └── 样本期(Sample Window):观察期结束点             │
│  │                                                       │
│  │   示例:                                               │
│  │   观察期 ────────►│ 表现期 ────────────►               │
│  │   2024.01-2024.06 │ 2024.07-2025.06                   │
│  │   收集特征数据     │ 观察是否违约(12个月)              │
│  │                                                       │
│  ├── 排除样本                                            │
│  │   ├── 已拒绝的客户(拒绝推断 Reject Inference)        │
│  │   ├── 政策性拒绝(如黑名单)                           │
│  │   └── 表现期不足的客户                                 │
│  │                                                       │
│  └── 定义好坏标签                                        │
│      ├── 好客户:从未逾期 或 最大逾期 < 30天              │
│      ├── 坏客户:曾经逾期 ≥ 90天(M3+)                  │
│      └── 灰色客户:30-89天逾期,通常排除                  │
│                                                          │
│  ② 探索性分析(EDA)                                     │
│  ├── 好坏客户分布                                        │
│  ├── 各变量的缺失率统计                                   │
│  ├── 各变量的分布(直方图/箱线图)                        │
│  └── 好坏客户在各变量上的差异                             │
│                                                          │
│  ③ 变量筛选(四步法)                                    │
│  ├── Step 1:缺失率 > 70% 的变量剔除                     │
│  ├── Step 2:IV < 0.02 的变量剔除                        │
│  ├── Step 3:高相关变量(|r| > 0.7)保留 IV 高的          │
│  └── Step 4:VIF > 10 的变量逐步剔除                     │
│                                                          │
│  ④ WOE 转换                                             │
│  ├── 对每个入选变量进行分箱                               │
│  ├── 计算每箱的 WOE 值                                   │
│  ├── 检查 WOE 单调性,不单调则合并箱                     │
│  └── 将原始值替换为 WOE 值                               │
│                                                          │
│  ⑤ 逻辑回归训练                                         │
│  ├── 训练集/测试集/验证集 = 60/20/20                     │
│  ├── 时间切分(不是随机切分!)                           │
│  ├── 拟合逻辑回归,得到系数 β                            │
│  └── 检查系数方向是否合理(不合理则排查)                 │
│                                                          │
│  ⑥ 评分映射                                             │
│  ├── 确定基准分和 PDO                                    │
│  ├── 计算 A 和 B                                        │
│  ├── 将每个变量的每个分箱映射为分值                       │
│  └── 总分 = 基准分 + 各变量分值之和                      │
│                                                          │
│  ⑦ 模型验证                                             │
│  ├── 区分度:KS > 0.20 / AUC > 0.70                     │
│  ├── 校准度:预测 PD vs 实际违约率                        │
│  ├── 排序性:Lift 曲线                                    │
│  ├── 稳定性:PSI < 0.10(训练集 vs 测试集)              │
│  └── 交叉验证:5-fold 结果一致性                         │
│                                                          │
│  ⑧ 模型部署                                             │
│  ├── 评分卡编码为规则引擎可执行的格式                     │
│  ├── 影子模式运行 2-4 周                                 │
│  ├── 与现有模型 A/B 对比                                 │
│  └── 灰度上线                                            │
│                                                          │
│  ⑨ 模型监控                                             │
│  ├── PSI(Population Stability Index)                   │
│  │   ├── PSI < 0.10 → 稳定                              │
│  │   ├── 0.10-0.25 → 需要关注                           │
│  │   └── > 0.25 → 需要重新开发                          │
│  ├── CSI(Characteristic Stability Index)               │
│  │   └── 监控每个变量的分布变化                           │
│  ├── KS/AUC 趋势                                        │
│  │   └── 月度计算,持续下降则触发重建                     │
│  └── Vintage 分析                                        │
│      └── 按放款月份跟踪后续违约率演变                     │
│                                                          │
└──────────────────────────────────────────────────────────┘

面试关键点:时间切分而不是随机切分!信用风险有强烈的时间效应(经济周期),随机切分会导致数据泄露,模型在测试集上表现虚高。


三、A卡/B卡/C卡

信用风险管理贯穿贷款生命周期的每个阶段,对应三种评分卡:

3.1 A卡 (Application Scorecard) — 申请评分

触发时机:客户提交贷款申请时
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

输入数据:
├── 申请信息:年龄/学历/职业/收入/住房
├── 征信数据:历史违约/负债/查询次数
├── 外部数据:运营商/社保/公积金
└── 设备数据:设备指纹/IP/位置

输出:
├── 信用评分(300-900 分)
└── 决策建议:
    ├── Score > 650 → 自动通过
    ├── 550 < Score < 650 → 人工审核
    └── Score < 550 → 自动拒绝

特点:
├── 冷启动问题:新客户没有行为数据
├── 数据有限:只有申请时点的信息
├── 对外部数据依赖强:征信是核心
└── 拒绝推断问题:被拒绝的客户无法观察表现

拒绝推断(Reject Inference)

这是 A 卡开发中的经典难题。被拒绝的客户无法观察到"如果放贷了会不会违约",这造成了样本选择偏差。

常用方法:
├── 简单分配法:假设所有拒绝客户都是坏客户 → 太悲观
├── 外推法:用现有模型给拒绝客户评分 → 循环论证
├── 模糊增强法:按概率分配好坏标签 → 中庸方案
└── 实际做法:定期做 RCT(随机批准一小部分拒绝客户)→ 最科学但成本高

3.2 B卡 (Behavioral Scorecard) — 行为评分

触发时机:贷后持续监控,通常月度更新
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

输入数据:
├── 还款行为:是否按时还款/最低还款/提前还款
├── 用信行为:额度使用率/取现频率/消费类别
├── 账户变动:余额变化/新开卡/销户
└── 交易行为:交易时间/金额/频率模式

输出:
├── 行为评分(动态更新)
└── 决策建议:
    ├── 高分 → 提额/交叉销售/利率优惠
    ├── 中分 → 维持现状
    └── 低分 → 降额/冻结/预催收

特点:
├── 数据丰富:有 3-12 个月的行为数据
├── 预测力更强:行为比申请信息更有预测力
├── 动态调整:评分随行为变化而变化
└── 样本充足:不存在拒绝推断问题

常见 B 卡变量:
├── M1-M12 各月还款情况(按时/最低/逾期/未还)
├── 最近 3 个月平均额度使用率
├── 最近 6 个月逾期次数
├── 还款金额/账单金额比值趋势
├── 取现笔数/消费笔数比值
└── 还款日距账单日的天数(越早还越好)

3.3 C卡 (Collection Scorecard) — 催收评分

触发时机:客户逾期后
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

输入数据:
├── 逾期信息:逾期天数/逾期金额/历史逾期
├── 联系情况:是否接电话/是否承诺还款
├── 还款能力:收入/负债/资产
└── 还款意愿:沟通态度/是否主动联系

输出:
├── 催收优先级评分
└── 催收策略分配:
    ├── 高回收概率 → IVR 自动语音提醒
    ├── 中回收概率 → 人工电话催收
    ├── 低回收概率 → 委外催收/法催
    └── 极低回收概率 → 核销准备

特点:
├── 样本量少:逾期客户占比小
├── 时效性强:越早催收效果越好
├── 策略差异大:不同阶段催收手段不同
└── 成本约束:催收成本不能超过预期回收

3.4 A/B/C 卡对比

维度A 卡B 卡C 卡
阶段贷前贷中贷后
频率一次性月度逾期后
数据申请+征信行为数据催收数据
预测力KS 0.25-0.40KS 0.40-0.60KS 0.30-0.45
目标准入/定价预警/调额催收策略
样本有偏(拒绝推断)充足较少
更新频率年度重建半年重建季度重建

四、PD-LGD-EAD 框架

4.1 PD (Probability of Default)

4.1.1 期限结构

1 年 PD:最常用,Basel 标准计量周期
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
未来 12 个月内违约的概率

多年 PD(Term Structure):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
第 1 年 PD = 2%
第 2 年 PD = 3%(条件:第 1 年未违约)
第 3 年 PD = 4%

累计 PD(3年) = 1 - (1-2%)(1-3%)(1-4%) = 1 - 0.9118 = 8.82%

Lifetime PD:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
贷款存续期内的累计违约概率
IFRS9(ECL 模型)要求对减值资产计算 Lifetime PD

4.1.2 TTC vs PIT

类型全称含义用途
TTCThrough-the-Cycle穿越周期的平均 PDBasel 资本计量
PITPoint-in-Time当前时点的 PDIFRS9 拨备计量
直觉理解:
├── TTC PD:无论经济好坏,这个客户的"长期平均"违约率是多少
├── PIT PD:在当前经济环境下,这个客户未来 12 个月的违约率是多少
│
├── 经济繁荣时:PIT PD < TTC PD
├── 经济衰退时:PIT PD > TTC PD
│
└── TTC 更稳定,PIT 更敏感

4.1.3 迁移矩阵

迁移矩阵描述客户从一个信用等级迁移到另一个等级的概率。

              评级 →  AAA    AA     A      BBB    BB     违约
评级 ↓
AAA                   90.0%  8.0%   1.5%   0.3%   0.1%   0.1%
AA                    1.0%   88.0%  8.0%   2.0%   0.5%   0.5%
A                     0.1%   2.0%   87.0%  8.0%   2.0%   0.9%
BBB                   0.0%   0.3%   4.0%   84.0%  8.0%   3.7%
BB                    0.0%   0.1%   0.5%   6.0%   78.0%  15.4%

应用:
├── 读法:BBB 级客户有 3.7% 的概率在 1 年内违约
├── 多年 PD:对迁移矩阵做矩阵乘法(M^n 得到 n 年迁移概率)
├── 信用组合管理:预测组合质量变化
└── 压力测试:在压力情景下调整迁移概率

4.2 LGD (Loss Given Default)

LGD = 1 - 回收率 (Recovery Rate)

4.2.1 影响因素

因素影响方向说明
抵押物类型有抵押 → LGD 低房产 20-30% / 车辆 30-50% / 信用 60-80%
抵押物价值波动房价下跌 → LGD 升高2008 年金融危机的教训
债务优先级优先级高 → LGD 低优先债 vs 次级债 vs 股权
催收效率催收好 → LGD 低内部催收 vs 委外 vs 法催
经济周期衰退 → LGD 升高Downturn LGD 概念
行业重资产行业 → LGD 低有形资产可变卖
地区司法效率高 → LGD 低法律执行环境差异

4.2.2 Downturn LGD

Basel 要求使用"经济下行期的 LGD",而不是历史平均 LGD。

为什么?
├── 经济下行时,违约数量增加
├── 同时,抵押物价值下降
├── 催收效率也下降(催收资源不够)
├── 导致 LGD 显著高于平常
│
├── 历史平均 LGD:35%
├── Downturn LGD:可能达到 50-60%
│
└── 如果用平均 LGD 计算资本,会严重低估风险

4.3 EAD (Exposure at Default)

4.3.1 表内与表外

表内资产(已提用的贷款):
EAD = 当前余额
└── 直观,就是现在欠多少钱

表外资产(未使用的额度、担保等):
EAD = 当前余额 + CCF × 未使用额度

CCF (Credit Conversion Factor):
├── 含义:违约前客户会把多少未使用额度用掉
├── 直觉:客户在违约前往往会"把能借的都借了"
│
├── 监管标准法 CCF 值:
│   ├── 不可撤销承诺:75%
│   ├── 有条件可撤销:0-20%
│   └── 信用证/保函:20-50%
│
└── 内部估计法:用历史数据统计实际 CCF

4.3.2 CCF 估计示例

客户 A:信用卡额度 10 万,当前余额 3 万
├── 未使用额度 = 10 - 3 = 7 万
├── 假设 CCF = 60%(信用卡经验值较高)
├── EAD = 3 + 0.6 × 7 = 7.2 万
│
└── 含义:如果这个客户违约,预计他违约时会欠 7.2 万
    (因为他在违约前很可能把剩余额度用掉大部分)

4.4 预期损失与非预期损失

预期损失 EL = PD × LGD × EAD
├── 这是"平均"会损失多少
├── 银行用拨备(贷款损失准备金)覆盖
└── 反映在利率定价中(利率 > 资金成本 + 运营成本 + EL)

非预期损失 UL = f(PD, LGD, EAD, 相关性)
├── 这是损失偏离平均值的幅度
├── 银行用资本(自有资金)覆盖
└── 这就是"资本充足率"的来源

极端损失(压力损失)
├── 超出非预期损失的部分
├── 靠压力测试评估
└── 需要应急资本缓冲

直觉类比:

你开一家保险公司:
├── 预期赔付 = 保费定价的基础(你知道平均要赔多少)
├── 非预期赔付 = 你的储备金要准备的额度(万一某年赔得特别多)
└── 极端赔付 = 再保险覆盖的部分(比如百年一遇的大灾)

五、Basel 框架与压力测试

5.1 Basel III 核心思想

Basel 协议是银行业监管的全球标准,核心目标是确保银行持有足够的资本来覆盖风险。

三大支柱:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
支柱一:最低资本要求
├── 信用风险资本
├── 市场风险资本
├── 操作风险资本
└── 资本充足率 = 资本 / 风险加权资产 ≥ 8%

支柱二:监管审查
├── 监管机构对银行风险管理的评估
├── ICAAP(内部资本充足性评估程序)
└── 压力测试要求

支柱三:市场纪律
├── 信息披露要求
├── 风险信息透明化
└── 市场参与者监督

5.2 标准法 vs IRB 方法

维度标准法 (SA)初级 IRB (F-IRB)高级 IRB (A-IRB)
PD监管指定(按外部评级)银行自估银行自估
LGD监管指定(45%/75%)监管指定银行自估
EAD监管指定(CCF 固定)监管指定银行自估
资本节约最少中等最多
实施难度
数据要求中(PD 需 5 年)高(LGD/EAD 需 7 年)

架构师需要知道的:如果银行要从标准法迁移到 IRB,需要建设完整的 PD/LGD/EAD 模型体系,以及配套的数据仓库、模型管理平台、报表系统。这是一个持续 2-3 年的大型项目。

5.3 资本充足率

资本充足率 = 资本 / 风险加权资产 (RWA)

Basel III 要求:
├── 核心一级资本充足率 ≥ 4.5%
├── 一级资本充足率 ≥ 6.0%
├── 总资本充足率 ≥ 8.0%
│
├── 储备资本缓冲 (Conservation Buffer):+2.5%
├── 逆周期资本缓冲 (Countercyclical Buffer):0-2.5%
├── 系统重要性银行附加资本 (G-SIB/D-SIB):+1-3.5%
│
└── 实际要求:大型银行通常需要 13-15% 的总资本充足率

RWA 计算(标准法简化示例):
├── 政府债券:RW = 0%(零风险权重)
├── 银行同业:RW = 20-50%
├── 优质房贷:RW = 35%
├── 一般企业贷:RW = 100%
├── 逾期贷款:RW = 150%
│
└── RWA = Σ (贷款金额 × 风险权重)

5.4 压力测试

5.4.1 情景设计

情景GDP 增长失业率房价变化说明
基准+5.0%5.0%+3%正常经济环境
轻度+2.0%7.0%-5%经济放缓
中度0%9.0%-15%经济衰退
重度-3.0%12.0%-30%严重衰退(类 2008)
极端-6.0%15.0%-50%大萧条级别

5.4.2 压力传导链

宏观经济恶化
    │
    ▼
PD 上升(失业→还不起钱)
LGD 上升(房价跌→抵押物缩水)
    │
    ▼
预期损失 EL 大幅增加
    │
    ▼
拨备不足 → 需要补提拨备 → 利润下降
    │
    ▼
资本充足率下降(分子减少 + 分母 RWA 增加)
    │
    ▼
是否仍满足监管要求?
├── 是 → 通过压力测试
└── 否 → 需要补充资本/缩减资产/停止分红

5.4.3 逆向压力测试

正向压力测试:给定情景 → 计算损失
逆向压力测试:给定损失 → 反推需要什么情景

示例:
├── "什么经济条件下,我们的资本充足率会跌破 8%?"
├── 反推得到:GDP 需要下跌 4.5%,失业率达到 11%
├── 然后评估:这种情景在未来 1 年内的发生概率有多大?
│
└── 价值:识别银行的"死亡线",提前准备应急方案

六、机器学习在信用风险中的应用

6.1 XGBoost/LightGBM vs 逻辑回归

维度逻辑回归XGBoost/LightGBM
AUC/KS0.70-0.800.75-0.85(通常高 3-5%)
可解释性系数直接解释需要 SHAP/LIME
特征工程需要大量手工(WOE/分箱)自动发现交互特征
过拟合不易需要调参控制
训练速度较快
单调性WOE 保证需要约束
监管接受度完全接受有条件接受

实际做法(业界主流)

方案 1:逻辑回归主模型 + XGBoost 挑战模型
├── 主模型用逻辑回归,满足监管
├── XGBoost 作为 Challenger,对比性能差异
└── 如果差异大,分析 XGBoost 发现了哪些逻辑回归遗漏的特征交互

方案 2:XGBoost 筛选特征 → 逻辑回归建模
├── 用 XGBoost 的 feature importance 初步筛选
├── 然后用筛选出的特征做 WOE+逻辑回归
└── 兼顾性能和可解释性

方案 3:可解释的梯度提升(前沿方向)
├── EBM(Explainable Boosting Machine)
├── 单特征和双特征交互的加法模型
├── 兼顾了性能和可解释性
└── 微软 InterpretML 库

6.2 SHAP/LIME 增加可解释性

当使用复杂模型时,SHAP 和 LIME 提供了事后解释的能力。

SHAP(SHapley Additive exPlanations):
├── 基于博弈论的 Shapley 值
├── 每个特征对预测的贡献值
├── 全局解释(特征重要性排序)
├── 局部解释(单个客户为什么被拒绝)
│
│   示例:客户 A 被拒绝,SHAP 解释:
│   ├── 收入低:-0.15(最大负面因素)
│   ├── 多头借贷:-0.12
│   ├── 年龄:+0.05(正面因素)
│   ├── 有房产:+0.08
│   └── 最终预测:基准 + 各因素 = 拒绝
│
└── 监管价值:能回答"为什么拒绝这个客户"

LIME(Local Interpretable Model-agnostic Explanations):
├── 在预测点附近拟合一个线性模型
├── 用局部线性模型近似复杂模型的行为
├── 比 SHAP 更快,但理论基础不如 SHAP 严谨
└── 适用于需要快速解释的在线场景

6.3 深度学习的有限应用

深度学习在信用风险的表格数据上并不占优。但在以下场景有价值:

场景 1:非结构化数据
├── 文本数据:贷款申请描述、催收通话记录
├── 用 BERT/GPT 提取文本特征
└── 作为评分卡的辅助输入

场景 2:在线行为序列
├── 用户在 APP 上的操作序列
├── 浏览→点击→停留→退出 的时序模式
├── LSTM/Transformer 建模
└── 识别异常行为模式

场景 3:图像数据
├── 证件照 OCR + 活体检测
├── 营业执照真伪检测
└── CNN 处理

注意:这些都是作为辅助特征输入评分卡,而不是替代评分卡。

七、工程落地要点

7.1 评分卡系统架构

┌─────────────────────────────────────────────────────────┐
│                    评分卡系统架构                          │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   数据层        特征层         评分层       决策层        │
│                                                         │
│   ┌─────┐     ┌──────┐     ┌──────┐    ┌──────┐       │
│   │征信  │──→ │特征   │──→ │评分   │──→│决策   │       │
│   │数据  │    │计算   │    │引擎   │   │引擎   │       │
│   └─────┘    │引擎   │    │       │   │       │       │
│   ┌─────┐    │       │    │ 评分卡 │   │ 策略  │       │
│   │申请  │──→│       │    │ 配置  │   │ 配置  │       │
│   │数据  │    │       │    │       │   │       │       │
│   └─────┘    └──────┘    └──────┘   └──────┘       │
│   ┌─────┐        │            │          │             │
│   │行为  │────────┘            │          │             │
│   │数据  │                     ▼          ▼             │
│   └─────┘              ┌──────────────────┐            │
│                         │   监控 & 报表     │            │
│                         │ PSI/CSI/KS/AUC  │            │
│                         └──────────────────┘            │
│                                                         │
└─────────────────────────────────────────────────────────┘

关键设计决策:
├── 特征计算引擎:实时(<50ms)vs 准实时(<5min)vs 离线(T+1)
│   ├── A 卡特征:大部分准实时即可(征信查询 2-5 秒)
│   ├── B 卡特征:离线批量计算,每日更新
│   └── 实时特征:仅少量关键指标(如当日申请次数)
│
├── 评分引擎:
│   ├── 评分卡配置化:分箱边界+WOE 值+系数存储在配置中
│   ├── 多版本并存:Champion 模型 + 1-2 个 Challenger
│   └── 热更新:新评分卡上线不需要重启服务
│
└── 决策引擎:
    ├── 策略编排:评分 → 策略分支 → 准入/定价/额度
    ├── 与风控引擎(FIN-DESIGN-03)集成
    └── 策略灰度:新策略按比例切流量

7.2 模型版本管理 (Champion-Challenger)

Champion-Challenger 框架:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Champion(冠军模型):
├── 当前生产环境使用的模型
├── 所有客户使用该模型决策
└── 经过充分验证和监管审批

Challenger(挑战者模型):
├── 新开发的候选模型
├── 影子模式:计算评分但不参与决策
├── A/B 测试:小流量(5-10%)使用新模型决策
└── 对比指标:AUC/KS/PSI/业务指标(通过率/坏账率)

切换决策:
├── Challenger 在影子模式下稳定运行 4-8 周
├── 各项指标持续优于 Champion
├── 通过模型委员会评审
├── 获得监管审批(如果是重大变更)
├── 灰度切换:10% → 30% → 50% → 100%
└── 保留回滚能力(至少保留 2 个历史版本)

7.3 模型监控报表

报表频率内容触发线
PSI 报告月度评分分布稳定性PSI > 0.10 预警,> 0.25 重建
CSI 报告月度每个变量的分布稳定性单变量 CSI > 0.25 排查
KS/AUC 趋势月度模型区分度变化KS 连续 3 月下降 > 5%
Vintage 分析月度按放款月份跟踪违约率某月份违约率异常偏高
Lift 报告季度分段通过率和坏账率Lift 比率下降
拒绝分析季度被拒客户的特征分析拒绝率异常变化
完整验证年度全面回测 + 基准测试年度必做

7.4 与已有系统设计的关联

与 FIN-DESIGN-03(风控引擎)的关系:
├── 评分卡是风控引擎的"一个决策节点"
├── 风控引擎编排:规则检查 → 名单过滤 → 评分卡 → ML 模型 → 最终决策
├── 评分卡的特征计算复用风控引擎的特征存储
└── 模型版本管理可以复用风控引擎的灰度发布机制

与 FIN-DESIGN-04(信贷系统)的关系:
├── A 卡嵌入信贷审批流程
├── B 卡驱动贷后管理(调额/预警)
├── C 卡驱动催收策略
├── 评分结果影响额度计算和利率定价
└── Vintage 分析数据来自信贷系统的还款记录

八、常见误区

误区 1:"AUC 越高越好"

真相:稳定性比 AUC 更重要

原因:
├── AUC 从 0.72 提到 0.75,可能只是过拟合了
├── 如果 PSI 从 0.05 变成 0.20,说明模型不稳定
├── 不稳定的模型上线后会快速失效
│
├── 评分卡的本质是"排序"而非"精确预测"
│   ├── 只要好客户的评分 > 坏客户的评分,就足够了
│   └── PD 的绝对值可以通过校准调整
│
└── 实际优先级:稳定性 > 区分度 > 精确度

误区 2:"特征越多越好"

真相:多重共线性会导致系数不稳定

问题:
├── 高度相关的变量(如月收入和年收入)会导致系数符号翻转
├── 系数不稳定意味着评分卡不可解释
├── "收入越高,信用越差" → 监管不会接受
│
解决:
├── VIF (方差膨胀因子) > 10 则剔除
├── 相关系数 |r| > 0.7 保留 IV 高的
└── 最终入模变量通常 8-15 个

误区 3:"机器学习能替代评分卡"

真相:监管不允许黑箱模型作为主模型

现状:
├── 中国银保监会:核心信用决策模型必须可解释
├── 欧盟 GDPR/AI Act:算法决策需要可解释性
├── 美国 ECOA/FCRA:拒贷必须提供具体原因
│
├── XGBoost+SHAP 可以作为辅助模型
├── 但主力模型仍是逻辑回归评分卡
└── 未来可能放松,但短期不会

误区 4:"WOE 编码是多此一举"

真相:WOE 解决了很多工程和统计问题

如果不用 WOE:
├── 连续变量需要标准化/归一化 → 上线后需要维护均值和标准差
├── 分类变量需要 One-Hot → 维度爆炸,稀疏矩阵
├── 缺失值需要单独处理 → 增加代码复杂度
├── 异常值会影响系数 → 需要单独处理
├── 无法保证单调性 → 可能出现不可解释的评分卡
│
用了 WOE:
├── 所有变量统一为连续值 → 简化工程
├── 缺失值自动处理 → 减少 bug
├── 异常值被分箱吸收 → 鲁棒性强
├── 单调性可控 → 监管友好
└── 与逻辑回归数学契合 → 性能最优

误区 5:"模型只需要看离线指标"

真相:线上表现可能与离线完全不同

常见原因:
├── 特征穿越:训练时用了未来信息(如"是否逾期"预测"是否逾期")
├── 样本偏差:训练集只包含通过审批的客户(幸存者偏差)
├── 数据延迟:线上特征更新不及时,与训练时不一致
├── 特征加工差异:线上实时计算 vs 离线批量计算的逻辑不一致
│
预防措施:
├── 影子模式:先跑 2-4 周,对比线上线下评分一致性
├── 特征一致性检查:线上 vs 离线特征值的 PSI
├── 回灌测试:用线上实际特征重新跑模型,对比结果
└── 监控报表:上线后持续监控各项指标

九、面试高频问题与答案

Q1:评分卡开发中最重要的环节是什么?

答:样本定义和变量筛选,而不是模型训练本身。

理由:
├── 样本窗口定义错误 → 整个模型方向错误
│   ├── 表现期太短 → 还没到逾期高发期就截断了
│   ├── 表现期太长 → 模型时效性差
│   └── 观察期选择不当 → 特征穿越
│
├── 变量筛选决定了模型的上限
│   ├── 好的变量比好的算法更重要
│   └── 逻辑回归在好变量上的表现 > XGBoost 在差变量上的表现
│
└── 模型训练只是"技术活"
    ├── 逻辑回归几行代码就搞定
    └── 真正的价值在数据理解和业务判断

Q2:PSI 升高了怎么办?

答:分四步处理。

Step 1:定位是哪些变量的分布变了(看 CSI)
Step 2:判断是真实变化还是数据质量问题
├── 数据源变更(如某外部数据停供) → 修数据
├── 业务策略变化(如放宽了准入标准) → 分析影响
└── 市场环境变化(如经济下行) → 考虑重建模型

Step 3:评估影响
├── PSI < 0.10 → 继续监控
├── 0.10-0.25 → 评估 KS/AUC 是否也下降
└── > 0.25 → 启动模型重建

Step 4:制定行动计划
├── 短期:调整策略阈值补偿模型衰减
├── 中期:用新数据重新训练
└── 长期:建立模型自动化重训机制

十、延伸阅读

书籍

书名作者特点
《Credit Risk Scorecards》Naeem Siddiqi评分卡开发圣经,实操性极强
《Credit Risk Analytics》Bart Baesens学术性强,覆盖全面
《Intelligence Credit Scoring》Naeem Siddiqi评分卡+机器学习融合
《Measuring Credit Risk》Arnaud de ServignyPD/LGD/EAD 框架详解

监管文件

文件用途
Basel III Framework (BCBS)全球银行资本监管标准
银保监会《商业银行信用风险内部评级体系监管指引》中国 IRB 实施指南
EBA Guidelines on PD/LGD estimation欧洲 PD/LGD 估计标准
IFRS9 Financial Instruments预期信用损失(ECL)会计准则

工具与平台

工具用途
Scorecard (Python)评分卡开发包(WOE/IV/分箱)
toad (蚂蚁金服开源)评分卡全流程工具
OptBinning最优分箱
SHAP模型可解释性
MLflow模型版本管理与追踪

十一、本篇总结

信用风险建模的核心知识体系:

                    信用风险建模
                         │
          ┌──────────────┼──────────────┐
          │              │              │
       评分卡          PD-LGD-EAD    Basel框架
          │              │              │
    ┌─────┼─────┐    ┌───┼───┐    ┌────┼────┐
    │     │     │    │   │   │    │    │    │
  WOE/IV 分箱  映射  PD  LGD EAD  资本  压力  IRB
    │     │     │    │   │   │   充足率 测试  方法
    │     │     │    │   │   │
    ▼     ▼     ▼    ▼   ▼   ▼
          逻辑回归          EL = PD×LGD×EAD
              │
          A卡/B卡/C卡
              │
          全生命周期风控

作为架构师/PM,你需要:
├── ✅ 能讲清 WOE/IV 的计算和业务含义
├── ✅ 能评审评分卡开发方案(样本/变量/验证)
├── ✅ 能设计评分系统的技术架构
├── ✅ 理解 Basel 对模型的要求
├── ✅ 能与建模团队用同一种语言沟通
│
├── ❌ 不需要自己跑回归
├── ❌ 不需要自己调参数
└── ❌ 不需要推导数学公式

下一篇05-fraud-detection.md — 反欺诈科学