我是靠谱客的博主 悦耳招牌,最近开发中收集的这篇文章主要介绍vs2017 KMV模型的R语言实现这是针对于博客vs2017安装和使用教程(详细)的KMV模型的R语言实现有用的话记得star噢~一、核心公式二、安装依赖库三、R语言实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这是针对于博客vs2017安装和使用教程(详细)的KMV模型的R语言实现


github项目地址:https://github.com/nickhuang1996/KMV

有用的话记得star噢~


KMV模型的概念这里就不多赘述了,主要还是来看看R语言如何实现这个KMV模型的求解。

我们主要求解出V_{0}sigma _{V},也就是公司资产价值公司资产价值的波动率,然后计算违约距离DD违约率EDF


目录

一、核心公式

二、安装依赖库

三、R语言实现


一、核心公式

1.E_{0} = V_{0}N(d_{1})-De^{-rT}N(d_{2})

2.d_{1}=frac{ln(frac{V_{0}}{D})+(r+frac{sigma_{V}^{2}}{2} )T}{sigma _{V}sqrt{T}}

3.d_{2}=d_{1}-sigma_{V}sqrt{T}

4.sigma _{E}E_{0}=frac{partial E}{partial V}sigma_{V}V_{0}=N(d_{1})sigma _{V}V_{0}


二、安装依赖库

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语言实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部