R Markdown

第三题 Exhaustive Optimization

读取excel:BABA.数据

library(readxl)
df<-read_excel("C:/Users/beibei/Desktop/BABA..xlsx")

装载数据

# Declare bounds and step size for optimization 
lowerBound <- c(n1 = 5, nFact = 3, nSharpe = 22, shThresh = 0.05) 
upperBound <- c(n1 = 80, nFact = 3, nSharpe = 22, shThresh = 0.95) 
stepSize <- c(n1 = 5, nFact = 1, nSharpe = 1, shThresh = 0.05)

 pnames <- names(stepSize)
 np <- length(pnames)
 # Declare list of all test points POINTS <- list() 
POINTS <- list()
 for( p in pnames )
{ POINTS[[p]] <- seq(lowerBound[[p]], upperBound[[p]], stepSize[[p]])
}
OPTIM <- data.frame(matrix(NA, nrow = prod(unlist(lapply(POINTS, length))), 
ncol = np + 1)) 
names(OPTIM)[1:np] <- names(POINTS)
names(OPTIM)[np+1] <- "obj" 

# Store all possible combinations of parameters 
for( i in 1:np ){ 
each <- prod(unlist(lapply(POINTS, length))[-(1:i)]) 
times <- prod(unlist(lapply(POINTS, length))[-(i:length(pnames))]) 
OPTIM[,i] <- rep(POINTS[[pnames[i]]], each = each, times = times)
 } 
