我试图了解“胜率”如何影响交易策略的回报。
我下载标准普尔的价格并计算每日回报。然后,我随机选择这些回报的 x%,并说我正确预测了它的方向,因此回报是正的。对于剩余的 1-x%,我说我错了,回报是负数。我复制这个过程说 1000 次并收集年化几何回报。
我以 0.01 的增量间隔将 x 从 0.5 变为 0.6。
这是我的代码:
library(quantmod)
library(multicore)
getSymbols("^GSPC", from = "1950-1-1")
ret <- ROC(GSPC)[-1,4]
set.seed(123)
winpct <- seq(0.5, 0.6, 0.01)
ret <- coredata(ret)
system.time(res <- simplify2array(mclapply(winpct, function(x) replicate(1000, drawsample(ret, x)))))
drawsample <- function(ret, winpct){
len = length(ret)
ret = abs(ret)
win = sample(1:len, round(winpct * len))
a = c(ret[win], -ret[-win])
return(prod(1 + a) ^ (252 / length(a)) - 1)
}
花的时间:
user system elapsed
18.904 0.842 5.580
我可以做任何进一步的优化来加快速度吗?