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 que, 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í.


Los comentarios están cerrados.