Sistemas de Trading con algoritmos genéticos para operar en bolsa

Tiempo de lectura: 9 minute(s)

El uso de sitemas de trading con algoritmos genéticos, para operar en bolsa, es un campo en el que el trading lleva trabajando desde hace décadas, teniendo todavía por delante mucho que recorrer. Veremos sus fundamentos y el porqué de su funcionamiento en el trading.

La tecnología de algoritmos genéticos se ha utilizado, con gran éxito, para la solución de problemas complejos en la industria como por ejemplo: optimización de carga de contenedores marítimos, estructuras moleculares, infraestructuras de redes de comunicaciones móviles, construcción de horarios en grandes universidades evitando conflictos de clases, etc. En resumen, los algoritmos genéticos son muy buenos en la búsqueda de soluciones en problemas complejos donde el número de combinaciones posibles es tan grande que es imposible explorar todas ellas.

Pues precisamente el diseño de un sistema de Trading es un problema complejo donde el número de combinaciones posibles de reglas e información de indicadores es tan grande que no es posible evaluar todas las combinaciones. Los algoritmos genéticos se adaptan perfectamente al diseño de sistemas de Trading para encontrar las reglas que dan mejores resultados en los mercados financieros y para operar en bolsa.

En este artículo veremos los fundamentos de los algoritmos genéticos, como funcionan, y un ejemplo de cómo se aplican para encontrar las mejores reglas de Trading.

 

Los Algoritmos Genéticos

Son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización. Están basados en el proceso genético de los organismos vivos. A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con los principios de la selección natural y la supervivencia de los más fuertes, postulados por Darwin (1859). Por imitación, de este proceso, los Algoritmos Genéticos son capaces de ir creando soluciones para problemas del mundo real. La evolución de dichas soluciones hacia valores óptimos del problema depende en buena medida de una adecuada codificación de las mismas.

En la naturaleza, los individuos de una población compiten entre sí en la búsqueda de recursos tales como comida, agua y refugio. Incluso los miembros de una misma especie compiten, a menudo, en la búsqueda de un compañero. Aquellos individuos que tienen más éxito en sobrevivir y en atraer compañeros tienen mayor probabilidad de generar un gran número de descendientes. Por el contrario, individuos poco dotados producirán un menor número de descendientes. Esto significa que los genes de los individuos mejor adaptados se propagarán en sucesivas generaciones hacia un número de individuos creciente. La combinación de buenas características provenientes de diferentes ancestros, puede a veces producir descendientes "superindividuos", cuya adaptación es mucho mayor que la de cualquiera de sus ancestros. De esta manera, las especies evolucionan logrando unas características cada vez mejor adaptadas al entorno en el que viven.

 

 

Los Algoritmos Genéticos

Usan una analogía directa con el comportamiento natural. Trabajan con una población de individuos, cada uno de los cuales representa una solución factible a un problema dado. A cada individuo se le asigna un valor o puntuación, relacionado con la bondad de dicha solución. En la naturaleza esto equivaldría al grado de efectividad de un organismo para competir por unos determinados recursos. Cuanto mayor sea la adaptación de un individuo al problema, mayor será la probabilidad de que el mismo sea seleccionado para reproducirse, cruzando su material genético con otro individuo seleccionado de igual forma. Este cruce producirá nuevos individuos descendientes de los anteriores los cuales comparten algunas de las características de sus padres. Cuanto menor sea la adaptación de un individuo, menor será la probabilidad de que dicho individuo sea seleccionado para la reproducción y, por tanto, de que su material genético se propague en sucesivas generaciones.

El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnica robusta, y pueden tratar con éxito una gran variedad de problemas provenientes de diferentes áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Si bien no se garantiza que el Algoritmo Genético encuentre la solución optima del problema, existe evidencia empírica de que se encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos de optimización combinatoria.

Ahora vamos a ver cómo funcionan los algoritmos genéticos. Por un lado, tenemos el conjunto de soluciones de un problema, llamado fenotipo y el conjunto de individuos de una población natural, codificando la información de cada solución en una cadena, generalmente binaria, llamada cromosoma. Los símbolos que forman la cadena se denominan genes. Cuando la representación de los cromosomas se hace con cadenas de dígitos binarios se le conoce como genotipo. Los cromosomas evolucionan a través de iteraciones, llamadas generaciones. En cada generación, los cromosomas son evaluados usando alguna medida de aptitud. Las siguientes generaciones (nuevos cromosomas), se obtienen a partir de  operadores genéticos, de sobrecruzamiento y de mutación.

