土法炼钢兴趣小组的算法知识备份

【金融科技工程】信用风险与授信决策:评分卡、A/B/C 卡、BNPL 与公平借贷

文章导航

分类入口
architecturefintech
标签入口
#credit-risk#fico#scorecard#lightgbm#woe#bnpl#abs#pboc-credit#fair-lending

目录

引言:借钱这件事,工程上到底难在哪

前面第 20 篇讲反欺诈、第 21 篇讲反洗钱与 KYC,它们回答的是”这个人是不是坏人、这笔交易是不是脏钱”。本篇进入另一个维度:这个人借了钱之后,到底会不会还。

这是整个金融业最古老的命题。2500 年前巴比伦的《汉谟拉比法典》里已经有对借贷利率的规定(谷物年息 33.3%、白银 20%);1956 年费埃哲(Fair Isaac Corporation)在斯坦福研究所写出第一版信用评分卡的时候,他们还在用打孔卡做逻辑回归。到了 2026 年,信用风险决策的形态已经完全不同:

工程上难在三件事。

第一,样本偏差。 你训练模型只能用”已放款并且有还款表现”的样本,但决策时要给”还没放款的人”打分——这就是经典的拒绝推断(Reject Inference)问题。一个线上跑了两年的模型,它看到的世界是被上一代模型筛选过的,越跑越窄。

第二,表现周期长。 一笔 12 期分期,你真正知道客户好坏要等 6–12 个月(所谓 MOB 6/MOB 12,Months On Book)。模型发布到观测到效果有半年以上的时间滞后,而经济周期、黑产策略、业务规则每周都在变。

第三,合规约束硬。 风控模型必须可解释(欧盟 GDPR 第 22 条、中国《个保法》第 24 条自动化决策条款)、不歧视(美国 ECOA Equal Credit Opportunity Act、Fair Housing Act)、利率不超红线(中国 LPR 4 倍 / 24%/36% 三线、美国各州 Usury Law)。一个在 AUC(Area Under Curve)上赢 2 个点的黑盒深度模型,可能因为拒绝解释不过合规评审。

本篇的目标读者:

本篇是系列第 22 篇,是继反欺诈(第 20 篇)、反洗钱(第 21 篇)之后的风控三部曲收官。之后第 23 篇进入对账系统,那是把本篇”资金-账本-催收”闭环落到账务口径的下游。

本篇阅读路径

新接触风控的读者建议顺序读;有风控经验、主要想看工程与合规的读者可以直接跳到 §4–§10。


一、授信全链路:从一次申请看清楚一切

先把图画出来。一笔消费贷款从用户点”立即申请”到贷后回收,要经过十几个节点。

1.1 全链路拓扑图

flowchart TB
    A[用户发起申请<br/>APP/H5/商户收银台] --> B[反欺诈<br/>设备指纹/IP/黑名单]
    B --> C[身份核验<br/>实名四要素/活体/OCR]
    C --> D[数据采集<br/>征信/运营商/电商/社保]
    D --> E[特征工程<br/>派生变量/WOE 编码]
    E --> F[A 卡评分<br/>申请评分模型]
    F --> G{决策引擎}
    G -->|拒绝| R1[拒绝理由/挽回]
    G -->|人工| R2[人工审核队列]
    G -->|通过| H[额度模型]
    H --> I[定价引擎<br/>基于 PD/LGD/EAD]
    I --> J[合同签约/电子签名]
    J --> K[资金方匹配<br/>自营/助贷/联合贷]
    K --> L[放款指令<br/>支付通道]
    L --> M[贷后监控<br/>B 卡行为评分]
    M --> N{还款}
    N -->|按时| O[正常结清/循环授信]
    N -->|逾期| P[催收<br/>C 卡催收评分]
    P --> Q1[M1 短信/IVR]
    P --> Q2[M2 人工外呼]
    P --> Q3[M3+ 委外/诉讼]
    P --> S[展期/减免/核销]
    S --> T[不良处置<br/>ABS/AMC/转让]

1.2 每个节点在做什么、耗时多少

以一笔典型消费贷(额度 1–20 万元,期限 3–24 期)为例:

节点 耗时 核心工作 通过率
反欺诈 50ms 设备指纹、代理 IP、黑名单、GPS 异常、申请频次 85–95%
身份核验 1–5s 公安四要素、运营商三要素、银行卡核身、活体+OCR 90–97%
征信拉取 200ms–2s 人行征信、百行征信、三方数据并行 近 100%
特征加工 50–200ms 200–2000 个派生变量
A 卡评分 10ms LR/XGBoost 推理 20–60%(新户)
额度定价 20ms 规则 + 回归模型
合同/签约 用户侧 电子签名、利率明示、合规披露 80–95%
放款 秒级–分钟 对接资金方、支付通道 近 100%

端到端,纯线上流程目标是 30 秒内给结果、5 分钟内放款到账。这个体验是 2015 年之后才真正工程化下来的。

1.3 决策引擎:规则、策略、模型三位一体

风控决策不是一个模型输出一个分数就完了,而是一棵决策树 + 规则集 + 模型集成的组合:

