大数跨境
0
0

年损、助贷新规与存活路线:一个老风控人的硬核与唠嗑式分享

年损、助贷新规与存活路线:一个老风控人的硬核与唠嗑式分享 出海运营笔记
2025-09-23
44
导读:先说背景。最近大家都在转那几篇关于所谓“〔2025〕9号助贷新规”及“10月1日倒计时”“24–36 区间要


先说背景
最近大家都在转那几篇关于所谓“〔2025〕9号助贷新规”及“10月1日倒计时”“24–36 区间要被清掉”“24%+ 权益类打包要不被允许”的文章。

我这一个月微信上被之前的同行、资金方同事、原来合作的渠道老板轮番问:以后怎么做?定价降下来了还能活吗?资金方死盯的“年损”到底要做到多少才算及格?
我干了十几年信贷风控,从国内P2P到持牌机构和助贷,再到出海,见证过几轮“收紧+出清”周期。
说句掏心窝的:现在这个阶段,谁先真正弄懂“年损”逻辑,谁就先把命续上了。
所以我决定把这篇写给你——哪怕你是刚入行的“风控小白”。


一、到底什么是“年损”?别再把它和不良率混为一谈

很多人第一次被资金方问“你们的年损是多少”时,下意识甩一个“当前M3+”或“90+不良率”。
错。
年损(有的资金方叫“年化损失率”“年化净损”“Annual Loss Rate”)核心是:
在一个会计年度或滚动12个月里,资金真实承受的那部分“不可逆本金损失”的年化比例。

我习惯拆成三层看:

  1. 损失金额(Loss Amount)
    已经发生且确认无法再通过常规催回的净本金损失(通常=已核销本金 - 后续回收 + 回收成本,如果资金方口径简单,可能直接用“已核销本金 - 回收”)。

  2. 平均在贷余额(Average Outstanding Principal)
    不是年初余额,也不是年末余额,而是全年逐月(或逐日)期末在贷平均值。

  3. 年损率(Annual Loss Rate)

年损率公式:

如果你用的是一个“静态批次(Vintage)”尚不足12个月的观察窗口,则常见“年化”处理:

年化Vintage损失率公式:

这一年化只是估计,越早阶段越容易高估或低估。

别混淆:

  • [ 不良率 = (某时点的不良余额)/(在贷余额) ] 它是时点库存。
  • [ 年损率 ] 是流量属性,衡量“资金一年被消耗掉多少”。
  • [ M3+率、Roll率、逾期迁移 ] 是过程指标。
    资金方最终在定价模型里扣的,是年损(或其预估值),而不是单纯的不良库存。

二、为什么监管收紧后“年损”被放到放大镜下?

新规讨论里一个主线:综合定价天花板下降,24–36% 之间以及“24%+ 权益打包”类资产被规范甚至退出。
我们做定价拆解时的经典公式:
[ 综合定价 = 资金成本 + 获客&运营 + 风控年损 + 税费&拨备 + 目标利润 ]
当上限压下来,资金成本又因为大额合规资金偏紧而没法迅速下降,唯一能动刀的,就是“获客成本”和“风控年损”
所以资金方现在问你“年损”,不是闲聊,是在判断你这摊资产还能不能塞进它的收益结构里。


三、年损的主流口径与常见踩坑

我之前协助做尽调或接第三方资产组合时,第一反应是确认:口径统一了吗?

常见分歧点:

  1. 是否按“核销”时点确认,还是按“逾期≥180天”直接拉入损失。
  2. 是否扣除已回收(催回/资产包处置/以资抵债)的本金部分。
  3. 是否包含利息损失与费用减免。
  4. 分期产品提前结清,会不会扭曲年化。
  5. 展期、续贷算重生还是继续计入原Vintage。

我给小白的建议:拿资金方发来的合作协议或测算模型,把其“Loss”字段拆到原子层:

如果没有核销制度,就用“逾期≥X天未回收本金 - 后续回收”近似。
平均在贷余额可用:

精细一点:

资金方要严谨,多半用日均。


四、从“静态池”到“动态组合”:如何读懂年损演进

