「勝率」がトレーディング戦略のリターンにどのように影響するかを調べています。
S&P の価格をダウンロードし、毎日のリターンを計算します。次に、これらのリターンの 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
速度を上げるためにできる最適化はありますか?