optimize.R

Propstrate <- PropMoving(BTC, k = 200, Initpocket = NULL, TransCost = NULL)

as.numeric(as.character(Propstrate$table["SharpeRatio",1]))

tt <- function(par,
               x, type = c("SharpeRatio", "CGR", "CAGR"),
               Initpocket = NULL, TransCost = NULL,
               nd= 365.25, rf = 1, alpha = 0.05,
               rf.asset = 0) {
  Opt.Prop <- suppressWarnings(PropMoving(x = x, par[1], nd = nd,
                                          rf = rf, alpha = alpha, Initpocket = Initpocket,
             TransCost = TransCost, rf.asset = rf.asset,
             confidence.level = par[2]))
  if(!is.null(TransCost)){
    return(-as.numeric(as.character(Opt.Prop$table[type,2])))
  } else {
    return(-as.numeric(as.character(Opt.Prop$table[type,1])))
  }
}
tt(par = c(20, 0.1), x = BTC, type = "SharpeRatio")

optimize(f = tt, maximum = TRUE, interval = c(0,100),
      x = BTC, type = "SharpeRatio")

nlminb(start = c(20,0.1), objective = tt,
       lower = c(3, 0.01), upper = c(500, 0.99),
       x = BTC, type = "SharpeRatio",
       control = list(rel.tol = 1e-10))


nlm(f = tt, p = c(20,0.1), x = BTC, type = "SharpeRatio")


auglag(x0 = c(20,0.1), fn = tt, lower = c(3, 0.01), upper = c(500, 0.99),
       x = BTC, type = "SharpeRatio")


nloptr(x0 = c(20,0.1),
        eval_f = tt,
        lb = c(3, 0.01),
        ub = c(500, 0.99),
       x = BTC, type = "SharpeRatio")



tts <- function(par){
  Opt.Prop <- suppressWarnings(PropMoving(x = BTC, par[1], nd = 365.25,
                                          rf = 1, alpha = 0.05, Initpocket = NULL,
                                          TransCost = NULL, rf.asset = 0,
                                          confidence.level = par[2]))
  return(as.numeric(as.character(Opt.Prop$table["SharpeRatio",1])))
}
nlminb(start = c(20,0.1), objective = tts,
       lower = c(3, 0.01), upper = c(500, 0.99))


ttss <- function(par){
  Opt.Prop <- suppressWarnings(PropMoving(x = BTC, k = 50, nd = 365.25,
                                          rf = 1, alpha = 0.05, Initpocket = NULL,
                                          TransCost = NULL, rf.asset = 0,
                                          confidence.level = par))
  return(as.numeric(as.character(Opt.Prop$table["SharpeRatio",1])))
}
nlminb(start = 0.5, objective = ttss,
       lower = 0.01, upper = 0.99)


kvec <- seq(5, 250, by = 1)
cfvec <- seq(0.05, 0.95, by = 0.05)


outProp <- matrix(nrow = length(cfvec), ncol = length(kvec))
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))
row(outProp)[outProp == max(outProp)]

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