DOI: https://doi.org/10.18601/17941113.n15.05

Optimización de estrategias de trading con promedios móviles para futuros de petróleo mediante algoritmos genéticos

Optimization of trading strategies with moving averages for oil futures using genetic algorithms

Arbey Aragón Bohorquez*
Carlos Armando Mejía Vega**
Carlos Andrés Zapata Quimbayo***

* Algocodex. Ingeniero mecatrónico. Universidad Nacional de Colombia, Bogotá (Colombia). [aragonb@unal.edu.co].
** Magíster en Finanzas. Docente-Investigador, Universidad Externado de Colombia, Bogotá (Colombia). [carlos.mejia@uexternado.edu.co].
*** Magíster en Finanzas. Docente-Investigador, Universidad Externado de Colombia, Bogotá (Colombia). [carlosa.zapata@uexternado.edu.co].

Artículo recibido el 1 de noviembre de 2018. Aceptado el 1 de diciembre de 2018.

Para citar este artículo: Aragón, A., Mejía, C. y Zapata, C. (2018). Optimización de estrategias de trading con promedios móviles para futuros de petróleo mediante algoritmos genéticos. ODEON, 15, 139-160.


Resumen

La implementación de estrategias de trading a través de herramientas computacionales e inteligencia artificial, entre ellas las redes neuronales artificiales (RNA) y los algoritmos genéticos (AG), ha presentado avances importantes en los últimos años. En este trabajo se implementó un AG para optimizar una estrategia de trading basada en dos promedios móviles en el mercado intradiario de futuros de petróleo crudo WTL La función objetivo es el retorno global de la inversión. En el documento se presenta la metodología y el diseño de esta estrategia de inversión con resultados consistentes incluso fuera de muestra.

Palabras clave: algoritmos genéticos, promedios móviles, futuros de petróleo.

Clasificación JEL: C63, G11, G15.


Abstract

The implementation of trading strategies through computational tools and artificial intelligence, such as artificial neural networks (ARN) and genetic algorithms (AG), have presented important advances in the last years, In this paper it is implemented a ag for the optimization of a trading strategy with two moving averages in the inter-day market of crude oil futures. The objective function is the global return of the investment. The document presents the methodology and the design of this investment strategy with consistent results even with out-of-sample data.

Key words: genetic algorithms, moving average, oil futures.

JEL classification: C63, G11, G15.


Introducción

El diseño de estrategias de trading es un campo de mucha preocupación en los mercados bursátiles. Tradicionalmente, una de las metodologías que los traders e inversionistas han implementado para la toma de sus decisiones de inversión es el análisis técnico1, el cual se basa en el pronóstico de las tendencias de los precios con la ayuda de reglas determinadas a priori (Potvin, Sorianoa y Valléeb, 2004; Wang et al., 2014). Para ello, el análisis técnico utiliza la información histórica de los precios, así como el volumen de negociación y el interés abierto (Murphy, 1999).

Este enfoque contradice la hipótesis del mercado eficiente (HME) propuesta por Fama (1970), la cual, en su forma débil, afirma que los precios de los activos negociados reflejan toda la información (pasada) públicamente disponible y, por ello, los precios no son predecibles. El argumento central de esta hipótesis está fundamentado en que el surgimiento de la nueva información es de carácter aleatorio, por tanto, los precios también tendrán estas características. Como resultado, Fama (1970) muestra que no es posible obtener consistentemente ganancias a largo plazo. Esta hipótesis fue previamente sugerida por Alexander (1964) y Fama y Blume (1966).

En contraste, se han desarrollado trabajos empíricos con el propósito de encontrar evidencia significativa de que los precios siguen un patrón de comportamiento y, por tanto, los rendimientos de los activos financieros son predecibles en algún grado (ver Lo y MacKinlay, 1990; Conrad y Kaul, 1998; DeBondt y Thaler, 1985; Fama y French, 1992). En este campo se han desarrollado modelos que, a partir de la información disponible, buscan anticipar el comportamiento de los precios. La construcción de estos modelos ha estado acompañada principalmente de indicadores construidos a partir del análisis técnico.

