← Volver al blog

Sistemas de trading. Episodio II: Optimización

Estrategias de Trading » Sistemas de trading. Episodio II: Optimización

Sistemas de Trading Episodio 2

Sistemas de trading (Episodio II)

Continuando con el episodio I; ahora que tenemos nuestro sistema de trading planteado, vamos a optimizarlo.

 

¿Cómo maximizar el rendimiento de un sistema de trading?

Para maximizar el rendimiento de un sistema deberemos ir por partes. Primero averiguaremos si el valor que hemos escogido (en nuestro caso, Telefónica) es el óptimo para este tipo de sistemas o hay algún otro que se adapta mejor por su propia naturaleza.

 

Ejemplo

Así pues, corremos el test en cada uno de los valores del IBEX35 y vemos si hay alguno que destaca por el beneficio obtenido en las mismas condiciones que planteábamos para Telefónica.

Para ello, no hay más que ir recorriendo la lista del IBEX35 en la ventana de «Valores», asegurándose de que ProRealTime cargue los datos históricos desde 1999 si existieran (basta hacer zoom hacia afuera en el gráfico de precios para lograr esto).

Después de hacer este recorrido descubrimos que hay dos valores que destacan por encima de los demás. Uno es OHL y el otro es ACS. Ambos se comportan mejor que Telefónica. De hecho, Telefónica es el cuarto mejor con un beneficio de 3664€.

Sin embargo, OHL le saca el mejor rendimiento a este sistema con 5849€.

Observando la curva de liquidez, vemos que el sistema es más noble en OHL, las pérdidas son más controladas y el beneficio final es superior. Atendiendo al gráfico de precios, podemos observar que OHL es un valor que oscila con mayor continuidad y menor brusquedad que Telefónica. Por lo tanto, nos olvidamos de Telefónica y, a partir de ahora, centraremos nuestros esfuerzos en OHL.

Hemos visto como, con una sencilla exploración del mercado, ya hemos mejorado enormemente nuestra eficiencia, centrándonos en un valor que se adapta mejor a nuestro sistema de trading.

Ahora es el momento de centrarnos en refinar los parámetros de nuestro sistema de trading. La idea es sustituir las constantes del sistema por variables.

 

Características del sistema

En este sistema, las constantes más inmediatas son:

· El número de periodos de la media móvil del precio. Hasta ahora, 50.

· El parámetro de cálculo del RSI. Hasta ahora, 5.

· El umbral de RSI que consideramos como zona de sobreventa. Hasta ahora, 30.

Sustituimos estos valores en el código del ProBackTest por variables, que definiremos y a las que daremos un rango limitado.

Empezaremos por variar, a modo de ejemplo, los periodos considerados en el cálculo de la media móvil. Para ello, modificaremos el código, poniendo una variable en lugar de un número (hasta ahora, 50) en la definición de la media móvil:

Pincha en la imagen para verla al 100%

Como puedes ver en esta última imagen, pondremos una «n» en lugar del «50» en el código y añadiremos una nueva variable a la que llamaremos «n» en el programa, que aparecerá como «Periodos SMA» en la ventana del ProBacktest y que correrá entre 1 y 250, en saltos de 10 en 10.

Al «Aceptar», el programa se pondrá a calcular cuál es la media móvil que nos dará el máximo beneficio final.

Cuidado aquí, porque este cálculo se realiza por fuerza bruta.

 

¿Qué es un sistema de optimización por fuerza bruta?

Cuando se dice que un sistema de optimización funciona por fuerza bruta, significa que calcula absolutamente todas las combinaciones posibles y las ordena según resultados. Esto quiere decir que, si nos pasamos con el número de combinaciones, podemos sumir al ordenador en un cálculo demasiado largo o complejo, hasta el punto de dar la sensación de que se haya colgado. Por ello, es bueno no pasarse en el número de combinaciones y enfocar la optimización desde un punto de aproximaciones sucesivas.

Al terminar de calcular, ProRealTime nos presenta un «Informe de optimización» en el que nos desvela que, de todas las medias móviles contempladas, es la de 211 periodos, la que más jugo le saca a OHL en nuestro sistema, entregando un beneficio final de 13166€.

Vamos mejorando ¿verdad?

