Backtesting/Optimización - página 7

 
lomme:
Así es.

Pero para el backtesting la granularidad más fina es 1min también.

Puedo imaginar, que los datos de ticks no cambiarían los resultados para el backtesting de 1min.

¿Alguien ha hecho backtest con estos datos? También estoy de acuerdo en que los datos de 1M no harán una diferencia significativa a menos que el asesor experto utilice un scalping excesivo, entonces incluso los segundos pueden contar.

 

Pruebas retrospectivas y optimización

El primer punto a tener en cuenta es que la optimización sólo debe utilizarse para verificar una idea existente basada en un comportamiento o hecho del mercado, no para descubrir una gran idea de trading. La idea de trading debe ser lo primero. El peligro en la optimización de un mercado es el sobreajuste de la curva, lo que funcionó en los datos históricos puede no funcionar en el futuro, pero usted encontró una gran combaniación para los datos pasados. Sin embargo, se puede utilizar a través de varios mercados para encontrar un conjunto de parámetros que no deben ser utilizados, en lugar de la sensibilidad del sistema de comercio. Otro uso de la simulación/backtesting es entender las debilidades y fortalezas de su sistema. Cuándo funciona bien, cuándo se queda atrás y cuándo simplemente falla, de modo que pueda desarrollar nuevas ideas para resolver esos problemas.

En este punto es importante entender que los datos son el aspecto más importante del backtesting. Ya que el backtesting es realmente una simulación sobre datos históricos en lugar de una distribución matemática, por lo que se necesitan datos de buena calidad sobre varios pares que representen un número variado de condiciones de mercado. Alcista, bajista y lateral con volatilidad variable. Si el sistema puede soportar varias condiciones de mercado, incluyendo los choques, entonces es suficiente para el comercio. Sin datos representativos, la utilidad de sus resultados no tendrá ninguna relación con el mercado real.

A continuación, hay que decidir cuántas pruebas hay que realizar para alcanzar un nivel de confianza en los resultados. Esto significa realizar la prueba retrospectiva sobre 15-30 conjuntos de datos que sean suficientemente representativos y desarrollar un intervalo de confianza. Esto supondría que los datos se distribuyen normalmente, lo que no es el caso de los datos financieros, que están sesgados hacia la izquierda con una cola gruesa en el lado derecho. Por lo tanto, una opción es utilizar el límite central para mejorar su experimento y hacerlo más fiable.

El backtester de Tradestation es probablemente más fiable que el de metatrader porque puede hacer operaciones por ticks en lugar de esperar al precio de cierre pero eso va igual para los EA's en metatrader. No creo que el backtester de metatrader sea terrible aunque simplemente tiene que ser usado correctamente, y usarlo sin una comprensión del proceso de simulación siempre llevará a resultados sobreajustados y expectativas irreales. Esto resultará en una pérdida de capital. Realmente el punto de todo esto, esperando dar algunos consejos, es entender que el backtesting, la optimización y la simulación son herramientas utilizadas para mejorar un sistema y comparar mejoras entre sistemas, no para reemplazar al analista que diseña el sistema. Mi sugerencia para la mayoría si su uso de backtesting entender la simulación methedology para ahorrarse un montón de dolor de cabeza y la pérdida de capital.

Si realmente fuera a realizar backtesting lo haría, y estoy tratando de programar un sistema de backtesting en un software de simulación como Arena o Witness, pero estoy interesado en las capacidades de las estaciones de comercio.

 

Tutorial de back testing y consejos

He visto que se habla mucho sobre el backtesting, y parece que hay mucha confusión, así que en lugar de publicar en cada hilo relacionado con él, he decidido publicar aquí información que puede ser larga, pero espero que aclare lo que es el backtesting y cómo usarlo CORRECTAMENTE.

El backtesting es una forma de simulación que utiliza datos históricos para evaluar las mejoras de un sistema de trading.

Lo primero que hay que entender es que la simulación es una herramienta al igual que el software de gráficos es una herramienta. No descubre por sí misma una idea o incluso la mejora, el analista debe hacerlo basándose en la observación de las características fundamentales del mercado. Normalmente, la simulación intenta tomar datos históricos para mejorar un sistema y reducir la varianza en la salida del sistema, pero la simulación financiera es una raza especial. En lugar de ello, tratamos de modificar el sistema para que funcione mejor frente a la varianza de los datos, sobre la que no tenemos ningún control. Por lo tanto, queremos un sistema robusto cuyo rendimiento no sea muy sensible a los cambios en los mercados.

