3. 坏账率定义与计算

坏账率是衡量信贷资产质量的核心指标。在 Tick 级高频风控场景中,坏账率的计算粒度、判定时效和滚动方式直接影响 PSI 哨兵的监控灵敏度。本节从公式、判定标准和计算口径三个维度展开。

3.1 坏账率公式

坏账率的基本公式为:

坏账率 = (当期认定为坏账的金额) / (当期应还总额或放款总额) × 100%

在 Tick 级数据流中,分母通常取 “当期应还本金总额”(即到期未还且进入催收队列的资产池),分子取 “逾期超过阈值且经判定为不可回收的金额”。高频场景下,公式需按时间窗口(如小时级、分钟级)切片计算:

BadRate(t) = Σ(坏账金额_i) / Σ(应还金额_i)  其中 i ∈ 时间窗口 [t-Δt, t]
参数 说明 高频 Tick 场景建议
坏账金额 经判定无法回收的本金 + 利息 + 罚息 按 Tick 级事件流实时标记
应还金额 当期应还总额(含正常、逾期、展期) 使用滑动窗口聚合,避免边界抖动
时间窗口 Δt 计算粒度(如 1 小时、1 天) 建议 1 小时,与 PSI 哨兵对齐
关键点: 高频 Tick 场景下,坏账率公式必须与逾期状态机联动,避免将“刚逾期 1 天”的资产误判为坏账。

3.2 坏账判定标准

坏账判定不能仅依赖逾期天数,需结合 “逾期天数 + 催收状态 + 资产回收概率模型” 三重条件。以下是 Tick 级风控常用的判定标准:

  • 逾期天数阈值: 通常设定为 M3+(逾期 ≥ 90 天)或 M6+(逾期 ≥ 180 天),高频场景可缩短至 M2+(60 天)以加快出清。
  • 催收状态标记: 进入“失联”、“无效承诺”、“拒绝还款”等终态催收队列。
  • 回收概率模型: 基于历史 Tick 数据训练的回收率模型,若预测回收概率 < 5%,则自动标记为坏账。
判定维度 静态坏账标准 滚动坏账标准(高频)
逾期天数 ≥ 90 天 ≥ 60 天(可调)
催收状态 人工终审 自动规则 + 模型打分
回收概率 无模型 实时模型 < 5%
判定时效 T+1 日终 分钟级 Tick 流
避坑提示: 高频场景下,判定标准不宜过于激进。建议设置“观察期”缓冲,避免因模型抖动导致坏账率剧烈波动,进而触发 PSI 哨兵误报。

3.3 滚动坏账率与静态坏账率

两种口径在计算逻辑、业务含义和监控用途上存在本质差异。下表对比了核心区别:

对比维度 静态坏账率 滚动坏账率
计算口径 固定观察期(如 2025-01 放款) 连续滚动窗口(如近 30 天放款)
分母 固定放款池总额 滑动窗口内放款总额
分子 该放款池最终坏账金额 窗口内放款在后续观察期产生的坏账
时效性 滞后(需等待放款池成熟) 实时(随新放款和坏账事件更新)
PSI 哨兵适用性 不适用(太滞后) 适用(分钟级更新)

在 Tick 级 PSI 哨兵中,滚动坏账率 是首选口径。其计算流程如下:

  1. 设定滚动窗口长度(如 30 天)和更新频率(如每小时)。
  2. 每次 Tick 事件(新放款、还款、逾期、坏账标记)触发窗口重算。
  3. 窗口内所有放款按“放款日期”归入对应批次,计算每批次的坏账率。
  4. 对窗口内各批次坏账率按放款金额加权平均,得到当前滚动坏账率。
滚动坏账率(t) = Σ(批次_i 坏账金额) / Σ(批次_i 放款金额)
其中批次_i ∈ [t - 30天, t]
工程建议: 实现滚动坏账率时,使用 Flink 或 Spark Streaming 维护一个“滑动聚合状态”,避免每次全量扫描历史数据。状态大小 = 窗口长度 × 平均 Tick 事件量,通常可控制在内存可承受范围内。
坏账率计算与判定流程(高频 Tick 场景) 坏账率计算与判定流程(高频 Tick 场景) Tick 事件流 逾期判定(M2+) 催收状态标记 回收概率模型 坏账标记 滚动窗口聚合 坏账率输出 说明: 1. Tick 事件流包含:放款、还款、逾期、催收状态变更、模型打分等事件。 2. 逾期判定采用 M2+(60 天)阈值,结合催收状态和回收概率模型三重确认。 3. 滚动窗口聚合使用滑动窗口(默认 30 天),每小时输出一次坏账率。 滚动坏账率 vs 静态坏账率对比 滚动坏账率 vs 静态坏账率对比 静态坏账率 固定放款池 最终坏账 • 观察期固定(如 2025-01) • 需等待放款池成熟(6-12 个月) • 滞后性强,不适合实时监控 • 用于事后考核和模型验证 滚动坏账率 滑动窗口 实时坏账 • 窗口连续滚动(如近 30 天) • 随新放款和坏账事件实时更新 • 时效性强,适合 PSI 哨兵 • 需注意窗口边界效应