En primer lugar, usted probablemente va a ser dirigida a considerar Tirolesa. Vale la pena un vistazo, pero no creo que es un buen punto de partida, ya que:
Quantopian es que los desarrolladores no tienen un historial financiero y se muestra a través de la Tirolesa código fuente.
Zipline es terriblemente lenta si la comparamos con cualquier plataforma comercial con backtesting de la funcionalidad en una aplicación compilada, incluso los de gama baja de comercio minorista plataformas (por ejemplo, NinjaTrader, Sierra, TradeStation).
Zipline no es muy conveniente para el comercio de varios productos. Creo que el producto más barato que tiene ese nivel de funcionalidad es Deltix.
Un procesador moderno debe ser capaz de hacer el backtest una estrategia de crossover promedio móvil a través de todo un día de la OPRA de alimentación (todos los productos) sin la programación de la noche a la mañana. Menos funcionalidad o más lento y tiene buenos desarrolladores. (Recuerdo Goldman había 12-14 servidores ocupan en tiempo real OPRA en 2007-2008 y 2 personas reescribió toda la cosa a partir de cero, destino de 128 bits de la arquitectura de un fin de semana. No hay razón por la que los años de desarrollo en Tirolesa no se adecua a 2 desarrolladores en un fin de semana antes del Intercambio de la Pila existido.)
Aquí están algunas de las principales consideraciones que hay que hacer antes de la construcción de su backtesting motor:
-
¿Cómo va a almacenar/serializar su mercado de datos en el disco y en la memoria?
Un pobre hombre del enfoque es que se envuelve alrededor de un pandas
dataframe, pero esto viene en el costo de la abstracción y ralentizar el backtesting del motor. pandas
es bueno para la exploración de datos, pero no para una tarea que se repita muchas veces.
¿Cómo va a manejar un origen de datos cuyo tamaño excede la memoria disponible?
¿Cómo va a lidiar con no estructurados de datos de mercado?
-
¿Cómo va a ser el almacenamiento de sus productos?
- Obvio, ingenuo problema es que usted no desea reiniciar un backtest que tomó 1 noche a ejecutar si la aplicación se estrelló a mitad de camino. Otro ingenuo ejemplo es que usted debería ser capaz de acceder a los resultados anteriores de 6 meses sin repetir el backtest de bucle.
¿Cuál es tu relleno de la lógica?
¿Qué debe su API de exponer? (por ejemplo, órdenes de Mercado, órdenes de límite, instrumento de/precio/volumen de consultas, cambios para llenar la lógica)