python信用评分卡建模(附代码,博主录制)

https://mp.weixin.qq.com/s/KefG_8krBBaFl0LCi2L2WA转载

一、Vintage

Vintage源于葡萄酒酿造,葡萄酒的品质会因葡萄生长的年份不同、气候不同而不同。Vintage分析是指评估不同年份的葡萄酒的品质随着窖藏时间的推移而发生的变化,并且窖藏一定年份后,葡萄酒的品质会趋于稳定。如下图,2000年的葡萄酒品质最好,窖藏5年左右,葡萄酒品质会趋于稳定。

借鉴葡萄酒Vintage分析,信用分析领域不仅可以用它来评估客户好坏充分暴露所需的时间,即成熟期,还可以用它分析不同时期风控策略的差异等。

一个客户的好坏,需要经过若干个还款周期后才能充分暴露,如果表现期较短,有可能将一个不是很坏的客户定义为坏,也有可能将一个很坏的客户定义为好。比如一个客户在开始的几个周期内发生了逾期后将逾期还清,并且后面的周期不再发生逾期,若表现期较短会将此客户定义为坏;又比如一个客户刚开始一直正常还款,但到后面发生了比较严重的逾期,若表现期较短会将此客户定义为好。另外,可以通过比较不同时间的贷款在相同周期的逾期表现,来分析不同时间的风控策略的差异、宏观形势的变化等。

下图为2017年4月至2018年12月放款的M4+(即逾期91天以上)的Vintage图和Vintage数据表,此图统计的逾期用的是月末的逾期状态(有些时候也可以使用历史逾期状态,一个客户只要发生过M4+逾期,未来每个月都将该客户记为M4+逾期客户),计算逾期率使用金额(也可使用笔数)。从图中可以看出,不同月份放款的M4+在经过9个周期(9个月)后趋于稳定,也就是说成熟期是在9个周期。

从图中还可以看出,资产质量不断提升,2017年4月至6月的逾期率相对较高,从2017年7月开始逾期率发生较大程度的下降,有可能因为前几个月不断优化风控策略所致。

二、滚动率

前面说的Vintage可以用于分析客户表现的趋势、稳定的时间等,对于客户好坏程度的定义没有涉及,而通过滚动率分析可以对客户好坏程度进行定义。滚动率分析就是从某个观察点之前的一段时间(称为观察期)的最坏的状态向观察点之后的一段时间(称为表现期)的最坏状态的发展变化情况,如下图。

在观察点2018年6月30日,取1万个客户,统计该1万个客户从观察期到表现期的最大逾期的变化情况,如下表。

从该表可以看出:

1、正常的客户,在未来6个月里,有96%会保持正常状态;

2、逾期1期的客户,未来有81%会回到正常状态,即从良率为81%,有7%会恶化;

3、逾期2期的客户,从良率为23%,有39%会恶化;

4、逾期3期的客户,从良率为14%,有61%会恶化;

5、逾期4期及以上的客户,从良率仅为4%,有82%会继续此状态。

在对坏客户进行定义时,应将坏客户定义得尽可能坏,以与好客户尽可能的区分开来,因此可以将逾期4期及以上的定义为坏,而逾期2期和3期定义为中度坏,逾期1期为轻度坏。当然,在开发模型或规则时,还要结合样本量,如果M1占比较高,可以将M1划为好客户,M4+为坏客户,M2和M3为灰度客户,从样本中剔除;如果M1占比很低,也可以将M1和M2、M3一起归为灰度客户,从样本中剔除。

三、Y变量的定义

Y变量即为客户好坏标签变量,前面的Vintage分析和滚动率分析中已经说过一些,这里做个总结。Y变量要结合滚动率分析和Vintage分析来定义,滚动率分析用于对客户好坏程度进行定义,Vintage分析用于设置合适的表现期。定义Y变量可以分为以下几步:

1、进行滚动率分析,定义坏客户,如上面所说的M4+为坏客户;

2、然后统计出M4+的Vintage数据表及Vintage图,找出成熟期;

3、表现期大于成熟期的样本可以用于建模,表现期小于成熟期的样本无法准确定义Y变量,暂时舍弃。

当然,在实际应用中,根据业务需要,Y变量的定义可以灵活变通。比如在业务刚开展不久,表现期较短,此时无法根据上述方法定义Y变量,可以暂将逾期大于10天、15天或30天的客户定义为坏等等,然后随着时间的推移不断修正Y变量及模型。

四、迁移率

迁移率分析和滚动率分析比较像,都是分析客户从某个状态变为其他状态的发展变化情况,所不同的是,滚动率侧重于分析客户逾期程度的变化,所以在做滚动率分析时需要设置相对较长的观察期和变现期;而迁移率侧重于分析客户状态的发展变化路径,如M0~M1,M1~M2,M2~M3等。

先统计2018年6月至2018年12月各逾期状态的资产分布情况,如下表。表中的回收率是指,假设每月末将M7的资产以10%的价格卖掉,即收回M7资产的10%。

下面计算月度迁移率,比如,2018年7月底,M0~M1的迁移率为41110122/171325636=24%,以此类推,得到如下表的迁移率。这里迁移率的计算是以月为时间颗粒度,当前也可以精细到以天为颗粒度计算迁移率,然后计算平均值得出月度迁移率,但更细的颗粒度要求资产规模更大,如果资产规模较小会产生较大的误差。值得注意的是,表中M3~M4的迁移率较高,应该是逾期超过90天,过了黄金催收期,所以逾期恶化程度较高,但M4~M5的迁移率突然降低了不少,有可能是委外催收起到了一定效果所致。

