程式
在 R 中實現隱含波動率函式的問題
我是程式新手,我接觸過 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
,只有一個參數。嘗試在新會話中執行程式碼。