一个实际案例。
之前前同事接手一条“24–30%区间”资产链路,渠道声称“M3+ 只有4%”。
他让分析同事拉静态池。结果:

  • 放款第1月M1 率 8%
  • M2 回落到5%(因为强催 & 费用减免)
  • M3 又上跳到7%
    累积核销在第7月后陡增。
    最后12月时静态池累计净损失 / 初始本金 = 14%。
    年化前6个月时粗暴放大给资金方是 14% * 12 / 6 = 28%。
    资金方直接说:不行。
    他做的修正是把“后6个月回收尾水”的真实现金回流纳入期望(基于历史相似池回收曲线做回收率曲线假设),重新估计终局净损 11.2%,才勉强进入谈判区间。

启发

  • 别只看“M3+平稳”,要看核销/回收节奏。
  • 给资金方的“年损预测”要基于 Vintage 曲线与回收曲线拟合,而不是静态截面乘以年化系数。

五、一个落地的“年损分析”数据结构与代码示例

我放一份极简形态的 Python 示例,演示:

  1. 构造模拟放款数据
  2. 按Vintage计算累计净损失曲线
  3. 计算滚动12个月年损率
  4. 做一个简易的“回收后调整”
id: lufei
name: Annual Loss Calculation
type: code.python
content: |-
  import pandas as pd
  import numpy as np
  from datetime import datetime

  # 1. 构造模拟数据(真实场景直接从ODS或数据仓库抽取)
  np.random.seed(42)
  n = 3000
  disburse_dates = pd.date_range('2024-01-01','2024-12-31',freq='D')
  loans = pd.DataFrame({
      'loan_id': range(1, n+1),
      'disburse_date': np.random.choice(disburse_dates, n),
      'principal': np.random.choice([1000,1500,2000,3000,5000], n, p=[0.25,0.25,0.2,0.2,0.1]),
      'term_months': np.random.choice([3,6,9,12], n, p=[0.3,0.4,0.2,0.1])
  })
  loans['maturity_date'] = loans['disburse_date'] + pd.to_timedelta(loans['term_months']*30, unit='D')

  # 2. 随机生成违约与核销
  # 定义违约概率与回收率
  base_pd = 0.12  # 基础违约概率
  loans['default_flag'] = np.random.binomial(1, base_pd, n)
  # 默认违约发生在放款后1~term_months*30天
  loans['default_date'] = np.where(
      loans['default_flag']==1,
      loans['disburse_date'] + pd.to_timedelta(np.random.randint(30, 180, n), unit='D'),
      pd.NaT
  )
  # 核销:违约后再过 90~150 天
  loans['writeoff_date'] = np.where(
      loans['default_flag']==1,
      loans['default_date'] + pd.to_timedelta(np.random.randint(90,150,n), unit='D'),
      pd.NaT
  )
  # 回收:部分违约贷款在核销后 30~180 天回收一定比例
  loans['lgd'] = np.where(loans['default_flag']==1, np.random.beta(5,2,n), 0)  # 期望LGD ~ 0.7
  # 实际回收额 = principal * (1 - lgd) * 回收是否成功
  loans['post_recovery_flag'] = np.where(loans['default_flag']==1,
                                         np.random.binomial(1,0.35,n),
                                         0)
  loans['recovery_date'] = np.where(
      (loans['post_recovery_flag']==1),
      loans['writeoff_date'] + pd.to_timedelta(np.random.randint(30,180,n), unit='D'),
      pd.NaT
  )
  loans['recovery_amount'] = np.where(
      loans['post_recovery_flag']==1,
      loans['principal'] * (1 - loans['lgd']) * np.random.uniform(0.6,1.0,n),
      0
  )

  # 3. 生成月份面板,计算月末在贷
  calendar = pd.date_range('2024-01-31','2025-12-31',freq='M')
  records = []
  for dt in calendar:
      # 在贷:放款已发生且未到期且(未核销或未提前结清)
      onbook = loans[
          (loans['disburse_date'] <= dt) &
          (loans['maturity_date'] > dt) &
          ( (loans['writeoff_date'].isna()) | (loans['writeoff_date'] > dt) )
      ]['principal'].sum()
      # 当月核销本金
      writeoff = loans[loans['writeoff_date'].dt.to_period('M') == dt.to_period('M')]['principal'].sum()
      # 当月回收
      recovery = loans[loans['recovery_date'].dt.to_period('M') == dt.to_period('M')]['recovery_amount'].sum()
      records.append({
          'month': dt,
          'onbook_principal': onbook,
          'writeoff_principal': writeoff,
          'recovery_amount': recovery
      })
  panel = pd.DataFrame(records)
  panel['net_loss_flow'] = panel['writeoff_principal'] - panel['recovery_amount']
  panel['cum_net_loss'] = panel['net_loss_flow'].cumsum()
  panel['avg_onbook_12m'] = panel['onbook_principal'].rolling(12).mean()
  panel['net_loss_12m'] = panel['net_loss_flow'].rolling(12).sum()
  panel['annual_loss_rate'] = panel['net_loss_12m'] / panel['avg_onbook_12m']

  # 4. 简单的Vintage(按放款月)累计损失率
  loans['vintage_month'] = loans['disburse_date'].dt.to_period('M')
  # 取截至2025-12最新观察
  latest_obs = calendar.max()
  # 计算每笔是否在最新日前已核销及回收
  loans['net_loss_amount'] = np.where(
      (loans['writeoff_date'].notna()) & (loans['writeoff_date'] <= latest_obs),
      loans['principal'] - loans['recovery_amount'],
      0
  )
  vintage_stats = loans.groupby('vintage_month').agg(
      disb_prin=('principal','sum'),
      net_loss=('net_loss_amount','sum')
  ).reset_index()
  vintage_stats['cum_loss_rate'] = vintage_stats['net_loss'] / vintage_stats['disb_prin']

  # 5. 输出核心结果(尾部几行)
  print(panel[['month','onbook_principal','net_loss_flow','annual_loss_rate']].tail(6))
  print(vintage_stats.tail(6))

