Cómo construir un algoritmo para operar

Esta es una pregunta importante, debido a esta importante respuesta:

Comience por no centrarse en el algoritmo en absoluto.

En primer lugar, busque una “ventaja”. . . ya sea que lo haga revisando innumerables gráficos, buscando patrones repetibles de acción del precio, o si se dedica a métodos y métodos estadísticos y matemáticos para procesar y analizar datos históricos de precios, su objetivo más importante debe ser encontrar las condiciones situacionales para un El punto de entrada a los mercados que usted ha podido probar representa una verdadera ventaja.

Para aquellos que no están familiarizados, la ventaja se definiría mejor como una ventaja del mercado, una ventaja sobre otros inversores, una confluencia de las condiciones del mercado que, cuando aparecen, a menudo parecen conducir al movimiento de precios en una dirección específica y predecible, tanto sobre datos históricos como sobre datos de precios futuros por venir.

El mayor secreto en el comercio automatizado del que nadie parece hablar es que crear una estrategia, en sí mismo, no es una tarea difícil, especialmente con la ayuda de las últimas plataformas de comercio que le permiten hacerlo sin siquiera tener un conocimiento de codificación. Lo difícil es, ha sido y probablemente siempre será, encontrar ventaja. Busque preguntar y responder la pregunta ¿Qué tiene este punto de entrada o salida específico que probablemente generará ganancias, en relación con cualquier punto de entrada / salida aleatorio?’, Y solo proceda a crear un algoritmo cuando esté realmente seguro de tu respuesta.

Tan pronto como llegue a este punto, y digamos por el argumento que ya está allí, debe comenzar a pensar en cómo podría cuantificar las condiciones del mercado involucradas en su entrada / salida de producción de borde. Si, por ejemplo, ha marcado los gráficos lo suficiente como para encontrar un patrón aparentemente consistente por el cual cuando el precio cae por debajo de su mínimo durante el día después de 4 barras rectas de datos de precios que contienen mínimos más bajos, parece que casi siempre termina más alto para el día, podría crear algunas reglas simples:

  1. Cuando el precio ha bajado en X barras consecutivas (X, en este caso, sería ‘4’)
  2. Y el precio está haciendo un nuevo mínimo para el día,
  3. LUEGO ingrese al mercado / orden de límite ‘Largo’

Este es, por supuesto, un ejemplo simplista para ilustrar un punto, pero muchas estrategias poderosas y rentables son así de simples. (Muchos operadores se engañan a sí mismos al pensar que cualquier estrategia comercial simplista probablemente sea conocida por casi todos, y por lo tanto de poco o nada de valor. Esto es definitivamente falso)

A continuación, deberá encontrar un medio para crear el código, y permitirle ejecutar y transmitir órdenes a una agencia de corretaje para procesar sus transacciones. Mi sugerencia aquí sería descargar e instalar una solución todo en uno, utilicé Ninjatrader mientras comenzaba por mi cuenta y utilicé su funcionalidad de ‘asistente de estrategia’ para unir de manera fácil y rápida los componentes básicos de su estrategia. todo.

A partir de ahí, puede volver a probarlo dentro de la plataforma, optimizarlo (probar otras variables y condiciones lógicas en intentos de encontrar algo que pueda mejorar aún más el rendimiento) y, finalmente, después de haber creado y compilado la estrategia, puede ejecutarla vivir en los mercados abiertos, en simulación (sí, por favor) o en modo de comercio con dinero real.

En pocas palabras, la creación del algoritmo en sí es bastante fácil y directo, y algo que prácticamente cualquier persona puede hacer ahora. Sin embargo, encontrar ventaja es a partes iguales ‘arte’ y ‘ciencia’, y mucho más difícil. Don Donigan tuvo una gran respuesta aquí, leer todo lo que puedas tener es una gran ayuda. . Si puede combinar esto con sumergirse en gráficos, backtesting, optimización, y observar cómo algunas de sus creaciones operan en modo de simulación en tiempo real en los mercados, su camino educativo debería ser rápido y eficiente.

¡Buena suerte!

Requiere mucho trabajo y esfuerzos constantes para obtener ganancias en el comercio de acciones. Uno puede escuchar muchas historias de éxito sobre cómo obtener ganancias en el comercio de acciones, pero una distinción clara entre suerte y disciplina es esencial para recoger tales historias. En esta publicación, nuestro objetivo es proporcionarle a través de estrategias comerciales cuantitativas algunos métodos probados que generan ganancias significativas.

