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]
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.