Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

El dataísmo dice que el universo consiste en flujos de datos, y que el valor de cualquier fenómeno o entidad viene determinado por su contribución al procesamiento de datos....El dataísmo derrumba así la barrera entre animales [humanos] y máquinas, y espera que los algoritmos electrónicos acaben descifrando y superando a los algoritmos bioquímicos.1

Yuval Noah Harari

Encontrar el algoritmo adecuado para operar automáticamente y con éxito en los mercados financieros es el santo grial de las finanzas. No hace mucho tiempo, la negociación algorítmica sólo estaba disponible y era posible para los agentes institucionales con bolsillos profundos y muchos activos bajo gestión. Los recientes avances en los ámbitos del código abierto, los datos abiertos, la computación en la nube y el almacenamiento en la nube, así como las plataformas de negociación en línea, han allanado el terreno de juego para las instituciones más pequeñas y los operadores individuales, haciendo posible iniciarse en esta fascinante disciplina equipados únicamente con el típico ordenador portátil o de sobremesa y una conexión fiable a Internet.

Hoy en día, Python y su ecosistema de potentes paquetes es la plataforma tecnológica preferida para el trading algorítmico. Entre otras cosas, Python te permite realizar análisis de datoseficientes (con pandaspor ejemplo), aplicar el aprendizaje automático a la predicción bursátil (con scikit-learnpor ejemplo), o incluso hacer uso de la tecnología de aprendizaje profundo de Google con TensorFlow.

Éste es un libro sobre Python para el trading algorítmico, principalmente en el contexto de las estrategias generadoras de alfa (véaseel Capítulo 1). Un libro así, en la intersección de dos campos vastos y apasionantes, difícilmente puede abarcar todos los temas de relevancia. Sin embargo, puede cubrir en profundidad una serie de metatemas importantes.

Estos temas incluyen:

Datos financieros

Los datos financieros son el núcleo de todo proyecto de negociación algorítmica. Python y paquetes como NumPy y pandas hacen un gran trabajo manejando y trabajando con datos financieros estructurados de cualquier tipo (al final del día, intradía, altafrecuencia).

Backtesting

No debería haber negociación algorítmica automatizada sin una prueba rigurosa de la estrategia de negociación que se va a implementar. El libro trata, entre otras cosas, de estrategias de negociación basadas en medias móviles simples, impulso, reversión a la media y predicción basada en aprendizaje profundo/máquina.

Datos en tiempo real

El trading algorítmico requiere tratar con datos en tiempo real, algoritmos en línea basados en ellos y visualización en tiempo real. El libro ofrece una introducción a la programación de sockets con ZeroMQ y a la visualización en streaming.

Plataformas online

No se puede operar sin una plataforma de negociación. El libro cubre dos plataformas de negociación electrónica muy populares: Oanda y FXCM.

Automatización

La belleza, así como algunos retos importantes, de la negociación algorítmica se derivan de la automatización de la operación de negociación. El libro muestra cómo implementar Python en la nube y cómo configurar un entorno adecuado para la negociaciónalgorítmica automatizada.

El libro ofrece una experiencia de aprendizaje única con las siguientes características yventajas:

Cobertura de temas relevantes

Éste es el único libro que abarca tal amplitud y profundidad en lo que se refiere a temas relevantes en Python para el trading algorítmico (ver a continuación).

Código base autónomo

El libro va acompañado de un repositorio Git con todos los códigos de forma autocontenida y ejecutable. El repositorio está disponible en la Plataforma Quant.

El comercio real como objetivo

La cobertura de dos plataformas de negociación online diferentes pone al lector en situación de comenzar a negociar tanto en papel como en vivo de forma eficaz. Para ello, el libro dota al lector de conocimientos previos relevantes, prácticos y valiosos.

Enfoque "hazlo tú mismo" y autodidacta

Dado que el material y el código son autónomos y sólo se basan en paquetes estándar de Python, el lector tiene pleno conocimiento y control sobre lo que ocurre, cómo utilizar los ejemplos de código, cómo modificarlos, etc. No hay necesidad de depender de plataformas de terceros, por ejemplo, para hacer el backtesting o para conectarse a las plataformas de negociación. Con este libro, el lector puede hacer todo esto por su cuenta a un ritmo cómodo y dispone de todas y cada una de las líneas de código para hacerlo.

Foro de usuarios

Aunque el lector debería ser capaz de seguirlo sin problemas, el autor y The Python Quants están ahí para ayudar. El lector puede publicar preguntas y comentarios en el foro de usuarios de la Plataforma Quant en cualquier momento (las cuentas son gratuitas).

Formación online/vídeo (suscripción de pago)

