1. 从零开始:为什么Vintage分析是信贷风控的“定盘星”?
干了这么多年风控,我见过太多团队在数据海洋里打转,报表做了一大堆,但问到“我们这批去年6月放的款,现在风险到底怎么样了?”时,往往只能得到一个模糊的“还行”或者“有点恶化”。这种凭感觉的判断,在业务规模小的时候或许能蒙混过关,一旦盘子做大,分分钟就是真金白银的损失。而Vintage分析,就是把你从这种“感觉式”风控中拯救出来的关键工具。它不是一张普通的报表,而是信贷资产全生命周期的“体检报告”和“成长日记”。
简单来说,Vintage分析的核心思想是“同生共死,横向比较”。想象一下,你把每个月放出去的贷款看作一个独立的“出生队列”(Cohort),比如“2023年1月出生队”、“2023年2月出生队”。然后,你持续追踪每个“队列”在出生后的每一个月(也就是账龄MOB)的表现,比如逾期率、坏账率。这样一来,你就能清晰地看到:一月份的贷款在放款后第3个月(MOB3)的逾期情况,和二月份的贷款在MOB3时的逾期情况,孰优孰劣?我们新上的风控策略,到底有没有让资产质量变好?
我刚开始接触时也觉得概念有点绕,但后来想通了,它其实就像农民种地。你不能只看今天收获了100斤粮食就高兴,你得知道这是哪块地、什么时候种的、生长过程中经历了什么。Vintage分析就是帮你把每一批“种子”(贷款)从播种(放款)到各个生长阶段的表现都记录下来,从而判断土壤(市场环境)、肥料(风控策略)和气候(经济周期)到底产生了什么影响。没有这个,你的风控就是“靠天吃饭”。
对于数据分析师或者风控策略同学来说,掌握Vintage分析,意味着你拥有了穿透时间迷雾、洞察风险本质的能力。你能回答老板最关心的几个问题:我们的资产质量是在变好还是变坏?新策略上线到底有没有效?不同渠道、不同产品线的风险差异有多大?未来的坏账大概会是多少?这篇文章,我就把自己从数据表设计到风险洞察的全流程实战经验,掰开揉碎了讲给你听,保证你跟着做一遍就能上手。
2. 地基要牢:设计能“活”过来的借据与还款计划表
所有高级的分析都建立在干净、准确、结构合理的基础数据之上。Vintage分析也不例外。很多团队跑出来的Vintage曲线诡异跳动,追根溯源,八成是底层数据表设计有坑。这里我分享两个核心表的设计心法,它们不是冷冰冰的数据容器,而应该能真实反映业务的“心跳”。
2.1 借据表:每一笔贷款的“身份证”
借据表,记录了一笔贷款从诞生那一刻起最核心的静态信息。你可以把它想象成一个人的身份证,出生日期、籍贯等基本信息一旦确定就不再改变。在设计时,最关键的是想清楚哪些信息是“终身不变”的。
-- 这是我常用的一个借据表结构,字段解释我都写在后面了
CREATE TABLE IF NOT EXISTS dm_risk.loan_order (
loan_no STRING COMMENT '借据号,全局唯一主键,相当于身份证号',
cust_id STRING COMMENT '客户ID',
product_code STRING COMMENT '产品代码,如“消费贷-12期”',
channel_code STRING COMMENT '进件渠道代码,用于分析不同渠道风险',
loan_date DATE COMMENT '放款日期,Vintage分组的核心依据!',
loan_term INT COMMENT '总期数,如12期',
loan_prin_amt DECIMAL(18,2) COMMENT '贷款本金总额',
loan_int_amt DECIMAL(18,2) COMMENT '贷款总利息',
loan_fee_amt DECIMAL(18,2) COMMENT '其他费用总额',
year_rate DECIMAL(8,4) COMMENT '年化利率',
repay_mode STRING COMMENT '还款方式,如“等额本息”、“等额本金”、“先息后本”',
first_due_date DATE COMMENT '首期应还日,用于计算账龄MOB的另一个锚点',
loan_status STRING COMMENT '借据状态:正常、逾期、结清、核销等',
settle_date DATE COMMENT '最终结清/核销日期',
create_time TIMESTAMP COMMENT '记录创建时间'
) COMMENT '贷款借据主表';
这里我踩过一个坑:早期我们只记录了loan_date(放款日),但有些产品是放款后下个月才首期还款。直接按放款日算MOB,会导致所有贷款的“第一个月”实际上都没有还款行为,风险曲线起点失真。后来我们加上了first_due_date,在计算表现期时就更精准了。记住,任何可能影响时间轴计算的字段,都要慎重考虑并留好。
2.2 还款计划表:贷款生命的“心电图”
如果说借据表是身份证,那还款计划表就是动态的“心电图”,每一笔还款、每一次逾期都是一次心跳。它的设计直接决定了你后续计算逾期、剩余本金的复杂程度。
CREATE TABLE IF NOT EXISTS dm_risk.repay_plan (
plan_id STRING COMMENT '计划明细ID,主键',
loan_no STRING COMMENT '关联借据号',
term_seq INT COMMENT '期序,从1开始',
due_date DATE COMMENT '应还日',
due_prin_amt DECIMAL(18,2) COMMENT '当期应还本金',
due_int_amt DECIMAL(18,2) COMMENT '当期应还利息',
due_fee_amt DECIMAL(18,2) COMMENT '当期应还费用',
due_total_amt DECIMAL(18,2) COMMENT '当期应还总额',
repay_date DATE COMMENT '实际还款日',
act_prin_amt DECIMAL(18,2) COMMENT '实际偿还本金',
act_int_amt DECIMAL(18,2) COMMENT '实际偿还利息',
act_fee_amt DECIMAL(18,2) COMMENT '实际偿还费用',
act_total_amt DECIMAL(18,2) COMMENT '实际偿还总额',
overdue_days INT COMMENT '当前逾


1万+

被折叠的 条评论
为什么被折叠?