Es necesario un enfoque disciplinado en la construcción de una estrategia comercial. Se puede clasificar en los siguientes pasos.

  1. Formación de hipótesis
  2. Back-testing y optimización
  3. Estrategia de codificación en plataforma de negociación
  4. Prueba de simulador
  5. Trading en vivo en el mercado

La formación de hipótesis trata sobre cuál cree que es el comportamiento del mercado. Si crees que el mercado tiene una tendencia alcista, querrás ir en largo, si crees que el mercado tiene una tendencia bajista, querrás ir en corto. Una de esas hipótesis en el comercio técnico es “si el precio diario es mayor que el promedio móvil de N días, es hora de comprar y si el precio es menor que el precio promedio móvil de N días, entonces es hora de vender.

Una vez que se formula la hipótesis, los siguientes pasos son volver a probar la estrategia y optimizar los parámetros. El promedio móvil de “N” días puede ser cualquier número, digamos 20, 40 o 200 días de promedio móvil.

Las pruebas de respaldo son esenciales para observar cuál de las ventanas de promedio móvil proporcionó los mejores retornos.

Para un ejemplo de la media móvil, la optimización implica elegir el mejor período de la media móvil, el límite de stop loss que debe establecerse y el límite de beneficio después del cual la posición debe cuadrarse. Es lo suficientemente sabio dividir los datos en dos partes y aplicar back-test en la primera mitad. Con los parámetros establecidos, ejecute esos parámetros optimizados en la segunda mitad de los datos. Si los resultados son consistentes con los de los resultados de la prueba retrospectiva en la primera mitad, negocie con el mismo conjunto de parámetros; de lo contrario, elija el siguiente mejor conjunto.

Dado que el comercio cuantitativo implica la programación, debe elegir uno de los lenguajes de codificación y una plataforma de negociación para ejecutarlo. Muchos de los comerciantes minoristas usan C ++, C # o Java para la ejecución de operaciones. Después de ajustar los parámetros en las pruebas de respaldo, es bastante tentador saltar el barco y comenzar a comerciar en el mercado en vivo. Cabe señalar que el rendimiento pasado no es un indicador para el futuro. Entonces, la mejor manera de mirar hacia adelante en su estrategia es probándola en un entorno simulado (comercio virtual). Esto le dará una idea clara de cómo funciona su estrategia en el mercado en vivo.

Una vez que esté seguro de los resultados de la prueba inversa y el comercio virtual, es hora de mostrar el comercio en vivo. A continuación se muestra la lista de parámetros que se deben estimar al ejecutar el comercio en vivo.

  • CAGR (Tasa de crecimiento anual compuesta)
  • Proporción de aciertos
  • Beneficio promedio por operación
  • Pérdida promedio por operación
  • Reducción máxima
  • Máxima pérdida consecutiva
  • La volatilidad vuelve
  • Relación de Sharpe

Es importante tener en cuenta el escenario del mercado al elegir el período de negociación para las pruebas retrospectivas. Seleccionar una duración de negociación que tenga una tendencia típica no daría una imagen completa. Un escenario de mercado ideal tiene cuatro fases, es decir, consolidación, alcista, distribución y bajista. La consolidación es una fase en la que el stock se mueve dentro de un patrón definido dentro de un nivel de barrera. La fase de distribución es una fase de acumulación que significa el final de la tendencia bajista y el comienzo de la tendencia alcista. Por lo tanto, debe tenerse cuidado de que la ventana de back-testing que elija para probar las estrategias incluya todos los escenarios de mercado posibles.

El comercio en los mercados de valores siempre implica un elemento de riesgo. Hay un dicho, “Sin dolor, sin ganancia”. Un consejo inteligente sería elegir con qué dolor puede vivir, en lugar de elegir qué ganancia desea obtener. Para cuantificar la declaración, debe equilibrar la relación riesgo recompensa. Debes preguntarte “¿Cuál es tu apetito de riesgo? ¿Prefiere bajo riesgo – bajo rendimiento o alto riesgo alto rendimiento? ¿Desea retornos más altos con un alto apalancamiento y es propenso a las reducciones máximas o prefiere rendimientos nominales con poco o ningún apalancamiento? ”La claridad de pensamiento es importante para tomar decisiones relacionadas con el comercio y responder estas preguntas le da una idea clara de cuál es su enfoque el comercio debe ser.

