Thursday 26 October 2017

Optimización Del Sistema De Trading


Cómo optimizar el sistema de comercio NOTA: Este es un tema bastante avanzado. Por favor lea primero los tutoriales anteriores de AFL. La idea detrás de una optimización es simple. Primero usted tiene que tener un sistema que negocia, éste puede ser un crossover simple de la media móvil por ejemplo. En casi todos los sistemas existen algunos parámetros (como período de promedio) que deciden cómo se comporta el sistema dado (es decir, es adecuado para largo o corto plazo, cómo reacciona en las poblaciones altamente volátiles, etc.). La optimización es el proceso de encontrar valores óptimos de esos parámetros (dando el mayor beneficio del sistema) para un símbolo dado (o una cartera de símbolos). AmiBroker es uno de los pocos programas que le permiten optimizar su sistema en varios símbolos a la vez. Para optimizar su sistema tiene que definir de uno a diez parámetros para ser optimizado. Usted decide cuál es el valor mínimo y máximo permitido del parámetro y en qué incrementos se debe actualizar este valor. AmiBroker realiza varias pruebas de nuevo el sistema utilizando TODAS las combinaciones posibles de valores de parámetros. Cuando este proceso está terminado, AmiBroker muestra la lista de resultados clasificados por beneficio neto. Puede ver los valores de los parámetros de optimización que proporcionan el mejor resultado. Escribir fórmula AFL La optimización en el tester posterior es soportada a través de una nueva función llamada optimizar. La sintaxis de esta función es la siguiente: variable optimize (quot Descripción quot, default. Min. Máximo paso) variable - es la variable AFL normal que obtiene asignado el valor devuelto por la función optimize. Con los modos de backtesting, exploración, exploración y comentar normales, la función de optimización devuelve el valor por defecto, por lo que la llamada de función anterior es equivalente a: variable default En el modo de optimización, la función de optimización devuelve valores sucesivos de min a max (inclusive) Quot Descriptionquot es una cadena que se utiliza para identificar la variable de optimización y se muestra como un nombre de columna en la lista de resultados de optimización. Default es un valor por defecto que optimiza la función devuelve en exploración, indicador, comentario, escaneo y modos normales de retroceso min es un valor mínimo de la variable que se está optimizando max es un valor máximo de la variable que se está optimizando paso es un intervalo usado para incrementar la Valor de min a max AmiBroker soporta hasta 64 llamadas para optimizar la función (por lo tanto hasta 64 variables de optimización), tenga en cuenta que si está utilizando una optimización exhaustiva, entonces es muy buena idea limitar el número de variables de optimización a sólo unos pocos. Cada llamada para optimizar la generación de bucles de optimización (máximo - minuto) / paso y múltiples llamadas para optimizar multiplican el número de ejecuciones necesarias. Por ejemplo, optimizar dos parámetros usando 10 pasos requerirá 1010 100 bucles de optimización. Función de optimización de llamada ONCE por variable al principio de la fórmula ya que cada llamada genera una nueva optimización de bucles La optimización de símbolos múltiples es totalmente compatible con AmiBroker El espacio de búsqueda máximo es 2 64 (10 19 10,000,000,000,000,000,000) combinaciones 1. Optimización de variable única: sigavg Optimizar (Promedio de la señal: 9. 2. 20. 1) Comprar Cross (MACD (12. 26), Signal (12. 26. sigavg)) Sell Cross (Signal (12. 26. sigavg), MACD 2. Optimización de dos variables (adecuada para gráficos en 3D) por Optimizar (por 2. 5. 50. 1) Nivel Optimizar (nivel 2. 2. 150. 4) Comprar Cross (CCI (per), nivel) 3. Optimización de la variable múltiple (3) Optimización de la variable (mfast) Optimizar (MACD lento) 12. Optimización (MACD lento) Velocidad de venta (Señal (mfast, mslow, sigavg), MACD (mfast, mslow)) Después de entrar La fórmula simplemente haga clic en el botón Optimizar en la ventana quotAutomatic Analysisquot. AmiBroker comenzará a probar todas las combinaciones posibles de variables de optimización e informará los resultados en la lista. Después de la optimización se hace la lista de resultados se presenta ordenada por el beneficio neto. Como puede ordenar los resultados por cualquier columna de la lista de resultados, es fácil obtener los valores óptimos de los parámetros para la reducción más baja, el menor número de operaciones, el mayor factor de beneficio, la menor exposición al mercado y el retorno anual ajustado al riesgo más alto. Las últimas columnas de la lista de resultados presentan los valores de las variables de optimización para la prueba dada. Cuando usted decide qué combinación de parámetros se adapte a sus necesidades, lo mejor de todo lo que necesita hacer es reemplazar los valores predeterminados en optimizar llamadas de función con los valores óptimos. En la etapa actual es necesario escribirlos manualmente en la ventana de edición de la fórmula (el segundo parámetro de optimizar la llamada de función). Visualización de gráficos de optimización 3D animados Para mostrar el gráfico de optimización 3D, primero debe ejecutar la optimización de dos variables. Dos optimización variable necesita una fórmula que tiene 2 llamadas de función Optimize (). Un ejemplo de fórmula de optimización de dos variables se ve así: por Optimizar (por 2. 5. 50. 1) Nivel Optimizar (nivel 2. 2. 150. 4) Comprar Cross (CCI (per), nivel) Sell Cross (Level, CCI (per)) Después de ingresar la fórmula, debe hacer clic en el botón quotOptimizequot. Una vez completada la optimización, debe hacer clic en la flecha desplegable del botón Optimizar y seleccionar Ver gráfico de optimización 3D. En unos segundos aparecerá un colorido diagrama tridimensional de superficie en una ventana del visor de gráficos en 3D. A continuación se muestra un gráfico 3D de ejemplo generado utilizando la fórmula anterior. De forma predeterminada, los gráficos 3D muestran los valores del beneficio neto con respecto a las variables de optimización. Sin embargo, puede trazar un gráfico de superficie 3D para cualquier columna de la tabla de resultados de optimización. Simplemente haga clic en el encabezado de la columna para ordenarla (aparecerá una flecha azul que indica que los resultados de optimización están ordenados por columna seleccionada) y, a continuación, seleccione Ver gráfico de optimización 3D nuevamente. Mediante la visualización de cómo sus parámetros de los sistemas afectan el rendimiento comercial, puede decidir con más facilidad qué valores de parámetros producen una calidad exagerada y que producen un rendimiento del sistema similar. Configuraciones robustas son regiones en el gráfico 3D que muestran cambios graduales en lugar de cambios abruptos en el gráfico de superficie. Gráficos de optimización 3D son una gran herramienta para evitar la curva de ajuste. La curvatura (o sobre-optimización) ocurre cuando el sistema es más complejo de lo que debe ser, y toda esa complejidad se enfocó en las condiciones del mercado que podrían nunca volver a ocurrir. Los cambios radicales (o picos) en los gráficos de optimización 3D muestran claramente áreas de sobre-optimización. Usted debe elegir la región del parámetro que produce una meseta ancha y ancha en la carta 3D para su comercio de la vida real. Los conjuntos de parámetros que generan picos de ganancia no funcionarán confiablemente en el comercio real. Controles del visor de gráficos 3D El visor de gráficos 3D de AmiBrokers ofrece capacidades de visualización total con una rotación completa de gráficos y animación. Ahora puede ver los resultados de su sistema desde todas las perspectivas imaginables. Puede controlar la posición y otros parámetros del gráfico mediante el ratón, la barra de herramientas y los métodos abreviados de teclado, lo que encuentre más fácil para usted. A continuación encontrará la lista. - para girar - mantenga presionado el botón del ratón IZQUIERDO y mueva en las direcciones X / Y - para acercar, alejar - mantenga presionado el botón del ratón DERECHO y moverse en las direcciones X / Y - mover (traducir) - mantenga presionado el botón del ratón IZQUIERDO Y la tecla CTRL y se mueven en las direcciones X / Y - a Animar - mantenga presionado el botón del ratón IZQUIERDA, arrastre rápidamente y suelte el botón mientras arrastra el ESPACIO - animar (auto-rotación) TECLA DE FLECHA IZQUIERDA - rotate vert. Izquierda TECLA DE FLECHA A LA DERECHA - gira vert. Derecha FLECHA ARRIBA - rotar horiz. Arriba FLECHA ABAJO - gire el horiz. NUMPAD 4 - mover hacia la izquierda NUMPAD 6 - moverse hacia la derecha NUMPAD 8 - subir NUMPAD 2 - bajar PAGE UP - subir el nivel del agua hacia arriba PAGE DOWN - nivel de agua abajo Optimización inteligente (no exhaustiva) AmiBroker ofrece ahora una optimización inteligente (no exhaustiva) además de una búsqueda regular y exhaustiva. La búsqueda no exhaustiva es útil si el número de todas las combinaciones de parámetros del sistema comercial dado es simplemente demasiado grande para ser factible para la búsqueda exhaustiva. La búsqueda exhaustiva está perfectamente bien, siempre y cuando sea razonable usarla. Digamos que usted tiene 2 parámetros cada uno que van de 1 a 100 (paso 1). Eso es 10000 combinaciones - perfectamente bien para la búsqueda exhaustiva. Ahora con 3 parámetros tienes 1 millón combinaciones - todavía está bien para la búsqueda exhaustiva (pero puede ser lenghty). Con 4 parámetros tienes 100 millones de combinaciones y con 5 parámetros (1..100) tienes 10 billones de combinaciones. En ese caso, sería demasiado tiempo para comprobar todos ellos, y este es el área donde los métodos no exhaustivos de búsqueda inteligente puede resolver el problema que no es solucionable en un tiempo razonable mediante la búsqueda exhaustiva. Aquí es absolutamente la instrucción más simple de cómo utilizar nuevo optimizador no exhaustivo (en este caso CMA-ES). 1. Abra su fórmula en el editor de fórmulas 2. Agregue esta línea única en la parte superior de su fórmula: OptimizerSetEngine (quotcmaequot) // también puede usar quotspsoquot o quottribquot aquí 3. (Opcional) Seleccione su objetivo de optimización en Automatic Analysis, Settings , QuotWalk-Forwardquot, campo de optimización. Si se salta este paso, se optimizará para CAR / MDD (rendimiento anual compuesto dividido por la reducción máxima). Ahora, si ejecuta la optimización utilizando esta fórmula, utilizará un nuevo optimizador evolutivo (no exhaustivo) CMA-ES. ¿Cómo funciona? La optimización es el proceso de encontrar el mínimo (o máximo) de la función dada. Cualquier sistema comercial puede ser considerado como una función de cierto número de argumentos. Las entradas son parámetros y datos de cotización. La salida es su objetivo de optimización (digamos CAR / MDD). Y usted está buscando el máximo de la función dada. Algunos de los algoritmos inteligentes de optimización se basan en la naturaleza (comportamiento animal) - Algoritmo PSO, o proceso biológico - Algoritmos genéticos, y algunos se basan en conceptos matemáticos derivados por los seres humanos - CMA-ES. Estos algoritmos se utilizan en muchas áreas diferentes, incluyendo las finanzas. Ingrese quotPSO financequot o quotCMA-ES financequot en Google y encontrará mucha información. Los métodos no exhaustivos (o quotsmartquot) encontrarán óptimo global o local. El objetivo es, por supuesto, encontrar uno global, pero si hay un único pico agudo de las combinaciones de parámetros zillones, métodos no exhaustivos pueden fallar en encontrar este único pico, pero tomando forma comerciantes perspecive, encontrar único pico agudo es inútil para Porque ese resultado sería inestable (demasiado frágil) y no replicable en el comercio real. En el proceso de optimización estamos más bien buscando regiones de meseta con parámetros estables y este es el área donde brillan los métodos inteligentes. En cuanto al algoritmo utilizado por la búsqueda no exhaustiva, se ve como sigue: a) el optimizador genera una población inicial de grupos de parámetros (generalmente aleatoria) b) el backtest es realizado por AmiBroker para cada conjunto de parámetros de la población c) los resultados de los backtests son Evaluado de acuerdo con la lógica del algoritmo y la nueva población se genera sobre la base de la evolución de los resultados d) si se encuentra mejor nuevo - guárdelo y vaya al paso b) hasta que se cumplan los criterios de detención Iteraciones máximas b) detener si el rango de los mejores valores objetivos de las últimas generaciones X es cero c) detenerse si al agregar un vector de desviación estándar 0,1 en cualquier dirección del eje principal no cambia el valor del valor objetivo d) Exhaustivo) en AmiBroker es necesario especificar el motor optimizador que desea utilizar en la fórmula AFL utilizando la función OptimizerSetEngine. La función selecciona el motor de optimización externo definido por nombre. AmiBroker actualmente se comercializa con 3 motores: Standard Particle Swarm Optimizer (quotspsoquot), Tribus (quottribquot) y CMA-ES (quotcmaequot) - los nombres en llaves se utilizarán en llamadas OptimizerSetEngine. Además de seleccionar el motor del optimizador puede que desee establecer algunos de sus parámetros internos. Para ello, utilice la función OptimizerSetOption. Función OptimizerSetOption (quotnamequot, value) La función establece parámetros adicionales para el motor de optimización externo. Los parámetros dependen del motor. Los tres optimizadores enviados con AmiBroker (SPSO, Trib, CMAE) soportan dos parámetros: quotRunsquot (número de ejecuciones) y quotMaxEvalquot (evaluaciones máximas (pruebas) por ejecución única). El comportamiento de cada parámetro es dependiente del motor, por lo que los mismos valores pueden y, por lo general, dará diferentes resultados con diferentes motores utilizados. La diferencia entre Runs y MaxEval es la siguiente. La evaluación (o prueba) es un solo backtest (o evaluación del valor objetivo de la función). RUN es una ejecución completa del algoritmo (encontrar el valor óptimo) - generalmente involucra muchas pruebas (evaluaciones). Cada ejecución simplemente RESTABLECE todo el proceso de optimización desde el nuevo comienzo (nueva población aleatoria inicial). Por lo tanto, cada ejecución puede conducir a encontrar diferentes locales máx / min (si no encuentra global). El parámetro Runs define el número de ejecuciones de algoritmos posteriores. MaxEval es el número máximo de evaluaciones (bactests) en cualquier ejecución individual. Si el problema es relativamente simple y 1000 pruebas son suficientes para encontrar el máximo global, 5x1000 es más probable encontrar el máximo global, ya que hay menos posibilidades de quedar atrapado en el máximo local, como subsecuentes se iniciará a partir de la población aleatoria inicial diferente. Ser complicado Depende del problema bajo prueba, su complejidad, etc, etc. Cualquier método no exhaustivo estocástico no le da la garantía de encontrar max / min global, independientemente del número de pruebas si es más pequeño que exhaustivo. La respuesta más fácil es. Especifique como gran número de pruebas como es razonable para usted en términos de tiempo necesario para completar. Otro consejo simple es multiplicar por 10 el número de pruebas con la adición de nueva dimensión. Eso puede conducir a la sobreestimación del número de pruebas necesarias, pero es bastante seguro. Los motores enviados están diseñados para ser fáciles de usar, por lo tanto, son usables los valores predeterminados / automáticos, por lo que la optimización se puede ejecutar normalmente sin especificar nada (aceptando valores predeterminados). Es importante entender que todos los métodos de optimización inteligente funcionan mejor en espacios de parámetros continuos y funciones objetivo relativamente suaves. Si el espacio de parámetros es discreto, los algoritmos evolutivos pueden tener problemas para encontrar el valor óptimo. Es especialmente cierto para los parámetros binarios (on / off) - no son adecuados para cualquier método de búsqueda que utiliza gradiente de cambio de función objetivo (como la mayoría de los métodos inteligentes). Si su sistema comercial contiene muchos parámetros binarios, no debe utilizar el optimizador inteligente directamente en ellos. En su lugar, intente optimizar sólo los parámetros continuos utilizando el optimizador inteligente y cambie los parámetros binarios manualmente o mediante un script externo. SPSO - Optimizador de enjambre de partículas estándar El Optimizador de enjambre de partículas estándar se basa en el código SPSO2007 que se supone debe producir buenos resultados siempre que se proporcionan parámetros correctos (por ejemplo, Runs, MaxEval) para un problema particular. Selección de opciones correctas para el optimizador de PSO puede ser difícil por lo tanto los resultados pueden variar significativamente de caso a caso. SPSO. dll viene con códigos fuente completos dentro de la subcarpeta quotADKquot. OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optimizar (quotsquot, 26, 1, 100, 1) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotRunsquot, 1) ) (0, MACD (fa, sl)) TRIBES - El Optimizer adaptable del optimizador del enjambre de la partícula del Parámetro-menos es adaptable (quotfquot, 12, 1, 100, 1) , Versión sin parámetros de PSO (optimización de optimización de enjambre de partículas) no exhaustiva. Para el fondo científico vea: particleswarm. info/Tribes2006Cooren. pdf En teoría debe funcionar mejor que PSO regular, porque puede ajustar automáticamente los tamaños del enjambre y la estrategia del algoritmo al problema que se resuelve. La práctica muestra que su rendimiento es bastante similar a PSO. El complemento Tribes. DLL implementa la variante quotTribes-Dquot (es decir, adimensional). Basado en clerc. maurice. free. fr/pso/Tribes/TRIBES-D. zip de Maurice Clerc. Los códigos fuente originales utilizados con permiso del autor Tribes. DLL vienen con código fuente completo (dentro de la carpeta quotADKquot) Parámetros soportados: quotMaxEvalquot - número máximo de evaluaciones (backtests) por ejecución (predeterminado 1000). Debe aumentar el número de evaluaciones con un número creciente de dimensiones (número de parámetros de optimización). El predeterminado 1000 es bueno para 2 o máximo 3 dimensiones. QuotRunsquot - número de ejecuciones (reinicios). (Predeterminado 5) Puede dejar el número de ejecuciones con un valor predeterminado de 5. Por defecto, el número de ejecuciones (o reinicios) se establece en 5. Para utilizar el optimizador Tribes, sólo tiene que agregar una línea a su código: OptimizerSetOption (quotMaxEvalquot , 5000) // 5000 evaluations max CMA-ES - Optimizador de estrategias evolutivas CMA-ES (Covariance Matrix Adaptation Evolutionary Strategy) es un optimizador no exhaustivo avanzado. Para los antecedentes científicos ver: bionik. tu-berlin. de/user/niko/cmaesintro. html De acuerdo con los benchmarks científicos supera a otras nueve, las estrategias evolutivas más populares (como el PSO, la evolución genética y diferencial). Bionik. tu-berlin. de/user/niko/cec2005.html El complemento CMAE. DLL implementa quotGlobalquot variante de búsqueda con varios reinicios con el creciente tamaño de población CMAE. DLL viene con código fuente completo (dentro de la carpeta quotADKquot) Por defecto número de ejecuciones (O reinicia) se establece en 5. Se recomienda dejar el número predeterminado de reinicios. Puede cambiarlo usando la llamada OptimizerSetOption (quotRunsquot, N), donde N debe estar en el rango 1..10. No es recomendable especificar más de 10 ejecuciones, aunque es posible. Tenga en cuenta que cada ejecución utiliza TWICE el tamaño de la población de ejecución anterior por lo que crece exponencialmente. Por lo tanto, con 10 carreras que terminan con la población 210 mayor (1024 veces) que la primera ejecución. Hay otro parámetro quotMaxEvalquot. El valor predeterminado es CERO, lo que significa que el complemento calculará automáticamente MaxEval requerido. Se aconseja no definir MaxEval por sí mismo como el defecto funciona bien. El algoritmo es lo suficientemente inteligente como para minimizar el número de evaluaciones requeridas y converge muy rápido a punto de solución, por lo que a menudo encuentra soluciones más rápido que otras estrategias. Es normal que el plugin omita algunos pasos de evaluación, si detecta que se encontró la solución, por lo tanto, no debería sorprenderse que la barra de progreso de optimización se mueva muy rápido en algunos puntos. El complemento también tiene la capacidad de aumentar el número de pasos sobre el valor inicialmente estimado si es necesario para encontrar la solución. Debido a su naturaleza adaptativa, el tiempo de cotización que se deja y / o el número de pasos mostrados por el diálogo de progreso es sólo una suposición más aproximada en el momento y puede variar durante el curso de optimización. Para utilizar el optimizador CMA-ES, sólo tiene que agregar una línea a su código: Esto llevará a cabo la optimización con la configuración predeterminada que están bien para la mayoría de los casos. Debe tenerse en cuenta, como es el caso de muchos algoritmos de búsqueda de espacio continuo, que la disminución del parámetro quotstepquot en las llamadas de función Optimize () no afecta significativamente los tiempos de optimización. Lo único que importa es el problema quotdimension, es decir, el número de parámetros diferentes (número de optimizar las llamadas de función). El número de quotstepsquot por parámetro se puede establecer sin afectar el tiempo de optimización, así que utilice la resolución más fina que desee. En teoría, el algoritmo debería ser capaz de encontrar solución en un máximo de 900 (N3) (N3) backtests donde quotNquot es la dimensión. En la práctica, converge mucho más rápido. Por ejemplo, la solución en el espacio de parámetros 3 (N3) dimensional (digamos 100100100 1 millón de pasos exhaustivos) puede encontrarse en tan sólo 500-900 pasos CMA-ES. Optimización individual multihilo A partir de AmiBroker 5.70 además del multithreading de múltiples símbolos. Puede realizar la optimización multi-subprocesos de símbolo único. Para acceder a esta funcionalidad, haga clic en la flecha desplegable situada junto al botón quotOptimizequot en la ventana New Analysis y seleccione quot. QuotIndividual Optimizequot usará todos los núcleos de procesador disponibles para realizar la optimización de símbolo único, lo que lo hace mucho más rápido que la optimización regular. En el modo quotCurrent symbolquot se realizará la optimización en un símbolo. En los modos quotAll symbolsquot y quotFilterquot procesará todos los símbolos secuencialmente, es decir, la primera optimización completa para el primer símbolo, luego la optimización en el segundo símbolo, etc. Limitaciones: 1. El Backtester personalizado NO es compatible (todavía) 2. Los motores de optimización inteligentes NO son compatibles - Sólo funciona la optimización EXHAUSTIVA. Eventualmente, podemos deshacernos de la limitación (1) - cuando AmiBroker se cambia, el backtester personalizado no usa OLE más. En este momento, examinamos la estrategia para la validez de la cara y nos aseguramos de que el modelo no sufra ningún sesgo que sea estándar en la teoría de las finanzas o de la cartera, como por ejemplo: Sesgo de snooping de datos o sesgo de supervivencia. A partir de ahí, discutiremos brevemente los medios de ejecución de comercio en su sistema, que podría ser la ejecución de comercio manual, el comercio automatizado, o una combinación de ambos. También discutimos si el rendimiento absoluto o el rendimiento ajustado por riesgo es el objetivo del modelo de negociación, su rendimiento histórico (si existe) hasta el momento y la disponibilidad de los datos necesarios. Si descubrimos que su sistema se encuentra en las fases iniciales de construcción, nuestro equipo emprenderá el proceso más completo descrito en la sección Desarrollo de sistemas de negociación de nuestro sitio. Una vez que nos sentimos cómodos que entendemos la meta principal de su modelo comercial, y antes de comenzar a trabajar en el análisis cuantitativo formal, describimos cualitativamente lo que creemos que es la manera más efectiva de llevar a cabo la optimización. También le proporcionamos un breve informe sobre las metodologías cuantitativas que vamos a utilizar, sobre la base de las necesidades particulares de su modelo. Consideraciones de los datos Nuestros clientes vienen a nosotros con sistemas comerciales en varias formas. Algunos clientes nos acercan con un modelo de trabajo que ya están negociando. Estos modelos se especifican a menudo en un paquete de software comercial como Tradestation, Metastock o E-Signal. Otros clientes vienen a nosotros con su modelo especificado en un lenguaje de programación estadística como R o SAS, o en un lenguaje de programación estándar como C. Sin embargo, también tenemos muchos clientes que vienen a nosotros con sistemas comerciales que son fáciles de codificar y Que tienen necesidades de ejecución de comercio más trivial. En estos casos, podemos trabajar con modelos retransmitidos en algo tan directo como un documento de Word con los diversos indicadores y nodos de decisión indicados en el texto. Dado que la mayoría de las optimizaciones de los sistemas comerciales implican un sólido backtesting y análisis de sensibilidad, tener un conjunto de datos fiables y limpios es de extrema importancia. Muchos de nuestros clientes utilizan fuentes de datos externas que proporcionan datos en tiempo real para el comercio, pero no tienen bases de datos históricas incluidas. En estas circunstancias, a menudo tenemos los datos necesarios para realizar un backtesting más extenso y / o podemos adquirirlo a un costo razonable. Si los datos están en un formato difícil de usar, tenemos un equipo de limpieza de datos que puede convertir el conjunto de datos en algo más útil. Backtesting y Optimización del Modelo de Negociación Cuando llegue el momento de realizar los análisis cuantitativos necesarios, nuestro principal objetivo es que todo nuestro trabajo sea robusto y completamente replicable. No le ayudaremos a obtener ganancias comerciales creando versiones excesivamente especificadas de su modelo, probando decenas de indicadores o probando múltiples variaciones del mismo modelo de núcleo hasta que encontremos algo que nos parezca bueno. Nuestro equipo de consultores tiene amplia experiencia en pruebas y optimización de sistemas de negociación, tanto académicamente como en Wall Street. A menudo confieren el trabajo académico que están publicando, sobre las estrategias de vanguardia que se desarrollan cada día en la academia, o sobre sus propios modelos. Cada miembro de nuestro equipo sabe que las estrategias deben ser claramente especificadas de antemano para ser robustas, que No se pueden intentar intentos de optimización múltiple en el mismo conjunto de datos y que la violación de principios como éstos hará innecesarias las predicciones sobre el rendimiento futuro del modelo. Este problema (análisis de datos que resulta en resultados no robustos) es el problema que más se nos plantea al analizar un modelo de negociación preexistente. Muchos de nuestros clientes llegan a nosotros sin entender completamente los sesgos que pueden estar presentes en los datos de los mercados financieros. Nos consideramos maestros y no sólo actores, y permaneceremos con usted por teléfono, correo electrónico o en persona hasta que esté completamente cómodo con su comprensión de estos temas. Si su modelo está fallando debido a ellos, podemos intentar respecify el modelo o encontrar una manera de crear un modelo similar que no tenga estas mismas trampas. Lo peor que puede pasar a un desarrollador de modelos comerciales es que él o ella para concluir inexactamente que tienen un modelo rentable, y luego perder tanto tiempo y dinero que el sistema de comercio hasta que el abandono por falta de éxito. Los modelos de comercio que se crean correctamente funcionan en tiempo real, y no sólo en el pasado. Utilizamos todas las herramientas de la caja de herramientas de los teóricos de la cartera para analizar de manera óptima (y revisar si es necesario) su modelo de negociación. Debido a nuestra experiencia en Wall Street y académica (cada miembro de nuestro equipo fue en un momento un profesor de estadística, econometría, teoría económica o finanzas), estamos bien informados en casi todas las técnicas cuantitativas que se utiliza comúnmente (y no tan comúnmente utilizado ) En la validación y optimización del modelo de negociación, incluyendo pero no limitado a: Análisis de series temporales Filtrado de Kalman Análisis de componentes principales Simulación Monte Carlo Técnicas Jackknife / Bootstrapping General Autoregresivo Condicional Heteroscedasticidad Black-Scholes Opción Precio Simulación Basado en Opción Precios Advanced Derivative Movimiento y Geometría Movimiento Browniano Tasa de Interés Estructura a Término Modelación Tasa de Spot y Volatilidad General Term Structure Modeling Modelado de Factor de Markovia a Corto Plazo Variación del Análisis de Volatilidad Análisis de Titulización, Precios y Valuación CDS Precios y Valuación Asciende Ascenso Optimización Cálculo Ito Simulación Recolección Optimización Exhaustiva (Brute-Force) Matriz de Covariancia Adaptación-Evolución Estrategia Algoritmos de Aprendizaje de Máquina Genética (Modelos de Gradiente Impulsado, Bosques Aleatorios, Máquinas de Soporte de Vectores, etc.) Entregables y Apoyo Después de que nuestro trabajo básico en su comercio La optimización del modelo está completa, normalmente enviamos un informe final de entrega que incluye la totalidad de nuestros análisis, resultados, código de sintaxis para replicar los análisis y, por supuesto, una recomendación completa. Si el modelo pudiera beneficiarse de la optimización, obviamente le proporcionaríamos el modelo optimizado en cualquier formato de su elección. También continuaremos trabajando con usted en ese modelo a medida que comience a negociarlo de nuevo, para que podamos hacer los ajustes necesarios en el futuro, usar más datos de la nueva operación para confirmar que nuestras suposiciones han demostrado ser exactas, ejecutar un análisis de poder en Tiempo continuo para asegurar que tenemos un tamaño de muestra suficiente para validar la segunda ejecución de su modelo, y sugerir otros modelos que pueden funcionar bien de acuerdo con su modelo actual. También le proporcionaremos una revisión de la gestión de riesgos y recomendaciones adicionales de implementación. Si llegamos a la conclusión de que el modelo es poco probable que sea rentable y todos los backtests y otros análisis de seguimiento confirman esto, entonces trataríamos de tomar la sustancia de su modelo y sugerir otros tipos de modelos que podrían especificarse robustamente y apuntar a esa misma idea . Por supuesto, estamos disponibles para consulta sobre cualquiera de estas cuestiones, ya sea en ese momento o en el futuro. Los modelos de negociación pueden llevarse a cabo por rote (esto es cierto incluso para los sistemas de negociación automatizados), necesitan ser entendidos conceptualmente. Permaneceremos con ustedes, en un papel de profesor que todavía es familiar para muchos de nosotros, hasta que tengamos esa comprensión conceptual. Confidencialidad Entendemos la importancia y necesidad de confidencialidad al tratar con cualquier modelo o idea comercial y proveemos a todos nuestros clientes potenciales un Acuerdo de no divulgación inmediatamente después del contacto. Esto le asegura que su idea y / o modelo existente no serán compartidos con terceros, y su consulta con nosotros es completamente confidencial. Haga clic aquí para leer nuestra Política de seguridad de datos. Precision Consulting fue presentada en la edición 2010 de la Inc 500, estableciéndonos como una de las 500 compañías privadas de más rápido crecimiento en los Estados Unidos. Utilizamos todas las herramientas de la caja de herramientas de los teóricos de la cartera para analizar de manera óptima su modelo comercial. Cuando llegue el momento de realizar los análisis cuantitativos necesarios, nuestro principal objetivo es que todo nuestro trabajo sea una consultoría de precisión robusta y completamente replicable. , DE 19801 teléfono: (302) 407-0449 correo electrónico: INFOPRECISIONCONSULTINGCOMPANYTrading Systems Codificación: pruebas, solución de problemas y optimización Ahora que tiene un sistema comercial diseñado y codificado, es hora de probarlo para asegurarse de que su codificación está libre de errores lógicos y Errores técnicos. También vamos a mirar algo conocido como optimización - una característica en algunos programas de comercio que le permite afinar sus reglas de comercio para adaptarse a las acciones que usted planea en el comercio. Prueba de su sistema de comercio La gran mayoría de las aplicaciones comerciales que soportan lenguajes de programación también admiten las herramientas de prueba. Estas herramientas se dividen en dos categorías: 1. Las herramientas técnicas de pruebas técnicas buscan errores técnicos en su código. Por ejemplo, si olvida agregar un punto y coma después de una sentencia, la herramienta de pruebas técnicas le notificará que su declaración no es válida. La ubicación de la herramienta de pruebas técnicas depende de la aplicación comercial utilizada. MetaTrader muestra un error o resultados defectuosos cuando intenta compilar su código, mientras que las aplicaciones de comercio como Tradecision tienen una utilidad de comprobación de código incorporada en la interfaz que le permite comprobar su código antes de aplicarlo. 2. Las herramientas lógicas de pruebas lógicas buscan errores lógicos en su código. Por ejemplo, si usó un signo mayor que en lugar de un signo menos que (lo que no es un error técnico), una herramienta de prueba lógica le mostrará que sus resultados no tienen sentido. La herramienta de prueba lógica más popular es la herramienta de backtesting. Esta herramienta le permite tomar datos pasados ​​y aplicar su sistema de comercio a esos datos. Esto le da una idea de lo siguiente: Si su sistema comercial es rentable 13 ¿Qué condiciones resultan ser más rentables? 13 Donde podrían existir errores en sus reglas (Para más información, vea Backtesting: Interpretando el pasado.) Solución de problemas de su comercio Sistema Como con cualquier otro tipo de programación, la solución de problemas puede ser una tarea tediosa y difícil. Encontrar errores en su código requiere clasificar sistemáticamente a través de su código para identificar errores sintácticos que, aunque a menudo menores, pueden detener su programa. Estos son algunos errores comunes a buscar: Faltan semicolones después de declaraciones - Estos tienen que ser después de cada declaración. 13 Variables no definidas - Recuerde que tiene que declararlas antes de usarlas 13 Errores ortográficos - Si algún nombre o función está mal escrito, la aplicación comercial devolverá un error (ver ejemplo a continuación). 13 Uso incorrecto de () - Recuerde que asigna un valor a otro valor, mientras que significa igual a. 13 Uso incorrecto de funciones incorporadas - Consulte la documentación de las aplicaciones comerciales o la interfaz de programación de aplicaciones (API) para asegurarse de que está utilizando la sintaxis correcta. Algunas aplicaciones comerciales contienen una función que le permitirá probar su código antes de usarlo o compilarlo. Esta función le permite ver cuál es el error y en qué línea se puede encontrar. Tome Tradecision por ejemplo: Aquí podemos ver que Tradecision nos da la ubicación (línea y columna) del error, una descripción del error y el tipo de error (en este caso, es sintáctico). Si observamos la expresión, podemos ver que en la columna 8 xrossBelow no es una función válida. Si reemplazamos el x (que está en la columna 8) con un c, entonces tendremos un código válido. Si miramos a MetaTrader, podemos ver que los errores surgen cuando tratamos de compilar el programa: Aquí podemos ver que en la descripción dice que la variable BuyNow no estaba definida. Si hace doble clic en este mensaje de error, nos llevará a la ubicación específica del error en el código. Como puede ver, la mayoría de las aplicaciones comerciales le proporcionan una manera fácil de localizar errores técnicos y corregirlos. Corregir los errores simplemente implica sistemáticamente pasar por cada mensaje de error y luego recompilar el código y / o aplicar el sistema de comercio a sus cartas. Optimización de su sistema de comercio Algunas aplicaciones comerciales le permiten seleccionar las variables que se optimizarán. Tradecision, por ejemplo, le permite seleccionar fácilmente una variable y reemplazarla con código que intentará la optimización. La optimización en sí es simplemente un proceso que encuentra el valor óptimo para un elemento del sistema de comercio en particular basado en los resultados y el rendimiento anteriores. Tenga en cuenta que la sobre-optimización resulta en sistemas comerciales que no pueden adaptarse a las condiciones del mercado por lo tanto, es importante optimizar sólo algunas variables importantes, no todas las variables Aquí se muestra lo que la característica de optimización parece en Tradecision: Dos nuevas variables y las ponen igual a. Simplemente significa que el programa de comercio reemplazará esto con el número óptimo. A continuación, puede ver que hemos utilizado las nuevas variables dentro de nuestra estrategia comercial. Finalmente, establecemos un rango para los números (para que el programa no busque al infinito). Algunos otros programas de comercio tienen características que operan de una manera similar, lo que le permite reemplazar el valor numérico con un y decirle a la aplicación de comercio para optimizarlo. Conclusión Por ahora usted debe haber desarrollado un sistema de trabajo de comercio en el que usted puede tener confianza. En la siguiente parte de esta serie, aprenderá cómo aplicar su sistema de comercio a los gráficos y cómo utilizarlo para tomar decisiones comerciales Suscribirse a noticias para utilizar para las últimas ideas y análisis

No comments:

Post a Comment