Una simulación consta de varias partes. Está la metodología, el sistema y los datos. A continuación hablaré de cada una de ellas en detalle. Espero que esta información le resulte útil.

 

Metodología de simulación

Cuando se decide mejorar un sistema de negociación, es importante ser sistemático para obtener un resultado exitoso. Afortunadamente, se ha desarrollado un método de simulación probado. Los primeros 6 pasos deben tomar alrededor del 40% de su tiempo al igual que los últimos 5 pasos. El paso de la experimentación sólo debería llevarle el 20% de su tiempo. Los pasos son los siguientes

1. Este es el paso más importante del proceso de simulación. Debe establecer claramente qué es lo que pretende conseguir con la simulación (backtest). Mejor dicho, ¿dónde está el mal rendimiento de su sistema ahora? ¿No está entrando lo suficientemente rápido, saliendo lo suficientemente rápido, está operando demasiado a menudo, no lo suficientemente a menudo? ¿Desea comparar dos sistemas y decidir cuál es más valioso y fiable? Estos son problemas válidos.

2. Planificar el proyecto - Este paso tiene por objeto ayudarle a asegurarse de que dispone de las herramientas y de una hoja de ruta para llevar a cabo el experimento con éxito. La mayoría de nosotros tenemos lo que necesitamos en Metatrader u otro software, incluyendo Excel, pero tal vez usted no sabe suficiente programación para hacerlo usted mismo, por lo que puede necesitar ayuda. Una línea de tiempo es útil para determinar si se está haciendo lo suficientemente rápido.

3. 3. Definir el sistema - En una simulación financiera este paso implicaría decidir qué mercados pretende negociar, y qué herramientas utiliza su sistema para hacerlo. A diferencia de la simulación tradicional, usted quiere incluir tantos detalles como sea posible.

4. Conceptualizar el modelo - Durante este paso se esbozará cómo funciona el sistema y se desarrollará una base de reglas que se programará en el sistema de negociación. Puede considerar el volumen, la amplitud, el impulso, los osciladores, los ciclos, las estaciones, las técnicas de comportamiento, las técnicas de adaptación, el control del riesgo, la gestión del dinero, los sistemas de distribución o cualquier aspecto que desee cubrir.

5. 5. Diseño experimental preliminar - Hasta este paso espero que todos ustedes puedan trabajar estas ideas en su cabeza preety rápidamente, pero sigue siendo importante para escribirlos para que pueda revisar y comparar sus resultados cuando se hace. Este paso consiste en decidir cómo se va a realizar el experimento. Haré un post separado detallando el diseño experimental.

6. Preparación de los datos de entrada - Unos buenos datos son vitales para cualquier simulación, especialmente para la simulación financiera. Unos datos deficientes pueden inflar o desinflar tus resultados. Los datos insuficientes no son representativos del mercado. Haré un post separado detallando los datos del mercado. Durante este paso usted reunirá y organizará sus datos en un formato utilizable por el software. Creo que Metatrader prefiere la fecha, hora, apertura, alta, baja, cierre y volumen. A continuación, se dividirá en varios conjuntos de datos utilizados en el experimento.

7. Traducción del modelo - Este paso es donde usted realmente programa en su sistema, en este punto usted debe haber tenido una buena idea de cómo se organizó y se dividió en varias funciones para que sea un proceso suave. Normalmente hay dos tipos de sistemas: integrados y verticales. Un sistema integrado funciona de una manera específica mientras que un sistema vertical puede tener partes añadidas y eliminadas.

8. Verificación y Validación - Este es un paso muy importante en el que se verifica que el modelo representa su sistema de trading y que los datos son representativos y precisos para varias condiciones de mercado. En el probador de estrategias, abrir el gráfico después de ejecutar una muestra es una buena manera de inspeccionar visualmente que el sistema funciona como usted había previsto.

9. Diseño Experimental Final - Después de validar la idea haga cualquier cambio en el sistema que se haya dado cuenta que es necesario en el proceso de pasar por la metodología. Esto puede significar que te has dado cuenta de una nueva idea mientras estudiabas los datos, o que era necesaria alguna nueva medida de información para satisfacer tus resultados.

