Mes: octubre 2021

El Extraño Caso del Indicador Mutante

El Extraño Caso del Indicador Mutante

Esta es una de esas entradas que he estado resistiéndome a escribir durante años porque, según cómo lo explique, puede causar un cierto desasosiego entre algunos traders. Pero es la realidad diaria.

Por mi actividad migrando mis herramientas entre plataformas desde hace años me he encontrado con todo lo que ahora explicaré, y no creo que hayan sido muchos más los que hayan compartido estas experiencias así que, tampoco he encontrado quien las haya explicado antes.

Migrar herramientas es un trabajo bastante más delicado y complejo de lo que pudiera parecer en principio

Partiré de un caso, que no siendo muy habitual, tampoco es único. Así que, ni que sólo sea para evitar tener que volver a explicar todo esto con detalle cada vez que alguien me lo pregunte, valga el tiempo dedicado a redactar esta entrada.

Además, me servirá para explicar un poco mejor qué hace concretamente un indicador. Y podrán entender [espero] por qué, a veces, los desarrollos de una misma herramienta en diferentes plataformas puede ser una pequeña (o gran) tortura [a la que cada vez me resisto con mayor fuerza].

Migremos, ya que podemos

Muchos usuarios, por la razón que sea, deciden migrar de plataforma. Si es usuario de alguna de mis herramientas y está disponible en el nuevo entorno, puede solicitarme la nueva versión correspondiente. Si es el caso, se la remitiré, empezará a usar el indicador en su nueva plataforma de la misma forma que antes y [generalmente] aquí acaba el relato.

Pero, en algunos casos, el tema se complica. Algunos usuarios especialmente meticulosos, empiezan a comparar curvas y valores entre ambas plataformas [cosa que seguramente no han hecho ni harán con cualquier otro de los indicadores disponibles] y, en algunas ocasiones comprueban (oh sorpresa!) que algunos valores numéricos del indicador en ambas plataformas NO siempre son exactamente iguales. ¿Qué está pasando?

¿Quién será el culpable?

Aquí entra en juego la variabilidad en la personalidad humana, pero tomaré un caso medio para que nadie se ofenda ni se sienta aludido.

Imagino que la primera idea que vendrá a la mente de la mayoría es que ESA nueva versión del indicador NO está correctamente programada o contiene errores. Quizás haya quien piense que tampoco lo está la anterior. O que no lo ha estado nunca ninguna.

Realmente yo nunca he visto un caso tan grosero que llegue a alterar el trazado de las curvas [se trabaja mucho para que eso no pase] pero, y fíjense en lo que les voy a decir: ni siquiera descarto que eso pueda pasar en algún caso puntual.

«Pero, ¿y cómo lo admite con tal desparpajo!?», pensarán los que ya me han condenado antes de iniciar la simple exposición. Pues porque podría llegar a ser así y si tiene la paciencia de seguirme un poco más lo entenderá. Ahora viene lo interesante.

¿Cómo funciona la relación entre indicadores y plataformas?

De este efecto antes explicado [problemas de concordancia exacta] me di cuenta ya en mis primeras migraciones de herramientas y, a la postre siempre acaba siendo uno de mis peores dolores de cabeza. De hecho que el 99,99% de los usuarios nunca se percaten o lo aprecien jamás es motivo de un cierto orgullo. De hecho la mayoría supongo que tendrá primera [inquietante] noticia aquí.

Así que como me di cuenta (como afectado) de este tema hace tiempo y tuve que investigar a qué era debido, paso a detallarlo cosa que, dicho sea de paso, tampoco conozco que nadie haya hecho antes, lo que en su día me habría ahorrado MUCHO trabajo y pesquisas, y fue un problema añadido. [Igual alguien alguna vez me lo agradezca].

Lo primero que necesitamos hacer es dividir el proceso en bloques para poder asignar la responsabilidad a cada posible parte.

Empecemos por el indicador, principal sospechoso. ¿Qué es y qué hace un indicador? Básicamente un indicador (todos ellos) es un algoritmo compuesto de una o varias fórmulas matemáticas que toman una serie de datos, los procesa y entrega uno o más resultados de esa operación.

¿Cuál es el papel de la plataforma? Pues, en toda su complejidad, básicamente dos:

  • Ofrece los datos de entrada; y
  • Gestiona las salidas generalmente en forma de representación gráfica