En los mercados de futuros, especialmente en el mercado de futuros de petróleo, ha predominado la definición de estas reglas de negociación. Una de ellas corresponde a la estrategia de promedios (o medias) móviles. Esta estrategia ha sido ampliamente utilizada debido a su eficacia en la descripción de las tendencia de los precios y a su facilidad para implementarla (Boboc y Dinica, 2013; Wang et al., 2016; Liu, An y Wang, 2015). De hecho, gran parte de la literatura se ha enfocado en implementar este tipo de estrategias para datos históricos en diferentes escalas de tiempo2, como horas (Cuaresma et al., 2004; Muñoz et al., 2013), días (Wang et al., 2012), semanas (Ayadi et al., 2009; Davey, 2010) o, incluso, en meses. Aunque este mercado presenta alta liquidez, aún no se ha explotado la implementación de este tipo de estrategias en el mercado intradiario en escalas de tiempo más pequeñas, por ejemplo, minutos. Asimismo, no se han implementado dichas estrategias en otros mercados de derivados sobre petróleo.

Adicionalmente, se han desarrollado estudios que intentan refutar la HME mediante el uso de diferentes técnicas basadas en desarrollos computacionales y la inteligencia artificial (Straßburg, González y Alexandrov, 2012), entre ellos el aprendizaje de máquina. En este campo se encuentran las redes neuronales artificiales (RNA) y los algoritmos genéticos (AG). Estas técnicas se basan en el diseño de algoritmos que buscan detectar ciertos patrones de comportamientos a partir de información histórica. Una RNA permite, de forma intuitiva, detectar patrones mediante el uso de algoritmos de aprendizaje (Trippi y Turban, 1992; Matilla y Argello, 2005). Por su parte, un AG, mediante el uso de procesos de selección, cruce y mutación, proveen soluciones óptimas al simular la selección natural y la evolución de poblaciones definidas (Holland, 1975; Esfahanipour y Mousavi, 2011).

Estos desarrollos han generado un paradigma para el diseño de estrategias de negociación, donde las reglas, al igual que la toma de decisiones de inversión, se realizan automáticamente. En este campo, Allen y Karjalainen (1999) y Esfahanipour y Mousavi (2011) encontraron que los AG constituyen un método confiable para elegir las mejores reglas de negociación. Los AG se han utilizado ampliamente para resolver problemas complejos en los que es difícil realizar cálculos precisos (Wang et al., 2014). En los mercados financiero y bursátil, los AGs se han utilizado principalmente para la construcción de estrategias automáticas en los campos de portafolio óptimo (Kabundi y Mwamba, 2012), el pronóstico de precios (Cheng, Chen y Wei, 2010; Metghalchi, Marucci y Chang, 2012; Deng et al., 2015), el diseño y la modelación de reglas de negociación (Li y Tsang, 1999; Allen y Karjalainen, 1999; Lin et al., 2004; Routledge, 2001; Potvin, Sorianoa y Valléeb, 2004; Roberts, 2005; Esfahanipour y Mousavi, 2011; Wiesinger et al., 2013; Qu y Li, 2014; Wang et al., 2014; Dong y Huang, 2014; Liu et al., 2015; Wang et al., 2016), entre otros.

El propósito de este documento es demostrar que los AG pueden ser implementados para generar automáticamente reglas de negociación (compra y venta) apropiadas a nivel intradiario (por ejemplo, minutos) en el mercado de futuros de petróleo en su referencia WTI (primera posición genérica). Por lo tanto, se propone una estrategia para generar reglas dinámicas basadas en la estrategia de promedios móviles "óptimos".

1. Algoritmos genéticos (AG)

Los AG constituyen una técnica de búsqueda, adaptación y optimización basada en los principios de la evolución natural desarrollada por Holland (1975). Además, representan un tipo de algoritmos de búsqueda heurística comúnmente utilizados para encontrar el óptimo global de una función de evaluación en complejos espacios multidimensionales (Tsang y Lajbcygier, 2002). De esta forma, se define una función de optimización donde el óptimo global de la función (es decir, mínimo o máximo) no puede establecerse analíticamente (ver Lin et al. 2004, para más detalles).

Los AG están inspirados en la evolución de los seres vivos y tienen como propósito la búsqueda de la mejor combinación de características de los individuos que permiten su mejor adaptación a un determinado entorno. A diferencia de los métodos clásicos de optimización, estos no parten de la definición de una solución, sino de un conjunto de soluciones conocidas como población inicial. Así, los AG reciben como entrada posibles soluciones del problema que se trate y, mediante el cruce o la mutación de los individuos mejor adaptados a este, se generan descendientes de forma iterativa hasta alcanzar una población con características óptimas. La figura 1 permite visualizar este ciclo de generación iterativa de poblaciones.

