银行级PD模型开发

企业级建模全流程架构

一个标准的银行级PD模型开发生命周期(MDLC)包含以下步骤:

1. 建模流程(高频面试框架)

  1. Data Preparation
      • 数据源:贷款申请、交易流水、财报、信用局数据
      • 处理:缺失值、异常值、格式一致性
      • 划分:训练集、验证集、测试集
  1. Feature Engineering
      • 数值变量:分箱 (Fine classing → Coarse classing)
      • 类别变量:WOE encoding, Target encoding
      • 稳定性检查:IV (Information Value)、PSI (Population Stability Index)
      • 业务合理性:确保变量符合风险逻辑
  1. Model Development
      • Logistic Regression(最常见,解释性强)
      • Decision Trees / Random Forest / XGBoost(非线性特征)
      • 处理类别不平衡:SMOTE、Downsampling、Cost-sensitive learning
  1. Model Validation
      • Discrimination:AUC、KS、Gini
      • Calibration:Hosmer-Lemeshow、Calibration plots
      • Stability:PSI、时间窗口对比
      • Backtesting:在历史样本上回测
  1. 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.变量体检

这是 分箱前必须做的一步

你在这一阶段做什么?

  1. 缺失率检查
      • 缺失率极高(如 >80%) → 直接淘汰
  1. 取值分布检查
      • 近乎常数
      • 极端稀疏
      • 类别过多(高基数 categorical)
  1. 坏样本覆盖率
      • 某变量在坏样本中几乎没信息 → 没意义
👉 目标只有一个:
把明显“没用 / 有风险”的变量挡在分箱之前。

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
  1. 计算 WoE: 对每个箱子 $i$,计算其权重:
    1. notion image
  1. 替代: 用计算出的 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)

1.1 观察 LTV 的原始违约情况

