Para ampliar lo que ya ha dicho Joshua, he aquí una lista truncada de parámetros de funciones similares, junto con el paquete al que pertenecen.
quantmod::Delt(x1,type = c("arithmetic", "log"))
quantmod::periodReturn(x, type='arithmetic') # log would be "log"
TTR::ROC(x, type=c("continuous", "discrete"))
PerformanceAnalytics::CalculateReturns(prices, method=c("compound","simple"))
Su elección son las devoluciones simples, que son (today's_close - yesterday's_close) / yesterday's_close
o los rendimientos de los troncos, que son log(today's_close) - log(yesterday's_close)
o, de forma equivalente, log(today's_close / yesterday's_close)
. Si se decide por los rendimientos simples, debe multiplicar los rendimientos para obtener el rendimiento total al final de un período. Con los rendimientos logarítmicos puede sumarlos. Esto es preferible cuando su vector puede tener ceros en él por razones obvias. Si tienes una señal simple de 1 o -1, entonces sólo vas a tener un cero al principio, o un NA dependiendo de la función que elijas. Pero una vez que usted tiene un sistema que va plana, o las señales de un 0, entonces usted tendrá algunos problemas con los retornos simples.
Los rendimientos simples se denominan aritméticos, discretos o simples en las funciones anteriores. Los rendimientos logarítmicos se denominan alternativamente logarítmicos, continuos o compuestos.
El Delt
es una especie de artefacto y se ha actualizado con la función dailyReturn
función. A continuación se muestra una instantánea de lo que cada función genera en las dos primeras líneas de un sistema de comercio. Observe también que algunas tienen sus valores por defecto establecidos en retornos simples y otras tienen por defecto establecidos en retornos de registro. Cada función permite cambiar el valor por defecto.
SLV.Close Delt dailyReturn ROC CalculateReturns
2010-01-04 17.23 NA 0.000000000 NA NA
2010-01-05 17.51 0.016250725 0.016250725 0.016120096 0.016120096
Recuerda que una vez que conviertes tus rendimientos en un rendimiento logarítmico, necesitas desconvertirlo para volver a tener rendimientos simples, y esto se logra simplemente aplicando exp(log_return)
.
Mi reciente publicación en el blog sobre este tema puede ser de su interés. http://www.milktrader.net/2011/04/chop-slice-and-dice-your-returns-in-r.html