我想從權重向量和價格向量中獲取P & L.高效損益函數
data$weight[] <- c(NA,NA,1,NA,NA,NA,0,NA,NA,1,NA,NA,NA,0,NA,NA,1,NA,0,NA,NA,NA)
1只意味着買入和0手段銷售
y <- seq(1:length(data$weight))
我已經寫:
na_following_zero <- na.locf(c(1,data$weight))[-1]==0 & is.na(data$weight) #Ben Bolker's code
PL <- rep(NA,length(data$weight))
PL[1]=0
for (i in 2:length(data$weight)) {
if (is.na(data$weight[i]) && i<which.max(data$weight==1)) {PL[i]=PL[i-1]}
if (data$weight[i] %in% 1) {PL[i]=PL[i-1]}
if (is.na(data$weight[i]) && i>which.max(data$weight==1) && !na_following_zero[i]) {PL[i]=PL[i-1]+y[i]-y[i-1]}
if (data$weight[i] %in% 0) {PL[i]=PL[i-1]+y[i]-y[i-1]}
if (na_following_zero[i]) {PL[i]=PL[i-1]}
}
預期輸出:
[1] 0 0 0 1 2 3 4 4 4 4 5 6 7 8 8 8 8 9 10 10 10 10
,它能夠完成任務,但它非常慢。 關於如何改進它的任何想法?
請顯示您的示例向量的預期輸出。 –