Mecanismo de correspondencia de transacciones a nivel de tick desarrollado para backtesting de estrategias de alta frecuencia

El autor:La bondad, Creado: 2019-09-09 11:46:24, Actualizado: 2023-11-07 20:51:21

img

Resumen de las actividades

img

¿Cuál es la cosa más importante cuando backtest la estrategia de negociación? la velocidad? los indicadores de rendimiento?

La respuesta es exactitud! El propósito de la prueba de retroceso es verificar la lógica y la viabilidad de la estrategia. Este es también el significado de la prueba de retroceso en sí, los otros son secundarios. Un resultado de prueba de retroceso que realmente refleje los datos históricos de la estrategia tiene un valor de referencia. Esas curvas de prueba de retroceso aparentemente perfectas pueden contar una buena historia, pero no se pueden hacer en el entorno real del mercado.

¿Qué datos se necesitan para el backtesting?

La primera cosa que tenemos que averiguar es qué datos están en el comercio, porque la calidad de los datos ha determinado en gran medida la calidad de la prueba de retroceso.

Para estos tipos de datos, la mayoría de la gente puede pensar en el precio de apertura, el precio más alto, el precio más bajo, el precio de cierre y el volumen de negociación en el gráfico de la línea K. Para una mejor distinción, nos referimos a estos datos colectivamente como datos de barras, que se pueden entender como la línea K. Pero ¿alguna vez has pensado en dónde provienen los datos, y dónde está la fuente de estos datos?

img

De hecho, los datos del intercambio que envían no contienen estos datos de Bar, solo datos de Tick. Entonces, ¿qué son los datos de Tick? Puede imaginar los datos en el intercambio como un río. Este río contiene datos detallados para cada orden. Los datos de Tick son una porción en el flujo de datos. La frecuencia es de 2 porciones por segundo. es una reproducción de cierta situación del mercado.

Luego, los datos de Bar se basan en los datos de Tick y se dividen según el período de tiempo. Los datos de Bar de 1 minuto se componen de datos de Tick dentro de 1 minuto, los datos de Bar de 5 minutos se componen de datos de Tick dentro de 5 minutos, y así sucesivamente. Formó una variedad de gráficos de minutos, gráficos de hora, gráficos diarios, etc. La línea K de un minuto tiene solo un dato de Bar, pero puede contener 120 datos de Tick. Por lo tanto, los datos históricos de la prueba posterior se pueden dividir en: datos de Bar y datos de Tick, y la cantidad de datos en los datos de Tick es mucho mayor que la cantidad de datos de Bar en el mismo ciclo.

Prueba previa basada en datos de Bar

La mayoría de los software de comercio cuantitativo en el mercado son todos compatibles con el backtesting de datos de Bar. Debido a que la cantidad de datos es pequeña, la carga de trabajo del motor de backtesting se simplifica en gran medida. Por lo tanto, este backtesting es generalmente muy rápido, y los datos de diez años pueden ser backtested en pocos segundos. Incluso cuando backtest docenas de variedades de futuros al mismo tiempo no excederá de un minuto. Pero el backtesting de datos de Bar tiene muchos problemas:

  • Precios extremos

La mayoría de los operadores saben que es difícil comprar o vender en el precio límite diario, pero se puede negociar en el entorno de backtest.

img

  • El vacío de precios

Cuando el precio de repente salta del límite más bajo al precio límite más alto o aparece una brecha de precio, se muestra como una gran línea K positiva en el gráfico de línea K de ciclo grande, pero no hay transacciones que se realicen durante todo el tiempo.

Por ejemplo: la línea K actual ha estado rondando el precio 5000, y de repente sube a 5100 cerca del cierre del mercado, y casi no hay órdenes pendientes y transacciones en el medio.

  • Robar precios y datos futuros

Creo que muchos comerciantes cuantitativos han encontrado tales hoyos, y la mayoría de esas curvas de prueba de retroceso de ángulo de 45 grados provienen de esto. Para facilitar la comprensión de todos, déjenme dar otro ejemplo: Sabemos que una línea K tiene 4 precios. Si es una línea k positiva de 1 minuto, entonces la formación de esta línea K debería ser: precio de apertura >>> precio más bajo >>>> precio más alto >>> precio de cierre.

Sin embargo, la línea k del ciclo grande no será tan simple. Puede alcanzar un nuevo máximo, luego un nuevo mínimo, y luego cerrar; también puede alcanzar un nuevo mínimo, luego un nuevo máximo, y luego cerrar; o incluso después de una ronda de giros y vueltas, alcanza un nuevo mínimo, y luego el nuevo máximo, y luego el nuevo mínimo, y luego cerrar; pero simplemente aparece como una línea K con sombra superior e inferior, hay muchas posibilidades en el medio de cómo se formó.

