El ciclo de Producción de Sistemas (Primera Parte)
El primer paso en el desarrollo de un sistema de trading comienza con una idea. Esta idea puede estar basada en indicadores, datos de precios, etc.
En numerosos colectivos, incluso entre inversores bien informados, subyace la idea del sistema como piedra filosofal. Todo se reduce a dar con el algoritmo preciso que encaje como una llave casi mágica en la textura de los mercados. Por ello, quienes se inician en esta operativa dedican casi todo su tiempo a buscar esa fabulosa relación matemática o ese superindicador en los que, vaya usted a saber por qué, nadie se había fijado antes. Así mismo, también es frecuente encontrar en el imaginario del trader una perniciosa creencia en los sistemas de caso único: cójase una brillante estrategia, aplíquese al mercado en que mejor funcione y ya estaremos listos para ganar dinero.
Pues bien, nada más lejos de la realidad. Ni existen fórmulas milagrosas ni funcionan las aproximaciones unilaterales. La naturaleza cambiante y compleja de las formaciones de precios, unida al hecho de que los mercados en plazos largos suelen atravesar por marcoépocas muy distintas, nos obligará una y otra vez a revisar estrategias y ajustar carteras, siguiendo lo que denominamos un “ciclo de producción de sistemas”, caracterizado por las siguientes etapas:
El primer paso en el desarrollo de un sistema de trading comienza con una idea. Esta idea puede estar basada en indicadores, datos de precios, etc., y nuestra finalidad será transformarla en un script que sea interpretado por una plataforma de trading para ser evaluado a través de datos históricos.
Para que este proceso de formulación pueda llevarse a cabo es necesario que la idea sea precisa, por este motivo, cuando una idea no es precisa antes de comenzar con su formulación es necesario concretarla.
A continuación vamos a ver un ejemplo de idea de trading simple y precisa:
A) Entramos largos con una orden a mercado cuando el precio de cierre de la barra actual es mayor que el precio de apertura de la barra anterior y, además, el precio de cierre de la barra actual está situado por encima de una media móvil exponencial de 20 periodos calculada al cierre. Cerramos largos con una orden a mercado en la apertura de la vela actual cuando hayan transcurrido 3 barras desde que hemos abierto la posición.
Esta idea podría ser fácilmente formulada ya que todas las reglas son claras y están correctamente definidas. Veamos otro ejemplo de idea de trading vaga, en la que sus reglas no están bien definidas:
B) Entramos largos cuando el precio ha estado un número de barras por encima de una media móvil simple y se acerca al valor de dicha media. Cerramos largos cuando el precio esté por debajo la media.
Como podemos observar, para que esta idea pueda ser transformada en un script, aun nos faltaría una serie de información.
Algunas de las preguntas que podríamos hacernos son: ¿Qué tipo de orden emplearíamos en la entrada? ¿Una orden a Stop? ¿Una orden a mercado? ¿Cuántas barras debería haber estado el precio por encima de esta media móvil?, ¿5?, ¿10? ¿Cuál es el periodo de esta media móvil simple? ¿Cómo definimos que el precio se acerca a la media móvil? ¿Especificando un porcentaje?, y si la respuesta es afirmativa, entonces ¿cuál sería ese porcentaje?, etc. Como ven, antes de poder transformar esta idea en un script sería necesario concretar todas y cada una de las reglas que lo componen.
Antes de comenzar con el proceso de transformación de una idea de trading en un script, es conveniente organizar todas las reglas y fórmulas que contiene la idea en una forma abreviada de lenguaje que nos permita representar la solución del algoritmo de la manera más precisa y completa posible, esto es conocido en programación como pseudocódigo, cuanto más claro y detallado esté dicho pseudocódigo mucho mejor, ya que más fácil nos resultará transformar la idea original en un script que pueda ser interpretado por la plataforma de trading.
2) CONSTRUCCIÓN.
Entendemos por construcción todo lo que va de la mesa de diseño a la plataforma de trading. Existen numerosas metodologías y dispositivos tecnológicos para programar y evaluar sistemas, pero no todas ellas son aconsejables o están al alcance del trader particular. En general podemos señalar estas tres aproximaciones:
(A) Basada en reglas discretas. Se utiliza el leguaje de programación de una plataforma para construir un algoritmo a partir de indicadores técnicos o relaciones estadísticas en los precios. La creciente complejidad del software de trading permite desarrollar sistemas incluso sin conocimientos específicos de programación, empleando plataformas de diseño visual o asistentes para la elaboración de scripts sencillos que luego podrán ser compilados en un determinado lenguaje.
(B) Basada en redes neuronales. Conocida también con el nombre de sistemas tipo black-box. El operador establece ciertos parámetros en la arquitectura de la red. Incluso puede incorporar indicadores y criterios específicos para la validación del modelo. Sin embargo , debido a que la red genera una matriz de relaciones complejas entre los inputs y outputs del sistema, no es posible conocer la lógica del posicionamiento. Por otra parte, la proliferación de variables y parámetros ocultos también escapa al control del trader y, en muchos casos, puede dar lugar a modelos sobreoptimizados.
(C) Basada en programación genética. Empleando software específico sobre algoritmos evolutivos que permiten construir automáticamente el código de los sistemas. En este caso nos limitaremos a seleccionar el mercado de referencia (tamaño del histórico y time frame), algunas opciones básicas en la construcción de las reglas de operativa y los ratios diana para evaluar cada modelo candidato. La aplicación construye un sistema completamente funcional y ejecutable en determinada plataforma de trading. Se trata de una tecnología muy reciente y de la que existe una reducida oferta en el mercado. Sin embargo, constituye una prometedora línea de trabajo.
Sea cual sea la aproximación elegida, en la estructura de un sistema podemos identificar los siguientes elementos básicos:
Los datos son el alimento de cualquier sistema y todo sistema se aplica en modo de barra o en modo continuo. En el primer caso las reglas se evalúan cada nueva barra y, en
el segundo, cada tick entrante. Aunque pudiera resultar sorprendente, existen buenos motivos para preferir la primera modalidad de trabajo en los subsistemas de filtros y reglas de entrada, reservando el escrutinio permanente a lo sumo para la fijación precisa de los stops de pérdidas. Por otra parte, entendemos por motor de inferencias el conjunto de clausulas condicionales en que se asienta la lógica del posicionamiento. Cada regla puede incluir una o varias inferencias simples (que en programación se corresponden con sentencias del tipo IF…Then) o complejas (que incluyen otros operadores lógicos y bucles recursivos). El tercer componente clave de un sistema es la automatización del proceso de envío de órdenes. Cuando se trabaja con time frames pequeños y una cadencia operativa alta, enviar manualmente las señales al broker se convierte en una tarea tediosa e inviable (pues el mayor retardo casi siempre se traduce en más deslizamiento). En tales circunstancias una adecuada y fiable interface plataforma / broker constituye un elemento decisivo.
1) CONTRASTACIÓN.
Una vez que tenemos nuestra estrategia diseñada, el siguiente paso será hacer un análisis riguroso de sus resultados históricos con el objetivo de determinar si dicha estrategia es apta para implementarla en el mercado real. El proceso de validación de una estrategia está constituido por cuatro bloques, cada uno de los cuales ha de realizarse de forma consecutiva. A continuación vamos a ver el proceso de validación completo de un sistema de trading:
Pruebas preliminares: El primer paso será hacer un análisis preliminar de la estrategia. En esta fase aplicamos la estrategia sobre una serie de datos históricos tal y como la hemos diseñado. El objetivo será comprobar que las operaciones se ejecutan correctamente, conocer sus estadísticas generales, y hacer un análisis preliminar del Equity Curve y otros elementos importantes de riesgo, como sus Drawdows. En este punto también analizamos la estrategia en diferentes compresiones temporales (Time Frames) para obtener información de cuáles son las compresiones en las que muestra los mejores resultados. Si una vez realizada esta prueba preliminar la estrategia obtiene unos ratios mínimos que previamente hayan sido establecidos entonces pasaremos a la siguiente fase.
Optimización: El siguiente paso será hacer una optimización de sus parámetros, con la finalidad de comprobar si los resultados del sistema mejoran a través de la optimización. La optimización es uno de los procesos más importantes que deben llevarse a cabo en el desarrollo de un sistema. A través de este proceso localizaremos una zona paramétrica que maximice la expectativa del sistema y que, al mismo tiempo, sea robusta. El objetivo es obtener en operativa real unos resultados similares a los alcanzados durante la optimización. Esta tarea debe realizarse con cautela ya que, aunque el proceso de optimización es muy potente, si se realiza de una forma incorrecta puede llevarnos directamente a una sobre-optimización. La sobre-optimización ocurre cuando los parámetros seleccionados hacen que el sistema esté excesivamente ajustado a los movimientos históricos del precio. La principal característica de un sistema sobre-optimizado es la incapacidad de obtener en operativa real unos resultados similares a los arrojados en el proceso de optimización. Una vez localizada la zona paramétrica robusta, el siguiente paso será comprobar cómo responde el sistema cuando es aplicado sobre un grupo de datos nuevo. Esta prueba externa nos servirá para obtener información acerca de si el sistema ha podido estar sobre-optimizado. Para realizar esta prueba analizaremos como responde cuando es aplicado sobre diferentes activos y sobre diferentes Time Frames. Si el sistema nuevamente obtiene unos resultados mínimos preestablecidos pasaremos a la siguiente fase, el Walk Forward.
Walk Forward: Una vez que el sistema ha pasado las pruebas anteriores, el siguiente paso será hacer un análisis de sus resultados a través del método Walk Forward. El Walk forward podría considerarse la prueba de fuego de nuestro sistema, y el proceso en el que obtendremos definitivamente una conclusión objetiva de si nuestro sistema ha sido sobre-optimizado.
Si finalmente el sistema continúa mostrando buenos resultados una vez que ha pasado este proceso, entonces sin duda estaremos ante un sistema robusto que será apto para implementarlo en el mercado real. El método de Análisis Walk Forward nos ofrecerá información similar a los resultados que hubiésemos obtenido simulando la estrategia en tiempo real. Esta es la prueba más importante de todas. A través de este método hacemos re-optimizaciones periódicas para conocer qué resultados hubiesen arrojado los parámetros seleccionados cuando son aplicados sobre datos externos que no han sido incluidos en las optimizaciones. Los principales objetivos de este método serán: evaluar que resultados hubiésemos obtenido si hubiésemos simulado esta estrategia en tiempo real, medir la robustez de la estrategia y comprobar la adaptabilidad que hubiesen tenido los parámetros seleccionados en las re-optimizaciones periódicas ante cambios en el mercado. Una vez realizado este proceso tendremos una serie de datos que representarán la evolución del sistema del mismo modo que si hubiese sido aplicado en tiempo real. Nuevamente si los resultados cumplen unos requisitos mínimos que previamente hayan sido establecidos el sistema definitivamente estará listo para implementarlo en operativa real.
Análisis de riesgos: El último paso será analizar de forma detallada los riesgos de la estrategia. En este punto recurriremos a las Simulaciones de Montecarlo para obtener información acerca de los posibles Drawdowns que podríamos sufrir en operativa real. Este estudio podría tener como objetivo, entre otras cosas, determinar el capital inicial destinado a la operativa con la estrategia. Además de esto, evaluaremos otra serie de datos relacionados con el riesgo de la estrategia, tales como: el máximo tiempo de recuperación, la máxima perdida por operación, el mayor número de operaciones negativas consecutivas, los tamaños de los diferentes Drawdowns, o el tiempo total de permanencia durante el que la estrategia está sumergida en Drawdows.
Nuestro último trabajo será realizar el Test Profile, que es el informe en el que tendremos registrados los rangos de valores en los que se ha movido la estrategia históricamente y que nos servirán para seguir su evolución en tiempo real. Una vez seguidos todos estos pasos, y si en todos ellos se han cumplido los objetivos que previamente habían sido establecidos, la estrategia estará lista para ser implementada en el mercado real.