Regreso al futuro: las pruebas de rendimiento del robot de comercio con la ayuda de los datos históricos





Hemos examinado previamente la cuestión de la estrategia de negociación etapas de desarrollo obligatorios para el mercado de valores. Uno de los pasos más importantes es las estrategias de pruebas de rendimiento sobre los datos históricos - backtesting. Hoy vamos a hablar sobre eso exactamente.

¿Qué es lo h4> En términos simples, backtesting es ejecutar las estrategias de negociación algoritmo utilizando datos financieros históricos. Algoritmo para encontrar estos u otros eventos de acciones ("Señales"), va a generar órdenes de compra o venta de instrumentos financieros - estas operaciones tendrán una ganancia o pérdida asociada.

El importe total de la ganancia o pérdida (pérdida, P & L, PnL y beneficios) durante un tiempo predeterminado en la estrategia de negociación será un indicador del éxito o el fracaso del algoritmo.

Hay varios objetivos buscados por los desarrolladores de software comercial que utilizan backtesting:

  • Filtro - Cada estrategia tiene ciertos indicadores para prizvoditelnosi y la eficiencia, que se incorporan en él por el desarrollador. En consecuencia, cualquier estrategia que no permite alcanzar estos objetivos debe ser "filtrada".
  • Simulación - el uso de los desarrolladores de backtesting pueden probar varios modelos de mercado (cambios en las condiciones de liquidez, los costos de transacción, la velocidad del procesamiento de pedidos, los retrasos en los canales, etc.) sin el riesgo de perder dinero real .
  • Optimización -. mediante la estrategia de "correr" en los datos históricos puede mejorar su desempeño en situaciones específicas del mercado
  • Verificación b > -. con el desarrollador de pruebas puede entender si no hubo errores en la descripción de la estrategia en el código


    Las ideas falsas sobre backtesting h4> El reconocido experto en el comercio de acciones, desarrollador e intercambiar robots quant Michael Moore-Cascos, convencido de que los sistemas de intercambio desarrolladores novatos a menudo cometen errores cuando se crean debido a ciertas ideas erróneas. En particular, el experto приводит cuatro de estos conceptos erróneos:

    Esperando resultados igualmente buenos en el futuro h5> A menudo, el desarrollador se enfrenta a la tentación de modificar los parámetros de la prueba para obtener resultados más concluyentes.

    Así, si en el caso de los datos históricos es posible cambiar nada y predecir con exactitud el resultado, el modo de "combate" el robot puede funcionar tan efectivamente. Es necesario medir el desempeño de las estrategias para diferentes valores de los parámetros de entrada.

    Uso de "futuros" de datos h5> En algunos casos, los creadores de estrategias de negociación incluye los datos establecen suposiciones sobre el estado futuro del mercado. En caso de errores en el código de cálculo de forma incorrecta los parámetros óptimos para la estrategia o el uso incorrecto de los valores de los precios extremos (máximos y mínimos), la puesta en marcha de una estrategia de este tipo en el mercado de bienes puede fallar (esta es una de las razones más frecuentes por las estrategias de los datos históricos de trabajar con eficacia que en tiempo real).

    Apreciación errónea de su estabilidad psicológica h5> Durante el desarrollador prueba ve el rendimiento final de su algoritmo. Si en algún momento en el tiempo (por ejemplo, un año o cinco años), el sistema hace un beneficio, es tentador hacer caso omiso de la subsidencia del depósito (de pérdidas), que se produjo en el transcurso de este camino hacia el éxito. Las personas piensan que pueden sobrevivir fácilmente la pérdida de 25% de su dinero (después de todo, entonces el robot debe recuperar).

    En la práctica no todos tienen suficiente resistencia para sobrevivir a estos momentos sin hacer acciones temerarias (y si el algoritmo permite la pérdida del 25% del dinero en la historia, y la realidad de esta situación es muy probable), que a menudo conducen a pérdidas aún mayores.

    ¿Qué parámetros deben ser considerados h4> sistemas de comercio de los desarrolladores deben tener en cuenta muchos parámetros diferentes que pueden afectar a la viabilidad financiera último de una estrategia particular.

    Los costos de transacción h5> Los comerciantes novatos a menudo prestan atención únicamente a la realización de su algoritmo directamente en el mercado, pero se olvide de tener en cuenta los costes asociados, que podrían compensar la totalidad del ingreso del trabajo. Los costos más evidentes en este caso será una comisión por operaciones con cargos intercambios y corredores (en ITinvest sobre algunos aranceles más o menos corresponden a la central).

    deslizamiento y demoras h5> El deslizamiento es la diferencia de precio entre el uno en el que el comercio de robot destinado a llevar a cabo la transacción, y el de los que en realidad se llevó a cabo. Para la "entrega" en el sistema de comercio de cambio de kernel para toma tiempo. En el caso de los robots de alta velocidad de trading (HFT) en la cuenta de cada milisegundo, para los que el precio puede cambiar un poco, por lo que el trato menos favorable (desfavorable) o general.

    Algunos instrumentos financieros tienen alto de volatilidad (el precio cambia con frecuencia), por lo que cuando se trabaja con ellos te deben hacer concesiones para su posible deslizamiento.

    El impacto de la liquidez h5> Cuando se trabaja con instrumentos relativamente ilíquidos comerciante debe tener en cuenta el posible impacto que las acciones de su sistema de comercio tendrán en el mercado. Si una determinada cuota de compra y venta no son muchas personas, el fin de comprar un número significativo de dichas acciones pueden cambiar en gran medida su precio. Para evitar esta situación, es necesario enseñar a un robot a romper el acuerdo sobre un gran número de pequeños pedidos que no pueden afectar fuertemente el mercado.

    Los tipos de órdenes de operaciones h5> La operación de una estrategia de negociación se ve influida por el hecho de algunos de sus órdenes de operaciones desarrollador planea utilizar para las transacciones. Muy a menudo, los comerciantes han recurrido al mercado-pedidos y límite-pedidos.

    Solicitar mercado («Mercado") se realiza formó inmediatamente en el mercado en el momento en que el precio del instrumento financiero (acciones, futuros , opción etc.) Por lo tanto, si es necesario, una transacción importante, tales como la compra de un gran número de acciones, el orden del mercado dará lugar al hecho de que varias transacciones se realizan a precios diferentes - el mercado no puede ser el número correcto de personas dispuestas a vender acciones al mismo precio, entonces la compra de todas sus acciones, el robot se mueve al siguiente precio propuesto y así sucesivamente
    .
    Las órdenes de mercado son una herramienta agresiva - que siempre se ejecutan, mientras que el precio final de la transacción es desconocido para el comerciante.

    Órdenes de límite tipo permite al robot identificar el peor precio al que tiene sentido para llevar a cabo la transacción. Dicha orden puede permanecer sin cumplirse (si el mercado no estaba deseando comprar o vender a un precio determinado), o parcialmente lleno (no encuentra lo suficientemente dispuestos), por lo que se considera las transacciones más pasivos.



    Su ventaja es, sin duda, el hecho de que el precio de la transacción se determina con antelación. Lista de pedidos de límite de corriente de tipo presentadas se llama una cola de solicitudes (Cartera de pedidos) y se muestra en una ventana separada terminales comerciales.

    Al probar la estrategia, es importante prestar atención a su comportamiento al utilizar órdenes de mercado y límite. En el caso de todas las solicitudes de modelados de forma incorrecta el comercio estrategia puede mostrar resultados inferiores cuando se opera en tiempo real, en comparación con la que se ejecuta en los datos históricos.

    Herramientas para backtesting h4> Hay un gran número de sistemas públicos que se pueden utilizar para probar estrategias financieras bastante:

  • MS Excel - familiar a todos y cada uno de Microsoft Excel se puede utilizar para la escritura de los sistemas de trading automatizado. La mayoría de los corredores le permitirá enlazar esta herramienta para sus productos de software (datos de carga y generar señales de trading utilizando VBA). La desventaja de una decisión de este tipo no será de alta velocidad, y además la aplicación gratuita y rápida de las estrategias simples. Alternativa - Open Office
  • Matlab - entorno de software diseñada para cálculos complejos. Hay plug-ins para su uso en el comercio de acciones. Con él usted puede crear un pequeño script que, sin embargo describir estrategias muy complejas. Minus - sistema y pagado caro. Alternativas para el mercado ruso TSlab y StockSharp . También los comerciantes utilizan para crear productos de sistemas automatizados de comercio MetaStock , -Riqueza Lab y Omega
  • C ++ / C # -. los lenguajes de programación que son frecuentes en el mundo financiero. Poco a poco ganando popularidad de Java y Scala
  • Las herramientas incorporadas en terminal comercial en los -. Herramientas en algunos terminales de comercio han incorporados para la creación de robots de comercio y estrategias de backtesting. Correspondiente plugin de se puede instalar en el terminal SmartX. Para escribir el robot utiliza un lenguaje de scripting TradeScript .

    La ventana de back-testing plugin para crear robots TradeScript terminal de SmartX i>

    Conclusión h4> backtesting es un paso clave en el desarrollo de una estrategia de negociación, sin la cual es difícil de contar con una adecuada robot de comercio puesto de trabajo en condiciones "de combate" del mercado de bienes. Es importante entender que las estrategias de trabajo exitosas en datos históricos no garantiza los mismos resultados cuando se utiliza en el comercio real en tiempo real.

    Además de las pruebas en los datos históricos a los desarrolladores vale la pena mirar el programa en tiempo real - se puede hacer uso de un sistema de comercio de prueba especiales que proporcionan los intercambios y corredores. Con la ayuda de este tipo de sistemas libres de riesgo con dinero virtual, puede depurar la reacción del robot a las cambiantes condiciones del mercado -. Por lo general los datos en estos casos proporcionar bolsas de valores (en diferido o «diezmado»)

    En la actualidad, todo, gracias por su atención. Estaremos encantados de responder a las preguntas en los comentarios.

    ¡Advertencia! B> En ITinvest una vacante desarrollador GUI C #, se está trabajando para poner en práctica el desarrollo frontend de productos de software para el comercio en la bolsa. Los detalles del enlace www.itinvest.ru/about/vacancies/programmer-gui-c/.



    PD Si encuentra un error tipográfico o error - escribir un mensaje personal y haremos puntualmente arreglarlo
    .
    Enlaces y mensajes sobre el tema:

  • Successful backtesting de estrategias de negociación algorítmica - Parte I
Successful backtesting de estrategias de negociación algorítmica - Parte II Cómo hacer: una guía paso a paso para el desarrollo sistema de comercio para el mercado de valores Entrevista: cómo el C # y C ++ ayudan ganan el mercado de valores -Cómo: ¿Cómo elegir el lenguaje de programación para crear un robot de comercio < / a>

Fuente:
habrahabr.ru/company/itinvest/blog/238839/

Tags

Vea también

Nueva y Notable