Un algoritmo genético puede presentar diversas variaciones, dependiendo de cómo se aplican los operadores genéticos (cruzamiento, mutación), de cómo se realiza la selección y de cómo se decide el reemplazo de los individuos para formar la nueva población.

Figura 1. Algoritmo genético i: inicialización, f(X): evaluación, ?: condición de término, Se: selección, Cr: cruzamiento, Mu: mutación, Re: reemplazo, X*: mejor solución.

 

En general, el pseudocódigo consiste de los siguientes pasos:

  • Inicialización: Se genera aleatoriamente la población inicial, que está constituida por un conjunto de cromosomas los cuales representan las posibles soluciones del problema. En caso de no hacerlo aleatoriamente, es importante garantizar que dentro de la población inicial, se tenga la diversidad estructural de estas soluciones para tener una representación de la mayor parte de la población posible o al menos evitar la convergencia prematura.
  • Evaluación: A cada uno de los cromosomas de esta población se aplicará la función de aptitud para saber qué tan "buena" es la solución que se está codificando.
  • Condición de término: El AG se deberá detener cuando se alcance la solución óptima, pero ésta generalmente se desconoce, por lo que se deben utilizar otros criterios de detención. Normalmente se usan dos criterios: correr el AG un número máximo de iteraciones (generaciones) o detenerlo cuando no haya cambios en la población. Mientras no se cumpla la condición de término se hace lo siguiente:
    • Selección: Después de saber la aptitud de cada cromosoma se procede a elegir los cromosomas que serán cruzados en la siguiente generación. Los cromosomas con mejor aptitud tienen mayor probabilidad de ser seleccionados.
    • Recombinación o Cruzamiento: La recombinación es el principal operador genético, representa la reproducción sexual, opera sobre dos cromosomas a la vez para generar dos descendientes donde se combinan las características de ambos cromosomas padres.
    • Mutación: modifica al azar parte del cromosoma de los individuos, y permite alcanzar zonas del espacio de búsqueda que no estaban cubiertas por los individuos de la población actual.
    • Reemplazo: una vez aplicados los operadores genéticos, se seleccionan los mejores individuos para conformar la población de la generación siguiente.

De esta forma se consiguen los mejores individuos que llevan en sus cromosomas las mejores combinaciones para el entorno en el que se desarrollan.

Ahora vamos a ver un ejemplo de cómo se aplican estos algoritmos para diseñar las reglas de un sistema de Trading. Consideremos que estamos diseñando un sistema que opera (sólo en largo para simplificar el ejemplo) en un mercado de futuros en un gráfico de barras. Estas barras pueden ser, por ejemplo, de cinco minutos, veinte minutos o incluso un día. Una regla de Trading la modelamos como una función que nos devuelve en cada barra dos posibles valores "entrar en mercado" o "salir del mercado". En cada barra se evalúa esta función. Si en la barra actual nos dice, por ejemplo, "entrar en mercado" y ya estábamos comprados, entones no se hace nada porque se mantiene el estado. Si en la barra anterior estábamos fuera del mercado, entonces se realiza la compra porque hay cambio de estado.

Las reglas de trading las representamos mediante estructuras de árbol. Por ejemplo, en la figura 2 podemos observar la regla de trading que "entra en mercado" cuando el precio de la barra actual es mayor que la media de las últimas 50 barras. La función "average" computa la media de n barras en el histórico. El parámetro de la función se especifica mediante el 50 que cuelga como nodo hijo en el árbol. La función "price" nos devuelve el precio de cierre de la barra actual. Por último, podemos observar que el operador relacional "<" especifica la condición de que la media de 50 barras sea menor que el precio de la barra actual, o que el precio de la barra actual sea mayor que la media de 50 barras, según el sentido de lectura. En la figura 3 podemos observar otra regla de trading que "entra en mercado" cuando el precio de la barra actual es mayor que el precio máximo de las últimas 30 barras. La función "maximum" nos da el precio máximo de las últimas "n" barras, en este caso de las últimas 30 barras.

Ahora vamos a combinar estas dos reglas de trading para obtener una más compleja que "entra en mercado" cuando se cumplen las dos condiciones a la vez. Esto se consigue mediante un árbol que une las dos reglas de trading mediante el operador relacional "and". El resultado podemos verlo en la figura 4.

