KMV信用风险模型的R实践

作者: 六胜一平 | 来源:发表于2020-04-10 13:22 被阅读0次

KMV模型近年来被广泛应用于上市企业信用风险评估评级,在金融风险管理领域风头正茂。KMV模型将企业的股权价值E、资产价值V和负债D整合到Black-Scholes期权定价公式中,把股权价值E看做一份标的物初始价格为V,敲定价格为D的欧式看涨期权的价格,用可以观测到的股权价值、负债、股价波动率等数据,通过求解非线性方程组来得到资产价值V及其波动率σ。下面几个公式就是KMV模型的核心。


1.png
2.png
3.png

求解上面的非线性方程组看起来并不困难,R中的nleqslv,或者MATLAB中的fsolve应该均可胜任,R代码如下

KMVF<-function(x) {
  V0=x[1]
  sigmav=x[2]
  y <- numeric(2)
  d1<-( log(V0/D)+(r+0.5*sigmav^2)*T ) / ( sigmav*sqrt(T))
  d2<-d1-sigmav*sqrt(T)
  y[1]<-V0*pnorm(d1)-exp(-r*T)*D*pnorm(d2)-E
  y[2]<-(V0*sigmav/E)*pnorm(d1)-EquityTheta
  return(y)
}
z<-nleqslv(x0,KMVF,method="Newton",control = list(allowSingular=T))

但上述代码存在一个大问题,由于需要求解的两个参数V和σ在数量级上差异太大(一般V/σ~1e+10),用牛顿法求根时,雅可比矩阵往往是奇异的,导致算法不收敛。为了解决这个问题,有人考虑对方程组作变形处理,引入E和D的比值,以对V进行标准化处理,如下面的代码所示。

EtoD <- E/D;
KMVfun<-function(x) {
  y <- numeric(2);
  d1<-( log(x[1]*EtoD)+(r+0.5*x[2]^2)*T ) / ( x[2]*sqrt(T))
  d2<-d1-x[2]*sqrt(T)
  y[1]<-x[1]*pnorm(d1)-exp(-r*T)*pnorm(d2)/EtoD-1
  y[2]<-pnorm(d1)*x[1]*x[2]-EquityTheta
  y
}
z<-nleqslv(x0,KMVfun,method="Newton",control = list(allowSingular=T))

通过上面的变形,nleqslv能很快收敛,求得变形后方程组的根roota。这个方法在网上流传很广,然而该变形是如何推导出来的,理论上有无依据,还需费些思量。
其实除此以外,还有一个更简单直观的方法可以解决参数量级差异问题,就是将E和D按比例缩小,再将求出的V按同等比率放大。记该方法求得的根为rootx,我们用一个简单的算例比较上面两种方法求得的根。

roota
V=2.588850e+08         sigma=5.796537e-01
y1=-8.072788e+06       y2=-1.778516e-02

rootx
V=2.681669e+08          sigma=5.626448e-01
y1=8.940697e-08          y2=-6.661338e-16

资产价值上的差距达到九百万,真是失之毫厘、谬以千里,而且方程组在rootx处更接近0点,roota则看起来根本就不是原方程组的根,表明这个在网上流传甚广的方法其正确性是值得商榷的。V和sigma的值将直接影响后续的违约距离计算,不能不谨慎对待。

相关文章

  • KMV信用风险模型的R实践

    KMV模型近年来被广泛应用于上市企业信用风险评估评级,在金融风险管理领域风头正茂。KMV模型将企业的股权价值E、资...

  • 基于遗传算法的KMV模型最优违约点的确定

    本文描述的是基于经典KMV模型企业信用风险评估,使用遗传算法确定适合不同市场的最有违约点。 目录 1.KMV模型简...

  • KMV模型的Python实现

    原文是建立在https://www.jianshu.com/p/ee33c4375a8e的基础之上的,在检验其代码...

  • 【风控建模】风险评分A卡

    一、信用风险评级模型的类型   信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级...

  • 常见信用风险模型

    常见的信用风险模型有下面三种: Application(申请评分)模型 通过客户申请时的信息,预测客户将来发送违约...

  • Credit Risk+模型

    本文描述的是CreditRisk+模型,该模型是一个信用风险模型,根据银行自身的违约率平均值,结合回收率和风险暴露...

  • Credit Risk+模型1

    本文描述的是CreditRisk+模型,该模型是一个信用风险模型,根据银行自身的违约率平均值,结合回收率和风险暴露...

  • 【挖掘篇】:模型的评估

    模型的评估 参考资料:《Python数据分析与挖掘实战》和 CDA《信用风险建模》微专业

  • #知识体系精深营#关系月第一次作业#第十二组沁茹

    R 《情商.实践版》p43 R《情商.实践版》p167 R《情商.实践》p227 R《情商.实践》p261 R《情...

  • 机器学习算法实现(九):EM

    EM算法R语言实践 第一步:加载实现EM算法的R包 library(mclust) 第二步:构建EM算法模型 mo...

网友评论

    本文标题:KMV信用风险模型的R实践

    本文链接:https://www.haomeiwen.com/subject/cftrmhtx.html