# 伪代码:一次授信决策
def credit_decision(application):
    # 第一层:硬规则(Hard Rule)直接拒绝
    if application.age < 18 or application.age > 65:
        return reject("REJECT_AGE")
    if application.id in blacklist:
        return reject("REJECT_BLACKLIST")
    if pboc_query(application.id).overdue_90d_count > 0:
        return reject("REJECT_PBOC_OVERDUE")

    # 第二层:反欺诈模型
    fraud_score = fraud_model.predict(application)
    if fraud_score > 0.85:
        return reject("REJECT_FRAUD")

    # 第三层:A 卡评分
    credit_score = credit_a_card.predict(application)
    if credit_score < 550:
        return reject("REJECT_LOW_SCORE")

    # 第四层:额度+定价
    credit_limit = limit_model.predict(application, credit_score)
    apr = pricing_engine.price(application, credit_score, credit_limit)
    if apr > 24.0:  # 红线
        return reject("REJECT_APR_CEILING")

    # 第五层:灰度/冠军挑战者(Champion/Challenger)
    if ab_bucket(application) == "challenger":
        credit_limit *= 1.2  # 挑战新策略

    return approve(credit_limit, apr)

真实生产环境里,这棵决策树有 50–200 个节点,每个节点都有独立的效果监控(通过率、坏账率、用户分布)。决策引擎框架常见选择:开源的 Drools、URule;自研的规则 DSL + 特征服务;大厂(蚂蚁 MYbank、微众 WeBank)内部有基于 Flink/Storm 的实时决策流。

1.4 决策全链路的数据契约

下面给出一个接近生产的决策请求与响应契约(简化版),便于后续团队接入:

// 授信决策请求
message CreditDecisionRequest {
  string request_id = 1;               // 幂等键
  string user_id = 2;                  // 去标识化 user id
  string product_code = 3;             // 产品:consumer_loan / card / bnpl_pay4
  int64  apply_amount_cent = 4;        // 申请金额(分)
  int32  term_months = 5;              // 期限
  string scenario = 6;                 // 场景:shopping / cash / merchant_id
  ApplicantInfo applicant = 7;         // 申请人基础信息(已脱敏)
  DeviceInfo device = 8;               // 设备指纹、IP、GPS
  repeated ConsentRecord consents = 9; // 数据授权记录
  string channel = 10;                 // APP / H5 / 商户 SDK
}

message CreditDecisionResponse {
  string request_id = 1;
  Decision decision = 2;               // APPROVE / REJECT / MANUAL / PENDING
  int64  credit_limit_cent = 3;
  double apr_bps = 4;                  // APR,基点
  int32  credit_score = 5;             // 300–900
  repeated string reason_codes = 6;    // 拒绝/降额原因码
  string model_version = 7;            // 模型指纹,用于审计回放
  string policy_version = 8;
  int64  decide_ts = 9;
}

message ConsentRecord {
  string scope = 1;        // pboc / telco / ecommerce / location
  string grant_id = 2;     // 唯一授权 ID
  int64  granted_at = 3;
  int64  expires_at = 4;
}

三条工程要点:

1.5 灰度与冠军挑战者(Champion/Challenger)

风控上线绝不能一把切。标准做法是冠军挑战者

挑战者流量切分的关键:按 user_id 哈希稳定,同一用户每次申请走同一桶,避免同一用户两次申请分配到不同策略造成体验割裂。流量控制要做到按分层(例如”按 FICO 段分别切 10%“),否则挑战者可能只吃到了某一段人群。


二、信用评分体系:全球与中国的双轨

2.1 美国:FICO 与 VantageScore 双寡头

FICO 评分(1989 年首次商用)是美国零售信贷的事实标准。FICO 8 长期占据贷款决策 90% 市场份额,2014 年推出 FICO 9(医疗欠账降权、接入租房数据),2020 年推出 FICO 10 和 FICO 10T(T 代表 Trended Data,轨迹数据,使用 24 个月余额变化序列而非截面快照)。

FICO 分数区间 300–850,五维权重:

维度 权重 含义
Payment History 35% 还款历史、逾期记录、破产
Amounts Owed 30% 当前负债、信用利用率(Utilization)
Length of Credit History 15% 账户平均年龄、最老账户
Credit Mix 10% 信用卡、按揭、分期组合
New Credit 10% 近期硬查询(Hard Inquiry)、新开户

VantageScore(2006 年三大征信局联合推出以对抗 FICO)。VantageScore 4.0 同样 300–850,2024 年 FHFA(Federal Housing Finance Agency)宣布房利美/房地美接受 VantageScore 4.0 替代 Classic FICO,这是美国信贷基础设施的重要变化。

2.2 中国:央行征信为主、市场化机构补充

人民银行征信中心(PBOC Credit Reference Center)二代格式于 2020 年 1 月 19 日全面上线,相对一代主要变化:

二代征信没有直接输出一个分数,只提供报告字段。大多数银行在二代数据之上自建评分(俗称”央行分”衍生模型)。

百行征信(2018 年成立,央行牌照)和朴道征信(2020 年获牌)是中国仅有的两家市场化个人征信机构,主要覆盖 PBOC 没有覆盖的互联网小贷、消费金融场景。2021 年”断直连”后,互联网平台不得直接向金融机构传送用户信用数据,必须经由持牌征信机构。

芝麻信用(蚂蚁集团,2015 年)分值 350–950,涵盖身份特质、履约能力、信用历史、人脉关系、行为偏好五维。芝麻信用不是征信,而是一种场景化的”信用评估”,不能用于金融机构授信决策(监管要求),但在租房、酒店免押、共享单车等 2000+ 场景广泛使用。

腾讯信用分(2015 年小范围测试,2018 年 1 月 30 日全面公测仅 24 小时后下线)是一个标志性事件:在”断直连”监管基调明确后,互联网公司自建征信业务被叫停,后续只能通过持牌机构做。

京东小白信用(2015 年上线)主要服务京东白条、京东金条场景,形态与芝麻信用类似。

2.3 评分分数的工程含义

分数不是随便给的。经典评分卡设计里,分数与 PD(Probability of Default,违约概率)有严格映射:

\[\text{Score} = A - B \cdot \ln\left(\frac{\text{PD}}{1-\text{PD}}\right)\]

