企业级建模全流程架构
一个标准的银行级PD模型开发生命周期(MDLC)包含以下步骤:
1. 建模流程(高频面试框架)
- Data Preparation
- 数据源:贷款申请、交易流水、财报、信用局数据
- 处理:缺失值、异常值、格式一致性
- 划分:训练集、验证集、测试集
- Feature Engineering
- 数值变量:分箱 (Fine classing → Coarse classing)
- 类别变量:WOE encoding, Target encoding
- 稳定性检查:IV (Information Value)、PSI (Population Stability Index)
- 业务合理性:确保变量符合风险逻辑
- Model Development
- Logistic Regression(最常见,解释性强)
- Decision Trees / Random Forest / XGBoost(非线性特征)
- 处理类别不平衡:SMOTE、Downsampling、Cost-sensitive learning
- Model Validation
- Discrimination:AUC、KS、Gini
- Calibration:Hosmer-Lemeshow、Calibration plots
- Stability:PSI、时间窗口对比
- Backtesting:在历史样本上回测
- Implementation
- Scoring card 转换
- Cut-off 决策阈值
- 集成进贷款审批系统
2. 数据准备与定义 (Data Preparation)
- 违约定义 (DoD): 必须严格遵循Basel要求(如逾期90天、主要债务重组、破产等)。
- 观察期与表现期: 通常使用12个月的滚动窗口(Outcome Period)。
- 分层 (Segmentation): CRE通常按物业类型(写字楼、零售、多户住宅、工业)分层,或者按区域分层。
- 关键变量:
- 财务指标: DSCR (偿债覆盖率), LTV (抵押率), Debt Yield (债务收益率).
- 非财务指标: 物业房龄、空置率、Location Quality (地段评分)、Sponsor Strength (担保人实力).
1. 贷款与借款人信息 (Loan & Obligor Information)
这类信息主要描述合同条款和借款人的基本资质。
数据类型 | 关键数据点 | 建模用途 |
合同信息 | 贷款编号、发放日期、到期日、原始金额、利率类型(浮动/固定)、LGD 区间。 | 核心 ID,资产组合划分。 |
借款人信息 | 借款主体名称、担保人/发起人(Sponsor)的资质等级或内部评级(Tier)。 | 衡量软性风险,Sponsor 实力强弱是 CRE 风险的关键非财务因素。 |
区域/行业 | 贷款所在地理区域(城市/邮编)、借款人行业细分(若为企业自用)。 | 宏观风险因子关联,区域集中度管理。 |
2. 物业与抵押品信息 (Property & Collateral Information)
CRE 贷款的特殊性在于抵押物是主要的风险缓释工具。
数据类型 | 关键数据点 | 建模用途 |
物业类型 | 写字楼 (Office)、零售 (Retail)、多户住宅 (Multifamily)、工业 (Industrial)、酒店 (Hotel) 等。 | 最重要的分层变量,不同物业类型风险逻辑完全不同。 |
物业特征 | 总可出租面积(Sq. Ft.)、房龄(Year Built)、地理位置等级(Class A/B/C)。 | 资产质量指标。 |
出租率 | 当前出租率 (Occupancy Rate)。 | 衡量物业经营健康度,直接影响现金流。 |
估值信息 | 最新评估价值 (Appraised Value)、评估日期。 | 计算 LTV 的基础。 |
3. 财务与现金流指标 (Financial Performance Drivers)
这是 PD 模型中最重要的输入变量,用于衡量物业产生的现金流偿还债务的能力。
数据类型 | 关键数据点 | 建模用途 |
净营业收入 (NOI) | Net Operating Income(物业扣除运营费用后的净收入)。 | 现金流的核心来源。 |
偿债覆盖率 (DSCR) | Debt Service Coverage Ratio(NOI / 偿债支出)。 | PD 模型的第一核心驱动因子。 |
抵押率 (LTV) | Loan-to-Value Ratio(未偿本金余额 / 物业评估价值)。 | PD 模型的第二核心驱动因子。 |
债务收益率 (Debt Yield) | NOI / 贷款金额。 | 在 LTV 较难计算时(如多笔债权),作为 LTV 的补充或替代。 |
4. 贷款状态与历史表现 (Performance Status)
这类数据用于生成我们的目标变量(Target Variable)。
数据类型 | 关键数据点 | 建模用途 |
逾期天数 (DPD) | Days Past Due(贷款当前逾期天数)。 | 识别技术性违约(如 90 天 DPD)。 |
违约标志 | Default Flag (0/1)。 | 模型的因变量 (Y),基于 Basel 定义生成。 |
贷款状态 | 当前是否处于重组 (Restructured)、止赎 (Foreclosure) 或已核销 (Charged-off) 状态。 | 识别实质性违约。 |
风险主管总结:数据挑战
在实际工作中,最大的挑战不是模型算法,而是数据的频率和完整性:
- 频率: NOI、DSCR 和 LTV 通常只能按季度或年度获取(取决于借款人提交财报的频率),这导致 PD 模型很难像零售模型那样使用高频(月度)数据。
- 缺失值: 小额商业地产的借款人可能无法及时或完整地提供财务报表,导致 DSCR 等关键变量存在大量的缺失值,需要复杂的特征工程方法来处理。
3.Data Cleaning
包括:
- 缺失值处理(missing flags / imputation)
- 异常值处理(cap / floor)
- 时间对齐(observation vs performance window)
- 标签确认(default definition)
👉 到这一步,只能说:数据“干净”,但还不“能建模”。
4.变量体检
5.特征工程 (Feature Engineering) - 银行标准
在信贷风险领域,我们采用 Weight of Evidence (WoE) 转换,而不是简单地使用原始变量。
先分箱(binning) → 再用 WOE 编码 → 用 IV 评估分箱与变量信息量
核心目标:线性化与稳健性
- 处理非线性关系: 原始变量(如LTV)与违约概率的关系往往是非线性的。WoE通过 分箱(Binning) 将这种非线性关系转化为线性的对数风险(Log-odds)关系,从而适应逻辑回归模型。
- 处理异常值与缺失值: 异常值和缺失值可以被归类到一个单独的箱子中,避免它们扭曲模型的整体参数。
分箱
Step 1:粗分箱(Pre-binning)——先“看关系”,别追求完美
把变量切成一组初始区间,常见做法:
- 连续变量:等频(常用)或业务阈值(更“银行”)
- 类别变量:先合并稀有类 / 设 Other / 设 Missing 单独类
粗分箱的目标只有一个:快速看清“变量变化 → 违约率如何变化”的大致形状
它回答的问题是:
- 风险关系是递增、递减、U 型、阈值跳变,还是几乎无关系?
- 是否存在明显异常点导致某段违约率被拉高?
- Missing 是否比非 Missing 风险更高?
常见粗分箱方法(选一个就够)
方法 1:等频分箱(最常用)
- 每个箱样本数差不多
- 非常适合第一眼看风险关系
例子(Utilization):
- Bin1: 0–20%
- Bin2: 20–40%
- Bin3: 40–60%
- Bin4: 60–80%
- Bin5: 80%+
👉 推荐作为第一步
方法 2:业务驱动分箱(加分项)
比如 DSCR:
- < 1
- 1–1.25
- 1.25–1.5
- 1.5
👉 这是最“像银行”的做法
Step 2:看每个箱的违约率(这是分箱的核心)
第二步我只关注风险排序与单调趋势,因为评分卡最怕的是符号翻车和跨样本不稳定;统计显著性和 IV 可以后看,但排序不合理的变量即使 IV 高也要重新分箱或淘汰。
现在你画一张表:
Bin | 样本数 | 违约率 |
Bin1 | 800 | 2% |
Bin2 | 700 | 3% |
Bin3 | 600 | 5% |
Bin4 | 400 | 9% |
Bin5 | 200 | 15% |
每个箱至少要看三列:
- 样本数(count / 占比)
- 违约率(bad rate)
- 好坏样本数(good/bad counts)
你在判断什么(面试官真正在听)
(1) 风险方向是否符合业务
- LTV 越高 → 风险应更高
- DSCR 越高 → 风险应更低
(2) 违约率是否“基本单调”
- 允许轻微波动,但不能频繁反转
- 反转通常意味着:样本不足、噪声、切点不合理、变量本身弱
(3) 是否存在“阈值效应”
例如:
- LTV 在 90% 以上风险突然跃升
这类变量适合用分箱捕捉“跳变”,比线性直接拟合稳得多。
Step 3:合并箱(这是分箱“真正的工作量”)
粗分箱几乎一定要“改”,合并的目标是把箱结构变成可用的“银行版本”。
合并触发条件(银行常用的三类)
1.样本太少(稳定性问题)
- 单箱样本占比太小,违约率会剧烈波动
- 结果:WOE/风险度量不稳定,PSI 也容易“假报警”
面试讲法:
样本太少的箱会导致违约率估计方差很大,所以要合并到相邻箱,优先保证稳定性。
2.违约率乱跳(单调性问题)
比如风险应该递增,但出现:
2% → 5% → 3% → 8%
常见原因:
- 切点切到了噪声区间
- 中间箱样本不足
- 变量真实关系不是单调
处理原则:
- 先尝试合并造成反转的箱,使趋势平滑
- 如果怎么合并都不单调,说明变量不适合做评分卡核心变量
面试讲法:
单调性优先,因为评分卡更重视长期稳定与符号一致性,而不是样本内最优拟合。
3.风险差不多(降噪 + 简化)
例如:
- 箱 A 违约率 3.0%,箱 B 3.2%
这两箱分开更多是噪声,不是信息。
面试讲法:
风险水平接近的箱我会合并,减少噪声并提升可解释性,同时也降低后续监控复杂度。
WoE
- 计算 WoE: 对每个箱子 $i$,计算其权重:

