Juanma

Director de investigación y desarrollo de sistemasinversores.com, (consultora especializada en trading algorítmico), desde donde ha colaborado con los departamentos de sistemas de varios fondos de inversión y diseñado software para trading como alphadvisor.com. Centra su carrera profesional en el ámbito de la inteligencia computacional aplicada a los mercados financieros.
Juan Manuel Almodóvar / sistemasinversores.com

 

  • Los métodos de ensamblado de robots de trading suponen una novedosa forma de operar combinando las decisiones de varios sistemas expertos para maximizar el acierto en nuestras operaciones.
  • Artículo publicado en Hispatrading 20.

En nuestro día a día tomamos todo tipo de decisiones continuamente y cuando se trata de algo importante consultamos previamente con expertos, autoridades o personas cuya opinión valoramos positivamente. Por ejemplo, visitamos a varios médicos especialistas o leemos las opiniones online de varios compradores de un determinado producto y tomamos la decisión final combinando las opiniones individuales de diferentes expertos. De esta forma intentamos evitar una intervención inadecuada o la compra de un mal producto.

A la hora de operar en los mercados no tiene por qué ser diferente ¿y si pudiéramos consultar a cada uno de nuestros sistemas de trading expertos y tomar una decisión final según la opinión de cada uno de ellos? Los métodos de ensamblado de robots suponen una novedosa forma de operar obteniendo mucha más ventaja frente al mercado.

¿En qué consiste el ensamblado de robots?

El ensamblado de robots de trading consiste en combinar adecuadamente diversos robots y conseguir con ello aumentar la rentabilidad de nuestra cartera de sistemas a la vez que disminuir las probabilidades de operar con robots que pudieran funcionar mal.

Pero además, el método de ensamblado puede aplicarse con otros fines en el diseño de sistemas, por ejemplo para filtrar operaciones negativas, fusionar datos dispares (análisis de sentimiento, indicadores técnicos, noticias, precio y volumen, etc) e incluso asignar niveles de confianza a cada nuevo trade que genera un sistema.

¿Cómo se realiza un ensamblado de robots?

Supongamos que diseñamos tres robots diferentes para generar órdenes de compra en el EURUSD. Cada robot es capaz de realizar tres acciones diferentes, decidiendo cuando no tiene operaciones colocadas en mercado si ejecuta una compra o si se mantiene fuera de mercado y decidiendo también, cuando tiene una posición dentro, si ha llegado el momento de cerrarla. O sea, entrar, salir y mantenerse fuera.

Cada uno de los robots tiene lo que se llama una “frontera de decisión” para elegir qué acción tomar, en la imagen vemos como cada uno de los robots elige correcta o incorrectamente la acción a tomar según dónde traza sus fronteras. Cada uno de los robots hace bien su trabajo, pero aun así comete algunos errores. Mediante el ensamblado se combinan las fronteras de decisión de los tres robots mejorando sustancialmente la capacidad de tomar decisiones correctas.

Para generar la nueva frontera algunos algoritmos de ensamblado realizan sucesivos entrenamientos sobre los datos y en cada nueva iteración se hace énfasis (se asigna mucho más peso) a las decisiones que resultaron equivocadas en la anterior, reforzando progresivamente el aprendizaje.

 

figura1
Figura 1. Podemos combinar las fronteras de decisión de diferentes robots de trading mediante un sistema de ensamblado.

Mejores y más listos

Y no solo eso, en ocasiones la detección de un determinado patrón de trading explotable puede ser demasiado complicada para nuestros robots, es decir, el robot por su diseño es matemáticamente incapaz de detectarlo y el patrón con su consecuente buen trade pasará por delante de los ojos de nuestro sistema sin que éste siquiera lo perciba.

 

figura2
Figura 2. Mediante ensamblado podemos generar fronteras de decisión complejas mediante sistemas muy simples.

Por ejemplo, en la parte superior de la figura 2 vemos la forma de la frontera de decisión que tendría que tomar nuestro sistema de trading para detectar un patrón determinado. Es una frontera compleja pero en este caso nuestro sistema solo es capaz de trazar fronteras con forma circular.