其中 A、B 是校准常数,通常令”每加 20 分,坏好比翻一倍”(PDO=20,Points to Double the Odds)。例如基础点 600 分对应坏好比 1:20,620 分对应 1:40、640 分对应 1:80。

这个线性映射让业务方好理解:分数就是几何级数的 PD。这也是为什么传统评分卡依然不可替代——即便深度模型 AUC 更高,它输出的概率如果没有做同样的单调校准,业务上没法直接用来划段定价。


三、模型演进:从逻辑回归到图神经网络

3.1 逻辑回归 + WOE/IV:依然是主流

尽管学术界不断出新模型,银行、消费金融公司生产线上 60% 以上的申请评分(A 卡)依然是逻辑回归(Logistic Regression)+ WOE(Weight of Evidence,证据权重)分箱。原因:可解释、可拆分贡献、可审计、稳定。

WOE 定义(对第 i 个分箱):

\[\text{WOE}_i = \ln\left(\frac{\text{good}_i / \text{total\_good}}{\text{bad}_i / \text{total\_bad}}\right)\]

IV(Information Value,信息值)衡量一个变量的区分能力:

\[\text{IV} = \sum_i \left(\frac{\text{good}_i}{\text{total\_good}} - \frac{\text{bad}_i}{\text{total\_bad}}\right) \cdot \text{WOE}_i\]

IV 的经验解读:

IV 预测力
< 0.02 无效
0.02–0.1
0.1–0.3
0.3–0.5
> 0.5 强到要怀疑是穿越变量

分箱(Binning)方法:等频、等距、卡方(ChiMerge)、决策树(最常用)。单调性约束是工程惯例——WOE 随分箱排序应单调或 U 型,避免”收入越高越容易违约”这种反业务直觉的结果。

3.2 GBDT:XGBoost 与 LightGBM

GBDT(Gradient Boosting Decision Tree,梯度提升决策树)在 2014–2017 年从 Kaggle 比赛扩散到工业界,现在是消费金融风控的第二选择。XGBoost(陈天奇,2014)和 LightGBM(微软,2017)的核心差异:

维度 XGBoost LightGBM
树生长 Level-wise(同层分裂) Leaf-wise(按增益分裂)
速度 基线 5–10x 更快
类别特征 需要独热编码 原生支持
内存 较高 更低(直方图)

LightGBM 在中国消费金融公司几乎是默认选择。一个典型 A 卡:300–800 个特征、100–500 万样本、训练 10–30 分钟、线上 P99 推理 5ms 以内。

3.3 深度模型与图神经网络

DNN(深度神经网络)在风控的应用场景有限——特征多为结构化表格数据,DNN 对比 GBDT 优势不明显;但在序列场景(APP 行为序列、交易流水序列)上 LSTM/Transformer 有用武之地。

图神经网络(GNN)是近年热点。信贷欺诈与违约往往呈”团伙”特征:同一设备、同一 WiFi、同一紧急联系人出现多次。把用户-设备-商户-联系人建成异构图,用 GraphSAGE、GAT 做节点分类,能捕捉 GBDT 难以表达的关系特征。蚂蚁的 AGL(Ant Graph Learning)、腾讯的 Plato、阿里达摩院的 GraphScope 是这个方向的代表工业系统。

3.4 A 卡、B 卡、C 卡

消费金融风控模型按生命周期阶段分类:

三张卡彼此独立训练、独立部署,但通过特征平台共享特征。

3.5 模型开发流程

一个工业级 A 卡从立项到上线的标准流程,通常 2–4 个月:

flowchart LR
    A[1. 样本定义] --> B[2. 观察期+表现期]
    B --> C[3. 特征工程]
    C --> D[4. 变量筛选<br/>IV/相关性/稳定性]
    D --> E[5. 模型训练<br/>LR/GBDT]
    E --> F[6. 模型评估<br/>AUC/KS/PSI]
    F --> G[7. 模型解释<br/>SHAP/权重卡]
    G --> H[8. 公平性测试]
    H --> I[9. 独立验证]
    I --> J[10. 冠军挑战者灰度]
    J --> K[11. 全量上线]
    K --> L[12. 持续监控]
    L --> M{衰减?}
    M -->|是| A
    M -->|否| L

样本定义的关键是时间窗口对齐

所有特征必须是观察点之前可得的信息;所有标签必须在表现期结束后才打。这一铁律如果违反,就是经典的 Target Leakage。

3.6 稳定性:PSI 与特征漂移

模型发布后最常见的衰减原因是总体稳定性偏移(Population Stability)。PSI 定义:

\[\text{PSI} = \sum_i (p_i^{\text{new}} - p_i^{\text{old}}) \cdot \ln\frac{p_i^{\text{new}}}{p_i^{\text{old}}}\]

其中 \(p_i\) 是第 i 分箱的样本占比。经验阈值:

PSI 含义 动作
< 0.1 稳定 继续观察
0.1–0.25 轻度漂移 排查原因
> 0.25 显著漂移 考虑重训

不仅模型输出要监控 PSI,核心特征也要逐个监控。一个常见场景:某运营商数据源停服 3 天,某特征缺失率从 2% 飙升到 40%,PSI 瞬间超标——这是特征层面的事故,不是模型本身的问题。


四、数据源:合法性是第一红线

4.1 数据清单

中国消费金融风控一张标准数据清单(2026 年合规边界下):