10. Experimentación - En este paso simplemente se ejecutan las iteraciones del experimento y se recogen los datos de salida para su análisis. Esto probablemente también incluirá el registro de los datos.

11. Análisis e Interpretación - Después de que el experimento se ha ejecutado y los datos de salida se han recogido, debe analizar los datos e interpretarlos. Aquí es donde decidirá si las mejoras del sistema proporcionan una contribución válida o si no.

12. Implementación y documentación - Implementa finamente las mejoras y documenta tus resultados para poder consultarlos y mejorar la vida de la simulación.

 

Diseño experimental ampliado

Tenga en cuenta que muchos de los pasos de la metodología pueden tener que repetirse varias veces si se olvida de algo en el proceso de realización de la simulación. Pero un aspecto muy importante es el diseño experimental.

Hay dos tipos de sistemas Los estocásticos (resultados variables) y los deterministas (resultado único). Los mercados financieros son el sistema estocástico por excelencia, junto con el clima. Está lleno de varianza y los resultados pueden variar mucho de un día a otro y de un mercado a otro. Pero lo que queremos es un sistema que reaccione a estos datos tan variables de forma poco variable, aumentando así nuestro rendimiento y disminuyendo nuestro riesgo. La varianza es la regla en la naturaleza y hay dos tipos. La varianza aleatoria y la varianza no aleatoria. La varianza aleatoria es inherente al sistema y no puede eliminarse totalmente, lo que significa que nuestro sistema siempre funcionará de forma diferente de un mes a otro. La desviación no aleatoria debe ser controlada. Esto incluye el rendimiento fuera del rango de aceptabilidad, o la reacción de los sistemas a grandes picos o agujeros en los datos, cortes de energía, pérdida de conexión, mala programación. Un sistema estable es aquel que ha gestionado todo esto mediante alguna medida.

El objetivo de nuestro experimento es determinar en qué punto nuestro sistema está funcionando fuera de los requisitos establecidos (variación inaceptable) e intentar mejorarlo. Así que el primer paso es definir nuestras métricas (valores medidos). Meta trader hace muchos de los importantes para nosotros, drawdown, factor de beneficio, porcentaje de buenas operaciones. Podemos estar preocupados por otras funciones del sistema además de estas, como la diferencia entre las señales de entrada y donde debería haber entrado. Estas métricas más complejas pueden tener que ser programadas manualmente.

Después de definir las métricas que son importantes para recoger de su simulación / backtest que necesita para decidir cómo va a llevar a cabo el experimento. Dado que los datos del mercado son estocásticos, una sola ejecución (una sola prueba del sistema con un único conjunto de datos del mercado) no es suficiente para darnos confianza en el rendimiento del sistema. Las estadísticas nos animarían a realizar varios miles de ejecuciones, pero desgraciadamente no disponemos de tantos datos ni de tanto tiempo. El número de ejecuciones depende de la varianza encontrada en los datos. No se trata de la varianza en los datos del mercado, sino de la varianza en el rendimiento de su sistema de trading. Todo lo relacionado con el trading es entender la varianza y controlarla. En este caso, lo mejor es realizar ejecuciones independientes (diferentes conjuntos de datos/mercados), probablemente de 15 a 30 ejecuciones, durante períodos de tiempo lo suficientemente largos como para representar todos los tipos de mercados, a saber, alcista, bajista y sin tendencia. La no tendencia puede ser la más importante para representar en Forex para ver cómo un sistema de comercio de tendencia se ocupará del mercado de comercio de rango, pero depende de su sistema.

A partir de esta información puede desarrollar un intervalo de confianza en torno a sus resultados. Un intervalo de confianza es un rango de rendimiento que tiene un nivel de confianza para que su métrica caiga dentro. Así, basándose en sus pruebas de 30 conjuntos de datos, podría decir que tiene un 90% de confianza en que ganará entre 100.000 y 200.000 dólares. Esto depende de la representatividad de los datos de mercado que utilizó en la simulación de las diferentes condiciones del mercado, preferiblemente que las vea representadas tantas veces como sea posible. Si nunca se ve una nueva no hay razón para que sus resultados sean similares a su intervalo de confianza. El cálculo de un intervalo de confianza es sencillo, utilice x(media)+-(valor t de student para alpha/2)*(s/sqrt(n)). Donde el valor de la t de student se puede encontrar en una tabla y n es el tamaño de la muestra. s es la desviación estándar y alfa es su nivel de confianza - probablemente .9 para el 90%. La media es la media de sus resultados para la métrica en cuestión, probablemente el beneficio.

