程式

在 R 中實現隱含波動率函式的問題

  • March 15, 2021

我是程式新手,我接觸過 R 和 Python 的基礎知識。我一直在嘗試使用單位根函式(傳統程序)來實現波動率微笑函式,但我遇到了問題。這是我正在編寫的程式碼:

BlackScholesFormulaBach  <- function (spot,timetomat,strike,r, q=0, sigma)
{ 
 
 d1<-(spot-strike)/(sigma*sqrt(timetomat))
 d2<-(spot-strike)/(sigma*sqrt(timetomat))
 
 
 result<-(spot-strike)*pnorm(d1)+sigma*sqrt(timetomat)*dnorm(d1)
 
 
 BlackScholesFormulaBach<-result
 
}

BlackScholesImpVol  <- function (obsprice,spot,timetomat,strike,r, q=0)
 
{ difference<- function(sigBS, obsprice,spot,timetomat,strike,r,q)
{BlackScholesFormulaBach(spot,timetomat,strike,r,q,sigBS)-obsprice
}

uniroot(difference, c(-1,1),obsprice=obsprice,spot=spot,timetomat=timetomat,strike=strike,r=r,q=q)$root

}

S_0<-100
cap_T<-1
sigma_1<-15
N<-1000

BlackScholesImpVol(S_0,cap_T,1,0,0,15)

每次我執行程式碼時,我都會得到:

Error in c(-1, 1) : unused argument (1)

如果我改變間隔,我會得到同樣的錯誤。我一直在檢查程式碼,但似乎是正確的。我諮詢了其他人,沒有人發現問題。根據 R,問題出在 unitroot 函式上,但我看不到在哪裡。

問題:

有人可以幫我解決這個實現問題嗎?

感謝提前

問題不在於您發布的程式碼,而在於之前的某個地方:您顯然已經定義了一個名為 的函式c,只有一個參數。

嘗試在新會話中執行程式碼。

引用自:https://quant.stackexchange.com/questions/61732