¿Cuál es la mejor manera de aprender el comercio algorítmico en Python y probar modelos?

Creo que hay bastantes recursos, pero lo que usted considera la “mejor” forma, por supuesto, depende de lo que ya sabe sobre el comercio y la programación con Python. Recientemente comencé como un novato completo en el comercio con algo de experiencia en programación en Python y ya me he encontrado con muchos recursos:

Tutoriales

  • twiecki / financial-analysis-python-tutorial – Serie de cuadernos que son perfectos para aquellos que no tienen mucha experiencia en Python.
  • Python for Finance: Algorithmic Trading – Escribí este tutorial como parte de mi viaje a las finanzas. Escribí esto desde la perspectiva de un novato total (poca experiencia tanto en finanzas como en Python).

Libros

  • Dominar los pandas para Finanzas: excelente para los usuarios más avanzados de Python, pero también asume una formación en finanzas. Si tiene ambos, ¡este es definitivamente un libro que debe consultar!
  • Python for Finance: gran libro para aquellos con experiencia en finanzas y tal vez menos en Python.

Plataformas

  • The Python Quants Group: una plataforma increíble. Me gusta este porque el grupo de discusión está muy presente, pero también porque estás trabajando con un Jupyter Notebook (= muy familiar para las personas que ya conocen bien la programación de Python). También tiene la opción de tener varias pestañas abiertas, lo que creo que es realmente bueno si está comenzando (y verificando muchos recursos al mismo tiempo)
  • Quantopian: esta también es excelente porque es una especie de solución todo en uno con muchas funciones específicas que puede usar. Creo que este es bueno para aquellos que ya están un poco más avanzados tanto en Python como en finanzas.

Bibliotecas

  • Quantopian / Zipline: solo revisé este y creo que es genial si desea seguir trabajando en su entorno familiar de portátiles Jupyter. Este me gustó mucho. Puede encontrar algunos ejemplos en la documentación, pero confiaría en los tutoriales y el foro de Quantopian para obtener más información sobre cómo trabajar con zipline. También me gusta el hecho de que tienes un grupo de Google que es muy activo y te responderá rápidamente si tienes alguna pregunta (¡ideal para principiantes!)
  • blampe / IbPy: en caso de que desee ver el comercio en vivo. Visité esta biblioteca varias veces y la revisaré a continuación.

Puede probar IBridgepy para construir y probar modelos.

El IBridgePy del Dr. Liu es el contenedor que lo ayudará a operar en la API de Interactive Brokers utilizando Python, en lugar de IBPy o Quantopian. QuantInsti organizó un seminario web muy exitoso sobre este tema y tuvimos un número récord de inscriptos (más de 1000) que asistieron al seminario web realizado por el propio Dr. Liu. Compartiré el enlace al seminario web al final de este artículo.

IBridgePy

IBridgePy es uno de los paquetes Python más flexibles y amigables que se puede usar para implementar Python en la API de Interactive Brokers. Es bastante diferente de IBPy.

¿Cómo?

Bueno, es una implementación de terceros de la interfaz de programación de aplicaciones que se utiliza para acceder a la estación de trabajo Trader de IB. Mientras IBridgePy funciona de manera diferente; no vuelve a implementar la API de los corredores interactivos. En cambio, ayuda a Python a llamar a la API C ++ de IB directamente, ya que actúa como un contenedor. Dado que IBridgePy llama directamente a la API C ++ de IB, por lo tanto, podemos esperar menos errores y excepciones en el programa.

¿Por qué?

Por una simple razón: Interactive Brokers C ++ API es oficialmente mantenida por Interactive Brokers. De hecho, cuando Interactive Brokers tendrá una nueva versión de su plataforma, la API también se actualizará.

¿Cuáles son los beneficios de usar IBridgePy?

IbridgePy tiene algunas características clave que lo hacen más beneficioso para los usuarios y voy a enumerarlas como:

  1. Flexibilidad
  2. Facilidad de uso
  3. Intimidad

Flexibilidad