Ahora es el momento de incluir el resto de las variables en el juego, es decir, llamaremos «n» a los periodos de la media móvil, pero también llamaremos «r» a los periodos del RSI y «u» al umbral de sobreventa en el RSI y los sustituiremos en el código, añadiendo las correspondientes variables.

Ojo ahora, porque el número de combinaciones se dispara y debemos especificar rangos amplios en las variables, para poder encontrar la zona en la que se comportan mejor como equipo, pero también debemos comenzar dándoles un paso grande, para reducir mucho el número de combinaciones posibles y que el cálculo no se eternice. Nuestra intención es ver primero por dónde van los tiros y luego precisar hasta encontrar los valores exactos que combinan a las variables para dar el rendimiento máximo.

Así pues, ahora que ya sabemos que «n» va bien por la zona de 210, la ponemos a correr entre 200 y 220, con paso 5. A «r» (periodos del RSI), la haremos variar entre 1 y 20, con un paso de 1. La variable «u» (umbral de sobreventa en el RSI), recorrerá el intervalo entre 10 y 50 con un paso de 10.

 

Ejemplo de optimización de un sistema por fuerza bruta

Ponemos el ordenador a calcular y obtenemos un nuevo máximo de beneficio de 16.777€ en la combinación:

n = 205

r = 4

u = 30

Aunque en este ejemplo no ha sucedido, es posible que observásemos que «n» mostrase su óptimo en el extremo del intervalo (en este caso, en 220). Esto querría decir que el rango 200-220 ya no sería adecuado, pues no contendría el óptimo para «n».

Esto es perfectamente posible, pues el óptimo global no suele coincidir con el óptimo local. O, dicho de otro modo, es frecuente que, el óptimo de «n» esté en un determinado valor cuando la optimizamos por sí sola, sin contar con «r» y «u», y que este óptimo no coincida con el que se alcanza cuando se optimizan «n», «r» y «u» a la vez.

El beneficio obtenido por el óptimo del grupo será siempre mayor que el beneficio alcanzado al optimizar una sola variable. Por ello, no sirve optimizar primero una variable, luego otra y así sucesivamente. Hay que tantear el terreno con todas a la vez e ir precisando después.

Tras una serie de aproximaciones sucesivas, obtenemos los siguientes valores:

n = 204

r = 2

u = 24

Ahora es el momento de observar las entradas y salidas y buscar soluciones para los periodos en los que el sistema se comporta peor.

Si nos fijamos en el comportamiento de nuestro sistema, observamos que, como casi todos los sistemas caza-tendencias, flojea mucho en las fases laterales.

Para intentar contrarrestar este hecho, podemos añadir un indicador de tendencia y salir cuando éste nos avise de que la tendencia se pierde. En particular, en este caso utilizaremos el indicador ADX. Cuando éste sobrepase un tope, saldremos de la posición, aún cuando el precio no haya tropezado con su media móvil.

Hacemos una primera prueba con un ADX de 14 periodos y un tope de ADX de 50. Observamos inmediatamente que esto, por sí sólo, ya nos mejora ligeramente el beneficio.

Repetimos, tal y como hemos explicado, la operación de hacer variables estos dos parámetros del nuevo indicador. Les llamaremos «p» y «t».

Después de localizar con aproximaciones sucesivas cuáles son los valores óptimos de «p» y «t» por sí sólos, revisamos el resto de parámetros, dándoles de nuevo cierta libertad. Observamos una pequeña corrección en «u» que pasa a de valer 24 a 25.v

Finalmente, llegamos a la siguiente combinación de variables:

n = 204

r = 2

u = 24

p = 9

t = 62

Esta combinación presenta un beneficio de 26.757€. Es decir, una rentabilidad de 1.238%, con tan sólo 15 operaciones en los últimos 10 años.

 

En resumen

En resumen, nuestro código de ProRealTime quedaría como se muestra en la imagen. En la ventana de atrás se ve cómo quedaría el sistema de trading gráficamente.

Pincha en la imagen para verla al 100%

Hay infinidad de detalles que se pueden objetar, como por ejemplo, que hemos supuesto una comisión fija, que obviamente se queda obsoleta en cuanto el dinero crece. Esto no deja de ser una simulación teórica.

Sin embargo, lo que es incuestionable, es que ya tenemos un sistema que nos habría dado una buena rentabilidad en OHL si lo hubiéramos aplicado desde enero del 99.