# Test each row of OPTIM 
timeLapse <- proc.time()[3] 
evaluate <- function(PARAM, minVal = NA, maxVal = NA, y = 2014,
transform = FALSE, verbose = FALSE,
negative = FALSE, transformOnly = FALSE,
returnData = FALSE, accountParams = NULL)
batchsize<-101
for( i in 1:nrow(OPTIM) ){ 
OPTIM[i,np+1] <- evaluate(OPTIM[i,1:np], transform = FALSE, y = 2014) 
cat(paste0("## ", floor( 100 * i / nrow(OPTIM)), "% complete\n")) 
cat(paste0("## ", 
round( ((proc.time()[3] - timeLapse) * 
((nrow(OPTIM) - i)/ i))/60, 2),
 " minutes remaining\n\n")) 
} 
## ## 0% complete
## ## 0.1 minutes remaining
## 
## ## 0% complete
## ## 0.05 minutes remaining
## 
## ## 0% complete
## ## 0.03 minutes remaining
## 
## ## 1% complete
## ## 0.03 minutes remaining
## 
## ## 1% complete
## ## 0.02 minutes remaining
## 
## ## 1% complete
## ## 0.02 minutes remaining
## 
## ## 2% complete
## ## 0.01 minutes remaining
## 
## ## 2% complete
## ## 0.01 minutes remaining
## 
## ## 2% complete
## ## 0.01 minutes remaining
## 
## ## 3% complete
## ## 0.01 minutes remaining
## 
## ## 3% complete
## ## 0.01 minutes remaining
## 
## ## 3% complete
## ## 0.01 minutes remaining
## 
## ## 4% complete
## ## 0.01 minutes remaining
## 
## ## 4% complete
## ## 0.01 minutes remaining
## 
## ## 4% complete
## ## 0.01 minutes remaining
## 
## ## 5% complete
## ## 0.01 minutes remaining
## 
## ## 5% complete
## ## 0.01 minutes remaining
## 
## ## 5% complete
## ## 0.01 minutes remaining
## 
## ## 6% complete
## ## 0.01 minutes remaining
## 
## ## 6% complete
## ## 0 minutes remaining
## 
## ## 6% complete
## ## 0 minutes remaining
## 
## ## 7% complete
## ## 0 minutes remaining
## 
## ## 7% complete
## ## 0 minutes remaining
## 
## ## 7% complete
## ## 0 minutes remaining
## 
## ## 8% complete
## ## 0 minutes remaining
## 
## ## 8% complete
## ## 0 minutes remaining
## 
## ## 8% complete
## ## 0 minutes remaining
## 
## ## 9% complete
## ## 0 minutes remaining
## 
## ## 9% complete
## ## 0 minutes remaining
## 
## ## 9% complete
## ## 0 minutes remaining
## 
## ## 10% complete
## ## 0 minutes remaining
## 
## ## 10% complete
## ## 0 minutes remaining
## 
## ## 10% complete
## ## 0 minutes remaining
## 
## ## 11% complete
## ## 0 minutes remaining
## 
## ## 11% complete
## ## 0 minutes remaining
## 
## ## 11% complete
## ## 0 minutes remaining
## 
## ## 12% complete
## ## 0 minutes remaining
## 
## ## 12% complete
## ## 0 minutes remaining
## 
## ## 12% complete
## ## 0 minutes remaining
## 
## ## 13% complete
## ## 0 minutes remaining
## 
## ## 13% complete
## ## 0 minutes remaining
## 
## ## 13% complete
## ## 0 minutes remaining
## 
## ## 14% complete
## ## 0 minutes remaining
## 
## ## 14% complete
## ## 0 minutes remaining
## 
## ## 14% complete
## ## 0 minutes remaining
## 
## ## 15% complete
## ## 0 minutes remaining
## 
## ## 15% complete
## ## 0 minutes remaining
## 
## ## 15% complete
## ## 0 minutes remaining
## 
## ## 16% complete
## ## 0 minutes remaining
## 
## ## 16% complete
## ## 0 minutes remaining
## 
## ## 16% complete
## ## 0 minutes remaining
## 
## ## 17% complete
## ## 0 minutes remaining
## 
## ## 17% complete
## ## 0 minutes remaining
## 
## ## 17% complete
## ## 0 minutes remaining
## 
## ## 18% complete
## ## 0 minutes remaining
## 
## ## 18% complete
## ## 0 minutes remaining
## 
## ## 18% complete
## ## 0 minutes remaining
## 
## ## 19% complete
## ## 0 minutes remaining
## 
## ## 19% complete
## ## 0 minutes remaining
## 
## ## 19% complete
## ## 0 minutes remaining
## 
## ## 20% complete
## ## 0 minutes remaining
## 
## ## 20% complete
## ## 0 minutes remaining
## 
## ## 20% complete
## ## 0 minutes remaining
## 
## ## 21% complete
## ## 0 minutes remaining
## 
## ## 21% complete
## ## 0 minutes remaining
## 
## ## 21% complete
## ## 0 minutes remaining
## 
## ## 22% complete
## ## 0 minutes remaining
## 
## ## 22% complete
## ## 0 minutes remaining
## 
## ## 22% complete
## ## 0 minutes remaining
## 
## ## 23% complete
## ## 0 minutes remaining
## 
## ## 23% complete
## ## 0 minutes remaining
## 
## ## 23% complete
## ## 0 minutes remaining
## 
## ## 24% complete
## ## 0 minutes remaining
## 
## ## 24% complete
## ## 0 minutes remaining
## 
## ## 24% complete
## ## 0 minutes remaining
## 
## ## 25% complete
## ## 0 minutes remaining
## 
## ## 25% complete
## ## 0 minutes remaining
## 
## ## 25% complete
## ## 0 minutes remaining
## 
## ## 25% complete
## ## 0 minutes remaining
## 
## ## 26% complete
## ## 0 minutes remaining
## 
## ## 26% complete
## ## 0 minutes remaining
## 
## ## 26% complete
## ## 0 minutes remaining
## 
## ## 27% complete
## ## 0 minutes remaining
## 
## ## 27% complete
## ## 0 minutes remaining
## 
## ## 27% complete
## ## 0 minutes remaining
## 
## ## 28% complete
## ## 0 minutes remaining
## 
## ## 28% complete
## ## 0 minutes remaining
## 
## ## 28% complete
## ## 0 minutes remaining
## 
## ## 29% complete
## ## 0 minutes remaining
## 
## ## 29% complete
## ## 0 minutes remaining
## 
## ## 29% complete
## ## 0 minutes remaining
## 
## ## 30% complete
## ## 0 minutes remaining
## 
## ## 30% complete
## ## 0 minutes remaining
## 
## ## 30% complete
## ## 0 minutes remaining
## 
## ## 31% complete
## ## 0 minutes remaining
## 
## ## 31% complete
## ## 0 minutes remaining
## 
## ## 31% complete
## ## 0 minutes remaining
## 
## ## 32% complete
## ## 0 minutes remaining
## 
## ## 32% complete
## ## 0 minutes remaining
## 
## ## 32% complete
## ## 0 minutes remaining
## 
## ## 33% complete
## ## 0 minutes remaining
## 
## ## 33% complete
## ## 0 minutes remaining
## 
## ## 33% complete
## ## 0 minutes remaining
## 
## ## 34% complete
## ## 0 minutes remaining
## 
## ## 34% complete
## ## 0 minutes remaining
## 
## ## 34% complete
## ## 0 minutes remaining
## 
## ## 35% complete
## ## 0 minutes remaining
## 
## ## 35% complete
## ## 0 minutes remaining
## 
## ## 35% complete
## ## 0 minutes remaining
## 
## ## 36% complete
## ## 0 minutes remaining
## 
## ## 36% complete
## ## 0 minutes remaining
## 
## ## 36% complete
## ## 0 minutes remaining
## 
## ## 37% complete
## ## 0 minutes remaining
## 
## ## 37% complete
## ## 0 minutes remaining
## 
## ## 37% complete
## ## 0 minutes remaining
## 
## ## 38% complete
## ## 0 minutes remaining
## 
## ## 38% complete
## ## 0 minutes remaining
## 
## ## 38% complete
## ## 0 minutes remaining
## 
## ## 39% complete
## ## 0 minutes remaining
## 
## ## 39% complete
## ## 0 minutes remaining
## 
## ## 39% complete
## ## 0 minutes remaining
## 
## ## 40% complete
## ## 0 minutes remaining
## 
## ## 40% complete
## ## 0 minutes remaining
## 
## ## 40% complete
## ## 0 minutes remaining
## 
## ## 41% complete
## ## 0 minutes remaining
## 
## ## 41% complete
## ## 0 minutes remaining
## 
## ## 41% complete
## ## 0 minutes remaining
## 
## ## 42% complete
## ## 0 minutes remaining
## 
## ## 42% complete
## ## 0 minutes remaining
## 
## ## 42% complete
## ## 0 minutes remaining
## 
## ## 43% complete
## ## 0 minutes remaining
## 
## ## 43% complete
## ## 0 minutes remaining
## 
## ## 43% complete
## ## 0 minutes remaining
## 
## ## 44% complete
## ## 0 minutes remaining
## 
## ## 44% complete
## ## 0 minutes remaining
## 
## ## 44% complete
## ## 0 minutes remaining
## 
## ## 45% complete
## ## 0 minutes remaining
## 
## ## 45% complete
## ## 0 minutes remaining
## 
## ## 45% complete
## ## 0 minutes remaining
## 
## ## 46% complete
## ## 0 minutes remaining
## 
## ## 46% complete
## ## 0 minutes remaining
## 
## ## 46% complete
## ## 0 minutes remaining
## 
## ## 47% complete
## ## 0 minutes remaining
## 
## ## 47% complete
## ## 0 minutes remaining
## 
## ## 47% complete
## ## 0 minutes remaining
## 
## ## 48% complete
## ## 0 minutes remaining
## 
## ## 48% complete
## ## 0 minutes remaining
## 
## ## 48% complete
## ## 0 minutes remaining
## 
## ## 49% complete
## ## 0 minutes remaining
## 
## ## 49% complete
## ## 0 minutes remaining
## 
## ## 49% complete
## ## 0 minutes remaining
## 
## ## 50% complete
## ## 0 minutes remaining
## 
## ## 50% complete
## ## 0 minutes remaining
## 
## ## 50% complete
## ## 0 minutes remaining
## 
## ## 50% complete
## ## 0 minutes remaining
## 
## ## 51% complete
## ## 0 minutes remaining
## 
## ## 51% complete
## ## 0 minutes remaining
## 
## ## 51% complete
## ## 0 minutes remaining
## 
## ## 52% complete
## ## 0 minutes remaining
## 
## ## 52% complete
## ## 0 minutes remaining
## 
## ## 52% complete
## ## 0 minutes remaining
## 
## ## 53% complete
## ## 0 minutes remaining
## 
## ## 53% complete
## ## 0 minutes remaining
## 
## ## 53% complete
## ## 0 minutes remaining
## 
## ## 54% complete
## ## 0 minutes remaining
## 
## ## 54% complete
## ## 0 minutes remaining
## 
## ## 54% complete
## ## 0 minutes remaining
## 
## ## 55% complete
## ## 0 minutes remaining
## 
## ## 55% complete
## ## 0 minutes remaining
## 
## ## 55% complete
## ## 0 minutes remaining
## 
## ## 56% complete
## ## 0 minutes remaining
## 
## ## 56% complete
## ## 0 minutes remaining
## 
## ## 56% complete
## ## 0 minutes remaining
## 
## ## 57% complete
## ## 0 minutes remaining
## 
## ## 57% complete
## ## 0 minutes remaining
## 
## ## 57% complete
## ## 0 minutes remaining
## 
## ## 58% complete
## ## 0 minutes remaining
## 
## ## 58% complete
## ## 0 minutes remaining
## 
## ## 58% complete
## ## 0 minutes remaining
## 
## ## 59% complete
## ## 0 minutes remaining
## 
## ## 59% complete
## ## 0 minutes remaining
## 
## ## 59% complete
## ## 0 minutes remaining
## 
## ## 60% complete
## ## 0 minutes remaining
## 
## ## 60% complete
## ## 0 minutes remaining
## 
## ## 60% complete
## ## 0 minutes remaining
## 
## ## 61% complete
## ## 0 minutes remaining
## 
## ## 61% complete
## ## 0 minutes remaining
## 
## ## 61% complete
## ## 0 minutes remaining
## 
## ## 62% complete
## ## 0 minutes remaining
## 
## ## 62% complete
## ## 0 minutes remaining
## 
## ## 62% complete
## ## 0 minutes remaining
## 
## ## 63% complete
## ## 0 minutes remaining
## 
## ## 63% complete
## ## 0 minutes remaining
## 
## ## 63% complete
## ## 0 minutes remaining
## 
## ## 64% complete
## ## 0 minutes remaining
## 
## ## 64% complete
## ## 0 minutes remaining
## 
## ## 64% complete
## ## 0 minutes remaining
## 
## ## 65% complete
## ## 0 minutes remaining
## 
## ## 65% complete
## ## 0 minutes remaining
## 
## ## 65% complete
## ## 0 minutes remaining
## 
## ## 66% complete
## ## 0 minutes remaining
## 
## ## 66% complete
## ## 0 minutes remaining
## 
## ## 66% complete
## ## 0 minutes remaining
## 
## ## 67% complete
## ## 0 minutes remaining
## 
## ## 67% complete
## ## 0 minutes remaining
## 
## ## 67% complete
## ## 0 minutes remaining
## 
## ## 68% complete
## ## 0 minutes remaining
## 
## ## 68% complete
## ## 0 minutes remaining
## 
## ## 68% complete
## ## 0 minutes remaining
## 
## ## 69% complete
## ## 0 minutes remaining
## 
## ## 69% complete
## ## 0 minutes remaining
## 
## ## 69% complete
## ## 0 minutes remaining
## 
## ## 70% complete
## ## 0 minutes remaining
## 
## ## 70% complete
## ## 0 minutes remaining
## 
## ## 70% complete
## ## 0 minutes remaining
## 
## ## 71% complete
## ## 0 minutes remaining
## 
## ## 71% complete
## ## 0 minutes remaining
## 
## ## 71% complete
## ## 0 minutes remaining
## 
## ## 72% complete
## ## 0 minutes remaining
## 
## ## 72% complete
## ## 0 minutes remaining
## 
## ## 72% complete
## ## 0 minutes remaining
## 
## ## 73% complete
## ## 0 minutes remaining
## 
## ## 73% complete
## ## 0 minutes remaining
## 
## ## 73% complete
## ## 0 minutes remaining
## 
## ## 74% complete
## ## 0 minutes remaining
## 
## ## 74% complete
## ## 0 minutes remaining
## 
## ## 74% complete
## ## 0 minutes remaining
## 
## ## 75% complete
## ## 0 minutes remaining
## 
## ## 75% complete
## ## 0 minutes remaining
## 
## ## 75% complete
## ## 0 minutes remaining
## 
## ## 75% complete
## ## 0 minutes remaining
## 
## ## 76% complete
## ## 0 minutes remaining
## 
## ## 76% complete
## ## 0 minutes remaining
## 
## ## 76% complete
## ## 0 minutes remaining
## 
## ## 77% complete
## ## 0 minutes remaining
## 
## ## 77% complete
## ## 0 minutes remaining
## 
## ## 77% complete
## ## 0 minutes remaining
## 
## ## 78% complete
## ## 0 minutes remaining
## 
## ## 78% complete
## ## 0 minutes remaining
## 
## ## 78% complete
## ## 0 minutes remaining
## 
## ## 79% complete
## ## 0 minutes remaining
## 
## ## 79% complete
## ## 0 minutes remaining
## 
## ## 79% complete
## ## 0 minutes remaining
## 
## ## 80% complete
## ## 0 minutes remaining
## 
## ## 80% complete
## ## 0 minutes remaining
## 
## ## 80% complete
## ## 0 minutes remaining
## 
## ## 81% complete
## ## 0 minutes remaining
## 
## ## 81% complete
## ## 0 minutes remaining
## 
## ## 81% complete
## ## 0 minutes remaining
## 
## ## 82% complete
## ## 0 minutes remaining
## 
## ## 82% complete
## ## 0 minutes remaining
## 
## ## 82% complete
## ## 0 minutes remaining
## 
## ## 83% complete
## ## 0 minutes remaining
## 
## ## 83% complete
## ## 0 minutes remaining
## 
## ## 83% complete
## ## 0 minutes remaining
## 
## ## 84% complete
## ## 0 minutes remaining
## 
## ## 84% complete
## ## 0 minutes remaining
## 
## ## 84% complete
## ## 0 minutes remaining
## 
## ## 85% complete
## ## 0 minutes remaining
## 
## ## 85% complete
## ## 0 minutes remaining
## 
## ## 85% complete
## ## 0 minutes remaining
## 
## ## 86% complete
## ## 0 minutes remaining
## 
## ## 86% complete
## ## 0 minutes remaining
## 
## ## 86% complete
## ## 0 minutes remaining
## 
## ## 87% complete
## ## 0 minutes remaining
## 
## ## 87% complete
## ## 0 minutes remaining
## 
## ## 87% complete
## ## 0 minutes remaining
## 
## ## 88% complete
## ## 0 minutes remaining
## 
## ## 88% complete
## ## 0 minutes remaining
## 
## ## 88% complete
## ## 0 minutes remaining
## 
## ## 89% complete
## ## 0 minutes remaining
## 
## ## 89% complete
## ## 0 minutes remaining
## 
## ## 89% complete
## ## 0 minutes remaining
## 
## ## 90% complete
## ## 0 minutes remaining
## 
## ## 90% complete
## ## 0 minutes remaining
## 
## ## 90% complete
## ## 0 minutes remaining
## 
## ## 91% complete
## ## 0 minutes remaining
## 
## ## 91% complete
## ## 0 minutes remaining
## 
## ## 91% complete
## ## 0 minutes remaining
## 
## ## 92% complete
## ## 0 minutes remaining
## 
## ## 92% complete
## ## 0 minutes remaining
## 
## ## 92% complete
## ## 0 minutes remaining
## 
## ## 93% complete
## ## 0 minutes remaining
## 
## ## 93% complete
## ## 0 minutes remaining
## 
## ## 93% complete
## ## 0 minutes remaining
## 
## ## 94% complete
## ## 0 minutes remaining
## 
## ## 94% complete
## ## 0 minutes remaining
## 
## ## 94% complete
## ## 0 minutes remaining
## 
## ## 95% complete
## ## 0 minutes remaining
## 
## ## 95% complete
## ## 0 minutes remaining
## 
## ## 95% complete
## ## 0 minutes remaining
## 
## ## 96% complete
## ## 0 minutes remaining
## 
## ## 96% complete
## ## 0 minutes remaining
## 
## ## 96% complete
## ## 0 minutes remaining
## 
## ## 97% complete
## ## 0 minutes remaining
## 
## ## 97% complete
## ## 0 minutes remaining
## 
## ## 97% complete
## ## 0 minutes remaining
## 
## ## 98% complete
## ## 0 minutes remaining
## 
## ## 98% complete
## ## 0 minutes remaining
## 
## ## 98% complete
## ## 0 minutes remaining
## 
## ## 99% complete
## ## 0 minutes remaining
## 
## ## 99% complete
## ## 0 minutes remaining
## 
## ## 99% complete
## ## 0 minutes remaining
## 
## ## 100% complete
## ## 0 minutes remaining

绘图

library(lattice)
wireframe(obj ~ n1*shThresh, data = OPTIM,
xlab = "n1", ylab = "shThresh",
main = "Long-Only MACD Exhaustive Optimization",
drape = TRUE,
colorkey = TRUE,
screen = list(z = 15, x = -60)
)

levelplot(obj ~ n1*shThresh, data = OPTIM,
xlab = "n1", ylab = "shThresh",
main = "Long-Only MACD Exhaustive Optimization"
)