🧐 ¡La actualización de octubre de ProPicks IA ya está disponible! Vea qué valores entran en la listaElija valores con IA

Pensemos en el trading algorítmico de manera diferente

Publicado 05.10.2020, 09:02
Actualizado 09.07.2023, 12:32

Voy a intentar explicar mi visión sobre cómo debería tratarse cualquier proyecto de trading algorítmico representando esto única y exclusivamente mi opinión personal.

Es de la forma que expongo como estoy operando una cuenta real financiada por una de las empresas de fondeo del sector, por lo que considero que puede ser útil aunque no única.

Clave: Universo del algoritmo

Llamamos universo a la porción de realidad de la que el algoritmo será consciente.

El principal problema que nos encontramos en el desarrollo de este tipo de software es cuál será y cómo representaremos el universo de este (el mercado). 

Generalmente los bots que veo intentan representarlo mediante indicadores de uso común (emas, rsi, atr, etc) o combinaciones de ellos.

¿Os imagináis operando un gráfico en el que solo veis 2 emas y el precio de cierre de la vela cuando se cortan las emas? ¿Qué locura, no? Pues ese es el universo de vuestro bot de cruce de medias, aunque estéis viendo el gráfico completo. Recomiendo mirar un gráfico exclusivamente con lo que el robot verá, si solo ve emas y rsi, que no aparezcan velas más que el precio de entrada y salida (y a veces ni eso). ¿Operarías con eso? Pues estás diciéndole a la máquina que lo haga.

Intentar predecir la lluvia mirando al suelo

Supongamos que estamos estudiando patrones para detectar cuando va a llover (nos salimos del trading por un momento) y tenemos a dos individuos con dos universos diferentes:

  1. Cielo: Este estudiará el cielo para intentar saber cuando va a llover, porque dice que el agua viene de ahí.
  2. Suelo: Este estudiara el suelo para intentar saber cuando va a llover, porque dice que el agua llega ahí.

¿Cuál de los dos tiene más posibilidades de llegar a conclusiones óptimas? ¿Cuál de los dos trabajando lo mismo rendirá más?

Por si no se ha entendido aún, añadamos a un tercer individuo, este estudiará el precio de la gasolina en su ciudad para intentar predecir el comportamiento de la lluvia. ¿Apostarías por su proyecto?

Esto mismo pasa con el trader que mira el precio y el trader que mira los indicadores o cualquier otra cosa. Y donde digo trader podría decir estrategia, algoritmo o robot.

 
Error: Optimizar.

Una vez llegamos a nuestro bot basado en indicadores comunes que de por sí no es rentable o "ni pierde ni gana", viene el trabajo de la optimización que no es más que utilizar ciertas herramientas para cambiar parámetros (longitud del rsi, de la ema, del atr, nivel sobrecompra y sobreventa del rsi, etc u otros factores más "complejos" que no dejan de ser más de lo mismo) de forma automatizada dándonos en algunos casos resultados asombrosos en backtest.

Y aquí viene el bendito ratio, tenemos una estrategia no rentable y descubrimos que en el año de backtest hubo 2 semanas que no van a repetirse nunca más probablemente donde podíamos haber sacado el 200 a 1 (o el 6:1) y terminamos haciendo que nuestro sistema opere con esos ratios. En real viene la catástrofe. Y esto del ratio puede extenderse a cualquier otro parámetro…

¿Cuántas veces no has escuchado “¡Este sistema es bueno, sin optimizar casi no pierde o gana algo! Vamos a optimizarlo que ya tenemos el santo grial.”? 

En mis sistemas yo NO optimizo. No, cuando estoy programando solo me interesa que represente al algoritmo que diseñé y que este represente bien a la estrategia que quiero. Profundizaremos en esto más adelante.

 
Error 2: automatizar demasiado rápido

Otro error muy común es , en la fase de implementación (no te preocupes si no sabes de que hablo, más adelante analizaremos todas las fases. En concreto hablo de la fase en la que programamos el sistema para que se ejecute automáticamente), querer automatizar demasiado rápido. Acabo de terminar de probar manualmente mi algoritmo (no la estrategia, sino el algoritmo, también hablaremos de él más adelante. Me refiero a las reglas sin mirar el resultado) y ya quiero automatizarlo de manera que haga él solito las entradas. ¡Error!