Así, en un esquema básico de proceso, a la plataforma le corresponde la «entrada» y la «salida» , mientras que al indicador le corresponde el «proceso» de los datos.

¿De dónde vienen las diferencias?

Una vez constatadas que en un determinado mismo gráfico entre dos plataformas de trading existían diferencias (generalmente pequeñas) en los valores de salida, cabía descubrir qué pasaba, dónde y, a ser posible, cómo solucionarlo/minimizarlo.

Como siempre en estos casos se trabaja por eliminación, aislando cada elemento participante. Así lo hicimos empezando por el propio indicador. ¿Había alguna diferencia entre los algoritmos que justificase esas diferencias? La respuesta fue que no. El algoritmo (la fórmula) era EXACTAMENTE la misma en todos los casos y calculada de la misma forma y en el mismo correcto orden.

El indicador toma una serie datos de la plataforma, opera con ellos y entrega los resultados de nuevo a la plataforma, que acaba convirtiéndolos en un gráfico.

Así había que prestar atención ahora a las plataformas y examinarlas dento de nuestras limitadas posibilidades pues los fabricantes, como es natural, no se prestaban a dar mucha información técnica.

Como en muchas de mis herramientas el valor «volumen» está incorporado, empezamos por ahí y como, por fortuna, podemos visualizar ese valor individualmente simplemente desplegándolo separadamente en una ventana del gráfico, la sorpresa fue considerable.

En la mayor parte de los casos donde observamos diferencias en los valores del indicador era porque había variaciones entre los valores de los volúmenes. Recuerdo que estamos hablando de mismos períodos de mismos activos. ¿Por qué no coincidían exactamente? ¿Cuál volumen era el correcto?

Bienvenidos al laberinto de los datos

Comunicamos (amablemente) estas diferencias a algunas plataformas, y les consultamos a qué podían ser debidas. De entrada, y como era previsible, todas afirmaron sin dudar que SUS datos eran los correctos, que obtenían de tal o cual fuente de datos totalmente fiable y certificada. Y, ¿saben qué? TODOS decían la verdad.

Entonces, ¿qué pasaba? Pues, después de no pocas pesquisas y esfuerzos entre un laberinto de suministradoras primeras de datos, fuentes oficiales y mercados, resultó que NO EXISTÍA [y no tengo noticia que eso haya cambiado] un sistema internacional estándar de contabilizar el volumen negociado.

Eso significa que, según unos u otros, volúmenes negociados fuera de mercado, o en operaciones realizadas en aperturas o cierres, se contabilizan en un bloque temporal u otro, total o parcialmente, sin acabar de aclarar muy bien quién hacía qué y cómo. [Por no hablar de mercado paralelos, creadores de mercado, dark pools y otras lindezas].

Así que tuvimos que acostumbrarnos a vivir sabiendo que, al menos en uno de los datos que manejaba el algoritmo, había variaciones entre los datos suministrados según el tipo activo, de derivado, el suministrador de datos de cada plataforma y un montón de variables más completamente imposibles de prever. [Puedes hacer clic en lo gráficos para observarlos en detalle]

La buena noticia es que, después de [como pueden comprobar] estudiarlo MUY detenidamente, llegamos a la conclusión que, por mucho que haya diferencias al contabilizar algunas variables concretas, si ese MÉTODO era constante para cada plataforma concreta NO AFECTABA para nada la coherencia de la herramienta.

Se observarían diferencias en los valores del indicador porque existían diferencias en la serie de datos a procesar. En general eran diferencias porcentualmente pequeñas y difícilmente apreciables sobre el trazado de la curva.

En el fondo, que determinadas operaciones se contabilicen ahora o más tarde, si siempre se hace del mismo modo, no afecta en absoluto el resultado final, por más que pueda modificar puntualmente los valores.

Otro de los «descubrimientos» que obtuvimos del análisis del problema comparando una buena cantidad de plataformas fue que, en general, la calidad de los datos ofrecidos era directamente proporcional a su precio de suscripción, cosa que tampoco debería sorprender a nadie.

Pero, con el dato «precio» no hay nunca duda ¿O sí?

«Pero, al menos», -me dirá el amable y paciente lector- «sabemos que los datos de precio serán siempre correctos e idénticos en todas las plataformas». Y yo les responderé que sí, que CASI SIEMPRE eso es así.