类别 数据项 来源 合规要点
征信 人行二代征信 PBOC 征信中心 每次查询需用户授权、接入需银保监许可
征信 百行/朴道征信 持牌机构 互联网场景”断直连”必经通道
公共 社保、公积金、税务 政府数据平台 需用户授权”查询本人数据”
运营商 通话详单、在网时长 三大运营商 用户授权 + 运营商返回脱敏字段
电商 下单金额、收货地址稳定性 平台内部(自营场景) 不得跨主体传输明细
银行 代发工资、流水 开放银行 API PSD2 式授权(中国有限开放)
设备 设备指纹、IP、GPS 客户端 SDK 《个保法》明示、最小必要
关系 紧急联系人、通讯录 客户端授权 2019 年后禁止批量读取通讯录

4.2 授权与合规边界

关键法规:

工程上的直接后果:2021 年之后,所有外部数据源接入合同 + 用户授权链路 + 审计日志都要落地。任何一次”我们偷偷加了一个数据源上线”的操作,都可能导致罚单(2023 年某消金公司因违规收集通讯录被罚 2000 万元)。

4.3 数据血缘与特征平台

现代风控系统的底座是特征平台(Feature Store):Tecton、Feast、阿里 MaxCompute + 自研 FeatureStore、蚂蚁 AntFeatureStore。一个特征从原始数据到模型输入经过:

数据源 → 接入层(授权检查、脱敏) → 离线计算(Spark/Flink) 
    → 特征表(Hive/HBase/TiDB) → 在线服务(Redis/自研 KV)
    → 模型推理 → 决策

每个特征必须带血缘(Lineage)和授权标签:来自哪个数据源、是否个人敏感信息、最大保留期、允许用途。审计时要能在 5 分钟内回答”某用户的某次拒绝使用了哪 27 个特征,每个特征的出处是什么”。

4.4 在线/离线一致性

特征平台的头号工程难题是在线-离线一致性(Online-Offline Consistency)。同一个特征”用户最近 30 天还款次数”:

两条路径的口径必须一致,否则出现训练-服务偏差(Training-Serving Skew)。治理手段:

4.5 数据接入审计与权限管控

生产上一份典型的风控数据访问权限矩阵:

角色 征信明细 运营商 设备 放款/还款
风控建模 脱敏样本 脱敏样本 脱敏样本 脱敏样本
在线决策 只读 API 只读 API 只读 API 写入
客服/催收 摘要 摘要
审计 全量只读(留痕) 全量只读 全量只读 全量只读

所有访问必须留审计日志(who、when、what、why),保留不少于 5 年。大型消金公司每天产生亿级风控决策日志,存储栈:Kafka → ClickHouse / Iceberg + Trino,冷数据归档到对象存储。


五、额度、定价与 PD/LGD/EAD

5.1 三大风险参数

巴塞尔协议 III(Basel III)内部评级法(IRB,Internal Ratings-Based Approach)定义三个核心风险参数:

预期损失(Expected Loss,EL):

\[\text{EL} = \text{PD} \times \text{LGD} \times \text{EAD}\]

5.2 风险定价:不是利润最大化,是”覆盖损失+达到目标 ROE”

一笔贷款的利率分解:

\[\text{APR} = r_{\text{fund}} + r_{\text{ops}} + r_{\text{risk}} + r_{\text{profit}} + r_{\text{capital}}\]

举例:一个 PD=8%、LGD=70% 的客群,年化风险成本 ≈ 5.6%;加资金 5%、运营 3%、利润 3%、资本 2%,最终 APR 约 18.6%。如果这是首贷客群、LGD 上升到 80%、PD 上升到 12%,风险成本到 9.6%,APR 容易撞 24% 红线——这也解释了为什么利率红线卡死后,低分段客户直接被市场拒之门外。

5.3 差异化定价与公平借贷

差异化定价(Risk-Based Pricing):同一产品对不同客户给不同利率,这是市场化金融的基本逻辑。但在美国要受 ECOA(Equal Credit Opportunity Act,1974)和 FCRA(Fair Credit Reporting Act)约束:不得基于种族、肤色、宗教、国籍、性别、婚姻状况、年龄等受保护类别(Protected Classes)定价。

工程上的表现:

中国 2026 年还没有完全对标 ECOA 的立法,但《个保法》第 24 条的”自动化决策透明、不得对个人在价格等交易条件上实行不合理的差别待遇”已经埋下了伏笔。

5.4 额度模型与循环授信

额度模型不是简单地根据评分映射一个数字,而是一个优化问题:

\[\max_{L} \ \text{Expected Profit}(L) = L \cdot \text{Usage}(L) \cdot (r - \text{EL}(L)) - \text{Cost}(L)\]

其中 Usage(L) 是给定额度 L 下的预期动用率。一个关键观察:额度给太低,用户不用;额度给太高,坏客户套现走人。典型做法:

5.5 IFRS 9 预期信用损失

会计层面,国际财务报告准则 IFRS 9(中国对应”新金融工具准则”CAS 22,2019 年起分阶段实施)要求按三阶段模型计提减值:

阶段 定义 减值
Stage 1 正常/低风险 12 个月预期损失
Stage 2 信用风险显著增加(SICR) 整个存续期预期损失
Stage 3 已减值 整个存续期预期损失,按净额计息

SICR(Significant Increase in Credit Risk,信用风险显著增加)的判定是工程落地的难点:通常以 PD 相对初始增幅(如翻倍)、DPD > 30 天、或内评级下调 2 档为触发条件。风控系统必须把 PD 实时下推给财务系统,否则财报不准确。


六、贷后管理:还款、逾期、催收、核销

6.1 还款提醒与智能外呼

还款日前 3 天、当天、逾期 D+1 是三个关键触达时点。传统短信 + APP Push 之外,AI Voicebot(智能外呼)是 2020 年后的主力:

代表厂商:腾讯云智能外呼、阿里云语音服务、科大讯飞、竹间智能;银行自建平台如招行掌上逾期机器人。

