Tuesday 17 October 2017

Backtesting Una Estrategia De Comercio De Acciones Simple


Backtesting una estrategia de comercio de acciones simple (Este artículo fue publicado por primera vez en Modern Toolmaking. Y amablemente contribuyó a R-bloggers) Nota: ¡Este post NO es asesoramiento financiero! Esta es sólo una manera divertida de explorar algunas de las capacidades R tiene para la importación y manipulación de datos. Hace poco leí un post en ETF Prophet que exploró una interesante estrategia de negociación de valores en Excel. La estrategia es simple: encontrar el punto culminante de la población durante los últimos 200 días, y contar el número de días que han transcurrido desde esa alta. Si ha sido más de 100 días, poseer el stock. Si su sido más de 100 días, no lo posee. Esta estrategia es muy simple, pero produce algunos resultados impresionantes. (Nota: sin embargo, este ejemplo utiliza datos que no han sido ajustados de divisiones o dividendos y que podrían contener otros errores. Además, ignoraban los costos de negociación y los retrasos en la ejecución, ambos factores que afectan al desempeño de la estrategia). La implementación de esta estrategia en R es simple y ofrece numerosas ventajas sobre excel, la principal de las cuales es que tirar de los datos del mercado de valores en R es fácil, y podemos probar esta estrategia en una amplia gama de índices con relativamente poco esfuerzo. En primer lugar, descargamos datos para GSPC usando quantmod. (GSPC significa el índice SP 500). A continuación, construimos una función para calcular el número de días desde el n-día de alta en una serie de tiempo, y una función para implementar nuestra estrategia de negociación. Esta última función toma 2 parámetros: el máximo de día n que desea utilizar, y los números de días anteriores a esa alta que tendrá la acción. El ejemplo es 200 y 100, pero se puede cambiar fácilmente a la máxima de 500 días y ver lo que sucede si se mantiene la acción 300 días después de que antes de rescate. Dado que esta función está parametrizada, podemos probar fácilmente muchas otras versiones de nuestra estrategia. Pulsamos el inicio de nuestra estrategia con ceros para que tenga la misma longitud que nuestros datos de entrada. (Si desea una explicación más detallada de la función daysSinceHigh, consulte la discusión sobre la validación cruzada). Multiplicamos nuestro vector de posición (0,1) por los retornos del índice para obtener nuestros retornos de estrategias. Ahora construimos una función para devolver algunas estadísticas sobre una estrategia de negociación, y comparar nuestra estrategia con el punto de referencia. Algo arbitrariamente, he decidido mirar el rendimiento acumulativo, el rendimiento anual medio, la relación de sharpe, el porcentaje de ganancia, la volatilidad anual media, la reducción máxima y la reducción de la longitud máxima. Otras estadísticas serían fáciles de implementar.

No comments:

Post a Comment