En principio se genera una población de individuos (aleatoria) denominada población inicial, en la que cada individuo representa una solución factible al problema previamente definido. Una vez se construye la población inicial, se procede a la aplicación de los operadores genéticos de selección, cruce y mutación de forma iterativa. Los individuos mejor adaptados al entorno en el que viven son los que tendrán mayor probabilidad de tener descendencia. Cada individuo presenta un grado de adaptación, entre mayor sea su adaptación mayor será la probabilidad de reproducción al cruzar su material genético con otro individuo seleccionado, ya que estos poseen características que los hacen sobresalir del resto. Este cruce producirá nuevos individuos (descendientes de los anteriores). De esta forma, se crean nuevas poblaciones de soluciones factibles, las cuales van reemplazando a las anteriores pero de mejor calidad, es decir, con mejores características (Holland, 1975). Como resultado, el AG genera poblaciones que convergen hacia una solución óptima del problema.

2. Metodología

El diseño de reglas de negociación, desde un enfoque tradicional, requiere la definición de los parámetros a priori basados en criterios subjetivos (Allen y Karjalainen, 1999). Asimismo, el diseño de un AG evita gran parte de la arbitrariedad involucrada en la elección tanto de los parámetros como de las reglas a utilizar. En este trabajo se utilizan dos promedios móviles con el objetivo de maximizar el rendimiento que puede generar una estrategia de inversión en el mercado intradiario de los futuros de petróleo WTI. La estrategia de promedios móviles se utiliza para modelar tendencias potenciales de los precios a corto o largo plazo (Murphy, 1999).

2.1. Datos

Para el diseño de la estrategia se construye una muestra con los precios de cierre de los futuros de petróleo WTI (en su primera posición genérica) para el periodo comprendido entre el 1 de agosto de 2017 y el 31 de julio de 2018. La información se obtiene de Bloomberg en un espaciado de 15 minutos. La figura 2 muestra el comportamiento histórico de los precios del petróleo WTI durante el periodo total de muestra.

El manejo de los datos de la muestra total se realiza mediante la construcción de 10 ventanas móviles (set de datos) donde son separados los datos de entrenamiento y de test para cada set, como muestra la tabla 1.

Los datos de cada set contienen información para un periodo de 3 meses, los dos meses iniciales de cada uno representan los datos de entrenamiento utilizados para la construcción de los promedios móviles óptimos, mientras el último mes corresponde a la información de testeo, usado para la evaluación de la estrategia. Cada set de datos es utilizado en un experimento independiente, luego para cada experimento posterior se mueve la ventana un mes adelante hasta llegar al último mes indicado en la muestra.

2.2. Diseño de la estrategia

El análisis técnico es una metodología para la toma de decisiones en los mercados financiero y bursátil, dado que ayuda a identificar las tendencias de los precios mediante el uso de gráficos e indicadores. Entre estos indicadores se encuentra el promedio móvil, uno de los más populares y ampliamente utilizados en la optimización de estrategias de trading, dada la facilidad en su implementación (Murphy, 1999; Glabadanidis, 2015).

2.2.1. Estrategia de promedios móviles

El promedio móvil es una técnica de suavizamiento de la variación del precio y puede obtenerse calculando el valor promedio de los precios pasados n intervalos (minutos, horas, días, etc.). Los promedios móviles se pueden categorizar en diferentes tipos según el método de cálculo utilizado para obtener el precio promedio. Se identifican seis tipos de promedios móviles que son generalmente utilizados en el análisis técnico (Brooks, 2006): promedio móvil simple (SMA), promedio móvil ponderado (MMA), promedio móvil exponencial (EMA), promedio móvil adaptativo (AMA), promedio móvil de precio típico (TPMA) y promedio móvil triangular (TMA). Dada la simplicidad de cálculo del promedio móvil simple (SMA), este es el que se utiliza en este estudio.

La ecuación 1 muestra la forma de calcular este indicador.

Mediante este indicador, la estrategia de trading más simple corresponde al cruce de dos promedios móviles de diferentes longitudes: I) una de corto plazo y, II) una de largo plazo. La figura 3 representa el funcionamiento de esta estrategia.