下面根据迁移路径计算各逾期状态的损失率,M0变为M7的比例定义为损失率等于16.06%*29.27%*42.28%*81.71%*52.75%*82.51%*86.05%=0.61%,因为M7将以10%的价格收回,所以净损失率等于0.61%*90%=0.55%,以此类推,得到各逾期状态资产的损失率,如下表。

前面讲到定义Y变量时,根据滚动率分析定义好坏的程度,其实这里也可以根据迁移率得出的损失率来分析好坏的程度,并且还可以结合损失率与收益率,这里不再赘述。

下面根据资产损失率计算2018年12月的资产预计损失,计算方法为2018年12月M0~M6各资产乘以对应的净损失率,然后求和,即等于367162809*0.55%+47230430*3.41%+14848678*11.64%+6011499*27.54%+4614038*33.70%+2326454*63.89%+1586471*77.44%=11273470。所以2018年12月拨备金额为11273470,占总资产的比例为11273470/443823814=2.54%,即拨备率为2.54%。

(注:文中数据非真实数据,而是为了说明问题而生成的数据)

python风控建模实战lendingClub(博主录制,catboost,lightgbm建模,2K超清分辨率)

https://study.163.com/course/courseMain.htm?courseId=1005988013&share=2&shareId=400000000398149

微信扫二维码,免费学习更多python资源

Vintage、滚动率、迁移率的应用的更多相关文章

  1. 信用评分卡 (part 2of 7)

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  2. 信用评分卡Credit Scorecards (1-7)

      欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 python风控评分卡建模和风控常识 https://study.163.com/course/introductio ...

  3. 3分钟学会sessionStorage用法(h5页面返回滚动到上次浏览器位置)

    前言: 因最近移动端开发过程中遇到一个运营提出的所谓技术难点需求,对于原生APP来说轻而易举,毕竟自己的APP用户操作指哪打哪,但是H5该怎么做?H5就实现不了么?对于一个爱研究攻克这些前端棘手问题的 ...

  4. h5页面使用sessionStorage滚动到上次浏览器位置《原创》

    前言: 因最近移动端开发过程中遇到一个运营提出的所谓技术难点需求,对于原生APP来说轻而易举,毕竟自己的APP用户操作指哪打哪,但是H5该怎么做?H5就实现不了么?对于一个爱研究攻克这些前端棘手问题的 ...

  5. 115道Java经典面试题(面中率最高、最全)

    115道Java经典面试题(面中率最高.最全) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可 ...

  6. 使用css实现炫酷的横屏滚动效果

    炫酷的横屏滚动效果css实现 DEMO: https://codepen.io/kobako/pen/BxVLLm 我们对滚动条都不陌生.平时浏览的网页,进度条通常是垂直方向的,内容从上往下排列.但是 ...

  7. Android自动滚动 轮播循环的ViewPager

    主要介绍如何实现ViewPager自动播放,循环滚动的效果及使用.顺便解决ViewPager嵌套(ViewPager inside ViewPager)影响触摸滑动及ViewPager滑动速度设置问题 ...

  8. 鼠标滚轮滚动慢/拖动Office出现滞后问题处理

    一.说明 我对外设一直不是很了解,买的鼠标今天到了,使用时遇到了两个问题在这里记一下. 二.滚轮滚动慢处理 问题描述:在网页中滚动滚轮每次只能上下移动一点点,感觉很难受. 问题原因:此问题是滚轮滚动一 ...

  9. 【前端性能】高性能滚动 scroll 及页面渲染优化

    最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...

随机推荐

  1. oracle 如何预估将要创建的索引的大小

    一.1  oracle 如何预估将要创建的索引的大小 oracle 提供了2种可以预估将要创建的索引大小的办法: ①  利用包 Dbms_space.create_index_cost 直接得到 ②  ...

  2. yaml模块

    原文链接:https://www.cnblogs.com/fancyl/p/9133738.html 一.安装yaml模块:pip install pyyaml 二.在pycharm里新建.yaml文 ...

  3. C++(四十六) — 异常处理机制、标准IO输入输出

    1.异常处理机制 一般来说,异常处理就是在程序运行时对异常进行检测和控制.而在C++ 中,使用 try-throw-catch模式进行异常处理的机制. #include<iostream> ...

  4. DP-LIS and LCS

    最长上升子串 f[i]=f[I-1]+1(f[I]>f[I-1]) f[I]=1;(f[I]<=f[I-1]) 输出max(f(I)) 最长上升子序列 f[I]=max(f[I],f[j] ...

  5. OpenGL学习(1)—— 测试OpenGL环境是否搭建成功

    一个用来验证OpenGL(glfw + glad)环境是否搭建成功的测试代码 内容为生成一个小窗口 #include <glad/glad.h> #include <GLFW/glf ...

  6. 安装nginx环境(含lua)时遇到报错ngx_http_lua_common.h:20:20: error: luajit.h: No such file or directory的解决

    下面是安装nginx+lua环境时使用的相关模块及版本,ngx_devel_kit和lua-nginx-module模块用的都是github上最新的模块.并进行了LuaJIT的安装. #Install ...

  7. HTTP get post 请求实例

    package wzh.Http; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  8. db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码

    db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码 检测

  9. hive中执行hql或建表语句时,抛出Display all 459 possibilities? (y or n)错误的解决方法

    我昨天在hive上建表,一直报Display all 459 possibilities? (y or n) ,之前我以为是建表语句有问题,一直在改语句,后来在网上搜这个错误,原来语句里混杂了Tab缩 ...

  10. SQL操作Spark SQL--BasicSQLTestt

    object BasicSQLTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .a ...