概述
这是针对于博客vs2017安装和使用教程(详细)的KMV模型的R语言实现
github项目地址:https://github.com/nickhuang1996/KMV
有用的话记得star噢~
KMV模型的概念这里就不多赘述了,主要还是来看看R语言如何实现这个KMV模型的求解。
我们主要求解出和,也就是公司资产价值和公司资产价值的波动率,然后计算违约距离和违约率
目录
一、核心公式
二、安装依赖库
三、R语言实现
一、核心公式
1.
2.
3.
4.
二、安装依赖库
1.新建项目
2.点击R工具-->窗口-->包,打开R语言工具包管理器
3.搜索nleqslv,它是用来求解非线性方程组的。结果如下,可以点击蓝色的↓进行下载
我们也可以查找存储库,下载这个包:
https://cran.microsoft.com/snapshot/2016-11-01/src/contrib/
该包的描述为
套餐:nleqslv
类型:包装
标题:非线性方程组的求解系统
版本:3.0.3
日期:2016-08-08
作者:Berend Hasselman
维护者:Berend Hasselman <bhh@xs4all.nl>
描述:使用Broyden或Newton方法求解非线性方程组
可以选择线搜索和信任区域等全局策略。
有使用数字或用户提供的雅可比行列式的选项,
用于指定带状数字雅可比行列式和允许
单数或病态的雅各比行列式。
许可证:GPL(> = 2)
NeedsCompilation:是的
打包:2016-08-07 17:38:12 UTC;berendhasselman
存储库:CRAN
发布日期:2016-08-08 17:19:53
4.下载完成,如下
三、R语言实现
script.R
#导入nleqslv
library(nleqslv);
#输入无风险利率
print("无风险利率:")
r <- 0.0225;
print(paste("r=", r))
#输入公司债务期限
print("公司债务期限:")
T <- 1;
print(paste("T=", T))
#输入流动负债、非流动负债
print("流动负债、非流动负债:")
SD <- 1e8;
LD <- 0.5 * 1e8;
print(paste("SD=", SD))
print(paste("LD=", LD))
#计算违约点
print("违约点:")
D0 <- SD + 0.5 * LD;
print(paste("D0=", D0))
#根据fair value修改违约点
D <- D0;
#输入股权波动率
print("股权波动率:")
PriceTheta <- 0.2893;
print(paste("PriceTheta=", PriceTheta))
#月波动
EquityTheta <- PriceTheta * sqrt(12);
print(paste("EquityTheta=", EquityTheta))
#输入股权价值
print("股权价值:")
E <- 214512867;
print(paste("E=", E))
if (FALSE) {
"KMV模型变形求解"
}
cat('n')
print("KMV模型变形求解")
x0 <- c(1, 1);
KMV_fun <- function(x) {
y <- numeric(2);
d1 <- (log(x[1] * E / D) + (r + 0.5 * x[2] ^ 2) * T) / (x[2] * sqrt(T));
d2 <- d1 - x[2] * sqrt(T);
y[1] <- x[1] * pnorm(d1) - D * exp(-r * T) * pnorm(d2) / E - 1;
y[2] <- pnorm(d1) * x[1] * x[2] - EquityTheta;
y
}
#求解KMV
z <- nleqslv(x0, KMV_fun, method = "Newton")
print(paste("z=", z))
cat('n')
#VA
print("公司资产价值:")
V0 <- z$x[1] * E
print(paste("V0=", V0))
#AssetTheta
print("公司资产价值的波动率:")
ThetaV <- z$x[2]
print(paste("ThetaV=", ThetaV))
cat('n')
#计算违约距离
print("违约距离:")
DD <- (V0 - D0) / (V0 * ThetaV)
print(paste("DD=", DD))
#计算违约率
print("违约率:")
EDF <- pnorm(DD)
print(paste("EDF=", EDF))
点击source startup file,运行script.R
结果:
[1] "无风险利率:"
[1] "r= 0.0225"
[1] "公司债务期限:"
[1] "T= 1"
[1] "流动负债、非流动负债:"
[1] "SD= 1e+08"
[1] "LD= 5e+07"
[1] "违约点:"
[1] "D0= 1.25e+08"
[1] "股权波动率:"
[1] "PriceTheta= 0.2893"
[1] "EquityTheta= 1.00216459725935"
[1] "股权价值:"
[1] "E= 214512867"
[1] "KMV模型变形求解"
[1] "z= c(1.55208533656458, 0.667931845274532)" "z= c(1.20792265079217e-13, -3.71702668644502e-13)" "z= 1"
[4] "z= Function criterion near zero" "z= c(1, 1)" "z= 6"
[7] "z= 5" "z= 5"
[1] "公司资产价值:"
[1] "V0= 332942275.375128"
[1] "公司资产价值的波动率:"
[1] "ThetaV= 0.667931845274532"
[1] "违约距离:"
[1] "DD= 0.935064778664272"
[1] "违约率:"
[1] "EDF= 0.825122541709471"
返回至原博客:vs2017安装和使用教程(详细)
最后
以上就是悦耳招牌为你收集整理的vs2017 KMV模型的R语言实现这是针对于博客vs2017安装和使用教程(详细)的KMV模型的R语言实现有用的话记得star噢~一、核心公式二、安装依赖库三、R语言实现的全部内容,希望文章能够帮你解决vs2017 KMV模型的R语言实现这是针对于博客vs2017安装和使用教程(详细)的KMV模型的R语言实现有用的话记得star噢~一、核心公式二、安装依赖库三、R语言实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复