Automatizar la recogida de datos diarios de amplitud
Enfrentarme a Python, Javascript, o VBA para lograr a través de la automatización de tareas cargar los datos de amplitud al Amibroker es un reto ¡¡conseguido!! Y conste que sigo sin saber programar…
Aprovechando que el mercado está como está, que este servidor está en liquidez y que mis sistemas no me permiten aún operar corto (tienen que pasar unas cuantas cositas más, pero no es descartable que lleguen a ocurrir, que conste), he dedicado esta semana a culminar un proceso que comenzó en los primeros días del verano y que ahora ha terminado de dar sus frutos.
Todo comenzó por una pregunta recurrente de algunos lectores. «¿Cuánto tiempo le dedicas cada día a manipular los datos necesarios para hacer tus análisis de amplitud?». Yo siempre he respondido que cinco minutos como máximo, pero allá por el mes de junio hubo quien me demostró que eso no era absolutamente cierto. Cuento toda la historia y en lo que ha terminado porque tiene su miga y su enseñanza.
Llevamos tiempo preocupados por el previsible fin de los datos de Unicorn en los que hace años aque nos apoyamos para nuestros análisis y allá por finales de junio recurrí a mi hacker de confianza en busca de una alternativa fiable y gratuita con la que pudiéramos suplir a Unicorn de un día para otro si fuera necesario.
Como siempre, torció el gesto e hizo su pregunta. ¿Por qué no aprendes a programar de una puñetera vez? Es una constante esa pregunta, pero como el hacker en cuestión me tiene cariño siempre termina por acceder a mis peticiones, que tampoco son tantas al cabo del año. En unos pocos días tenía preparada una nueva tabla de Excel que ‘chupa’ los datos del Wall Street Journal (concretamente a través de Barron’s porque tiene más datos disponibles y menos tráfico) y que funcionaba con una macro como las que hemos estado usando todos estos años.
Objetivo conseguido. Ya teníamos la alternativa e incluso fue capaz de conseguir unos listados históricos de amplitud algo mejores que los de Unicorn que sigo sin saber de dónde los ha sacado. Tiene datos que obviamente son de Unicorn y otros que no proceden de allí. El caso es que son mejores que los que teníamos, más estables y con mejores resultados en el histórico más alejado de la actualidad.
Pero en realidad aquello fue una trampa que me dejó sumindo en la comedura de coco durante meses. Al entregarme la tabla y explicarme mi funcionamiento, mi hacker favorito me explicó que «estáis obligados a recoger los datos todos los días sin falta porque aunque yo te haya entregado un histórico, Barron’s no lo tiene».
No me importó lo más mínimo. Total, son cinco minutos al día y no hay problema para hacerlo. Pero en el mes de junio me salté tres días y cuando fui a por los datos ya no estaban en su sitio sino que habia que buscarlos. Tuve que ir a la web de Barrons y buscar en el histórico, que no es un listado sino datos concretos, día a día, y traerlos a mano a la tabla. Cada día que te saltas te cuesta como media hora poner los datos en la tabla y que todo quede como debe para que siga funcionando, así que lo de los cinco minutos empezaba a estar en cuestión.
Le llamé. «Hay que automatizar más esto», le dije. Y estuvo de acuerdo. «Esta tarde empiezo a enviarte material». Y me lo envió. Manuales y tutoriales de Python, recursos varios para elaborar mis propios archivos .bat, nociones de Javascript, y un curso acelerado de Visual Basic (VBA) para las macros de la tabla.
«No era esto lo que esperaba», me quejé. «No te preocupes. Tú empieza y si las cosas se ponen muy complicadas y tienes que pasarte deprisa y corriendo a la nueva tabla porque Unicorn se desconecta, te lo hago yo. Pero tienes que intentar hacerlo tú. Igual que has aprendido a hacer indicadores de esos que usas puedes aprender a automatizar todo lo que se te ocurra».
Me animó a empezar por los archivos .bat y programar cosas tan sencillas como que mi equipo se reinie a una determinada hora. «¿Para qué quiero hacer eso?», le pregunté y me contestó con otra pregunta. «¿Cuántas veces se te reinicia el equipo cuando no quieres o al menos lo intenta para instalar actualizaciones? Dado que no lo apagas nunca sino que lo hibernas, al menos deberías darle una oportunidad a Windows para actualizarse porque si no te va a seguir dando el coñazo».
Eso de hibernar el ordenador me lo enseñó al año pasado cuando me quejé de lo mucho que tardaba en arrancar a pesar de estar casi nuevo. «Poco a poco se te van metiendo procesos en el arranque de las más diversas cosas y hacen que todo vaya más lento al comienzo de cada sesión. Lo mejor es no comenzar sesión», sentenció. Y me enseñó a hibernar el ordenador, cosa que no estaba fácil en Windows 10.
Pero a lo que íbamos. Durante el comienzo del mes de julio hice mis pinitos con los bat y logré que se reiniciara solo el ordenador una vez al día, a la hora en la que menos me molestaba, así como lanzar un par de procesos de actualización de la base de datos de Investing que corre en mi Amibroker usando un bat, el programador de tareas de Windows y el scheduler de las últimas versiones de Amibroker.
«Un gran paso para la humanidad», pensé. Pero no. En realidad fue un gran paso para el hombre, para mí, porque me ha permitido desde entonces cenar tranquilamente con mi pareja sin que al terminar tenga que ponerme a los mandos del cotarro para actualizar los datos americanos tras el cierre en Wall Street. Se hace solo y eso es una maravilla.
Pero la tabla se me resistía. La macro que se necesitaba para hacer realidad lo que yo quería era más compleja de lo que yo habia pensado en un primer momento y me dió problemas de todos los tipos. Pero perseveré. Ya era una cuestión de amor propio…
Más o menos en ese periodo apareció por el foro Omm Trader y su llegada me espoleó en mi determinación de conseguir el objetivo de la máxima automatización.
Omm Trader comenzó a compartir con nosotros códigos y vídeos de automatización de tareas usando Python. No era exactamente lo que yo buscaba, pero sacando idea de aquí y allá y perdiendo el miedo a probar fui avanzando poco a poco con el lenguaje. Resulta que no es un lenguaje complejo, sino de lo más simple. Y resulta que su virtualidad no está en lo que se puede hacer con él, que con C++ al parecer se puede hacer mucho más y mejor, sino en que hay muchos recursos que facilitan el camino para conseguir lo que quieres.
Centenares de informáticos profesionales y aficionados, hackers y no hackers, en GitHub y alguna otra plataforma de «frikies», han dedicado tiempo y conocimientos para crear «librerías», módulos de programación específicos con los que añadir potencia a Python. Y prácticamente no hay dato que Python no pueda conseguir, dar formato, procesar y presentarlo de la forma que uno quiera. Y prácticamenteno hay tarea que Python no pueda automatizar, desde leer y enviar correos a lanzar programas a una determinada hora para hacer tareas repetitivas de forma automática.
«Tu objetivo es simplificar procesos y poder olvidarte de ellos», me animó mi hacker particular tras mis primeros pinitos. «Con Amibroker tú ya procesas datos así que no te concentres en las tareas de procesamiento de Python, sino en las de conseguir lo que necesitas y darle el formato adecuado para que Amibroker lo pueda procesar adecuadamente».
Hay que decir que quien con tanta autoridad hablaba de Amibroker apenas si lo ha abierto un día y le ha dedicado una ojeada. Se lo hice ver y se partió de risa. «Sólo con abrir un programa sé de qué va y Amibroker es un procesador de datos. No sé si muy bueno o muy malo porque no lo he trasteado, pero es evidente que toma datos y los procesa para que tú los entiendas. En cierto modo es como un Excel, aunque muy orientado a una actividad concreta y con mucha potencia gráfica y de proceso en ese campo».
Me acordé de que este camino lo comencé junto a Àngel Matute luchando contra el Excel, para conseguir esa tabla, que aún hoy conservo y actualizo y que tarda ya más de un minuto en abrirse, con la que pusimos en marcha nuestro primer sistema basado sòlo en datos de amplitud. Sí, Amibroker mejora al Excel en los apartados más específicos de mis intereses, pero el Excel es una salvajada en cuanto a potencia de proceso.
El proceso de todo lo que he aprendido e investigado terminó esta semana. Los datos de amplitud del Wall Street Journal (es la misma base de datos que tiene Barron’s) suben automáticamente a la nube y desde ahí pueden bajarlos los foreros sin que este servidor pulse una sola tecla (y si ellos con capaces de automatizar también sus tareas, tampoco tendrán que pulsar una sola tecla).
Y el viernes por la noche han subido por el mismo procedimiento los datos del Commitment of Traders, conocidos comúnmente como COTs. Han sido traspasados desde Quandl a otra carpeta en la nube desde la que los miembros del foro pueden disfrutar de ellos. Y todo, aunque no sean series los datos que se presentan en origen, está en forma de listados, de forma que si cualquiera pasa dos días sin bajarse nada, no se perderá ni un dato.
Para terminar, algunos foreros se han ido animando y han desarrollado más automatizaciones y yo mismo he aportado un código de Javascript con el que ni siquiera tengo que abrir el Amibroker para importar los datos de amplitud a la base de datos. Todo junto, cuando se configura para que trabaje en la hora apropiada y en el día apropiado, hace que las tareas se simplifiquen mucho, pero que mucho.
Gracias a este grupo de intrépidos foreros hemos logrado mejorar la forma en la que se ponen los datos en nuestra nube para que ellos puedan automatizar la tarea
Ahora ya tengo una respuesta absolutamente inapelable a la pregunta del comienzo. «¿Cuánto tiempo dedicas cada día a manipular los datos necesarios para hacer tus análisis de amplitud?». Pues le he dedicado buenos ratos y últimamente algunas comeduras de coco. Pero ya no le dedico ni un segundo. Y están en mi ordenador, incorporados a mi graficador, listos para ser utilizados cuando lo precise.
¿La enseñanza? No hay una sino al menos dos. La primera, que sirve para casi todo en esta vida: hay que intentarlo. Solo poniendo el cerebro a trabajar alcanzamos metas que no soñábamos y eso se demuestra en todos los ámbitos de la vida. Yo quería ser trader y ahí estamos, en el camino de conseguirlo. Yo quería dar a conocer el análisis de amplitud y ahí estamos, en el camino de conseguirlo. Y yo quería ganar tiempo para mí y ahí estamos, en el camino de conseguirlo.
La segunda moraleja es también muy cierta en todo lo referente a nuestras vidas: somos muy optimistas respecto a los cálculos de tiempo. Los cinco minutos no lo eran y he descubierto que cuando me he quitado esa tarea de cinco minutos de encima, he ganado una hora para caminar todos los días. Es posible que los datos no me llevaran una hora, pero tampoco eran cinco minutos, eso seguro, porque me enredaban siempre en comprobaciones que derivaban en otras cosas.
He cerrado el círculo de una tarea pendiente. Hace ya tiempo que leí un maravilloso libro titulado Superpoderes del éxito para gente normal. Es de esos libros que lees y ya sabes lo que te cuenta pero necesitas que alguien te lo diga para ponerte ante el espejo de tu propia realidad. Perdemos mucho tiempo en lo que no lo merece y no dedicamos el que realmente merece a lo que vale la pena.
Al final, porque Unicorn nos abandona, porque me animó ver que alguien más estaba con la idea de la automatización de procesos y porque mi hacker de cabecera me espoleó de lo lindo retándome a hacerlo yo mismo, me lancé a una tarea que me iba a reportar seguridad y comodidad en el manejo de los datos ue necesito para mis análisis. Pero lo cierto es que me ha dado tiempo y todos sabemos que el tiepo es oro. A medida que automatizo más tareas, más tiempo tengo para lo realmente importante.
¡¡Buen trading!! pero procuren no olvidar que lo que hay que hacer es vivir…
NOTA DEL AUTOR: Nada de lo contenido en el presente artículo debe ser tomado como una invitación a la toma de posiciones en mercado alguno. Se trata de mi análisis particular sobre la situación de las Bolsas, compartido por puro placer y resultado de años de trabajo e investigación en los campos de la amplitud de mercado y la mano fuerte. Si quieres profundizar en alguno de los conceptos utilizados, puedes hacerlo con nuestro libro o en nuestro Foro, pero lo más rápido es que me dejes un comentario con tu pregunta e intentaré ofrecerte algunas respuestas si es que las tengo…
Si el SPX500 ejecutara un hombro cabeza hombro de techo de mercado alcista… deberíamos irnos primero al 2530 en la bajada actual y posterior subida a los entornos del 2850, para luego iniciar ya la fase correctiva y el periodo bajista de largo plazo
que se opina por aquí….
saludos
buenos días
«Han hecho suelo los mercados»
hay ya analistas que así lo pronostican.
En mi opinión todavía NO
El indicador de nuevos minimos, la línea avance descenso y el Mccellan no lo reflejan todavía.
Habrá que esperar.
Que se opina por aquí.
Saludos.
Yo opino q se necesita un nuevo mínimo del sp500 con pánico vendedor antes de rebotar.
Grande Miguel. Felicidades por tus logros, el que la sigue la consigue
Pues no hay rebote o no mas. Entonces por ibex que es lo que estoy siguiendo para los cortos, nos caeremos hasta 8200 despues yo creo rebotaremos hasta 8800 por ahi y despues yo creo que nos iremos a 7300 y ya se acabo.
Pero solo por este año.
Miguel te ha faltado una enseñanza, rodearse de un buen equipo de gente competente.
Impresionante trabajo, ¡¡¡¡enhorabuena!!!
Muy cierto.
En mi opinion aun queda un poco de rebote mas. Un 3-4% quiza un 5%. Lleva sosteniendose ya 6-7 sesiones. Tampoco falta mucho para dar señal al alza en diarios. Cuando se agote ese rebote tiene pinta de ser una perfecta oportunidad de cortos. Ah y hace falta un culpable final. Este viernes sale el pib americano del tercer trimestre. El del segundo ya provoco un pequeño tramo a la baja en julio y no estan las bolsaa como en julio ni de lejos.
Otra opcion es que esto ha sido el rebote. El 15 y 16 de octubre y ahora se desshace poco a poco y luego mucho a mucho.
Buenas,
Yo me hago todo este proceso de datos de amplitud con las Google Sheets, mediante los scrips. Y la verdad es que no es complicado. Además con los triggers puedes programar tareas diarias en un pis pas
Saludos
Yo lo intenté también por ese método y los datos de Unicorn bajaban bien, pero no conseguí lo que necesitaba para procesar los datos de Barron’s. Como de lo que se trataba era de lograr una alternativa a Unicorn porque antes o después va a cerrar, pues tiré por la calle de enmedio: como primera opción me curré una macro en Excel que me sirviera para bajar los datos sin formato de listado y luego, una vez que ya tenía asegurados los nuevos datos, pasé a intentarlo con Python para facilitar la tarea de compartir los datos.
Python nos hará la declaración de la renta. Poco faltará para que nos friegue también los platos de esa cena. Esta semana estuve viajando, dejé mi portatil en casa trabajando mientras recibía la actualización de mis sistemas en el móvil. Yo también quiero ser trader un minuto al día jajaja
Pues ya que nos va a hacer la declaración sería interesante que nos la pague… digo yo.
Siempre abriéndonos nuevos mundos. Genial Miguel. Que tu hacker de confianza te ponga deberes, no se, denota cierta venganza je je.
Es que es un poco cabroncete…
Por cierto, debo agradecerte públicamente la mano que me has echado en este proceso viendo problemas donde yo no los veía y poniendo a prueba cada nuevo paso. Has estado casi a la altura del hacker en eso de ponerme deberes jejejejeje
Ojalá supiera la décima parte que el hacker jaja. Ha sido una suerte ver en primera fila como trabajas y perseveras. Y eso me anima a intentar implementar todo lo que has conseguido. Gracias a ti.
Esta semana seguiremos con la fase de ajustes para que los foreros se adapten a la nueva forma de hacer las cosas y desde la semana que viene ¡¡a vivir!!