Si está comparando dos sistemas diferentes, lea sobre las pruebas de hipótesis, probablemente utilizando una prueba ANOVA.

Así que lo que hemos aprendido es cuántas ejecuciones hay que hacer, cuánto tiempo tienen que ser, lo que deben representar, y cómo evaluarlo para determinar su significado. Esta puede ser una sección confusa para muchos, siéntase libre de hacer preguntas.

 

Ampliación de los datosdel backtesting

He hablado de la metodología y el diseño experimental, así como del propósito del backtesting. Ahora quiero hablar de los datos que se utilizan.

Me estoy cansando así que si algo no tiene sentido lo siento HA.

Los datos son muy importantes y deben tener varias características para ser evaluados adecuadamente. Los datos deben ser suficientemente largos, representar las condiciones en las que vas a actuar, ser precisos y válidos.

Ampliado esto significa que los datos deben representar varias condiciones de mercado si es posible. Toros, osos, alta volatilidad, baja volatilidad, varios choques de precios, mercados de rango, mercados sin tendencia, cualquier otra cosa que usted pueda pensar porque lo más probable es que se encuentre con estos en algún momento y usted quiere que su sistema sea capaz de manejarlos. Un error que mucha gente comete al hacer el backtesting es que hacen una sola ejecución, ejecutan el optimizador y piensan que han encontrado el santo grial de los sistemas de trading. RECUERDE SIEMPRE que si sus resultados son realmente buenos o realmente malos como preguntas, algo está probablemente mal con sus datos, programación, o su sobreajuste a la curva. El sobreajuste es el proceso de optimizar su sistema para que funcione con datos anteriores realmente bien. Desgraciadamente, es posible que no vuelva a ver condiciones de mercado como esas y su sistema está tan optimizado que es muy sensible a las nuevas condiciones del mercado y se estrellará rápidamente. Para que sea representativo debería durar varios años, si está disponible varias décadas, y no debería incluirse si se ha producido un cambio importante en el mercado, como la combinación de mercados. No estoy de acuerdo con algunos y creo que los datos de mercado son datos de mercado si son buenos datos para las pruebas retrospectivas, siempre y cuando representen alguna condición, así que use su propio juicio.

La recopilación de datos de mercado para las pruebas puede ser una larga prueba, porque nunca está en el formato que se desea y siempre tarda tres veces más en conseguirse de lo que se espera.

Por último, los datos deben ser independientes, lo que puede ser un problema en los mercados de divisas, donde todos los pares de dólares están muy correlacionados, lo que significa que se mueven de forma similar. Esto se rompe a menudo incluso dentro de un mercado con la autocorrelación, lo que significa que la siguiente pieza de datos está correlacionada o depende de la última. Las segundas observaciones deberían tener una distribución idéntica a lo largo del proceso. Una vez más, las distribuciones de los mercados financieros cambian todo el tiempo, pero la forma básica es probablemente lo suficientemente cercana como para funcionar. Por último, deberían tener una distribución normal. Esto se rompe SIEMPRE, ya que los precios tienden a permanecer en los niveles más bajos, más bien las distribuciones de los precios y las distribuciones de los movimientos de los precios están sesgadas a la izquierda y tienen una cola más gruesa a la derecha de lo esperado. Aunque esto es lo que nos permite ganar dinero, viola un supuesto básico de la simulación. Hay métodos para corregir esto en el análisis, como las transformaciones logarítmicas, pero el teorema del límite central suele ser más fácil de experimentar. Esto significa que si se realizan 15 ejecuciones en las que cada valor de ejecución es la media de otras 15 ejecuciones, esto tenderá a tener una distribución más normal y será un intervalo de confianza más realista. Si esto no tiene sentido, simplemente ignóralo, pero recuerda que NO hay correlación entre los resultados del backtesting y el sistema físico con el que operas, es sólo una herramienta y una buena, pero tiene que ser entendida y utilizada correctamente.

