En esta ocasión tenemos el placer de entrevistar a una de las figuras clave de este país en la divulgación del uso del lenguaje Python para trading algorítmico. Se trata ni más ni menos que de... ¡Paduel!

X-Trader (XT): Hola Antonio, ante todo gracias por concedernos esta entrevista. Lo primero de todo, voy a intentar saciar la curiosidad de todos nuestros lectores: ¿de dónde viene el nombre de Paduel? ¿Y por qué dibujas tan endemoniadamente bien?

Paduel (AP): Hola Alberto. Gracias a ti, encantado de ser entrevistado para X-Trader.net, un proyecto que considero fundamental en el mundo del trading en español.

El alias de Paduel viene de hace mucho tiempo, antes incluso de aparecer por las redes sociales. Mi nombre y apellido es Antonio Rodríguez, y los comparto con un número bastante elevado personas en el mundo, así que opté por buscar algo más original. Mi onomástica es San Antonio de Padua, gran orador lisboeta, así que jugando con el nombre de la ciudad de Padua, acabé siendo Paduel. No es ningún misterio arcano, como ves ;D

Respecto al dibujo, la verdad es que no soy un dibujante muy bueno, jajaja. Lo que sí es cierto es que utilizando software de dibujo vectorial, consigo unos resultados bastante apañados. Es una afición que tengo desde niño. Hace poco decidí unirla a mi otra pasión, el trading, y nacieron las viñetas de Paduel en Twitter (@Paduel_py). Trato de hacer humor sobre los traders, poner una sonrisa en un mundo que suele ser bastante serio, cargado de debates profundos y sesudos análisis. Creo que es una buena forma de tomarse un respiro, aprender a no tomarnos tan en serio a nosotros mismos, y disfrutar de lo que hacemos.

Nota: ¡Paduel me ha dedicado la tira cómica que les muestro a continuación! Realmente creo que tiene un gran talento, juzguen Vds. mismos. Para ampliar la imagen hagan click en ella.

Tira Cómica - Paduel y X-Trader


XT: Ahora que ya sabemos algo más de ti, ¿nos puedes contar cómo te metiste en el maravilloso mundo del trading en los mercados financieros? ¿Por qué el trading y la programación en Python, y no la cría de la cochinilla roja :D?

AP: La primera vez que viajé a Lanzarote me fascinó descubrir que esos campos de cactus con tan mal aspecto eran en realidad granjas de cochinilla roja, así que es posible que en algún universo paralelo sí que esté cultivando cochinillas :D.

Los mercados financieros los descubrí antes de la universidad, leyendo a Kostolany. Quedé impresionado por las posibilidades que ofrecía. Sobre todo, por el desafío intelectual que suponía ganar dinero en los mercados.

En la Facultad de Ciencias Económicas intenté un acercamiento al Club de Bolsa, me enseñaron que seguían las acciones del Ibex haciendo gráficas de punto y figura a mano, cuando yo ya usaba tablas de Excel para otras tareas de la carrera, así que pensé que debía de haber otro camino, pero no ahondé más en aquel tiempo.

El avance de Internet y la posibilidad de acceder a los mercados financieros de forma más eficiente hicieron que de nuevo me interesara por el trading, si bien no le dedicaba demasiado esfuerzo. Durante mucho tiempo, solo hacía swing trading utilizando análisis técnico, aunque nunca me encontré muy cómodo con ese tipo de análisis.

No fue hasta hace unos pocos años, que decidí profundizar en el análisis cuantitativo y el trading algorítmico, y comprobé que lo encontraba mucho más adecuado para mí que el análisis técnico y la operativa discrecional.

Así empecé a usar distintas plataformas, y créeme que fue un largo camino hasta llegar a Python. Comencé con ProRealTime, pasando después a NinjaTrader, Zorro-Trader, y alguna plataforma más que probé puntualmente. Pero las plataformas propietarias para trading siempre me parecían limitadas, especialmente para la investigación y el análisis de datos.

