Estoy usando R moving average crossover backtest script de eickonomics . Pero tengo una pregunta sobre esta sección.
#Calculate the moving averages and lag them one day to prevent lookback bias
PreviousSMA_50 <- lag(SMA(Cl(data[['SPY']]),50))
PreviousSMA_200 <- lag(SMA(Cl(data[['SPY']]),200))
.
.
data$weight[] = ifelse(as.integer(PreviousSMA_50>PreviousSMA_200)==1,1,0) #If price of SPY is above the SMA then buy
¿Por qué el autor necesita retrasar los valores de la SMA? ¿Por qué no puede utilizar simplemente los valores sin desfase?
PreviousSMA_50 <- SMA(Cl(data[['SPY']]),50)
PreviousSMA_200 <- SMA(Cl(data[['SPY']]),200)
.
.
data$weight[] = ifelse(as.integer(PreviousSMA_50>PreviousSMA_200)==1,1,0)
¿Por qué utilizar el valor de la SMA anterior en lugar del valor de la SMA actual? ¿Cómo puede causar un sesgo de anticipación?
Si necesitamos otros indicadores, ¿tenemos que retrasar también esos valores?
rsi<-RSI(Cl(data[['SPY']]),50)
roc<-ROC(Cl(data[['SPY']]),50)