Lo mejor de IBridgePy es el hecho de que puede usarlo para negociar cualquier tipo de valores. Puede intercambiar acciones, futuros, opciones, divisas, etc. Una de las motivaciones del Dr. Liu para desarrollar IBridgePy fue hacer que la aplicación sea flexible. Quantopian le permite operar solo en acciones y la frecuencia de tiempo para operar es de solo dos minutos. En IBridgePy, puede usar cualquier paquete de Python y acceder a la fuente de datos desde cualquier lugar.

Fácil de usar

La complejidad de la API de Interactive Brokers ha sido completamente eclipsada por la interfaz fácil de usar de IBridgePy . No tendrá que hacer ningún esfuerzo adicional para administrar sus pedidos pendientes o escribir códigos para obtener datos históricos o cotizaciones del servidor, ya que el contenedor se encarga de ello.

Intimidad

La privacidad es muy importante y uno de los factores pasados ​​por alto a veces cuando entrega sus credenciales a un programa de terceros que se ejecuta en un servidor diferente. Sin embargo, IBridgePy se está ejecutando en su computadora, por lo que su privacidad está totalmente bajo su control.

¿Quién debe usar IBridgePy?

  • Las personas que están en el comercio automatizado
  • Aquellos que quieran usarlo como un mercado o una bolsa de valores

¿Cómo instalar IBridgePy?

En primer lugar, deberá enviar un correo electrónico a [correo electrónico protegido] solicitando la aplicación independiente. Recibirá el enlace de descarga por correo electrónico.

Descargue el archivo comprimido (.zip) y extráigalo en su carpeta local.

Prerrequisitos

Debe tener los siguientes programas instalados en su sistema:

  1. Corredores interactivos TWS. Hemos discutido en detalle cómo instalar Interactive Brokers TWS en el artículo anterior.
  2. Alternativamente, también puede usar IB Gateway (que viene junto con TWS)
  3. También debe tener un paquete de Python instalado en su sistema. Estoy usando Anaconda, sin embargo, el Dr. Liu me recomendó usar Python (XY), que es un IDE científico para Python que solo se ejecuta en Windows.
  4. Debe tener IbridgePy (y el conjunto de programas de muestra) que puede obtener escribiendo una solicitud al correo electrónico de IbridgePy mencionado anteriormente.

TWS o IB Gateway?

Tanto TWS como Gateway se pueden usar para comerciar. Si eres relativamente nuevo en el comercio, entonces recomendaría TWS ya que es más fácil de usar. Sin embargo, si desea ahorrar tiempo y evitar reinicios del sistema IB, vaya a la puerta de enlace IB.

Seguiremos los mismos pasos que en el artículo anterior. Cuando aparezca la pantalla de inicio de sesión, verifique IB Gateway y continúe. Cuando se abre IB Gateway, vamos a su configuración, tal como lo hicimos con TWS.

Esto será seguido por la configuración manual de IB Gateway. A continuación, haga clic en Configuración. Aunque no hay nada que cambiar aquí, podemos configurar el puerto según su necesidad, aunque no se recomienda.

También configuraremos TWS, como hicimos en el artículo anterior. Reinicie TWS después de configurarlo.

Preparando IDE

El siguiente paso importante en este tutorial es preparar el IDE de Python. Si está utilizando Python (XY), debe iniciar el ejecutable y ejecutar spyder desde allí:

Una vez que Spyder se inicia, y sigue estos pasos:

  1. Vaya a Ver luego Paneles y marque Editor y Consola
  2. Agregue la carpeta a la Ruta de Python haciendo clic en Herramientas y luego seleccionando el administrador PYTHONPATH . Aquí hará clic en Agregar ruta y elegirá la carpeta donde descomprimió IBridgePy .
  3. Haga clic en cerrar para aceptarlo.
  4. Reinicia Spyder.

Ejecución de programa de muestra

Haga clic en RUN_ME.py en Spyder IDE haciendo clic en Archivo y luego en Abrir.

* RUN_ME.py es el programa en el que puede ejecutar esto como entrada, pero example_moving_average_cross.py es el archivo donde se mantiene la estrategia comercial.