Muchos otros temas deben ser considerados y pueden ser más tarde como,

procedimiento de backtesting

optimización de

estadísticas

probabilidad

transformación

consideraciones prácticas

distribuciones y su comprensión

flujos aleatorios y datos sintéticos

pruebas de hipótesis

optimización monte carlo/más rápido que los metatraders

pero hasta entonces espero que esto haya sido algo útil y puedas realizar un mejor backtesting y lograr mejores resultados cuando implementes tu sistema de trading. Siéntase libre de hacer preguntas que sé que era mucho.

 

Gran explicación.

Gracias Cro2314

 

Una pequeña pregunta sobre diferentes sistemas de backstest...

¿Es mejor el software de Tradestations para hacer backtesting que el de Metatrader?

¿Alguien tiene experiencia con ambos?

Mi conclusión hasta ahora es que Tradestations backtest parece más avanzado que Metatrader, pero por otro lado Metatrader es gratis y Tradestation cuesta $$$...

Cualquier comentario sobre las diferencias entre ellos sería bueno.

 

Sólo conozco a unos pocos

editar***27 de mayo. Es importante tener en cuenta que el backtesting es una práctica de simulación y no un simulador. Un simulador que parece funcionar bien está listado en este sitio como Forex tester. Puede ser utilizado como un backtester pero no con EA's todavía. Simulaciones / backtesting es en realidad la intención de proporcionar estadísticas sobre el rendimiento de su sistema de comercio para que pueda analizar los puntos débiles. En última instancia, se trata de reducir la varianza en la pendiente de la curva de su equidad en el tiempo. Me pregunto si es por eso que la gente no le gusta metatraders backtester. Tal vez no están buscando un simulador. Pero si es un rendimiento visual que usted está buscando simplemente abrir el gráfico después de haber ejecutado el probador de la estrategia y se puede ver exactamente cómo el EA es el comercio. Muy útil para la validación del sistema.***

La verdad es que tengo poca experiencia con el backtester de tradestations. Sin embargo, reconozco un par de ventajas. Tradestation puede hacer compras intradía (tick) en lugar de utilizar el precio de cierre en el probador de la estrategia, (acaba de suceder en la versión más reciente), mientras que metatrader utiliza el precio de cierre. Dependiendo de su estrategia esto puede tener consecuencias significativas en su sistema si usted opera muy rápidamente y trata de atrapar los movimientos de dos o tres barras que aparecen de vez en cuando. Pero va en contra de muchas estrategias fundamentales también de esperar el precio de cierre. La otra diferencia es, por supuesto, el lenguaje que se puede utilizar para programar varía entre ellos, y algunas tareas comunes como la suma de variables parece ser más fácil en tradestation. Finnalmente he escuchado que hay algunas limitaciones de memoria dentro de metatrader que no están limitadas en tradestation, pero no me he encontrado con esto. No sé qué límites tiene en las variables del sistema como las que impiden que un EA cargue sus indicadores en la pantalla por ti como en metatrader. También parece que las estadísticas preescritas que te da tradestation son más robustas en los resultados del backtest. TradeStation def. tiene algunas ventajas, pero recuerde que el back tester debe reaccionar igual que el software lo hará si usted simplemente ejecuta un sistema totalmente automatizado. Si ese es el caso, sugiero hacer el backtesting en el mismo software que usas para operar automáticamente o de lo contrario puedes llevarte una sorpresa.

Sobre todo me imagino que está programado mejor, pero a diferencia de mucha gente yo creo que el backtester de metatraders funciona precisamente como se supone que debe hacerlo si se usa correctamente y se tiene una comprensión de cómo ejecuta su código. Eso es siempre el caso con el software de simulación sin embargo, así que no lo veo como un inconveniente. El software que utilices no suele ser tan importante como la forma de interpretar los datos que te proporciona. Ahora estoy despotricando, así que voy a parar aquí.

Por cierto, gracias Félix por tu cumplido, lo aprecio mucho.

 

Mi backtester va muy lento ... ayuda

A veces va rápido y a veces va muy lento. No sé por qué. Encontré un archivo de 1,5 GB en los registros y lo borré pero sigue siendo lento. ¿Hay alguna forma mejor de hacer backtest de los programas? Estoy usando Metatrader y a menudo sólo tengo un 20% de calidad de modelado.