Ahora consideremos que tenemos dos reglas padre que vamos a utilizar para obtener una nueva generación. En la figura 5 vemos la regla padre que usamos en la figura 4 y otra nueva regla padre que "entra en mercado" cuando el máximo de 30 barras es mayor que la media de 28 barras y además el precio de la barra actual es mayor que el mínimo de las últimas 6 barras. Ahora el algoritmo genético selecciona de forma aleatoria un subárbol de cada regla padre. Esta selección la podemos ver en la figura 5 mediante un círculo en cada regla padre. A continuación, el algoritmo sustituye el subárbol seleccionado en la regla padre 1 por el subárbol seleccionado en la regla padre 2 para así obtener una nueva generación. Cada nueva generación es evaluada para medir cómo de buena es y sólo las mejores generaciones obtienen descendientes. En este proceso también se incluyen mutaciones al obtener las nuevas generaciones como, por ejemplo, ligeras variaciones de los parámetros de las funciones "máximum" o "mínimum" y así obtener diversidad de individuos.

Realizando este proceso con miles de generaciones, nos permite encontrar las reglas de trading que consiguen mejores resultado en los mercados. Este mismo proceso nos permite además que el sistema de trading se adapte de forma automática y natural a los cambios en su entorno y va evolucionando para sobrevivir en los mercados.

El instituto de investigación de las "nuevas tecnologías aplicadas al trading" de la Universidad de Málaga lleva varios años de estudio y ha conseguido resultados muy relevantes. Los resultados completos de esta investigación serán publicados, una vez esté concluida, en una revista científica especializada en la investigación de algoritmos genéticos de reconocido prestigio internacional. Así mismo un resumen de estos resultados será también publicado en Hispatrading Magazine.

Figura 2. Representación de regla de trading como estructura de Árbol. Si el precio (price) de la última barra es mayor que la media (average) de las últimas 50 entonces "entra en mercado"

 

Figura 3. Si el precio (price) de la última barra es mayor que el máximo (maximum) de 30 barras entonces "entra en mercado"

 

Figura 4. Combinación de dos reglas de trading para formar otra más compleja con el operador booleano "and". Esta regla "entra en mercado" cada regla padre.  A A contincite un covalo media de 28 barras  otra nueva regla padre que "a barra actual sera  si se cumplen las dos reglas de trading que la componen a la vez, correspondientes a las reglas de las figuras 3 y 4.

 

Figura 5. Formación de una nueva generación a partir de dos individuos (padres) de la población.

Este material es una comunicación publicitaria tal y como se entiende en el artículo 24.3 de la Directiva 2014/65/UE (MiFID II). La presente comunicación publicitaria no es una recomendación de inversión o información que recomiende o sugiera una estrategia de inversión en el sentido del Reglamento (EU) Nº 596/2014 sobre el abuso de mercado y el Reglamento Delegado (EU) 2016/958 por el que se completa el Reglamento (EU) nº 596/2014, ni se incluye en el ámbito del asesoramiento en materia de inversión recogido en la Ley de los Mercados de Valores y de los Servicios de Inversión (artículo 125.1 g). La presente comunicación publicitaria se ha preparado con la mayor diligencia, transparencia y objetividad posible, presentando los hechos conocidos por el autor en el momento de su creación y está exento de cualquier elemento de análisis. Esta comunicación publicitaria se ha preparado sin tener en cuenta las necesidades del cliente ni su situación financiera individual, y no representa ninguna estrategia de inversión ni recomendación. En caso de que la comunicación publicitaria contenga información sobre el rendimiento o comportamiento del instrumento financiero al que se refiere, esto no constituye ninguna garantía o previsión de resultados futuros. El rendimiento pasado no es necesariamente indicativo de resultados futuros y cualquier persona que actúe sobre esta información lo hace bajo su propio riesgo. Los CFDs son instrumentos complejos y están asociados a un riesgo elevado de perder dinero rápidamente debido al apalancamiento. El 76% de las cuentas de inversores minoristas pierden dinero en la negociación de CFDs con este proveedor. Debe considerar si comprende el funcionamiento de los CFDs y si puede permitirse asumir un riesgo elevado de perder su dinero.

Xtb logo

Únete a más de 1.000.000 Clientes de todo el mundo

