我正在寫我的碩士論文,並且在我的R代碼中遇到了這個問題。在數學上,我想解決這個系統的非線性方程組與R-包「nleqslv」:在R/Black-Scholes-Merton模型中求解非線性方程組
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號是她的模型代碼),誰的表現是googeling
像我的第一個結果,然而,更成功的是,她通過Black-Scholes-Merton方法計算了距離違約風險度量。在這個模型中,股票的價值(通常以市值 - > SO1表示)可以寫成歐式看漲期權 - 我在上面的代碼中標記了y2,然而,之前的方程設置爲0!
其他變量是:
X [1] - >我想得出,總資產
的值的變量X [2] - >我希望變量來導出,總揮發性資產
D1 - >債務的賬面價值(1998-2009)
的R - >無風險利率
筆 - >設置爲1(時間)
sigmaS - >估計(歷史)股票波動率
已經感謝!!!我會很高興,任何人都可以幫助我。 Caro
不要調用變量'T'。這是R中「TRUE」的一個別名,並且可能會導致無法預料的後果。但是,您需要檢查用於計算'd1'和'd2'的所有變量是否爲數字。 – Roland
代碼中沒有定義D1,R,T或SO1。 –
@羅蘭:謝謝,我會試試這個。 – schloni