¿Qué Son Las Estrategias De Negociación Algorítmica


Fundamentos de la negociación algorítmica: Conceptos y ejemplos Carga del jugador. Un algoritmo es un conjunto específico de instrucciones claramente definidas destinadas a llevar a cabo una tarea o proceso. El trading algorítmico (trading automatizado, black-box trading o simplemente algo-trading) es el proceso de usar computadoras programadas para seguir un conjunto definido de instrucciones para colocar un comercio con el fin de generar beneficios a una velocidad y frecuencia que es imposible para un Comerciante humano Los conjuntos de reglas definidas se basan en el tiempo, el precio, la cantidad o cualquier modelo matemático. Aparte de las oportunidades de beneficio para el comerciante, algo-trading hace que los mercados más líquidos y hace que el comercio más sistemático por descartar impactos humanos emocionales en las actividades comerciales. Supongamos que un comerciante sigue estos sencillos criterios comerciales: Compra 50 acciones de una acción cuando su media móvil de 50 días supera el promedio móvil de 200 días Vende las acciones de la acción cuando su promedio móvil de 50 días se sitúa por debajo de la media móvil de 200 días Utilizando este conjunto de dos instrucciones sencillas, es fácil escribir un programa informático que vigile automáticamente el precio de las acciones (y los indicadores de media móvil) y coloque los pedidos de compra y venta cuando se cumplan las condiciones definidas. El comerciante ya no tiene que mantener un reloj para los precios en vivo y gráficos, o poner en los pedidos manualmente. El sistema de comercio algorítmico lo hace automáticamente para él, identificando correctamente la oportunidad de negociación. Algo-trading ofrece los siguientes beneficios: Operaciones ejecutadas a los mejores precios posibles Posicionamiento inmediato y preciso de pedidos comerciales (con altas posibilidades de ejecución en los niveles deseados) Operaciones Controlar simultáneamente los controles automatizados en múltiples condiciones de mercado Reducir el riesgo de errores manuales en la colocación de las operaciones Volver a probar el algoritmo, sobre la base de datos históricos y en tiempo real disponibles Reducido La posibilidad de errores por parte de los comerciantes humanos basada en factores emocionales y psicológicos La mayor parte del día actual algo-trading es el comercio de alta frecuencia (HFT), que intenta capitalizar sobre la colocación de un gran número de pedidos a velocidades muy rápidas en múltiples mercados y múltiples decisiones Parámetros, basándose en instrucciones preprogramadas. Algo-trading se utiliza en muchas formas de comercio y las actividades de inversión, incluyendo: Inversores de mediano a largo plazo o empresas de compra de lado (fondos de pensiones , Fondos de inversión, compañías de seguros) que compran en acciones en grandes cantidades pero no quieren influir en los precios de las acciones con inversiones discretas de gran volumen. Los comerciantes a corto plazo y los participantes de la parte vendedora (fabricantes de mercado, especuladores y arbitrajes) se benefician de la ejecución automatizada del comercio, además de las ayudas para la creación de liquidez suficiente para los vendedores en el mercado. Los comerciantes sistemáticos (seguidores de tendencias, comerciantes de parejas, fondos de cobertura, etc.) encuentran mucho más eficiente programar sus reglas comerciales y dejar que el programa se comercialice automáticamente. El comercio algorítmico proporciona un enfoque más sistemático al comercio activo que los métodos basados ​​en la intuición o el instinto de los comerciantes humanos. Estrategias de negociación algorítmica Cualquier estrategia para el comercio algorítmico requiere una oportunidad identificada que sea rentable en términos de ganancias mejoradas o reducción de costos. Las siguientes son estrategias comunes de trading usadas en algo-trading: Las estrategias de trading algorítmicas más comunes siguen las tendencias en las medias móviles. Canales. Los movimientos del nivel de precios y los indicadores técnicos relacionados. Estas son las estrategias más sencillas y fáciles de implementar a través de la negociación algorítmica, ya que estas estrategias no implican la realización de predicciones o pronósticos de precios. Las operaciones se inician en función de las tendencias deseadas. Que son fáciles y sencillos de implementar a través de algoritmos sin entrar en la complejidad del análisis predictivo. El ejemplo mencionado de 50 y 200 días de media móvil es una estrategia de seguimiento de la tendencia popular. Comprar una acción cotizada dual a un precio más bajo en un mercado y venderlo simultáneamente a un precio más alto en otro mercado ofrece el diferencial de precio como beneficio libre de riesgo O arbitraje. La misma operación puede repetirse para las acciones frente a los instrumentos de futuros, ya que existen diferencias de precios de vez en cuando. La implementación de un algoritmo para identificar tales diferenciales de precios y colocar los pedidos permite oportunidades rentables de manera eficiente. Los fondos de índice han definido períodos de reequilibrio para que sus participaciones estén a la par con sus respectivos índices de referencia. Esto crea oportunidades rentables para los comerciantes algorítmicos, que capitalizar las operaciones esperadas que ofrecen beneficios de 20-80 puntos básicos dependiendo de la cantidad de acciones en el fondo de índice, justo antes de reequilibrar el fondo de índice. Tales operaciones se inician a través de sistemas de negociación algorítmica para la ejecución oportuna y mejores precios. Una gran cantidad de modelos matemáticos probados, como la estrategia de negociación delta neutral, que permiten la negociación sobre la combinación de opciones y su valor subyacente. Donde las operaciones se colocan para compensar los deltas positivos y negativos para que el delta de la cartera se mantenga en cero. La estrategia de reversión media se basa en la idea de que los precios altos y bajos de un activo son un fenómeno temporal que vuelve a su valor medio periódicamente. Identificar y definir un rango de precios y un algoritmo de implementación basado en que permite que los oficios se colocan automáticamente cuando el precio del activo se rompe dentro y fuera de su rango definido. La estrategia de precio medio ponderado por volumen rompe un pedido grande y libera trozos más pequeños determinados dinámicamente de la orden al mercado usando perfiles de volumen históricos específicos de stock. El objetivo es ejecutar el pedido cerca del Precio Promedio ponderado por volumen (VWAP), beneficiándose así del precio medio. La estrategia de precios promedio ponderada en el tiempo rompe una gran orden y libera trozos más pequeños dinámicamente determinados de la orden al mercado usando intervalos de tiempo divididos de manera uniforme entre un inicio y un final. El objetivo es ejecutar la orden cerca del precio medio entre el inicio y el final, minimizando así el impacto en el mercado. Hasta que el pedido comercial se llene completamente, este algoritmo continúa enviando órdenes parciales, de acuerdo a la relación de participación definida y de acuerdo con el volumen negociado en los mercados. La estrategia de pasos relacionados envía órdenes a un porcentaje definido por el usuario de los volúmenes de mercado y aumenta o disminuye esta tasa de participación cuando el precio de la acción alcanza los niveles definidos por el usuario. La estrategia de déficit de implementación tiene como objetivo minimizar el costo de ejecución de una orden negociando el mercado en tiempo real, ahorrando así el costo de la orden y beneficiándose del costo de oportunidad de la ejecución retrasada. La estrategia aumentará la tasa de participación objetivo cuando el precio de las acciones se mueve favorablemente y disminuirlo cuando el precio de las acciones se mueve adversamente. Hay algunas clases especiales de algoritmos que intentan identificar acontecimientos en el otro lado. Estos algoritmos de sniffing, usados, por ejemplo, por un fabricante de mercado de venta lateral tienen la inteligencia integrada para identificar la existencia de cualquier algoritmo en el lado de compra de una orden grande. Esta detección a través de algoritmos ayudará al creador de mercado a identificar grandes oportunidades de pedidos y le permitirá beneficiarse al llenar los pedidos a un precio más alto. Esto a veces se identifica como de alta tecnología front-running. Requisitos técnicos para el comercio algorítmico La implementación del algoritmo usando un programa de computadora es la última parte, batida con backtesting. El desafío es transformar la estrategia identificada en un proceso computarizado integrado que tiene acceso a una cuenta de negociación para realizar pedidos. Los siguientes son necesarios: Conocimiento de programación de computadoras para programar la estrategia de negociación requerida, programadores contratados o software de comercio pre-fabricado Conectividad de red y acceso a plataformas de negociación para colocar los pedidos Acceso a feeds de datos de mercado que serán monitoreados por el algoritmo para oportunidades de colocar Órdenes La capacidad y la infraestructura para backtest el sistema una vez construido, antes de que vaya vivo en los mercados reales Datos históricos disponibles para backtesting, dependiendo de la complejidad de las reglas implementadas en el algoritmo Aquí está un ejemplo completo: Royal Dutch Shell (RDS) Bolsa de Valores (AEX) y Bolsa de Valores de Londres (LSE). Permite crear un algoritmo para identificar oportunidades de arbitraje. Debido a la diferencia horaria de una hora, AEX se abre una hora antes que LSE, seguido de ambos intercambios que operan simultáneamente durante las próximas horas y luego se negocian sólo en LSE durante La última hora a medida que se cierra AEX ¿Podemos explorar la posibilidad de negociación de arbitraje en las acciones de Royal Dutch Shell que figuran en estos dos mercados en dos monedas diferentes Un programa informático que puede leer los precios actuales del mercado Precios de feeds de LSE y AEX Tipo de cambio GBP-EUR Capacidad de colocación de órdenes que puede encaminar el pedido al cambio correcto Capacidad de retroceso en precios históricos El programa informático debe realizar lo siguiente: Leer el feed de precio entrante de acciones RDS de ambos intercambios Utilizando los tipos de cambio disponibles . Convertir el precio de una moneda a otro Si existe una discrepancia de precio suficientemente grande (descontando los costos de corretaje) que conduce a una oportunidad rentable, entonces ponga la orden de compra en el precio más bajo de cambio y venta de orden en el mayor precio de cambio. Sin embargo, la práctica del trading algorítmico no es tan simple de mantener y ejecutar. Recuerde, si usted puede colocar un comercio algo-generado, así que puede los otros participantes del mercado. En consecuencia, los precios fluctúan en milisegundos e incluso microsegundos. En el ejemplo anterior, ¿qué sucede si su compra de comercio se ejecuta, pero vender el comercio doesnt como los precios de venta cambian en el momento en que su orden llega al mercado Usted terminará sentado con una posición abierta. Haciendo su estrategia de arbitraje sin valor. Existen riesgos y desafíos adicionales: por ejemplo, los riesgos de falla del sistema, los errores de conectividad de la red, los intervalos de tiempo entre las órdenes comerciales y la ejecución y, lo que es más importante, los algoritmos imperfectos. Cuanto más complejo sea un algoritmo, el backtesting más riguroso es necesario antes de que se ponga en acción. El análisis cuantitativo de un desempeño de algoritmos juega un papel importante y debe ser examinado críticamente. Es emocionante ir a la automatización ayudada por computadoras con la noción de ganar dinero sin esfuerzo. Pero uno debe cerciorarse de que el sistema esté probado a fondo y los límites requeridos se fijen. Los comerciantes analíticos deben considerar el aprendizaje de la programación y los sistemas de construcción por su cuenta, para estar seguros de la aplicación de las estrategias adecuadas de manera infalible. Uso cauteloso y pruebas exhaustivas de algo-trading puede crear oportunidades rentables. Algorithmic trading for dummies Estoy de vuelta con algo completamente diferente para este artículo Este es sobre el comercio algorítmico como en la escritura de un algoritmo comercial que automáticamente hará operaciones en su nombre en el cambio de divisas Mercados. ¿Por qué el comercio algorítmico Este es un blog de programación de juegos que escucho llorar. Bueno, hasta ahora he estado hablando casi exclusivamente de algoritmos y técnicas en el desarrollo de juegos, pero en realidad no soy sólo un algoritmo de programadores de juegos de todo tipo me interesa y más que Im siempre interesado en pequeños detalles que hacen que los sistemas complejos de trabajo, y Las finanzas están llenas de pequeños detalles y una jerga impenetrable. Pero, en realidad es bastante simple de configurar y escribir su primer algoritmo todo el software es completamente gratuito, casi todos los corredores tiene una cuenta de práctica libre por lo que la barrera de entrada es básicamente cero. ¿A quién va dirigido este artículo? Este artículo está dirigido a programadores que siempre han sido curiosos acerca de las finanzas y los algoritmos comerciales, pero nunca han examinado en gran detalle. Peligro, Will Robinson, PELIGRO Por supuesto, hay que decir que sería una idea fantásticamente mala dejar que cualquiera de tus primeros algoritmos se ejecute en una cuenta real porque perderás mucho dinero. Así que por favor no lo hagas. Simplemente utilice una cuenta de comercio de papel para comenzar y retroalimentar usando el Probador de Estrategia, del cual hablaré más adelante. Antecedentes Tiene sentido comenzar con una visión general de cómo el comercio financiero, y en particular el comercio de divisas realmente funciona. En su corazón el comercio se trata de un intercambio de un activo para una cierta cantidad de dinero que el comprador gana el activo y el vendedor gana el precio de venta. Los activos involucrados podrían ser casi cualquier cosa, los más populares son acciones y acciones, divisas, oro, plata, etc La clave es que el comprador sólo quiere pagar una cierta cantidad y el vendedor quiere ganar una cierta cantidad, ya menudo estos Los valores no coinciden. Si tomamos este simple ejemplo de dos partes tratando de hacer un intercambio y extrapolar a decenas de miles de personas intercambiando el mismo activo que necesita alguna forma de administrar el sistema para que todos los compradores y vendedores involucrados pueden obtener una visión clara de cada parte preguntando Precio o oferta de compra con el fin de obtener el mejor trato. Lo que se acaba con es lo que se llama el libro de pedidos que es simplemente una lista de todos los compradores precios de puja y todos los vendedores preguntando precios ing (a veces también llamados precios de oferta). Un ejemplo de libro de pedidos, este es eur / bitcoins Above es un ejemplo de lo que parece un libro de pedidos para un activo en particular en este caso su bitcoin s se vende por euros. Usted puede ver claramente lo que los compradores están dispuestos a pagar (a la izquierda) y lo que los vendedores están dispuestos a vender en (a la derecha). Otra cantidad importante enumerada es la cantidad que se vende o se compra, esto es auto explicativo realmente simplemente la cantidad del activo que es ofrecido para la venta, o la compra. Usted notará que los precios de Ask son siempre más altos que los precios de la Oferta. Esto tiene sentido lógicamente, porque si los valores fueran los mismos, o si los precios Ask fueran inferiores a los precios de la oferta, el intercambio ya habría tenido lugar y las entradas se habrían eliminado del libro de pedidos (asumiendo que las cantidades eran las mismas en ambos Bid y pregunta). Esto nos trae perfectamente a la primera parte de la jerga. La propagación. La propagación La propagación es simplemente la diferencia entre el precio más bajo de la pregunta y el precio de la oferta más alto. Representa el coste de negociar - si usted quisiera comprar y luego vender directamente después usted terminaría pagando el coste del reparto para la conveniencia de una transacción inmediata, que nos trae a nuestra definición siguiente. Órdenes de Mercado. Pedidos de mercado Un pedido de mercado es una transacción que tiene lugar instantáneamente. Para que esto sea posible, el precio de compra debe ser igual al más bajo pedir en el libro de pedidos (para una compra) y para una venta, el precio de venta debe ser igual al precio más alto de la oferta. Obviamente no tiene sentido comprar y luego vender al instante porque youd siempre estar perdiendo dinero (la propagación) en cada uno. Cuando usted pone una orden de mercado, usted tiene generalmente una cierta idea que el precio se moverá en su favor antes de usted entonces coloca la orden opuesta para cerrar el reparto. Ordenes limitadas Las órdenes en el libro de órdenes son todas las órdenes límite de los precios de compra deseados de la gente (que están siempre debajo del mejor precio de la pregunta) y de los precios de venta (que están siempre sobre el mejor precio de la oferta). Después de una cierta cantidad de tiempo (aunque, quizás nunca en casos extremos) una orden será sometida que satisface el comprador o el vendedor en la tapa del libro de orden y su reparto será llenado. Las personas que ponen órdenes límite están contentas de esperar hasta que el mercado se mueva a su favor antes de que incluso hagan un trato - aunque esto puede no suceder nunca, o puede suceder muy rápidamente. En un sentido muy real, el valor de un activo determinado se define directamente por el precio mínimo que alguien está dispuesto a vender o el precio máximo que alguien está dispuesto a pagar. La parte superior del libro de órdenes contiene esos valores, como ya hemos aprendido, por lo que su tentación de pensar por sí solo definiría el precio y, por lo tanto, sería trivial controlar artificialmente el valor de un activo poniendo cuidadosamente órdenes limitadas en el libro de pedidos. Sin embargo, hay una complicación relacionada con la cantidad de la orden. La cantidad de una orden define su significado al establecer el valor de un activo, la razón de esto es su longevidad. Cuanto mayor sea la cantidad de un pedido, más tiempo tendrá que existir en el libro de pedidos. Imagínese a alguien haciendo un pedido para vender un millón de manzanas a 0,25 por manzana (el precio más barato). Esta orden es probable que permanezca en el libro de pedidos por un tiempo mucho más largo que alguien tratando de vender 10 manzanas. Así que esta gran orden de vender manzanas a bajo costo comienza a tomar todo el comercio de los vendedores más pequeños su única opción es tratar de socavar el enorme orden y vender aún más barato, por ejemplo, a 0,24 por manzana (o pueden esperar que fuera, por supuesto, pero Que podría tomar demasiado tiempo). Con el tiempo otra gran orden de vender vendrá a lo largo y socavado la orden original, por lo tanto, los precios de conducción aún más bajos. Eventualmente, todas estas enormes órdenes se llenarán completamente y los precios empezarán a estabilizarse nuevamente a niveles nominales, aunque pueden no volver a donde estaban. Un gran ejemplo de cómo las órdenes grandes pueden mover el precio estaba en el desplome del bitcoin de 19/6/2011 - alguien había hackeado en el intercambio más grande del bitcoin MtGox, robado una cantidad extensa de bitcoins y después intentó venderlos en el mismo sitio. Los precios pasaron de 18 USD / bitcoin a prácticamente 0 en cuestión de minutos. Esto sucedió porque bitcoin sigue siendo una moneda bastante ilíquida, por lo que volúmenes grandes pueden mover los precios sustancialmente más que en otros mercados más líquidos. Excluyendo accidentes como el que se muestra arriba, a lo largo de la vida de los activos, el movimiento de precios está ocurriendo en múltiples escalas diferentes, los pedidos realmente grandes impulsan las grandes tendencias, seguidas de pedidos más pequeños que impulsan las tendencias medias y las pequeñas órdenes. Este comportamiento es lo que da a un mercado un fractal como la naturaleza. Naturaleza de mercado similar al fractal A continuación se puede ver un ejemplo de esto (de nuevo en USD vs GOLD) donde las tendencias principales están marcadas por la línea amarilla, las tendencias medias se muestran por la línea blanca y las tendencias inmediatas se muestran en azul. Las tendencias medias causadas por los pedidos más pequeños vuelven a la principal tendencia de precios causada por los pedidos más grandes, y así sucesivamente. Mandlebrot estudió en detalle la naturaleza fractal de la serie de precios. Un mercado de tendencias Lo que acabo de describir es la base de un mercado de tendencias, donde los precios se están moviendo fuertemente en una dirección general. Esto es causado cuando una secuencia de eventos ocurre similar a lo que he descrito anteriormente, pero en una escala masiva. A menudo, esto puede ser provocado por algún tipo de factor externo, como las noticias dicen que hay un artículo de noticias que vincula las manzanas que consumen a los coeficientes de inteligencia más bajos, entonces la mayoría de los vendedores querrán deshacerse de sus existencias de manzanas rápidamente porque nadie va a comprar , Por lo que se venden a un precio más bajo y otros vendedores se unen y esto se conecta en una tendencia de precios más bajos. Los precios del oro comenzaron a seguir una fuerte tendencia después de la crisis financiera de 2008 La crisis financiera de 2008 desencadenó una tendencia en el precio del oro ya que la gente perdió la confianza en los medios tradicionales de inversión. Un mercado que se extiende es aquel en el que los precios oscilan entre varios niveles diferentes (de nuevo en forma de fractal), pero no necesariamente en una clara dirección hacia arriba o hacia abajo. GBP vs USD es un mercado de rango histórico debido a la naturaleza interrelacionada de las dos economías El par de símbolos de divisas GBPUSD es un mercado de rango histórico debido a las economías interrelacionadas de los dos países, aunque últimamente ha estado en fuerte tendencia descendente debido a la Debilitamiento de la libra. Los mercados de divisas Los mercados de divisas o los mercados de divisas funcionan al intercambiar pares de divisas, por ejemplo, pueden negociar GBP / USD y los precios estarán en libras (divisa base) por dólar (moneda de cotización). La forma en que las personas privadas tienen acceso a estos mercados es a través de un corredor. Un intermediario es un intermediario entre los usuarios finales y la Red de Comunicaciones Electrónicas que conecta a todos los grandes bancos de inversión, fondos de cobertura y fondos de pensiones y es el medio por el cual hacen su comercio. Los corredores proporcionan a los usuarios acceso al comercio a cambio de honorarios, que pueden ser un cargo fijo por volumen negociado, o simplemente estarán ocultos dentro del spread (los corredores simplemente agregarán su comisión a los precios Bid and Ask) Los precios aumentaron en una pequeña cantidad que luego se toma por el corredor como beneficio). Hay muchos diferentes corredores en funcionamiento, todos con sus propios beneficios y desventajas que usted debe evaluar - comparar las cosas como que libre de comisiones broker tiene los diferenciales más bajos, que está regulado por las autoridades financieras o que proporciona la mejor conexión a la ECN (algunos son Ni siquiera conectado en absoluto). La plataforma más popular que utilizan los usuarios y el soporte de los corredores se llama MetaTrader 4 y es de lo que voy a estar hablando en el resto de este artículo, debido a su relativa facilidad de uso, su amplio soporte y su C-como lenguaje de programación MQL4 que Proporciona acceso API a toda la funcionalidad de MetaTrader 4 (MT4 de ahora en adelante). Ejemplo de corredor de la divisa (afiliado) Los mercados de Forex accesibles del usuario son ligeramente diferentes en su funcionamiento que lo que he descrito hasta ahora en este artículo principalmente porque usted nunca termina encima de poseer el activo youre que compra. Esto parece algo extraño porque rompe de la realidad - cómo puede usted vender algo que usted nunca poseído realmente, por ejemplo Bueno en Forex usted puede Cada compra debe cerrarse con una venta y cada venta debe ser cerrada con una compra, así que usted termina siempre para arriba Poseer la moneda base, nunca la moneda de la cotización. Tiene sus ventajas y desventajas. La desventaja es que impide ciertos algoritmos de negociación de ser posible - por ejemplo, no se puede ejecutar un algoritmo de Market-Maker en un corredor de Forex porque tienes que cerrar cada comercio con el comercio contrario. Lo más cercano que puede hacer es lo que se conoce como grid-trading, pero voy a entrar en estas diferentes técnicas en un artículo posterior. La ventaja de Forex es que usted puede ganar dinero en un mercado de tendencias abajo porque puede vender alto y luego comprar de nuevo cuando los precios son bajos esto es lo que se conoce como Shorting. MetaTrader 4 La interfaz MT4 parece desalentador al principio, pero es realmente muy simple. MT4 La parte principal de la pantalla está ocupada por los precios de cotización del par de divisas elegido, con los símbolos de par de divisas disponibles mostrados en un panel de la izquierda, el navegador (para elegir scripts, indicadores y algoritmos) Y - en mi puesta en marcha - el probador de estrategia en la parte inferior. Es importante tener en cuenta que los precios de cotización mostrados en las gráficas en MT4 representan sólo los precios de puja más altos del libro de pedidos para un par de divisas dado. El libro de pedido completo no está disponible para su visualización. Sólo tiene acceso a la parte superior del libro de pedidos en el panel Market Watch (Reloj de mercado) a la izquierda. MT4 proporciona una gran cantidad de indicadores integrados, que son pequeños programas que se ejecutan sobre los precios de la serie de datos y salida algo visual superpuesto a los precios. Un ejemplo simple sería el indicador de media móvil, que muestra un promedio de la serie de precios con un período dado (número de muestras) mostrado en rojo. Las medias móviles ayudan a suavizar el ruido en una serie de precios y hacen que la tendencia general sea más clara a expensas de la adición de retraso. Indicador de media móvil Los marcos temporales MT4 proporcionan una serie de marcos de tiempo diferentes a través de los cuales se pueden visualizar las series de precios de un símbolo particular: M1, M5, M15, M30, H1, H4, D1, W1 y MN. M1 a M30 son minutos, H1 a H4 son horas, D1 es días y MN es meses. Cada unidad individual de estas series temporales se denominan barras. Diversos marcos de tiempo disponibles La razón para proporcionar tantas opiniones diferentes de una serie de precios es que ayuda a los comerciantes a juzgar las tendencias a largo plazo, a medio y corto plazo en una moneda. En general, los intervalos de tiempo más bajos también contienen la mayoría de ruido que se define como los oficios que oscurecen la tendencia general, por lo que un montón de comerciantes profesionales sólo se ocupan de horarios H4 o superior que son mucho más fáciles de leer y no Requieren tiempos de reacción de la luz. Debe quedar claro que lo que estos marcos de tiempo representan son en realidad una visión normalizada de la serie de precios en la realidad los intercambios no ocurren en intervalos regularmente espaciados en el tiempo, ocurren como y cuando. Por lo tanto lo que usted ve en MT4 es realmente una vista interpolada de la acción verdadera del precio. OHLC Además de los precios de oferta en MT4 también tiene acceso a los precios de apertura, precios altos, precios bajos y precios de cierre a veces se refiere como OHLC. Se trata de un artefacto de la normalización de la serie de precios porque los precios se han normalizado en barras que es razonable que los comerciantes podrían desear saber cuál era el precio inicial de la barra (Abierto), donde los puntos altos y bajos fueron y qué El último precio en el bar era (Close). Toda esta información puede ser codificada en las tablas de precios como velas. Dos velas en una carta, una alcista, una bajista En el diagrama anterior, la vela izquierda está de color negro para indicar un movimiento alcista y la vela derecha es de color blanco que indica un movimiento bajista. Muchas velas en una tabla de precios bajista y alcista Términos comerciales: un mercado alcista (o vela) es uno que es o ha subido de precio, mientras que un mercado bajista es uno que ha caído en el precio. Ticks Una marca (en la terminología MQL4) es un solo cambio en el precio de la oferta y es la mayor resolución posible de la acción de precio de visualización. No hay una serie predeterminada de precios de vista de tiquete en MT4, aunque el panel de vigilancia del mercado tiene un gráfico de tachuelas que puede utilizar para ver los cambios entrantes. Las garrapatas son más interesantes cuando se trata de escribir un algoritmo. Pips y pipetas Un pip es 0.0001 unidades de la moneda de cotización, que solía ser la unidad más baja posible hasta que algunos corredores introdujeron pipetas que son diez veces más pequeño de nuevo, que son actualmente la unidad más pequeña. Puntos Un punto en MT4 es la unidad más pequeña posible de la moneda de cotización. Lo que esto realmente depende de lo que su corredor apoya, pero por ejemplo en el corredor de 5 dígitos Oanda, un punto es 0.00001 en EUR / USR y 0.001 en USD / JPY. MQL4 La parte más interesante de MT4 para los programadores es el lenguaje MQL4. Le sugiero que eche un vistazo a la excelente documentación y material de referencia que se proporciona en mql4: El lenguaje es C-like y tiene algunos tipos básicos incorporados, como dobles, ints y arrays, pero no los tipos complejos como structs o clases. En MT4 puede escribir indicadores personalizados y algoritmos comerciales personalizados, a los que se refieren como Asesores expertos o EAs. Comencemos con nuestro primer EA Haga clic con el botón derecho del ratón en el árbol de Asesores expertos en el Navegador y seleccione Crear. Asegúrese de que haya seleccionado Expert Advisor y, a continuación, seleccione Siguiente. Déle EA un nombre inspirador, como HelloWorld y, a continuación, haga clic en Finalizar. A continuación, se debe presentar con el MetaEditor (que es donde harás toda tu programación) que contiene el esqueleto de su primera EA que debe ser similar a esto: Hay puntos de inicialización / desinitialización obvio que se llaman desde MT4 cuando el programa se ejecuta por primera vez y Cuando se apaga. Y el punto de entrada start () que se llama una vez por tick. Permite agregar algo sencillo para que se ejecute con un ejemplo de tipo Hello World. Simplemente cambie la función start () a lo siguiente: A continuación, presione el botón Compile y debe tener salida en la parte inferior de la pantalla que dice: Compilando HelloWorld. mq4. 0 error (s), 0 warning (s) Ahora, cambie de nuevo a la interfaz MT4 principal y elija View-Strategy Tester en el menú principal. El tester de estrategia es donde youll pasan mucho de su tiempo como un creador de algoritmos comerciales que le permite probar su estrategia programada sobre los datos anteriores serie de precios en cualquiera de los marcos de tiempo que desee. Esto se llama back-testing y es una herramienta de ahorro de tiempo y depuración completamente invaluable que le permite probar la rentabilidad de su estrategia comercial. A continuación, debe presentarse con un panel que se ve como esto en la parte inferior de la interfaz MT4: El probador de estrategia Si Hello World no está seleccionado en el primer menú desplegable, haga clic en él y selecciónelo. Ahora presione el botón de inicio grande en la parte inferior derecha y luego haga clic en la pestaña Diario, debe tener salida similar a esto: Si lo hace, felicitaciones Youve acaba de escribir su primer algoritmo de negociación, aunque en el sentido más flojo ya que no comercio. La próxima vez que he cubierto una gran cantidad de terreno en este artículo por lo que debe ser mucho para hundir los dientes en. La próxima vez voy a hablar de la programación de las operaciones de comercio actual e incluso cubrir algunas estrategias de comercio común Hasta la próxima vez, diviértete Hi ive acaba de iniciar el comercio que duplicó mi demo acc en más im muy bueno en él como esto es más fácil que commoditys etc Evreyone siempre está buscando una ventaja id amor para construir uno también ive sólo downlaoded mt4 de aquí lo que esto ayuda con ¿Qué tan lejos puede ir Ie como lo que jp morgan goldsachs uso o es que imposible 1 empresa se benefició 287 de 288 días con un Algorythim puedo hacer uno como thteres N cómo empezar si tengo e en matemáticas e in english i recogida en las cosas realmente rápido aunque u sabe dónde puedo aprender esto y poner el algo junto etc Tengo 30k sentado allí listo Vaya aplausos para arty tho fácil entendido aquí (im un dummy lol) Yo asesoraría extrema precaución, las empresas que tienen algoritmos comerciales exitosos como describir tienen ejércitos de PHDs en finanzas cuantitativas que diseñan sus algoritmos. They8217re no usando MT4 tampoco, ellos estarán negociando directamente usando el software y el hardware de encargo muy costosos que están fuera de nuestro alcance. El mejor consejo es encontrar algo más seguro que hacer con su 30k, porque el comercio de divisas es muy arriesgado. Interesante que eres un programador de videojuegos haciendo finanzas. I8217m en el mismo barco exacto. Hice una demostración de juego que puedes descargar desde mi sitio web con física de trapo-muñeca, etc, etc. I8217m ahora escribiendo un sistema de comercio de redes neuronales que se ejecuta exclusivamente en MT4 en este momento. Here8217s una captura de pantalla del editor de redes neuronales: cseditor. png. De todos modos, it8217s gracioso porque su artículo es tan nuevo y he sido malabares redes neuronales y la física del juego durante más de un año. El pensamiento I8217d decirle que tenemos mucho en común, ha ¿Cómo muy interesante Las redes neuronales permiten a sus algoritmos para adaptarse a la dinámica del mercado cambiante El único problema recurrente que parecen tener es superar un algoritmo a un determinado año, o el tiempo del año. Me encanta ver algo escrito sobre las redes neuronales y el comercio algorítmico. Bueno, al menos mío, jaja. Sé que cualquier robot no sería tan bueno como un robot sin un bucle de retroalimentación (control de sistemas dinámicos). Así que, básicamente, idealmente querrás una red neural básica que haya sido entrenada y probablemente entonces desee entrenarla con un pequeño paso de tiempo con los datos actuales (posiblemente como parte del ciclo de la señal en MT4). Esto es todo en mi cabeza e incluso no estoy seguro si it8217ll trabajo, pero I8217m actualmente pruebas EA8217s para EURUSD y USDCHF. Tengo que hacer el otro gran 4: GBPUSD, USDJPY, AUDUSD y USDCAD. Básicamente dominar a través del problema you8217re describiendo por el entrenamiento de mi red neuronal en los últimos 4 años. Tengo una hipótesis que si sobrecargas tu red neuronal con datos, se FORCÉ a generalizar. Esto no es lo que nos enseñaron en Caltech8211 nos enseñaron a tomar 10-20 de los datos y no a entrenar con él, pero lo utilizan para verificar los otros 80-90. Sin embargo, disfruto de gráficos como los siguientes: gráfico suave. Dado que sólo tiene 14 neuronas por capa media y sólo 1 capa media (además de la capa de entrada y la capa externa). No tengo ninguna referencia útil, pero mi proceso es el siguiente: alimentar un número igual de comercio y ejemplos de no-comercio como punto de partida y luego usar la red neural que obtenga. A continuación, pasar y reforzar con ejemplos positivos y negativos que usted vea en forma. No soy un comerciante atrevido, por lo que tienden a tener más ejemplos negativos que ejemplos positivos. El maldito pequeño diablo todavía se las arregla para comerciar mucho sin embargo y asegurarse de que las operaciones de derecho puede ser difícil. Mi parada de la pérdida es de 350 PIPS en la actualidad, ha De todos modos, avíseme si tiene más preguntas. Suena interesante 8211 algo que definitivamente quiero mirar. Una palabra de precaución, sin embargo, su gráfico (aunque impresionante aspecto) podría ser engañoso debido a la mala marca datos 8211 Tenía una experiencia similar donde un algoritmo de la mina estaba haciendo más de 2 millones en un año (con 8216n / a8217 back-testing calidad como El suyo está mostrando), pero una vez que conseguí los datos tick-by-tick trabajando en MT4 terminé con un algoritmo que wasn8217t en el menos rentable. Para obtener tick tick tick, descargue TickStory Lite: Entonces necesitará encontrar sus símbolos y descargar los datos. Diga a tick-story dónde está su instalación de MT4 y luego escriba para proteger los datos del historial en tester / history y luego solo inicie MT4 desde la opción de menú en tick-story ya que esto corrige el. exe para que MT4 pueda usar los datos de tick. Espero que ayude Hmm. hábil. Voy a intentarlo y le haré saber mis resultados. Recibo mis datos de eSignal (5m es lo que uso). No sé cómo obtener datos de la historia de la garrapata cambiaría cualquier cosa, pero la enfermedad le dejó saber. I8217m actualmente la descarga de los últimos 4 años de datos (para siempre). De hecho, proviene de la base de datos Dukascopy8217s, pero tickstory le permite obtener esos datos exportados y en MT4. I8217d muy muy interesado de escuchar sus resultados después de que usted consigue fijado con 99 datos de la espalda-prueba de la calidad Ok los resultados están adentro (desafortunadamente, no podía esperarla hacia fuera por 4 años datos así que fui con 1 año). Puedes verlo aqui. Parece que todavía funciona, gracias a Dios que voy a obtener más datos durante la noche e intentar de nuevo, I8217ll publicar los resultados. Ahhh, eso es mejor. Me alegra que tus resultados sean positivos. Ese gráfico es impresionante enorme factor de beneficio. IMO la única cosa a trabajar en está reduciendo ese drenaje-down8230 I8217d como para ver resultados por más de un año también. Sí, mi papá dice lo mismo. Le gusta la exactitud, pero el draw-down8230 que damned draw-down, lol. Las redes neurales son cosas ordenadas. Básicamente te ayudan a encontrar una función dada un vector de entrada y (normalmente) una salida booleana (SI / NO). Cuantas más capas pongas en ellos, los árboles binarios de decisión de árbol más complejos que crean (si no me equivoco). Una de mis clases en Caltech, nos preguntaron cómo el número de capas afectan a la red neuronal y, por supuesto, nunca vi la solución, pero creo que cuanto más capas tengas, más sectores en el espacio de soluciones de funciones cubrirás. De todos modos, todo esto sigue siendo algo mágico para mí. Lo utilizo como una caja negra. Déjame saber si necesitas ayuda. No es tan difícil. Esto es lo que mi interfaz se ve así: public class CSNeuralNet: CSNeuralNet (numInputs u32, numMiddleLayers u32, u32 neuronsPerMiddleLayer, MaxWeight escalar) CSNeuralNet (nombre de archivo s8) CSNeuralNet (raíz MEHXMLNode) en línea MEHArray ampGetDomainScale () inline Sección Crítica ampGetCriticalSection () escalar GetError () escalar ForwardFeed (MEHArray ampinputs) void BackPropagate (desiredOutput escalar, learnRate escalar) sin efecto de impresión (CSApp aplicación) sin efecto SaveToFile (nombre de archivo s8) SaveToExternalXML vacío (MEHXMLFile ampxml, raíz MEHXMLNode) nula (ampattrib MEHArray) MakeHeaderXML LoadFromXML vacío (raíz MEHXMLNode) MakeLayers vacíos (numInputs u32, u32, u32 numMiddleLayers neuronsPerMiddleLayer, escalar MaxWeight) Sección Crítica mcs MEHArray mlayers MEHArray mdomainScale s8 s8 mnumInputsTxt1024 mnumMiddleLayersTxt1024 s8 mmiddleLayerNeuronsTxt1024 Las principales funciones que necesita son una visión de alimentación y de propagación hacia atrás la función (o aprendizaje). Cuando avanza, comienza en la entrada y trabaja en la salida. A continuación, calcular el error de la salida y volver a propagar el error utilizando gradientes de error. Resulta que la función de activación en cada nodo es una función hiperbólica (normalmente), la derivada está fácilmente disponible (que es todo el gradiente de error). A continuación, básicamente, integrar el gradiente de error con un paso del tiempo (que llaman a esto una tasa de aprendizaje) y you8217re hecho con 1 8220epoch8221 o ciclo. ¿Qué tan bien se aprende se basa en el número de épocas se toma a través, pero básicamente tienen un cheque que verifica que los resultados son lo que se espera de todos los puntos de datos de prueba y that8217s cuando deje de correr épocas. De todos modos, de nuevo, te imploro que lo averigües tú mismo, pero si necesitas punteros, avísame. Desarrollé una red neural hace 2 años en mi universidad que podría aumentar y disminuir tamaño automáticamente para adaptarme a la función y modelo. Todavía estoy tratando de entender qué información está usando para entrenar su red neuronal. ¿Cuál es la entrada y salida durante la fase de entrenamiento Como entrada, mi red neuronal puede tomar cualquier dominio. Pero el truco es: ¿cómo se entrena es ¿Qué deben las entradas de una red neuronal ser MetaTrader es una gran herramienta si la estrategia que le gustaría al comercio se basa en indicadores técnicos y gráficos. Sin embargo, actualmente es cada vez más difícil encontrar una estrategia comercial exitosa basada exclusivamente en indicadores técnicos. En mi opinión, las estrategias más exitosas se basan hoy en día en hechos económicos y / o eficiencias de mercado conocidas. AlgoTrader es una plataforma de comercio algorítmica basada en Java que permite el desarrollo, la simulación y la ejecución de múltiples estrategias en paralelo. El software de comercio automatizado puede operar en Forex, Opciones, Futuros, Valores y Commodities en cualquier mercado. El sistema se basa en procesamiento de eventos complejos (CEP) y procesamiento de secuencias de eventos (ESP). CEP es una técnica muy buena para comenzar con el trading algorítmico. Con esta vez basada en la tecnología de análisis de datos de mercado y generación de señales se codifican en EPL (similar a SQL), mientras que las acciones de procedimiento como de realizar un pedido se codifican en la llanura del código de Java. La combinación de los dos proporciona un enfoque de los mejores mundos y acomoda estrategias que están predominantemente basadas en el tiempo y por lo tanto no se pueden programar con lenguajes de programación de procedimientos tradicionales. Algunas de las características del sistema: 3 8211 8211 GUI8217s diferentes interfaces diferentes Broker (nativos y FIX) 8211 Soporte para derivado de encargo 8211 Los diferenciales de ejecución Varios algoritmos incorporados en 8211 Apoyo a la divisa, opciones, futuros, acciones, materias primas, etc. 8211 Multi-cuenta Funcionalidad amplificador amplificador de módulos múltiples estrategias 8211 Forex Automatizado amplificador de cobertura opciones de precios motor Hay dos versiones disponibles de AlgoTrader: 8211 An Open Source versión que se puede descargar de forma gratuita 8211 una versión comercial (con soporte y servicios profesionales) Whao. Qué artículo educativo e informativo para un maniquí como yo. Mirando hacia adelante a la parte 2. Welldone Paul, me gusta que el análisis simplificado del mercado de divisas. ¿Alguien sabe dónde puedo también aprender sobre la escritura de estrategias automatizadas para la plataforma currenex o utilizando la API FIX I8217ll incluso apreciar un libro sobre él o mejor aún, un tutor. Sobre el autor Un veterano de la industria de juegos de diez años, siete de los cuales pasó en Sony Computer Entertainment Europe, ha tenido papeles técnicos clave en los títulos de triple A como el Bafta Award Winning Little Big Planet (PSP), 24: The Game ), Efectos especiales en Heavenly Sword (PS3), algunos gráficos en la versión BBC de Robot Wars, el programa de televisión, así como algunos proyectos más oscuros. Ahora el CEO conjunto de Wildbunny, él puede dar a sí mismo el hipo simplemente tosiendo. 1NobNQ88UoYePFi5QbibuRJP3TtLhh65Jp Featured Posts Tutorials with code to buy Friends My MetaTrader 5 productsSuccessful Backtesting of Algorithmic Trading Strategies - Part I This article continues the series on quantitative trading, which started with the Beginners Guide and Strategy Identification. Both of these longer, more involved articles have been very popular so Ill continue in this vein and provide detail on the topic of strategy backtesting . Algorithmic backtesting requires knowledge of many areas, including psychology, mathematics, statistics, software development and market/exchange microstructure. I couldnt hope to cover all of those topics in one article, so Im going to split them into two or three smaller pieces. What will we discuss in this section Ill begin by defining backtesting and then I will describe the basics of how it is carried out. Then I will elucidate upon the biases we touched upon in the Beginners Guide to Quantitative Trading. Next I will present a comparison of the various available backtesting software options. In subsequent articles we will look at the details of strategy implementations that are often barely mentioned or ignored. We will also consider how to make the backtesting process more realistic by including the idiosyncrasies of a trading exchange . Then we will discuss transaction costs and how to correctly model them in a backtest setting. We will end with a discussion on the performance of our backtests and finally provide an example of a common quant strategy, known as a mean-reverting pairs trade . Lets begin by discussing what backtesting is and why we should carry it out in our algorithmic trading. What is Backtesting Algorithmic trading stands apart from other types of investment classes because we can more reliably provide expectations about future performance from past performance, as a consequence of abundant data availability. The process by which this is carried out is known as backtesting . In simple terms, backtesting is carried out by exposing your particular strategy algorithm to a stream of historical financial data, which leads to a set of trading signals . Cada operación (que vamos a significar aquí para ser un viaje de ida y vuelta de dos señales) tendrá una ganancia o pérdida asociada. The accumulation of this profit/loss over the duration of your strategy backtest will lead to the total profit and loss (also known as the PL or PnL). That is the essence of the idea, although of course the devil is always in the details What are key reasons for backtesting an algorithmic strategy Filtration - If you recall from the article on Strategy Identification. our goal at the initial research stage was to set up a strategy pipeline and then filter out any strategy that did not meet certain criteria. Backtesting provides us with another filtration mechanism, as we can eliminate strategies that do not meet our performance needs. Modelling - Backtesting allows us to (safely) test new models of certain market phenomena, such as transaction costs, order routing, latency, liquidity or other market microstructure issues. Optimisation - Although strategy optimisation is fraught with biases, backtesting allows us to increase the performance of a strategy by modifying the quantity or values of the parameters associated with that strategy and recalculating its performance. Verification - Our strategies are often sourced externally, via our strategy pipeline . Backtesting a strategy ensures that it has not been incorrectly implemented. Although we will rarely have access to the signals generated by external strategies, we will often have access to the performance metrics such as the Sharpe Ratio and Drawdown characteristics. Thus we can compare them with our own implementation. Backtesting provides a host of advantages for algorithmic trading. However, it is not always possible to straightforwardly backtest a strategy. In general, as the frequency of the strategy increases, it becomes harder to correctly model the microstructure effects of the market and exchanges. This leads to less reliable backtests and thus a trickier evaluation of a chosen strategy. This is a particular problem where the execution system is the key to the strategy performance, as with ultra-high frequency algorithms. Unfortunately, backtesting is fraught with biases of all types. We have touched upon some of these issues in previous articles, but we will now discuss them in depth. Biases Affecting Strategy Backtests There are many biases that can affect the performance of a backtested strategy. Unfortunately, these biases have a tendency to inflate the performance rather than detract from it. Thus you should always consider a backtest to be an idealised upper bound on the actual performance of the strategy. It is almost impossible to eliminate biases from algorithmic trading so it is our job to minimise them as best we can in order to make informed decisions about our algorithmic strategies. There are four major biases that I wish to discuss: Optimisation Bias . Look-Ahead Bias . Survivorship Bias and Psychological Tolerance Bias . Optimisation Bias This is probably the most insidious of all backtest biases. It involves adjusting or introducing additional trading parameters until the strategy performance on the backtest data set is very attractive. However, once live the performance of the strategy can be markedly different. Another name for this bias is curve fitting or data-snooping bias. Optimisation bias is hard to eliminate as algorithmic strategies often involve many parameters. Parameters in this instance might be the entry/exit criteria, look-back periods, averaging periods (i. e the moving average smoothing parameter) or volatility measurement frequency. Optimisation bias can be minimised by keeping the number of parameters to a minimum and increasing the quantity of data points in the training set. In fact, one must also be careful of the latter as older training points can be subject to a prior regime (such as a regulatory environment) and thus may not be relevant to your current strategy. One method to help mitigate this bias is to perform a sensitivity analysis . This means varying the parameters incrementally and plotting a surface of performance. Sound, fundamental reasoning for parameter choices should, with all other factors considered, lead to a smoother parameter surface. If you have a very jumpy performance surface, it often means that a parameter is not reflecting a phenomena and is an artefact of the test data. There is a vast literature on multi-dimensional optimisation algorithms and it is a highly active area of research. I wont dwell on it here, but keep it in the back of your mind when you find a strategy with a fantastic backtest Look-Ahead Bias Look-ahead bias is introduced into a backtesting system when future data is accidentally included at a point in the simulation where that data would not have actually been available. If we are running the backtest chronologically and we reach time point N, then look-ahead bias occurs if data is included for any point Nk, where k0. Look-ahead bias errors can be incredibly subtle. Here are three examples of how look-ahead bias can be introduced: Technical Bugs - Arrays/vectors in code often have iterators or index variables. Incorrect offsets of these indices can lead to a look-ahead bias by incorporating data at Nk for non-zero k. Parameter Calculation - Another common example of look-ahead bias occurs when calculating optimal strategy parameters, such as with linear regressions between two time series. If the whole data set (including future data) is used to calculate the regression coefficients, and thus retroactively applied to a trading strategy for optimisation purposes, then future data is being incorporated and a look-ahead bias exists. Maxima/Minima - Certain trading strategies make use of extreme values in any time period, such as incorporating the high or low prices in OHLC data. However, since these maximal/minimal values can only be calculated at the end of a time period, a look-ahead bias is introduced if these values are used - during - the current period. It is always necessary to lag high/low values by at least one period in any trading strategy making use of them. As with optimisation bias, one must be extremely careful to avoid its introduction. It is often the main reason why trading strategies underperform their backtests significantly in live trading. Survivorship Bias Survivorship bias is a particularly dangerous phenomenon and can lead to significantly inflated performance for certain strategy types. It occurs when strategies are tested on datasets that do not include the full universe of prior assets that may have been chosen at a particular point in time, but only consider those that have survived to the current time. As an example, consider testing a strategy on a random selection of equities before and after the 2001 market crash. Some technology stocks went bankrupt, while others managed to stay afloat and even prospered. If we had restricted this strategy only to stocks which made it through the market drawdown period, we would be introducing a survivorship bias because they have already demonstrated their success to us. In fact, this is just another specific case of look-ahead bias, as future information is being incorporated into past analysis. There are two main ways to mitigate survivorship bias in your strategy backtests: Survivorship Bias Free Datasets - In the case of equity data it is possible to purchase datasets that include delisted entities, although they are not cheap and only tend to be utilised by institutional firms. In particular, Yahoo Finance data is NOT survivorship bias free, and this is commonly used by many retail algo traders. One can also trade on asset classes that are not prone to survivorship bias, such as certain commodities (and their future derivatives). Use More Recent Data - In the case of equities, utilising a more recent data set mitigates the possibility that the stock selection chosen is weighted to survivors, simply as there is less likelihood of overall stock delisting in shorter time periods. One can also start building a personal survivorship-bias free dataset by collecting data from current point onward. After 3-4 years, you will have a solid survivorship-bias free set of equities data with which to backtest further strategies. We will now consider certain psychological phenomena that can influence your trading performance. Psychological Tolerance Bias This particular phenomena is not often discussed in the context of quantitative trading. However, it is discussed extensively in regard to more discretionary trading methods. It has various names, but Ive decided to call it psychological tolerance bias because it captures the essence of the problem. When creating backtests over a period of 5 years or more, it is easy to look at an upwardly trending equity curve, calculate the compounded annual return, Sharpe ratio and even drawdown characteristics and be satisfied with the results. As an example, the strategy might possess a maximum relative drawdown of 25 and a maximum drawdown duration of 4 months. This would not be atypical for a momentum strategy. It is straightforward to convince oneself that it is easy to tolerate such periods of losses because the overall picture is rosy. However, in practice, it is far harder If historical drawdowns of 25 or more occur in the backtests, then in all likelihood you will see periods of similar drawdown in live trading. These periods of drawdown are psychologically difficult to endure. I have observed first hand what an extended drawdown can be like, in an institutional setting, and it is not pleasant - even if the backtests suggest such periods will occur. The reason I have termed it a bias is that often a strategy which would otherwise be successful is stopped from trading during times of extended drawdown and thus will lead to significant underperformance compared to a backtest. Thus, even though the strategy is algorithmic in nature, psychological factors can still have a heavy influence on profitability. The takeaway is to ensure that if you see drawdowns of a certain percentage and duration in the backtests, then you should expect them to occur in live trading environments, and will need to persevere in order to reach profitability once more. Software Packages for Backtesting The software landscape for strategy backtesting is vast. Solutions range from fully-integrated institutional grade sophisticated software through to programming languages such as C, Python and R where nearly everything must be written from scratch (or suitable plugins obtained). As quant traders we are interested in the balance of being able to own our trading technology stack versus the speed and reliability of our development methodology. Here are the key considerations for software choice: Programming Skill - The choice of environment will in a large part come down to your ability to program software. I would argue that being in control of the total stack will have a greater effect on your long term PL than outsourcing as much as possible to vendor software. This is due to the downside risk of having external bugs or idiosyncrasies that you are unable to fix in vendor software, which would otherwise be easily remedied if you had more control over your tech stack. You also want an environment that strikes the right balance between productivity, library availability and speed of execution. I make my own personal recommendation below. Execution Capability/Broker Interaction - Certain backtesting software, such as Tradestation, ties in directly with a brokerage. I am not a fan of this approach as reducing transaction costs are often a big component of getting a higher Sharpe ratio. If youre tied into a particular broker (and Tradestation forces you to do this), then you will have a harder time transitioning to new software (or a new broker) if the need arises. Interactive Brokers provide an API which is robust, albeit with a slightly obtuse interface. Customisation - An environment like MATLAB or Python gives you a great deal of flexibility when creating algo strategies as they provide fantastic libraries for nearly any mathematical operation imaginable, but also allow extensive customisation where necessary. Strategy Complexity - Certain software just isnt cut out for heavy number crunching or mathematical complexity. Excel is one such piece of software. While it is good for simpler strategies, it cannot really cope with numerous assets or more complicated algorithms, at speed. Bias Minimisation - Does a particular piece of software or data lend itself more to trading biases You need to make sure that if you want to create all the functionality yourself, that you dont introduce bugs which can lead to biases. Speed of Development - One shouldnt have to spend months and months implementing a backtest engine. Prototyping should only take a few weeks. Make sure that your software is not hindering your progress to any great extent, just to grab a few extra percentage points of execution speed. C is the elephant in the room here Speed of Execution - If your strategy is completely dependent upon execution timeliness (as in HFT/UHFT) then a language such as C or C will be necessary. However, you will be verging on Linux kernel optimisation and FPGA usage for these domains, which is outside the scope of this article Cost - Many of the software environments that you can program algorithmic trading strategies with are completely free and open source. In fact, many hedge funds make use of open source software for their entire algo trading stacks. In addition, Excel and MATLAB are both relatively cheap and there are even free alternatives to each. Now that we have listed the criteria with which we need to choose our software infrastructure, I want to run through some of the more popular packages and how they compare: Note: I am only going to include software that is available to most retail practitioners and software developers, as this is the readership of the site. While other software is available such as the more institutional grade tools, I feel these are too expensive to be effectively used in a retail setting and I personally have no experience with them. Backtesting Software Comparison Description: High-level language designed for speed of development. Wide array of libraries for nearly any programmatic task imaginable. Gaining wider acceptance in hedge fund and investment bank community. Not quite as fast as C/C for execution speed. Execution: Python plugins exist for larger brokers, such as Interactive Brokers. Hence backtest and execution system can all be part of the same tech stack. Customisation: Python has a very healthy development community and is a mature language. NumPy/SciPy provide fast scientific computing and statistical analysis tools relevant for quant trading. Strategy Complexity: Many plugins exist for the main algorithms, but not quite as big a quant community as exists for MATLAB. Bias Minimisation: Same bias minimisation problems exist as for any high level language. Need to be extremely careful about testing. Development Speed: Pythons main advantage is development speed, with robust in built in testing capabilities. Execution Speed: Not quite as fast as C, but scientific computing components are optimised and Python can talk to native C code with certain plugins. Cost: Free/Open Source Description: Mature, high-level language designed for speed of execution. Wide array of quantitative finance and numerical libraries. Harder to debug and often takes longer to implement than Python or MATLAB. Extremely prevalent in both the buy - and sell-side. Execution: Most brokerage APIs are written in C and Java. Thus many plugins exist. Customisation: C/C allows direct access to underlying memory, hence ultra-high frequency strategies can be implemented. Strategy Complexity: C STL provides wide array of optimised algorithms. Nearly any specialised mathematical algorithm possesses a free, open-source C/C implementation on the web. Bias Minimisation: Look-ahead bias can be tricky to eliminate, but no harder than other high-level language. Good debugging tools, but one must be careful when dealing with underlying memory. Development Speed: C is quite verbose compared to Python or MATLAB for the same algorithmm. More lines-of-code (LOC) often leads to greater likelihood of bugs. Execution Speed: C/C has extremely fast execution speed and can be well optimised for specific computational architectures. This is the main reason to utilise it. Cost: Various compilers: Linux/GCC is free, MS Visual Studio has differing licenses. Different strategies will require different software packages. HFT and UHFT strategies will be written in C/C (these days they are often carried out on GPUs and FPGAs ), whereas low-frequency directional equity strategies are easy to implement in TradeStation, due to the all in one nature of the software/brokerage. My personal preference is for Python as it provides the right degree of customisation, speed of development, testing capability and execution speed for my needs and strategies. If I need anything faster, I can drop in to C directly from my Python programs. One method favoured by many quant traders is to prototype their strategies in Python and then convert the slower execution sections to C in an iterative manner. Eventually the entire algo is written in C and can be left alone to trade In the next few articles on backtesting we will take a look at some particular issues surrounding the implementation of an algorithmic trading backtesting system, as well as how to incorporate the effects of trading exchanges. We will discuss strategy performance measurement and finally conclude with an example strategy. Click Below To Learn More About. The information contained on this web site is the opinion of the individual authors based on their personal observation, research, and years of experience. The publisher and its authors are not registered investment advisers, attorneys, CPAs or other financial service professionals and do not render legal, tax, accounting, investment advice or other professional services. The information offered by this web site is general education only. Because each individuals factual situation is different the reader should seek his or her own personal adviser. Neither the author nor the publisher assumes any liability or responsibility for any errors or omissions and shall have neither liability nor responsibility to any person or entity with respect to damage caused or alleged to be caused directly or indirectly by the information contained on this site. Úselo bajo su propio riesgo. Additionally, this website may receive financial compensation from the companies mentioned through advertising, affiliate programs or otherwise. Rates and offers from advertisers shown on this website change frequently, sometimes without notice. While we strive to maintain timely and accurate information, offer details may be out of date. Visitors should thus verify the terms of any such offers prior to participating in them. The author and its publisher disclaim responsibility for updating information and disclaim responsibility for third-party content, products, and services including when accessed through hyperlinks and/or advertisements on this site.

Comments

Popular posts from this blog

Binary Option 2017

Diferentes Tipos De Estrategias Comerciales

Binary Options Vs Spot Forex Definition