Como dice Warren Buffet, “¡No cometas el mismo error dos veces!”. Uno y único mantra para el éxito es mejorar día a día.

Video del seminario web

Próximo paso

Después de leer este artículo, conocerá los fundamentos de la formación de estrategias comerciales. Puede comenzar a diseñar una estrategia comercial utilizando R (plataforma de código abierto) con la ayuda de este ejemplo. También tenemos un curso interactivo de campo de datos de 10 horas de duración ‘Modelar una estrategia de comercio cuantitativa en R’ que le permitirá probar sus habilidades.

Fuente: Formulación de Paradigmas de Estrategia Comercial

A continuación se muestra la guía paso a paso para crear su sistema comercial desde cero en el software Amibroker.

Paso 1: Formule su plan de negociación

El primer paso sería hacer una lista de verificación de los parámetros en función de los cuales toma sus decisiones comerciales. Estos parámetros deben ser algo que pueda formularse en un Algoritmo, evitando estrictamente los elementos de sensación o especulación de Gut. Puede ser tan simple como decisiones basadas en el tiempo, como comprar una acción en particular el primer día de cada mes, o decisiones basadas en análisis técnicos como la ruptura de Trendline con un volumen creciente. También debe planificar el monto de su inversión para cada transacción, el marco de tiempo para el comercio, así como su stoploss y objetivos. Una vez que haya formulado su plan, debe validarlo contra un montón de acciones para ver si realmente funciona. Este paso es muy importante antes de saltar a los siguientes pasos. Si su plan funciona el 50% del tiempo, con una relación Riesgo-Recompensa de al menos 1: 2, entonces es bueno convertirlo en un Algoritmo.

Paso 2: convierte tu idea en un algoritmo

Luego, debe comenzar a escribir un código para su plan comercial formulado. Un código no es más que un montón de declaraciones a través de las cuales la computadora puede entender su lógica de Compra / Venta. Usaríamos Amibroker Formula Language (AFL) para escribir Algoritmo de Trading. Es un lenguaje de programación de alto nivel y muy fácil de entender si comienzas desde lo básico. Incluso una persona sin experiencia en programación puede aprender AFL y evitar gastar innecesariamente en costosos AFL prefabricados. Consulte esta publicación para ver el tutorial de AFL desde cero. Supongamos que opera en base a un cruce exponencial de promedio móvil en el marco de tiempo diario. Compraría una acción cuando 50 EMA cruzara 200 EMA desde abajo, y vendería cuando 50 EMA cruzara 200 EMA desde arriba.

Así es como se ve cuando se aplica en el gráfico:

Paso 3: prueba tu algoritmo

Backtesting es un proceso para validar el rendimiento de su algoritmo en datos históricos. Esto es algo similar a lo que hizo en el Paso 1 manualmente. Amibroker tiene un motor de backtest muy poderoso que puede hacer esto en segundos. Solo necesita importar datos históricos de sus scripts favoritos en Amibroker. Consulte este enlace para descargar datos de 1 minuto de Intraday para Nifty y Banknifty. Para comprender el proceso detallado de backtesting en Amibroker, consulte el siguiente enlace de la documentación oficial:

Poner a prueba sus ideas comerciales en Amibroker

Para hacer una prueba de respaldo de esta estrategia EMA Crossover, utilizaremos NSE Nifty como nuestro scrip preferido, con un capital inicial de 200000 rupias. Digamos que compramos 2 lotes (150 nos) por transacción. Una vez que pruebe esta estrategia, obtendrá un informe detallado que incluye su CAGR anual, reducción,% de ganancia / pérdida neta, etc. Puede comprender varios parámetros en el informe de prueba de Amibroker aquí.

Paso 4: optimiza tus parámetros de algoritmo

La optimización es el proceso de encontrar iterativamente los mejores parámetros para su sistema de comercio. Por ejemplo: en nuestro ejemplo, hemos utilizado 50 y 200 como los períodos EMA, ahora intentaría optimizar estos parámetros para ver si hay alguna otra combinación de promedio móvil que pueda dar mejores resultados con la menor reducción. No necesita ingresar estos parámetros manualmente y registrar los resultados del backtest. El motor de optimización de Amibroker simplificaría esta tarea para usted. Recorrerá el rango de parámetros que especifique y evaluará el rendimiento de su sistema para cada conjunto de parámetros. Para comprender el proceso de optimización en detalle, consulte el siguiente enlace de la documentación oficial:

