Soy nuevo en R y he encontrado este sencillo código de backtesting y me podéis explicar qué está pasando aquí.
library(quantmod)
library(PerformanceAnalytics)
s <- get(getSymbols('SPY'))["2012::"]
s$sma20 <- SMA(Cl(s) , 20)
s$position <- ifelse(Cl(s) > s$sma20 , 1 , -1)
myReturn <- lag(s$position) * dailyReturn(s)
charts.PerformanceSummary(cbind(dailyReturn(s),myReturn))
Sé que el código utiliza esta estrategia
Buy
close > SMA20
sell
close < SMA20
Pero tengo dudas sobre todo en estas líneas
s$position <- ifelse(Cl(s) > s$sma20 , 1 , -1)
myReturn <- lag(s$position) * dailyReturn(s)
charts.PerformanceSummary(cbind(dailyReturn(s),myReturn))
s$position <- ifelse(Cl(s) > s$sma20 , 1 , -1)
si el precio de cierre es mayor que la media móvil de 20 días, entonces s$postion=1
si no s$postion=-1
¿Por qué asignar 1 y -1? ¿Por qué calcular dailyreturns y qué pasa con myReturn,cbind()? También puede explicar estos resultados http://i.stack.imgur.com/B1h7E.png