El cruce entre estos dos promedios móviles genera una señal (compra o venta): si el precio promedio de corto plazo (m1) cruza el precio promedio de largo plazo (m2) hacia arriba, entonces se toma una posición de compra (posición larga). En caso contrario, cuando se presenta el cruce hacia abajo, se toma una posición de venta (posición corta). De igual forma, los cruces mencionados atrás se toman como referente para el cierre de las operaciones realizadas. En este caso, si se ha ejecutado previamente una posición larga, y m1 cruza m2 hacia abajo, se cierra la operación. Esta misma lógica aplica para la posición corta.

2.2.2. Función objetivo: Fitness

El cálculo del fitness se obtiene a partir del retorno global de la inversión siguiendo la ecuación:

Donde: I0 es la inversión inicial, IF es la inversión final. Además, el resultado de la inversión (GTotal) se estima como

Donde: N representa el número total de operaciones, q es la cantidad de contratos adquiridos, Pi es el precio del activo cuando se realiza alguna operación de apertura (corto o largo), Pi+1 es el precio del activo cuando se cierra dicha posición; este rebalanceo se realiza solo si hay cierre de posición. Dado que el algoritmo se tiene que evaluar durante el tiempo que proveen los datos, siempre se realiza una operación de cierre de posición, para poder calcular los retornos totales.

2.3. Estructura del algoritmo genético - AG

El AG desarrollado utiliza los operadores de: I) selección, II) cruce y III) mutación para cada individuo y de la población. Cada individuo representa la estrategia (los dos promedios móviles), mientras la población corresponde a todas las posibles estrategias. Por su parte, cada promedio móvil se identifica como un gen de cada individuo. A continuación se explican los procesos de cruce y mutación.

2.3.1. Cruce de individuos

El cruce de dos individuos se entenderá como el intercambio de uno de los promedios (gen) de uno de los individuos por el de otro3. Los promedios móviles iniciales se identifican como los padres (P1 y P2), y los resultados de los cruces se identifican como los hijos (H1 y H2). Para determinar cuál de los promedios de cada uno de los padres se va a intercambiar se aplica una distribución Bernoulli con probabilidad del 0,5 en ambos casos. Como resultado se obtienen los dos hijos, donde cada uno conserva la mitad del material genético de su progenitor original4. La figura 4 describe el proceso de cruce.

2.3.2. Mutación de un solo individuo

La mutación se entiende como el cambio de uno de los promedios móviles que hace parte de cada individuo5. Al igual que en el caso anterior, el individuo con los promedios móviles iniciales se identifica como el padre y el individuo con el nuevo promedio se identifica como el hijo. El proceso para saber cuál de los dos promedios se escoge para mutarlo se realiza de manera aleatoria siguiendo una distribución de Bernoulli con probabilidad del 0,5. Una vez se ha escogido el promedio que se va a mutar, se identifican dos posibles métodos para realizar dicho cambio.

La figura 5 describe el proceso de mutación.

2.3.3. Implementación del cruce y mutación para la población

En el primer paso del AG se crea la población inicial, la cual corresponde a 60 individuos. Posteriormente, de forma iterativa se van realizando las operaciones de cruce y mutación, para un número definido de iteraciones (1000)7. El proceso de cruce requiere la identificación de dos padres (P1 y P2). Esta selección se hace por medio de una distribución uniforme discreta entre 0 y 60 (tamaño de la población). Es importante señalar que este proceso debe asegurar que los padres seleccionados no tengan el mismo material genético (promedios iguales). Una vez estos son identificados se realizan los cruces de forma iterativa hasta alcanzar un 50 % de la población original8, de tal forma que siempre se mantenga el número de individuos de la población (60).

Al igual que con los cruces de la población, la selección de los individuos por mutar se realiza siguiendo una distribución uniforme discreta con parámetros 0 y 60. El proceso se lleva a cabo de forma iterativa, donde los individuos mutados (H1 y H2 mutados) van representando la nueva población y garantizan el tamaño original de esta (60). La figura 6 presenta todos los pasos del proceso iterativo para la población.

A partir de los cruces y las mutaciones se van generando nuevos individuos donde se conservan los cinco mejores de la población anterior, es decir, aquellos que alcanzaron los mayores rendimientos (mejor Fitness). De igual, para cada iteración se aplica el criterio elitista donde al final del proceso solo se toman los mejores individuos de la población actual.

Finalmente, la condición de parada se cumple cuando el algoritmo ha iterado sobre todas las generaciones establecidas para la evolución del AG. Los individuos de mejor desempeño (los dos promedios móviles óptimos) se utilizan para implementar la estrategia de inversión.