Después de esto, asegúrese de iniciar sesión en IB TWS o IB Gateway. Presiona el triángulo verde o presiona F5.

Decodificando la Estructura del Código

Tal como había discutido sobre la estructura del programa en mi artículo anterior, aquí también voy a hablar sobre la estructura del código.

Definimos initialize (), que es un método incorporado para reclamar variables que solo se ejecutarán una vez.

A continuación definimos handle_data () , que también es un método incorporado donde se toma la decisión comercial. Aquí se dan dos entradas (contexto, datos) . El contexto contiene las variables reclamadas en initialize () . Mientras que los datos son la transmisión en vivo recibida diariamente o minuciosamente.

Línea 16 ~ línea 19: puede elegir un algoritmo que desee ejecutar comentando otros

Línea 20: el código de su cuenta de Interactive Brokers

Línea 21: La frecuencia o con qué frecuencia la función de handle_data (contexto, datos), 60 significa ejecutarlo cada minuto y 1 significa ejecutarlo cada segundo.

Línea 22: hay 4 niveles para mostrar resultados

  • ERROR: solo muestra mensajes de error
  • INFORMACIÓN: los usuarios típicos lo usarán para conocer los resultados de tu algo
  • DEPURACIÓN: es posible que sepa más información cuando depure su algo
  • NOTSET: verá información tremenda si realmente quiere saber qué está pasando

Las 3 piedras angulares de IBridgePy

Estas son tres de las funciones integradas más llamativas que forman los pilares de IbridgePy:

  • Show_real_time_price
  • Request_data
  • Poner orden

Cotizaciones en tiempo real

Siempre que necesite cotizaciones en tiempo real, puede usar la función integrada show_real_time_price

En la línea anterior, verá que los parámetros utilizados son EFECTIVO, EUR, USD, que regresará con las tasas de cambio en tiempo real para las monedas especificadas.

Del mismo modo, puede usar STK, AAPL, USD y el valor de las acciones de APPLE en dólares estadounidenses. STK es el tipo de seguridad, que hemos discutido en detalle en el artículo anterior sobre Implementar Python en la API de Interactive Brokers usando IBPy.

Obteniendo datos históricos

request_data es la función que se utiliza para obtener datos históricos de Interactive Brokers. También deberá especificar un parámetro historyData .

Parámetros involucrados

  • Usando los parámetros, seleccionamos el instrumento para el que se deben obtener los datos históricos, en el ejemplo anterior es SPY, que es un seguimiento de ETF en el índice S & P500
  • A continuación especificamos el intervalo de tiempo, en nuestro ejemplo es ‘1 día’
  • El período de retroceso es el siguiente parámetro donde especificamos el período de datos históricos que se requiere. En nuestro ejemplo, es ’50 D ‘ significa retroceder 50 días a partir de hoy.
  • Los datos históricos recuperados se guardan en un marco de datos de pandas que se guardan en hist, un atributo de la clase de datos, guardado en un diccionario llamado datos.

Salida

Solicitar múltiples datos históricos

Al igual que solicitó datos históricos de Interactive Brokers durante un período de tiempo específico, también puede obtener múltiples datos históricos a la vez. Mira el código a continuación:

He especificado SPY y AAPL y el intervalo de tiempo especificado es de 1 min (1 minuto) y 1 día respectivamente. El período especificado es 1 D y 10 D (D = días) respectivamente. Del mismo modo, también hemos especificado los requisitos en la función de salida.

La salida

Poner orden

La colocación de pedidos es el paso importante en todo nuestro proceso y así es como hacemos pedidos en Interactive Brokers usando IBridgePy:

  • Colocar órdenes de mercado: orden (símbolo (‘seguridad’), x)

Aquí la seguridad es la seguridad objetivo, por ejemplo, SPY yx es el número de acciones. –X significa VENDER yx significa COMPRAR .