Yo aún no automaticé el mío y voy a tardar tiempo en hacerlo. Recién implementado tenemos que depurar bien todo y para hacer esto, la mejor forma es implementarlo en forma de indicador de manera que marque las entradas, pero no las tome y sea el trader humano el que decida si la entrada es buena con respecto al método y se toma o no lo es, no se toma, se documenta el fallo y se corrige.  

¿Qué es depurar?

Depurar consiste en establecer una vía de comunicación entre la implementación y su desarrollador de manera que esta vaya diciendo cada una de las decisiones que va tomando y cómo se van modificando sus principales variables y bucles, de manera que el humano pueda supervisar que está “pensando” como debe y no hay ningún fallo.

Un ejemplo: una vela rompe un rango en una estrategia de rompimiento de rangos pero no la tomamos por ser contratendencia. El algoritmo irá diciendo desde antes de que se produzca esa vela: estamos contratendencia. En la vela dirá no la tomé por ir contratendencia.

 
Error 3: utilizar robots de terceros

Si no entiendes lo que tienes, no lo utilices. Eso no va a salir bien por mucho que optimices. 

Si quieres utilizar un robot de trading tienes dos opciones:

  • Desarrolla el tuyo (puede ser en base a otro ya creado, pero debe terminar siendo tuyo).
  • Contrata a un experto que lo haga por ti y que lo utilice por ti.

Creo que con todo lo expuesto en este artículo, tengo poco más que argumentar aquí.

Entonces, ¿Cómo debe de diseñarse un robot de trading?

Divido en 3 etapas el desarrollo de cualquier bot, cada etapa junto a su fase de pruebas: cualquier error detectado en una etapa anterior nos haría volver a ella, solucionarlo y actualizar las siguientes.

  1. Creación de un criterio lógico operativo.
  2. Diseño del algoritmo que representará este criterio.
  3. Implementación del algoritmo.

Creación de un criterio lógico operativo

Lo primero que tenemos que tener es una estrategia manual que sabemos que funciona. Hasta no tener esto, pensar en automatizar es una tontería. 

Si no la tenemos, tendremos que investigar hasta formarnos un criterio en base al que operar y demostrarnos que este criterio funciona (aunque sea en backtest o en demo).

Diseño del algoritmo que representará este criterio

Una vez tenemos este criterio operativo, nuestro Yo trader ya ha hecho su trabajo, ahora viene nuestro Yo ingeniero el cual tendrá que diseñar un algoritmo que represente fielmente este criterio operativo y probarlo manualmente para ver que representa bien a la estrategia ¡No para comprobar que es rentable!, Eso ya se hizo en la etapa anterior. 

Esto quiere decir que tenemos que ser capaces de operar nuestra estrategia de forma manual como si de una máquina se tratase: sin salirnos de las decisiones que el algoritmo indique. Cada decisión que tengamos que contradecir al algoritmo para seguir al método, será un error y deberá ser corregido. Implementación del algoritmo.

Una vez tengamos el algoritmo, ya solo queda elegir sobre qué plataforma trabajará e implementarlo en esta. Esta es la parte de nuestro Yo programador. 

Luego vendrá la fase de pruebas en la que nos aseguraremos de que se cumple fielmente el criterio del algoritmo. Aquí solo probamos que si el algoritmo dice largo, la implementación mete el largo, no que sea rentable, eso es trabajo de la primera fase y estas no deben mezclarse.

Depuración

Y no nos olvidemos de que esta fase se divide en 2: depuración y automatización completa. En el apartado “Error 2” están definidas estas fases.

En esta fase implementaremos el algoritmo como un indicador que supervisaremos. Podremos tomar manualmente sus señales si nos dan confianza.

Automatización completa

En esa fase, pasará de ser un indicador a operar completamente él.  Se añadirán las órdenes directamente desde el script.

Conclusión