Tenemos dos opciones: o bien nuestro sistema engloba el patrón correcto totalmente (buenos trades) a costa de incluir muchísimos casos incorrectos (malos trades) o bien reducimos la cantidad de buenos trades captados minimizando la frontera generada y perdiendo casi la totalidad de oportunidades de trading que este patrón nos ofrecía. En ambos casos estamos ante una mala decisión, frente a este patrón nuestro sistema no da la talla.

Ahora bien, ensamblando diferentes sistemas de este mismo tipo (capaces de dibujar únicamente fronteras de decisión circulares), como se muestra en la parte inferior de la figura 2, podemos generar una nueva frontera con la misma complejidad que el patrón de trading y de esta forma explotarlo de manera óptima.

La diversidad en los robots del ensamblado

Por otra parte, el éxito de un sistema de ensamblado de robots – i.e. la habilidad de corregir los errores individuales de cada miembro del sistema – reside exactamente en la diversidad de los robots que lo componen. Si todos los robots tomasen la misma decisión no sería posible corregir los errores por lo tanto necesitamos que cada robot se equivoque de forma distinta. La idea general es conseguir, mediante la combinación de robots, reducir el error total.

Existen varias formas de aumentar la diversidad del ensamblado, por ejemplo:

  • Si basamos nuestros robots en redes neuronales artificiales (ANN) podríamos configurar la red de cada robot de forma diferente. Por ejemplo, con diferente número de nodos, objetivos de error, etc.
  • Utilizar robots basados en diferentes modelos algorítmicos (redes neuronales artificiales, árboles de decisión, clasificadores de vecinos cercanos, etc).
  • Utilizar diferentes entradas de datos para los robots.

Tipos de ensamblado de robots

Existen varias formas de combinar robots en un ensamblado. La más sencilla es mediante votación, crear un parlamento de robots en la que cada uno emite un voto y tomar la decisión por mayoría simple.

Otro método, uno de los más avanzados, es el stacking (stacked generalization) que consiste en utilizar un modelo de aprendizaje extra para seleccionar la decisión con mayor probabilidad de ser correcta. Anteriormente hablé de cómo utilizar árboles de decisión para tomar estas decisiones con resultados realmente sorprendentes.

Pero, particularmente interesante es el método boosting. Veamos cómo funciona con un ejemplo.

El método Boosting de ensamblado

En el método boosting la decisión final se toma mediante mayoría simple de votos de tres sistemas diferentes. Lo particular del método reside en cómo entrenamos estratégicamente a estos tres sistemas para que consecutivamente se mejore el rendimiento global.

Disponemos de los sistemas s1, s2 y s3. Entrenamos el sistema s1 y a continuación entrenamos al sistema s2 en un subconjunto especial de los datos de s1. En concreto, el subconjunto se compone de una mitad de trades correctamente detectados (trades ganadores) por s1 y de otra mitad de trades incorrectamente detectados (trades perdedores). Finalmente el sistema s3 se entrena en los datos que muestran desacuerdo entre los sistemas s1 y s2.

En la práctica este método de ensamblado da muy buenos resultados aunque todo depende en gran medida de la calidad de la información que aporten los indicadores utilizados.

Una herramienta de potentes aplicaciones

Hemos visto una breve panorámica del alcance de los métodos de ensablado de robots con la que se hace evidente la potencia y cantidad de aplicaciones que pueden tener para nuestro trading automático.

Los elementos fundamentales del diseño de sistemas como la diversificación para reducir el drawdown, la reoptimización periódica para mantener el edge, la detección de tendencias, ciclos y regímenes de mercado para saber qué tipo de sistemas utilizar según el momento, etc. Pueden verse ahora bajo la luz de esta nueva herramienta.

Revisitando estos elementos clave y aplicando un poco de ingenio y la nueva tecnología de ensamblado de robots, podemos potenciar enormemente nuestros métodos de diseño de sistemas y por tanto nuestra ventaja operativa en el mercado