Hasta ahora lo que hemos hecho ha sido:

  • Diseñar un sistema de trading sencillo.
  • Buscar un valor que se adapte naturalmente bien a ese sistema.
  • Hacer variables sus parámetros y optimizarlos.
  • Añadir alguna condición extra para mejorar el comportamiento en puntos críticos.
  • Re-optimizar los nuevos parámetros.

 

Conclusiones de los sistemas de trading

Son todos pasos básicos y tremendamente sencillos, que se pueden repetir una y otra vez. Sin embargo, es importante mantener la simplicidad del sistema pues, cuanto más se particulariza, menos flexible será el sistema y peor se adaptará al cambiante futuro, que es precisamente cuando queremos aplicarlo.

Que un sistema haya sido exitoso en el pasado no implica que lo sea en el futuro, pero esto es relativo. Cuanto más cercano el futuro más fiable será nuestro sistema. Ni la bolsa ni las empresas cambian radicalmente de la noche a la mañana. OHL seguirá comportándose de forma parecida a los últimos 10 años durante los próximos meses. Así pues, el último paso en el proceso de la optimización es:

  • Recalibrar los parámetros con el paso del tiempo para que el sistema siga teniendo validez.

Para dar por terminado el diseño de un sistema de trading, sería conveniente probarlo en distintas ventanas de tiempo. Hemos optimizado el sistema para un periodo fijo, pero es bueno ver cómo se comporta en intervalos más cortos y en diferentes momentos. Esto nos dará una mejor idea de la rentabilidad que podemos esperar de este sistema aplicado en un futuro, además de ayudar a refinar el conjunto de reglas.

Por último, decir que este sistema nos lo hemos ido inventando sobre la marcha, conforme escribíamos el artículo. Quisiéramos destacar que este sistema no es en absoluto brillante. Con un poco de interés y perseverancia se pueden conseguir sistemas muy superiores.

Desde la Escuela Profesional de Traders – Novatos Trading Club, esperamos que esta pequeña guía sobre cómo diseñar y optimizar un sistema de trading os haya sido de utilidad y deseamos que le saquéis provecho en forma de unos estupendos euros más en vuestras cuentas bancarias.

Si discrepas, si no entiendes algo, si estás de acuerdo, si tienes una idea, si te enfrentas a un problema ¡añade tu comentario!

 

 

Uxío Fraga

Trader, formador de traders, ingeniero y emprendedor. Fundador de Novatos Trading Club (Escuela Profesional de Traders), autor del libro « aprende a especular en bolsa » y fundador de Material Bitcoin. Es uno de los traders de mas renombre en España.

