随着消费金融业务的快速发展,金融机构在扩大信贷投放规模的同时,也面临借款人违约风险识别和资产组合风险管理的双重压力。如何基于客户基础信息、历史借贷行为、还款表现以及外部信用记录,对客户风险水平进行有效识别,已成为消费信贷业务中的重要问题。
本项目以消费信贷场景为研究对象,基于 MySQL 构建客户信用风险分析数据库,通过多表关联、指标汇总和规则化评分,本项目实现了从 数据建模 → 风险分析 → 风险分层 的完整分析闭环。
本项目主要围绕以下三个目标展开:
第一,建立消费信贷客户信用风险分析数据库,实现客户、历史申请、还款、征信和信用卡行为等多源数据的统一管理。
第二,基于 SQL 对客户违约风险进行分析,重点研究贷款负担、历史审批表现、逾期行为、外部负债与客户当前违约之间的关系。
第三,构建可解释的规则化风险评分模型,将客户划分为低风险、中风险和高风险三个层级,为信贷审批与贷后管理提供支持。
本项目共设计 6 张核心数据表:
存放客户基础信息、收入情况、当前贷款信息及违约标签,是项目的核心主表。
记录客户历史贷款申请情况,包括申请金额、审批结果、用途等信息,用于分析客户历史借贷行为。
记录客户历史贷款的分期还款信息,用于计算逾期次数、平均逾期天数、准时还款率等指标。
记录客户在其他金融机构的信贷和负债信息,用于衡量客户外部信用风险。
记录客户信用卡余额、授信额度、还款与逾期情况,用于分析信用卡使用压力及风险特征。
基于上述多张明细表汇总形成客户级分析宽表,用于后续大部分风险分析与分层建模。
本项目的数据关系如下:
- 一个客户对应多条历史申请记录
- 一个客户对应多条分期还款记录
- 一个客户对应多条外部征信记录
- 一个客户对应多条信用卡行为记录
- 一条历史申请记录可对应多条分期还款记录
核心关联字段:
customer_id:客户唯一标识prev_app_id:历史申请唯一标识
根据消费信贷业务逻辑,设计客户、历史申请、还款、征信、信用卡行为等关系型数据表。 完成基础数据预处理,包括:
- 缺失值检查与处理
- 主键重复检查
- 数值字段标准化
- 无效值与异常值识别
- 类别字段统一
在完成数据插入后,本项目通过 SQL 对多表进行聚合,构建客户级风险汇总宽表,以统一管理后续分析所需的关键变量。
为了更好地识别客户信用风险,本项目围绕消费信贷业务构建了以下核心指标:
(一)贷款收入比 loan_to_income_ratio
贷款收入比等于客户贷款金额除以客户收入总额,用于衡量客户贷款负担水平。该指标越高,说明贷款规模相对于收入越大,客户违约风险通常越高。
(二)年金收入比 annuity_to_income_ratio
年金收入比等于年金金额除以客户收入总额,用于衡量客户偿债压力。虽然本项目主要展示贷款收入比,但年金收入比同样反映客户月度现金流压力。
(三)历史申请次数 prev_app_count
该指标表示客户的历史申请总次数。申请行为过于频繁可能反映客户资金需求较大或信用状况不稳定。
(四)历史拒贷次数与拒贷率 prev_refused_count、prev_refusal_rate
通过统计客户历史申请中被拒绝的次数及其占比,可以反映客户历史审批表现。拒贷率越高,说明客户历史风险水平可能越高。
(五)平均逾期天数与最大逾期天数 avg_days_past_due、max_days_past_due
该类指标基于分期还款明细表构建,用于衡量客户历史还款表现。平均逾期天数越高,说明客户整体还款能力和还款意愿越弱。
(六)逾期次数与逾期率 late_payment_count、late_payment_rate
通过统计客户逾期还款的次数及其占比,可以更直观地衡量客户还款纪律性。
(七)外部负债与外部逾期金额 bureau_total_debt、bureau_total_overdue
外部征信负债和逾期金额反映客户在其他金融机构的信用表现。若客户存在较高外部负债或外部逾期,说明其整体债务压力较大。
(八)平均信用卡使用率 avg_card_utilization_ratio
该指标用于衡量客户信用卡余额占额度的比例。若信用卡使用率较高,通常说明客户资金较为紧张,短期偿债能力较弱。
为了实现客户风险分层,本项目采用规则化评分方式对客户进行打分。评分逻辑主要包括五个维度:
第一,贷款收入比。贷款收入比越高,风险分值越高。 第二,历史拒贷率。拒贷率越高,说明历史审批表现越差,风险分值越高。 第三,平均逾期天数。逾期天数越长,说明还款行为越差,风险分值越高。 第四,外部征信逾期金额。若客户存在外部逾期,则增加风险分值。 第五,信用卡使用率。信用卡使用率越高,说明资金占用压力越大,风险分值越高。
在计算总分后,本项目将客户划分为以下三个层级:
风险得分大于等于 60 分的客户划分为高风险客户;
风险得分在 35 至 59 分之间的客户划分为中风险客户;
风险得分低于 35 分的客户划分为低风险客户。
该评分方式虽然较为简化,但具有较强可解释性,便于展示 SQL 在业务规则建模中的应用。
本项目围绕六个核心图表展开分析,并通过 SQL 对客户违约风险进行分组比较。
(一)消费信贷资产组合违约概览
首先,对整体客户组合进行统计,计算总客户数、违约客户数、总体违约率、平均贷款金额和平均收入等指标。该部分主要用于从整体上把握组合风险水平。
从结果上看,样本客户中存在一定比例的违约客户,说明数据中已经构造出明显的风险差异,具备进一步分析的基础。
(二)不同贷款收入比客户的违约率对比
进一步将客户按贷款收入比分组,比较各组客户的违约率。分析结果表明,贷款收入比越高的客户,其违约率通常越高。这说明授信负担是影响消费信贷违约风险的重要因素。
这一发现与实际消费金融业务逻辑一致,即当客户贷款规模相对于收入水平过高时,其偿债能力将受到更大压力。
(三)历史拒贷率与当前违约率关系
本项目进一步分析客户历史拒贷率与当前违约率之间的关系。结果显示,历史拒贷率较高的客户,其当前违约率整体更高,说明历史审批表现对当前风险识别具有较强参考价值。
这说明在贷前审批中,客户历史申请行为可以作为重要的风险判断依据。
(四)平均逾期天数分组下的违约率表现
通过对平均逾期天数进行分组并比较违约率,可以发现:随着逾期天数增加,客户违约率明显上升。由此可见,还款行为是识别信用风险最直接、最有效的维度之一。
在消费信贷业务中,逾期记录往往比单纯的基础属性更能反映客户未来的风险水平。
(五)客户风险分层结构分布
在完成风险评分后,本项目统计了低风险、中风险和高风险客户的占比。结果表明,样本客户能够较好地分布在不同风险层级中,高风险客户占比相对较小,但风险特征更为集中。
该结果说明规则化评分体系能够将客户区分为不同风险群体,便于后续差异化管理。
(六)不同风险层级客户违约率对比
最后,本项目比较不同风险层级客户的违约率。结果显示,高风险客户的违约率显著高于中低风险客户,说明本项目构建的风险评分体系具有一定的风险识别能力和业务解释力。
这也是整个项目最重要的分析结论,表明所设计的评分与分层逻辑在本项目数据环境下是有效的。
综合以上分析,本项目得到以下几项主要结论:
第一,贷款收入比较高的客户整体违约率更高,说明贷款负担是影响消费信贷风险的重要因素。
第二,历史拒贷率较高的客户,其当前违约风险更高,说明历史申请行为对风险识别具有重要参考价值。
第三,平均逾期天数和逾期次数越高,客户当前违约概率越大,还款表现是最关键的风险指标之一。
第四,存在外部征信逾期和较高外部负债的客户,更容易集中于高风险层,说明外部信用信息能够有效补充本机构内部数据。
第五,基于多维指标构建的规则化风险评分体系,能够较好地区分低风险、中风险和高风险客户,并表现出明显的违约率差异。
基于分析结果,可以提出以下业务建议:
第一,在贷前审批环节中,应重点关注贷款收入比较高的客户,对其授信额度和还款能力进行更加严格的审查。
第二,对于历史申请中存在较高拒贷率的客户,应设置额外的审核机制,以防范潜在高风险客户进入资产组合。
第三,应将还款逾期记录作为风控监测的重要指标,对存在多次逾期或较长逾期天数的客户进行重点预警和跟踪。
第四,在客户风险评估中,除本机构内部数据外,还应充分利用外部征信信息,以提高对客户整体风险水平的识别能力。
第五,可将规则化风险分层结果应用于贷前筛查、贷中额度调整和贷后预警管理,实现差异化风控管理。
sql/
├── 01_create_tables.sql
├── 02_insert_data.sql
├── 03_build_agg_profile.sql
├── 04_risk_segmentation.sql
├── 05_six_core_diagrams.sql
outputs/
├── tables/
└── charts/