3. Resultados

El algoritmo (AG) fue implementado usando los lenguajes de programación Python y Go. El primero se utilizó con el propósito de optimizar los dos promedios móvilespara cada set de datos de entrenamiento, mientras Go fue utilizado para implementar la estrategia óptima en los periodos de evaluación (de test).

Para cada set de datos de entrenamiento, el algoritmo genético se ejecutó de forma iterativa buscando confirmar el mejor individuo para cada población. De igual forma, con estos promedios móviles (corto y largo) se implementó la estrategia de inversión. Para cada set de datos (entrenamiento y test) se muestran los promedios móviles de mejor resultado, es decir, de mayor rendimiento porcentual. La tabla 2 muestra los resultados obtenidos.

Como se observa en la tabla 2, en los 10 set de entrenamiento se encuentra un rendimiento promedio del 11,83 %, el cual, para un periodo de dos meses, representa un resultado favorable. Por su parte, en 7 de los 10 set de datos de la muestra total el AG alcanzó un resultado positivo fuera de muestra que corresponde en promedio al 1,07 %, como resultado de la evaluación durante el mes de test para todas las ventanas móviles. De igual forma, se puede observar que en los set de datos de test, salvo en los set 1, 3 y 9 cuyos rendimientos resultaron negativos, a un 95 % de confianza los rendimientos difícilmente descenderían por debajo de un (-1 %)9.

A continuación se presentan los resultados de evaluación de desempeño de la estrategia de inversión en los distintos set de datos para 2.000 contratos de petróleo crudo WTI (futuros). Como ejemplo se evalúa el desempeño de una inversión de 2 millones (USD) tomando los set de datos 7 (figura 7) y 8 (figura 8), los cuales presentan el mejor rendimiento mensual de la muestra total.

Los resultados anteriores muestran que los AG permiten estructurar estrategias de inversión consistentes, incluso para información fuera de muestra.

Conclusiones

La implementación de algoritmos genéticos para el diseño de estrategias de trading en los mercados de futuros de petróleo, con frecuencias intradiarias, se constituye en un campo de investigación relativamente reciente dentro del estudio de los mercados de commodities. Pese a lo anterior, diversos trabajos han venido presentando resultados interesantes y prometedores que llevan a pensar en los grandes beneficios que pueden llegar a traer estas aplicaciones a las áreas de economía, y en especial a la de las finanzas relacionadas con estos mercados. En ese sentido, este artículo se encuentra en línea con estas investigaciones previas y revela algunos aspectos interesantes al respecto.

En efecto, mediante la implementación de estrategias ampliamente conocidas y simples dentro del ámbito del análisis técnico (estrategia de promedios móviles), junto con el uso de esquemas de ventanas móviles, se encontró que con ayuda de los AG es posible estructurar estrategias que, a nivel consolidado, permiten obtener retornos mensuales positivos (fuera de muestra) de alredor 1,07 % en promedio, con meses en los que se obtuvieron incluso retornos de 2,91 %. Adicionalmente, durante el 75 % de los meses los resultados fueron positivos. Lo anterior es revelador ya que demuestra cierta consistencia a lo largo del año de la estrategia desarrollada.

Pese a lo anterior, hay aún algunos retos por superar con miras a mejorar este tipo de estrategias. En especial, la presencia de retornos negativos fuera de muestra afecta sustancialmente el retorno promedio que se obtiene de todo el periodo de análisis. Una posible solución al tema deriva de algún posible efecto estacional en las series intradiarias al contemplar largos espacios de tiempo tipo, por ejemplo, años. Dado lo anterior, resulta importante contrastar la estrategia para distintos años y mirar si dichos patrones se repiten o no. De ser así, se podrían diseñar esquemas de entrada y salida (timing) que permitan mejorar los retornos a fin de evitar los escenarios negativos.

Por otro lado, una segunda posibilidad para corregir el efecto de los retornos negativos puede ser la definición de las ventanas móviles en sí mismas. El presente artículo trabaja con una ventana móvil de tres meses y reparte la dinámica de entrenamiento y testing dada la información ahí contenida. Sin embargo, es importante que esta se constituya también en una variable por optimizar, ya que distintas ventanas pueden ofrecer resultados diferentes. Finalmente, es importante revisar también el sobreajuste de la estrategia usando la validación cruzada u otro método para verificar la generalización de los algoritmos genéticos.