6.2 催收分阶段

阶段 逾期天数 手段 回收率
M0 0–30 天 短信、IVR、AI 外呼、APP 消息 70–90%
M1 31–60 天 人工外呼、信函 20–40%
M2 61–90 天 加强催收、上征信警告 10–25%
M3 91–180 天 委外催收、调解 5–15%
M3+ 181 天+ 诉讼、仲裁、核销 1–5%
坏账 核销后仍可追偿 残值处置

委外催收(Collection Outsourcing)在 2020–2022 年经过大规模整顿。暴力催收、爆通讯录、骚扰联系人被监管重点打击;合规催收要求:每日通话不超 3 次、不得威胁、不得向无关第三人透露债务信息。

6.3 展期、减免、核销

6.4 贷后关键指标:滚动率与迁徙率

贷后风险的两套核心指标:

Vintage 曲线(账龄分析):按放款月份聚合,观察不同月份放款资产在 MOB 1、2、3、6、12 的累计逾期率。Vintage 曲线是消金公司最重要的资产质量监控工具,任何一代模型/产品/客群的好坏一眼就能从 Vintage 看出。

迁徙率(Roll Rate):相邻两个月逾期阶段之间的迁移概率。典型矩阵:

本月  下月 正常 M1 M2 M3 M4+
正常 97% 3% 0 0 0
M1 50% 50% 0 0
M2 20% 80% 0
M3 10% 90%
M4+ 5% 95%

迁徙率反映催收效果和客群质量,比单一时点逾期率更稳定。典型消金公司:M1 回到正常的概率 40–60%、M2 到 M3 的概率 70–85%、M3+ 的资产基本视为不良。

6.5 贷后决策案例:增益模型用于催收

传统 C 卡预测”未来 30 天是否催回”,按分数排序分配催收资源。但这种做法忽略了干预效应——高分客户本来就会自己还,花精力在他们身上是浪费。

增益模型(Uplift Model) 预测”干预带来的增量回收概率”,即:

\[\tau(x) = P(\text{回收} \mid x, \text{干预}) - P(\text{回收} \mid x, \text{不干预})\]

通过随机对照实验(RCT):对一批逾期账户随机不催收(Control)、轻催收、重催收,观察回收差异,训练 T-Learner / X-Learner 预测 uplift。催收资源优先分配给 uplift 最高的账户(所谓 “Persuadables”,可被说服者),而非单纯分数最高的。蚂蚁、招联、马上消费等内部 2022 年后均已将 uplift 模型用于 C 卡策略。


七、资产证券化(ABS)与联合贷

消费金融公司不是银行,自有资本有限。要扩表必须借用资本市场。主要方式:

7.1 消费贷与信用卡 ABS

ABS(Asset-Backed Securities,资产支持证券)将一批未来现金流(应收贷款)打包成证券,在交易所或银行间市场发行。典型结构:

  发起人(消金公司)
         │  转让底层资产
         ▼
    SPV(特殊目的载体)
         │  发行
         ▼
    优先级 A 档(AAA,70–80%,低息)
    优先级 B 档(AA,5–15%,中息)
    次级档(发起人自持,5–15%,吸损)

增信方式:超额覆盖(Over-Collateralization)、现金储备账户、流动性支持、原始权益人风险自留 5%(证监会要求)。

7.2 蚂蚁花呗 / 借呗 ABS 停发事件

2020 年 11 月 2 日、11 月 10 日,银保监会、央行等四部门先后发布《网络小额贷款业务管理暂行办法(征求意见稿)》和约谈蚂蚁集团,IPO 被暂缓。关键背景:花呗、借呗的主体是两家重庆网络小贷公司,通过循环发行 ABS 把 30 多亿注册资本放大到了 3000 多亿贷款余额(约 100 倍杠杆)。意见稿要求:

直接后果:2020 年底花呗、借呗 ABS 集中停发,蚂蚁集团启动整改,2021 年 6 月重庆蚂蚁消费金融有限公司(注册资本后扩至 230 亿元)成立,原小贷业务迁入消金牌照主体,杠杆限制从网络小贷的 4 倍升至消金公司的 10 倍左右,但仍远低于整改前的实际杠杆。这是中国消费金融监管史上最标志性的事件,直接改写了整个行业的资金结构。

7.3 联合贷与助贷

2023 年后监管明确:实质重于形式,隐性增信视为联合贷。不少平台被要求补充资本金或退出。

7.4 资金端工程:对接银行的技术账本

平台对接一家资金方银行,典型工程链路:

平台风控通过 → 资金路由 → 资金方审批 API → 放款指令
                                         ↓
                   银行核心系统出账 → 通知平台 → 用户到账
                                         ↓
                    每日对账(余额、放款、还款)→ 差错处理

几个痛点:


八、BNPL:西方 Klarna、Affirm、Afterpay 与中国花呗分期

8.1 BNPL 形态

BNPL(Buy Now Pay Later,先买后付)的核心产品结构:

全球主要玩家(2025 年末数据):

公司 总部 年交易额 用户规模 上市
Klarna 瑞典 约 1000 亿美元 1.5 亿 2025 年 NYSE
Affirm 美国 约 300 亿美元 2000 万活跃 2021 Nasdaq
Afterpay 澳洲 2021 被 Block 以 290 亿美元收购
PayPal Pay in 4 美国 嵌入 PayPal 亿级 母公司 Nasdaq
Zip 澳洲 百亿美元级 ASX

8.2 中国 BNPL 的另一条路

中国没有”BNPL”这个原生品类,功能被切成:

