Wednesday 7 December 2016

Cómo Backtest Un Sistema Comercial

Uso de Excel para volver a probar las estrategias de comercio Cómo volver a la prueba con Excel Ive hecho una buena cantidad de estrategia de comercio de nuevo pruebas. He utilizado sofisticados lenguajes de programación y algoritmos y también lo he hecho con lápiz y papel. Usted no necesita ser un científico de cohetes o un programador para volver a probar muchas estrategias comerciales. Si puede operar un programa de hoja de cálculo como Excel, puede volver a probar muchas estrategias. Objetivo El objetivo de este artículo es mostrarle cómo volver a probar una estrategia comercial utilizando Excel y una fuente de datos públicamente disponible. Esto no debería costarle más que el tiempo que se tarda en hacer la prueba. Datos Antes de comenzar a probar cualquier estrategia, necesita un conjunto de datos. Como mínimo, se trata de una serie de fechas / horas y precios. Más realista que necesita la fecha / hora, abierto, alto, bajo, cerrar los precios. Por lo general sólo necesita el componente de tiempo de la serie de datos si está probando estrategias de comercio intradía. Si desea trabajar a lo largo y aprender a volver a la prueba con Excel mientras está leyendo esto, a continuación, siga los pasos que describo en cada sección. Necesitamos obtener algunos datos para el símbolo que vamos a volver a probar. Ir a: Finanzas de Yahoo En el campo Introducir símbolos, ingrese: IBM y haga clic en GO bajo cotizaciones en el lado izquierdo haga clic en Precios históricos e ingrese los intervalos de fecha que desea. He seleccionado del 1 de enero de 2004 al 31 de diciembre de 2004 Desplácese hasta la parte inferior de la página y haga clic en Descargar en hoja de cálculo Guarde el archivo con un nombre (como ibm. csv) y en un lugar que pueda encontrar más adelante. Preparación de los datos Abra el archivo (que descargó anteriormente) mediante Excel. Debido a la naturaleza dinámica del Internet, las instrucciones que usted leyó arriba y el archivo que usted abre pueden haber cambiado por el tiempo que usted lee esto. Cuando descargué este archivo, las primeras líneas parecían así: Ahora puedes eliminar las columnas que no vas a usar. Para la prueba que estoy a punto de hacer sólo voy a utilizar la fecha, abrir y cerrar los valores por lo que he eliminado el alto, bajo, volumen y Adj. Cerca. También clasifiqué los datos de modo que la fecha más vieja fuera primero y la fecha más última estaba en la parte inferior. Utilice las opciones de menú Data - gt Sort para hacer esto. Estrategia En lugar de probar una estrategia por sí mismo voy a tratar de encontrar el día de la semana que proporcionó el mejor retorno si siguió una compra de la estrategia de abrir y vender el cierre. Recuerde que este artículo está aquí para presentarle cómo usar Excel para volver a probar estrategias. Podemos construir sobre esto adelante. Aquí está el archivo ibm. zip que contiene la hoja de cálculo con los datos y las fórmulas para esta prueba. Mis datos ahora residen en las columnas A a C (Fecha, Abrir, Cerrar). En las columnas D a H, he lugar fórmulas para determinar el rendimiento de un día en particular. Introducción de las fórmulas La parte difícil (a menos que sea un experto de Excel) está elaborando las fórmulas a utilizar. Esto es sólo una cuestión de práctica y cuanto más practiques las fórmulas más descubrirás y más flexibilidad tendrás con tus pruebas. Si ha descargado la hoja de cálculo, eche un vistazo a la fórmula en la celda D2. Parece esto: Esta fórmula se copia a todas las demás celdas en las columnas D a H (excepto la primera fila) y no necesita ser ajustada una vez que se ha copiado. Voy a explicar brevemente la fórmula. La fórmula FI tiene una condición, parte verdadera y falsa. La condición es: Si el día de la semana (convertido a un número del 1 al 5 que coincide con el lunes al viernes) es el mismo que el día de la semana en la primera fila de esta columna (D1). La parte verdadera de la declaración (C2-B2) nos da simplemente el valor del cierre-abierto. Esto indica que compramos el Open y vendimos el Close y esta es nuestra ganancia / pérdida. La parte falsa de la declaración es un par de comillas dobles () que no pone nada en la celda si el día de la semana no coincide. Los signos a la izquierda del número de columna o número de fila bloquean la columna o la fila de modo que cuando se copia esa parte de la referencia de celda no cambia. Así que aquí en nuestro ejemplo, cuando se copia la fórmula, la referencia a la celda de fecha A2 cambiará el número de fila si se copia en una nueva fila, pero la columna permanecerá en la columna A. Puede anidar las fórmulas y hacer reglas excepcionalmente poderosas Y expresiones. Los resultados En la parte inferior de las columnas del día de la semana he colocado algunas funciones de resumen. Cabe destacar las funciones promedio y suma. Estos nos muestran que durante 2004 el día más rentable para implementar esta estrategia fue un martes y esto fue seguido de cerca por un miércoles. Cuando probé los viernes de expiración - Bullish o la estrategia bajista y escribí ese artículo utilicé un acercamiento muy similar con una hoja de balance y fórmulas como esto. El objetivo de esa prueba era ver si los viernes de expiración eran generalmente alcistas o bajistas. Lo que ahora probarlo. Descargue algunos datos de Yahoo Finance. Cargarlo en Excel y probar las fórmulas y ver lo que puede llegar a. Publica tus preguntas en el foro. Buena suerte y estrategia rentable huntingHow a backtest sistemas de comercio y evitar la curva de ajuste Para juzgar cómo bien un determinado sistema de comercio debería trabajar en el futuro, backtest en los datos del mercado pasado. Backtesting aplica un conjunto de reglas comerciales a los datos históricos para estimar cómo esas reglas se habrían realizado si realmente las hubiéramos intercambiado. Los buenos resultados históricos hipotéticos no garantizan que un conjunto de reglas funcionará bien en el futuro. Sin embargo, los pobres resultados históricos hipotéticos casi con certeza significan que un sistema no debe ser negociado en tiempo real. El valor percibido del backtesting está enraizado en la creencia de que las tendencias históricas se repiten. Los comerciantes han estado probando estrategias sobre datos históricos por generaciones. Sin embargo, la práctica se popularizó con el advenimiento de las computadoras personales y software de prueba del sistema construido específicamente. Como System Writer, que evolucionó a TradeStation. Este software y una base de datos histórica permitió a aquellos que no tenían un fondo de escritura de código probar ideas de sistemas comerciales. El amplio entendimiento y aceptación de los sistemas de comercio, así como la frustración que muchos encontraron al tratar de construir sistemas de comercio por sí solos, ayudaron al mercado de sistemas de terceros a prosperar a lo largo de los años noventa. Futures Truth es una empresa independiente que ha rastreado los sistemas de comercio disponibles comercialmente desde la década de 1980. Actualmente, sigue más de 500 sistemas. Futures Truth comprueba los sistemas de negociación en tiempo real, no sobre datos históricos. Esto evita la modificación de reglas a lo largo del tiempo y simula mejor la ejecución de reglas en condiciones reales de mercado, como períodos de alta volatilidad. Según Futures Truth, sólo unos 45 de los sistemas de seguimiento son rentables a largo plazo, mientras que sólo 20 han mostrado una buena relación riesgo / beneficio. Sin embargo, estos números probablemente son mejores que los de la población más amplia, porque sólo aquellos vendedores verdaderamente confiados en su lógica se entregan a Futures Truth para análisis en tiempo real y crítica pública. Muchos sistemas fallan porque carecen de una premisa válida. En su lugar, los parámetros de entrada y salida se derivan de la minería de datos. La minería de datos simplemente escanea datos históricos para reglas que hubieran funcionado en el pasado. A menudo, tales reglas se ajustan precisamente al pasado y no tienen ninguna esperanza de trabajar mejor que al azar en datos ocultos. En su lugar, el desarrollo del sistema debe comenzar con una teoría que puede ser probada, analizada y ajustada para su aplicación. Este concepto también implica una perspectiva diferente en las pruebas del sistema en sí: El objetivo del backtesting no es producir una colección de estadísticas de pérdidas y ganancias hipotéticas. Es probar la validez de la teoría y la exactitud de las reglas al captar la premisa. La prueba del sistema es un proceso multifacético de los datos, a la escala de tiempo, a las suposiciones de la entrada del orden, a los detalles del contrato y al control de riesgo. A falta de cualquiera de estos puede arruinar un mdash de prueba válido de otra manera, o manipularlos puede generar resultados que son muy superiores a lo que lograríamos en tiempo real. Necesitas hacerlo bien si esperas validar mdash o cuando sea apropiado, invalidate mdash tu sistema. Herramientas del comercio Hay dos elementos para backtesting: Las herramientas adecuadas mdash software y datos mdash y un método científico para desarrollar sistemas utilizando esas herramientas. Letrsquos empezar por ver las herramientas del comercio. Hay muchas opciones disponibles para probar sus ideas. Difieren en la facilidad de convertir ideas en código y en cómo manejan los detalles, que pueden tener un impacto importante en los resultados. Por ejemplo, si un sistema entra en una orden de límite, algún software registra un relleno si se toca ese precio. Sin embargo, apenas hay garantía de que una orden de este tipo se hubiera llenado en el comercio real, ni hay garantía de que no sea. Entrar en paradas garantiza una entrada, pero no un precio. Otra cuestión es registrar los precios reales. Si bien la mayoría de los programas desarrollados profesionalmente ya no tienen este problema, sigue siendo una preocupación para aquellos que prueban manualmente los sistemas en hojas de cálculo, como Microsoft Excel. Por ejemplo, si un sistema compra en una parada igual al cierre más un tercio del rango promedio en los últimos tres períodos, y si el rango promedio es 10, entonces estamos comprando al cierre más 3.333. Si estamos negociando el E-mini SampP 500, se negocia en 0,25 tallas. Esto significa que el diferencial de entrada debe redondearse a 3.50. Un comerciante principiante no puede darse cuenta de esto si manualmente crujir números, y no era demasiado hace mucho tiempo que muchos programas profesionales cometieron el mismo error. Con el tiempo, tal error podría sumar una discrepancia considerable. En general, sin embargo, tales detalles procedimentales son menores. El gran problema son los datos. Artículos relacionadosPuede preguntar cómo crear un sistema comercial en NinjaTrader (NT) y volver a probarlo. Se puede hacer, pero no es fácil. Sin entrar en la codificación y la arquitectura de software / diseño, sólo puedo darle una idea general de cómo uno podría ir sobre él. El primer paso es escribir un sistema comercial. De forma simplista, esto consta de varias partes: (i) escribir un módulo que contendrá todos los ajustes para los oficios que desea ejecutar (Identifique las condiciones que constituyen la oportunidad óptima para entrar en un comercio. (Ii) escribir un módulo que busque esos conjuntos en sus datos en tiempo real, (iii) escribir un módulo que catalogue y guarde los ajustes encontrados en Los datos en tiempo real, y (iv) escribir un módulo que ejecutará un comercio basado en cualquiera de esos conjuntos. Esto en sí mismo es un reto, ya que esto debe hacerse en tiempo real. Además, debe manejar los casos en los que encuentre varias configuraciones que pueden estar indicando operaciones en las mismas direcciones u opuestas (es decir, largas y cortas). También es necesario considerar los objetivos, los criterios de rentabilidad para sus ajustes, stop loss y los criterios finales. Por último, pero no menos importante, es necesario pensar en la escala de entrada y salida de las estrategias con su comercio configurar los criterios. Como aparte, ni siquiera he mencionado la verificación y el manejo de errores componentes del código, que tendrá que abordar también. Para hacer esto eficientemente, necesitará roscar este código. El problema con escribir esto en NT es que NT sólo soporta un subconjunto del lenguaje C y actualmente sólo proporciona soporte para el marco. Net 3.5. Esto significa que necesitará escribirlo en C como un dll y referenciarlo en su código NT. Ahora que ha escrito su DLL para identificar un comercio, tendrá que escribir código para ejecutar el comercio. NT ofrece un Managed y un enfoque no gestionado para hacer esto. Actualmente utilizo y codifico NT, y diré que esta parte de NT no está bien documentada, al menos no lo he encontrado, pero con toda justicia, puedes obtener alguna ayuda del personal de NT en su foro de soporte. Usted querrá utilizar el enfoque no administrado para obtener la mayor flexibilidad. Por supuesto, querrá implementar alguna estructura de base de datos en su código para registrar sus operaciones. Esta parte del programa será un desafío también, porque hay algunos problemas que se encontrará aquí. Cada operación tendrá que ser verificada, las órdenes tendrán que ser secuenciadas y monitoreadas extremadamente bien, y su posición tendrá que ser observado cuidadosamente, especialmente si también planea entrar en operaciones cambiando posiciones. Ahora que ha llegado tan lejos, puede escribir una estrategia de NT para volver a probar su sistema. Una vez más, el enfoque no gestionado será de mayor valor aquí, ya que ofrece la mayor flexibilidad para usted. Una vez más, este código es difícil y no documentado particularmente bien. Sin embargo, se puede hacer. Enhorabuena, ahora ha terminado de codificar y puede comenzar a probar su código en vivo. Tal vez necesite modificar su código para tratar las condiciones en tiempo real en los datos en vivo. Dependiendo de los mercados que usted planea operar, tendrá que pensar cómo manejará el comercio durante los informes, la celebración de posiciones durante la noche, límites de negociación, así como cuando el comercio es suspendido por el intercambio. Asumiendo que usted ha hecho todo esto, ahora tiene un sistema de comercio probado de nuevo en NT. Como he dicho, no es fácil, pero es ciertamente factible. Una vez hecho esto, esté preparado para horas y horas (y horas) de trabajo y pruebas. Cuando comencé, subestimé groseramente el esfuerzo requerido. 1.3k Vistas middot Ver Upvotes middot No es para Reproducción


No comments:

Post a Comment