Otro reto adicional es el de contrastar los retornos obtenidos con algún benchmark de referencia del estilo comprar y mantener. En el caso particular de esta investigación, dicha contrastación no era del todo pertinente ya que la muestra tomada corresponde a un periodo en el que los precios futuros del petróleo crudo WTI experimentaron una tendencia alcista importante. Sin embargo, la estrategia debería contrastarse para distintos momentos del tiempo (escenarios alcistas, bajistas y sin tendencia aparente a nivel anual), y revisar si permite obtener retornos atractivos en escenarios donde los esquemas pasivos de inversión (compra y mantener) no funcionan.

Un último reto lo constituye el objetivo que el algoritmo genético busca optimizar. En efecto, en el presente artículo este era simplemente el retorno del portafolio, entendido como la diferencia entre el monto invertido al comienzo y el monto que se obtiene al final del mes. Sin embargo, medidas de desempeño más robustas (como Sharpe, Sortino u Omega) pueden llevar a distintas medias, y mejores resultados, que merecen la pena ser analizados.


Notas

1 La otra metodología es el análisis fundamental, la cual se basa en la construcción de un valor fundamental con ayuda de información de los estados financieros, información sectorial y del entorno económico, en aras de contrastarlo con el precio.
2 Liu, An y Wang (2015) encontraron que los resultados de la estrategia de promedios móviles basados en datos de diferentes escalas de tiempo difieren significativamente.
3 Lo anterior se conoce como intercambio de su material genético.
4 Es importante precisar que en cada uno de los hijos se mantiene la correspondencia de promedio móvil corto y largo.
5 Lo anterior se conoce como extracción del material genético.
6 Estos parámetros son asignados bajo criterio de los investigadores.
7 Este parámetro es definido bajo criterio de los investigadores.
8 Dado que cada cruce de padres genera dos hijos (H1 y H2), el número de iteraciones se determina como la mitad del número de individuos que se desea generar debido a que los padres, una vez cruzados, son reemplazados por los hijos.
9 Este resultado representa la máxima pérdida probable para la estrategia de inversión.


Referencias

Alexander, S. (1964). Price movements in speculative markets: trends or random walks. En P. Cootner (ed.), The Random Character of Stock Market Prices (vol. 2), Cambridge: MIT Press.

Allen, F. y Karjalainen, R. (1999). Using genetic algorithms to find technical trading rules. Journal of Financial Economics, 51(2), 245-271.

Ayadi, O., Williams, J. y Hyman, L. (2009). Fractional dynamic behavior in forcados oil price series: An application of detrended fluctuation analysis. Energy for Sustainable Development, 13(1), 11-17.

Boboc, I. y Dinica, M. (2013). An algorithm for testing the efficient market hypothesis. PLoS ONE, 8(11), e78177.

Brooks, J. (2006). Mastering Technical Analysis. Using the Tools of Technical Analysis for Profitable Trading. New York: McGraw-Hill.

Cheng, C., Chen, T. y Wei, L. (2010). A hybrid model based on rough sets theory and genetic algorithms for stock price forecasting. Information Sciences, 180(9), 1610-1629.

Conrad, J. y Kaul, G. (1998). An anatomy of trading strategies. The Review of Financial Studies, 11(3), 489-519.

Cuaresma, J., Hlouskova, J., Kossmeier, S. y Obersteiner, M. (2004). Forecasting electricity spot-prices using linear univariate time-series models. Applied Energy, 77(1), 87-106.

Davey, A. (2010). Deregulation of wholesale petrol prices: What happened to capital city petrol prices? Australian Journal of Agricultural and Resource Economics, 54(1), 81-98.

De Bondt, W. y Thaler, R. (1985). Does the stock market overreact? The Journal of Finance, 40(3), 793-805.

Deng, S., Yoshiyama, K., Mitsubuchi, T. y Sakurai, A. (2015). Hybrid method of multiple kernel learning and genetic algorithm for forecasting short-term foreign exchange rates. Computational Economics, 45(1), 49-89.

Dong, H. y Huang, W. (2014). Prediction of geothermal resources by means of wavelet neural network optimized by genetic algorithm. Res. Ind, 16(3), 101-106.

Esfahanipour, A. y Mousavi, S. (2011). A genetic programming model to generate risk-adjusted technical trading rules in stock markets. Expert Systems with Applications, 38(1), 8438-8445.