监管上直接纳入消费信贷体系,APR 必须明示,不存在”零息误导”——2022 年后所有分期页面必须同时展示综合年化成本(APR)和手续费率(IRR),这是和 BNPL 西方玩法最大的制度差异。

8.3 BNPL 工程差异

BNPL vs 传统消费信贷的工程差异:

维度 传统消费贷 BNPL
接入场景 独立 APP 商户收银台 SDK/API
决策时延 5–30 秒 < 2 秒(不能卡结账)
额度粒度 单笔/整体额度 每笔独立审批
征信上报 全部上报 部分上报(各国分歧大)
商户接入 线下为主 Shopify/Stripe 插件、Web SDK
对商户收益 提成 2–5% MDR 3–6%

8.4 Affirm 的架构亮点

Affirm 公开披露的技术栈是一个典型的现代 BNPL:

8.5 BNPL 的结构性风险

BNPL 模式在 2022–2024 年全球高利率环境下暴露了几个结构性问题:


九、监管与合规

9.1 美国:CFPB 将 BNPL 纳入信用卡规则

2024 年 5 月 22 日,CFPB 发布解释规则(Interpretive Rule),明确 BNPL 的 Pay-in-4 产品属于 TILA(Truth in Lending Act)下的”信用卡”(Credit Card),需履行:

这一规则把 BNPL 从”灰色地带”拉入传统信用卡监管框架,Klarna、Affirm 等必须在 60 天内合规。

FCRA 则要求:拉取征信需”许可目的(Permissible Purpose)“、拒绝需出 Adverse Action Notice、消费者有争议权。

9.2 欧盟:CCD2

欧盟消费者信贷指令 2(Consumer Credit Directive 2,2023/2225)2023 年通过、2026 年 11 月全面适用,相比 CCD1(2008)主要变化:

9.3 中国:网络小贷、互联网贷款办法、利率红线

《最高人民法院关于审理民间借贷案件适用法律若干问题的规定》(2020 年 8 月修订):民间借贷利率上限调整为”一年期贷款市场报价利率(LPR)的 4 倍”,2026 年 LPR ≈ 3.45% 对应 13.8%——但此规则仅适用民间借贷,不适用持牌金融机构。

持牌金融机构(银行、消金、信托):监管从未明文规定统一利率红线,但 2021 年监管指导”利率从严控制在 24% 以内”,24% 是事实上的红线。超过 24% 不等于违法,但超过 36% 部分在司法实践中不予保护。

APR 明示(2021 年 3 月 31 日央行公告):所有贷款产品、分期产品必须以年化利率(IRR 或 APR)形式展示,禁止只展示”月费率”。

互联网贷款管理办法(2020 年、2022 年过渡期结束)核心条款:

9.4 征信数据的跨境与合规

跨境开展消费金融业务(如中资背景的东南亚、拉美 BNPL/消金平台)必须同时满足:

常见合规架构:

2023–2025 年多家中资背景 BNPL 因数据合规争议(如菲律宾 NPC 对中资现金贷调查)被罚或退出市场,合规与技术是一体两面。


十、公平性:代理变量、差异影响、模型审计

10.1 敏感特征与代理变量

即便不把性别、种族直接入模,模型仍可能通过代理变量(Proxy Variable)间接学到:

美国 ECOA/Fair Housing Act 下的差异影响测试(Disparate Impact Test)

\[\text{DI} = \frac{\text{approval rate}_{\text{protected}}}{\text{approval rate}_{\text{majority}}}\]

经验阈值 0.8(80% Rule,也称 Four-Fifths Rule):若小于 0.8,监管推定存在差异影响,需要”业务必要性”辩护。

10.2 公平性算法

常见技术路线:

工具库:IBM AIF360、Google Fairness Indicators、Microsoft Fairlearn。

10.3 模型审计

美国 OCC(Office of the Comptroller of the Currency)SR 11-7(Model Risk Management)和美联储 SR 11-7 要求金融机构建立模型风险管理框架:

中国银保监 2022 年《银行保险机构信息科技外包风险监管办法》和 2023 年”模型风险管理”专项检查把这套机制往国内拉齐。


十一、代码实战:LightGBM A 卡 + WOE 分箱 + KS/AUC

下面给一个完整、可运行的 A 卡建模骨架,使用 scikit-learn + lightgbm + 手写 WOE。生产环境里通常会用 scorecardpytoad 等风控专用库(国内 toad 最流行)。

import numpy as np
import pandas as pd
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

# -------- 1. 模拟数据:10 万申请,20 个特征,目标 y=1 表示首半年 90+ 逾期 --------
rng = np.random.RandomState(42)
N = 100_000
df = pd.DataFrame({
    "age":        rng.randint(18, 65, N),
    "income":     rng.lognormal(10.5, 0.6, N),
    "pboc_overdue_12m": rng.poisson(0.3, N),
    "credit_util":     rng.beta(2, 5, N),
    "query_cnt_3m":    rng.poisson(1.2, N),
    "account_age_m":   rng.randint(0, 240, N),
    "device_risk":     rng.beta(2, 8, N),
    "city_tier":       rng.choice([1,2,3,4,5], N),
    # ... 省略 12 个特征
})
# 构造带噪声的目标变量
logit = (-3.0
         + 0.8 * df["pboc_overdue_12m"]
         + 2.5 * df["credit_util"]
         + 0.3 * df["query_cnt_3m"]
         - 0.00001 * df["income"]
         + 3.0 * df["device_risk"]
         + rng.normal(0, 0.5, N))
p = 1 / (1 + np.exp(-logit))
df["y"] = (rng.uniform(size=N) < p).astype(int)
print("坏样本率:", df["y"].mean())   # ~4%

