Credit Risk+模型

1、简介

模型假设:(1)每笔贷款在给定期间内违约率不变;(2)每个借款人的违约率非常小,且违约数相互独立。所以违约事件发生的概率分布服从泊松分布
定义:Credit Risk+模型仅仅考虑了违约风险,而没有考虑信用等级降级风险,属于信用违约风险度量模型。利用CreditRisk+模型可以得到贷款组合损失的概率分布。
流程:先用贷款组合中最大一笔风险暴露值与风险暴露频段值L相除并四舍五入为整数得到风险暴露频段总级数m;然后将每笔贷款的风险暴露数除以L四舍五入为整数将其归类到该整数对应的频段级,即将所有贷款分类在m个频段级里;再计算每个频段级的贷款违约数量的概率分布和违约损失的概率分布(贷款违约数服从泊松分布,违约损失=违约数量*平均风险暴露);最后计算贷款组合的违约损失的概率分布(相同的组合损失金额可能对应多种损失组合,所以要加总概率)

2、计算过程

2.1模型所需特征

输入:贷款组合的风险暴露,风险暴露频段值L
中间:风险暴露频段级数m,各个频段级的贷款违约数量的概率分布和违约损失的概率分布
输出:贷款组合的违约损失的概率分布

2.2计算过程

风险暴露频段级数m:最大一笔风险暴露值/风险暴露频段值L再四舍五入
各个频段级的违约数和违约损失的概率分布:

贷款组合的违约数和违约损失的概率分布:

3、用到的python库及其方法

这里用到了两个库,分别是scipy和numpy。

3.1、scipy

scipy库建立在 Numpy 库之上,提供了大量科学算法,主要包括这些主题:

用法如下:

import scipy.stats as st
po = st.poisson(1)
[po.pmf(i) for i in range(5)] # pmf: probability mass function,概率质量函数

Output:
[0.36787944117144233,
 0.36787944117144233,
 0.18393972058572114,
 0.061313240195240391,
 0.015328310048810101]

3.2、numpy

使用NumPy可以执行以下操作:
(1)数组的算数和逻辑运算。
(2)傅立叶变换和用于图形操作的例程。
(3)与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。
这里使用了数组有关的操作。

4、模型演示

考察一家银行6笔贷款的情况,如下图,假设风险暴露频段值选定为L=5万人民币

代码如下:

import numpy as np
import scipy.stats as st
money = [5,4,8,9,10,3]
L = 5
labelnum = round(max(money) / L)# 风险暴露总级数
label = {}# 频段级及对应的贷款贷款金额
for i in money:
    for j in range(1, labelnum+1):
        if round(i / L) == j:
            if j not in label.keys():
                label[j] = [i]
            else:
                label[j].append(i)
label
Output:{1: [5, 4, 3], 2: [8, 9, 10]}
—————————————————————————————————
arr = np.zeros((len(label[1])+1,labelnum))# 各个频段级对应的违约数的概率分布
# λ=1
rv = st.poisson(1)
for i in range(arr.shape[0]):
    for j in range(arr.shape[1]):
        arr[i][j] = round(rv.pmf(i), 4)
arr
Output:array([[ 0.3679,  0.3679],
       [ 0.3679,  0.3679],
       [ 0.1839,  0.1839],
       [ 0.0613,  0.0613]])
—————————————————————————————————
pro = np.zeros((arr.shape[0], arr.shape[0]))# 联合违约概率
loss = np.zeros((arr.shape[0], arr.shape[0]))# 违约总损失
for i in range(pro.shape[0]):
    for j in range(pro.shape[1]):
        loss[i, j] = i * L + j * 2* L
        pro[i, j] = round(arr[i, 0] * arr[j, 1], 4)
pro
Output:array([[ 0.1354,  0.1354,  0.0677,  0.0226],
       [ 0.1354,  0.1354,  0.0677,  0.0226],
       [ 0.0677,  0.0677,  0.0338,  0.0113],
       [ 0.0226,  0.0226,  0.0113,  0.0038]])