Fama, E. (1970). Efficient capital markets: A review of theory and empirical work. Journal of Finance, 25(2), 383-417.

Fama, E. y Blume, M. (1966). Filter rules and stock market trading. Security prices: A supplement. Journal of Business, 39(1), 226-241.

Fama, E. y French, K. (1992). The cross-section of expected stock returns. Journal of Finance, 47(2), 427-465.

Glabadanidis, P. (2015). Market Timing and Moving Averages: An Empirical Analysis of Performance in Asset Allocation. New York: Palgrave MacMillan.

Holland, J. (1975). Adaptation in Natural and Artificial Systems: An Introductory Analysis with Application to Biology. Ann Arbor: University of Michigan Press.

Kabundi, A. y Mwamba, J. (2012). Appying a genetic algorithm to international diversification of equity portfolios: A South African investor perspective. South African Journal of Economics, 80(1), 91-105.

Li, J. y Tsang, E. (1999). Improving Technical Analysis Predictions: An Application of Genetic Programming. En FLAIRS Conference, 108-112.

Lin, L., Cao, L., Wang, J. y Zhang, C. (2004). The applications of genetic algorithms in stock market data mining optimisations. En Conference on Data Mining, Text Mining and Their Business Application. Wessex Institute of Technology Press, 273-280.

Liu, X., An, H. y Wang, L. (2015). Performance of generated moving average strategies in natural gas futures prices at different time scales. Portfolios: A South African investor perspective. Journal of Natural Gas Science and Engineering, 24(1), 337-345.

Lo, A. y MacKinlay, A. (1990). An econometric analysis of nonsynchronous trading. Journal of Econometrics, 45(1), 181-211.

Matilla, M. y Argello, C. (2005). A hybrid approach based on neural networks and genetic algorithms to the study of profitability in the spanish stock market. Applied Economics Letters, 12(5) 303-308.

Metghalchi, M., Marcucci, J. y Chang, Y. (2012). Are moving average trading rules profitable? Evidence from the European stock markets. Applied Economics, 162(15), 1539-1559.

Muñoz, M., Corchero, C. y Heredia, F. (2013). Improving electricity market price forecasting with factor models for the optimal generation bid. International Statistical Review, 81(2), 289-306.

Murphy, J. (1999). Technical analysis of the financial markets. New York: Penguin Group.

Potvin, J., Sorianoa, P. y Valléeb, M. (2004). Generating trading rules on the stock markets with genetic programming. Computers & Operations Research, 44(12), 1033-1047.

Qu, H., y Li, X. (2014). Building technical trading system with genetic programming: A new method to test the efficiency of Chinese stock markets. Computational Economics, 43(3), 301-311.

Roberts, M. (2005). Technical analysis and genetic programming: Constructing and testing a commodity portfolio. The Journal of Futures Markets, 25(7), 643-660.

Routledge, B. (2001). Genetic algorithm learning to choose and use information. Macroeconomic dynamics, 5(2), 303-325.

Straßburg, J., González, C. y Alexandrov, V. (2012). Parallel genetic algorithms for stock market trading rules. Procedia Computer Science, 9(1), 1306-1313.

Trippi, R. y Turban, E. (1992). Neural Networks in Finance and Investing: Using Artificial Intelligence to Improve Real World Performance. New York: McGrawHill.

Tsang, R. y Lajbcygier, P. (2002). Optimizing technical trading strategies with split search genetic algorithms. En Chen (ed.), Evolutionary Computation in Economics and Finance (pp. 333-358), Berlin: Springer-Verlag.

Wang, C., Wu, C. y Tzang, S. (2012). Implementing option pricing models when asset returns follow an autoregressive moving average process. International Review of Economics & Finance, 24, 8-25.

Wang, L., An, H., Xia, X., Liu, X., Sun, X., Huang, X. (2014). Generating moving average trading rules on the oil futures market with genetic algorithms. Mathematical Problems in Engineering, 1, 1-10.

Wang, L., An, H., Xia, X., Liu, X., Sun, X. y Huang, X. (2016). Selecting dynamic moving average trading rules in the crude oil futures market using a genetic approach. Applied Energy, 162(15), 1608-1618.

Wiesinger, J., Sornette, D. y Satinover, J. (2013). Reverse engineering financial markets with majority and minority games using genetic algorithms. Computational Economics, 41(4), 475-492.