Algoritmos Genéticos, introducción

Dentro de las herramientas que vamos a utilizar para optimizar modelos de gestión automatizada están los algoritmos genéticos. El funcionamiento es bastante simple, no por ello su puesta en práctica, son programas de complejidad media que no se pueden hacer con una hoja excel o una macro.

Supongamos que queremos buscar unos parámetros que nos ayude a generar una cartera de acciones a partir de cuatro variables como el siguiente ejemplo:

 

Resultado = (Nº Acciones, Volatilidad máxima acción, Drawdown, Rentabilidad año)

Por ejemplo: 

 

Queremos optimizar los siguientes parámetros de nuestro modelo, que crea una cartera a partir del número de acciones, la volatilidad máxima de la acción, el drawdown y la rentabilidad mínima. Como se trata de una función no lineal solo se puede optimizar dando valores aleatorios a cada valor o bien mediante algoritmos genéticos que es una solución elegante a la vez de rápida.

Para ello a cada variable le asignamos un número binario de 9 cifras que equivale a 512 posibilidades, después mediante programación podemos transformar cada uno con una función pudiendo tener valores negativos.

1 Paso

Generamos 1,000 números binarios aleatorios de de 38 dígitos en formato binario (0,1)

Calculamos el Resultado para cada uno

2 Paso

Nos quedamos con el 20% mejor de todos los Resultados, y generamos un nuevo número binario a partir de dos números, para ello aleatoriamente los cruzamos

Generamos 100 números más aleatorios y vemos los resultados.

Generamos mutaciones, es decir cambiamos algún 0 por un 1 o al revés en un porcentaje bajo.

 

3 Paso

Generamos un bucle muchas veces con esos números hasta que la solución no converja.

En el siguiente ejemplo se muestran los pasos, en el futuro pondré un programa funcionando, programado en C#

 

 

Recursos:

http://eddyalfaro.galeon.com/geneticos.html

https://github.com/grantmwilliams/standardGeneticAlgorithm/tree/master/Binary%20Genetic%20Algorithm