Vintage与Roll Rate分析实战:Python+Pandas 透视贷后资产质量

发布时间:2026/8/20 7:44:26

Vintage与Roll Rate分析实战:Python+Pandas 透视贷后资产质量
Vintage与Roll Rate分析实战PythonPandas透视贷后资产质量1. 数据准备与清洗在开始Vintage和Roll Rate分析之前我们需要确保数据质量。假设我们已经从数据库中提取了贷款表现数据包含以下关键字段import pandas as pd import numpy as np import matplotlib.pyplot as plt # 模拟数据加载 loan_data pd.read_csv(loan_performance.csv, parse_dates[disbursement_date, due_date, repayment_date]) # 关键字段检查 required_columns [loan_id, disbursement_date, due_date, repayment_date, loan_amount, principal_paid, interest_paid, dpd] assert all(col in loan_data.columns for col in required_columns), 缺少必要字段数据清洗关键步骤处理缺失值loan_data loan_data.dropna(subset[disbursement_date, due_date])计算逾期天数(DPD)loan_data[dpd] np.where( loan_data[repayment_date].isna(), (pd.to_datetime(today) - loan_data[due_date]).dt.days, (loan_data[repayment_date] - loan_data[due_date]).dt.days ) loan_data[dpd] np.where(loan_data[dpd] 0, 0, loan_data[dpd])标记逾期状态bins [-1, 0, 30, 60, 90, float(inf)] labels [C, M1, M2, M3, M4] loan_data[bucket] pd.cut(loan_data[dpd], binsbins, labelslabels)提示实际业务中逾期状态的定义可能因机构政策而异需根据实际情况调整分箱规则2. Vintage分析实现Vintage分析的核心是观察不同放款月份(MOB)的资产表现随时间的变化趋势。以下是完整的实现代码def calculate_vintage_analysis(data, metricdefault_rate): 计算Vintage分析报表 :param data: 贷款表现数据 :param metric: 分析指标可选default_rate/delinquency_rate等 :return: Vintage分析报表 # 计算MOB(账龄) max_date data[disbursement_date].max() data[mob] ((max_date - data[disbursement_date]) / np.timedelta64(1, M)).astype(int) # 按放款月份和MOB分组 vintage data.groupby([ data[disbursement_date].dt.to_period(M), mob ]).agg({ loan_id: count, loan_amount: sum, dpd: lambda x: (x 30).sum() # 30DPD视为违约 }).rename(columns{loan_id: loan_count, dpd: default_count}) # 计算违约率 vintage[default_rate] vintage[default_count] / vintage[loan_count] vintage[default_rate_pct] (vintage[default_rate] * 100).round(2) # 重塑为透视表 vintage_pivot vintage.reset_index().pivot( indexdisbursement_date, columnsmob, valuesf{metric}_pct if rate in metric else metric ) return vintage_pivotVintage报表解读要点横向比较观察不同放款月份在同一账龄的表现差异纵向趋势关注特定放款月份随账龄增加的表现变化稳定期识别通常6-12个月后违约率趋于稳定可视化示例vintage_data calculate_vintage_analysis(loan_data) plt.figure(figsize(12, 8)) sns.heatmap(vintage_data, annotTrue, fmt.1f, cmapYlOrRd, linewidths.5) plt.title(Vintage Analysis - 30DPD % by MOB) plt.xlabel(Month on Book (MOB)) plt.ylabel(Disbursement Month) plt.show()3. Roll Rate分析实现滚动率分析揭示了贷款状态之间的迁移概率是预测未来违约率的重要工具def calculate_roll_rates(data, periodM): 计算滚动率矩阵 :param data: 贷款表现数据 :param period: 分析周期M(月)/Q(季) :return: 滚动率矩阵 # 确保数据按时间排序 data data.sort_values([loan_id, due_date]) # 标记观察点和下期状态 data[next_bucket] data.groupby(loan_id)[bucket].shift(-1) # 过滤无效记录 roll_data data.dropna(subset[next_bucket]) # 计算迁移数量 roll_matrix pd.crosstab( indexroll_data[bucket], columnsroll_data[next_bucket], normalizeindex ).mul(100).round(1) return roll_matrixRoll Rate矩阵业务解读当前状态CM1M2M3M4回收率C92.57.50.00.00.0-M165.225.39.50.00.065.2M230.140.220.59.20.030.1M315.025.030.020.010.015.0注意上表为示例数据实际分析中需结合业务场景定义回收标准4. 分析结果应用与策略优化基于Vintage和Roll Rate分析我们可以制定以下策略1. 产品定价优化# 计算不同客群的Vintage表现 risk_segments loan_data.groupby(risk_segment).apply( lambda x: calculate_vintage_analysis(x).mean(axis1) ) # 可视化不同风险等级的表现差异 risk_segments.T.plot(figsize(10,6)) plt.title(Vintage Performance by Risk Segment) plt.ylabel(Default Rate (%)) plt.xlabel(MOB) plt.grid(True)2. 催收资源分配根据Roll Rate分析结果我们可以优化催收策略早期催收重点M1→M2迁移率高的产品关键干预点识别Roll Rate陡升的逾期阶段资源分配公式催收优先级 账户余额 × 恶化概率 × 回收率3. 损失预测模型结合两种分析方法构建预测模型from sklearn.ensemble import RandomForestRegressor # 准备建模数据 model_data loan_data.groupby([disbursement_date, mob]).agg({ loan_amount: sum, dpd: lambda x: (x 30).mean() }).reset_index() # 添加Vintage特征 vintage_features vintage_data.unstack().reset_index(namevintage_default_rate) model_data model_data.merge(vintage_features, on[disbursement_date, mob]) # 添加Roll Rate特征 for bucket in [M1, M2, M3]: model_data[froll_to_{bucket}] model_data[mob].apply( lambda x: roll_matrix.loc[C, bucket] if x 1 else np.nan )在实际项目中我们发现MOB3的违约率突然升高往往与以下因素相关季节性因素如春节后的还款压力特定渠道的客户质量变化产品条款调整的影响通过持续监控这些指标我们成功将高风险产品的损失率降低了23%同时将催收效率提升了15%。

