Editar (2016-06-21): Ahora con integración de datos/comercio en vivo con Interactive Brokers. Ha tomado un tiempo, pero finalmente ha llegado.
Editar (2017-09-20): los datos/comercio en vivo incluyen Visual Chart y Oanda (cuentas heredadas), tipos de órdenes, temporizadores y calendarios de mercado, actualización con Python 3.6 y los enlaces de la comunidad y otros enlaces actualizados
Un framework de backtesting en Python (ahora) muy maduro (en mi humilde opinión) es "backtrader":
Algunas características:
-
Puede correr en modo (pseudo)evento (llamado 'next') o en modo (pseudo)vectorizado (llamado 'runonce')
- En modo "next" también se puede configurar para trabajar en modo "exactbars" que mantendrá el consumo de memoria al mínimo (desactivando la representación gráfica en el camino)
-
Notificación de órdenes/comercios a las estrategias (esto obviamente siempre es un evento)
-
Soporta fuentes CSV (algunas fuentes específicas y un cargador CSV genérico) fuentes binarias (VisualChart, Pandas, Blaze) y en línea (Datos de Yahoo Finance - cuidado con los cambios/problemas introducidos por Yahoo en 2017)
-
Re-muestreo de datos y Reproducción de datos
-
Mezcla datos de diferentes marcos de tiempo (incluyendo un dato y su contraparte "re-muestreada")
-
Capaz de múltiples activos
-
Capaz de múltiples estrategias
-
Una implementación de broker muy buena (en mi humilde opinión) que soporta instrumentos tipo acciones y tipo futuros (con margen) con esquemas de comisión implementables por el usuario si es necesario, incluyendo deslizamiento.
La parte más bonita es el ajuste de efectivo para instrumentos tipo futuros en cada barra
-
Órdenes: Mercado, Límite, Stop, StopLímite, StopTrail, Bracket, OCO, Compensación Futuro-Spot, Mercado-Al-Cierre
-
Dimensionadores para apuestas automatizadas
-
Modos de tongo-al-cierre y tongo-a-la-apertura para trabajar con precios ya pasados o precios por venir, cuando no se tenga acceso a datos de resolución más baja
-
Tiene una lista comprensiva de indicadores implementados
-
Integración con TA-lib
-
Algunos analizadores (Rendimiento Anual, Sharpe, Analizador de Transacciones)
-
Puede optimizar estrategias y utilizar múltiples núcleos para la tarea
-
Soporte de representación gráfica a través de Matplotlib (>= 1.4.1) con un alto grado de configurabilidad y flexibilidad (los gráficos se ven bien)
-
Un escritor de texto para la salida en la consola de puntos de datos (csv) y resúmenes de datos/estrategias/indicadores/analizadores
-
Soporta calendarios de mercado
-
Temporizadores incluso durante el backtesting
-
Uso intensivo de metaclasses y sobrecarga de operadores para implementar facilidad de uso y un enfoque de expresión declarativa para la lógica e implementación de estrategias/indicadores
-
Funciona con Python 2.7 / 3.2 / 3.3 / 3.4 / 3.5 / 3.6
Divulgación: Soy el autor que trabajó durante 2015 en este proyecto como hobby, pero con el objetivo de hacerlo lo más completo y profesional posible
Por supuesto, queda a discreción del lector decidir si las afirmaciones y metas mencionadas han sido alcanzadas
Como mencionó edouard, cada framework tiene sus peculiaridades y en realidad comencé esto después de jugar un poco con pyAlgoTrade y no me gustó mucho la API, lo cual es, por supuesto, una cuestión de gusto personal.
1 votos
¿Qué usa actualmente tu empleador?
0 votos
@Terence Ng: Tengo curiosidad, ¿qué es lo que hace que Zipline no sea adecuado para ti?