# -------- 2. WOE 分箱(简化版:等频 + 计算 WOE/IV)--------
def woe_iv(x: pd.Series, y: pd.Series, n_bins=10):
    bins = pd.qcut(x, n_bins, duplicates="drop")
    tab = pd.crosstab(bins, y).rename(columns={0: "good", 1: "bad"})
    tab["good_rate"] = tab["good"] / tab["good"].sum()
    tab["bad_rate"]  = tab["bad"]  / tab["bad"].sum()
    tab["woe"] = np.log((tab["good_rate"] + 1e-6) / (tab["bad_rate"] + 1e-6))
    tab["iv_bin"] = (tab["good_rate"] - tab["bad_rate"]) * tab["woe"]
    return tab, tab["iv_bin"].sum()

iv_summary = {}
for col in ["age","income","pboc_overdue_12m","credit_util",
            "query_cnt_3m","account_age_m","device_risk"]:
    _, iv = woe_iv(df[col], df["y"])
    iv_summary[col] = iv
iv_df = pd.Series(iv_summary).sort_values(ascending=False)
print("IV 排序:\n", iv_df)

# -------- 3. 训练 LightGBM --------
features = [c for c in df.columns if c != "y"]
X_tr, X_te, y_tr, y_te = train_test_split(
    df[features], df["y"], test_size=0.3, stratify=df["y"], random_state=1)

params = dict(
    objective="binary", metric="auc",
    learning_rate=0.05, num_leaves=31, min_data_in_leaf=200,
    feature_fraction=0.9, bagging_fraction=0.8, bagging_freq=5,
    verbose=-1,
)
dtr = lgb.Dataset(X_tr, y_tr)
dte = lgb.Dataset(X_te, y_te, reference=dtr)
model = lgb.train(params, dtr, num_boost_round=500, valid_sets=[dte],
                  callbacks=[lgb.early_stopping(30)])

# -------- 4. 评估:AUC、KS --------
pred = model.predict(X_te)
auc = roc_auc_score(y_te, pred)

def ks(y_true, y_score):
    df_ = pd.DataFrame({"y": y_true, "s": y_score}).sort_values("s")
    cum_bad  = (df_["y"] == 1).cumsum() / (df_["y"] == 1).sum()
    cum_good = (df_["y"] == 0).cumsum() / (df_["y"] == 0).sum()
    return float((cum_good - cum_bad).abs().max())

print(f"AUC = {auc:.4f}, KS = {ks(y_te.values, pred):.4f}")

# -------- 5. 概率转分数(FICO 风格)--------
def prob_to_score(p, base=600, pdo=20, base_odds=1/20):
    # Score = A - B * ln(p/(1-p))
    B = pdo / np.log(2)
    A = base + B * np.log(base_odds)
    odds = p / (1 - p + 1e-12)
    return A - B * np.log(odds)

scores = prob_to_score(pred)
print("分数分布:")
print(pd.Series(scores).describe())

工业标准的评估指标:

生产模型上线前还要做反事实仿真(Counterfactual Simulation):用历史通过+历史拒绝样本,估算新模型的通过率、坏账率、规模曲线,交叉验证后才敢切量。


十二、中国消费金融公司案例

12.1 蚂蚁消金

2021 年 6 月正式开业的重庆蚂蚁消费金融有限公司承接了原花呗、借呗业务。2022–2024 年经历三轮增资,注册资本从 80 亿提高到 230 亿元人民币,是国内注册资本最大的消金公司。股东结构经调整后:蚂蚁集团 50%、南洋商业银行 15.01%、国泰世华银行(中国)10%、舜宇光学 6%、博冠科技 4.99%、重庆渝富资本 6%、鱼跃医疗 3%、传化智联 5%。2024 年总资产超 3000 亿元,年化净利润十亿级。

工程上的典型能力:花呗、借呗的决策链路构建在阿里集团风控平台之上,每秒处理百万级决策,端到端 P99 < 200ms,特征规模据公开资料十万级。

12.2 招联消费金融

招联消费金融股份有限公司(2015 年成立)股东为招商银行和中国联通各 50%。2023 年末资产超 1700 亿元,贷款余额超 1500 亿元,线上新一贷、信用付产品覆盖亿级用户。招联的特色是强依赖招商银行风控体系 + 联通运营商数据——后者在 2017 年前是其核心差异化优势,2021 年断直连后这一优势弱化。

12.3 马上消费金融

马上消费金融股份有限公司(2015 年重庆百货发起)是少数较早布局 AI 风控、NLP 智能外呼的消金公司,自研”天启”反欺诈系统、“天镜”智能风控平台。2024 年资产规模约 700 亿。2021 年因数据合规问题被人行、银保监罚款 750 万元,是行业典型合规教训案例。

12.4 度小满金融

从百度金融独立出来(2018 年),定位助贷+联合贷+自营消金混合模式。度小满没有消金牌照,主要通过旗下重庆百度小贷公司和合作银行运作。其 AI 风控基于百度搜索、地图、输入法的脱敏信号——这也是 2021 年断直连后被挑战最多的部分。

12.5 一个国际对照:Discover 与 Capital One

放眼国际,同样是”数据驱动信用卡/消费贷”的代表:

这类对比提示一个工程取向:中国消费金融的技术栈深度不输国际同行,但产业结构差异决定了模型目标函数和业务拼图完全不同。


