9 votos

Quantmod: ¿cuál es la diferencia entre ROC(Cl(SPY)) y ClCl(SPY)?

Siento que me estoy perdiendo algo fundamental aquí, pero no puedo evitar la sensación de que estas dos series deberían ser equivalentes.

/edit: también existe dailyReturn(Cl(SPY)). He visto los 3 métodos utilizados para calcular la rentabilidad de las acciones en varios blogs, y me pregunto cuál es el "correcto". Todos dan resultados ligeramente diferentes...

/edit2: y también existe Delt(Cl(SPY)), que parece ser equivalente a ClCl(SPY)

6voto

The How-To Geek Puntos 703

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

3voto

doekman Puntos 5187

TTR::ROC calcula los retornos de los registros por defecto. quantmod::ClCl utiliza quantmod::Delt que calcula los rendimientos aritméticos por defecto.

ROC(Cl(SPY), type="discrete") debe coincidir con ClCl(SPY) . Lo que es "correcto" depende de su propósito.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X