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

发布时间:2026/8/25 14:11:58

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/22 10:29:21

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/22 19:52:37

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/22 19:52:37

如何快速搭建 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 是一个专注于 …

同样都是100M,企业专线为什么比普通宽带贵这么多?

同样都是100M,企业专线为什么比普通宽带贵这么多?

2026/8/25 14:05:11

企业采购网络时,经常会遇到一个很直观的问题:普通宽带标着100M,企业专线同样也是100M,为什么价格能差这么多?如果只看“100M”这个数字,两者确实很像。但其实100Mbps描述的是线路的带宽规格,并不…

uv安装使用

uv安装使用

2026/8/25 14:05:11

安装 uvWindows(你当前的系统)方式一:PowerShell 官方安装脚本(推荐)powershellpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"安装完成后需要重开一个终端&#xff…

WinRAR自解压功能:不用装软件也能解压压缩包

WinRAR自解压功能:不用装软件也能解压压缩包

2026/8/25 14:05:11

当你要发一个压缩包给电脑小白,又担心他不会解压文件,那最好就是直接发一个自解压文件。对方双击就能解压,不需要装任何软件。一、什么是自解压文件?自解压文件(SFX,Self-Extracting)实际上是.e…

Jetson AGX Orin 32GB 与 64GB 选型

Jetson AGX Orin 32GB 与 64GB 选型

2026/8/25 14:05:11

Jetson AGX Orin 32GB 与 64GB 选型 文章目录Jetson AGX Orin 32GB 与 64GB 选型1. 结论先行2. 选型问题从哪里来3. 两档规格对照3.1 公开规格量级3.2 读表时抓住的三点4. 容易选错的地方5. 按场景选型5.1 工业产线多工位主机5.2 路侧与机柜多相机节点5.3 AMR 与大型移动机器人…

恶劣物理环境下的算力下沉:边缘节点的热力学管理与 EMC 隔离架构解构

恶劣物理环境下的算力下沉:边缘节点的热力学管理与 EMC 隔离架构解构

2026/8/25 14:05:11

摘要: 面向极其恶劣的户外重工环境(如沙漠光伏、高压直流充电场站),传统的商用通信网络架构在极端温差与强电磁脉冲(EFT/EMI)的夹击下显得极其脆弱。本文将脱离表层业务,从底层半导体的阿伦尼乌…

具身智能跨本体学习之Open X-Embodiment详解:让22种机器人共享同一套操作经验

具身智能跨本体学习之Open X-Embodiment详解:让22种机器人共享同一套操作经验

2026/8/25 13:55:11

写在前面 【从零走向AGI】旨在深入了解通用人工智能(AGI)的发展路径,从最基础的概念起,逐步构建完整的知识体系。 项目地址🔗:https://github.com/AI-mzq/From-Zero-to-AGI.git 魔方AI空间 猫先生 从零走向…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/24 19:53:32

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/24 19:56:07

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

2026/8/25 0:04:34

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

2026/8/25 0:04:35

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

2026/8/25 0:04:35

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

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

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

2026/8/22 2:02:26

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

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

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

2026/8/22 4:13:47

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

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

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

2026/8/22 1:32:34

告别游戏崩溃: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…