Si una línea K aparece como esta: precio de apertura 4950, precio más bajo 4900, precio más alto 5100, precio de cierre 5050, una línea K positiva normal. Su estrategia es: Si el precio más reciente excede el precio más alto anterior 5000, compre largo y establezca un stop loss del 1% después de abrir la posición, es decir, cuando el precio caiga por debajo de 4950, se realizará un stop loss.

Ok, vamos a comenzar el backtest:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Earned 1% when the market closed

pero la situación real podría ser así:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Soon the price begins to fall
Continue to fall to 4949
Stop loss signal triggers stop loss 1%
Price rises to 5100
Market close at 5050

Como se puede ver, el ejemplo anterior, la misma estrategia, los mismos datos, hubo dos resultados muy diferentes. La razón sigue siendo debido a la diferencia en los datos. En la prueba de retroceso de nivel de barra, si usas la prueba de retroceso diaria de la línea K, no sabrías cómo se forman estas líneas K. Si usas la prueba de retroceso de la línea K por hora, no sabrías que se forman estas líneas k por hora. En resumen, la prueba de datos de barra es débil!

  • Prueba de retroceso basada en los datos de Tick

Si puede usar los datos de Tick para backtesting y análisis, no hay duda de que tiene grandes ventajas. Sin embargo, parece que no hay una plataforma de negociación cuantitativa para backtesting y análisis de datos de Tick en el mercado. Por ejemplo, MT4 utiliza datos de simulación de interpolación. Esto solo simula cambios en los datos, no datos reales de Tick.

Por supuesto, hay programas que afirman ser capaces de hacer backtesting a nivel de Tick. pero este software cometió un error fatal al diseñar el motor de backtesting, es decir: mecanismo de coincidencia de precios. ¿Qué significa? Si los datos actuales de Tick son: precio de venta 5001, precio de compra 5000, si mi orden de compra pendiente está en 5000, en el mercado real, definitivamente no puede ir a comerciar, pero la verdad no lo es.

Tenga en cuenta que en un entorno de negociación real, las órdenes que realizamos se combinan en el flujo de datos Tick de la bolsa. Las reglas de coincidencia de la bolsa son: prioridad de precio, prioridad de tiempo. Si la profundidad de la orden no es demasiado gruesa en este momento, es probable que la orden de compra de precio 5000 que enviamos se negocie pasivamente.

  • El principio del motor de backtesting basado en datos de mercado

Por lo tanto, la plataforma FMZ Quant (fmz.com) El motor de backtesting de nivel Tick se creó, este motor de backtesting no sólo coincide con los pedidos basados en la prioridad de precio de los datos de Tick. De acuerdo con la misma prioridad de precio, el número de pedidos pendientes se calcula para determinar si la orden pendiente actual ha alcanzado la condición de transacción pasiva, para lograr un entorno de simulación real. Tomemos lo siguiente como ejemplo:

  • El primer Tic es: Vender: 101 Volumen: 80 Comprar: 100 Volumen: 30

  • El segundo Tic es: Vender: 101 Volumen: 60 Compra: 100 Volumen: 50

  • El tercer Tic es: Vender: 101 Volumen: 80 Comprar: 100 Volumen: 30

  • El cuarto tick es: Vender: 101 Volumen: 80 Compra: 100 Volumen: 10

Para el primer Tick, el precio de compra es de 100, la cantidad de órdenes pendientes es de 30 lotes; en este momento, viene la señal de compra, compra 20 lotes a precio de 100; se genera el segundo Tick, el precio de compra es de 100, y la cantidad de orden pendiente es de 50. hay 20 lotes de órdenes pendientes; se produce el tercer Tick, el precio de compra es de 100, y la cantidad de órdenes pendientes es de 30 lotes. Esto prueba que se han ejecutado o cancelado 20 lotes, y estamos cerrando el trato; se produjo el cuarto Tick, el precio de compra fue de 100, y la cantidad de órdenes pendientes fue de 10 lotes. Fue un gran vendedor, y todas nuestras órdenes de compra se ejecutaron a la vez.

A través del ejemplo anterior, podemos encontrar que en los datos de Tick, bajo la premisa de que el precio no ha cambiado, es posible calcular si hay una transacción pasiva de la orden pendiente a través del cambio del monto de la orden pendiente. El uso del mismo precio, el primer enfoque de tiempo.

¿Qué camino para hacer las pruebas?