Guía de optimización de Amibroker

Paso 5: gestión de riesgos

No es suficiente construir un sistema de comercio exitoso que dé resultados decentes. Definitivamente necesita incorporar una gestión de riesgos que lo ayude a superar riesgos de mercado impredecibles. Consulte nuestra publicación de blog que describe las estrategias detalladas de gestión de riesgos para los comerciantes:

Estrategias de gestión de riesgos para comerciantes

Es posible que haya notado que el sistema algorítmico simple que hemos desarrollado no tiene ningún componente Stop loss. Todas las posiciones largas se cuadran en función de la señal de Venta. Intentemos agregar Stop Loss en este sistema. Agregue la siguiente línea en su código:

Stoploss = 2;
ApplyStop (Tipo = 0, Modo = 1, Cantidad = StopLoss);

ApplyStop es una función que le indica a Amibroker que salga de la operación cuando se cumple una condición Stoploss o Target predefinida. A continuación se muestra la firma de esta función.

ApplyStop ( tipo, modo, cantidad)

tipo =
0 = stopTypeLoss – parada de pérdida máxima,
1 = stopTypeProfit – stop objetivo de beneficio,
2 = stopTypeTrailing – trailing stop,
3 = stopTypeNBar – Parada de barra N

modo =
0 – deshabilitar stop (stopModeDisable),
1 – cantidad en porcentaje (stopModePercent), o número de barras para N-bar stop (stopModeBars),
2 – cantidad en puntos (stopModePoint);
3 – monto en porcentaje del beneficio (riesgo)

cantidad =
porcentaje / pérdida de puntos / desencadenante de ganancias / monto de riesgo.
Esto podría ser un número (nivel de parada estático) o una matriz (nivel de parada dinámico)

Paso 6: Análisis de Monte Carlo

La simulación de Monte Carlo es uno de los pasos más importantes en el desarrollo y optimización del sistema de Trading. Un proceso que realiza la ejecución repetida de un conjunto predefinido de pasos agregando aleatoriedad a los parámetros de entrada en cada iteración. Los resultados se anotan al final de cada iteración que forma la base del análisis probabilístico del resultado deseado. En términos de negociación, la simulación de Monte Carlo se realiza para pronosticar el éxito de un sistema de negociación probado. Con el fin de garantizar que su sistema de negociación sea robusto, se deben realizar backtesting varias veces agregando variaciones a sus reglas o datos de negociación. Si da resultados consistentes cada vez, entonces tiene una mayor probabilidad de generar ganancias. La siguiente publicación explica el proceso detallado de realizar el análisis de Monte Carlo en Amibroker:

Análisis de Monte Carlo en Amibroker

Vea la instantánea del informe de análisis de Monte Carlo para nuestro sistema de comercio de ejemplo:

Es un hecho bien conocido que ‘Los mercados son aleatorios’, por lo que la simulación de Monte Carlo es un método para absorber esta aleatoriedad en su sistema de Trading. Si su sistema funciona bien en condiciones de mercado aleatorias, entonces tiene una gran probabilidad de éxito. Al final, todo se reduce a la probabilidad y esa es realmente la base de todos los sistemas de Trading rentables. Realmente no es suficiente creer en el sistema de Trading solo basado en informes rentables de backtest. El análisis de Monte Carlo pesa igualmente mientras se diseña un sistema.

Paso 7: automatice su sistema de comercio

Recomendamos estrictamente que debe operar manualmente durante al menos 6 meses antes de ir a una operación totalmente automatizada. Una vez que tenga plena convicción sobre el rendimiento de su sistema de comercio, debe comenzar a explorar la automatización. El comercio automático o semiautomático no deja que las emociones afecten sus decisiones comerciales, coloca directamente el pedido en la terminal cuando su estrategia da señales. Hay muchos complementos y softwares listos para usar disponibles en el mercado que pueden interpretar las órdenes de compra / venta de Amibroker y colocarlas en su terminal de Trading. Consulte la publicación a continuación para obtener una lista de dichos softwares:

Software y complementos de comercio automático

Para automatizar completamente su estrategia, necesitará una terminal de distribuidor. Los intercambios no permiten una plataforma completamente automatizada en una terminal minorista. Para obtener una terminal de distribuidor para segmentos NSE / BSE, deberá convertirse en una persona autorizada con su corredor y también aprobar el Examen de Certificación de Derivados de Equidad NISM-Series-VIII. Mientras que no existe tal procedimiento para MCX. Se registrará un costo único para registrarse como persona autorizada (debe consultar con su corredor) y un alquiler para la terminal del distribuidor de 250 rupias / segmento / intercambio.