Haz clic para aumentar

Debería explicarles en este punto que las plataformas de trading son, en esencia, bases de datos gráficas. Contratan un servicio externo que les suministra los datos del mercado en tiempo real [que almacenan en su base de datos] y se los hace llegar por conexión telemática.

Pero esas conexiones pueden ser de mejor o peor calidad, tanto en velocidad como en fiabilidad. Pero, incluso las de más alta calidad, no están exentas de pequeños errores de transmisión. Los más groseros son detectados y corregidos (manualmente) de la base de datos de cada plataforma, pero cuando son pequeños o afectan sólo detalles concretos pueden pasar desapercibidos.

Un Futuro DAX en 30 minutos graficado en dos diferentes plataformas

Estos gráficos sólo son pequeñas muestras (convenientemente lejanas) de algunas diferencias entre plataformas en los datos de entrada. Podrían parecer intrascendentes (lo serían en el 99,99% de los casos) pero en indicador cuyo algoritmo contemplase esos detalles generaría problemas de concordancia exacta.

O, incluso, desplazando una vela de hora… [al fin i al cabo, es sólo un bit de error]

Aprovecho para comentar que, si en alguna ocasión detectan algún error en algún gráfico, sea grande o pequeño, si lo comunican a su plataforma se lo agradecerán mucho, porque así lo podrán corregir manualmente.

Así que llegamos a una primera conclusión: aunque el sospechoso probable parecía ser el indicador, todos los indicios apuntan a que el principal causante de las diferencias finales, son los datos [presuntos inocentes]. Y, lógicamente, si los datos son distintos, también lo serán los valores resultantes una vez procesados.

Si quieren que les haga una confesión, ocuparme y preocuparme por la CALIDAD de los datos ofrecidos por determinadas plataformas ha sido una de las razones por las que he ido abandonando el desarrollo en algunas de ellas que, por más que sean populares, tienen [en mi modesta opinión] muy descuidada la calidad de los datos que ofrecen a sus usuarios. Así que me pregunté «¿para qué esforzarme en mantener unas buenas herramientas si los usuarios trabajan en un entorno de datos de mala calidad?»

¿Te has preguntado nunca si vale la pena trabajar con una plataforma que te ofrezca datos inexactos o descuidados, por popular que sea?

Si los datos de la serie de origen son distintos, una vez procesados, también lo serán los resultados

Sofisticando el error

Permítanme que acabe ya con un último apunte, que les aseguro que dejar el tema sólo en esta entrada no hace justicia a la cantidad de horas que, durante años, le he tenido que dedicar a este complejo tema.

Después de entender y asumir la primera parte de esta exposición [asumirla porque está TOTALMENTE FUERA de mis posibilidades evitarla o solucionarla] me encontré con una segunda «patología» .

En este caso, miraba y remiraba y no detectaba variaciones en los datos que justificasen unas pequeñas (pequeñísimas, generalmente) variaciones permanentes en los resultados. De hecho, propiamente deberíamos hablar de mínimas desviaciones.

Así que había que volver a investigar de dónde venían. Como he explicado en alguna otra parte, mis herramientas son lo que conoce habitualmente como «de 2ª generación» , o sea, que incorporan como elementos herramientas de 1ª generación, en nuestro caso, indicadores anteriores.

Por otro lado, muchos de esos indicadores clásicos [ RSI, Momentum, Medias, MACD, Escocásticos, etc.] la mayoría de plataformas los tienen integrados en forma de funciones predefinidas [built-in, que diríamos en argot].

Sus formulaciones son conocidas, pero no es fácil acceder a comprobar cómo están programadas en cada plataforma. Y, una vez más después de bastante trabajo y elucubraciones, acabamos detectando que había en ocasiones diferencias en la forma de cálculo de algunas de estas funciones/indicadores.

Pequeños matices, como utilizar un tipo de alisado en lugar de otro, un tipo media específica u otra más avanzada. Detalles que me llevaron, por ejemplo, a darme cuenta que el uso y elección de las medias utilizadas en cada parte de un algoritmo podía modificar sutilmente el resultado [para mejorarlo o para empeorarlo]. Por eso les he estado mostrando parte de ese trabajo recopilado en mis entradas sobre medias móviles en este mismo blog.