Zorro-Trader tiene un bridge para programación en R. Y ahí comencé a aprender R para ampliar las posibilidades de Zorro-Trader. Un campo de posibilidades se me abrió para hacer todo tipo de investigaciones con datos financieros. Después probé durante un tiempo con MATLAB, cuando hice el curso de Machine Learning de Andrew Ng.

Y siguiendo mi aprendizaje de Machine Learning, comencé a usar Python, y me “enamoré” :P. Desde entonces vengo usando solo Python tanto para la investigación y análisis, como para el desarrollo de los algoritmos de trading.

Así que, como ves, ha sido un camino largo y tortuoso, con curvas y baches, pero muy motivador y repleto de investigación y aprendizaje.

XT: Como ya sabrás soy un fanático del lenguaje R. ¿Qué le dirías a un renegado como yo para intentar convertirme a la fe en Python? :P

AP: Jajaja, ya sé que a veces parece que hago proselitismo de Python, pero yo no diría que llegue a ser una fe.

R y Python son excelentes herramientas, y de hecho ambas tienen mucho en común. Como decía te comentaba antes, usé R antes que Python. Para análisis estadístico, R es muy eficiente, pues de hecho es para lo que fue pensado. Sin embargo, para mí la sintaxis de Python es mucho más clara y legible, y gracias a módulos como Pandas, Scipy o Numpy puedes realizar análisis de datos con la misma capacidad que con R o MATLAB. Otros paquetes como ScikitLearn, Keras o Pymc3 añaden capacidades muy potentes a Python.

Es decir, que pudiendo hacer lo mismo con ambos lenguajes, para mí la decisión se decanta por Python en cuanto a que al ser un lenguaje más generalista que R, una vez que lo conoces puedes hacer otras muchas cosas. Desde montar una web app, un bot de Telegram, controlar sensores o lo que se te ocurra. Y por otro lado, la cantidad de módulos y código open source que existe de Python hace que tengas mucho material para trabajar.

Eso sí, echo de menos lo bien documentados que están los paquetes de R, que parece un paper cada documentación. :D

XT: ¿Qué te aporta Python a la hora de analizar el mercado?

AP: Flexibilidad y rapidez. Me ha permitido desarrollar mis propias herramientas para analizar las series de precios, o cualesquiera otros datos que puedan ser interesantes para el desarrollo de sistemas de trading.

Con muy pocas líneas de código, puedes descargar los datos que necesitas, filtrarlos, normalizarlos, y analizarlos. La capacidad de montar backtests vectorizados usando Numpy o Pandas, proporcionan una velocidad considerable para realizar todo tipo de pruebas.

Y al ser de facto el estándar para Machine Learning y Deep Learning, te proporciona unas herramientas fabulosas para aplicar inteligencia artificial al trading.

XT: ¿Cuáles son tus paquetes de Python favoritos? ¿Cuáles recomendarías para buscar patrones e ineficiencias en las series?

AP: Aunque ya he comentado algunos de ellos, esta sería mi lista de favoritos:

  • Numpy, que es la base para el cálculo vectorizado.
  • Scipy, para el uso de las matemáticas. Álgebra y estadística especialmente.
  • Pandas, que es la piedra central para el análisis de datos de mercados financieros, ya que optimiza el cálculo vectorizado para el análisis de series temporales.
  • Matplotlib, para la representación gráfica de los datos, junto con Seaborn.
  • ScikitLearn, que hace que usar Machine Learning sea realmente sencillo.
  • Keras, para deep learning, como capa sobre Tensor Flow o Theano.
  • Pymc3, para análisis bayesiano.

Con estos módulos tienes un arsenal fantástico de herramientas para todo tipo de análisis, siendo Pandas el central, a mi parecer, para realizar investigaciones de manera sencilla, que nos lleven a descubrir posibles ineficiencias operables en las series de precios.


XT: ¿Qué mercados y productos te gustan más? ¿Por qué?

AP: Solo uso activos que comprenda y mercados en los que me sienta cómodo. Esencialmente acciones, futuros sobre índices y Forex, que son los que más he estudiado. Ofrecen liquidez suficiente e históricos adecuados, entre otras ventajas para mí.