要点解读

  • 用到了“滚动12个月净损 / 滚动12个月平均在贷”来近似真实年损率。
  • Vintage 只是帮助你看不同放款月份的终局(或阶段性)损失质量。
  • 在真实项目中你需要:拆利息、本金;把展期逻辑、提前结清、减免抵销都映射进现金流。

接下来你可以加:

  • Recovery Curve 拟合(用 Weibull / Log-logistic)
  • LGD 分层(看额度、渠道、评分分箱)
  • 情景测试:违约率 +100bps / 回收率 -10% 对年损弹性。

六、如何快速把“年损”打进策略闭环?

我前任领导常给团队讲一句:年损不是财务结算指标,是实时控制指标
落地路径:

  1. 前端准入:
    • 用资金方认可的评分(或你映射到其PD档位)控制高 PD 流量占比。
    • 渠道维度出“PD * 预估LGD”成本线,超过即削减配额。
  2. 授信与定价联动:
    • 同一风险等级不同额度/期限组合的 LGD 差异要量化,很多时候把 12 期压成 6 期,LGD 降低 > APR 降低。
  3. 贷中监测:
    • D1~D7 早期逾期曲线与目标曲线偏差实时告警,用 [ 年损预估 = 当前Vintage累计损失 + (预测剩余违约 * 预测LGD - 预计回收) ] 动态刷新。
  4. 贷后回收:
    • 催收策略 A/B:语音+外呼 vs 智能触达+减免额度,比较单位回收贡献。
    • 早期回收对年损影响极大:将 M1 冻结天数从 15 降到 7,历史案例我们把最终LGD拉低了 2.3 个百分点。
  5. 数据闭环:
    • 周会固定一页:Rolling 12M 年损率、Vintage 梯度、渠道分层年损贡献 TOP10、策略变更影响。

七、在“24%天花板”下的年损倒推

假设新规后你的目标资产综合定价 ≤ 24%。
资金成本(含资金占用、担保结构)= 8%。
获客+运营摊销 = 5%。
税费&拨备 估 2%。
目标利润(最低生存)= 3%。
那么可容纳的年损:
[ 可容纳年损 = 24% - 8% - 5% - 2% - 3% = 6% ]

如果你现在真实年损=10%,就必须:

  • 渠道调结构:砍掉尾部 20% 高 PD 流量。
  • 缩短期限:6→3 期,LGD 降低。
  • 加强前置核验(实名、在网时长、设备黑产特征),削掉欺诈段(欺诈一掉,年损立刻下台阶)。
  • 回收策略前移(首逾 3 日触达率从 52% → 70%)。
    你做完这些,年损可能从 10% 降到 7%。
    剩余 1 个百分点,用资产组合再平衡(导入一部分优质代发工资流量),才能压到 6%。

八、为什么“24–36区间资产”退出会加剧年损压力?

以前你靠高定价池子里的“高息覆盖低效”模式,把一些低效率渠道亏损掩盖掉。
这些资产被清掉后,风险补偿冗余被抽走,你的运营低效率、策略迟钝、数据烟囱会立即赤裸裸映射到年损。
所以现在是“结构性降杠杆”。
一个战术动作:

  • 用“渠道—授信段—期限”三维毛利矩阵,把负毛利格子标红,分三批出清。
  • 同时建立“替换资产孵化池”,别一刀砍完导致账面在贷崩塌(平均在贷下降=分母缩=年损率短期被放大)。

