¿Cómo optimizar sistema de trading automático basado en la cointegración? - forex
Hola,
He programado un sistema de trading automático completo, (al cual le falta optimizar sobre todo la parte de cointegración). Lo que me gustaría mejorar es la parte del cálculo de la cointegración. Estuve haciendo un curso de cointegración pero por desgracia se cortó a medio curso, sin ninguna razón a simple vista, simplemente desapareció el profesor y no se volvió a saber nada de él. El tema es que tengo en principio la parte de calcular si dos pares están cointegrados, pero los resultados no acaban de salir como era de esperar con esta estrategia, y me gustaría encontrar a alquien que tenga conocimientos de cointegración (lo ideal sería aplicada al trading, pero si es alguien matemático y no tiene ni idea de trading también me vendría perfecto). Al quedarse el curso a medias, tengo dudas de que tenga todo lo que hace falta, o incluso si algunas cosas que nos explicó son así realmente. Buscando información por otros sitios, sí parece que el algoritmo que tengo implementado es correcto, pero al no acompañar los resultados en esa estrategia siempre te queda la duda.
Me gustaría encontrar un colaborador para completar lo que me falta y que he mencionado arriba. Sobre cómo colaborar, pues sería cuestión de hablarlo, hay muchas opciones: determinadas licencias del programa para poder utilizarlo él o XX personas, ir a medias en una cuenta en común, pagar XX dinero por la colaboración. Sobre la colaboración, malo será que no se encontrase alguna forma para llegar a un acuerdo entre los 2 o los que fuésemos.
A quien le interese, puede ponerse en contacto conmigo mandando un mensaje a través de este mismo foro.
Para que veais por arriba cómo es el programa, éste actualmente tiene las siguientes características:
1) Conexión directa con el broker FXCM (con la opción de añadir más brokers si fuese necesario, tan sólo se necesitaría la API correspondiente y programar las operaciones necesarias con esa API).
2) Obtención automática de precios de los activos definidos.
3) Definición por parte del usuario del spread y el swap de cada activo para que las operaciones lo tengan en cuenta (de esta forma podrías cambiar estos valores para simular en los distintos brokers que te interesen)
4) Múltiples opciones de cálculos para definir entradas y salidas de las operaciones:
4.1) Se pueden definir múltiples sistemas para detectar entradas:
4.1.1) Cointegración, utilizando pares de divisas para calculas cuando están cointegradas
4.1.2) Tendencial (definiendo unos puntos de entrada cuando se detecten cambios de tendencia)
4.1.3) Sistemas sobre pares de divisas (ej. EURUSD-EURCAD) o sobre divisas simples (ej EURUSD)
4.1.4) Muchos otros sistema que el usuario quiera ya que se pueden definir las condiciones que tienen que cumplir las posibles operaciones
4.2) Se pueden utilizar varios tipos de coberturas (con pares equivalentes, coberturas simuladas, sin cobertura, ...)
4.3) Se puede definir cuantos datos históricos utilizar para los cálculos a la hora de predecir las posibles entradas (por ejemplo utilizar 500 datos o 1500 datos, lo que el usuario prefiera)
4.4) Se pueden utilizar múltiples timeframes para las estrategias (desde 1 minutos hasta 1 mes, yo normalmente utilizo el timeframe de 1 hora, por ser bastante fiable y las operaciones tener una duración aceptable)
4.5) Se puede definir el punto donde entrar y salir de las operaciones (basada en una serie de condiciones)
4.6) Se puede definir un mínimo y máximo de pips a la hora de buscar operaciones
4.7) Se puede definir un mínimo y máximo de lotaje en las operaciones
4.8) Se puede definir el porcentaje de riesgo que se correrá en cada operación (decidiendo también si tener en cuenta las ganancias/pérdidas obtenidas en el riesgo de cada operación)
4.9) Se puede definir el número de operaciones abiertas máximas
4.10) Se pueden definir SL dinámicos llegados a ciertos puntos de beneficios, por si queremos asegurar x beneficios pero no perder la oportunidad de obtener más si la operación sigue obteniendo más beneficios.
4.11) Se puede definir un período máximo de duración de una operación, y cuando finalice ese período se cerrará la operación, o se esperará a que cumpla unas condiciones específicas si queremos que se cierre sólo en determinadas circunstancias.
Todas las opciones indicadas en el punto 4 (y todavía existen más pero no veo necesario mostrar absolutamente, sólo puse las más importantes), están disponibles para utilizar en una cuenta en tiempo real, pero además, y es de las partes más importantes, puedes hacer una simulación con las opciones que prefieras en el pasado, es decir, puedes realizar los backtesting que consideres oportunos antes de utilizar las distintas opciones. De esta forma no es necesario dejar pasar un mes o dos con unas características concretas para saber si son buenas o no, sino que puedes utilizar el backtesting sobre un año o dos o lo que sea, con esas opciones, y el programa simulará las entradas que realizaría igual que ocurrirá cuando se haga en tiempo real.
5) Cuando se utiliza en tiempo real, se pueden hacer las entradas automáticamente en una cuenta de un broker, con lo que se puede comparar si los resultados simulados por el programa se corresponden con los del broker.
6) Tanto los backtesting como la operativa en tiempo real, se pueden hacer varias a la vez, incluso en distintas cuentas del broker. Simplemente hay que abrir el programa tantas veces como se quiera y realizar ahí la operativa.
7) Opción de enviar un email cuando se encuentren operaciones, de esta forma, si no quieres que la operativa sea totalmente automática, puedes enviarte un email cuando haya una operación y analizar tú mismo si la consideras adecuada o no. Con esto se podría enviar avisos a una lista de emails que haya definidos en el programa, si por ejemplo lo utilizan 10 personas, pues que mande 10 emails en cada operación a esas 10 personas.
8) Cuando se haga un backtesting u opere en tiempo real, se deben de definir tantos pares como se desee, de esta forma puedes operar con 5 pares si quieres, como con muchos (por ejemplo si eliges la cointegración, que son combinaciones de pares, puedes obtener muchísimas combinaciones. Un ejemplo práctico de para que sirve utilizar por ejemplo 1000 combinaciones (que se antoja a priorio demasiadas) es porque puedes hacer un backtesting de un año con esas 1000 combinaciones y luego te quedas para tiempo real con las X mejores combinaciones.
9) Además de todo esto, todos los backtesting o operativas en tiempo real (que no deja de ser igual que un backtesting sólo que se va haciendo en tiempo real en lugar del pasado), quedarán registrados al detalle en el programa, con lo que posteriormente (o incluso mientras se ejecutan) se podrán analizar las operaciones realizadas, los beneficios, las pérdidas. Todo ello se hace imprescindible para encontrar una buena estrategia ya que según los datos que se obtienen de los distintos backtesting se pueden ir modificando las opciones para optimizar la estrategia utilizada y crear una mejor.
10) Todas las estrategias y pares utilizados en cada estrategia, se pueden almacenar en una lista de favoritos (esto no es el resultado del backtesting en sí, sino las opciones que tiene ese backtesting). De esta forma, puedes definir las opciones y los pares, y guardaslos como favoritos, y luego si quieres hacer esa misma estrategia pero cambiando alguna opción en concreto, simplemente cargas ese favorito y cambias la opción que desees. Más que nada esto es por comodidad, porque como hay tantas opciones y pares posibles, sería un incordio si hay que definir todo nuevamente.
Esto que indico arriba es lo que ya está hecho y funcionando bastante bien.
Por si a alquien le interesa, acabo de publicar en myfxbook mi estrategia en tiempo real que estoy probando actualmente (tan sólo lleva activo desde el 08-12-2015, así que tiene todavía pocos datos, pero los backtesting que hice sobre 3 años son prometedores): https://www.myfxbook.com/members/lectum/calcoin-v10017/1446923
Os envío también unas imágenes generales de cómo es el programa a simple vista (estéticamente no es muy allá, pues sólo lo hice en principio para mi y aún lo estoy acabando, si consigo que funcione bien, pues entonces ya me meteré más con la parte visual, así que no os dejéis engañar porque no sea todo lo bonito que podría ser, jajaja)
http://prntscr.com/9j2nol -> Aquí podemos ver la pantalla del login. Actualmente funciona sólo FXCM, pero está pensado para funcionar con varios brokers a la vez y realizar entradas en los que se indique.
http://prntscr.com/9j2o4p -> Aquí se establecen las opciones que se indican en el punto 4, para realizar los backtesting o la operativa en tiempo real.
http://prntscr.com/9j2nz5 -> En esta pantalla podemos ver el resultado general de todos los backtesting realizados. Hay más detalle de lo que se ve, ya que muchas listas puedes pulsar ver más detalle de las cosas.
http://prntscr.com/9j2oaq -> En cada operación realizada o simulada, se guarda toda la información de esa operación y se muestra gráficamente para su análisis posterior.
http://prntscr.com/9j2ogc -> Como casi todos los programas que se precien, cuando ocurra alguna incidencia o error o mensaje informativo, se guardará y se podrán consultar esos mensajes.
http://prntscr.com/9j2olp -> Aquí se definirían los activos que queramos utilizar, así como los spread y los swaps (aquí se ponen los activos que queramos del broker, y en la pantalla de las opciones elegiremos los que queramos analizar)
http://prntscr.com/9j2ot9 -> Aquí se definen las estrategias de entrada y salida de las operaciones.
Saludos y muchísimas gracias a los que habéis seguido leyendo hasta el final puesto que es bastante larga la explicación, jajaja.