XT: ¿Cuáles serían las estadísticas de tu sistema de trading ideal?

AP: La inversión supone siempre la gestión del binomio rentabilidad/riesgo, por ello la medida correcta de esta relación es imprescindible en cualquier sistema.

El ratio de Sharpe, o incluso en algunos casos mejor el ratio de Sortino, proporciona una manera eficaz de comparar el desempeño rentabilidad/riesgo de sistemas aunque sean muy distintos.

Otro ratio que uso para analizar los sistemas es el SQN, que proporciona otra visión sobre la rentabilidad que obtiene el sistema para el riesgo que asume, incluyendo en su ecuación el número de trades realizados.

Y, por último, el máximo drawdown y el factor de recuperación, aunque tomándolos con precaución, pues lo habitual es que sean mejores en backtest a lo que finalmente se da en real. Por ello, suelo ajustar los rendimientos del sistema a una distribución, y usarla para realizar simulaciones de Montecarlo y conseguir un valor más realista del factor de recuperación, así como del VaR.

En base a esto, un sistema ideal tendría un ratio de Sharpe mayor de 1, un SQN mayor a 2,5 y un factor de recuperación de 6 o más.

Estos ratios son una forma de valorar el sistema individualmente, pero además compruebo la correlación del sistema con los sistemas que vayan a operar a la vez en el tiempo, para evitar una alta correlación entre ellos.


XT: ¿Cómo controlas el riesgo en tus sistemas?

AP: En el día a día monitorizo el desempeño de los algoritmos con mensajes que envía un bot de Telegram que adjunto a mis sistemas, esto me permite seguir desde el móvil en cualquier momento los sistemas.

Periódicamente verifico que los rendimientos que obtienen se ajustan a la distribución estimada en el estudio previo, y verificando que los ratios de Sharpe, Sortino, SQN, VAR condicional y drawdown están dentro de lo esperado.

En algunos casos, si con el tiempo los ratios empeoran, "apago" el robot simulando sus resultados durante un tiempo. Valoro si con algunos ajustes puede volver a ser rentable o si, por el contrario, debo desestimarlo definitivamente porque considero que ha perdido su efectividad, algo que por otra parte ocurre con cualquier sistema tarde o temprano.


XT: ¿Qué reglas o algoritmos de gestión monetaria utilizas habitualmente?

AP: Considero que la gestión monetaria debe adecuarse a cada sistema, ser parte integral del mismo. Por ello depende de si se diseña un sistema de cartera, un intradiario de reversión a la media, uno de arbitraje, etc.

Pero por ejemplo, algo que suelo incluir es la volatilidad relativa del activo en el cálculo de la posición. En cualquier caso siempre uso algoritmos sencillos, que resulten robustos.

Ahora estoy haciendo algunas pruebas para usar aprendizaje reforzado en la gestión monetaria, usando para ello paquetes de Python.


XT: ¿Cómo te planteas el reto de crear un sistema de trading? ¿Qué pasos sigues habitualmente a la hora de diseñar un sistema? ¿Algún consejo o truco especial con el que mejorar los resultados?

AP: Todo sistema parte de una idea inicial, en mi caso normalmente las ideas vienen de la lectura de libros, papers, etc., o bien de plantearme preguntas sobre comportamientos observados en el mercado.

La primera fase, fundamental a mi modo de ver, es la investigación. Y es en esta fase en la que Python, o R si prefieres, es una herramienta realmente eficiente. Es habitual confundir investigación y backtesting, pero son dos etapas muy distintas. Para investigar las ineficiencias, patrones, posibilidades de arbitraje, etc. que muestra un determinado mercado debemos disponer de herramientas matemáticas y estadísticas, o incluso de IA si se quiere. Python nos proporciona estas herramientas y hace que con pocas líneas de código podamos analizar datos y corroborar o rechazar una hipótesis. Esto con las plataformas propietarias de trading suele ser complicado o, en algunos casos, imposible.

