R:更快滚动的 VWAP
R: Faster Rolling VWAP
给定以下数据
N<-1000;
Px<-runif(N, min = 100, max = 120);
Vol<-runif(N, min = 1, max = 20)
我生成一个从索引 =1 开始滚动的 VWAP 系列
VWAP<-unlist(lapply(seq(1,length(Px)),function(x) sum(Px[1:x]*Vol[1:x])/sum(Vol[1:x])))
这适用于 N<10000,但当 N 接近 1M 时,效率会急剧下降。
有什么更快实施的建议吗?
您可以使用这种语法,它不会在每次迭代时重新计算先前元素的总和:
N<-1000000;
Px<-runif(N, min = 100, max = 120);
Vol<-runif(N, min = 1, max = 20)
PxVol <- Px*Vol
SPxVol <- cumsum(PxVol)
SVol <- cumsum(Vol)
VWAP <- SPxVol/SVol
给定以下数据
N<-1000;
Px<-runif(N, min = 100, max = 120);
Vol<-runif(N, min = 1, max = 20)
我生成一个从索引 =1 开始滚动的 VWAP 系列
VWAP<-unlist(lapply(seq(1,length(Px)),function(x) sum(Px[1:x]*Vol[1:x])/sum(Vol[1:x])))
这适用于 N<10000,但当 N 接近 1M 时,效率会急剧下降。 有什么更快实施的建议吗?
您可以使用这种语法,它不会在每次迭代时重新计算先前元素的总和:
N<-1000000;
Px<-runif(N, min = 100, max = 120);
Vol<-runif(N, min = 1, max = 20)
PxVol <- Px*Vol
SPxVol <- cumsum(PxVol)
SVol <- cumsum(Vol)
VWAP <- SPxVol/SVol