Los Python Quants ofrecen completos programas de formación en línea que aprovechan los contenidos presentados en el libro y que añaden contenidos adicionales, cubriendo temas importantes como la ciencia de datos financieros, la inteligencia artificial en finanzas, Python para Excel y bases de datos, y herramientas y habilidades adicionales de Python.

Contenido y estructura

Aquí tienes un resumen rápido de los temas y contenidos presentados en cada capítulo.

Capítulo 1, Python y el trading algorítmico

El primer capítulo es una introducción al tema de la negociación algorítmica, es decir, la negociación automatizada de instrumentos financieros basada en algoritmos informáticos. Analiza las nociones fundamentales en este contexto y también aborda, entre otras cosas, cuáles son los requisitos previos esperados para leer el libro.

Capítulo 2, Infraestructura de Python

Este capítulo sienta las bases técnicas para todos los capítulos posteriores, ya que muestra cómo configurar un entorno Python adecuado. Este capítulo utiliza principalmente conda como gestor de paquetes y entornos. Ilustra la implementación de Python mediante contenedores Docker y en la nube.

Capítulo 3, Trabajar con datos financieros

Los datos de series temporales financieras son fundamentales para todo proyecto de negociación algorítmica. Este capítulo te muestra cómo recuperar datos financieros de distintas fuentes de datos públicas y propias. También demuestra cómo almacenar datos de series temporales financieras de forma eficiente con Python.

Capítulo 4, Dominar el Backtesting Vectorizado

La vectorización es un potente enfoque en el cálculo numérico en general y para el análisis financiero en particular. Este capítulo presenta la vectorización con NumPy y pandas y aplica ese enfoque al backtesting de estrategias basadas en SMA, en el impulso y en la reversión de la media.

Capítulo 5, Predecir los movimientos del mercado con aprendizaje automático

Este capítulo está dedicado a generar predicciones de mercado mediante el uso de enfoques de aprendizaje automático y aprendizaje profundo. Basándose principalmente en observaciones de rentabilidades pasadas como características, se presentan enfoques para predecir la dirección del mercado de mañana utilizando paquetes de Python como Keras en combinación con TensorFlow y scikit-learn.

Capítulo 6, Construir clases parabacktesting basado en eventos

Aunque el backtesting vectorizado tiene ventajas en cuanto a la concisión del código y el rendimiento, es limitado en lo que respecta a la representación de determinadas características del mercado de las estrategias de negociación. En cambio, el backtesting basado en eventos, implementado técnicamente mediante el uso de programación orientada a objetos, permite un modelado bastante granular y más realista de dichas características. Este capítulo presenta y explica detalladamente una clase base y dos clases para el backtesting de estrategias de negociación long-only y long-short.

Capítulo 7, Trabajar con datos en tiempo real y sockets

La necesidad de manejar datos en tiempo real o en streaming es una realidad incluso para el ambicioso operador algorítmico individual. La herramienta elegida es la programación por sockets, que en este capítulo se presenta ZeroMQ como una tecnología ligera y escalable. El capítulo también ilustra cómo utilizar Plotly para crear gráficos de flujo interactivos y de aspecto agradable.

Capítulo 8, Operar con CFDs con Oanda

Oanda es una plataforma de negociación de divisas (forex, FX) y Contratos por Diferencia (CFD) que ofrece un amplio conjunto de instrumentos negociables, como los basados en pares de divisas, índices bursátiles, materias primas o instrumentos de tipos (bonos de referencia). Este capítulo proporciona orientación sobre cómo implementar estrategias automatizadas de negociación algorítmica con Oanda, haciendo uso del paquete envoltorio Python tpqoa.

Capítulo 9, Operar en divisas con FXCM