19 Comentarios

  1. Uxío Fraga

    Hola, los sistemas 100% automáticos están siempre conectados al mercado y ejecutan ellos solos las operaciones según programa. Los hay de todos tipos (al tick, al cierre de vela y mil combinaciones más). Cuál escoger depende de los resultados que obtengas y no hay que preferir uno u otro por ideología.

    Los sistemas más efectivos suelen ser muy sencillos, aunque muchas veces es un pequeño rizo o detalle extra el que los convierte de perdedores a ganadores.

    ¡Saludos!

  2. picando codigo

    Hola Uxio, he creado un sistema con velas diarias, y mi pregunta es como suelen hacer los traders con sistemas 100×100 automáticos para entrar y salir del mercado, me refiero a 1.si la señal se genera con el último cierre cabría la posibilidad de ejecutar la entrada/salida para la apertura del dia siguiente o 2.lo más óptimo es crear un código para que cuando la entrada/salida esté a puntito de caramelo para los 5 últimos minutos del cierre, por ejemplo, este código te genere un valor de cierre ficticio antes de su cierre real y poder entrar en el mercado el mismo día.

    En el primer caso veo el problema de perderte esa primera diferencia cierre/apertura y en el segundo el problema podría ser que ese cierre no alcanzase en los pocos minutos finales el valor deseado a posteriori de la entrada/salida. Esta 2nda opción la veo mas rentable

    Perdón por la rayada jeje. He creado un sistema basado en un force index nervioso que el mismo modifica sus parametros a más nervioso todavía dependiendo de la tendencia, en general posee un comportamiento fractal. y las señales principalmente se activan cuando cazan divergencias, a parte de otros filtros como un indicador de manos fuertes.

    La verdad que me ha costado un poco picarlo todo pero me da buenos resultados en prt.por último como lo ves?? quizas demasiado complicado y un sistema debería ser mas simple??es el primero que hago.

    Si te lees este tocho y me contestas te estaré eternamente agradecido jeje y sino también.Enorabuena por esta estupenda página!!!

  3. Uxío Fraga

    Hola, juan:

    1.- acciones, etf, cfd.

    2.- diarias o semanales, pero nunca intradiarias.

  4. juan

    Hola Uxio, en primer lugar felicitarte por la pagina que es muy clara y ayuda mucho. Llevo poco tiempo en este mundillo pero me atrae mucho, cada vez mas. Voy a comenzar a confeccionar mi sistema de trading pero tengo algunas dudas.
    La primera: ¿Que tipo de mercado se recomienda para un principiante excluyendo las acciones si es que se puede?
    La segunda: ¿Que marco temporal es el ideal? ¿operaciones diarias, semanales? por operaciones diarias entiendo las que abro hoy y cierro mañana o en un par de dias.
    Gracias de nuevo, tu trabajo es de gran ayuda.

  5. gustavo

    hola uxio que tal? una consulta ya tengo un sistema pero quiero saber si el modulo de pro real time es gratuito para probar mi sistema o tengo que tener una cuenta pagada para obtener esta facilidad de prueba.

  6. Uxío Fraga

    Hola, guille.

    Lo de las flechitas sí que es normal. Hasta la fecha, yo lo he visto siempre.

    La segunda pregunta no la entiendo bien. Si sobreoptimizas el sistema, basta una sola operación nueva para que el sistema pierda mucho rendimiento. Podría estar ahí el problema, que lo hayas ajustado todo demasiado para un gráfico muy particular.

    ¿Has probado qué tal te funciona en otros gráficos? Aunque haya en uno en el que se comporte mejor, en los demás debería defenderse bien.

    ¡Un saludo!

  7. guille

    wenas cracks, una duda
    Es normal que cuando busco sistemas para acciones del ibex me aparezcan las entradas y salidas flotando por encima del gráfico?? esto no me pasa con forex.
    2- pregunta, como puede ser que un día después de optimizar un sistema lo vuelva a optimizar y me lo cambie todo?? el gráfico es a 5 min pero me salen mas de 100 operaciones y de un día a otro solo varia 2 o 3 nuevas.

  8. Uxío Fraga

    Hola, Antonio. No sé bien a qué te refieres ¿Cómo te puedo mandar la plantilla?

  9. Antonio

    Hola Uxío me podrias mandar la plantilla, para agregarla en el PRT, ya que me da error de sintasis cuando reemplazo los numero por las letras, gracias.

  10. Uxío Fraga

    Hola, David.

    De todos modos, ten cuidado porque, haciendo así, entramos en el terreno de la sobre optimización y lo que jausrtes al pasado no te valdrá en el futuro.

    Todo lo que hagas tendrás que probarlo en virtual durante un buen tiempo.

  11. David M

    Bueno Uxío, me dejas anonadado con esto de los sistemas, tenía muchísimas ganas de aprender esto y la verdad es que lo explicas de maravilla. Ahora me surgen dudas.
    El sistema resulta ser súperrentable en el plazo de 10 años.
    Como tú dices seguro que los tienes mucho mas afinados. Cuando tenga el mío te lo pasaré a ver que te parece.

    Bueno se me vienen ahora muchas cuestiones a la cabeza, que no soy capaz de ordenar, pero una de ellas es la siguiente; si se consigue un sistema con un rendimiento así o mejorado, con un porcentaje de operaciones en positivo mayor al 80%, y se usan productos no necesariamente apalancados, con un 2 o 3% de elasticidad sobre el subyacente, ¿se puede ganar mucho dinero verdad?

    Te lo digo porque me pare increible!

    Bueno Uxío voy a seguir haciendo pruebas y adaptándolo a plazos mas cortos.

    Un saludo y mil gracias!!

  12. David M

    Ya tengo el fallo Uxío, redondeaba a la baja en nº de acciones a comprar, tan simple como eso 😉

  13. Uxío Fraga

    Buf, David, no tengo ni idea de por qué puede ser eso, porque van siglos desde que hice esas pruebas.

    En cualquier caso, este artículo va de aprender a hacer backtesting y todo lo demás es anecdótico.

    ¡Un saludo!

  14. David M

    Hola Uxío!, al poner en práctica tus enseñanzas he hecho un sistema igual que el tuyo del episodio I, primero con Telefónica y luego con OHL para contrastar resultados, y resulta que las condiciones son las mimas, iguales, copiadas de la foto qeu tu adjuntas, pero el resultado es menor siempre. Y le he puesto el mismo marco temporal que tú, desde el 1 de enero de 1999 hasta el 9 de noviembre de 2009¿se debe esto a que los gráficos están ajustados por dividendos? Pero si quito esta opción del PRT tampoco me da los mismo beneficios que a tí. Telefonica me da 3475 y OHL 4090.

    Gracis Uxío!

  15. Uxío Fraga

    La idea sí era optimizar el sistema para un único valor nada más. No había entendido correctamente tu pregunta.

    Se puede pensar en operar siempre con un único gráfico. De hecho, hay muchos traders, especialmente de futuros, que sólo operan en uno o dos gráficos durante mcuhos años.

    Y, ciertamente, si el sistema funciona bien en un valor fuerte del IBEX, probablemente no vaya mal en la mayoría de los demás; pero se comportará peor y tampoco tiene por qué funcionar en muchos de ellos.

    Un saludo.

  16. Anónimo

    Se me olvidó… luego he probado a optimizar los parámetros para Telefónica (creo recordar que era la 6ª o 7ª acción del IBEX que mejores resultados presentaba) y con esos parámetros he mejorado los resultados en el 90% de las acciones del IBEX…

  17. Anónimo

    Creo que no me he explicado bien, el emplear «valores» para referirme a las distintas acciones… A lo que me refiero es que en tu ejemplo optimizas el sistema para OHL obteniendo n=200, r=2… Vale, estos valores funcionan bien con OHL, ¿pero con el resto de acciones?

    Según he leido los artículos ha ido desarrollando una idea, he probado el sistema en todas las acciones del IBEX con los valores que me parecían buenos a priori y Gamesa ha sido la acción que mejor resultado ha obtenido (aunque en general hubiera ganado pasta con cualquiera :P). He obtimizado el sistema para Gamesa, pero en cuanto he probado el sistema con esos parámetros en el resto del acciones del IBEX me he llevado un gran chasco, ¡la mayoría presentaban perdidas!

    De ahí mi pregunta, ¿hay que optimizar para cada acción/futuro/materia en la que queramos invertir? ¿O es que directamente el sistema con el que he probado es una birria?

  18. Uxío Fraga

    No, no, no. Fíjate que, precisamente en este artículo, destacamos que el óptimo global (de todas las variables juntas) siempre supera o iguala al óptimo local (de una sola variable), así que lo que se trata es de optimizar todas las variables a la vez por aproximaciones sucesivas.

    El quid está en no sobrecargar el ordenador dando un rango amplio para cada variable y a la vez un paso también amplio. Conforme vayamos acotando los rangos, vamos afinando la resolución de la búsqueda.

    Espero haber aclarado las cosas.

    ¡Un saludo!

  19. Anónimo

    Hola, me he topado con este artículo mientras me encuentro «desarrollando» mi primer sistema de trading. El problema que le veo es el que al optimizar al máximo el sistema para un valor en concreto por un lado te olvidas del resto de valores lo que hace que con estos pueda dar resultados catastróficos. ¿O es que la idea es el optimizar el sistema para cada uno de los valores?

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

El trading en mercados financieros supone un alto nivel de riesgo y puede no ser adecuado para todos. No inviertas capital que no te puedas permitir perder. El contenido de esta web y los servicios que se ofrecen no pretenden ser, no son y no pueden considerarse en ningún caso asesoramiento en materia de inversión ni ningún otro tipo de asesoramiento financiero, ni puede servir de base para un contrato, compromiso o decisión de ningún tipo.

Los criptoactivos no están regulados, pueden no ser adecuados para inversores minoristas y perderse la totalidad de la inversión. Es importante leer y comprender los riesgos de esta inversión que se explican detalladamente en este documento.