2. 收益优化目标函数:利润最大化、风险调整后收益(RAROC)、客户生命周期价值(LTV)建模
信用额度定价的核心在于收益优化。单纯追求高利率或高额度,往往导致风险失控;过度保守则损失优质客户与利润。本章系统讲解三种主流的收益优化目标函数:利润最大化、风险调整后收益(RAROC)与客户生命周期价值(LTV),并阐述其在训练集切分与模型迭代中的具体应用。
2.1 三种目标函数的对比与选择
在信用额度定价模型中,目标函数直接决定了模型优化的方向。下表从核心公式、优化焦点、适用场景三个维度进行对比:
| 目标函数 | 核心公式(简化) | 优化焦点 | 适用场景 |
|---|---|---|---|
| 利润最大化 | Profit = 利息收入 + 手续费 - 预期损失 - 资金成本 - 运营成本 | 单期或短期净收益 | 短期促销、现金贷、单期产品 |
| RAROC | RAROC = (收益 - 预期损失) / 经济资本 | 风险调整后的资本回报率 | 银行信贷、资本充足率约束场景 |
| LTV | LTV = Σ (未来各期净现金流 × 折现因子) | 长期客户关系价值 | 循环信贷、信用卡、高粘性产品 |
实践建议: 对于信用卡或循环额度产品,建议以 LTV 作为长期优化目标,同时将 RAROC 作为风险约束条件,避免过度追求长期价值而忽视短期资本效率。
2.2 利润最大化:短期收益的基准模型
利润最大化是最直观的目标函数,通常用于单期决策或短期策略。其核心在于准确估计每个客户在给定额度下的收入与成本。
- 收入项: 利息收入(取决于使用率、利率)、分期手续费、年费、交叉销售佣金。
- 成本项: 预期信用损失(ECL)、资金成本(FTP)、运营成本(审批、催收、系统维护)。
在训练集切分时,利润最大化模型通常使用滚动窗口方式:以过去 6-12 个月的表现期作为标签,预测未来 1-3 个月的利润。这种切分方式对数据时效性敏感,适合快速迭代的营销场景。
关键公式: 单客户利润 = (额度 × 使用率 × 利率) + 手续费 - (PD × LGD × 额度) - (资金成本率 × 额度) - 固定运营成本
2.3 RAROC:风险调整后的资本回报率
RAROC 是银行和持牌金融机构最常用的风险收益指标。它将收益与经济资本挂钩,确保每一单位资本都能产生足够的风险调整后回报。
RAROC 的计算步骤:
- 计算预期收益: 利息收入 + 非利息收入 - 资金成本 - 运营成本。
- 计算预期损失: PD × LGD × EAD(违约概率 × 违约损失率 × 违约风险敞口)。
- 计算经济资本: 基于非预期损失(UL)或监管资本要求,通常使用 Vasicek 模型或内部模型。
- 计算 RAROC: (预期收益 - 预期损失) / 经济资本。
在额度定价中,RAROC 通常作为约束条件:只有 RAROC 高于机构最低门槛(如 15%)的额度方案才被采纳。训练集切分时,需要同时保留违约样本和正常样本,并确保经济资本模型在时间序列上的稳定性。
注意: RAROC 对经济资本的估计非常敏感。在训练集切分时,建议使用 跨周期验证(如跨越一个完整经济周期),避免模型在顺周期时高估 RAROC,导致风险积累。
2.4 LTV:客户生命周期价值建模
LTV 是循环信贷产品(如信用卡、备用金)最理想的优化目标。它衡量一个客户在整个关系存续期内,为机构带来的净现值。
LTV 建模的典型流程:
- 阶段 1: 预测客户留存率(Survival Model / 迁移矩阵)。
- 阶段 2: 预测各期使用率与收入(时间序列模型 / 回归)。
- 阶段 3: 预测各期违约概率与损失(生存分析 + 信用评分)。
- 阶段 4: 折现求和,得到 LTV。
LTV 建模对训练集切分有特殊要求:
- 观察期与表现期: 需要足够长的表现期(通常 24-36 个月)来捕捉客户完整生命周期。
- 截断处理: 对于仍在活跃的客户,使用右截断(Right-censoring)技术,避免低估 LTV。
- 时间切片: 将客户历史数据按月或按季度切片,形成面板数据(Panel Data),用于训练时序模型。
2.5 三种目标函数的融合与训练集切分策略
在实际工业级额度定价系统中,三种目标函数并非互斥,而是形成分层决策架构。下面的 SVG 图展示了这种融合关系:
2.6 训练集切分与目标函数的对齐
不同的目标函数对训练集的时间窗口、标签定义、样本权重有不同的要求。下表总结了针对三种目标函数的推荐切分策略:
| 目标函数 | 观察期长度 | 表现期长度 | 标签定义 | 样本权重 |
|---|---|---|---|---|
| 利润最大化 | 6-12 个月 | 1-3 个月 | 单期利润(连续值) | 等权或按利润绝对值加权 |
| RAROC | 12-24 个月 | 6-12 个月 | RAROC 值(连续值) | 按经济资本占比加权 |
| LTV | 24-36 个月 | 12-24 个月 | LTV 净现值(连续值) | 按留存概率加权 |
工程实践: 在训练集切分时,建议为每个目标函数建立独立的 数据管道(Data Pipeline)。例如,LTV 模型需要面板数据(Panel Data),而利润最大化模型只需要横截面数据(Cross-sectional Data)。统一的数据湖(Data Lake)设计可以大幅降低维护成本。
2.7 代码示例:基于 LTV 的额度优化目标函数
以下 Python 代码展示了如何计算单个客户的 LTV,并将其作为额度优化的目标函数:
import numpy as np
def calculate_ltv(credit_limit, usage_rate, interest_rate, retention_probs,
pd_probs, lgd, discount_rate=0.05, periods=24):
"""
计算客户生命周期价值 (LTV)
参数:
credit_limit: 信用额度
usage_rate: 各期使用率 (array)
interest_rate: 各期利率 (array)
retention_probs: 各期留存概率 (array)
pd_probs: 各期违约概率 (array)
lgd: 违约损失率 (float)
discount_rate: 年化折现率
periods: 预测期数 (月)
返回:
ltv: 生命周期价值 (净现值)
"""
ltv = 0.0
for t in range(periods):
# 留存概率
survival = np.prod(retention_probs[:t+1])
# 预期收入
income = credit_limit * usage_rate[t] * interest_rate[t]
# 预期损失
loss = credit_limit * pd_probs[t] * lgd
# 净现金流
net_cf = income - loss
# 折现
discount_factor = 1 / (1 + discount_rate/12) ** (t+1)
ltv += survival * net_cf * discount_factor
return ltv
# 示例:不同额度方案下的 LTV 对比
limits = [10000, 20000, 30000]
for lim in limits:
ltv_val = calculate_ltv(
credit_limit=lim,
usage_rate=np.array([0.6, 0.5, 0.4, 0.3, 0.2]*5),
interest_rate=np.array([0.015]*24),
retention_probs=np.array([0.95, 0.92, 0.90, 0.88, 0.85]*5),
pd_probs=np.array([0.01, 0.015, 0.02, 0.025, 0.03]*5),
lgd=0.6
)
print(f"额度 {lim}: LTV = {ltv_val:.2f} 元")
输出解读: 上述代码会输出不同额度下的 LTV 值。通常,LTV 随额度增加呈现 先升后降 的趋势——初期额度提升带来更多利息收入,但超过某个阈值后,违约损失和资金成本会侵蚀利润。最优额度即 LTV 曲线最高点对应的额度。