Hello,
I have to build a function that takes a time serie and calculate the momentum.
For each date of the serie, I have to build a loop to calculate it using the
last few data.
My problem is that it takes one minute to compute and I need to run this
function very often.
I would like to vectorize it, as much as possible.
Can somebody help me? I have read the
http://www.burns-stat.com/pages/Tutor/R_inferno.pdf tutorial but it seems I am
not smart enough to vectorize this.
here is the code of my function:
momentum = function(price,H,N,HL) {
indicator = price #creates the empty
vector for the indicator
indicator[,1]=0
if ((H/N)==floor(H/N)) { #Checks if length of
subperiods is an integer
for (i in 1:(length(indicator)-H)) {
ph=last(price,H+1) #Horizon time data
list
horizonPerformance=as.numeric(last(ph))/as.numeric(first(ph))-1
#Performance over the time horizon
for (j in 1:N) {
phj=last(first(ph,(N-j+1)*H/N+1),H/N+1) #subperiod
data list
periodPerf=as.numeric(last(phj))/as.numeric(first(phj))-1
#Performance over period j
if (periodPerf*horizonPerformance>0) #checks
consistency with time horizon perf
indicator[length(indicator)-i+1,1]=indicator[length(indicator)-i+1,1]+sign(periodPerf)
}
price=last(price,-1) #shift the data list
}
}
return(indicator)
}
_________________________________________________________________
Inédit ! Des Emoticônes Déjantées! Installez les dans votre Messenger !
[[alternative HTML version deleted]]