Sé que es la nuestra es una especialidad MUY peculiar, donde encontramos traders que programan y programadores metidos en temas de trading, pero no muchos programadores que sean, a la vez, traders [y viceversa].

Lo explico porque todos los programadores nos hemos encontrado en algunos casos y lenguajes que no sólo importa el qué, sino el cómo y en qué orden. En algunos casos [pocos, es cierto] algunas funciones estaban bien programadas, aunque con algún detalle incorrecto. Para explicarlo gráficamente, la imagen siguiente es propiamente la de un sandwich sólo que con algún «detalle» incorrecto.

Y así queda básicamente explicado por qué en la mayor parte de los casos en que se observen diferencias entre dos indicadores idénticos [míos o de quien sean] en dos diferentes plataformas, por favor no saquen conclusiones precipitadas.

Y, la moraleja de todo esto, es que:

  1. no siempre hay que disparar sistemáticamente sobre el pianista si algo no suena bien. Puede que el piano o la partitura tengan algo que ver.
  2. explicar todo esto por mail era muy complicado y difícil cada vez que alguien me lo consultaba, así que queda desarrollado para todos ellos de ahora en adelante.

Espero que alguien haya llegado hasta el final y que le haya resultado útil e instructivo para conocer mejor algunos aspectos poco conocidos del trading, las plataformas y los indicadores.

Gracias por llegar hasta aquí.


DEMA, TEMA (y un poco de Trix)

DEMA, TEMA (y un poco de Trix)

Hoy me van a permitir que les hable de dos indicadores y «medio», y de algunos conceptos de diseño para los más interesados.

Todas las medias móviles comparten una misma característica que, desgraciadamente, es inherente a su propia esencia: un cierto retraso en relación con las señales que se generan. Los diseñadores de algoritmos han trabajado durante mucho tiempo para obtener nuevas formulaciones que, manteniendo todas las virtudes de las medias convencionales, disminuyan o maticen esa conocida desventaja.

Este es el caso de las dos de las que les hablaré hoy: DEMA y TEMA. Las muestro conjuntamente porque ambas dos son obra del mismo autor: Patrick G. Mulloy, quien las presentó en 1994 en un artículo titulado «Smoothing Data with Faster Moving Averages« en la revista Technical Analysis of Stocks & Commodities.

Mulloy perseguía hacer medias más rápidas, más sensibles a los cambios y dotarlas de mayor agilidad en los giros

La primera de ellas es la denominada Media Móvil Exponencial Doble (Double Exponential Moving Average o DEMA).

Aunque, en principio por su nombre y en una primera impresión, podría parecernos que debería ser una simple aplicación de una EMA (media exponencial) sobre otra EMA, no es así en absoluto pues su fórmula es bastante más sutil.

La formula de la DEMA es:

DEMA = (2∗EMA(n)) − (EMA(EMA(n)))

donde «n» = periodo o número de elementos de la serie

Explicado tendríamos, por un lado, la media exponencial (EMA) de periodo «n», multiplicada por dos; y, por otro, la media exponencial de esa misma media exponencial que, una vez obtenida, restaríamos de la primera.

Ya ven que no es tan fácil como podía parecernos en un principio por su nombre. No es una simple EMA aplicada sobre otra EMA, porque ello es lo que en diseño llamamos, simplemente, «suavizado o alisado» de la primera curva y, como efecto principal, tendería a aplanarla y suavizarla aunque, como contrapartida, también a ralentizarla y más.

Pero no es eso lo que se perseguía Mulloy, sino lo contrario: perseguía hacerla más rápida, más sensible a los cambios y dotarla de mayor agilidad en los giros sin perder sus movimientos suaves. Ello genera un tipo de media mucho más ajustada al movimiento de los precios, disminuyendo el factor «retardo».

Una vez puesta sobre el gráfico, así es como se ven ambas (EMA y DEMA), en ambos casos con un periodo de n=50:

TEMA (Media Móvil Exponencial Triple)

Si algo caracteriza a los diseñadores de herramientas matemáticas para trading es el continuo inconformismo. Jamás nos sentimos satisfechos con el último algoritmo encontrado y siempre aspiramos a mejorarlo. Seguro que Mulloy no era ninguna excepción a esa norma porque, más allá de la DEMA, desarrollo esta Media Móvil Exponencial Triple (Triple Exponential Moving Average o TEMA, en inglés).