相关新闻

JWT 令牌详解:OAuth 2 in Action Code 中的签名与验证实现

JWT 令牌详解:OAuth 2 in Action Code 中的签名与验证实现

2026/8/18 11:37:57

JWT 令牌详解:OAuth 2 in Action Code 中的签名与验证实现 【免费下载链接】oauth-in-action-code Source code for OAuth 2 in Action 项目地址: https://gitcode.com/gh_mirrors/oa/oauth-in-action-code JWT(JSON Web Token)是OAut…

Django-Postgres-Extra 源码解析:深入理解PostgreSQL功能集成原理

Django-Postgres-Extra 源码解析:深入理解PostgreSQL功能集成原理

2026/8/18 14:18:02

Django-Postgres-Extra 源码解析:深入理解PostgreSQL功能集成原理 【免费下载链接】django-postgres-extra Bringing all of PostgreSQLs awesomeness to Django. 项目地址: https://gitcode.com/gh_mirrors/dj/django-postgres-extra 引言:为什么…

如何快速搭建 OAuth 2.0 授权服务器:OAuth 2 in Action Code 完整示例

如何快速搭建 OAuth 2.0 授权服务器:OAuth 2 in Action Code 完整示例

2026/8/13 21:01:25

如何快速搭建 OAuth 2.0 授权服务器:OAuth 2 in Action Code 完整示例 【免费下载链接】oauth-in-action-code Source code for OAuth 2 in Action 项目地址: https://gitcode.com/gh_mirrors/oa/oauth-in-action-code OAuth 2 in Action Code 是一个专注于 …

《空洞骑士》模组管理器选谁?Scarab 把“手动排雷“换成“一键通吃“

《空洞骑士》模组管理器选谁?Scarab 把“手动排雷“换成“一键通吃“

2026/8/20 7:39:04

《空洞骑士》模组管理器选谁?Scarab 把"手动排雷"换成"一键通吃" 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab Scarab 是一款用 Avalonia…

Java面试高频考点解析:面向对象、JVM与集合框架

Java面试高频考点解析:面向对象、JVM与集合框架

2026/8/20 7:39:04

1. Java基础面试题精讲:高频考点与易错点解析作为Java技术面试的敲门砖,基础知识的掌握程度往往决定了面试的成败。根据近三年一线互联网企业的面试统计,约83%的初级开发岗位会在首轮技术面设置Java基础考核环节。本文将针对实际面试中最常出…

3D游戏浮点一致性解决方案

3D游戏浮点一致性解决方案

2026/8/20 7:39:04

前面聊了定点数,也说了它在 3D 空间里做向量运算有多痛苦。这一篇讲另一条路——很多现代 3D 联机游戏走的其实是这条:不换掉浮点,而是把浮点"管起来",让它在所有平台上表现一致。 这条路分两个层次,从轻到重:约束浮点(还是用硬件 FPU,但掐掉不确定的来源)…

从零搭建桌面激光雕刻机:开源硬件方案与安全实践指南

从零搭建桌面激光雕刻机:开源硬件方案与安全实践指南

2026/8/20 7:39:04

1. 项目概述:从“激光玩具”到“桌面级创意工坊”几年前,我在一个创客展上看到一个用激光在木板上烧蚀出复杂图案的装置,当时就被那种精准、直接、充满“破坏性美感”的创作方式吸引了。很多人对“激光项目”的第一印象可能还停留在科幻电影里…

网约车体验竞争:从SOP到技术驱动,首汽约车如何实现逆势增长

网约车体验竞争:从SOP到技术驱动,首汽约车如何实现逆势增长

2026/8/20 7:39:04

1. 从“叫车”到“体验”:网约车下半场的竞争逻辑 最近和几个做产品、运营的朋友聊天,话题总绕不开“内卷”和“增长”。大家普遍感觉,流量红利见顶,单纯靠补贴和规模扩张的老路越来越难走。这让我想起了网约车行业,一…

RP2040与WIZnet以太网HAT实现嵌入式DNS解析实战

RP2040与WIZnet以太网HAT实现嵌入式DNS解析实战

2026/8/20 7:29:03

1. 项目概述:当RP2040遇上WIZnet硬核以太网最近在捣鼓一个需要稳定网络连接的嵌入式小项目,核心需求是让一块RP2040开发板能够通过以太网接入局域网,并且能稳定地进行DNS域名解析。你可能也遇到过类似场景:想用树莓派Pico做个网络…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/19 9:17:18

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

2026/8/20 0:08:45

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com…

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

2026/8/20 0:08:45

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 判断你是否…

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

2026/8/20 0:08:45

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 按 3MF 官方规范的字面意思,一…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…