你把 LTV 拿来分段看违约率:
LTV Range
Default Rate
0–50%
0.5%
50–70%
1.0%
70–85%
2.1%
85–95%
4.8%
95%+
12.3%
你马上看到一件事:
违约率是单调的(越高 LTV → 风险越高)
✔ 但不是线性的
✔ 高 LTV 违约率跳升非常明显
这就会导致 logistic regression 的系数不稳定、拟合不好。
Step 2:计算每个分箱的 WoE
你用默认率做 WoE 计算,例如 85–95% LTV:
notion image
假设计算后 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)
这是作为风险模型的核心门槛,也是最能体现经验的部分。
  • 是否合规
  • 是否可解释
  • 是否政策内生
  1. 单调性验证 (Monotonicity Check):
      • 要求: 在 WoE 分箱后,随着风险指标的恶化(如LTV的增加),WoE值必须单调变化。如果中间出现反转,则必须重新分箱或剔除该变量。
  1. 模型符号约束 (Sign Constraint):
      • 要求: 模型系数的符号必须与业务逻辑一致。
      • CRE 实例: DSCR 必须是负向风险因素(DSCR越高,风险越低,系数应为负)。如果模型拟合出了正向系数,必须强制调整或直接剔除该变量,因为它违背了基本的业务常识。
  1. 专家判断 (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
, 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 风险

Python

数据加载(Data Loading)

df = pd.read_csv('cre_pd_synthetic_dataset.csv')

⭐ 目的

  • 从原始数据源加载贷款级别的数据。
  • 这个数据集包括 CRE Loan 的多个维度:LTV、DSCR、物业类型、Sponsor 经验、Occupancy、Past Due、Default Flag。

⭐ 工业逻辑

  • 在真实银行中,这部分对应的是 SQL 多表 Join(Loan Contract、Collateral、Financials、Performance)。
  • 所有风险建模项目都从 宽表(Model-ready Table) 开始。

定义特征(Numeric / Categorical)

numeric = [...] cat_vars = ['region','property_type']

⭐ 目的

  • 明确哪些变量需要分箱(WoE 前提条件)
  • 哪些变量本身是分类变量

⭐ 工业逻辑

  • Basel / 银行逻辑回归 PD 模型必须用 WoE
  • 数值变量必须“离散化后再转 WoE”
  • 分类变量可以直接做 groupby 计算 WoE

分箱(Binning)

df_binned[col+'_bin'] = quantile_bin(df[col], q=5)

⭐ 目的

  • 将连续变量切分成有限个区间(bins),便于后续计算 WoE

⭐ 为什么必须分箱?

因为:
  1. 逻辑回归需要线性(对数几率)关系
    1. LTV、DSCR 与违约不是线性关系 → 分箱后,WoE 会“线性化”
  1. 稳健性(处理outlier & missing)
    1. Outlier = 单独一个 bin
      Missing = 单独一个 bin
      → 不会污染模型系数
  1. 监管可解释性(SR 11-7)
      • “80% LTV 以上的违约率是更高的”
      • “DSCR < 1.0 风险更高”
        • → 越分箱,越容易向审计/监管解释

计算 WoE / IV

iv, mapping = calc_woe_iv(df_binned, feat, 'default_flag')

⭐ WoE(Weight of Evidence)

把每个 bin 转换为:
log( Dist(Good) / Dist(Bad) )

⭐ IV(Information Value)

衡量变量的区分能力:
  • <0.02:无预测力
  • 0.02~0.5:正常变量
  • 0.5:可疑(通常是 Leakage)

⭐ 工业逻辑

这是整个评分卡模型的灵魂:
  • WoE → 帮助逻辑回归满足“线性可解释”
  • IV → 变量筛选的工业标准
  • 审计、监管都熟悉(SR 11-7 常见指标)

WoE 转换

df_woe[feat+'_woe'] = df_binned[feat].map(woe_maps[feat])

⭐ 目的

分箱变量 → WoE 数值
这就是最终进入 Logistic Regression 的表达形式。

⭐ 工业逻辑

  • WoE 是评分卡模型的标准特征形式
  • 监管喜欢、审计喜欢、业务也容易理解
  • 一旦 WoE 做好,模型在 5 年内不会漂移太多(稳定)

变量筛选(Univariate Filtering)

iv_df['keep'] = (iv_df['iv']>=0.02) & (iv_df['iv']<=0.5)

⭐ 目的

  • 去掉几乎无预测力的变量
  • 去掉高得离谱(>0.5)的变量
    • → 这些变量通常是信息泄露:
    • 逾期标志
    • 重组标志
    • 风险调整后的贷款属性

⭐ 工业逻辑

银行口径的 PD 模型必须遵循:
  • “变量不能包含未来信息”
  • “变量不能反映违约之后才发生的事件”
  • IV 是从模型 governance 角度非常可靠的指标

多变量筛选(VIF 去共线性)

vif_df = ... vif_df[vif_df['vif'] < 5]

⭐ 为什么检查共线性?

因为:
  • LTV, DSCR, Debt Yield 常常强相关
  • Occupancy / DSCR / NOI 可能互相解释
  • 共线性会导致 Logistic Regression 系数不稳定

⭐ 工业逻辑

监管要求 PD 模型必须:
  • 系数方向稳定
  • 变量之间不互相覆盖意义
  • 不允许存在“解释一样但重复输入”的变量
    • → 比如 LTV 和 Loan-to-Cost
VIF 是模型稳定性测试的关键项目。

Logistic Regression(建模)

model.fit(X_train, y_train) auc = roc_auc_score(y_test, y_pred)

⭐ 目的

  • 对 WoE 特征训练 Basel 风格 Logistic PD 模型
  • 输出 PD(违约概率)

⭐ 工业逻辑

Logistic 回归是银行 20 年来使用的:
  • 最稳
  • 最容易解释
  • 最容易通过审核
  • 最容易部署在规则系统(如 SAS、Oracle)

ROC 曲线(模型表现)

roc_curve(...)

⭐ 目的

验证模型对于区分“违约”和“非违约”的能力

监管要求:

  • AUC > 0.6 才视为有预测力
  • AUC < 0.55 会被审计 challenge
  • 必须在 train/test 都相对稳定(不可以差太多)