Ahora que ya sabemos seguro que NO PUEDE SER un simple triple alisado de una EMA, porque eso la haría mucho más lenta y plana, y Mulloy trabajaba en medias fiables de respuesta más rápida, habrá que ver como consiguió mejorar el anterior diseño.

Como concepto, la TEMA es una composición de una EMA, una EMA doble y una EMA triple, que proporciona un menor retardo de tiempo que cualquiera de esos tres elementos por separado.

Convertido en fórmula matemática, tiene este aspecto:

TEMA = (3∗EMA1​) − ((3∗EMA2​) + EMA3)

donde:

  • EMA1=Media Móvil Exponencial (EMA)
  • EMA2​=EMA de EMA1
  • EMA3​=EMA de EMA2

​​lógicamente, siempre todas del mismo periodo.

Sorprendentemente esta fórmula tan original es perfectamente funcional y consigue incrementar todavía más la velocidad de respuesta de esta media sobre la propia DEMA, tal y como podemos apreciar en el siguiente gráfico:

Ahora es cuando el amable lector se pregunta: «y, todo esto, ¿para qué?» Para qué necesitamos medias que giren más rápido. ¿Acaso eso, llevado a un sistema de especulación, no nos generará más ruido, más entradas y salidas falsas y mayores costos operativos?

Si sólo pensamos en esa parte del problema: sí, sin ninguna duda!

Pero sólo estás pensando en estas herramientas como finalistas y en la forma tradicional, buscando sus cortes. Mientras que si piensas en ellas como partes o elementos de herramientas de segunda generación o sistemas complejos, la cosa cambia sustancialmente. Entonces pasan de ser una herramienta a una parte de algo mayor y más complejo. Una pieza más en un Lego; una rueda más en un engranaje.

En diseño llamamos «alisado» o «suavizado» de una curva a aplicar, por ejemplo, una media sobre otra media. Eso la aplana pero también la enlentece.

Voy a ponerte dos ejemplos de esta manera de enfocarlo:

A) Imagina que necesitamos detectar el inicio de una tendencia lo más rápido que nos sea posible. Podríamos hacerlo por superación de un nivel de precio (sistema tradicional). Pero una media sería más fiable porque se basa en un conjunto de datos, y no sólo en uno concreto, que sería más fácilmente manipulable. Pero, si lo que nos interesa es detectarlo rápido, ¿no sería mejor utilizar una TEMA o una DEMA antes que una simple EMA o una SMA? Si detectarlo rápido implicase mayores beneficios (o menores pérdidas) la cosa estaría clara. Basta con que mires el gráfico para saber la respuesta, incluso para cuantificarlo.

B) Podemos jugar con diferentes elementos, no sólo con su valor numérico. Por ejemplo, podríamos calcular su pendiente para detectar fuerza de la tendencia; sus giros para determinar cuando termina una tendencia; incluso usar las herramientas de desplazamiento que estudiamos en un artículo anterior para situar stops, por ejemplo.

Tuneando indicadores: MACD -> TRIX -> MACTRIX?

Vayamos un paso más allá. Supongamos que tenemos una herramienta en la que confiamos como, por ejemplo, el por todos conocido MACD. Imaginemos que sabes cómo trabaja (si no, basta con que pulses en el enlace anterior), para comprobar que está basado simplemente en la diferencia entre dos EMAs.

Ya que estamos hablando de las posibilidades que nos abren estas nuevas medias, comentarte que ya en 1980 Jack Hudson, editor de la revista «Technical Analysis of Stocks and Commodities» trabajó en ese sentido intentando mejorar el diseño del MACD original aplicando un triple alisado de las EMAs, diseñando un nuevo oscilador, alternativo al MACD original y al que llamó TRIX.

Ahora solo nos queda imaginar: ¿qué pasaría si alguien sustituyese esas EMAs originales del diseño de G. Appel, en lugar de por unas EMAs alisadas como hizo Hudson, por unas DEMAs o TEMAs de Mulloy? ¿Daría un rendimiento mejor o peor a ambos referentes anteriores?

Ni que sólo fuera por jugar, ¿podríamos llamar a este proyecto «MACDTrix«? 😛

Las herramientas mencionadas en este artículo [DEMA, TEMA y Trix] están presentes y disponibles en la mayor parte de plataformas de trading del mercado, por lo que podrán acceder a todas ellas y experimentar sin ningún problema.