- 替代: 用计算出的 WoE 值替换原始的数值。
CRE 实例: 商业地产类型(如Office, Retail, Multifamily)本身就是天然的分类变量。我们需要计算每个物业类型的 WoE,将风险的高低用一个单一数值表示。
例子
假设你在建 PD 模型(Logistic Regression),你手上有一批真实贷款数据:
Loan ID | LTV | DSCR | Property Type | Default Flag |
001 | 62% | 1.4 | Multifamily | 0 |
002 | 95% | 0.9 | Office | 1 |
003 | 78% | Missing | Retail | 0 |
004 | 120% | 0.6 | Industrial | 1 |
… | … | … | … | … |
你知道:
- Raw LTV、DSCR 是 非线性 的
- 逻辑回归必须要求 log(odds) 与自变量 线性关系
- 缺失值和极端值会破坏参数
- Regulator(SR 11-7)要求模型“可解释 + 稳定 + 单调合理”
所以必须做 WoE。
Step 1:监督式分箱(Supervised Binning)
Step 2:计算每个分箱的 WoE
你用默认率做 WoE 计算,例如 85–95% LTV:

假设计算后 WoE 像这样:
LTV Bin | Default Rate | WoE |
0–50% | 0.5% | -1.8 |
50–70% | 1.0% | -1.2 |
70–85% | 2.1% | -0.5 |
85–95% | 4.8% | 0.7 |
95%+ | 12.3% | 1.6 |
你会发现:
✔ WoE 值几乎呈线性递增
✔ log-odds vs. WoE 是直线
✔ 非线性变量 → 转换成线性特征
现在 logistic regression 就非常容易拟合出稳定系数了。
Step 3:替换原变量
现在你把 Raw LTV 换成 WoE LTV:
Loan ID | LTV | LTV_WoE |
001 | 62% | -1.2 |
002 | 95% | 1.6 |
003 | 78% | -0.5 |
004 | 120% | 1.6 |
… | … | … |
极端值(比如 120%)已经被“控制”了:
✔ 不会破坏模型系数
✔ 不会拉坏模型拟合
Step 4:处理缺失值(Missing Values)
对于 DSCR missing,你做:
DSCR Bin | Default Rate | WoE |
Missing | 5.5% | 0.9 |
<1.0 | 8.1% | 1.4 |
1.0–1.5 | 2.0% | -0.7 |
>1.5 | 0.8% | -1.5 |
这样:
✔ Missing 被赋予一个真实的风险水平
✔ 不会因为“丢掉”或“用平均值填充”而扭曲模型
✔ Regulator 会认可——因为“缺失本身就是风险信息”
Step 5:对分类变量做 WoE
例如 Property Type:
Property Type | Default Rate | WoE |
Office | 5.0% | 0.8 |
Retail | 3.0% | 0.2 |
Multifamily | 1.0% | -1.0 |
Industrial | 2.0% | -0.5 |
你知道 Multifamily 风险最低 → WoE 最低
Office 风险最高 → WoE 最高
模型非常容易理解:
✔ “Office 风险大” → 正系数
✔ “Multifamily 风险低” → 负系数
信贷经理和监管都喜欢这种透明逻辑。
🎯 实际例子:我在做个人贷款 PD 模型时
我们发现 LTV 与违约率的关系非常非线性。例如:
- LTV 在 70% 以下违约很少
- LTV 超过 90% 后违约率几乎跳升到三倍
为了让逻辑回归更稳定、更易解释,我们对 LTV 做了监督式分箱,将它分成五个 LTV 区间。每个区间计算了 WoE 值。计算后我们发现 WoE 与 log-odds 的关系几乎是完全线性的。
随后我们使用 WoE 变量替换原始 LTV。这一步让模型的系数非常稳定,逻辑上也更容易解释,例如“高 LTV → 高 WoE → 高 PD”。
同样,我们对 DSCR 的缺失值建立了一个独立分箱,因为 DSCR 缺失往往意味着财务资料不全,通常是风险信号。独立分箱让模型能够理解缺失 = 风险。
对于分类变量,例如 CRE 的 Property Type,我们也计算了 WoE。比如:Office 的违约率最高 → WoE 最大;Multifamily 最低 → WoE 最小。这样既满足模型性能,也方便向业务伙伴解释不同物业类型的风险差异。
最终,使用 WoE 的模型在稳定性、解释性以及监管审查中都表现得更好。
6.特征选择 (Feature Selection) - 四层筛选机制
特征选择过程必须严格遵循统计、业务和监管三个维度,绝不能只看统计指标。
层级 | 关注重点 |
Univariate | 单独有没有区分能力 |
Multivariate | 会不会和别人打架 |
Governance | 逻辑是否合理、可解释 |
Model-Level | 放在一起还有没有用 |
一. 单变量分析 (Univariate Filtering)
这个人单独看,有没有能力?”
- IV
- WOE
- 单调性
- 指标:信息价值 (Information Value, IV)
- 作用: IV 衡量了一个特征区分好坏客户(违约/非违约)的能力。IV 越高,区分能力越强。
- 筛选标准:
- IV < 0.02: 视为无用变量,直接剔除。
- IV 在 0.02 - 0.5 之间: 视为有价值变量,保留。
- IV > 0.5: 视为可疑变量,可能存在数据泄露(Data Leakage)或与目标变量过于强相关,需要深入审查。
二. 多变量分析 (Multivariate Filtering)
这些人放在一起,会不会互相抢活、打架?
- 共线性
- VIF
- 指标:方差膨胀因子 (Variance Inflation Factor, VIF)
- 作用: 检查特征之间的多重共线性(Multicollinearity)。如果两个变量高度相关(例如:LTV和Debt Yield),它们会导致逻辑回归的系数不稳定。
- 筛选标准: 我们通常要求所有入模变量的 VIF < 5。如果超过,必须剔除其中一个变量或进行组合。
三. 治理与业务逻辑 (Governance & Business Rationale)
这是作为风险模型的核心门槛,也是最能体现经验的部分。
- 是否合规
- 是否可解释
- 是否政策内生
- 单调性验证 (Monotonicity Check):
- 要求: 在 WoE 分箱后,随着风险指标的恶化(如LTV的增加),WoE值必须单调变化。如果中间出现反转,则必须重新分箱或剔除该变量。
- 模型符号约束 (Sign Constraint):
- 要求: 模型系数的符号必须与业务逻辑一致。
- CRE 实例: DSCR 必须是负向风险因素(DSCR越高,风险越低,系数应为负)。如果模型拟合出了正向系数,必须强制调整或直接剔除该变量,因为它违背了基本的业务常识。
- 专家判断 (Expert Judgement):
- 即使一个变量的统计表现完美,但如果业务人员无法对其风险解释提供合理的商业逻辑,它也必须被剔除。这是为了确保模型在监管机构面前具有最高的可解释性。
四. 模型层面的 Feature Selection
1. 系数显著性与稳定性
关注点:
- p-value / Wald test
- 系数大小是否合理
- 系数符号是否稳定
常见问题:
- 单变量 IV 很好,但入模后 p-value 很差
- 系数在不同样本或时间段来回波动
处理原则:
- 如果变量在组合中不稳定,优先剔除
- 稳定性优先于样本内显著性
2.边际性能贡献(Marginal Contribution)
检查方式:
- 加入 / 移除变量前后 AUC、KS 变化
- 是否存在“几乎不影响性能”的变量
核心判断:
- 如果移除变量后模型性能几乎不变,该变量没有边际价值
原则:宁可少一个变量,也不要多一个边际贡献不明确的变量。
3. 冗余信息识别
即使通过 VIF:
- 变量之间仍可能高度相关
- 风险信息高度重叠
表现形式:
- 多个变量同时显著,但只需要一个即可代表风险
处理方式:
- 保留最直观、最稳定、最容易解释的变量
- 剔除“蹭贡献”的变量
7. 模型选择与对比
- Logistic Regression
- 优点:简单、解释性强,监管最常接受
- 缺点:捕捉非线性较弱
- Tree-based (RF, XGBoost)
- 优点:捕捉复杂模式
- 缺点:可解释性较差(需配合 SHAP/LIME)
- Neural Networks
- 优点:强大模式识别能力
- 缺点:监管接受度低,黑箱问题
8. 模型验证关键点
Aspect | PD | LGD | EAD |
Model Type | Classification (binary) | Regression (continuous 0–1) | Regression (continuous $ exposure) |
Discrimination Metrics | AUC, KS, Gini | R², correlation | R², correlation |
Calibration Metrics | Brier Score, O/E ratio | RMSE, MAE, bias | RMSE, MAE, % error |
Stability Metrics | PSI, AUC trend | PSI, backtesting | PSI, CCF drift |
Focus | Ranking accuracy | Loss estimation precision | Exposure prediction consistency |
Regulatory Expectation | O/E near 1, stable KS | Conservatism in downturns | No underestimation, especially under stress |
1️⃣ PD Model (Probability of Default)
Type: Classification model (binary outcome: default vs non-default)
Goal: Rank-order borrowers by likelihood of default
Dimension | What It Means | Metrics Used | Interview Soundbite |
Discrimination | Ability to separate good vs bad borrowers | AUC, KS, Gini coefficient | “For PD, we measure discrimination using AUC and KS — they show how well the model distinguishes defaulted from non-defaulted borrowers.” |
Calibration | Accuracy of predicted PD vs actual default rate | Brier Score, Observed vs Expected (O/E) ratio, Calibration plot | “We ensure predicted probabilities align with actual defaults; an O/E ratio close to 1 means the model is well calibrated.” |
Stability | Consistency of model performance over time or portfolio segments | Population Stability Index (PSI), Trend of AUC/KS, Characteristic Stability Index (CSI) | “We track PSI quarterly; a PSI under 0.1 means stable, above 0.25 signals population drift that may require recalibration.” |
2️⃣ LGD Model (Loss Given Default)
Type: Regression model (continuous outcome, range 0–1)
Goal: Estimate percentage of loss if default occurs
Dimension | What It Means | Metrics Used | Interview Soundbite |
Discrimination | Ability to rank borrowers by loss severity | R² (goodness of fit), Correlation between predicted and actual LGD | “For LGD, we look at how well the model explains variation in realized losses — R² gives a sense of how much of the loss behavior is captured.” |
Calibration | Match between predicted and realized LGD | Mean Absolute Error (MAE), RMSE, Bias / Mean % Error | “We test calibration by comparing predicted vs realized loss rates — small RMSE and near-zero bias indicate good calibration.” |
Stability | Robustness across time and portfolio segments | PSI, Segment-level backtesting, Drift in key variables | “We monitor PSI and track average predicted LGD by segment over time to ensure stability; large shifts could mean changing recovery patterns.” |
3️⃣ EAD Model (Exposure at Default)
Type: Regression model (continuous exposure amount)
Goal: Predict exposure level at the time of default (for credit lines, revolvers, etc.)
Dimension | What It Means | Metrics Used | Interview Soundbite |
Discrimination | Ability to rank exposures by expected drawdown risk | R², Correlation, sometimes segment-level lift chart | “EAD models are regression-based; we look at R² to ensure the model explains drawdown patterns across facilities.” |
Calibration | Match between predicted and realized EAD / CCF | RMSE, MAE, Mean % Error, EAD vs Limit sanity check | “We ensure predicted EADs are never below current balances and that model bias remains minimal — RMSE and mean % error are key metrics.” |
Stability | Whether drawdown patterns remain consistent | PSI, Portfolio utilization monitoring, CCF drift analysis | “We monitor PSI and Credit Conversion Factor drift; if the drawdown behavior shifts due to macro stress, we may trigger recalibration.” |
9.最终稳定性 & 压力测试(上线前)
- Out-of-time (OOT) test
- 宏观场景变化敏感性
- Policy feedback 风险