Expuesto esto, creo que es evidente que para mi no hay cabida para la optimización. Es en la primera fase cuando nuestro Yo trader diseña su estrategia y la modifica las veces que haga falta. Cuando esté seguro de ella y no vaya a tener que modificarla más, entonces se pasará a los siguientes pasos y en estos, no se modificará la estrategia, por lo tanto la optimización no tiene sentido.

En cualquier paso si hay que cambiar algo de la estrategia, se vuelve a ese paso, se corrige y se actualiza el trabajo ya desarrollado en las siguientes etapas.

Y lo fundamental, si nuestro robot va a trabajar sobre un gráfico completo de velas, con su contexto y todo, debe conocerlo. Si solo conoce 2 emas, un rsi y un close en un determinado momento... ¡¡Imagina operar humanamente un gráfico así!!

Si nuestra estrategia que nos funciona se basa en price action y no sabemos representar al precio y sus estructuras en un algoritmo, nos ponemos a ello, no intentamos suplir nuestras carencias utilizando cosas ya hechas como indicadores...

Si fuese tan fácil, ¿por qué no ponemos una máquina a probar un conjunto de indicadores y variamos sus parámetros y combinaciones hasta dar con el mejor sistema que nos haga millonarios? Parece fácil, solo necesitamos un equipo bueno o suplirlo con paciencia para esperar que el pc termine. Dividimos el trabajo en lotes por si hay complicaciones en el proceso y listo.

Qué tontos esos que destinan capacidades de cálculo infinitas minando criptomonedas (por ejemplo) pudiendo estar buscando la optimización perfecta y ganando muchísimos millones… ¿O quizás no sea tan ideal esta idea? Dejemos de soñar y pongámonos a trabajar (en lo nuestro, en base a lo de otro quizás, pero nunca copiando a otro. Parasitar no da resultados…).

En futuros artículos, me gustaría explicar qué estrategia sigue el robot del que hablo al principio y cómo fue su proceso de desarrollo, para que se pueda visualizar de qué forma aplico lo que comento aquí.

Últimos comentarios

Cargando el siguiente artículo...
Instala nuestra app
Aviso legal: Las operaciones con instrumentos financieros o criptomonedas implican un elevado riesgo, incluyendo la pérdida parcial o total del capital invertido, y pueden no ser adecuadas para todos los inversores. Los precios de las criptomonedas son extremadamente volátiles y pueden verse afectados por factores externos de tipo financiero, regulatorio o político. Operar sobre márgenes aumenta los riesgos financieros.
Antes de lanzarse a invertir en un instrumento financiero o criptomoneda, infórmese debidamente de los riesgos y costes asociados a este tipo operaciones en los mercados financieros. Fije unos objetivos de inversión adecuados a su nivel de experiencia y su apetito por el riesgo y, siempre que sea necesario, busque asesoramiento profesional.
Fusion Media quiere recordarle que la información contenida en este sitio web no se ofrece necesariamente ni en tiempo real ni de forma exacta. Los datos y precios de la web no siempre proceden de operadores de mercado o bolsas, por lo que los precios podrían diferir del precio real de cualquier mercado. Son precios orientativos que en ningún caso deben utilizarse con fines bursátiles. Ni Fusion Media ni ninguno de los proveedores de los datos de esta web asumen responsabilidad alguna por las pérdidas o resultados perniciosos de sus operaciones basados en su confianza en la información contenida en la web.
Queda prohibida la total reproducción, modificación, transmisión o distribución de los datos publicados en este sitio web sin la autorización previa por escrito de Fusion Media y/o del proveedor de los mismos. Todos los derechos de propiedad intelectual están reservados a los proveedores y/o bolsa responsable de dichos los datos.
Fusion Media puede recibir contraprestación económica de las empresas que se anuncian en la página según su interacción con éstas o con los anuncios que aquí se publican.
Este aviso legal está traducido de su texto original en inglés, versión que prevalecerá en caso de conflicto entre el texto original en inglés y su traducción al español.
© 2007-2024 - Fusion Media Ltd. Todos los Derechos Reservados.