九、快速评估——拿到一份数据你先看什么?

某国内头部助贷公司真实在支援一个团队时的 Checklist:

  1. 集中度:Top5 渠道放款占比 > 60% 吗?
  2. D1 逾期 vs M1+ 存量是否存在异常“遮掩”(强催/续贷掩盖)?
  3. Vintage 曲线上升是否“拖尾”(>6期后陡增表明催收后置化或展期滥用)?
  4. 回收率分层:首逾<=30 天与 >60 天资源配置是否失衡?
  5. 欺诈段:首逾=核销比率(首逾即死)高于多少?>40% 说明前端核身漏。
  6. 年损拆解:[ 年损 = 欺诈损失 + 信用风险损失 - 回收 ] 逐项列出。

快速把高影响因子排序,通常 Top3 能贡献 70% 改善。


十、给“小白”一个“一周内提升”的行动包

  • 第1天:对齐资金方年损口径,写一页“公式+字段映射”发群里。
  • 第2天:拉最近12个 Vintage,画累计净损失曲线与行业基准。
  • 第3天:拆分渠道段年损贡献,标出 Tail 渠道。
  • 第4天:建立首逾(D1)预测模型基线(哪怕是逻辑回归),输出重要变量。
  • 第5天:和催收核对前 7 天触达率、承诺还款兑现率。
  • 第6天:做定价倒推,算“目标年损倒推所需 PD * LGD 路径”。
  • 第7天:写一份“年损降3个百分点路线图”复盘。

做到这套,你不再是“小白”。


十一、常见误解再纠正一次

  • “M3+低=年损低”
    不,总存在隐藏核销尾或展期稀释。
  • “年损就是本金核销除以期末在贷”
    不,是年度净损 / 平均在贷。
  • “年损下来了说明没问题”
    也可能是放款收缩过快导致分母塌缩。
  • “先扩量再控损”
    在政策收紧窗口,先控损才能保命,再扩量。

十二、回到新规冲击:我真实的三个判断

  1. 行业分化:能把年损压到 5–6% 且资金成本控制住的头部会拿到更优额度。
  2. 技术栈重估:粗放模式会被挤出,自动化实时年损监测进入标配。
  3. 渠道议价倒挂:获客单价下不来又不敢高价续命的,会被迫转型数据分发或做联合贷服务层。

十三、最后的心法:把年损当“活指标”

我前任领导常讲一句:

年损不是等财务关账后才知道的结果,而是你每周能手动调弦的乐器。

当你把“策略变更 → 逾期早期信号偏移 → Vintage曲线修正 → 年损预测偏差 → 定价或额度再调”这条闭环通顺后,
合规新规只是换了题目,解题思路不变。


结语

写到这里,如果你原本对“年损”是模糊的,现在应该能:

  • 说清它与不良率、逾期率区别
  • 用滚动12M方式算出资金方认可的年损率
  • 把年损拆解到渠道、期限、额度、欺诈段
  • 在 24% 定价天花板下倒推可承受年损并制定降损路线

如果你想,要不我下一篇写:海外风控和国内风控区别和联系?

有收获就点赞、在看、关注,我会继续把过去多年踩过的坑拆开给你看。

我们下篇见。


参考注释
[1] 最高人民法院相关司法解释(民间借贷利率上限调整背景)
[2] 《商业银行互联网贷款管理暂行办法》有关风险分担与集中度条款
[3] Basel 信用风险框架中 PD / LGD / EAD 概念延伸(用于本地化拆解年损)


END


【深度】度小满押注墨西哥现金贷:开局的第一步怎么走?


马来WeRent:东南亚租机的机会×渠道×案例


案例拆解|DiDi Finanzas 在墨西哥:场景化放贷 + 本地化持牌的一体化打法


出海现金贷布局全球: 亚洲最稳、拉美提速、非洲起势之拉美篇全攻略


尼日利亚现金贷市场机会与风险、获客成本及渠道全攻略


印尼“蝌蚪贷”大清洗


墨西哥贷超市场分析2025



【声明】内容源于网络
0
0
出海运营笔记
1234
内容 40
粉丝 0
出海运营笔记 1234
总阅读657
粉丝0
内容40