Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- RInterface.RRun "..."
- RInterface.RRun "y <- function(x) { ... }"
- bestIV <- function(dT, IVTS.t, Spot, r) {
- b <- r
- xout <- seq(0, max(T), dT)
- sfm <- matrix(NA, nrow = length(K), ncol = length(xout))
- for(i in 1:length(K)) {
- sfm[i,] <- approx(x = T, y = IVTS.t[i,], xout = xout, rule = 2)$y
- }
- sfm[,1] <- sfm[,1] + sfm[,2] - sfm[,3]
- rownames(sfm) <- K
- colnames(sfm) <- xout
- Option <- matrix(NA, nrow = length(K), ncol = length(xout))
- for(i in 1:length(K)) {
- for(j in 1:length(xout)) {
- TypeFlag <- ifelse(K[i] < Spot, 'p', 'c')
- Option[i,j] <- GBSOption(TypeFlag = TypeFlag, S = Spot, X = K[i],
- Time = xout[j] / 365, r = r, b = b,
- sigma = sfm[i,j] / 100)@price
- }
- }
- rownames(Option) <- K
- colnames(Option) <- xout
- dP <- (cbind(0, -t(apply(X = Option, MARGIN = 1, FUN = diff))) / Option)[,-(1:2)]
- dV <- dP / dT
- min.V <- which(dV == min(dV), arr.ind = TRUE, useNames = TRUE)
- Strike <- as.numeric(dimnames(min.V)[1])
- Maturity <- as.numeric(unlist(dimnames(dV)[2]))[min.V[2]]
- Days <- dT
- Mat <- c(dV[which(dV == min(dV))], Strike, Maturity, Days)
- names(Mat) <- c('Value', 'Strike', 'Maturity', 'Days')
- return(Mat)
- }
- "a" & "b"
- y <- function(x, a, b){
- return(x)
- }
- RInterface.RRun "y <- function(x, a, b) {" &
- "return(x)" &
- "}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement