En el primer artículo sobre backtesting exitoso discutimos los sesgos estadísticos y de comportamiento que afectan nuestro rendimiento de backtest. También discutimos los paquetes de software para backtesting, incluyendo Excel, MATLAB, Python, R y C++. En este artículo consideraremos cómo incorporar los costos de transacción, así como ciertas decisiones que deben tomarse al crear un motor de backtest, como tipos de orden y frecuencia de datos.
Uno de los errores más frecuentes de los principiantes al implementar modelos comerciales es descuidar (o subestimar gravemente) los efectos de los costos de transacción en una estrategia.
La forma más directa de costos de transacción incurridos por una estrategia de negociación algorítmica son comisiones y honorarios. Todas las estrategias requieren alguna forma de acceso a un intercambio, ya sea directamente o a través de un intermediario de corretaje (el corredor). Estos servicios incurren en un costo incremental con cada operación, conocido como comisión.
Los corredores generalmente proporcionan muchos servicios, aunque los algoritmos cuantitativos solo hacen realmente uso de la infraestructura de intercambio. Por lo tanto, las comisiones de corretaje a menudo son pequeñas por operación. Los corredores también cobran tarifas, que son costos incurridos para despejar y liquidar operaciones. Además de esto, hay impuestos impuestos por gobiernos regionales o nacionales.
El deslizamiento es la diferencia de precio alcanzada entre el momento en que un sistema de negociación decide realizar una transacción y el momento en que una transacción se realiza en realidad en un intercambio. El deslizamiento es un componente considerable de los costos de transacción y puede hacer la diferencia entre una estrategia muy rentable y una que tiene un mal rendimiento.
Un instrumento con mayor volatilidad tiene más probabilidades de moverse y por lo tanto los precios entre la señal y la ejecución pueden diferir sustancialmente. La latencia se define como la diferencia de tiempo entre la generación de señal y el punto de ejecución. Las estrategias de frecuencia más alta son más sensibles a los problemas de latencia y las mejoras de milisegundos en esta latencia pueden marcar toda la diferencia hacia la rentabilidad. El tipo de estrategia también es importante. Los sistemas de impulso sufren más de deslizamiento en promedio porque están tratando de comprar instrumentos que ya se están moviendo en la dirección prevista.
El impacto del mercado es el costo incurrido a los comerciantes debido a la dinámica de oferta / demanda del intercambio (y el activo) a través del cual intentan operar. Una gran orden en un activo relativamente ilíquido es probable que mueva el mercado sustancialmente ya que el comercio tendrá que acceder a un gran componente de la oferta actual. Para contrarrestar esto, las grandes operaciones de bloques se dividen en trozos más pequeños que se negocian periódicamente, a medida que llega nueva liquidez al intercambio.
Los activos más ilíquidos se caracterizan por un margen más grande, que es la diferencia entre los precios de oferta y demanda actuales en el libro de órdenes límite. Este margen es un costo de transacción adicional asociado con cualquier operación. El margen es un componente muy importante del costo total de la transacción, como lo demuestran las innumerables empresas de apuestas por diferencias en el Reino Unido cuyas campañas publicitarias expresan la "estrechez" de sus diferencias para instrumentos muy negociados.
Para modelar con éxito los costos anteriores en un sistema de backtesting, se han introducido varios grados de modelos de transacciones complejos. Van desde un simple modelado plano hasta una aproximación cuadrática no lineal. Aquí describiremos las ventajas y desventajas de cada modelo:
Los costos de transacción planos son la forma más simple de modelado de costos de transacción. Asumen un costo fijo asociado con cada operación. Por lo tanto, representan mejor el concepto de comisiones y tarifas de corretaje. No son muy precisos para modelar comportamientos más complejos como deslizamiento o impacto en el mercado. De hecho, no consideran la volatilidad o liquidez de los activos. Su principal beneficio es que son computacionalmente sencillos de implementar. Sin embargo, es probable que estimen significativamente los costos de transacción dependiendo de la estrategia empleada. Por lo tanto, rara vez se usan en la práctica.
Los modelos de costos de transacción más avanzados comienzan con modelos lineales, continúan con modelos lineales por piezas y concluyen con modelos cuadráticos. Se encuentran en un espectro de menor a más preciso, aunque con menos a mayor esfuerzo de implementación.
Los operadores algorítmicos también intentan hacer uso de los costos históricos reales de transacción para sus estrategias como entradas a sus modelos de transacción actuales para hacerlos más precisos. Este es un negocio complicado y a menudo limita con las áreas complicadas de modelado de volatilidad, deslizamiento e impacto en el mercado. Sin embargo, si la estrategia de negociación está transaccionando grandes volúmenes en períodos cortos de tiempo, entonces las estimaciones precisas de los costos de transacción incurridos pueden tener un efecto significativo en la línea de fondo de la estrategia y por lo tanto vale la pena el esfuerzo para invertir en la investigación de estos modelos.
Si bien los costos de transacción son un aspecto muy importante de las implementaciones exitosas de backtesting, hay muchos otros problemas que pueden afectar el rendimiento de la estrategia.
Una elección que un operador algorítmico debe hacer es cómo y cuándo hacer uso de las diferentes órdenes de intercambio disponibles. Esta elección generalmente cae en el ámbito del sistema de ejecución, pero la consideraremos aquí ya que puede afectar en gran medida el rendimiento de la estrategia.
Una orden de mercado ejecuta una operación inmediatamente, independientemente de los precios disponibles. Por lo tanto, las operaciones grandes ejecutadas como órdenes de mercado a menudo obtendrán una mezcla de precios a medida que se cumpla cada orden de límite posterior en el lado opuesto. Las órdenes de mercado se consideran órdenes agresivas ya que casi seguramente se cumplirán, aunque con un costo potencialmente desconocido.
Las órdenes de límite proporcionan un mecanismo para la estrategia para determinar el peor precio al que se ejecutará el comercio, con la advertencia de que el comercio puede no cumplirse parcial o completamente. Las órdenes de límite se consideran órdenes pasivas ya que a menudo no se cumplen, pero cuando son un precio está garantizado.
Cuando se realizan pruebas retroactivas, es esencial modelar correctamente los efectos del uso de órdenes de mercado o de límite.
Hay problemas particulares relacionados con las estrategias de backtesting cuando se utilizan datos diarios en forma de cifras Open-High-Low-Close (OHLC), especialmente para acciones.
Los conjuntos de datos baratos o gratuitos, aunque sufren de sesgo de supervivencia (que ya hemos discutido en la Parte I), también son a menudo feeds de precios compuestos de múltiples intercambios. Esto significa que los puntos extremos (es decir, los puntos abiertos, cerrados, altos y bajos) de los datos son muy susceptibles a los valores
Esto significa que si su estrategia de negociación hace un uso extensivo de cualquiera de los puntos OHLC específicamente, el rendimiento de las pruebas de retroceso puede diferir del rendimiento en vivo, ya que las órdenes pueden ser enviadas a diferentes intercambios dependiendo de su corredor y su acceso disponible a la liquidez.
En el próximo par de artículos vamos a considerar la medición del rendimiento de la backtest, así como un ejemplo real de un algoritmo de backtesting, con muchos de los efectos anteriores incluidos.