Por ejemplo, orden (símbolo (‘SPY’), 100)

  • El objetivo de seguridad es SPY
  • La acción es COMPRAR 100 acciones cuando n> 0
  • Si fue -100, entonces el número negativo significa VENDER, -100 = VENDER 100 acciones
  • order_target (symbol (‘SPY’), 100) ajustará las posiciones en función de sus posiciones de tenencia, ya sea COMPRAR o VENDER hasta que tenga 100 acciones
  • Realizar orden de límite / detención (símbolo (‘SPY’), 100, orden de límite (213.42)) realizar una orden de límite para COMPRAR 100 acciones de SPY al precio = $ 213.42 por acción (símbolo (‘SPY’), -100, orden de detención (213.42 )) coloque una orden de stop para VENDER 100 acciones de SPY al precio = $ 213.42 por acción
  • Se recomienda realizar un seguimiento del estado del pedido que realizó mediante order_status_monitor ()

Al igual que en el tutorial anterior, habíamos especificado un orderId, aquí también especificamos una función orderId que es la identidad única de sus solicitudes de pedido. Para las órdenes de mercado, debe esperar ‘Llenado’ como el punto final de su solicitud de orden, lo que significa que las órdenes se han ejecutado en Interactive Brokers.

Para las órdenes de límite y detención, el estado esperado es ‘Enviado’, lo que significa que las órdenes han sido aceptadas por IB y en espera de ejecuciones. Para valores de alta liquidez, no llevará mucho tiempo (unos segundos) completar las transacciones.

IbridgePy.Trader_single_account es el nombre del módulo y le sigue una SOLICITUD para comprar 100 acciones. Esto es seguido por el saldo de la cuenta .

Hay un sitio web realmente bueno en Internet, donde se discute mucho comercio algorítmico. El autor del sitio web también ha escrito algunos libros sobre el comercio algorítmico.

Él usa Python para implementar cosas. También han lanzado una plataforma de comercio de código abierto para el comercio algorítmico, que está escrito en Python.

Comercio algorítmico, comercio cuantitativo, estrategias comerciales, backtesting e implementación

También puede consultar los siguientes blogs que pueden ser de ayuda para aprender algo sobre el comercio con Python

Comercio utilizando Machine Learning en Python Parte-1

Crear indicadores técnicos en Python

Usando IBridgePy para implementar Python en la API de Interactive Brokers

Tutorial de IBPy para implementar Python en la API de Interactive Brokers

More Interesting

¿Cuál es la ecuación general para calcular la probabilidad de encontrar una cadena de longitud N en una cadena M más larga de caracteres aleatorios, cada uno elegido de {AZ}?

¿Se puede estafar el algoritmo de Zoopla para inflar el precio de una propiedad?

¿Qué técnica general siguen los autores al escribir libros técnicos en LaTeX?

¿Cuál es uno de tus problemas favoritos que has encontrado en mecánica / dinámica clásica?

¿Qué métodos matemáticos se utilizan para rastrear el efecto de mercado de los algoritmos comerciales de alta frecuencia?

¿Qué es mejor, resolver menos problemas por su cuenta o más problemas usando sugerencias?

¿Qué algoritmo se debe usar para una tesis que tiene al menos tres desventajas que se pueden resolver?

Cómo clasificar videos de YouTube usando el algoritmo de puntuación de Wilson

¿Cómo se puede mejorar la velocidad de los algoritmos de reconocimiento facial?

¿Por qué muchos elementos utilizados en la función objetivo de un algoritmo de aprendizaje asumen todas las características centradas en cero y tienen una varianza en el mismo orden?

¿Cómo funciona el algoritmo de fijación de precios de Megabus?

Inventé un algoritmo de búsqueda de cadenas. ¿Cómo hago para asegurarme de que lleva mi nombre? ¿Es posible patentarlo / copyright o alguna otra cosa? ¿Se pueden proteger los algoritmos?

¿Cuándo se usaría un algoritmo gráfico?

¿Por qué la clasificación rápida se considera una clasificación inestable?

¿En qué tipo de índices de búsqueda y enfoque se debe trabajar para un sitio web con búsqueda basada en la ciudad (y localidad) de una palabra clave, un ejemplo típico es un directorio web?