R/PropMovingOptim.R

Defines functions PropMovingOptim

PropMovingOptim <- function(kint = c(5,250), kby = 1,
         cfint = c(0.05, 0.95), cfby = 0.05,
         prices = BTC, nd = 365.25,
         rf = 1, alpha = 0.05, Initpocket = NULL,
         TransCost = NULL, rf.asset = 0,
         type = c("SharpeRatio", "CGR", "CAGR")) {

kvec <- seq(from = kint[1], to = kint[2], by = kby)
cfvec <- seq(from = cfint[1], to = cfint[2], by = cfby)

fooFun <- function(k, cf, type) {
  foo <- suppressWarnings(PropMoving(prices, k, nd,
                                     rf, alpha, Initpocket,
                                     TransCost, rf.asset,
                                     confidence.level = cf))
  if(!is.null(TransCost)) {
    return(as.numeric(as.character(foo$table[type,2])))
  } else {
    return(as.numeric(as.character(foo$table[type,1])))
  }
}


outProp <- PropOPtLoopCpp(kvec, cfvec, type)


outErr <- numeric(length(kvec))

for(i in 1:length(kvec)) {
  +   k <- kvec[i]
  +   outErr[i] <- as.numeric(as.character(ErrMoving(x = BTC, k, nd = 365.25,
                                                     rf = 1, alpha = 0.05, Initpocket = NULL,
                                                     TransCost = NULL)$table["SharpeRatio",1]))
  +   for(j in 1:length(cfvec)) {
    +     cf <- cfvec[j]
    +     outProp[j,i] <- as.numeric(as.character(suppressWarnings(PropMoving(x = BTC, k, nd = 365.25,
                                                                              rf = 1, alpha = 0.05, Initpocket = NULL,
                                                                              TransCost = NULL, rf.asset = 0,
                                                                              confidence.level = cf)$table["SharpeRatio",1])))
  }
}

head(outProp)
head(outErr)

max(matrix(outErr, ncol = 1, dimnames = list(kvec)))
which(matrix(outErr, ncol = 1, dimnames = list(kvec)) == max(matrix(outErr, ncol = 1, dimnames = list(kvec))))

rownames(outProp) <- cfvec
colnames(outProp) <- kvec
max(outProp)
which(outProp == max(outProp))
optrow(outProp)[outProp == max(outProp)]

col(outProp)[outProp == max(outProp)]
outProp[11,2]
cfvec[11]
kvec[2]
}
3schwartz/cryptoPlay documentation built on May 18, 2019, 2:33 a.m.