FXCM es otra plataforma de negociación de divisas y CFD queha lanzadorecientemente una moderna API RESTful para la negociación algorítmica. Los instrumentos disponibles abarcan múltiples clases de activos, como divisas, índices bursátiles omaterias primas. Hay disponible un paquete envoltorio de Python que hace que la negociación algorítmica basada en código Python sea bastante cómoda y eficiente(http://fxcmpy.tpq.io).

Capítulo 10, Automatizar las operaciones comerciales

Este capítulo trata de la gestión del capital, el análisis y la gestión del riesgo, así como de las tareas típicas de la automatización técnica de las operaciones de negociación algorítmica. Trata en detalle, por ejemplo, el criterio Kelly para la asignación de capital y elapalancamiento.

Apéndice A, Python, NumPy, matplotlib, pandas

El apéndice proporciona una introducción concisa a los temas más importantes de Python, NumPy, y pandas en el contexto del material presentado en los capítulos principales. Representa un punto de partida desde el que uno puede ampliar sus propios conocimientos de Python con el tiempo.

La Figura P-1 muestra las capas relacionadas con el trading algorítmico que cubren los capítulos de abajo a arriba. Comienza necesariamente con la infraestructura Python(Capítulo 2), y añade los datos financieros(Capítulo 3), la estrategia y el código de backtesting vectorizado (Capítulos 4 y 5). Hasta ese momento, los conjuntos de datos se utilizan y manipulan como un todo. El backtesting basado en eventos introduce por primera vez la idea de que los datos del mundo real llegan de forma incremental(Capítulo 6). Es el puente que conduce a la capa de código de conexión que abarca la comunicación por sockets y la manipulación de datos en tiempo real(Capítulo 7). Además, se requieren plataformas de negociación y sus API para poder colocar órdenes (Capítulos 8 y 9). Por último, se tratan aspectos importantes de la automatización y la implementación(Capítulo 10). En ese sentido, los principales capítulos del libro se relacionan con las capas que se ven en la Figura P-1, que proporcionan una secuencia natural para los temas que se van a tratar.

pfat 0001
Figura P-1. Las capas de Python para la negociación algorítmica

A quién va dirigido este libro

Este libro está dirigido tanto a estudiantes como a académicos y profesionales que deseen aplicar Python en el fascinante campo de la negociación algorítmica. El libro asume que el lector tiene, al menos a un nivel fundamental, conocimientos previos tanto de programación en Python como de negociación financiera. Como referencia y repaso, el Apéndice A presenta temas importantes de Python, NumPy, matplotlib, y pandas. Las siguientes son buenas referencias para comprender bien los temas de Python importantes para este libro. La mayoría de los lectores se beneficiarán de tener al menos acceso a Hilpisch (2018) como referencia. En cuanto a los enfoques de aprendizaje automático y profundo aplicados al trading algorítmico, Hilpisch (2020) proporciona abundante información de fondo y un mayor número de ejemplos concretos. Puedes encontrar información de fondo sobre Python aplicado a las finanzas, la ciencia de los datos financieros y la inteligencia artificial en lossiguientes libros:

Puedes encontrar información de fondo sobre la negociación algorítmica, por ejemplo, en estos libros:

Disfruta de tu viaje por el mundo del trading algorítmico con Python y ponte en contacto enviando un correo electrónico a py4at@tpq.io si tienes preguntas o comentarios.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos, para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Este elemento significa un consejo o sugerencia.

Este elemento significa una nota general.

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

Puedes acceder y ejecutar el código que acompaña al libro en la Plataforma Quant en https://py4at.pqp.io, para lo que sólo se requiere un registro gratuito.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativade códigode ejemplo de este libro en la documentación de tu producto sí requierepermiso.

Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo, este libro puede atribuirse como: "Python for Algorithmic Trading " de Yves Hilpisch (O'Reilly). Copyright 2021 Yves Hilpisch, 978-1-492-05335-4".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/py4at.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para obtener noticias e información sobre nuestros libros y cursos, visita http://oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

Míranos en YouTube: http://youtube.com/oreillymedia

Agradecimientos

Quiero dar las gracias a los revisores técnicos -Hugh Brown, McKlayne Marshall, Ramanathan Ramakrishnamoorthy y Prem Jebaseelan- que aportaron útiles comentarios que condujeron a muchas mejoras del contenido del libro.

Como siempre, un agradecimiento especial a Michael Schwed, que me apoya en todas las cuestiones técnicas, sencillas y muy complejas, con sus amplios y profundos conocimientos tecnológicos.

Los delegados de los Programas de Certificación en Python para Finanzas Computacionales y Trading Algorítmico también ayudaron a mejorar este libro. Sus continuos comentarios me han permitido eliminar errores y fallos y perfeccionar el código y los cuadernos utilizados en nuestras clases de formación en línea y ahora, por fin, en este libro.

También quiero dar las gracias a todo el equipo de O'Reilly Media -especialmente a Michelle Smith, Michele Cronin, Victoria DeRose y Danny Elfanbaum- por haber hecho posible todo esto y haberme ayudado a perfeccionar el libro de muchas maneras.

Por supuesto, todos los errores restantes son sólo míos.

Además, también me gustaría dar las gracias al equipo de Refinitiv -en particular, a Jason Ramchandani- por proporcionar apoyo continuo y acceso a los datos financieros. Los principales archivos de datos utilizados a lo largo del libro y puestos a disposición de los lectores se recibieron de un modo u otro de las API de datos de Refinitiv.

A mi familia con amor. Dedico este libro a mi padre Adolf, cuyo apoyo a mí y a nuestra familia abarca ya casi cinco décadas.

1 Harari, Yuval Noah. 2015. Homo Deus: Una Breve Historia del Mañana. Londres: Harvill Secker.

Get Python para el trading algorítmico now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.