loss
Output:array([[  0.,  10.,  20.,  30.],
       [  5.,  15.,  25.,  35.],
       [ 10.,  20.,  30.,  40.],
       [ 15.,  25.,  35.,  45.]])
—————————————————————————————————
arr2 = {}# 整理之后的贷款违约损失的概率分布
for i in range(pro.shape[0]):
    for j in range(pro.shape[1]):
        if loss[i, j] not in arr2.keys():
            arr2[loss[i, j]] = pro[i, j]
        else:
            arr2[loss[i, j]] = round((arr2[loss[i, j]] + pro[i, j]), 4)
arr2 = sorted(arr2.items(), key=lambda x: x[0])
arr2 = dict(arr2)
arr2
Output:{0.0: 0.13539999999999999,
 5.0: 0.13539999999999999,
 10.0: 0.2031,
 15.0: 0.158,
 20.0: 0.13539999999999999,
 25.0: 0.090300000000000005,
 30.0: 0.056399999999999999,
 35.0: 0.0339,
 40.0: 0.011299999999999999,
 45.0: 0.0038}
—————————————————————————————————
accu_pro = {}# 累积概率密度
for j in range(len(arr2)):
    sum = 0
    for i in range(j+1):
        sum = sum + list(arr2.values())[i]
    accu_pro[list(arr2.keys())[j]] = sum 
accu_pro = sorted(accu_pro.items(), key=lambda x: x[0])
accu_pro = dict(accu_pro)
accu_pro
Output:{0.0: 0.13539999999999999,
 5.0: 0.27079999999999999,
 10.0: 0.47389999999999999,
 15.0: 0.63190000000000002,
 20.0: 0.76729999999999998,
 25.0: 0.85760000000000003,
 30.0: 0.91400000000000003,
 35.0: 0.94790000000000008,
 40.0: 0.95920000000000005,
 45.0: 0.96300000000000008}
—————————————————————————————————
E_loss = [i*j for i,j in arr2.items()]# 期望损失
E_loss  
Output:[0.0,
 0.67699999999999994,
 2.0310000000000001,
 2.3700000000000001,
 2.7079999999999997,
 2.2575000000000003,
 1.6919999999999999,
 1.1864999999999999,
 0.45199999999999996,
 0.17100000000000001]
—————————————————————————————————
print(np.mean(E_loss))
print(np.std(E_loss))
Output:1.3545
0.93740327501

结果分析:该银行6笔贷款组成的贷款组合,未来一年期望的损失金额为1.35万人民币,大致可看出未来有95%的把握损失不会超过40万人民币。

5、模型优缺点

优点:
(1)要求的估计量和输入数据较少,仅需要债务工具的违约和风险暴露的数据,模型应用比较简单
(2)不需要对违约原因做任何假设
(3)将违约率视为连续随机变量,并将违约率的波动率纳入模型体现违约率本身的不确定性这一特征。通过使用违约波动率参数,模型得到简化,而且不用考虑违约相关性特征
缺点:
(1)忽略了信用等级变化,因而贷款信用风险在计算期间内固定不变,与实际情况不符合
(2)分组时,对每笔贷款暴露近似到组,从而将高估投资组合的方差
(3)忽略了市场风险

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 海外CDS市场发展概况 发展历史 CDS诞生于美国,自1995年发展至今,按照其每段时期特定的历史背景和CDS市场...
    shenciyou阅读 14,769评论 0 4
  • 信用风险内部评级法监管改革 标签(空格分隔): Basel 信用风险 编者语: 针对巴塞尔Ⅱ内部评级体系存在的一系...
    lumicinta阅读 4,136评论 0 2
  • 本文描述的是基于经典KMV模型企业信用风险评估,使用遗传算法确定适合不同市场的最有违约点。 目录 1.KMV模型简...
    hwang_zhic阅读 6,381评论 1 5
  • 原本每年在岁末的时候都写点什么盘点一下,可是这次,2016都过去三天了,才坐下来理一理思绪,因为确实是不知道该写点...
    方原阅读 230评论 0 3