En la plataforma FMZ Quant, existen backtesting a nivel de barras y ticks al mismo tiempo. Cada operador cuantitativo puede usar diferentes motores de backtesting de acuerdo con sus propias estrategias comerciales, y sin importar qué tipo de backtesting utilice.

El backtesting de estrategias de baja frecuencia no requiere un motor de coincidencia complejo, porque el número de transacciones para tales estrategias es pequeño, el costo del deslizamiento no tiene un gran impacto en la estrategia en sí.

Algunas operaciones intradiarias o estrategias que involucran la apertura de posición durante el día, si es necesario, también pueden ajustar la granularidad de los datos en la página de parámetros de configuración de backtesting, como el backtesting en un ciclo de 1 hora, que se puede ajustar a datos más finos de 15 minutos.

El comercio de alta frecuencia se debe a que el número de transacciones es lo suficientemente alto, una sola variedad puede operar docenas o incluso cientos de veces en un día, por lo que siempre que el motor de coincidencia sea razonable, entonces bajo el efecto de la ley de grandes números, los resultados de la prueba de retroceso son básicamente confiables.

En la prueba de retroceso de operaciones de alta frecuencia, cuanto mayor sea la frecuencia de las transacciones, menor será el período de tiempo de mantenimiento de la posición; menor será el beneficio promedio de una sola transacción. En este momento, si el diseño del motor de prueba de retroceso no es razonable, o el método de comparación de órdenes no es el mismo con el entorno comercial real, entonces habrá un fenómeno de una pequeña diferencia hace una enorme disparidad de mil, por lo que para la negociación de alta frecuencia, el motor de prueba de retroceso en el nivel Tick es la mejor opción.

Prueba posterior de los datos de nivel de marca de acuerdo con los datos reales del mercado

Le mostramos cómo funciona un backtest de nivel Tick con una estrategia de creación de mercado de alta frecuencia escrita en C ++ (que también admite Python y JavaScript). Puede completar la estrategia y realizar backtesting en línea haciendo clic en el enlace a continuación. La siguiente imagen está tomada de la información del registro. Tenga en cuenta que compramos 1 lote al precio de 2231 el 2019-07-12 14:59, y lo vendemos al 2232.

img

  • El primer Tic es: Vender: 2232 Volumen: 409 Compra: 2231 Volumen: 73

  • El segundo Tic es: Vender: 2232 Volumen: 351 Compra: 2231 Volumen: 84

  • El tercer Tic es: Vender: 2232 Volumen: 369 Compra: 2231 Volumen: 67

Esta estrategia de demostración consiste en cerrar la posición al obtener un beneficio de ticking de precios. Después de abrir la posición, enviamos la orden de posición de cierre a 2232 para cerrar la posición larga y 2231 para cerrar la posición corta. De acuerdo con la prueba de retroceso de nivel de barra tradicional, el precio de esta orden pendiente no se puede cerrar. Sin embargo, el motor de retroceso de nivel de tick de la plataforma calcula constantemente el cambio en la cantidad de órdenes en el mercado. Cuando se generan los datos del tercer tick, de acuerdo con el mecanismo de marcha de órdenes de intercambio del intercambio, si el precio es el mismo, de acuerdo con la regla de tiempo primero, se operará nuestra operación de posición larga de cierre.

Estrategia de copia

Haga clic en este enlace (https://www.fmz.com/strategy/162372) para copiar la estrategia completa sin tener que configurar los parámetros

Nota: En la actualidad, solo apoyamos la gama completa de futuros de materias primas domésticas chinas y los datos de nivel Tick del intercambio de criptomonedas OKEX. Apoyaremos más intercambios en el futuro.

El final

El análisis de la plataforma FMZ Quant y el combate real de la backtesting de todos los niveles. No solo eso, sino que además de apoyar a los operadores profesionales y usuarios institucionales, también es muy amigable para los novatos que aún no han comenzado. El lenguaje visual se puede implementar sin escribir código. Además, el lenguaje My se puede resolver en 10 oraciones.

Pensar en la estrategia, hacer estadísticas y analizar... El comercio ha sido muy difícil. Ya sea que usted sea un CTA de baja frecuencia, comercio intradiario, comercio de alta frecuencia, la plataforma de comercio cuantitativo FMZ Quant puede ser perfectamente soportada sin problemas. No hacemos funciones de juguete, basadas en pruebas de retroceso históricas precisas a nivel de Tick, podemos probar cualquier combinación de múltiples variedades, múltiples estrategias y múltiples ciclos para ayudarlo a construir una cartera de inversión óptima.


Relacionados

Más.