1、简介
信用风险是贷款和债券投资面临的主要风险。Credit Metrics模型通过估计贷款、债券等信用工具在一定时期内的未来价值变化分布,关键在于计算在险价值VaR来衡量债券投资组合的信用风险。(VaR:在某一给定的置信水平下,资产组合在未来特定的一段时间内可能遭受的最大损失。VaR值越大,说明组合面临的风险就越大。)单一资产和资产组合的信用在险值不同 , 下面分别介绍 。
2、单一资产的信用在险值VaR
2.1、所需特征
输入:信用等级转移矩阵、远期折现率(非违约)、违约回收率(违约)
中间:单一资产的远期价值矩阵
输出:VaR
2.2、流程
第一步是确定一个信用转移矩阵, Credit Metrics认为除了违约外 , 信用等级的变化也会引起信贷资产潜在市场价值的变化 。因此 , 除了需要估算违约的概率外 , 还必须评估各种初始信用等级的债券发行者信用变化状况 , 在给定的时期内(一般为一年),从一个信用等级转移到另一个信用等级的概率,这就构成了信用转移矩阵。
第二步是确定远期折现率和违约回收率 。信贷资产的远期折现率等于其要求的投资回报率,即:远期折现率=无风险收益率+信用利差。通常,以国债或者银行定期存款利率为无风险收益率。违约回收率则是指债券发行者违约时 , 债务人收回的部分占债券面值的百分比,用于计算信贷资产组合在违约发生后的剩余价值。(假设一张BBB债券为高级无担保类型,违约回收率为51.13%,面值为100元,违约后的剩余价值:100×51.13%=51.13元)
信用利差和无风险收益率的含义:
信用利差:信用评级越低的信贷资产,它所要求的投资回报率越高。将不同信用等级的投资回报率与无风险收益率的差值称为信用利差。信用等级越高,信用利差越小。
无风险收益率是指把资金投资于一个没有任何风险的投资对象所能得到的收益率。一般会把这一收益率作为基本收益,再考虑可能出现的各种风险。通常,以国债或者银行定期存款利率为无风险收益率。
第三步是根据第二步得出的参数估算债券在信用风险期末的远期价值 (风险敞口)。在违约情况下 ,资产价值即为债券面值与违约回收率的积;在非违约情况下 , 信贷资产在未来一段时间后转变为信用等级n时的预测价值:
(1)式中,Vn为1年后信用评级为n的信贷资产价值,N为信贷资产的剩余期限,Di为第i年信贷资产产生的利息,F为信贷资产的票面金额,rn,i为信用等级为n的信贷资产第i年要求的投资回报率
第四步 , 将第一步得出的概率与第二步得出的信用风险期末的资产价值相结合 , 就得出了信贷资产价值的远期价值概率分布。
最后,假设资产价值服从正态分布,一年后的在险价值:VaR=z1-c*σ (相对VaR) ,其中C为置信水平,z为标准正态分布的分位点。倘若不服从正态分布,选择插值法计算在险价值(相对VaR),VaR=均值-置信水平下的预测价值,参考http://www.doc88.com/p-0827413329983.html
2.3、应用
计算1年后转化为各信用评级后的市值(考虑违约与非违约)
一年后转为AAA级:
一年后转为AA级:
一年后转为A级:
一年后转为BBB级:
一年后转为BB级:
由于1年后转化为B、CCC、违约级的概率为0,所以不需要计算VB、VCCC、V违约
接着,与信用评级转化矩阵结合,算出VaR
代码如下:
discount_rate = np.array([[4.41,4.72,5.3],
[4.81,5.12,5.7],
[5.51,5.92,6.3],
[7.21,7.52,8.1],
[11.71,13.52,15.1]
]) / 100 # 远期折现率
print("远期折现率")
pd.DataFrame(discount_rate)
#%%
assets = 200 # 资产价值或债券面值
value = [] # 远期价值
for i in range(5):
v = assets * 0.05 + assets * 0.05/(1+discount_rate[i,0]) + assets * 0.05/(1+discount_rate[i,1]) ** 2 + assets * (1 + 0.05)/(1 + discount_rate[i,2]) ** 3
value.append(v)
value_nparr = np.array(value)
print("资产价值1年后转化为各信用评级后的市值 = {}".format(value))
#%%
convert_rate = np.array([90.81, 8.33, 0.68, 0.06, 0.12]) / 100# 信用评级转移矩阵
print("信用评级转移矩阵")
pd.DataFrame(convert_rate)
#%%
mean = sum(value_nparr * convert_rate)# 均值
print("均值 = {}".format(mean))
#%%
std = np.sqrt(sum(convert_rate * ((value_nparr - mean) ** 2)))# 标准差
print("标准差 = {}".format(std))
#%%
VaR = 2.33 * std
print("VaR = {}".format(VaR))
# Output:2.0038479388314734
3、资产组合的信用在险值VaR
3.1、所需特征
输入:信用等级转移矩阵、远期折现率、违约回收率
中间:组合的远期价值矩阵、信用转移阈值矩阵、联合信用等级转移矩阵
输出:VaR
3.2、流程
第一步是求出资产组合每种结果的预期价值:两个贷款分别得出预测价值后相加。得到组合的预测价值矩阵
第二步是根据信用等级转移矩阵和标准正态分布表确定信用转移阈值矩阵。当突破某个阈值时,信用级别则发生相应变化。再考虑组合贷款之间的相关性,求解联合信用等级转移矩阵。模型假设多个资产的r服从联合标准正态分布,二维联合标准正态分布的概率密度为
第三步是将第一步得到的预测价值矩阵和第二步得到的联合信用等级转移概矩阵相结合,就得出了信贷资产组合远期价值的概率分布。假设资产价值服从正态分布,一年后的在险价值:VaR=z1-c*σ (相对VaR) ,其中C为置信水平,z为标准正态分布的分位点。
3.2、应用
假设一年后1号贷款的信用等级由BB变为BBB,2号贷款的信用等级由A变为BB,则组合的预测价值计算如下:
经过64次计算,可以得到组合的预测价值矩阵
根据信用等级转移矩阵和标准正态分布表确定信用转移阈值矩阵。
再考虑组合贷款之间的相关性,求解联合信用等级转移矩阵。假设1号贷款和2号贷款的相关系数ρ=0.2,则一年后保持信用等级不变的概率为
一年后1号贷款信用等级由BB变为BBB,2号贷款信用等级由A变为BB的概率为
一年后1号贷款信用等级由BB变为违约,2号贷款信用等级由A变为违约的概率为
经过64次计算,可以得到组合的联合信用等级转移矩阵
结合表8(预测价值矩阵)和表9(联合信用等级转移矩阵),矩阵中相同位置的单元格相乘,可得信贷组合的期望价值:
信贷组合未来价值的方差:
组合未来价值的标准差:
99%置信度下的VaR:
4、模型改进
(1)构造企业信用等级动态变化矩阵
以原有的AAA、AA、A、BBB、BB、B、CCC 七个等级分别为纵轴和横轴建立基础企业信用等级动态变化矩阵。
一方面, 将原来的各等级静态的系数, 转化为动态变化的数据,使最终的风险值也处于随时变化的状态, 精确风险防范;
另一方面, 以客观历史数据为基础, 最大剔除原有系数中的人为主观干扰, 保证模型的客观性。
(2)构造贷款形态损失率矩阵
贷款的不同形态给银行带来的风险主要是银行花费在该款项上的管理成本和用于再投资的机会收益的损失上。
因此,单一的各等级( 正常贷款、逾期贷款、呆滞贷款和呆账贷款)的风险系数不能将损失状况表现清楚。 通过公式:
Ri——各等级下第 i 类贷款的损失变化率;
ri——第i类贷款的利率收益;
Ii——第 i 类贷款的投资收益;
ci——第i类贷款的管理成本 ;
Rar——各等级间的等级 变化风险值 , 如 , 正常贷款→逾期贷款风险值为 1.5, 逾期贷款→呆滞贷款风险值为2,呆滞贷款→呆账贷款风险值为 2.5.这样, 就能得出各类贷款当其贷款形态发生变化的时候的损失程度。由于我国银行的呆坏账占信贷的比例较大, 不能仅仅计算正常贷款下信用风险的变动, 还需要计算逾期、呆、滞账款的风险和损失 , 才能真实反映银行信贷的真实信用风险程度。保留和改进贷款形态因子正是出于对我国银行实际情况的考虑。
5、扩展
**CreditMetrics模型属于盯市法,KMV模型属于违约法。
**CreditMetrics模型对企业信用风险的衡量来自于对该企业信用等级转换及其概率的历史数据的分析。 KMV模型对企业信用风险的量化指标预期违约率主要来自对该企业股票市场价格变化的有关数据的分析。
盯市法:信贷资产的市值直接受借款人的信用等级及其变化情况的影响,即使是借款人并未违约,只要信用等级降低,信贷资产的价值也相应降低,这样合理反映了信贷资产在违约发生前其价值潜在的损失状况。
违约法:在贷款期限内,信贷资产损失的计量取决于是否发生违约。因此信贷资产的损失要么是零(未发生违约),要么是贷款面值与可能回收价值的现值之差(发生违约)。
代码及参考文献下载地址:https://gitee.com/hwang_zc/Financial-model/tree/master/Credit%20Metrics