La segunda fase sería desarrollar la lógica del sistema en base a los resultados de la investigación, bien mediante reglas o con modelos. Considero que la lógica debe ser sencilla, que entendamos plenamente su funcionamiento.

La tercera fase, sería el backtest de nuestro sistema. En mi caso, suelo hacer un primer backtest vectorizado usando Pandas, que me sirve de prototipo para afinar los parámetros del sistema. Para ello es importante, dividir la muestra al menos en dos, para validar los parámetros obtenidos con datos out of sample.  Si los resultados son favorables, posteriormente realizo un segundo backtest por eventos, incluyendo todo lo necesario para que se acerque lo más posible a las condiciones reales en las que operará.

La cuarta fase sería el análisis de los trades obtenidos en el backtest por eventos. Ajustando una distribución a los retornos, realizo simulaciones de Montecarlo, y verifico que los ratios que he comentado antes tienen los valores adecuados.

La quinta fase sería escribir el código del algoritmo para operar de manera automática en el mercado. Y ponerlo en paper trading durante un tiempo prudencial, el cual dependerá del TF que operé. Incluso en esta fase se puede realizar algún ajuste en la operativa si es necesario.

La fase final lógicamente consiste en pasar el sistema a real y monitorizarlo.

En mi caso, todo este proceso lo hago usando Python, desde el análisis hasta el desarrollo del robot. Esto me permite reutilizar código y controlar todo el proceso fácilmente.

Mi consejo sería utilizar lenguajes como Python o R para la investigación y el prototipado, incluso aunque luego se desarrolle el robot en otro lenguaje de una plataforma propietaria, pues permite un análisis mucho más profundo y detallado, usando herramientas muy potentes de forma relativamente sencilla.


XT: ¿Qué es lo que más te gusta del trading? ¿Y lo que menos?

AP: Lo que menos me gusta es la operativa. Reconozco que no sirvo para el trading discrecional, me aburre estar delante de un monitor viendo gráficas y datos de mercado, intentando aplicar un sistema que a la larga se hace mecánico y repetitivo, si realmente se hace bien.

Por suerte existe el trading algorítmico y hoy en día está lo suficientemente desarrollado como para ser una alternativa viable para el trader retail.

Lo que más me gusta es la investigación y escribir el código, la parte más creativa del proceso. Me apasiona aprender y crear, y los mercados financieros son un campo donde siempre me consideraré un aprendiz, siempre hay algo nuevo que estudiar, analizar, investigar… Lo mismo me pasa con la programación. Poder unir estas dos pasiones en el trading algoritmo me parece un regalo.


XT: ¿Has perdido alguna cuenta operando en el mercado? En caso afirmativo, ¿puedes contarnos cómo fue la experiencia?

AP: Por naturaleza y educación soy muy precavido y cauto, a veces demasiado. Por eso siempre soy muy contenido a la hora de asumir riesgos.  He tenidos pérdidas importantes, pero no hasta el punto de perder la cuenta. Mucho antes de eso, he modificado la operativa, o directamente he dejado de operar un sistema.



XT: ¿Qué proyectos tienes en mente? Me suena haber oído hablar de un tal PyRatPack…

AP: En junio de 2018, hace apenas unos meses, buscando en Telegram grupos sobre trading algorítmico encontré algunos buenos, pero en la mayoría de ellos se hablaba de programación en plataformas propietarias. Echaba de menos un grupo que tratase de Python, que es lo que yo usaba. Así que me decidí a crear el grupo Python para Trading.

Dado lo específico del grupo, esperaba que con suerte llegásemos a ser 20 o 30, pero empezó a crecer muy rápidamente y hoy tiene más de 580 miembros. Hay un gran interés por conocer y usar Python para trading, tanto por parte de los que ya lo estaban aplicando como por parte de los que se querían iniciar, que acabaron encontrando el grupo y uniéndose.  Aunque existe mucho material en inglés, no hay demasiado en español, así que intentamos que el grupo sea una guía y proporcione recursos para quienes lo necesiten.