十三、工程坑点清单

  1. 拒绝推断(Reject Inference)没做,模型越跑越窄。 线上模型只见得到被通过的样本,训练集分布与决策集分布系统性偏离,AUC 看起来稳,通过率却持续下降。应对:拒绝样本外推(强制通过小比例随机样本做探索)、外部替代模型打分、Heckman 两阶段校正。
  2. 表现期未到就加特征。 新加的行为特征还没观察到违约结果,就训练到模型里,结果上线发现根本没预测能力。应对:固定表现期(如 MOB 6)、只用表现期结束前可得的特征。
  3. 穿越变量(Target Leakage)。 常见错误:把”贷后还款次数”“最后一次逾期天数”等事后特征当成”申请时刻”的特征。IV > 0.8 的变量都应该人肉审查。
  4. WOE 分箱业务不可解释。 自动分箱出来”收入越高越坏”,别强行上线,可能是样本问题或特征工程错误。应对:单调性约束、业务 Review。
  5. 模型部署特征漂移。 训练用 Hive 特征,线上用 Redis 特征,两边计算口径差一个小时窗口,AUC 线下 0.78、线上 0.70。应对:离线在线同源(同一段 Spark 代码双跑)、在线特征回放。
  6. 催收策略盲目使用 C 卡分。 C 卡预测”催回概率”,高分不代表应该少催——高分客户是最应该被轻度提醒就能回来的人,低分才真需要重度干预。策略设计要用增益模型(Uplift Model)而非预测模型。
  7. 资金方审批口径与模型不同。 联合贷资金方用他们自己的审批模型再筛一遍,平台过的 30% 被资金方拒掉,实际通过率远低于预期。应对:与资金方联调模型口径、双模型并行的”共同决策”。
  8. 利率定价撞红线后的逆向选择。 24% 红线卡死后,原本 APR 28% 能服务的客户被一刀切到 24%,实际 EL 不匹配、业务亏损;这部分客户反而更积极申请,造成逆向选择(Adverse Selection)。应对:严格准入而非降价迁就。
  9. 个保法授权链路断裂。 用户勾选了”同意征信查询”但没有单独勾选”同意三方数据查询”,被审计查出属于未授权处理,罚款+整改。应对:分类目授权、每类数据独立弹窗。
  10. 贷后数据不回流模型。 还款、逾期、催收结果没有打标回训练集,模型一年不迭代,PSI 早就超标。应对:标签管道自动化、季度迭代机制。
  11. APR 计算口径错误。 手续费、会员费、保险费算不算 APR?2021 年明示要求”所有融资成本”都要算入。用 IRR 而非简单日息 × 365。
  12. ABS 发行与业务节奏不同步。 资金端 ABS 排期三个月一次,业务端扩量超过资金到位速度,出现流动性缺口;反之资金到位但业务不达量,资金闲置成本高。
  13. 黑产画像反被模型”优选”。 黑产有意养号养征信,表现特征看起来像”优质新户”,被模型高分通过后一次性套现。应对:反欺诈与信用模型联动、新户小额试探、异常高分段人工 Review。
  14. 模型可解释不到位导致合规补材料爆炸。 监管一次检查要还原几万条决策拒绝理由,靠事后脚本跑。应对:决策时就结构化记录 reason_codes,审计时只做聚合查询。
  15. 跨平台多头借贷。 同一用户同时在三家消金公司借款,任一家单独看通过率都没问题,总负担超限。应对:经由百行/朴道接入共享的多头查询、设置多头触发规则。

十四、选型与落地清单

从零搭建消费金融风控系统,建议的最小可行栈:

选型 说明
决策编排 Drools / URule / 自研 DSL 规则+模型组合
特征平台 Feast / Tecton / 自研 离线在线同源
模型训练 Python + LightGBM + toad 评分卡标配
模型服务 Triton / 自研 gRPC P99 < 20ms
数据仓库 Hive / MaxCompute / Snowflake 离线特征
在线存储 Redis / Aerospike / TiKV 在线特征
流处理 Flink 实时行为特征、贷后监控
风控日志 Kafka + ClickHouse 决策审计
催收 智能外呼平台 + CRM 分层执行
合规 模型文档 + 特征血缘 + 审计日志 SR 11-7 等价框架

上线前 Checklist


十五、本系列交叉引用

十六、参考资料


上一篇《反洗钱与 KYC:客户尽调、交易监测、STR/SAR、FATF》

下一篇《对账系统工程:账单、总账、资金对账、差错处理》

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-04-22 · architecture / fintech

【金融科技工程】金融科技工程全景:从支付到交易所的系统分类与读图

金融科技(FinTech)不是普通后端加一张账户表。钱的原子性、监管的硬边界、一个小数点的代价,把这个领域推进到工程强度最高的那一档。本文是【金融科技工程】25 篇的总目录与阅读地图:先交代为什么它比一般业务系统更难,再给出对账体、支付体、交易体、风控合规体四维分类,把后续 24 篇挂到骨架上,最后给出一份绿地项目的落地顺序建议。

2026-04-22 · architecture / fintech

【金融科技工程】复式记账工程化:科目、分录、余额、对账

把 500 年历史的复式记账翻译成工程师可以落地的数据模型、SQL 表结构与余额计算策略,覆盖充值、下单、退款、分润、红包、多币种与冲销的真实场景,并对比 TigerBeetle、beancount、Ledger CLI、Square LedgerDB、Stripe Ledger 等开源与工业实现。

2026-04-22 · architecture / fintech

【金融科技工程】账务数据库设计:TiDB/OceanBase/Postgres 下的分片、索引、热点账户

账务(Ledger)数据库是金融系统最硬的那块骨头。本文从 RPO/RTO 目标出发,对比 PostgreSQL、MySQL、OceanBase、TiDB、CockroachDB、Oracle、TigerBeetle 等主流选型,讲分片维度、热点账户拆解、索引设计、冷热归档、MVCC 并发控制与审计合规,辅以蚂蚁、Stripe、PayPal、Square 的真实演进路径。


By .