1. 坏账率基础概念

1.1 坏账率定义

坏账率(Bad Debt Rate, BDR)是量化风控策略中最核心的损失度量指标之一,用于衡量在特定时间窗口内,因借款人违约导致无法收回的本金及利息占整体放款金额的比例。在量化策略回测中,坏账率直接反映策略的风险暴露水平,是哨兵告警系统必须监控的首要指标。

核心认知:坏账率不是静态数字,而是随账龄(Vintage)推移动态演变的累积损失率。回测中通常使用“最终坏账率”或“12期滚动坏账率”作为告警基准。

1.2 计算公式

坏账率的标准计算公式分为两种口径:

口径类型 公式 适用场景
金额口径 坏账率 = (逾期90天以上未还本金 + 核销金额) / 当期放款总额 × 100% 资金方损益评估、拨备计提
笔数口径 坏账率 = 坏账笔数 / 放款总笔数 × 100% 策略效果对比、客群质量分析

在量化回测中,推荐使用金额口径作为哨兵告警的主指标,因为其与资金损失直接挂钩。具体计算时需注意:

  • 逾期天数阈值(通常为M3+,即逾期90天以上)需在策略文档中明确定义
  • 核销金额包含已催回部分后的净损失
  • 分母“当期放款总额”应与分子保持相同账龄窗口
# 坏账率计算示例(Python伪代码)
def calculate_bad_debt_rate(loan_book, overdue_days=90):
    """
    计算金额口径坏账率
    :param loan_book: DataFrame,包含放款金额、逾期天数、核销金额
    :param overdue_days: 逾期阈值
    :return: 坏账率(百分比)
    """
    total_principal = loan_book['loan_amount'].sum()
    bad_debt = loan_book[
        (loan_book['overdue_days'] >= overdue_days) |
        (loan_book['write_off_flag'] == 1)
    ]['loan_amount'].sum()
    return round(bad_debt / total_principal * 100, 2)

1.3 在量化策略中的重要性

坏账率在量化策略中扮演三重角色:

  1. 策略有效性标尺:任何量化策略的最终目标都是在风险可控前提下最大化收益,坏账率是衡量风险端最直接的指标。策略A的通过率比策略B高10%,但坏账率高出3个百分点,则策略A可能不具备实际部署价值。
  2. 哨兵告警核心维度:在回测与实时监控中,坏账率一旦突破预设阈值,系统应立即触发告警,暂停策略或自动调参。没有坏账率监控的量化策略如同没有仪表盘的飞机。
  3. 策略迭代优化锚点:坏账率与通过率、收益率构成“不可能三角”。调优阈值时,坏账率是必须锁定的约束条件——例如“在坏账率不超过5%的前提下最大化通过率”。
量化策略铁律:坏账率每上升1个百分点,通常需要通过率提升5-8个百分点才能弥补损失。回测中必须建立坏账率与收益率的联动分析模型。
坏账率在量化策略中的三重角色 坏账率(BDR) 策略有效性标尺 衡量风险端核心指标 决定策略是否可部署 哨兵告警核心维度 突破阈值自动触发告警 暂停策略或自动调参 策略迭代优化锚点 约束条件锁定优化方向 平衡通过率与收益率 ⚠ 坏账率监控的常见误区 • 只看整体坏账率,忽略分客群、分账龄的坏账率结构 • 使用静态阈值,未随宏观经济周期或策略迭代动态调整 • 回测坏账率与线上实际坏账率口径不一致,导致告警失效

1.4 坏账率与其他风险指标的对比

在量化策略中,坏账率常与以下指标配合使用,形成完整的风险监控体系:

指标名称 定义 与坏账率的关系 告警优先级
逾期率(Delinquency Rate) 当前处于逾期状态(如M1/M2)的贷款占比 坏账率的先行指标,逾期率上升通常预示坏账率将在1-3个月后攀升 高(提前预警)
迁徙率(Flow Rate) 从低逾期阶段向高逾期阶段转化的比例 坏账率的驱动因子,迁徙率恶化直接导致坏账率上升 中(过程监控)
回收率(Recovery Rate) 坏账发生后通过催收回收的金额比例 坏账率的修正因子,回收率越高,最终净坏账率越低 低(事后评估)
Vintage坏账率 按放款月份分组的最终坏账率 坏账率的精细化版本,用于识别策略调整的真实效果 高(策略评估)
重要提醒:在设置哨兵告警阈值时,不能仅依赖坏账率单一指标。建议采用“逾期率 + 迁徙率 + 坏账率”三级联动告警机制:逾期率触发黄色预警,迁徙率触发橙色预警,坏账率触发红色预警并自动暂停策略。

1.5 坏账率的时间窗口与账龄效应

坏账率具有显著的时间滞后性和账龄累积性。一笔贷款从发放到被确认为坏账,通常需要经历3-6个月的账龄窗口。因此,在量化策略回测中必须明确:

  • 观察窗口:至少覆盖12个月的账龄,确保大部分坏账已被识别
  • 滚动计算:使用滚动12个月(Rolling 12M)坏账率作为告警基准,消除季节性波动
  • 截断处理:对于账龄不足的放款,使用“预期坏账率”替代实际坏账率,避免低估风险
坏账率时间窗口与账龄累积效应 T0 T+1M T+3M T+6M T+9M T+12M 放款日 坏账率为0% M1逾期出现 坏账率≈0.5% M3+坏账确认 坏账率≈2.5% 坏账率加速攀升 坏账率≈4.0% 坏账率趋稳 坏账率≈4.5% 最终坏账率 坏账率≈4.8% 坏账率随账龄累积上升 ⏱ 回测中建议使用T+12M的最终坏账率作为告警基准,避免因账龄不足导致误报

1.6 坏账率在哨兵告警中的阈值设定原则

基于以上概念,在《量化策略回测坏账率哨兵告警阈值调优指南》中,坏账率阈值的设定需遵循以下原则:

  • 绝对阈值:根据监管要求或资金方风险偏好设定硬性上限(如坏账率不得超过8%)
  • 相对阈值:基于历史回测坏账率的均值+2倍标准差,捕捉异常波动
  • 动态阈值:结合宏观经济指标(如GDP增速、失业率)进行周期性调整
  • 分层阈值:按客群、产品、渠道分别设定差异化阈值,避免一刀切
实战建议:首次部署哨兵告警系统时,建议将坏账率阈值设定为回测均值的1.5倍。运行3个月后,根据实际数据分布重新校准至均值+2倍标准差,平衡告警灵敏度与误报率。