XTB ofrece Acciones, ETFs, Acciones Fraccionadas y Derivados (CFDs). Los CFDs son instrumentos complejos y están asociados a un riesgo elevado de perder dinero rápidamente debido al apalancamiento. El 76% de las cuentas de inversores minoristas pierden dinero en la negociación de CFDs con este proveedor. Debe considerar si comprende el funcionamiento de los CFDs y si puede permitirse asumir un riesgo elevado de perder su dinero.  
XTB ofrece Acciones, ETFs, Acciones Fraccionadas y Derivados (CFDs). Los CFDs son instrumentos complejos y están asociados a un riesgo elevado de perder dinero rápidamente debido al apalancamiento. El 76% de las cuentas de inversores minoristas pierden dinero en la negociación de CFDs con este proveedor. Debe considerar si comprende el funcionamiento de los CFDs y si puede permitirse asumir un riesgo elevado de perder su dinero. 

Utilizamos Cookies

Al hacer clic en "Aceptar todas", aceptas el almacenamiento de cookies en tu dispositivo para mejorar la navegación en la página web, analizar el uso de la página web, y ayudar en nuestras estrategias de márketing.

Este grupo contiene cookies que son necesarias para que funcione nuestra página web. Forman parte de las funcionalidades como las preferencias de idioma, distribución de tráfico o mantener abierta la sesión del usario. No se pueden deshabilitar.

Nombre de la cookie
Descripción
SERVERID
userBranchSymbol Fecha de caducidad: 2 de marzo de 2024
adobe_unique_id Fecha de caducidad: 1 de marzo de 2025
test_cookie Fecha de caducidad: 1 de febrero de 2023
SESSID Fecha de caducidad: 2 de marzo de 2024
__hssc Fecha de caducidad: 1 de febrero de 2023
__cf_bm Fecha de caducidad: 1 de febrero de 2023
intercom-id-iojaybix Fecha de caducidad: 26 de noviembre de 2024
intercom-session-iojaybix Fecha de caducidad: 8 de marzo de 2024

Utilizamos herramientas que nos dejan analizar el uso de nuestra página web. Estos datos nos permiten mejorar la experiencia del usuario en nuestra página web.

Nombre de la cookie
Descripción
_gid Fecha de caducidad: 2 de febrero de 2023
_gaexp Fecha de caducidad: 4 de mayo de 2023
_gat_UA-16408788-1 Fecha de caducidad: 1 de febrero de 2023
_gat_UA-121192761-1 Fecha de caducidad: 1 de febrero de 2023
_gcl_au Fecha de caducidad: 2 de mayo de 2023
_ga_CBPL72L2EC Fecha de caducidad: 31 de enero de 2025
_ga Fecha de caducidad: 31 de enero de 2025
AnalyticsSyncHistory Fecha de caducidad: 3 de marzo de 2023
__hstc Fecha de caducidad: 31 de julio de 2023
__hssrc

Este grupo de cookies se utiliza para mostrarte anuncios de temas en los que estás interesado. También nos permite monitorizar nuestras actividades de márketing, y nos ayuda a medir la efectividad de nuestros anuncios.

Nombre de la cookie
Descripción
_omappvp Fecha de caducidad: 13 de enero de 2034
_omappvs Fecha de caducidad: 1 de febrero de 2023
_fbp Fecha de caducidad: 2 de mayo de 2023
fr Fecha de caducidad: 7 de diciembre de 2022
lang
_ttp Fecha de caducidad: 26 de febrero de 2024
_tt_enable_cookie Fecha de caducidad: 26 de febrero de 2024
_ttp Fecha de caducidad: 26 de febrero de 2024
hubspotutk Fecha de caducidad: 31 de julio de 2023
omSeen-pyfa0xtqk5j72jwykxzy Fecha de caducidad: 8 de octubre de 2022

Las cookies de este grupo almacenan las preferencias que elijas mientras utilizas la página web, para que ya estén establecidas cuando vuelvas a visitar la página tiempo después.

Nombre de la cookie
Descripción
UserMatchHistory Fecha de caducidad: 3 de marzo de 2023
bcookie Fecha de caducidad: 1 de febrero de 2024
lidc Fecha de caducidad: 2 de febrero de 2023
lang
bscookie Fecha de caducidad: 1 de febrero de 2024
li_gc Fecha de caducidad: 31 de julio de 2023

Esta página utiliza cookies. Las cookies se almacenan en tu navegador y las utilizan la mayoría de las páginas web para ayudarte a personalizar tu experiencia web. Para obtener más información vea nuestra Política de Privacidad. Puedes gestionar las cookies pinchando en "Configuración". Al hacer clic en "Aceptar todas", das tu consentimiento para todas nuestras cookies.

Cambiar región e idioma
País de residencia
Idioma