Hello everyone,
I’ve a function with five input argument and one output number.
impVolC <- function(callM, K, T, F, r)
I hope this function can take five vectors as input, then return one
vector as output. My vectorization ran into problems with the nested if-else
operation. As a result, I have to write another for loop to call this function.
Can anyone suggest some methods to overcome it? I put my code below, thanks.
impVolC <- function(callM, K, T, F, r){
if(y >= 0){
call0 <- K*exp(-r*T)*(exp(y)*polya(sqrt(2*y)) - 0.5)
if(callM <= call0){
sig <- 1/sqrt(T)*(sqrt(gamma + y) - sqrt(gamma - y))
}else{
sig <- 1/sqrt(T)*(sqrt(gamma + y) + sqrt(gamma - y))
}
}else{
call0 <- K*exp(-r*T)*(exp(y)/2 - polya(-sqrt(-2*y)))
if(callM <= call0){
sig <- 1/sqrt(T)*(-sqrt(gamma + y) + sqrt(gamma - y))
}else{
sig <- 1/sqrt(T)*(sqrt(gamma + y) + sqrt(gamma - y))
}
}
sig
}
for(i in 1:length(call)){
sigV[i] <- impVolC(callM = call[i], K = df$Strike[i], T = T, F = F, r = r_m)
}
______________________________________________
[email protected] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.