Para ayudar a los que están empezando con Python para su uso en el trading algorítmico, hemos hecho varios webinarios, los cuales se pueden encontrar gratuitamente en en mi canal de YouTube. Valentín Morala (nuestro querido Tiotino en el Foro), por ejemplo, hizo uno muy interesante sobre el Value at Risk, usando Python claro. Y tenemos otros previstos próximamente con colaboradores excepcionales que forman parte del grupo.

Con respecto a PyRatPack, se trata de un proyecto que surgió en el grupo de Telegram.  A partir de un debate sobre sistemas de cartera y del uso de Machine Learning, propusimos crear un sistema de sistemas. Se trata de que los participantes desarrollen en Python sistemas de carteras con unos activos comunes y los aporten al proyecto. Estos sistemas serán "agregados" por lo que denominamos el meta-sistema,  de forma que la cartera final que se operé se determine por la agregación de las ponderaciones de los distintos sistemas, en base a un modelo de inteligencia artificial que los valore y asigne pesos.

Ya desarrollamos las herramientas necesarias para diseñar los sistemas individuales e hice un webinario para presentarlas y explicarlas.  Ahora el proyecto está a la espera de que le demos un nuevo impulso y recojamos los sistemas individuales para la siguiente fase. Es un proyecto didáctico, donde lo que perseguimos especialmente es desarrollar herramientas y compartir conocimientos que nos ayuden a todos a avanzar.


XT: ¿Cuáles son tus películas y libros de trading favoritos?

AP: Me encanto la película The Big Short que se tradujo en España desafortunadamente como La Gran Apuesta. Creo que a pesar de que muchos solo ven en ella una crítica a los mercados financieros, refleja a mi parecer como ninguna el espíritu que subyace tras los mercados.

Libros me gustan muchos, pero por reseñar alguno que no sea técnico o formativo sobre trading algorítmico, le tengo un especial cariño al libro de André Kostolany, "El Fabuloso Mundo del Dinero y la Bolsa" por ser el primero que me acercó a los mercados financieros. Y también al libro de Edwards Allen Toppel, Zen in the Markets, pues leí el libro cuando aún hacía trading discrecional. Lo empecé como libro sobre psicología del trader, pues me siento cercano a la filosofía Zen. Pero el libro al final incluía una adenda donde Toppel, que se había curtido en el parquet del Chicago Mercantile Exchange, describía emocionado como el trading algorítmico (que estaba en sus inicios, el libro es de 1992) lograba de manera automática todo lo que él aconsejaba en el libro para un trader discrecional. Cuando lo leí ya habían pasado bastantes años desde su primera publicación y la tecnología en el trading había avanzado mucho, pero me sirvió para dar el salto y explorar el trading algorítmico.

XT: Danos una recomendación especial para los lectores de X-Trader.net.

AP: Para resumirlo en una palabra: ¡investigar! 

Es decir, buscar el conocimiento, estudiar, leer, y después validar o rechazar con experiencias y análisis propios lo aprendido. No asumir nada como totalmente cierto hasta haberlo comprobado por uno mismo con las herramientas adecuadas. En una actividad como el trading, donde existe tanta información que no es válida, esto es especialmente importante, además que nos permite realmente aprehender la realidad de lo que estudiamos.

Ah, y por supuesto, unirse a nuestro grupo de Telegram Python para Trading si están interesados en usar Python, ahí serán bienvenidos.


XT: Tus pensamientos finales sobre el trading y la despedida de rigor.

AP: Los mercados financieros son un gran desafío intelectual y emocional, pero que abordado con optimismo y las herramientas adecuadas, hacen que el trading sea una pasión para muchos.

Ha sido un placer que me hayas entrevistado para X-Trader.net, al que tengo un gran aprecio, y del que aprendo mucho. Un fuerte abrazo.

 

Saludos,
X-Trader

PD: Como colofón a esta entrevista, os dejo este excelente podcast en el que Ferrán Parareda entrevista a Paduel, podéis oirlo haciendo click en el play del reproductor que aparece debajo ;).