我正在写我的硕士论文,我在我的 R 代码中遇到了这个问题。在数学上,我想用 R 包“nleqslv”求解这个非线性方程组:
fnewton <- function(x){
y <- numeric(2)
d1 = (log(x[1]/D1)+(R+x[2]^2/2)*T)/x[2]*sqrt(T)
d2 = d1-x[2]*sqrt(T)
y1 <- SO1 - (x[1]*pnorm(d1) - exp(-R*T)*D1*pnorm(d2))
y2 <- sigmaS*SO1 - pnorm(d1)*x[2]*x[1]
y}
xstart <- c(21623379, 0.526177094846878)
nleqslv(xstart, fnewton, control=list(btol=.01), method="Newton")
我已经尝试了这个代码的几个版本,现在我得到了错误:
error: error in pnorm(q, mean, sd, lower.tail, log.p): not numerical.
Pnorm 分别是 d1 和 d2 的累积标准正态分布。我真的不知道,当我在 Teterevas 幻灯片上定位我的模型时我做错了什么(幻灯片第 5 号是她的模型代码),谁的演示文稿是谷歌搜索的第一个结果
像我一样,无论多么成功,她都通过 Black-Scholes-Merton 方法计算违约距离风险度量。在这个模型中,股权的价值(通常用市值表示,->SO1)可以写成欧式看涨期权——我在上面的代码中标记为 y2,然而,之前的等式设置为 0!
其他变量是:
x[1] -> 我要导出的变量,总资产的价值
x[2] -> 我要导出的变量,总资产的波动率
D1 -> 债务账面价值(1998-2009)
R -> 无风险利率
T -> 设置为 1(时间)
sigmaS -> 估计(历史)股票波动率
已经谢谢了!!!我会很高兴,任何人都可以帮助我。卡罗