Paso 8: observar el rendimiento

Entonces ha desarrollado su sistema, convencido con su rendimiento y / o automatizado. Lamentablemente, la historia no termina aquí. Los mercados siempre están cambiando, y tu estrategia también. Debe observar el rendimiento de su sistema regularmente y anotar todo lo que no sucede como se esperaba. Siempre recuerde que nunca podrá diseñar un sistema de santo grial que funcione en todas las condiciones del mercado.

Leer. Leer. Leer. Sobre los mercados, sobre el comercio, sobre algoritmos exitosos. Lo que buscas es una idea. Un algoritmo es solo una idea reducida a la forma de una receta. Una vez que tienes la idea, la transformas en código de computadora y haces una prueba a fondo. Si después de todo eso todavía está interesado, abre una cuenta comercial, la financia y deja que el algoritmo haga lo suyo. No deje de prestarle atención, o puede perder mucho dinero.

Esto es fácil en principio. Difícil en la práctica. Tenga cuidado: ningún comercio algorítmico funciona para siempre. Los mercados cambian. El momento va y viene. Puede perder mucho dinero rápidamente con una computadora, si no sabe lo que está haciendo. Si esto es solo un ejercicio académico, diviértete sin dinero. Si lo toma en serio, puede consultar un ETF algorítmico o un fondo mutuo. Recuerde: ningún comercio algorítmico funciona para siempre.

Puedo darle una breve perspectiva sobre el comercio HFT. HFT es parte del próximo campo: Algorithmic Trading.

La base para HFT es hacer un dinero rápido apostando tanto en el lado de la oferta como en el de la oferta. Es una estrategia neutral para el mercado: es decir, no tiene una visión de hacia dónde irá el mercado. Depende de embolsarse la oferta de oferta extendida desde las órdenes de mercado de los tarders no informados. Puedes echar un vistazo al enlace:

Cursos sobre comercio algorítmico y cuantitativo

Esto lo ayudará a comprender mejor la dinámica de la cartera de pedidos y otros parámetros estadísticos utilizados en el comercio algorítmico.

Depende de las fuentes de datos que tenga. Por ejemplo, hay una competencia comercial llamada Numerai que le brinda conjuntos de datos preparados para el análisis de ML. Entonces, su trabajo allí es solo construir modelos ML y enviar sus predicciones. Hace algún tiempo escribí una publicación con la comparación de algoritmos de aprendizaje automático en datos sin procesar de Numerai con la plataforma MLJAR.

Aquí hay una especie de introducción de 10.000 pies a los enfoques de aprendizaje automático:

More Interesting

Conozco la implementación básica de diferentes estructuras de datos como árboles, gráficos, colas y muchos más para inserción, eliminación, recorrido. Ahora, ¿cómo procedo a construir un sistema operativo?

¿Es posible usar Dijkstra por dos costos?

Cómo escribir un programa en C para implementar un algoritmo de planificación de prioridades, junto con la visualización del diagrama de Gantt

¿Qué es el nodo en la estructura de datos?

Si un generador de números aleatorios generara 1600 números del 1 al 16, ¿cuántos habría de cada número?

¿El cerebro procesa imágenes exactamente como los algoritmos de visión AI y las CNN?

Cómo verificar si la suma de los números de la primera mitad y la segunda mitad de una matriz es la misma

¿Estoy perdiendo el tiempo implementando la estructura de datos elementales (Stacks, Queues y LinkedLists) como parte de la preparación para una entrevista de prácticas en Google?

He resuelto unos 52 problemas en SPOJ. ¿Debería mudarme a Codeforces ahora?

¿Existe un límite superior para la capacidad de comprensión de un individuo? Si es así, ¿qué se debe hacer para mejorarlo?

Cómo ponerse al día con las matemáticas necesarias para poder comprender y analizar algoritmos si no sé sobre cosas como el registro

¿Cuál es el mejor algoritmo para girar a la izquierda en los semáforos?

¿Qué es el algoritmo SURF en el procesamiento de imágenes?

¿Cómo podemos resolver el problema mencionado a continuación?

¿Alguien puede dar un ejemplo en Java de pasar una matriz unidimensional, una matriz bidimensional y una matriz tridimensional por referencia y luego manipularlos?