Type/to search
0
Follow
80
Followers
Introducción al comercio cuantitativo por parte de un inventor: de los conceptos básicos a la práctica
Original
Created 2019-06-25 15:48:58  Updated 2023-10-31 21:01:08
 2
 16107

img

Tabla de contenido

Capítulo 1 Fundamentos del trading cuantitativo

1.1 ¿Qué es el trading cuantitativo?

resumen

El comercio cuantitativo, como producto de la combinación de ciencia y máquinas, está cambiando el panorama del mercado financiero moderno. Ahora muchos inversores han dirigido su atención a este campo. ¿Cómo minimizar los riesgos y lograr la mayor rentabilidad posible? Éste es también el propósito de esta serie de cursos. Como primer artículo, explicaremos brevemente "¿Qué es el trading cuantitativo?".

Descripción general

Cuando muchas personas escuchan el término “trading cuantitativo”, piensan que es algo de alto nivel y que los hará ricos de la noche a la mañana. La era de la inteligencia artificial, acompañada del auge de tecnologías avanzadas como el aprendizaje profundo, el big data y la computación en la nube, le ha otorgado un color misterioso. Parece que siempre que se utilice el trading cuantitativo se puede construir una estrategia comercial "perfecta".

De hecho, hasta cierto punto, el comercio cuantitativo se ha convertido en un mito. Dejando de lado el trading, la "cuantificación" es en realidad el uso de computadoras, estadísticas, matemáticas y otros métodos, a través de un sistema de inversión científico, para encontrar un conjunto de sistemas de señales comerciales esperados. Este sistema de señales nos dirá cuándo y a qué precio debemos comprar y vender.

El desarrollo del comercio cuantitativo

Volviendo a la fuente, quien utilizó por primera vez métodos cuantitativos para analizar los cambios de datos y descubrir los patrones de fluctuaciones de los precios del mercado no fue ni el holandés, cuna de las acciones, ni el británico, impulsor de las finanzas modernas, ni el estadounidense, que ha coexistido con las finanzas desde la fundación del país, sino un francés.

Ya en el siglo XVIII, Jules Regnault, un asistente de corredor de bolsa francés, propuso la teoría moderna de los cambios en los precios de las acciones. Posteriormente publicó el libro "Cálculo de probabilidad y la filosofía del comercio de acciones", en el que profundizó en la ley de subidas y bajadas del mercado (distribución normal) y descubrió: "La desviación del precio es proporcional a la raíz cuadrada del tiempo", y finalmente logró el éxito comercial a través de decisiones de inversión racionales y cuantitativas.

Hoy en día, en la era de Internet + big data + computación en la nube + inteligencia artificial, el comercio cuantitativo también se ha desarrollado rápidamente. Canary Wharf de Londres, antaño el corazón financiero mundial, se ha convertido desde hace tiempo en un centro para empresas de TI. Los principales bancos de inversión del mundo también están cultivando sus propios equipos cuantitativos, tratando de sumarse a la guerra financiera de "quien consigue el modelo gana el mundo". Estos equipos de TI que desarrollan modelos comerciales también se denominan equipos cuantitativos. En términos de escala, Estados Unidos, que empezó antes, ya cuenta con un gran número de fondos de cobertura cuantitativos fuertes.

Por el contrario, en China, tanto los equipos de hardware como las capacidades de investigación de inversiones todavía están en las etapas iniciales. Sin embargo, cada vez más instituciones e inversores profesionales se han dado cuenta de los beneficios del trading cuantitativo y han participado en este campo. En particular, a medida que la supervisión se vuelve cada vez más estricta y la eficiencia del mercado mejora gradualmente, el comercio cuantitativo tiene un mayor margen para crecer.

Características del trading cuantitativo

Verificación científica: imagina que una vez que tienes un sistema de trading, si utilizas un sistema de trading simulado para probar su eficacia, puede costar una enorme cantidad de tiempo. Si lo prueba directamente con un sistema comercial real, podría perder dinero real. Sin embargo, la función de backtesting en el trading cuantitativo se puede utilizar para probar el sistema de trading de forma científica a través de una gran cantidad de datos históricos. Deje que los datos hablen sobre lo que funciona y lo que no, en lugar de simplemente seguir a la multitud.

Objetivo y precisoEn el comercio, nuestro verdadero enemigo somos nosotros mismos. Gestionar nuestra mentalidad es más fácil decirlo que hacerlo. Las debilidades humanas como la codicia, el miedo y la suerte se magnificarán varias veces en el mercado comercial. El trading cuantitativo puede ayudarnos a superar estas debilidades y tomar mejores decisiones en el trading.

Oportuno y eficienteEn el comercio subjetivo, la velocidad de reacción de las personas no puede ser más rápida que la de las computadoras, y la fuerza física y la energía de las personas no pueden funcionar las 24 horas del día. En el mercado comercial donde las oportunidades son fugaces, el comercio cuantitativo puede reemplazar por completo el comercio subjetivo, encontrar oportunidades comerciales y rastrear los cambios del mercado de manera oportuna y rápida.

Control de riesgosEl trading cuantitativo no sólo puede explorar patrones históricos que pueden repetirse en el futuro a partir de datos históricos, sino que estos patrones históricos también son estrategias con una mayor probabilidad de ganar. También puede crear una variedad de carteras de inversión diferentes para reducir los riesgos sistémicos y suavizar la curva de financiación.

¿Cuáles son las estrategias comerciales clásicas para el trading cuantitativo?

Estrategia de ruptura de apertura

La primera media hora después de la apertura puede a menudo determinar la tendencia del día. Esta estrategia utiliza si el precio es una línea positiva o negativa dentro de la media hora después de la apertura como estándar para juzgar la tendencia del día. Si es una línea positiva, abra una posición de compra; Si es una línea negativa, abra una posición de venta y cierre la posición unos minutos antes del cierre. Esta es una estrategia comercial muy simple.

Estrategia del canal Donchian

img

Figura 1-1 Diagrama de estrategia del canal de Donchian

La estrategia del Canal Donchian puede considerarse como la antecesora del trading intradiario. Sus reglas son: comprar si el precio actual es mayor que el precio más alto de las N K líneas anteriores, y vender si el precio actual es menor que el precio más bajo de las N K líneas anteriores. Las famosas reglas de trading de tortugas utilizan una versión modificada de la estrategia del canal de Donchian.

Estrategia de arbitraje entre períodos

El arbitraje entre períodos es el tipo más común de transacción de arbitraje. Se basa en los precios de contratos con diferentes meses de entrega para el mismo producto comercial. Si existe una gran diferencia de precio entre los dos precios, se pueden comprar y vender contratos de futuros de diferentes períodos al mismo tiempo para realizar un arbitraje entre períodos. Supongamos que la diferencia de precio entre el contrato principal y el contrato principal secundario se mantiene en torno a -50~50 durante mucho tiempo. Si el spread llega a 70 en un día determinado, esperamos que vuelva a 50 en algún momento en el futuro. Luego, puede vender el contrato principal y comprar el contrato principal secundario al mismo tiempo para acortar la diferencia de precio. viceversa.

Resumir

Arriba, hemos presentado brevemente los conceptos relevantes del trading cuantitativo desde los aspectos de su definición, desarrollo, características y estrategias comerciales clásicas.

Comprender el trading cuantitativo es un paso importante en el camino para convertirse en un Quant. ¡Por último, deseo que todos puedan enriquecerse en el mercado bajista y alcanzar la realización del conocimiento lo antes posible! Recuerde, ¡está a sólo un mercado alcista de la libertad financiera!

Vista previa de la siguiente sección
¿Cuáles son las diferencias entre el trading cuantitativo y el trading tradicional? En el trading real, ¿deberíamos elegir el trading tradicional o el trading cuantitativo? En la siguiente sección, abordaremos estas dos preguntas para comprender mejor el comercio cuantitativo.

Tarea

  1. Describa brevemente qué es el comercio cuantitativo en una oración.
  2. ¿Cuáles son las características del trading cuantitativo?

1.2 ¿Por qué elegir el trading cuantitativo?

resumen

Muchas personas utilizan la programación de estrategias complejas como punto de partida cuando hablan sobre trading cuantitativo, arrojando inadvertidamente un velo de misterio sobre dicho trading. En esta sección intentaremos hacer un "boceto" sencillo del trading cuantitativo en un lenguaje fácil de entender para desvelar su misterio. Creo que incluso un novato sin conocimientos básicos puede entenderlo fácilmente.

La diferencia entre el trading cuantitativo y el trading subjetivo

El trading subjetivo presta más atención al análisis humano y al sentido del mercado. Incluso si aparecen señales de compra y venta, las órdenes se colocarán de forma selectiva. La gente prefiere perderse el mercado antes que cometer errores. Los sentimientos humanos son complejos, cambiantes y poco fiables. Una vez que la mayoría de los comerciantes experimentan pérdidas consecutivas, tienden a cambiar a otro método. Es altamente aleatorio y se ve fácilmente afectado por ganancias y pérdidas, lo que dificulta la obtención de ganancias estables.

El comercio cuantitativo desarrolla estrategias de compra y venta consistentes a través de la comprensión de las transacciones. En el trading, trate todas las tendencias por igual y maneje las posiciones de apertura y cierre de manera sistemática. Es mejor cometer errores que perder oportunidades. Además, cuenta con un completo sistema de evaluación, que determina para qué tipo de mercado y productos es más adecuada la estrategia a través de backtesting de datos históricos, y consigue rentabilidad combinando múltiples estrategias y productos.

En resumen, el comercio subjetivo es la base del comercio cuantitativo, y el comercio cuantitativo es el refinamiento del comercio subjetivo. El comercio subjetivo se parece más a la práctica de artes marciales. Si al final puedes tener éxito o no depende en gran medida de tu talento. Algunas personas pueden no alcanzar la iluminación después de diez años, mientras que otras pueden lograrla en un día. El trading cuantitativo se parece más al fitness. Mientras trabajes duro, puedes desarrollar músculos incluso si no tienes talento.

¿Es el trading cuantitativo mejor que el trading subjetivo?

Un trader subjetivo exitoso es, en cierto sentido, también un trader cuantitativo. Porque un trader subjetivo exitoso debe tener su propio conjunto de reglas y métodos, es decir, un sistema de trading. El trading subjetivo exitoso debe basarse en la disciplina y las reglas comerciales, y la parte de ejecución de las reglas comerciales es en realidad la parte cuantitativa del trading subjetivo.

Por el contrario, un trader cuantitativo exitoso también debe ser un excelente trader subjetivo, porque el desarrollo de estrategias de trading cuantitativo es en realidad la cristalización de la filosofía de trading de una persona. Si la percepción y comprensión del mercado son erróneas desde el principio, las estrategias comerciales desarrolladas tendrán dificultades para generar ganancias a largo plazo.

Por lo tanto, desde la perspectiva de la rentabilidad, el factor clave que determina si un trader puede finalmente tener éxito es la filosofía comercial, no si se trata de un trading subjetivo o cuantitativo. El trading cuantitativo puede parecer grandilocuente a primera vista, pero su esencia rentable no es diferente de la del trading subjetivo en esencia. Son como los dos lados de una misma cosa, que son a la vez opuestos y unificados.

Pero es innegable que el trading cuantitativo tiene muchas ventajas en términos de herramientas comerciales.

Revisión más rápida:Si desea probar una estrategia comercial, necesita calcular una gran cantidad de datos históricos. El comercio cuantitativo puede calcular los resultados en unos pocos minutos. Esta velocidad es muchas veces más rápida que el comercio subjetivo.

Más científicoPara evaluar si una estrategia es buena, nos basamos en datos (como el ratio de Sharpe, la tasa máxima de caída y el rendimiento anualizado), en lugar de en charlatanes egoístas.

Más oportunidades:Hay miles de productos comerciales en el mundo. Es imposible monitorear el mercado al mismo tiempo para el comercio subjetivo, pero el comercio cuantitativo puede monitorear todo el mercado en tiempo real, sin perder ninguna oportunidad comercial y aumentando la rentabilidad.

¿Puede el trading cuantitativo realmente generar dinero?

Por supuesto que se puede, pero es difícil mantenerlo durante mucho tiempo. Que ganes dinero o no no depende del trading cuantitativo en sí, es solo una herramienta. El trading cuantitativo simplemente implementa ideas comerciales de manera programada, regular y cuantificada. El programa solo reemplaza la ejecución. Lo difícil es ganar dinero de forma estable a largo plazo, porque el mercado es un juego y cambia dinámicamente, y las ideas comerciales también deben cambiar con el mercado.

Riesgos del trading cuantitativo

El trading cuantitativo también tiene riesgos, ¿por qué? Porque el trading cuantitativo consiste en descubrir patrones en datos históricos y formular estrategias comerciales. Sin embargo, el mercado financiero es un sistema ecológico, y sus leyes y la naturaleza humana son un proceso dinámico interactivo. Al fin y al cabo, sigue siendo un mercado humano. Las leyes del mercado se verán afectadas por la naturaleza humana, y la codicia y el miedo en la naturaleza humana cambiarán con los cambios en el mercado. Hay muy pocas leyes inmutables en el mercado. Por muy poderosa que sea la estrategia comercial, es difícil hacer frente a cambios tan repentinos en las leyes.

Resumir

De la explicación anterior, podemos ver que el trading cuantitativo no es un método comercial único, es solo una herramienta comercial que nos ayuda a analizar la lógica comercial y mejorar las estrategias comerciales. Independientemente de si usted es un inversor de valor o un inversor técnico, y de si invierte en acciones, bonos, materias primas u opciones, en realidad todo se puede cuantificar. En comparación con los traders que toman decisiones basadas en la experiencia personal, las armas en manos de los traders cuantitativos son la evidencia del mercado y la racionalidad.

Vista previa de la siguiente sección

La cuantificación es solo un método comercial, la estrategia es solo un portador de ideas comerciales y el programa ejecuta cada proceso comercial. La siguiente sección lo guiará a través del ciclo de vida completo del trading cuantitativo, que incluirá: concepción de la estrategia, construcción de modelos, pruebas retrospectivas y ajustes, trading de simulación, trading real, monitoreo de la estrategia, etc.

Tarea

  1. ¿Cuál es la diferencia más importante entre el trading cuantitativo y el trading subjetivo?
  2. ¿Cuáles son las ventajas del trading cuantitativo en comparación con el trading subjetivo?

1.3 ¿Qué necesitas preparar para el trading cuantitativo?

resumen

Un ciclo de vida comercial cuantitativo completo no es sólo la estrategia comercial en sí. Se compone de al menos seis enlaces, entre los que se incluyen: concepción de la estrategia, construcción del modelo, backtesting y ajuste, trading de simulación, trading real, seguimiento de la estrategia, etc.

Pensamiento estratégico

En primer lugar, para realizar operaciones comerciales cuantitativas, primero debe regresar al mercado comercial, observar más los precios en el mercado, comprender las leyes de las fluctuaciones del mercado, tratar de inferir la lógica de cada transacción y, finalmente, resumir la estrategia comercial. Aquí no hay atajos. Quizás necesites leer libros clásicos de inversión o continuar operando y aprendiendo de tus fracasos.

Para los principiantes en el trading cuantitativo, la mejor manera de desarrollar estrategias comerciales al principio es imitar. Utilice directamente los indicadores de análisis técnico existentes para construir la lógica de la estrategia y escribir las reglas de compra y venta, de modo que pueda obtener una estrategia simple. Supongamos que su estrategia comercial es la siguiente: comprar si el precio es superior al precio promedio de los últimos 10 días y vender si el precio es inferior al precio promedio de los últimos 10 días. Entonces su arquitectura es la siguiente (como se muestra a continuación):
img
Figura 1-2 Ejemplo de estrategia comercial

Por supuesto, a medida que acumule experiencia en estrategia y forme sus propios métodos de trading, sus opciones lógicas serán cada vez más diversas y avanzará hacia un trading cuantitativo más sistemático. Si usted puede ser un comerciante con pensamiento cuantitativo, ya sea en el mercado de acciones o de futuros, es una bendición, porque esa persona tiene una rentabilidad sostenida y estable sin importar en qué mercado comercial se encuentre.

Construyendo el modelo

En segundo lugar, es necesario dominar una herramienta comercial cuantitativa para escribir estrategias comerciales y hacer realidad sus ideas comerciales. Se puede utilizar cualquier software comúnmente utilizado en el mercado. Pero si quieres ser un trader cuantitativo de alto nivel, necesitas aprender

Conocer un lenguaje informático. Recomiendo Python porque es el lenguaje autorizado para la computación científica.
También proporciona varios paquetes de análisis de código abierto, procesamiento de archivos, redes, bases de datos, etc.

Si su capacidad de programación es débil, lo que se cree que es el punto débil de la mayoría de los principiantes, se recomienda utilizar un lenguaje de programación visual relativamente simple o lenguaje Mai, que puede aumentar su interés en aprender trading cuantitativo y permitirle concentrarse en estrategias y completar el desarrollo de estrategias de manera eficiente. Como se muestra a continuación: utilizando el lenguaje Mai, desarrolle una estrategia comercial como se mencionó anteriormente. Haga doble clic en la imagen para ver comentarios detallados en el código de la estrategia.

img
Figura 1-3 Página de desarrollo de estrategia comercial

El código de estrategia en la figura anterior se demuestra utilizando el lenguaje Mai de la herramienta cuantitativa del inventor. Integra muchos módulos funcionales que se pueden utilizar directamente y admite funciones de backtesting y trading real. Es una buena manera de empezar rápidamente.

Pruebas retrospectivas y ajustes

Luego de escribir el modelo de estrategia, el siguiente paso es realizar pruebas retrospectivas de la estrategia, así como examinar y optimizar los parámetros. Puede utilizar diferentes parámetros para realizar pruebas retrospectivas de la estrategia y observar el ratio de Sharpe de la estrategia, la reducción máxima, el rendimiento anualizado, etc. Al depurar y modificar continuamente la estrategia, eventualmente obtendremos una estrategia comercial cuantitativa completa.

Por ejemplo, tomamos los datos históricos de 2017 como datos dentro de la muestra y los datos históricos de 2018 como datos fuera de la muestra. Primero, utilizamos los datos de 2017 para optimizar varios conjuntos de parámetros con buen rendimiento y luego usamos estos parámetros para optimizar los de 2018.

Prueba retrospectiva de datos. En términos generales, los resultados de las pruebas retrospectivas fuera de la muestra no son tan buenos como los de las pruebas retrospectivas dentro de la muestra. Sin embargo, si los resultados dentro de la muestra y fuera de la muestra son muy diferentes, entonces la estrategia es casi ineficaz y es necesario observar y analizar para determinar las razones del fracaso de la estrategia.

Supongamos que descubrimos que la estrategia falla debido a datos fuera de la muestra y que grandes pérdidas son causadas por ciertas condiciones extremas del mercado, entonces podemos agregar una condición de stop loss fijo para evitar este riesgo; Si descubrimos que la estrategia falla debido a demasiadas transacciones, entonces podemos ajustar ligeramente la lógica comercial y reducir la frecuencia comercial.

Cabe señalar que si la lógica comercial en sí es errónea desde el principio, será difícil obtener una estrategia rentable por mucho que se modifique. En este momento es necesario reexaminar su pensamiento estratégico. Además, en la optimización de parámetros, cuanto más grupos de parámetros estén disponibles, mejor, lo que indica que la estrategia tiene una amplia aplicabilidad. Al realizar pruebas retrospectivas, las estrategias con muy pocas operaciones pueden sufrir un sesgo de supervivencia. Si el resultado del backtest es una curva de fondos súper rentable
En muchos casos, tu lógica es errónea.

Comercio simulado

Entonces, cuando obtengas una estrategia con una lógica comercial correcta y rentable tanto dentro como fuera de la muestra, no te apresures a operar en una cuenta real. Especialmente para principiantes, es necesario ejecutar una cuenta simulada durante al menos 3 meses. Si se trata de una estrategia nocturna de frecuencia media o baja, se requerirá un tiempo de negociación simulado más largo.

En un mercado simulado completamente desconocido en el futuro, observe el desempeño de la estrategia en el comercio simulado, verifique cuidadosamente si la señal de prueba retrospectiva es consistente con la señal de comercio simulada y si hay una desviación entre el precio cuando se realiza la orden y el precio cuando se completa la transacción. Si el rendimiento es consistente con las expectativas, entonces significa que la estrategia es efectiva.

Las transacciones en el disco

Finalmente, después de probar la estrategia durante mucho tiempo, llega el momento de ponerla en práctica. Por supuesto, también debemos permanecer atentos y protegernos de las condiciones extremas del mercado durante el proceso de comercio cuantitativo. En el trading real, las expectativas de una estrategia generalmente se descuentan y alcanzar el 50% de las expectativas se considera calificado.

Monitoreo de políticas

Por último, necesito recordar a todos que a medida que avanza el trading, también debemos observar la efectividad de la estrategia. Cuando descubrimos que la estrategia tiene pérdidas más allá de las expectativas, debemos reevaluarla. Debido a que las características del mercado cambiarán, las estrategias que formemos ahora estarán orientadas principalmente a las características del mercado pasado. Una vez que las características del mercado cambian, el modelo de estrategia debe ajustarse de manera oportuna o la estrategia debe suspenderse temporalmente.

Resumir

En este artículo explicamos el proceso completo del trading cuantitativo. En resumen, si usted es un inversor con experiencia en el mercado, lo que le frenará serán los conocimientos básicos del lenguaje informático. Puedes comenzar con lenguaje visual o lenguaje Mai, capacitarte en esta plataforma, desarrollar estrategias y luego pasar gradualmente al trading cuantitativo de alta gama en Python.

Si eres un estudiante de ciencias e ingeniería o un profesional de TI con fuertes habilidades de programación, lo que te impedirá ser la experiencia en inversión en el mercado. No subestimes este punto. Como inversor cuantitativo cualificado, ambos tipos de conocimientos son indispensables.

Vista previa de la siguiente sección

El núcleo de todo el ciclo de vida del trading cuantitativo sigue siendo la estrategia comercial. En la siguiente sección, profundizaremos en los elementos de una estrategia comercial completa desde la perspectiva del marco de estrategia comercial. ¡Esto le ayudará a desarrollar su estrategia comercial de forma más integral y a llevar el comercio cuantitativo a un nuevo nivel!

Tarea

  1. Intente escribir la estrategia comercial en esta sección utilizando el lenguaje Mai.
  2. ¿Cuál es el indicador de rendimiento más importante en el backtesting de trading cuantitativo?

1.4 ¿Cuáles son los elementos de una estrategia completa?

resumen

Una estrategia completa es en realidad una variedad de reglas que los traders establecen para sí mismos. Cubre todos los aspectos de la transacción y no deja lugar a la imaginación subjetiva de los comerciantes. La estrategia dará una respuesta a cada decisión de compra y venta. Incluye al menos la selección de estrategia, la selección de productos, la gestión de capital, la colocación de órdenes, la respuesta a condiciones extremas del mercado, la mentalidad comercial, etc.

Selección de estrategia

Desde la perspectiva de los fondos de cobertura, las principales estrategias comerciales se pueden dividir en comercio de tendencias, comercio de pares, comercio de canastas, comercio impulsado por eventos, comercio de alta frecuencia, estrategias de opciones, etc., como se muestra en la siguiente figura. Por supuesto, la forma en que se categorizan las estrategias no es fija.
img
Figura 1-4 Clasificación de la estrategia comercial

Para los principiantes en el trading cuantitativo, no es necesario preocuparse por tantos términos y conceptos. Simplemente empieza desde lo más simple, paso a paso. Si solo recomendara una estrategia de trading cuantitativo para principiantes, sería el trading de tendencias, porque es simple y efectiva. Creo que incluso si no aprendes conocimientos financieros sistemáticamente, aún así puedes hacer un buen trading. Y esta estrategia ha existido durante mucho tiempo, en las primeras estrategias de negociación pública, y todavía es efectiva en múltiples mercados hoy en día porque la naturaleza humana es difícil de cambiar.

¿Qué comprar y vender?

Cualquiera que haya hecho trading debe saber que cada variedad tiene su propia personalidad. Algunas variedades tienen una personalidad muy “caliente”, con buena liquidez, grandes fluctuaciones y alta volatilidad; Algunas variedades tienen una personalidad muy "dócil", fluctúan dentro de un cierto rango durante todo el año y tienen baja volatilidad.

Por lo tanto, al elegir productos comerciales, debe tener en cuenta el concepto de volatilidad. Los productos con alta volatilidad a menudo pueden desarrollar fácilmente una buena tendencia. Para los futuros de materias primas, si se trata de una estrategia de seguimiento de tendencias, intente elegir productos industriales. En términos de atributos del producto, los productos industriales tienden a tener mayor volatilidad que los productos agrícolas.

Diferentes estrategias se adaptan a diferentes condiciones del mercado, y elegir los productos comerciales adecuados es un comienzo muy importante para el gran proyecto de negociación de futuros. En sentido absoluto, no hay variedades absolutamente buenas ni variedades absolutamente malas. Dependiendo de su estilo de inversión y su tolerancia al riesgo, deberá realizar los ajustes correspondientes a sus propios estándares.

¿Cuánto comprar y vender?

Es fácil perder dinero en el trading, pero es difícil ganar dinero. Cuando los fondos de la cuenta pierden el 50%, se requiere una ganancia del 100% para recuperar la pérdida. Incluso si puedes obtener ganancias del 100% muchas veces, solo necesitas perder el 100% una vez para perderlo todo. Por lo tanto, una estrategia comercial madura debe incluir la gestión del dinero.

Para que sea más fácil de entender para todos, aquí también se utiliza la estrategia de media móvil de la sección anterior. De hecho, muchas estrategias comerciales desarrolladas con indicadores técnicos tradicionales generalmente tienen una tasa de caída máxima de más del 50% o incluso más. ¿Pero una estrategia muy arriesgada y completamente inviable?

Obviamente no, la tasa máxima de reducción se puede controlar completamente a través de la gestión de fondos. Si la posición se reduce a la mitad, el riesgo general también se reducirá a la mitad y la tasa máxima de reducción pasará a ser del 30%. Si la posición se reduce nuevamente a la mitad, la tasa máxima de reducción será del 15%. Al final, obtenemos una estrategia con una tasa de caída máxima controlada en torno al 15%. Éste es un método simple y rudimentario de administrar el dinero. Muchas personas saben que no pueden operar con una posición completa, pero no saben por qué no pueden operar con una posición completa. La respuesta está aquí.

Cuándo comprar y vender

Un buen punto de compra es la mitad del éxito, ya que puede sacarte rápidamente del área de costos. Pero nadie podrá decirte nunca si empezar desde este punto es correcto o empezar desde aquel otro punto es incorrecto. Abrir una posición no es el núcleo del trading. El núcleo del trading es cómo optimizar la posición tanto como sea posible después de abrir una posición.

Ya sea una estrategia a corto o a largo plazo, lo que importa no es quién mantiene la posición durante más tiempo, sino la relación riesgo-rendimiento. En otras palabras, el resultado final que afecta el rendimiento de la estrategia es cómo salir y cuándo obtener ganancias. Los métodos de salida se pueden dividir en dos tipos: salida stop loss y salida take profit. Estas dos partes son necesarias para cualquier sistema comercial y también son puntos de inflexión importantes que determinan el éxito o el fracaso de una estrategia comercial.

Cómo comprar y vender

1. Tipo y forma de realizar un pedido:
Hay muchos tipos y métodos para realizar órdenes, tales como: usar órdenes de límite de cola, precio de contraparte, último precio, sobreprecio, precio de límite superior, precio de límite inferior, precio de compra primero, precio de compra segundo, precio de venta primero, precio de venta segundo, o usar primero el precio de cola y luego el sobreprecio, realizar órdenes en lotes, o dividir órdenes grandes en órdenes pequeñas, o simplemente realizar todas las órdenes directamente.

2. Cancelar un pedido
Si la orden no se ejecuta, ¿debería continuar esperando o cancelar la orden? La condición de cancelación se basa en el tiempo. Por ejemplo, si no hay ninguna transacción en 10 segundos y el precio está a 10 saltos del precio cuando se realizó el pedido, ¿debe continuar esperando, cancelar el pedido o hacer un seguimiento del pedido?

3. Órdenes de seguimiento
Cuando una orden no se ejecuta, si se debe hacer seguimiento a la orden. Si persigue una orden, ¿debería hacerlo basándose en el último precio, el precio de la contraparte o el límite de precio? Si la orden perseguida aún no se ha ejecutado, ¿debería continuar persiguiéndola?

4. Límite de precio
¿Qué debo hacer si la señal de orden aparece en el precio límite superior o inferior? Si se debe hacer cola para la ejecución en los precios límites superior e inferior, y qué hacer si no se realiza ninguna ejecución.

5. Llamar a subasta
¿Debo participar en la subasta de apertura y cómo participar?

6. Negociación nocturna
En el caso de algunos futuros de materias primas, la negociación nocturna se extiende desde las 21:00 hasta las 02:30 del día siguiente. Durante este periodo podrás elegir si hacerlo manualmente o por ordenador.

7. Grandes festivales
¿Necesitas mantener tus posiciones antes de las vacaciones extra largas durante los festivales más importantes? ¿Cómo controlar los riesgos en caso de conservarse?

Condiciones extremas del mercado

  1. Grandes fluctuaciones de precios en un corto período de tiempo
    Cómo afrontar situaciones como límites de precios instantáneos, límites de precios continuos, órdenes erróneas, estampidas de precios de mercado de cisne negro, etc.

  2. Riesgo de liquidez
    Si la contraparte no tiene el volumen de órdenes que desea, pero necesita completar la transacción a tiempo, especialmente cuando la liquidez de los contratos no principales es muy pobre, las órdenes que realiza pueden causar fácilmente un impacto en el mercado y el deslizamiento es grande, ¿cómo debe lidiar con eso?

  3. Cambios en las normas de variedad
    Se agregan productos de futuros de materias primas a las operaciones nocturnas, se aumenta la relación de margen y se incrementa la tarifa de manejo. Las estrategias de corto plazo, en particular, serán muy sensibles a estos cambios.

  4. Riesgos del entorno comercial
    Por ejemplo: cómo responder cuando ocurren cortes repentinos de energía, cortes de Internet, fallas de computadoras, caídas de software, suspensión de transferencias bancarias a futuros, desastres naturales, etc.

La probabilidad de que ocurra la situación descrita anteriormente es muy pequeña o casi imposible. Pero si puede suceder, sucederá. Es necesario hacer estas suposiciones y tomar precauciones.

Construcción psicológica

Las tres principales emociones psicológicas comunes en el trading son la codicia, el miedo y la suerte. Los inversores necesitan un sólido sistema de psicología comercial para controlar e incluso utilizar las tres emociones mencionadas anteriormente en diferentes etapas.

Antes de operar, es necesario tener una expectativa general sobre el futuro, incluidas las expectativas del mercado y las expectativas psicológicas del producto. Las expectativas del mercado se refieren a un objetivo claro para la posición del mercado y la dirección futura, y las expectativas del producto se refieren a las oportunidades comerciales y al estado de riesgo del producto en su posición actual. Sin la base psicológica mencionada anteriormente no se puede lograr nada.

Todo el proceso del trading real es un proceso de análisis, corrección y ejecución continuos. No se dedica mucho tiempo al trading, sino más bien al seguimiento y a la paciencia. Se trata de un proceso que examina exhaustivamente la mentalidad y pone a prueba la naturaleza humana. Todos los hábitos de los traders se mostrarán y ampliarán plenamente durante el proceso de trading. Sólo aprendiendo y resumiendo constantemente experiencias y lecciones y continuando adquiriendo experiencia, podemos superar el pensamiento común y las debilidades psicológicas de la naturaleza humana.

Resumir

En resumen, la llamada estrategia comercial es en realidad así: Tiene su lado perfecto y su lado incompleto. Cuando medimos si una estrategia comercial es razonable, no podemos mirar únicamente su lado perfecto o su lado incompleto. Deberíamos analizar exhaustivamente la integridad de la estrategia.

Por último, en función de las características de la estrategia, combinadas con tu propia personalidad y situación financiera, mide si la estrategia es adecuada para ti. Si es adecuado para usted, debe evaluar completamente qué tan probable es que lo mantenga y planificar con anticipación el peor resultado. Si hemos pensado en el peor escenario posible, entonces la posibilidad de ejecutarlo es relativamente alta.

Recuerde, en el trading, la confianza proviene del reconocimiento sincero y la confianza proviene de la filosofía de trading correcta.

Vista previa de la siguiente sección

Este es el último artículo del primer capítulo. En el próximo capítulo, explicaremos más detalladamente las herramientas de trading cuantitativo, incluyendo: una introducción general a las herramientas cuantitativas, cómo configurar un sistema de trading cuantitativo, explicaciones de API comunes y cómo escribir estrategias en un sistema cuantitativo.

Tarea

  1. ¿Las estrategias de trading de tendencias deberían elegir productos de alta volatilidad o de baja volatilidad?
  2. ¿Cuáles son los tipos de órdenes comerciales?

Capítulo 2 Introducción a las herramientas cuantitativas

2.1 Introducción general a las herramientas cuantitativas

resumen

En el capítulo anterior, aprendimos sobre los conceptos relevantes del comercio cuantitativo y obtuvimos una comprensión básica del comercio cuantitativo. Entonces, ¿cuáles son las herramientas para el trading cuantitativo en el mercado? ¿Cómo debemos elegir según nuestras necesidades?

Software comercial y de código abierto
Las herramientas comerciales cuantitativas nacionales generalmente se pueden dividir en dos categorías: software de código abierto y software comercial. El llamado software de código abierto puede entenderse como un software cuyo código fuente es abierto y puede descargarse directamente para su uso; El software comercial generalmente se refiere a software de código cerrado mantenido y operado por empresas comerciales, que generalmente reciben un pago.

Software cuantitativo de código abierto

En primer lugar, el software de código abierto tiene una gran flexibilidad y es completamente gratuito. Básicamente, los usuarios pueden usar este software para implementar cualquier función, ya sean estrategias comerciales de frecuencia media o baja, estrategias de arbitraje o estrategias de opciones, lo que se puede lograr a través de módulos personalizados. Dado que los usuarios controlan el código fuente del software y pueden comprender cada aspecto del mismo, es más confiable y seguro.

Si bien el software de código abierto tiene muchas ventajas, no es muy amigable para los principiantes en trading cuantitativo. Necesitas aprender sistemáticamente un lenguaje de programación estándar como Python, Java o C++. Desde empezar hasta darse por vencido, la dificultad se puede imaginar. A veces, depurar errores puede hacerte dudar de tu vida. Y a diferencia del software comercial, hay un servicio técnico al cliente dedicado para responder sus preguntas al instante. No solo no sentirás una sensación de logro en este momento, sino que también te desanimará a seguir aprendiendo.

Por lo tanto, desde una perspectiva de aprendizaje, se recomienda que los principiantes en trading cuantitativo comiencen paso a paso, comenzando con el software comercial más simple. Aunque sea de pago, si la estrategia es rentable, la tarifa del software es sólo una fracción de la ganancia. Además, el software comercial generalmente es mantenido por un equipo y su madurez es definitivamente mucho mayor que la del software de código abierto.

Software cuantitativo empresarial

Existen docenas de software comerciales para comercio cuantitativo en China, como: Interactive Broker, que es profesional, completo y tiene muchos productos; APAMA, que puede manejar datos masivos simultáneos y es adecuado para transacciones de alta frecuencia; SPT, que admite la interfaz C++ y tiene una buena eficiencia de ejecución; Nuggets Quantitative, que se centra en la ejecución de transacciones y el control de riesgos; y MC, TB y MQ para comerciantes individuales. En la siguiente figura, hemos realizado una evaluación exhaustiva de las principales plataformas cuantitativas nacionales y también hemos hecho una cierta clasificación de la dificultad de las herramientas cuantitativas. Los lectores pueden elegir según su situación real.
img
Figura 2-1 Evaluación integral de las principales plataformas cuantitativas nacionales

Aunque los anteriores son software comerciales, también utilizan lenguajes de programación estándar o lenguajes de script. En lugar de hacer esto, es mejor utilizar directamente software de código abierto que sea gratuito y seguro. Se recomienda que los principiantes utilicen directamente la plataforma cuantitativa FMZ Inventor, el sitio web es www.fmz.com. Como un trampolín para aprender trading cuantitativo.

Conozca al inventor de las herramientas de trading cuantitativo

Las herramientas cuantitativas del inventor son amigables para los principiantes. Incluso si no tienes conocimientos básicos, puedes experimentar el encanto del análisis cuantitativo basándose en las herramientas que contiene. Esta herramienta está diseñada para el comercio de alta frecuencia y tiene requisitos estrictos de rendimiento y seguridad. Apoye estrategias de alta frecuencia, estrategias de arbitraje y estrategias de tendencia. E integra el proceso completo de desarrollo de estrategia, pruebas, optimización, simulación y comercio real. Además, admite tanto el lenguaje Mai simple y fácil de usar como los lenguajes comerciales cuantitativos avanzados como Python y C++, lo que significa una conmutación perfecta después de un aprendizaje. Y solo el comercio real se cobra a 0,125 yuanes por hora, lo que reduce sus costos de software durante la etapa de aprendizaje. Al mismo tiempo, puedes realizar operaciones comerciales simuladas de forma gratuita.

Dando el primer paso hacia la cuantificación: utilizando herramientas cuantitativas

Las herramientas cuantitativas son muy fáciles de utilizar. Sólo necesitas ingresar a la página web y hacer clic en ella para diseñar tu propia estrategia cuantitativa. Puede iniciar sesión en el sitio web oficial de Inventor Quantitative Tool, registrarse e iniciar sesión y hacer clic en el centro de control para usarlo (como se muestra a continuación). Es similar al actualmente popular TikTok. Después de registrarse e iniciar sesión, puede publicar sus propios videos cortos y, después de iniciar sesión en la herramienta cuantitativa, puede diseñar su propia estrategia comercial cuantitativa.

img
Figura 2-2 Página principal de la plataforma de negociación cuantitativa FMZ

Habrá un área funcional centralizada para la programación de herramientas cuantitativas. El área funcional incluye principalmente (como se muestra a continuación). El centro de control en la esquina superior izquierda es la función principal de la herramienta cuantitativa. Después de hacer clic, puede escribir estrategias comerciales y realizar pruebas retrospectivas de estrategias, configurar el intercambio para productos comerciales, crear un custodio para administrar robots de estrategia y crear robots comerciales cuantitativos específicos. En cuanto al uso específico de las funciones, las presentaremos en detalle en artículos posteriores. Por el momento sólo estamos realizando trabajos preliminares.

img
Figura 2-3 Página de administración después de iniciar sesión en la plataforma de comercio cuantitativo FMZ

Los amigos que son nuevos en la investigación cuantitativa no necesitan desanimarse por no entender los códigos y la programación. Con el fin de reducir el umbral para los usuarios, la comunidad oficial ha producido muchos tutoriales en vídeo para ayudar a los principiantes en el trading cuantitativo a comenzar rápidamente; Al mismo tiempo, Strategy Square reúne miles de estrategias comerciales oficiales y de terceros, gratuitas y abiertas, para que todos puedan copiar y aprender.

Además, los ejemplos de estrategias clásicas también se configuran en la interfaz de edición de estrategias. Puede utilizar directamente el código de estrategia haciendo clic en él y experimentar fácilmente el proceso central de todo el trading cuantitativo. ¡Incluso los usuarios novatos pueden aprenderlo inmediatamente y seguirlo!

Antes de operar con dinero real, la simulación de operaciones también es un paso indispensable. La simulación de trading de esta herramienta cumple con las reglas de intercambio y es completamente gratuita. El tiempo, el precio, el volumen de órdenes, etc. incluidos en la simulación se corresponden con el mercado real en tiempo real, lo que es altamente consistente con el comercio real. Mejorar enormemente la eficiencia de la verificación de la estrategia.

Resumir

Ya sea software de código abierto o software comercial, no hay distinción entre lo bueno y lo malo, y no existe una herramienta comercial cuantitativa perfecta. Cada herramienta tiene su propio enfoque. Lo más importante es elegir la herramienta que más te convenga según tus necesidades. El software comercial requiere pago, ofrece mejores servicios, etc. y puede ser más adecuado para principiantes que recién ingresan a esta industria. Si ha estado en esta industria durante mucho tiempo y ha acumulado mucha experiencia, o necesita implementar estrategias comerciales más complejas, el software de código abierto es una mejor opción.

Vista previa de la siguiente sección

¿Cómo utilizar las herramientas? Al igual que cuando compramos un nuevo teléfono móvil y necesitamos realizar configuraciones de inicio simples cuando lo encendemos por primera vez, las herramientas cuantitativas también necesitan configuraciones y ajustes básicos. En la siguiente sección, lo guiaremos paso a paso para configurar la herramienta de comercio cuantitativo Inventor. Abra la primera puerta al trading cuantitativo, que incluye: agregar intercambios, agregar custodios, crear estrategias comerciales, crear robots cuantitativos, etc. Después de completar la configuración básica, puede escribir oficialmente su primera estrategia cuantitativa.

Tarea

  1. ¿Cuáles son las dos categorías principales de herramientas de trading cuantitativo?
  2. ¿Cuáles son los lenguajes de programación cuantitativa más utilizados?

2.2 Cómo configurar el sistema de comercio cuantitativo de Inventor

resumen

Al desarrollar estrategias de trading cuantitativo, lo primero que hay que hacer es configurar las herramientas de trading. ¿Qué es la configuración? En realidad son solo configuraciones. En esta sección, lo guiaremos a través de la configuración de un intercambio, la creación de una estrategia comercial y la creación de un robot comercial cuantitativo, que son todos requisitos previos necesarios para el comercio cuantitativo.

La configuración se divide en configuración de simulación de comercio de aprendizaje de nivel de entrada y configuración de comercio en tiempo real. En esta categoría, nos centramos principalmente en futuros de materias primas nacionales. No se recomiendan ni se introducen otros tipos de inversiones cuantitativas debido a condiciones internas específicas, pero el proceso operativo es el mismo, solo es diferente el proceso de configuración.

Añadir el intercambio

Agregar un intercambio es el primer paso en todo el proceso de configuración. Consulte la figura a continuación para conocer el proceso específico. En este paso, debemos enfatizar que agregar un exchange no es difícil para aquellos que no están seguros a qué exchange pertenecen. Se recomienda simular el aprendizaje primero.
img
Figura 2-4 Pasos para el registro y la incorporación de intercambios en la plataforma de comercio cuantitativo FMZ

Configuración de la Bolsa de Futuros de Materias Primas (en vivo)

Nuestro comercio cuantitativo en tiempo real se centra principalmente en productos de comercio de futuros nacionales. En la actualidad, los principales objetos de servicio de Inventor Quantitative también son los mercados de futuros nacionales. Para los amigos que hacen cambio de divisas, Inventor Quantitative se puede utilizar como una plataforma de aprendizaje, porque el comercio cuantitativo de cambio de divisas ya ha aparecido en plataformas como MT5, pero es más profesional.

Los aspectos que se deben tener en cuenta en la configuración en tiempo real son los siguientes: dado que las herramientas cuantitativas del inventor admiten múltiples mercados comerciales, al configurar futuros de materias primas, primero debe seleccionar "futuros tradicionales" en el paso 1; En el paso 2, debe completar la cuenta de futuros y la contraseña que le proporcionó la compañía de futuros donde abrió una cuenta.

La herramienta cuantitativa del inventor adopta el protocolo CTP y es compatible con todas las compañías de futuros nacionales. Al configurar el mercado real, no habrá fallas de enlace a menos que la cuenta y la contraseña sean incorrectas. Por lo tanto, los principiantes deben prestar atención y comprobar la cuenta y la contraseña con claridad.
img
Figura 2-5 La plataforma de comercio cuantitativo FMZ agrega un mercado de futuros

Configuración de la bolsa de futuros de materias primas (simulación)

Para los amigos que son nuevos en futuros de materias primas, les sugiero que primero simulen la negociación por un período de tiempo, porque en el proceso de desarrollo de estrategias de negociación cuantitativa se requieren pruebas, depuración y optimización continuas. Al igual que sucede al conducir, seguramente pasarás algunos meses aprendiendo en una escuela de conducción al principio, y luego podrás salir a la carretera después de aprobar el examen y obtener tu licencia.

Aquí recomendamos utilizar la simulación de trading con SimNow. SimNow es una plataforma de negociación de simulación financiera creada especialmente por Shangqi Technology para inversores. Este producto simula las reglas de negociación y liquidación de varias bolsas y actualmente respalda el negocio de futuros de materias primas de varias bolsas de futuros nacionales. Para conocer el proceso específico, consulte la figura a continuación.
img
Figura 2-6 Página de administración de la plataforma de comercio cuantitativo FMZ después de iniciar sesión

Redacción de estrategias

La biblioteca de estrategias es donde se almacenan los códigos, lo que es equivalente a nuestro almacén de estrategias comerciales cuantitativas. Se divide principalmente en dos funciones: redacción de estrategias y backtesting de simulación. El área de redacción de estrategias es nuestra principal área de trabajo para desarrollar estrategias a futuro (como se muestra a continuación). Muchos principiantes a menudo quedan bloqueados por diversos códigos y les resulta muy difícil. De hecho, si prestas un poco de atención, puedes aprender estos códigos. No tengo ninguna carga psicológica. El área de backtesting de simulación se puede utilizar para depurar estrategias durante el proceso de desarrollo de la estrategia, así como para probar estrategias una vez completado el desarrollo de la estrategia. Explicaremos esto en detalle en los siguientes capítulos.
img
Figura 2-7 Pasos para crear una política

Creación de un robot de trading cuantitativo

Un robot comercial cuantitativo es el ejecutor de una estrategia comercial. Una vez creada la estrategia, crea un robot que pueda ayudarte a ejecutar automáticamente toda la lógica comercial en el código de la estrategia, así como abrir y cerrar posiciones, retirar órdenes y otras operaciones de compra y venta. Los pasos específicos para crear un robot comercial cuantitativo son los siguientes: Primero, paso ①: En la página del centro de control, haga clic en "Robot", haga clic en "Crear robot" Paso ②: Asigne al robot un nombre personalizado. Paso 3: Haga clic en el signo “+” para agregar una plataforma comercial. Paso 4: Haga clic en "Crear robot"
img
Figura 2-8 Pasos para crear un robot

Resumir

En el proceso anterior, a excepción del primer paso de selección de operaciones reales y simulación, los pasos posteriores de redacción de estrategias y creación de robots comerciales son pasos unificados. Se ha configurado toda la herramienta cuantitativa, el robot comercial ya está funcionando y realizará operaciones de compra y venta según las condiciones específicas de la estrategia. Hay tres pasos para configurar el trading cuantitativo: agregar un exchange y completar la contraseña de su cuenta de futuros; escribir una estrategia comercial; y crear un robot comercial cuantitativo en tiempo real. ¿No es sencillo?

Vista previa de la siguiente sección

Si bien el trading cuantitativo se puede lograr en solo tres simples pasos, es posible que le resulte fácil agregar intercambios y crear robots de trading cuantitativo. Sin embargo, implementar una estrategia comercial viable no es tan fácil. En la siguiente sección, lo guiaremos a conocer las API comúnmente utilizadas en el trading cuantitativo para prepararlo para escribir una estrategia comercial viable. Porque no importa qué tipo de herramienta de trading cuantitativo se utilice, es inseparable de la interfaz API, que es una función importante para implementar estrategias de trading cuantitativo.

Tarea

  1. Intente agregar un intercambio.
  2. Intente escribir la estrategia comercial en esta sección.

2.3 Explicación de la API común

resumen

Cuando se trata de programación, no podemos evitar la API. Para muchas personas no especializadas en TI, ¿qué es exactamente API? API ≈ No entiendo. En esta sección, explicaremos en lenguaje sencillo qué es API y presentaremos las API que se utilizan comúnmente en herramientas cuantitativas.

¿Qué es una API?

Si busca en línea, obtendrá los siguientes resultados: API (Interfaz de programación de aplicaciones) es un conjunto de funciones predefinidas que tiene como objetivo proporcionar a las aplicaciones y desarrolladores la capacidad de acceder a un conjunto de rutinas basadas en cierto software o hardware sin tener que acceder al código fuente o comprender los detalles del mecanismo de trabajo interno. Para decirlo de forma más sencilla, ¿qué es exactamente una API?

De hecho, en nuestra vida diaria tenemos muchos escenarios similares a las API. Por ejemplo, cuando vas a un restaurante a comer, sólo necesitas mirar el menú y pedir la comida, sin necesidad de saber cómo está hecha. Los nombres de los platos en el menú son las API específicas y el menú es la documentación de la API.

¿Qué es API en el trading cuantitativo?

Si necesita obtener el precio de apertura del producto actual hoy, no necesita saber cómo obtenerlo. Solo necesitas escribir "ABRIR" en el editor de código y usarlo directamente. "OPEN" es la API del precio de apertura en lenguaje Mai.

API de lenguaje Mai de uso común

Antes de explicar la API del lenguaje Mai, echemos un vistazo a la estructura del código común y sus componentes funcionales. Esto le ayudará a comprender mejor la API. Vea el ejemplo a continuación:
img
Figura 2-9 Ejemplo de idioma Mai

Como se muestra en el código anterior:
La AA morada es una variable. Una variable es una cantidad que puede cambiar, tal como el álgebra que aprendimos en la escuela secundaria. Si el precio de apertura se asigna a AA, entonces AA es el precio de apertura; Si el precio más alto se asigna a AA, entonces AA es el precio más alto. Por supuesto, AA es solo un nombre personalizado, también puedes definirlo como BB.

El “:=” verde significa asignación, lo que significa asignar el valor del lado derecho del “:=” a la variable de la izquierda.

El código naranja es la API del lenguaje Mai de la herramienta cuantitativa Inventor. Tenga en cuenta que OPEN en la primera línea es la API para obtener el precio de cierre, que se puede utilizar directamente; MA en la segunda línea es la API para obtener el promedio móvil, que requiere que se pasen dos parámetros, es decir, debe indicarle a la herramienta cuantitativa Inventor qué tipo de promedio móvil necesita: si desea obtener un promedio móvil de 50 períodos calculado en función del precio de apertura, puede escribirlo como: MA(OPEN,50); Tenga en cuenta que hay una coma inglesa entre los dos parámetros.

El “//” amarillo es un símbolo de comentario y los caracteres chinos azules detrás de él son el contenido del comentario. Estos son para que los lea usted mismo y se utilizan para indicar qué significa la línea de código. El programa no procesa comentarios cuando se está ejecutando. Tenga en cuenta que antes del carácter de comentario, cada línea de código debe tener un punto y coma en inglés como final de la línea.

Con la comprensión básica de la estructura del código, a continuación le presentaremos algunos lenguajes de uso común, y también utilizaremos estos lenguajes con frecuencia en el futuro.
ABIERTO——Obtenga el precio de apertura de la última línea K
Ejemplo: AA: =ABIERTO; Obtenga el precio de apertura de la última línea K y asigne el resultado a AA

ALTO——Obtenga el precio más alto de la última línea K
Ejemplo: AA: =ALTO; Obtenga el precio más alto de la última línea K y asigne el resultado a AA

BAJO——Obtenga el precio más bajo de la última línea K
Ejemplo: AA: =BAJO; Obtenga el precio más bajo de la última línea K y asigne el resultado a AA

CERRAR——Obtenga el último precio de cierre de la línea K. Cuando la línea K intradía no haya terminado, obtenga el último precio
Ejemplo: AA: =CERRAR; Obtenga el precio de cierre de la última línea K y asigne el resultado a AA

VOL——Obtenga el último volumen de transacciones de K-line
Ejemplo: AA: =VOL; Obtenga el último volumen de transacciones de la línea K y asigne el resultado a AA

REF(X,N) - Hace referencia al valor de X hace N ciclos.
Ejemplo: REF(CERRAR,1); Obtenga el precio de apertura de la línea K anterior

MA(X,N)——Encuentre el promedio móvil simple de X en N períodos
Ejemplo: MA(CERRAR,10); //Obtenga el promedio móvil de 10 períodos de la última línea K

CROSSUP(A,B)——Cuando A cruza B de abajo hacia arriba, devuelve 1 (Sí), de lo contrario devuelve 0 (No)
Ejemplo: CROSSUP(CLOSE,MA(C,10)) // El precio de cierre cruza el precio promedio de 10 períodos

CROSSDOWN(A,B)——Cuando A cruza B desde arriba, devuelve 1 (Sí), de lo contrario devuelve 0 (No)
Ejemplo: CROSSDOWN(CLOSE,MA(C,10)) // El precio de cierre cruza por debajo del precio promedio de 10 períodos

BK——Comprar posición de apertura
Ejemplo: CERRAR>MA(CERRAR,5),BK; //El precio de cierre es mayor que el promedio móvil de 5 períodos, posición de compra

SP——Vender para cerrar posición
Ejemplo: CERRAR<MA(CERRAR,5),SP; // El precio de cierre es menor que el promedio móvil de 5 períodos, venda y cierre la posición

SK——Vender posición de apertura
Ejemplo: CERRAR<MA(CERRAR,5),SK; //El precio de cierre es menor que el promedio móvil de 5 períodos, posición de venta

BP——Comprar para cerrar
Ejemplo: CERRAR>MA(CERRAR,5),BP; //El precio de cierre es mayor que el promedio móvil de 5 períodos, compre y cierre la posición

BPK——Comprar para cerrar una posición y comprar para abrir una posición (posición larga inversa)
Ejemplo: CERRAR>MA(CERRAR,5),BPK; // El precio de cierre es mayor que el promedio móvil de 5 períodos, cierre la posición corta y luego compre para abrir una nueva posición.

SPK——Vender para cerrar una posición y vender para abrir una posición (venta en corto)
Ejemplo: CLOSE<MA(CLOSE,5),SPK; // El precio de cierre es menor que el promedio móvil de 5 períodos, cierre la posición larga y luego venda la posición abierta.

CIERRE——Cierre todas las posiciones, recomendado para uso en el modelo de aumento y disminución de posiciones. Ejemplo: CLOSEOUT; cerrar todas las posiciones en todas las direcciones.

API de lenguaje JavaScript de uso común

Antes de explicar la API del lenguaje JavaScript, echemos un vistazo a la estructura del código común y sus componentes funcionales. Esto le ayudará a comprender mejor la API. Vea el ejemplo a continuación:
img
Figura 2-10 Ejemplo de código JavaScript

Como se muestra en el código anterior:
En el lenguaje JavaScript, a menudo se hace referencia a la creación de una variable como "declarar" la variable. En el código rojo, usamos la palabra clave var para declarar una variable, y el nombre de la variable es en código naranja: “aa”.

En JavaScript, el signo igual se utiliza para asignar valores, es decir, el valor del lado derecho de "=" se asigna a la variable del lado izquierdo.
El código cian "intercambio" es el objeto de intercambio. El intercambio aquí se refiere a la compañía de futuros que usted establece. Este es un formato fijo, lo que significa que cuando llamas a la API del lenguaje JavaScript, debes especificar el objeto de intercambio.

El código verde es la API de JavaScript. Cuando lo llamamos, en realidad estamos llamando a la función en el objeto de intercambio. Tenga en cuenta el punto después del código azul, que también es un formato fijo. La función aquí es la misma que la función que aprendimos en la escuela secundaria. Si la función no requiere parámetros, utilice paréntesis vacíos para indicarlo; Si la función debe pasar parámetros, escriba los parámetros dentro de los paréntesis.

Después de comprender la estructura básica y los principios del código a través de ejemplos, le mostraremos varias API del lenguaje JavaScript que utilizará con frecuencia en el futuro.
SetContractType("Product Code")——Establezca el tipo de contrato, es decir, qué producto desea comercializar
Ejemplo: exchange.SetContractType("rb1905"); //Establezca el tipo de transacción en "Contrato Rebar 1905"

GetTicker——Obtener datos de ticks
Ejemplo: exchange.GetTicker(); //Obtener datos de ticks

GetRecords——Obtener datos de la línea K
Ejemplo: exchange.GetRecords(); //Obtener datos de la línea K

Comprar
Ejemplo: exchange.Buy(5000, 1); //Comprar un lote por 5000 yuanes

Vender——Comprar
Ejemplo: exchange.Sell(5000, 1); //Vendo un lote por 5.000 yuanes

GetAccount——Obtener información de la cuenta
Ejemplo: exchange.GetAccount(); //Obtener información de la cuenta

GetPosition——Obtener información de posición
Ejemplo: exchange.GetPosition(); //Obtener información de posición

SetDirection——Establezca el tipo de orden larga o corta
Ejemplo:
intercambio.SetDirection("comprar"); //Establezca el tipo de orden para comprar y abrir una posición larga
exchange.SetDirection("cerrarcompra"); //Establezca el tipo de orden para vender y cerrar posiciones largas
intercambio.SetDirection("vender"); //Establezca el tipo de orden en vender para abrir una posición corta
exchange.SetDirection("cerrarventa"); //Establezca el tipo de orden para comprar y cerrar posiciones cortas

Registro - Generar un mensaje en el registro
Ejemplo: Log("hola, mundo"); // Salida "hola mundo" en el registro

Dormir - Pausa el programa por un período de tiempo
Ejemplo: Dormir(1000); //Pausa el programa por 1 segundo

Algunos de ustedes pueden tener preguntas: ¿cómo recordar tantas API mencionadas anteriormente? De hecho, no es necesario memorizar todo esto. El sitio web oficial de Inventor Quant tiene un conjunto detallado de documentación de API. Al igual que cuando buscas un diccionario, cuando lo necesites, simplemente búscalo. No te dejes intimidar por los códigos y otros contenidos con los que estés familiarizado por primera vez. Lo que queremos es organizar nuestras propias estrategias a través de estos lenguajes. Por favor recuerde que la tecnología nunca es el umbral de la cuantificación. Tener una buena estrategia es fundamental para saber si puedes operar a largo plazo en el mercado cuantitativo.

Resumir

Las anteriores son las API más utilizadas en el trading cuantitativo, que básicamente incluyen: obtener datos, calcular datos, colocar órdenes de compra y venta, que son suficientes para manejar una estrategia de trading cuantitativo simple. Por supuesto, si quieres escribir una estrategia más compleja, necesitas ir al sitio web oficial de Inventor Quantitative Tool para obtenerla.

Tarea

  1. Intente escribir una afirmación en lenguaje Mai que diga que el promedio móvil de 5 períodos cruza el promedio móvil de 10 períodos.
  2. Intente utilizar GetAccount en JavaScript para obtener la información de su cuenta e imprimirla en el registro usando Log.

Vista previa de la siguiente sección

Programar es como ensamblar bloques de Lego, las API son como las distintas partes de los bloques y el proceso de programación es juntar las distintas partes de Lego para formar un juguete completo. En la siguiente sección, te guiaré en el uso de la API de lenguaje Mai para armar una estrategia comercial cuantitativa completa.

2.4 Cómo escribir estrategias en el Sistema Cuantitativo de Inventor

resumen

Después de estudiar las secciones anteriores, ahora finalmente puedes comenzar a escribir estrategias comerciales cuantitativas. Este será el paso más importante para pasar del trading manual al trading cuantitativo. De hecho, no es tan misterioso. Escribir una estrategia no es más que convertir tus ideas en código. Esta sección implementará una estrategia comercial cuantitativa desde cero y lo familiarizará con cómo escribir estrategias en el Sistema Cuantitativo Inventor.

Preparar

Primero, abra el sitio web oficial de Inventor Quantitative Tool y haga clic en "Biblioteca de estrategias" y "Nueva estrategia" sucesivamente. Cabe señalar que antes de comenzar a escribir código, es necesario seleccionar el lenguaje Mai o el lenguaje JavaScript en el menú desplegable del lenguaje de programación. Por supuesto, la plataforma también admite Python, C++ y lenguaje visual.

Ideas estratégicas

En el capítulo anterior, presentamos una estrategia para que el precio rompa la media móvil. Es decir: si el precio es superior al precio promedio de los últimos 10 días, comprar; Si el precio es inferior al precio promedio de los últimos 10 días, vender. Sin embargo, aunque el precio puede reflejar directamente el estado del mercado, habrá muchas señales falsas de avance; Por lo tanto, necesitamos actualizar y mejorar esta estrategia.

En primer lugar, seleccione un promedio móvil de período más grande para determinar la dirección de la tendencia, que haya filtrado al menos casi la mitad de las señales de ruptura falsas. Aunque el promedio móvil de período largo es lento, será más estable; luego, para aumentar aún más la tasa de éxito de entrada, agregue otra condición: que este promedio móvil de período grande sea al menos ascendente; Por último, utilice la relación de posición relativa del precio, el promedio móvil de corto plazo y el promedio móvil de largo plazo para formar una estrategia comercial completa.

Lógica de estrategia

Con las ideas y pensamientos estratégicos anteriores, podemos intentar construir la lógica de la estrategia. La lógica aquí no es pedirte que calcules las leyes del movimiento celeste; No es tan complicado. No es más que expresar en palabras ideas estratégicas previas.

Apertura de posición larga:Si no hay ninguna posición actual, y el precio de cierre es mayor que el promedio móvil de corto plazo, y el precio de cierre es mayor que el promedio móvil de largo plazo, y el promedio móvil de corto plazo es mayor que el promedio móvil de largo plazo, y el promedio móvil de largo plazo está aumentando.

Abrir una posición corta:Si no hay ninguna posición actual, y el precio de cierre es menor que el promedio móvil de corto plazo, y el precio de cierre es menor que el promedio móvil de largo plazo, y el promedio móvil de corto plazo es menor que el promedio móvil de largo plazo, y el promedio móvil de largo plazo está cayendo.

Cierre de posición larga:Si actualmente mantiene una orden larga y el precio de cierre es menor que el promedio móvil de largo plazo, o el promedio móvil de corto plazo es menor que el promedio móvil de largo plazo, o el promedio móvil de largo plazo está disminuyendo.

Cierre de posiciones cortas:Si actualmente mantiene una orden corta y el precio de cierre es mayor que el promedio móvil de largo plazo, o el promedio móvil de corto plazo es mayor que el promedio móvil de largo plazo, o el promedio móvil de largo plazo está aumentando.

Lo anterior es la parte lógica de toda la estrategia comercial cuantitativa. Si convertimos la versión de texto de la lógica de la estrategia en código, incluirá tres pasos: obtener las condiciones del mercado, calcular indicadores y colocar órdenes de compra y venta.

Estrategia lingüística

El primer paso es obtener la información del mercado. En esta estrategia de trading cuantitativa solo necesitamos obtener el precio de cierre. En lenguaje Mai, la API para obtener el precio de cierre es: CLOSE. Es decir, sólo es necesario escribir CLOSE en el código para obtener el precio de cierre de la última línea K.

Luego vienen los indicadores de cálculo. En esta estrategia de trading cuantitativo, utilizamos un total de 2 tecnologías, a saber: media móvil de corto plazo y media móvil de largo plazo. Suponemos que el promedio móvil de corto plazo es un promedio móvil de 10 períodos y el promedio móvil de largo plazo es un promedio móvil de 50 períodos. Entonces, ¿cómo utilizamos el código para representar el promedio móvil de 10 períodos y el promedio móvil de 50 períodos? Vea la siguiente figura:
img
Figura 2-11 Código de estrategia del lenguaje Mai

En el trading manual, podemos ver de un vistazo si el promedio móvil de 50 períodos está subiendo o bajando, pero ¿cómo lo expresamos en código? Piénselo detenidamente, para juzgar si el promedio móvil está aumentando, ¿no es que el valor del promedio móvil de 50 períodos de la línea K actual es mayor que el valor del promedio móvil de 50 períodos de la línea K anterior, y el valor del promedio móvil de 50 períodos de la línea K anterior es mayor que el valor del promedio móvil de 50 períodos de la línea K anterior? Lo cierto es lo opuesto, lo que significa que la media móvil está cayendo. Entonces, en código, debería ser así:
img
Figura 2-12 Código de promedio móvil de juicio de lenguaje Mai

Tenga en cuenta el código rosa-rojo “AND” en las líneas 8 y 9 de la figura anterior. Significa “y” en lengua Mai. Por ejemplo, la línea 9 se traduce al chino como: Si el promedio móvil de 50 períodos de la línea K actual es mayor que el promedio móvil de 50 períodos de la línea K anterior, y el promedio móvil de 50 períodos de la línea K anterior es mayor que el promedio móvil de 50 períodos de la línea K anterior, entonces el valor se calcula como "sí"; de lo contrario, el valor se calcula como "no" y el resultado se asigna a "MA50_ISUP".

El último paso es colocar órdenes de compra y venta. Solo es necesario llamar a la API de orden de la herramienta cuantitativa del inventor después del código lógico de compra y venta para ejecutar las operaciones de compra y venta. Vea la siguiente figura:
img
Figura 2-13 Código de transacción de compra y venta de idioma Mai

Tenga en cuenta el código rojo rosado “OR” en las líneas 13 y 14 de la imagen de arriba. Significa “o” en lengua Mai. Por ejemplo, la línea 13 se traduce al chino como: Si el precio de cierre de la línea K actual es menor que el promedio móvil de 50 períodos de la línea K actual, o el promedio móvil de 10 períodos de la línea K actual es menor que el promedio móvil de 50 períodos de la línea K actual, el valor se calcula como "sí" y se coloca una orden inmediatamente; De lo contrario, se calcula como "no" y no se hace nada.

Tenga en cuenta: "AND" y "OR" son operadores lógicos en el lenguaje Mai:
"Y" significa que cuando todas las condiciones son "sí", la condición final será "sí";
"O" significa que entre todas las condiciones, siempre que alguna de las condiciones sea "sí", la condición final será "sí".

Resumir

Lo anterior es el proceso completo de escritura de estrategias comerciales en lenguaje Mai en la herramienta cuantitativa Inventor. En total, solo hay tres pasos: desde tener una idea de estrategia, hasta concebir la estrategia y describir la lógica en palabras, y finalmente implementar la estrategia comercial completa con código. Aunque se trata de una estrategia simple, el proceso de implementación específico es similar al de una estrategia más compleja, excepto que el algoritmo y la estructura de datos de la estrategia son diferentes. Por lo tanto, siempre que comprenda y domine el proceso de estrategia cuantitativa en esta sección, podrá utilizar el lenguaje Mai para llevar a cabo investigaciones y prácticas de estrategia cuantitativa con las herramientas cuantitativas del inventor según sea necesario.

Tarea

  1. Intente implementar usted mismo las estrategias de esta sección.
  2. Según la estrategia de esta sección, agregue las funciones stop-profit y stop-loss.

Vista previa de la siguiente sección

En el desarrollo de estrategias comerciales cuantitativas, los lenguajes de programación son como armas y equipos. Un buen lenguaje de programación puede ayudarte a obtener el doble de resultado con la mitad del esfuerzo. Por ejemplo, hay más de una docena de lenguajes más utilizados en la industria del trading cuantitativo, incluidos Python, C++, Java, C#, EasyLanguage, Mai Language, etc. ¿Qué arma debería elegir para entrar al campo de batalla? En la siguiente sección presentaremos estos lenguajes de programación comunes y las características de cada lenguaje de programación.

Capítulo 3 Lenguaje de programación simple para implementar estrategias comerciales

3.1 Evaluación horizontal de lenguajes de programación de trading cuantitativo

resumen

En el Capítulo 1 y el Capítulo 2, aprendimos los conceptos básicos del comercio cuantitativo y cómo utilizar las herramientas cuantitativas del inventor. En este capítulo, implementaremos la estrategia comercial en detalle. Si quieres hacer bien tu trabajo, primero debes afilar tus herramientas. Para implementar estrategias comerciales, primero debes dominar un lenguaje de programación. En esta sección se presentan primero los principales lenguajes de programación en el trading cuantitativo, así como las características de cada lenguaje de programación.

¿Qué es un lenguaje de programación?

Antes de aprender un lenguaje de programación, primero debes comprender el concepto de "lenguaje de programación". El lenguaje de programación es un lenguaje que tanto los humanos como las computadoras pueden entender. Es un código de comunicación estandarizado. El propósito del lenguaje de programación es utilizar el lenguaje humano para controlar las computadoras y decirles lo que queremos hacer. Las computadoras pueden ejecutar instrucciones según lenguajes de programación, y también podemos escribir códigos para dar instrucciones a las computadoras.

Así como nuestros padres nos enseñaron a hablar cuando éramos jóvenes, también nos enseñaron a entender lo que dicen los demás. Después de un largo período de influencia y autoaprendizaje, aprendimos a hablar sin darnos cuenta y podíamos entender lo que decían otros niños. Hay muchos idiomas, incluidos chino, inglés, francés, etc. Por ejemplo:
Hola mundo
Hola mundo
Hola a todos

Si utiliza un lenguaje de programación para mostrar "Hola mundo" en la pantalla de una computadora, se vería así:
Lenguaje C: puts("Hola mundo");
Lenguaje Java: System.out.println("Hola mundo");
Lenguaje Python: print("Hola mundo")
Podemos ver que los lenguajes de programación tienen sus propias reglas específicas y hay muchos lenguajes. Estas reglas del lenguaje son las clasificaciones de lenguajes de programación que necesitamos explicarte hoy. En cada clasificación, solo necesitamos recordar las reglas más básicas y comúnmente utilizadas, y podemos usar estos lenguajes de programación para comunicarnos con las computadoras y dejar que las computadoras ejecuten las estrategias correspondientes de acuerdo con nuestras instrucciones.

Clasificación de lenguajes de programación

Para facilitar su referencia y comparación, y para seleccionar el lenguaje de programación de trading cuantitativo que más le convenga, clasificaremos los seis lenguajes de programación más utilizados, a saber, Python, Matlab/R, C++, Java/C#, EasyLanguage y lenguaje visual (como se muestra a continuación).
img
Figura 3-1 Evaluación del lenguaje de programación

Los calificamos según su alcance funcional, velocidad de ejecución, escalabilidad y dificultad de aprendizaje. La puntuación está entre 1 y 5. Por ejemplo, una puntuación de 5 en términos de rango funcional significa que la función es potente y una puntuación de 1 significa que la función es menor. (Como se muestra arriba) El lenguaje visual y EasyLanguage son fáciles de aprender y son muy adecuados para principiantes; Python es potente y tiene fuertes capacidades de expansión, lo que lo hace adecuado para desarrollar estrategias comerciales más complejas; C++ tiene una velocidad de negociación más rápida y es más adecuado para operadores de alta frecuencia.

Sin embargo, la evaluación de cada lenguaje de programación está orientada principalmente a su aplicación en el campo del trading cuantitativo y contiene elementos subjetivos personales. También eres bienvenido a criticar en la sección de comentarios o exponer tus puntos de vista para discutirlos. A continuación, comenzaremos a presentar estos lenguajes de programación uno por uno.

Lenguaje visual

La programación visual tiene una larga historia y no es nueva. Este concepto de programación "lo que ves es lo que obtienes", equipado con varios módulos de control, puede crear lógica de código y completar el diseño de una estrategia comercial simplemente arrastrando y soltando. El proceso es muy similar al de los bloques de construcción.
img
Figura 3-2 Interfaz del lenguaje de programación visual

Como se muestra arriba, el mismo programa se puede completar con solo unas pocas líneas de código en la programación visual de la Plataforma de Comercio Cuantitativo Inventor. Esto reduce enormemente el umbral para la programación, lo que supone una gran experiencia operativa, especialmente para los traders que no tienen conocimientos de programación.

Dado que la estrategia de implementación subyacente de este lenguaje visual se convierte a C++, tiene poco impacto en la velocidad de ejecución del programa. Sin embargo, su funcionalidad y escalabilidad son relativamente débiles y no es posible desarrollar estrategias comerciales demasiado complejas o sofisticadas.

Lenguaje fácil

El llamado EasyLanguage se refiere a un lenguaje de programación exclusivo de algún software de trading cuantitativo comercial. Aunque estos lenguajes también tienen algunas características orientadas a objetos, en su mayoría están escritos en scripts en sus aplicaciones. En términos de sintaxis, también está muy cerca de nuestro lenguaje natural. Para los principiantes en trading cuantitativo, utilizar EasyLanguage como punto de entrada es una mejor opción. Por ejemplo: el idioma Mai en la plataforma de comercio cuantitativo del inventor.

Este lenguaje de programación no tiene problemas para realizar pruebas retrospectivas de estrategias y operaciones reales en su software específico, pero a menudo está limitado en términos de escalabilidad. Por ejemplo, los desarrolladores de estrategias no pueden llamar a API externas. Además, en términos de velocidad de ejecución, este lenguaje de scripting se ejecuta en su propia máquina virtual y su optimización del rendimiento no es tan buena como la de Java/C#, por lo que es más lento.

Python

En Stackoverflow, la cantidad de visitas a los principales lenguajes de programación se ha mantenido prácticamente sin cambios en los últimos años, y solo Python muestra una tendencia ascendente. Python se puede utilizar para el desarrollo de sitios web, aprendizaje automático, aprendizaje profundo, análisis de datos, etc. Debido a su flexibilidad y apertura, se ha convertido en el lenguaje más común. Lo mismo ocurre en el campo de la inversión cuantitativa. Actualmente, la mayoría de las plataformas cuantitativas nacionales se basan en Python.

Las estructuras de datos básicas de Python, listas y diccionarios, son muy potentes y básicamente pueden satisfacer las necesidades de representación de datos. Si necesita una estructura de datos más rápida y completa, se recomienda utilizar NumPy y SciPy. Estas dos bibliotecas se denominan básicamente bibliotecas estándar para la computación científica en Python.

Para la ingeniería financiera, una biblioteca más específica es Pandas, que tiene dos estructuras de datos, Series y DataFrame, y es muy adecuada para procesar series de tiempo.

En términos de velocidad, Python está en el medio, más lento que C++ y más rápido que EasyLanguage, principalmente porque Python es un lenguaje dinámico y su velocidad es promedio cuando se ejecuta en Python puro. Sin embargo, puedes usar Cython para optimizar estáticamente algunas funciones para aproximarse a la velocidad de C++.

Como lenguaje pegamento, Python es el número uno indiscutible en términos de rendimiento de expansión. Además de poder conectarse a otros idiomas de forma extensible, la API de expansión también está diseñada para ser muy fácil de usar. En términos de dificultad de aprendizaje, Python tiene una sintaxis simple, un código muy legible y es fácil comenzar.

Matlab/R

A continuación están Matlab y R. Estos dos lenguajes se utilizan principalmente para el análisis de datos. Los autores del lenguaje han realizado muchos diseños sintácticos para operaciones científicas. Se caracterizan por soportar de forma natural operaciones comerciales cuantitativas. Sin embargo, su ámbito de aplicación es relativamente limitado y generalmente se utiliza para análisis de datos y backtesting de estrategias. Para el desarrollo de sistemas comerciales y algoritmos de estrategia, su usabilidad y estabilidad son relativamente pobres.

Además, su velocidad de ejecución y escalabilidad son relativamente pobres porque Matlab y R se ejecutan en máquinas virtuales de lenguaje único. En términos de rendimiento, sus máquinas virtuales son mucho peores que Java y C#. Pero como su sintaxis es más cercana a las expresiones matemáticas, son relativamente más fáciles de aprender.

C++

C++ es un lenguaje de programación de propósito general que admite múltiples modelos de programación, como programación procedimental, abstracción de datos, programación orientada a objetos, programación genérica y patrones de diseño. Puedes usar C++ para implementar todas las funciones que quieras lograr, pero la mayor desventaja de un lenguaje tan potente es que es muy difícil de aprender, como plantillas, punteros, fugas de memoria, etc.

En la actualidad, C++ sigue siendo el lenguaje de programación preferido para transacciones de gran volumen y alta frecuencia. La razón es sencilla. Debido a que las características del lenguaje C++ son más fáciles de abordar para la computadora subyacente, es la herramienta más eficaz para desarrollar sistemas de ejecución y backtesting de alto rendimiento que procesan grandes cantidades de datos.

Java/C#

Java/C# son lenguajes estáticos que se ejecutan en máquinas virtuales. En comparación con C++, no hay error de matriz fuera de límites, ni volcado de núcleo, las excepciones lanzadas pueden localizar con precisión la ubicación del código de error, tiene un mecanismo de recolección de basura incorporado, no hay necesidad de preocuparse por fugas de memoria, etc. Por lo tanto, en términos de la dificultad de aprender la sintaxis, también son más fáciles que C++. En términos de velocidad de ejecución, dado que todas sus máquinas virtuales tienen su propia función JIT para la compilación en tiempo de ejecución, su velocidad es superada sólo por C++.

Sin embargo, en términos de funcionalidad, no es posible optimizar el sistema comercial subyacente como C++. En términos de rendimiento de expansión, es más débil que C++ porque su expansión necesita pasar por el puente de C, y estos dos lenguajes se ejecutan en máquinas virtuales, por lo que al expandir módulos funcionales, es necesario cruzar una capa adicional de muro para lograrlo.

Resumir

Pero de nuevo, el lenguaje de programación cuantitativa no es importante, lo que es importante es la idea. No hay absolutamente ningún problema en utilizar el lenguaje cuantitativo Mai y el lenguaje de visualización del inventor como trampolín hacia la entrada cuantitativa. Para mejorar después de la entrada, es necesario intentar y explorar constantemente en combinación con diferentes condiciones del mercado. Se puede decir que las ideas determinan la salida y la visión determina el reino.

"Diseña tu estrategia, intercambia tus ideas." Desde esta perspectiva, el núcleo del trading cuantitativo sigue siendo el trading de ideas. Como trader cuantitativo, no solo necesita dominar la sintaxis y las funciones básicas de la plataforma de redacción de estrategias, sino que también necesita experimentar los conceptos comerciales en combate real. La cuantificación es sólo una herramienta y un vehículo para reflejar diferentes conceptos comerciales.

Tarea

  1. ¿Cuáles son las ventajas del lenguaje Python para el trading cuantitativo?
  2. ¿Intentas escribir algunas API de uso común utilizando el lenguaje Mai del inventor?

Vista previa de la siguiente sección

Creo que con la introducción anterior a los lenguajes de programación, debes saber cómo elegir. En los próximos capítulos, aprenderemos el desarrollo de estrategias comerciales cuantitativas de manera específica de acuerdo con la clasificación de los lenguajes de programación.

3.2 Guía de inicio rápido del lenguaje Mai

resumen

¿Qué es el idioma Mai? El llamado lenguaje Mai es un conjunto de bibliotecas de funciones programadas que se extienden a partir de los primeros indicadores técnicos bursátiles. Los algoritmos están encapsulados en funciones y los usuarios solo necesitan llamar a las funciones línea por línea, como si jugaran con bloques de construcción, para implementar la lógica de la estrategia.

Adopta el modo de construcción de "sintaxis pequeña, función grande", lo que mejora enormemente la eficiencia de escritura. Las estrategias que requieren más de 100 oraciones en otros idiomas generalmente se pueden escribir en solo una docena de oraciones en idioma Mai. Junto con la biblioteca de funciones estadísticas financieras y la estructura de datos de las herramientas cuantitativas del inventor, también puede admitir cierta lógica comercial compleja.

Estrategia completa

Para ayudarlo a comprender rápidamente los conocimientos clave de esta sección, antes de presentar la Guía de inicio rápido del lenguaje de microondas cuantitativo de Inventor, primero debe tener una comprensión preliminar de los conceptos de esta sección. Seguimos utilizando el promedio móvil de largo plazo de 50 días y el promedio móvil de corto plazo de 10 días como casos básicos y revisamos el caso de estrategia completo mencionado en el capítulo anterior:

Apertura de posición larga:Si no hay ninguna posición actual, y el precio de cierre es mayor que el promedio móvil de corto plazo, y el precio de cierre es mayor que el promedio móvil de largo plazo, y el promedio móvil de corto plazo es mayor que el promedio móvil de largo plazo, y el promedio móvil de largo plazo está aumentando.

Abrir una posición corta:Si no hay ninguna posición actual, y el precio de cierre es menor que el promedio móvil de corto plazo, y el precio de cierre es menor que el promedio móvil de largo plazo, y el promedio móvil de corto plazo es menor que el promedio móvil de largo plazo, y el promedio móvil de largo plazo está cayendo.

Cierre de posición larga:Si actualmente mantiene una orden larga y el precio de cierre es menor que el promedio móvil de largo plazo, o el promedio móvil de corto plazo es menor que el promedio móvil de largo plazo, o el promedio móvil de largo plazo está disminuyendo.

Cierre de posiciones cortas:Si actualmente mantiene una orden corta y el precio de cierre es mayor que el promedio móvil de largo plazo, o el promedio móvil de corto plazo es mayor que el promedio móvil de largo plazo, o el promedio móvil de largo plazo está aumentando.

Si está escrito en código de idioma Mai, se verá así:
img
Figura 3-3 Ejemplo completo del lenguaje Mai

Para escribir una estrategia comercial cuantitativa completa, generalmente se requieren varios pasos: adquisición de datos, cálculo de datos, cálculo lógico, colocación de órdenes, etc. Como se muestra en la figura anterior, en todo el código, solo se utiliza una API para obtener datos básicos, que es "CLOSE" en la primera y segunda línea; Luego las líneas primera a novena son la parte de cálculo de datos; y finalmente las líneas undécima a decimocuarta son la parte de cálculo lógico y colocación de órdenes.

Tenga en cuenta que el código morado es una variable; en las líneas primera a novena, el ":" verde es un operador de asignación, y los datos del lado derecho del operador de asignación se asignan a la variable del lado izquierdo después del cálculo; El código naranja es la API, por ejemplo, en la primera línea, llamar a MA (promedio móvil) requiere pasar dos parámetros, que pueden entenderse como configuraciones, es decir, al llamar a MA, debe configurar el tipo de MA; Los operadores lógicos "AND" y "OR" son de color rosa y rojo, y se utilizan principalmente para conectar múltiples cálculos lógicos, etc. Con los conocimientos básicos anteriores, comencemos a aprender los fundamentos del lenguaje Mai.

Datos básicos

Los datos básicos (precio de apertura, precio más alto, precio más bajo, precio de cierre, volumen de negociación) son una parte indispensable del comercio cuantitativo. Para obtener los últimos datos básicos de la estrategia, solo es necesario llamar a la API de la herramienta cuantitativa del inventor. Si desea obtener datos básicos históricos, puede utilizar "REF", como por ejemplo: REF(CLOSE, 1) es para obtener el precio de cierre de ayer.

Las variables

Una variable es un número que se puede cambiar. El nombre de una variable puede entenderse como un código. Su nombre admite caracteres chinos, letras, números y guiones, pero la longitud debe controlarse dentro de los 31 caracteres. Los nombres de variables no se pueden repetir entre sí, con nombres de parámetros o con nombres de funciones (API), y cada declaración debe terminar con un punto y coma. Si desea agregar sus propios comentarios en idioma después de escribir, utilice “//” al final. Debe escribirse en modo mayúsculas con el método de entrada de ancho medio. Como se muestra en la siguiente figura:
img
Figura 3-4 Tipo de datos del idioma Mai

Asignación de variables

La asignación de variable consiste en asignar el valor del lado derecho del operador de asignación a la variable del lado izquierdo. Hay 4 tipos de operadores de asignación, que pueden controlar si el valor se muestra en el gráfico y definir la posición de visualización. Las fuentes verdes en la figura a continuación son operadores de asignación, a saber, “:”, “:=”, “^^” y “..”. Los comentarios del código en la figura explican sus significados en detalle.
img
Figura 3-5 Asignación de variables del idioma Mai

Tipo de datos

En el lenguaje Mai existen muchos tipos de datos, entre los cuales los más utilizados son el tipo numérico, el tipo cadena y el tipo booleano. Los tipos numéricos son números, incluidos enteros, decimales, números positivos y negativos, etc., como: 1, 2, 3, 1,1234, 2,23456...; Los tipos de cadena se pueden entender como texto, chino, inglés y los números pueden ser cadenas, como: 'Inventor Quantification', 'CLOSEPRICE', '6000' y los tipos de cadena se deben incluir entre punto y coma en inglés; El tipo booleano es el más simple, solo tiene dos valores "sí" y "no", como por ejemplo: 1 representa verdadero para "sí", y 0 representa falso para "no".

Operador relacional

Los operadores relacionales, como sugiere su nombre, son operadores que se utilizan para comparar la relación entre dos valores. Son iguales a, mayor que, menor que, mayor o igual a, menor o igual a, y no iguales a, como se muestra a continuación:
img
Figura 3-6 Operadores del lenguaje Mai

Operador lógico

Las operaciones lógicas pueden conectar declaraciones booleanas separadas en un todo. Los más utilizados son “AND” y “OR”. Supongamos que hay dos valores de tipo booleano, a saber, "el precio de cierre es mayor que el precio de apertura" y "el precio de cierre es mayor que la media móvil", podemos combinarlos en un valor booleano, como: "el precio de cierre es mayor que el precio de apertura y (Y) el precio de cierre es mayor que la media móvil", "el precio de cierre es mayor que el precio de apertura o (O) el precio de cierre es mayor que la media móvil".
img
Figura 3-7 Funcionamiento lógico del lenguaje Mai

Atención a todos:
"Y" significa que cuando todas las condiciones son "sí", la condición final será "sí";
"O" significa que entre todas las condiciones, siempre que alguna de las condiciones sea "sí", la condición final será "sí".
“AND” se puede escribir como “&&” y “OR” se puede escribir como “||”.

Operador de aritmética

Operadores aritméticos de uso común en el idioma Mai ("+", "-",*”, “/”) no es diferente de las matemáticas aprendidas en la escuela primaria, como se muestra a continuación:
img
Figura 3-8 Operaciones aritméticas en lenguaje Mai

Las prioridades

Si hay un 100*Para la expresión (10-1)/(10+5), ¿qué paso calcula primero el programa? Las matemáticas de secundaria nos dicen: ① Si se trata de una operación del mismo nivel, generalmente se calcula de izquierda a derecha. ② Si hay suma y resta, así como multiplicación y división, calcule primero la multiplicación y la división, luego la suma y la resta. ③Si hay paréntesis, calcule primero el contenido de los paréntesis. ④ Si se ajusta a las leyes de operación, estas se pueden utilizar para simplificar el cálculo. La prioridad del idioma Mai es la misma que se muestra a continuación:
img
Figura 3-9 Prioridad de las operaciones aritméticas en el lenguaje Mai

Modo de ejecución

En el lenguaje Mai de la herramienta cuantitativa del inventor, hay dos modos de ejecución de la estrategia del programa, a saber: modo de precio de cierre y modo de precio en tiempo real. El modo de precio de cierre significa que se establece la señal de la línea K actual y la transacción de orden se ejecuta inmediatamente cuando comienza la siguiente línea K. El modo de precio en tiempo real significa que una vez que se establece la señal de la línea K actual, la transacción de la orden se ejecutará inmediatamente.

Estrategias intradía

Si se trata de una estrategia intradía, cuando necesita cerrar la posición al final del día de negociación, debe utilizar la función de tiempo "TIME". Esta función se muestra en formato de cuatro dígitos cuando está por encima del segundo período y por debajo del período del día, es decir: HHMM (1450-14:50). Nota: Al utilizar la función TIEMPO como condición para cerrar una posición al final de la negociación, se recomienda que la condición de apertura también tenga un límite de tiempo correspondiente. Como se muestra a continuación:
img
Figura 3-10 Función de tiempo de idioma del micrófono

Clasificación de modelos

img
Figura 3-11 Clasificación del modelo de lenguaje Mai

Hay dos tipos de clasificación de modelos en el lenguaje Mai, a saber: modelo sin filtrado y modelo con filtrado. En realidad, esto es muy fácil de entender: el modelo sin filtrado permite señales de apertura o cierre continuas, que pueden realizar las funciones de agregar y reducir posiciones. El modelo de filtrado no permite señales de apertura o cierre continuas. Es decir, cuando aparece una señal de apertura, se filtrarán las señales de apertura posteriores hasta que aparezca una señal de cierre. El orden de las señales en el modelo sin filtrado es: apertura-cierre-apertura-cierre-apertura.....

Resumir

Lo anterior es una introducción rápida al lenguaje Mai. Después de aprenderlo, podrás programar estrategias comerciales cuantitativas. Si necesita escribir estrategias más complejas, puede consultar la documentación de la API de lenguaje Mai de Inventor Quantitative Tool o consultar directamente al servicio de atención al cliente oficial para que escriba estrategias comerciales cuantitativas para usted.

Vista previa de la siguiente sección

El day trading también es un modelo de trading. Este método no mantiene posiciones durante la noche, por lo que el riesgo de volatilidad del mercado es menor. Una vez que aparecen condiciones desfavorables en el mercado, se pueden realizar ajustes a tiempo. Después de aprender la introducción al lenguaje Mai en esta sección, en la siguiente sección le mostraremos cómo escribir una estrategia de trading cuantitativo intradía factible.

Tarea

  1. Intente utilizar la herramienta cuantitativa Inventor para escribir una API en el lenguaje Mai para obtener datos básicos.
  2. ¿Cuáles son las formas de mostrar las asignaciones de variables en un gráfico?

3.3 Cómo implementar estrategias en lengua Mai

resumen

En el artículo anterior, explicamos la premisa de implementar estrategias comerciales desde los aspectos de la introducción del lenguaje Mai, la sintaxis básica, el método de ejecución del modelo, la clasificación del modelo, etc. En este artículo, continuaremos el contenido del artículo anterior y lo ayudaremos a realizar una estrategia comercial cuantitativa intradía factible paso a paso a partir de los módulos de estrategia y los indicadores técnicos de uso común.

Módulo de políticas

Piénsalo, ¿cómo construyes un robot usando piezas de Lego? No es posible montarlo pieza por pieza, de arriba a abajo o de abajo a arriba. Cualquiera con un poco de sentido común sabe que la cabeza, los brazos, las piernas, las alas, etc. deben ensamblarse por separado y luego combinarse para formar un robot completo. Lo mismo ocurre cuando se escriben programas. Escriba las funciones requeridas en módulos de estrategia y luego combine los módulos de estrategia en una estrategia comercial cuantitativa completa. A continuación enumeraré algunos módulos de estrategia comúnmente utilizados:

Aumento de fase

El incremento de etapa se calcula calculando el porcentaje de la diferencia entre el precio de cierre de la línea K actual y el precio de cierre de los N períodos anteriores. Por ejemplo, para calcular el aumento de los últimos 10 períodos de la línea K, el código se puede escribir como:
img
Figura 3-12 Crecimiento de la etapa del lenguaje Mai

Nuevos máximos

Para establecer un nuevo máximo, necesitamos calcular si la línea K actual es mayor que el precio más alto en N períodos. Por ejemplo, para calcular si la línea K actual es mayor que el precio más alto entre las últimas 10 líneas K, el código se puede escribir como:
img
Figura 3-13 Mai Language alcanza un nuevo máximo

Gran volumen al alza

Un ataque alcista de gran volumen puede entenderse como un aumento de precios y un fuerte aumento en el volumen de operaciones. Por ejemplo: si el precio de cierre de una línea K es 1,5 veces el precio de cierre de las 10 líneas K anteriores, significa que ha aumentado un 50% en 10 días; El volumen de negociación supera 5 veces el promedio de las últimas 10 K líneas. Se puede escribir en código como:
img
Figura 3-14 El volumen de Maiyuyu aumenta

Acabado estrecho

La consolidación de rango estrecho significa que los precios permanecen dentro de un rango determinado durante un período de tiempo reciente. Por ejemplo: si la diferencia entre el precio más alto dentro de 10 períodos y el precio más bajo dentro de 10 períodos, dividido por el precio de cierre de la línea K actual, es menor que aproximadamente 0,05. Se puede escribir en código como:
img
Figura 3-15 Rango estrecho del lenguaje del trigo

Disposición alcista de media móvil

La disposición alcista de las medias móviles se divide en disposición alcista y disposición bajista. La línea K está dispuesta hacia arriba con soporte bajo los promedios móviles 5-10-20-30-60, lo que constituye una disposición alcista. La disposición alcista significa que la tendencia del mercado es una fuerte tendencia alcista. Se puede escribir en código como:
img
Figura 3-16 Disposición alcista de la media móvil del lenguaje Mai

Máximos anteriores y sus ubicaciones

Para obtener el punto alto anterior y la ubicación de este punto alto, puede obtenerlo directamente a través de la API de la herramienta cuantitativa Inventor. Esto se puede escribir en código:
img
Figura 3-17 El punto más alto anterior del idioma Mai

Brecha

Una brecha es una situación en la que los precios más altos y más bajos de dos líneas K no están conectados. Se compone de dos líneas K. La brecha es un precio de referencia para futuros puntos de soporte y presión. Cuando se produce una brecha, se puede asumir que ha comenzado una aceleración de la tendencia en la dirección de la brecha original. Esto se puede escribir en código:
img
Figura 3-18 Brecha lingüística de Mai

Indicadores técnicos comunes

Promedio móvil

img
Figura 3-19 Gráfico de media móvil

Desde un punto de vista estadístico, la media móvil es la media aritmética de los precios diarios, y es una trayectoria de precios con tendencia. El sistema de media móvil es una herramienta técnica comúnmente utilizada por la mayoría de los analistas. Desde un punto de vista técnico, es un factor que afecta al precio psicológico de los analistas técnicos y al factor de toma de decisiones de compra y venta. Es una buena herramienta de referencia para analistas técnicos. La herramienta cuantitativa del inventor admite muchos tipos diferentes de medias móviles, como se muestra en la siguiente figura:
img
Figura 3-20 Cálculo de varios indicadores del idioma Mai

Canal BOLL

img
Figura 3-21 Diagrama del canal BOLL

BOLL, también conocido como indicador de Banda de Bollinger, también utiliza principios estadísticos para calcular primero la trayectoria media basándose en el promedio móvil de N días y luego calcular las trayectorias superior e inferior basándose en la desviación estándar. Cuando el canal BOLL se vuelve más estrecho, significa que el precio está volviendo gradualmente a la media. Cuando el canal BOLL cambia de estrecho a ancho, significa que el mercado está empezando a cambiar. Si el precio cruza la pista superior, indica que el poder adquisitivo está aumentando. Si el precio cruza la pista inferior, indica que el poder de venta está aumentando.

Entre todos los indicadores técnicos, el método de cálculo de BOLL es uno de los más complicados, que introduce el concepto de desviación estándar en estadística e implica el cálculo de la línea media (MB), la línea superior (UP) y la línea inferior (DN). El método de cálculo es el siguiente:
img
Figura 3-22 Cálculo de la banda de Bollinger del lenguaje Mai

Indicadores del MACD

img
Figura 3-23 Indicador MACD

El indicador MACD utiliza medias móviles rápidas (corto plazo) y lentas (largo plazo) y sus signos de convergencia y separación, y realiza una operación de doble suavizado. El MACD, que se desarrolló sobre la base del principio de la media móvil, ha eliminado el defecto de la media móvil que frecuentemente envía señales falsas y ha conservado el efecto de la media móvil. Por lo tanto, el indicador MACD tiene las características de tendencia de media móvil, estabilidad y estabilidad. Es un indicador de análisis técnico utilizado para juzgar el momento de compra y venta de acciones y predecir el aumento y la caída de los precios de las acciones. El método de cálculo es el siguiente:

img
Figura 3-24 Indicador MACD de Mai Language

Los anteriores son los módulos de estrategia más comúnmente utilizados en el desarrollo de estrategias comerciales cuantitativas. Por supuesto, hay muchos más que estos. A través de los ejemplos de módulos anteriores, también puede implementar varios de los módulos comerciales más utilizados en su comercio subjetivo. Los métodos son todos universales. A continuación, comenzaremos a escribir una estrategia de trading cuantitativo intradía factible.

Redacción de estrategias

En el mercado de divisas al contado, hubo una vez una estrategia comercial innovadora de amplia circulación, que es la estrategia HANS123. Utiliza sus simples rupturas de puntos altos y bajos de las líneas N K después de la apertura como criterio para activar las señales comerciales. Este también es un modo de negociación de entrada temprana.

Lógica de estrategia

Esté preparado para ingresar al mercado 30 minutos después de la apertura del mercado;
Pista superior = punto alto 30 minutos después de la apertura;
Pista inferior = 30 minutos baja después de la apertura;
Cuando el precio rompa la pista superior, compre y abra una posición;
Cuando el precio caiga por debajo de la pista inferior, abra una posición de venta.
Estrategia de trading intradía, cerrar posiciones antes del cierre del mercado;

Código de estrategia

img
Figura 3-25 Código de estrategia del lenguaje Mai

Resumir

Arriba, hemos aprendido el concepto de módulos de estrategia y, a través de varios casos de módulos de estrategia comúnmente utilizados, nos hemos familiarizado con los métodos de programación de las herramientas cuantitativas del inventor. Se puede decir que aprender a escribir módulos de estrategia y mejorar el pensamiento lógico de la programación son pasos clave en el trading cuantitativo avanzado. Finalmente, utilizamos las herramientas cuantitativas del inventor para implementar las estrategias comerciales comúnmente utilizadas en el comercio al contado de divisas.

Vista previa de la siguiente sección

Algunos amigos pueden sentirse confundidos e incapaces de comprender los códigos densamente empaquetados. No te preocupes, ya hemos pensado en todo esto para ti. En la herramienta cuantitativa Inventor también hay un lenguaje de programación que es más adecuado para usuarios novatos. Es programación visual. Como sugiere el nombre, lo que ves es lo que obtienes. ¡Esperémoslo juntos!

Tarea

  1. Intente implementar varios módulos comerciales que utilice con mayor frecuencia en el comercio subjetivo.
  2. Intente implementar el algoritmo indicador KDJ utilizando el lenguaje Mai en la herramienta cuantitativa del inventor.

3.4 Inicio rápido con programación visual

resumen

Muchos traders subjetivos están interesados ​​en el trading cuantitativo. Están llenos de confianza al principio. Sin embargo, después de aprender la sintaxis básica, las operaciones de datos, las estructuras de datos, el control lógico, etc. de los lenguajes de programación tradicionales, a menudo se desaniman o abandonan después de ver los códigos largos y complejos. En este momento, los lenguajes de programación visual pueden ser más adecuados para comenzar.

Estrategia completa

Para ayudar a todos a comprender rápidamente los conocimientos clave de esta sección, antes de presentar la introducción rápida al lenguaje de programación visual cuantitativa Inventor, primero echemos un vistazo a cómo se ve la estrategia escrita en el lenguaje visual. Y tener una comprensión preliminar de los conceptos de sustantivos en esta sección. Tomemos el ejemplo más simple de entrar en largo cuando el precio de cierre es mayor que el promedio móvil de 50 períodos, y entrar en corto cuando el precio de cierre es menor que el promedio móvil de 50 períodos:

Apertura de posición larga:Si no hay ninguna posición actual y el precio de cierre es mayor que el promedio móvil de 50 períodos.
Abrir una posición corta:Si no hay ninguna posición actual y el precio de cierre es menor que el promedio móvil de 50 períodos.
Cierre de posición larga:Si actualmente mantiene una posición larga y el precio de cierre es menor que el promedio móvil de 50 períodos.
Cierre de posiciones cortas:Si actualmente mantiene una orden corta y el precio de cierre es mayor que el promedio móvil de 50 períodos.

Si la estrategia anterior está escrita en un lenguaje visual, se vería así (como se muestra a continuación):
img
Figura 3-26 Interfaz de lenguaje visual

Como se muestra en la figura anterior, todo el proceso de diseño de la estrategia es: establecer el tipo de mercado, obtener la matriz de la línea K, obtener el promedio de 50 períodos de la línea K anterior, obtener el precio de cierre de la línea K anterior, obtener la matriz de posiciones, determinar el estado de la posición, determinar si el precio de cierre es mayor o menor que el promedio móvil y ejecutar la apertura o el cierre.

Aquí debemos prestar atención al concepto de "matriz". Una matriz es una de las estructuras de datos importantes para cada lenguaje de programación. Las matrices son como contenedores que pueden almacenar una serie de valores. Por ejemplo, llamar a la API para obtener la matriz de K líneas devuelve el siguiente resultado:
img
Figura 3-27 Matriz de líneas K

El código en la figura anterior es una matriz de K líneas. La matriz contiene tres datos en total, es decir, los datos de la línea K anterior, los datos de la línea K anterior y los datos de la línea K actual. Si asignamos esta matriz a una variable "arr", si queremos obtener los últimos datos de esta matriz (los datos de la línea raíz K), podemos escribirlo así (como se muestra en las líneas 4 y 5 de la figura siguiente):
img
Figura 3-28 Referencia de matriz

Podemos utilizar la segunda forma de escritura (línea 5), ​​porque en realidad hay cientos o miles de datos de líneas K, y las nuevas líneas K aumentan constantemente. De esta forma, primero puedes obtener la longitud de la matriz. "arr.length" significa obtener la longitud de la matriz y luego restar "1", que son los datos de la última línea K. Si desea obtener los datos de la línea K anterior, reste "2".

Las personas cuidadosas pueden encontrar que estos datos están entre "{}". A partir de los nombres en inglés, puedes saber aproximadamente que corresponden a: tiempo, precio de apertura, precio más alto, precio más bajo, precio de cierre y volumen de negociación. Si desea obtener el precio de cierre de la línea K anterior, simplemente agregue "." y el valor requerido al final, consulte las líneas 8 a 10 en la figura siguiente.
img
Figura 3-29 Referencia de matriz

¿Por qué utilizar un lenguaje de programación visual?

Con los conceptos anteriores, primero usemos Java para escribir un programa que genere "hola, mundo" para experimentar la programación tradicional, como se muestra a continuación:
img
Figura 3-30

Un programa que simplemente emite un "¡Hola mundo!" La cadena requiere solo 5 líneas de código. Creo que la mayoría de los principiantes sólo conocen las palabras en inglés "hello, world" entre paréntesis y no tienen idea de por dónde empezar con el resto. Por lo tanto, es mejor empezar con la programación visual que quedarse perdido.

¿Qué es la programación visual?

La programación visual tiene una larga historia y no es nueva. Este concepto de programación "lo que ves es lo que obtienes", equipado con varios módulos de control, puede crear lógica de código y completar el diseño de una estrategia comercial simplemente arrastrando y soltando. El proceso es muy similar al de los bloques de construcción.
img
Figura 3-31

Como se muestra arriba, el mismo programa se puede completar con solo una línea de código en la programación visual Blockly. Esto reduce enormemente el umbral para la programación, lo que supone una gran experiencia operativa, especialmente para los traders que no tienen conocimientos de programación.

¿Cuáles son las características del lenguaje de programación visual?

Blockly no es un juguete de programación, es un editor genuino, no un sistema operativo disfrazado de editor. Admite muchos elementos básicos de programación, como variables, funciones, matrices y bloques fácilmente ampliables y personalizables. Puede usarlo para completar tareas de programación complejas. El diseño es muy consistente con la filosofía Unix: hacer una cosa.

El inventor de la programación visual cuantitativa también se hizo realidad a través de la herramienta de visualización blockly lanzada por Google. El diseño es similar a Scratch lanzado por el MIT, con un umbral verdaderamente cero (como se muestra a continuación).
img
Figura 3-32

En la interfaz de programación visual de Inventor Quant, se incorporan cientos de módulos comerciales de uso común. Se agregarán más módulos comerciales en el futuro para respaldar las nuevas ideas y nuevas aplicaciones de los comerciantes. Estos serán desarrollados y mantenidos conjuntamente por los desarrolladores.

Aunque la sintaxis es simple, no sacrifica el rendimiento. Casi puede satisfacer el desarrollo de la mayoría de las estrategias comerciales cuantitativas más simples. En términos de funcionalidad y velocidad, no es inferior a los lenguajes de programación convencionales como Python y JavaScript. En el futuro, soportará aplicaciones financieras lógicamente complejas.

Cómo utilizar

img
Figura 3-33

Escribe un programa de hola mundo

img
Figura 3-34

Ejecutar e imprimir "hola, mundo"

img
Figura 3-35

Resumir

Arriba, comenzamos con una estrategia de visualización completa, luego presentamos la introducción y las características del lenguaje de visualización y, finalmente, presentamos cómo usar el lenguaje de visualización en la herramienta Inventor Quant y escribimos un ejemplo de "hola mundo". Sin embargo, debemos recordar a todos que, como introducción al trading cuantitativo, la programación visual es un buen trampolín, pero actualmente solo hay interfaces API limitadas abiertas en la herramienta cuantitativa Inventor. Para el trading cuantitativo, es mejor usarlo como una herramienta auxiliar que le ayude a ordenar la lógica de la estrategia.

Vista previa de la siguiente sección

No hay diferencia entre los conceptos básicos de la programación visual y los lenguajes de programación de alto nivel, y algunos aspectos son incluso universales. Una vez que aprendas programación visual, estarás un paso más cerca de aprender programación de alto nivel. En la siguiente sección, profundizaremos en el aprendizaje avanzado de la programación visual, incluido cómo usar el lenguaje visual para escribir módulos de comercio cuantitativo de uso común en la herramienta cuantitativa Inventor y cómo desarrollar una estrategia de comercio intradía completa.

Tarea

  1. En la interfaz de programación visual de Inventor Quant, utilice la API y comprenda lo que significa.
  2. Utilice lenguaje visual para obtener el último precio de apertura y enviarlo al registro.

3.5 Cómo implementar estrategias utilizando el lenguaje visual

resumen

En el artículo anterior, aprendimos sobre la introducción y las características del lenguaje de programación visual, el ejemplo de "hola mundo" y la escritura de estrategias en la herramienta de negociación cuantitativa del inventor, y explicamos los requisitos previos para implementar estrategias comerciales. En este artículo, continuaremos con el artículo anterior, comenzando por los módulos de estrategia y los indicadores técnicos comúnmente utilizados, y luego a la lógica de la estrategia, para ayudar a todos a realizar una estrategia de trading intradía completa paso a paso.

Módulo de políticas

Aumento de fase

El incremento de etapa se calcula calculando el porcentaje de la diferencia entre el precio de cierre de la línea K actual y el precio de cierre de los N períodos anteriores. Por ejemplo, para calcular el aumento de los últimos 10 períodos de la línea K, el código se puede escribir como:
img
Figura 3-36

Del código anterior, podemos ver que la forma en que se ejecuta la computadora requiere un bucle lógico completo. Por ejemplo, para calcular la tasa de crecimiento de los últimos 10 períodos de la línea K, es necesario dividirla en los siguientes pasos:
En primer lugar, el ordenador debe saber claramente qué producto desea comercializar. Por ejemplo, el ejemplo anterior es metanol, así que establezca el código de contrato en: "MA888". Después de configurar el código del contrato, puede obtener los datos de la línea K del contrato.

Con los datos de la línea K, puede obtener los datos detallados de cualquier línea K a partir de estos datos de la línea K.
Para calcular el aumento periódico, primero debes obtener los precios de cierre de dos líneas K, por ejemplo: el precio de cierre de la línea K anterior y el precio de cierre de la undécima línea K anterior.

Finalmente, con base en los precios de cierre de estas dos líneas K, calcule la relación de incremento de etapa. Cada una de las siguientes estrategias tiene las características de dichos bucles lógicos y atributos condicionales. Una vez que entiendas esta lógica, la programación visual será mucho más fácil.

Gran volumen al alza

Un ataque alcista de gran volumen puede entenderse como un aumento de precios y un fuerte aumento en el volumen de operaciones. Por ejemplo: si el precio de cierre de una línea K es 1,5 veces el precio de cierre de las 10 líneas K anteriores, significa que ha aumentado un 50% en 10 días; El volumen de negociación supera 5 veces el promedio de las últimas 10 K líneas. Se puede escribir en código como:
img
Figura 3-37

Brecha

Una brecha es una situación en la que los precios más altos y más bajos de dos líneas K no están conectados. Se compone de dos líneas K. La brecha es un precio de referencia para futuros puntos de soporte y presión. Cuando se produce una brecha, se puede asumir que ha comenzado una aceleración de la tendencia en la dirección de la brecha original. Esto se puede escribir en código:
img
Figura 3-38

Indicadores técnicos comunes

Media móvil EMA

Desde un punto de vista estadístico, la media móvil es la media aritmética de los precios diarios, y es una trayectoria de precios con tendencia. El sistema de media móvil es una herramienta técnica comúnmente utilizada por la mayoría de los analistas. Desde un punto de vista técnico, es un factor que afecta al precio psicológico de los analistas técnicos y al factor de toma de decisiones de compra y venta. Es una buena herramienta de referencia para analistas técnicos. La herramienta cuantitativa del inventor admite muchos tipos diferentes de medias móviles, como se muestra en la siguiente figura:
img
Figura 3-39

Indicadores del MACD

El indicador MACD utiliza medias móviles rápidas (corto plazo) y lentas (largo plazo) y sus signos de convergencia y separación, y realiza una operación de doble suavizado. El MACD, que se desarrolló sobre la base del principio de la media móvil, ha eliminado el defecto de la media móvil que frecuentemente envía señales falsas y ha conservado el efecto de la media móvil. Por lo tanto, el indicador MACD tiene las características de tendencia de media móvil, estabilidad y estabilidad. Es un indicador de análisis técnico utilizado para juzgar el momento de compra y venta de acciones y predecir el aumento y la caída de los precios de las acciones. El método de cálculo es el siguiente:
img
Figura 3-40

Indicador KDJ

El indicador KDJ combina las ventajas del concepto de momentum, los indicadores de fuerza y ​​debilidad y el promedio móvil, y se utiliza para medir el grado de variación de los precios de las acciones respecto del rango de precios normal. No sólo se tiene en cuenta el precio de cierre, sino también los precios máximos y mínimos recientes, lo que evita la debilidad de considerar sólo el precio de cierre e ignorar la volatilidad real. El método de cálculo es el siguiente:
img
Figura 3-41

Redacción de estrategias

El mentor de Warren Buffett, Benjamin Graham, mencionó una vez un modelo comercial de equilibrio dinámico entre acciones y bonos en su libro "El inversor inteligente".

Este modelo comercial es muy simple:
Invierte el 50% de tu dinero en fondos de acciones y el 50% restante en fondos de bonos. Es decir, las acciones y los bonos representan cada uno la mitad.

Reequilibrar los activos a intervalos fijos o en función de los cambios del mercado para restablecer la relación entre los activos de acciones y los activos de bonos al valor inicial de 1:1. Esta es toda la lógica de la estrategia, incluyendo cuándo comprar y vender, y cuánto comprar y vender. ¡Bastante simple!

En este método, la volatilidad de los fondos de bonos es en realidad muy pequeña, mucho menor que la volatilidad de las acciones, por lo que aquí se utilizan los bonos como un "ancla de referencia", es decir, se utilizan bonos para medir si las acciones han subido demasiado. Es todavía muy poco.

Si el precio de las acciones aumenta, el valor de mercado de las acciones será mayor que el valor de mercado de los bonos. Cuando la relación entre el valor de mercado de los dos supere el umbral establecido, se reajustará la posición total, se venderán las acciones y se El bono se comprará para restaurar la relación entre el valor de mercado de las acciones y los bonos al original 1:1.

Por el contrario, si el precio de las acciones cae, el valor de mercado de las acciones será menor que el valor de mercado de los bonos. Cuando la relación entre el valor de mercado de los dos supere el umbral establecido, la posición total se reajustará para comprar acciones y vender bonos para restaurar la relación valor de mercado acciones-bonos al original 1:1.

De esta manera, en el equilibrio dinámico entre la proporción de acciones y bonos, es suficiente para disfrutar de los frutos del crecimiento de las acciones y reducir la volatilidad de los activos. Como pionero de la inversión en valor, Graham nos ofrece una buena idea.

Lógica de estrategia

Según el valor actual de BTC, el saldo de la cuenta será de ¥5000 en efectivo y 0,1 BTC, es decir, la relación inicial de efectivo al valor de mercado de BTC es 1:1.

Si el precio de BTC sube a ¥6000, es decir, el valor de mercado de BTC es mayor que el saldo de la cuenta y la diferencia entre ellos excede el umbral establecido, entonces se venderán (6000-5000)/6000/2 monedas. Esto significa que BTC se ha apreciado y el dinero puede volver a cambiarse.

Si el precio de BTC cae a ¥4000, es decir, el valor de mercado de BTC es menor que el saldo de la cuenta y la diferencia entre ellos excede el umbral establecido, entonces compre (5000-4000)/4000/2 monedas. Esto significa que BTC se ha depreciado, así que recompra BTC.

De esta manera, no importa si BTC se aprecia o se deprecia, el saldo de la cuenta y el valor de mercado de BTC siempre se mantienen iguales. Si BTC se deprecia, compre algo, y cuando vuelva a subir, venda algo, como si fuera un saldo.

Condiciones de compra:Si el valor de mercado de la posición actual menos el saldo disponible actual es menor al 5% del saldo negativo disponible actual, abra una posición de compra.
Condiciones de venta:Si el valor de mercado de la posición actual menos el saldo disponible actual es mayor al 5% del saldo disponible actual, cierre la posición y venda.

Prerrequisitos

  • Mercado actual
  • Activos corrientes
  • Valor total de mercado de las monedas
  • Diferencia de activos

Construcción de estrategias

Estrategia de creación visual Paso 1

Calculamos los cuatro requisitos previos para la estrategia comercial y los asignamos a sus respectivas variables. Con la programación visual, los bloques de código se ven así. Como se muestra a continuación
img
Figura 3-42

Cabe señalar que el valor total de mercado de la moneda es el valor total de mercado del número actual de monedas en posesión, y su método de cálculo es multiplicar el número total actual de monedas en posesión por el último precio actual. La diferencia de activos es el valor total de mercado de la moneda menos el saldo disponible actual.

Estrategia de creación visual, paso 2

Una vez asignados los requisitos previos y las condiciones necesarias, es necesario escribir la lógica de la transacción. Esto no es tan complicado como te podrías imaginar. No es más que expresar la lógica de la estrategia anterior en forma de bloques de código.

Es decir, si la diferencia de activos es menor al 5% del saldo negativo disponible, comprar; Si la diferencia de activos es mayor al 5% del saldo disponible, vender. Como se muestra a continuación:
img
Figura 3-43

Toda la estrategia parece haber sido escrita, pero debes saber que el programa se ejecuta de arriba a abajo y se detiene después de la ejecución. Sin embargo, nuestra estrategia comercial no es ejecutar las condiciones comerciales una sola vez, sino ejecutarlas repetidamente una y otra vez.

En otras palabras, el programa necesita comprobar constantemente si se han cumplido las condiciones de la estrategia. En caso afirmativo, ejecutar la compra o venta; De lo contrario, siga comprobando. En este momento, debe utilizar otra declaración de bucle, como se muestra a continuación:
img
Figura 3-44

Backtesting de estrategia

No existe una diferencia esencial entre las estrategias de visualización y las estrategias escritas en otros lenguajes de programación. También admiten pruebas de datos históricos con múltiples períodos y niveles de precisión. Por supuesto, también admiten el comercio en tiempo real de futuros de materias primas nacionales y extranjeras y monedas digitales. La siguiente es la información de backtesting de la estrategia:
img
Figura 3-45

En este punto se completa una estrategia comercial completa. Para cuidar a aquellos que quieren aprovecharse de nosotros, esta estrategia ha sido compartida en Strategy Square y puede ser copiada y estudiada directamente.

Conclusión

La regla de las 10.000 horas siempre existe, pero para los traders sin conocimientos básicos, es imposible dedicar 10.000 horas para reingresar a la industria. Por lo tanto, es necesario tener una escalera, y para los traders sin conocimientos de programación, la programación visual de Inventor Quant es una escalera para ingresar rápidamente.

Con la programación visual, no necesitas recordar la sintaxis ni los nombres de los métodos, simplemente puedes explorar los módulos de función y encontrar lo que deseas. Esta es también la intención original del inventor del trading cuantitativo, que es ayudar a más principiantes cuantitativos a reducir el umbral de entrada y aumentar su interés en el trading cuantitativo, ¡para que todos puedan convertirse en traders cuantitativos!

Dicho esto, no hay absolutamente ningún problema con la programación visual como trampolín hacia el aprendizaje cuantitativo, pero también tiene sus propias limitaciones, como la incapacidad de desarrollar estrategias comerciales demasiado complejas y sofisticadas. ¡Pero esto no afecta tu primer paso en el trading cuantitativo!

Vista previa de la siguiente sección

Desde la perspectiva de la profesionalidad del trading cuantitativo, tanto el lenguaje Mai como el lenguaje visual son sólo lenguajes de transición para entrar en el mundo del trading cuantitativo. Sus características lingüísticas determinan sus limitaciones en el desarrollo de estrategias comerciales cuantitativas, y es poco probable que se implementen algunas estrategias complejas. Entonces, en la siguiente sección le enseñaremos JavaScript, que es un lenguaje de programación formal de alto nivel y la única forma de avanzar hacia el trading cuantitativo avanzado.

Tarea

  1. Intente implementar el indicador de Bandas de Bollinger utilizando lenguaje visual.
  2. Intente utilizar el módulo de trading de esta sección para completar una estrategia de trading.

Capítulo 4 Implementación de estrategias comerciales en los principales lenguajes de programación

4.1 Inicio rápido del lenguaje JavaScript

resumen

Como futura estrella del trading cuantitativo, es imposible para usted simplemente aprender un lenguaje simple. Si bien el lenguaje Mai y el lenguaje de visualización de las herramientas cuantitativas del inventor pueden ayudarle a comenzar, tienen muchas limitaciones en el desarrollo de estrategias debido a sus características lingüísticas. Por lo tanto, si desea afianzarse en el trading cuantitativo, deberá aprender un lenguaje de programación formal.

¿Por qué aprender JavaScript?

En comparación con los lenguajes visuales, JavaScript tiene un mayor rendimiento y eficiencia de ejecución. Y en términos de desarrollo de estrategia, JavaScript es mucho más flexible que los lenguajes visuales. Por ejemplo, si desea desarrollar una estrategia de arbitraje, no puede utilizar un lenguaje visual porque tiene módulos limitados y no admite estrategias similares al arbitraje, mientras que JavaScript puede hacer el trabajo fácilmente.

Además, JavaScript es más conciso y elegante que los lenguajes visuales. Por ejemplo, 10 líneas de código en un lenguaje visual se pueden escribir en 5 líneas en JavaScript. En cierto modo, el lenguaje visual es simplemente una versión de texto de JavaScript, y la ejecución y la lógica de su código son casi las mismas que las de JavaScript. Si aprendes un lenguaje visual, aprender JavaScript será muy fácil.

Introducción a JavaScript

JavaScript es un lenguaje de programación formal de alto nivel. Es adecuado como lenguaje introductorio para el aprendizaje de programación y también como lenguaje de trabajo para el desarrollo diario. Es uno de los lenguajes informáticos más prometedores y con mayor proyección en la actualidad, y todavía mantiene una posición dominante inquebrantable en el lado de los navegadores. Aunque es famoso por desarrollar páginas web, también se utiliza en muchos entornos que no son de navegador, como servidores, PC, dispositivos móviles, etc. ¡Por supuesto, también puede realizar transacciones cuantitativas!

Estrategia completa

Para ayudarlo a comprender rápidamente el conocimiento clave de esta sección, antes de presentar la introducción rápida del lenguaje JavaScript cuantificado del inventor, primero debe tener una comprensión preliminar de los conceptos de esta sección. Tomemos como ejemplo la estrategia de media móvil doble más simple:

Apertura de posición larga:Si no hay ninguna posición actual y el promedio móvil de 5 períodos es mayor que el promedio móvil de 20 períodos.
Abrir una posición corta:Si no hay ninguna posición actual y el promedio móvil de 5 períodos es menor que el promedio móvil de 20 períodos.
Cierre de posición larga:Si actualmente mantiene una posición larga y el promedio móvil de 5 períodos es menor que el promedio móvil de 20 períodos.
Cierre de posiciones cortas:Si actualmente mantiene una posición corta y el promedio móvil de 5 períodos es mayor que el promedio móvil de 20 períodos.

Si estuviera escrito en JavaScript, se vería así:
img
Figura 4-1

El código de la figura anterior es una estrategia comercial cuantitativa completa escrita en JavaScript. Puede ejecutarse en tiempo real y realizar pedidos automáticamente. En términos de la cantidad de código, este lenguaje es más simple que el lenguaje visual. El proceso de diseño de toda la estrategia es: establecer los tipos de mercado, obtener datos de la línea K, obtener información de posición, calcular la lógica de la transacción y colocar órdenes de compra y venta.

Identificador

Todo en JavaScript (variables, nombres de funciones y operadores) distingue entre mayúsculas y minúsculas, lo que significa que el nombre de la variable test y el nombre de la variable Test son dos variables diferentes. El primer carácter de un identificador (nombre de una variable, función, propiedad, parámetro de función) debe ser una letra, un guión bajo (_), el signo de dólar ($) y los siguientes caracteres también pueden ser números, como se muestra en la siguiente figura:
img
Figura 4-2

Comentarios

Los comentarios incluyen comentarios de una sola línea y comentarios a nivel de bloque. Los comentarios de una sola línea comienzan con dos barras, y los comentarios en bloque comienzan con una barra y un asterisco (/) y termina con un asterisco y una barra (/) como se muestra a continuación:
img
Figura 4-3

Declaraciones

Cada declaración termina con un punto y coma; Aunque no es obligatorio, te recomendamos que nunca lo omitas. Agregar punto y coma puede aumentar el rendimiento del código en algunos casos, como se muestra en la siguiente figura:
img
Figura 4-4

Las variables

Las variables pueden almacenar cualquier tipo de datos. Para crear una variable, utilice el operador var seguido del nombre de la variable. Al definir una variable, también puedes establecer su valor. Una vez que se crea una variable, no es necesario utilizar el operador var para establecer nuevamente el valor de la variable, como se muestra a continuación:
img
Figura 4-5

datos

JavaScript tiene un total de 5 tipos de datos, a saber: Indefinido, Nulo, Booleano, Número y Cadena, como se muestra en la siguiente figura:
img
Figura 4-6

Undefined tiene solo un valor, el especial "undefined", que representa un valor que aún no se ha establecido. Por ejemplo, si solo definimos una variable y no le asignamos un valor, el valor de la variable será "indefinido".

Null tiene solo un valor, el "null" especial, que representa un valor que se establece como vacío. Por ejemplo, si primero creamos una variable y luego establecemos el valor de la variable en "nulo", entonces el valor devuelto por la variable será "nulo".

Boolean tiene dos valores, "verdadero" y "falso". "verdadero" representa verdadero y "falso" representa falso. Tenga en cuenta que tanto "verdadero" como "falso" están en minúsculas.

Número es el tipo de número, incluyendo: números positivos, números negativos, enteros, decimales, etc. Además, "NaN" también es un número especial que indica específicamente la situación en la que no se devuelve ningún valor, por ejemplo: 1 dividido por 0 devuelve "NaN".

Puede entender String como texto, incluidos chino e inglés, y puede construir una cadena utilizando comillas simples o comillas dobles. Por ejemplo: "fmz" o "cuantización de inventor".

Objeto

Puedes pensar en un objeto como un contenedor para almacenar diversos datos, en el que los atributos y valores se corresponden entre sí. Puedes crear este contenedor primero a través del nuevo operador. También puede agregar propiedades y métodos al objeto creado, como se muestra en la siguiente figura:
img
Figura 4-7

Unidad

Una matriz también es un contenedor para almacenar diversos datos, pero los elementos del contenedor están organizados en orden de izquierda a derecha. El primer elemento es 0, el segundo elemento es 1, y así sucesivamente. Además, las matrices de JavaScript pueden almacenar cualquier tipo de datos, como se muestra a continuación:
img
Figura 4-8

función

Las funciones en JavaScript son esencialmente las mismas que las funciones que aprendimos en la escuela secundaria. Puedes pensarlo como lo que se pasa y lo que se emite a través del cálculo de la función, como se muestra en la siguiente figura:
img
Figura 4-9

El operador

JavaScript tiene varios operadores, a saber, operadores aritméticos, operadores de comparación y operadores lógicos. Entre ellos, los operadores aritméticos son las operaciones matemáticas de suma, resta, multiplicación y división. Los operadores de comparación pueden comparar si dos valores son menores o menores que. Los principales operadores lógicos son: AND lógico, OR lógico y NOT lógico. Como se muestra en la siguiente figura:
img
Figura 4-10
Se debe tener en cuenta que: "&&" es un AND lógico, que significa "y". “||” es un OR lógico, que significa “o”. "¡¡ ... es una negación lógica, que significa "no":
“&&” significa que cuando todas las condiciones son “verdaderas”, la condición final será “verdadera”;
“||” significa que entre todas las condiciones, siempre que alguna de ellas sea “verdadera”, la condición final será “verdadera”.

Las prioridades

Si hay un 100*Para la expresión (10-1)/(10+5), ¿qué paso calcula primero el programa? Las matemáticas de secundaria nos dicen: ① Si se trata de una operación del mismo nivel, generalmente se calcula de izquierda a derecha. ② Si hay suma y resta, así como multiplicación y división, calcule primero la multiplicación y la división, luego la suma y la resta. ③Si hay paréntesis, calcule primero el contenido dentro de ellos. ④ Si se ajusta a las leyes de operación, estas se pueden utilizar para simplificar el cálculo. Lo mismo ocurre con la prioridad del lenguaje JavaScript, como se muestra a continuación:
img
Figura 4-11

Declaraciones condicionales

A menudo, al escribir código, necesitarás realizar diferentes acciones para diferentes decisiones. Puede utilizar declaraciones condicionales en su código para realizar esta tarea. En JavaScript, podemos utilizar las siguientes declaraciones condicionales:
Declaración if: utilice esta declaración para ejecutar código solo si una condición especificada es verdadera
Declaración if...else: ejecuta código si una condición es verdadera y ejecuta otro código si la condición es falsa
Declaración if...else if....else: utilice esta declaración para seleccionar uno de varios bloques de código para ejecutar
Declaración switch: utilice esta declaración para seleccionar uno de varios bloques de código para ejecutar

Declaración If

Esta declaración ejecuta código sólo si una condición especificada es verdadera. Por favor, utilice minúsculas si. ¡El uso de letras mayúsculas (SI) generará un error de JavaScript! Como se muestra en la siguiente figura:
img
Figura 4-12#

Declaración if...else

Cuando la condición es verdadera, se ejecuta el código, y cuando la condición es falsa, se ejecuta otro código, como se muestra en la siguiente figura:
img
Figura 4-13

bucle for

A veces necesitamos obtener los datos de la línea K de los últimos días y necesitamos obtenerlos de la matriz de la línea K en secuencia de acuerdo con la posición de los datos de la línea K. Entonces es muy conveniente utilizar un bucle for, como se muestra en la siguiente figura:
img
Figura 4-14

Bucle While

Todos sabemos que el mercado está cambiando constantemente. Si desea obtener la última matriz K-line, debe ejecutar el mismo código una y otra vez. Luego usa el bucle whilex. Mientras la condición especificada sea verdadera, el bucle siempre puede obtener la última matriz de K líneas.
img
Figura 4-15

sentencia break y sentencia continue

El bucle tiene una condición previa. Sólo cuando la condición previa sea "verdadera" el bucle comenzará a hacer algo repetidamente, y el bucle no finalizará hasta que la condición previa sea "falsa". Sin embargo, la declaración break puede salir inmediatamente del bucle durante la ejecución del mismo; La instrucción continue puede interrumpir un determinado bucle y luego continuar el siguiente. Como se muestra en la siguiente figura:
img
Figura 4-16

declaración de retorno

La declaración de retorno finaliza la ejecución de una función y devuelve el valor de la función. La declaración de retorno solo puede aparecer en el cuerpo de una función. Si aparece en cualquier otra parte del código, provocará un error de sintaxis.
img
Figura 4-17

Marco de estrategia de CTA

En la herramienta cuantitativa de Inventor, es muy conveniente escribir estrategias en JavaScript. El funcionario ha incorporado un conjunto de marcos de estrategia estándar, como se muestra en la siguiente figura:
img
Figura 4-18

Como se muestra en el código anterior, este es un marco de estrategia estándar. A excepción del "código de producto de futuros de materias primas", que se puede modificar, todo lo demás tiene un formato fijo. La mayor ventaja de utilizar el marco para escribir estrategias es que solo necesitas escribir la lógica de la estrategia. El marco se encarga de otras cuestiones, como la adquisición de mercado, el procesamiento de pedidos, etc. Esto le permitirá centrarse en el desarrollo de la estrategia.

Resumir

Lo anterior es una introducción rápida al lenguaje JavaScript. Después de aprenderlo, podrás programar estrategias comerciales cuantitativas. Si necesita escribir estrategias más complejas, puede consultar la documentación de la API del lenguaje JavaScript de la herramienta cuantitativa Inventor.

Vista previa de la siguiente sección

El day trading también es un modelo de trading. Este método no mantiene posiciones durante la noche, por lo que el riesgo de volatilidad del mercado es menor. Una vez que aparecen condiciones desfavorables en el mercado, se pueden realizar ajustes a tiempo. Después de aprender el lenguaje JavaScript en esta sección, en la siguiente sección le mostraremos cómo escribir una estrategia de trading cuantitativo intradía factible.

Tarea

  1. Intente utilizar el lenguaje JavaScript en la herramienta cuantitativa de Inventor para obtener datos históricos de la línea K.
  2. Intente escribir el código de estrategia al comienzo de esta sección y agregue comentarios.

4.2 Cómo implementar estrategias de trading utilizando el lenguaje JavaScript

resumen

En el artículo anterior, explicamos los requisitos previos para implementar estrategias comerciales desde los aspectos de la introducción del lenguaje JavaScript, la sintaxis básica, el marco de la estrategia CTA, etc. En este artículo, continuaremos el contenido del artículo anterior y lo ayudaremos a implementar una estrategia comercial cuantitativa intradía factible paso a paso a partir de los módulos de estrategia y los indicadores técnicos de uso común.

Introducción a la estrategia

Las Bandas de Bollinger también se llaman Canales de Bollinger, abreviado como BOLL en inglés. Es uno de los indicadores técnicos más utilizados y fue inventado por John Bollinger en la década de 1980. En teoría, los precios siempre fluctúan dentro de un cierto rango alrededor del valor. Basándose en este fundamento teórico, las Bandas de Bollinger introdujeron el concepto de "canal de precios".

El método de cálculo consiste en utilizar principios estadísticos para calcular primero la "desviación estándar" del precio durante un período de tiempo y luego sumar/menos 2 veces la desviación estándar del promedio móvil para encontrar el "intervalo de confianza" del precio. Su forma básica es un canal de franja compuesto por tres líneas de vía (vía intermedia, vía superior y vía inferior). La pista intermedia es el costo promedio del precio, y las pistas superior e inferior representan la línea de presión y la línea de soporte del precio respectivamente.

Debido a la adopción del concepto de desviación estándar, el ancho de la Banda de Bollinger se ajustará dinámicamente de acuerdo con las fluctuaciones recientes de precios. Cuando la volatilidad es pequeña, las bandas de Bollinger se volverán más estrechas; Cuando la volatilidad es grande, las bandas de Bollinger se volverán más anchas. Cuando el canal BOLL se vuelve más estrecho, significa que el precio está volviendo gradualmente a la media. Cuando el canal BOLL cambia de estrecho a ancho, significa que el mercado comienza a cambiar. Si el precio cruza la pista superior, indica que el poder adquisitivo ha aumentado. Si el precio cruza la pista inferior, indica que el poder de venta ha aumentado.

Método de cálculo del indicador de bandas de Bollinger

Entre todos los indicadores técnicos, el método de cálculo de las Bandas de Bollinger es uno de los más complicados, ya que introduce el concepto de desviación estándar en la estadística e implica el cálculo de la línea media (MB), la línea superior (UP) y la línea inferior (DN). El método de cálculo es el siguiente:

Vía intermedia = Promedio móvil simple durante N períodos de tiempo
Pista superior = Vía intermedia + K × desviación estándar de N períodos de tiempo
Riel inferior = Vía intermedia − Desviación estándar de K × N períodos de tiempo
img
Figura 4-19

Lógica de estrategia

Hay muchas formas de utilizar las bandas de Bollinger. Se pueden utilizar solos o en combinación con otros indicadores. En este tutorial utilizaremos el método más simple de utilizar las Bandas de Bollinger. Es decir: cuando el precio rompe la pista superior de abajo hacia arriba, es decir, rompe la línea de presión superior, creemos que la fuerza alcista se está haciendo más fuerte, se ha formado una ola de mercado ascendente y se genera una señal de apertura de compra; Cuando el precio cae por debajo de la pista inferior de arriba a abajo, es decir, cae por debajo de la línea de soporte, creemos que la fuerza bajista se está haciendo más fuerte, se ha formado una ola de tendencia descendente y se genera una señal de apertura de venta.
img
Figura 4-20

Si después de abrir una posición de compra, el precio vuelve a caer a la trayectoria media de las Bandas de Bollinger, creemos que la fuerza alcista se está debilitando, o la fuerza bajista se está fortaleciendo, y se genera una señal de cierre de venta; Si después de abrir una posición de venta, el precio vuelve a la trayectoria media de las Bandas de Bollinger, creemos que la fuerza bajista se está debilitando, o la fuerza alcista se está fortaleciendo, y se genera una señal de cierre de compra.

Condiciones comerciales

Apertura de posición larga:Si no hay posición, y el precio de cierre es mayor que el de la pista superior, y la hora no es 14:45
Abrir una posición corta:Si no hay posición, y el precio de cierre es menor que el de la pista inferior, y la hora no es 14:45
Cierre de posición larga:Si mantiene una orden larga y el precio de cierre es menor que el precio medio, o la hora es 14:45
Cierre de posiciones cortas:Si mantiene una orden corta y el precio de cierre es mayor que el precio medio, o la hora es 14:45

Implementación del código de estrategia

Para implementar una estrategia, primero debemos considerar ¿qué datos necesitamos? ¿A través de qué API obtenerlo? Entonces ¿cómo calcular la lógica de la transacción? Finalmente, ¿qué métodos se utilizan para realizar pedidos y negociar? A continuación, vamos a implementarlo paso a paso:

Paso 1: Utilice el marco de estrategia de CTA

El llamado marco de estrategia CTA es un marco estándar lanzado oficialmente por Inventor Quantitative. Al utilizar este marco, no tendrá que preocuparse por los problemas triviales del desarrollo de estrategias comerciales cuantitativas y podrá centrarse directamente en la programación de la lógica comercial. Por ejemplo, si no utiliza este marco, al realizar un pedido, debe considerar la transferencia mes a mes, los precios de compra y venta de pedidos, la cancelación de pedidos o el seguimiento cuando la orden no se ejecuta, etc.
img
Figura 4-21

La imagen de arriba es el marco de la estrategia CTA utilizando las herramientas cuantitativas del inventor. Este es un formato de código fijo y todos los códigos de lógica de transacción se escriben a partir de la línea 3. Durante el uso, a excepción del código de variedad (amarillo claro), no se requieren otros cambios.

Cabe señalar que el código de producto en la figura anterior es "rb000/rb888", lo que significa que los datos de señal usan "rb000", los datos de transacción usan "rb888" y el cambio de mes es automático. Por supuesto, también puede especificar un código de producto específico, como el código de producto "rb1910", lo que significa que tanto los datos de señal como los datos de transacción utilizan "rb1910".

FMZ tiene una biblioteca de comercio de futuros de materias primas en JavaScript incorporada. Puede usarlo en su código simplemente haciendo clic en la referencia en la interfaz de edición de estrategia:
img

Paso 2: Obtener varios datos

Piénsalo detenidamente, ¿qué datos necesitas? A partir de nuestra lógica de estrategia comercial, descubrimos que: primero debemos obtener el estado actual de la posición, luego comparar la relación entre el precio de cierre y las pistas superior, media e inferior del indicador de Banda de Bollinger, y finalmente determinar si el mercado está a punto de cerrar. Así que obtengamos estos datos.

Obtención de datos de la línea K

El primer paso es obtener la matriz de líneas K y el precio de cierre de la línea K anterior, porque solo con la matriz de líneas K se puede calcular el indicador de Bandas de Bollinger. Así es como se ve en el código:
img
Figura 4-22

Como se muestra en la figura anterior:
Línea 4: obtiene la matriz de K líneas, que tiene un formato fijo.
Línea 5: Filtra la longitud de la línea K, porque el parámetro que usamos para calcular el indicador de Banda de Bollinger es 20. Cuando la línea K es menor que 20, no se puede calcular el indicador de Banda de Bollinger. Por lo tanto, necesitamos filtrar la longitud de la línea K aquí. Si hay menos de 20 líneas K, regresaremos directamente y continuaremos esperando la siguiente línea K.
Línea 6: De la matriz de K-line obtenida, primero obtenga el objeto de la K-line anterior y luego obtenga el precio de cierre del objeto. Obtener el segundo último elemento de una matriz, que es la longitud de la matriz menos 2 (r[r.longitud - 2]); Los elementos de la matriz de líneas K son todos objetos que contienen el precio de apertura, el precio más alto, el precio más bajo, el precio de cierre, el volumen de operaciones y el tiempo. Para obtener el precio de cierre, simplemente agregue "." y el nombre del atributo al final (r[r.length - 2].Close)。

Obtener datos de tiempo de la línea K

Debido a que utilizamos una estrategia intradía, necesitamos cerrar la posición antes del cierre del mercado, por lo que debemos determinar si la línea K actual está cerca del cierre del mercado. Si es así, cerramos la posición. Si no es así podemos abrir la posición. El código es el siguiente:
img
Figura 4-23

Como se muestra en la figura anterior:
Línea 8: Obtenga el atributo de marca de tiempo de la línea K actual y luego cree un objeto de tiempo (new Date(timestamp)).
Línea 9: Calcula las horas y los minutos en función del objeto de tiempo y determina si la hora de la línea K es 14:45.

Obtener datos de posición

La información de posición es una condición muy importante en las estrategias de trading cuantitativo. Cuando se cumplen las condiciones comerciales, también es necesario determinar si se debe colocar una orden en función del estado de la posición y el número de posiciones. Por ejemplo: cuando se cumplen las condiciones para abrir una posición de compra, si tienes una posición, no necesitas volver a colocar una orden; Si no tienes una posición, puedes realizar un pedido. Así es como se ve en el código:
img
Figura 4-24
Como se muestra en la figura anterior:
Línea 11: Obtener el estado de la posición actual. Si hay varios pedidos, el valor es 1; si hay órdenes cortas el valor es -1; Si no hay posiciones, el valor es 0.

Obtener datos de las bandas de Bollinger

A continuación, debe calcular los valores de las pistas superior, media e inferior del indicador de bandas de Bollinger. Luego, primero debes obtener la matriz de bandas de Bollinger y luego obtener los valores de las bandas superior, media e inferior de la matriz. En la herramienta cuantitativa Inventor, es muy sencillo obtener la matriz de bandas de Bollinger. Puede llamar directamente a la API de Bandas de Bollinger. La parte difícil es obtener los valores de las pistas superior, media e inferior, porque la matriz de bandas de Bollinger es una matriz bidimensional.

La matriz bidimensional en realidad es muy fácil de entender. Es una matriz dentro de una matriz. Entonces, el orden de adquisición es: primero obtener la matriz especificada en la matriz y luego obtener el elemento especificado de la matriz especificada, como se muestra en la siguiente figura:
img
Figura 4-25

Como se muestra en la figura a continuación, las líneas 13 a 19 utilizan código para obtener los valores de los rieles superior, medio e inferior de las Bandas de Bollinger. Entre ellos, la línea 13 utiliza directamente la API de la herramienta cuantitativa del inventor para obtener directamente la matriz de bandas de Bollinger; Las líneas 14 a 16 obtienen primero la matriz de riel superior, la matriz de riel medio y la matriz de riel inferior en la matriz bidimensional respectivamente; Las líneas 17 a 19 obtienen los valores del riel superior, riel medio y riel inferior de la Banda de Bollinger de la línea K anterior de la matriz del riel superior, la matriz del riel medio y la matriz del riel inferior respectivamente.
img
Figura 4-26

Paso 3: Realizar un pedido

Con los datos anteriores, puede escribir la lógica comercial y el código para realizar órdenes. El formato también es muy sencillo. La instrucción más utilizada es la "declaración if", que se puede describir en palabras como: si se cumplen las condiciones 1 y 2, realizar un pedido; Si se cumple la condición 3 o la condición 4, realice un pedido. Como se muestra en la siguiente figura:
img
Figura 4-27

En la imagen de arriba, las líneas 21 a 24 son la lógica comercial y los códigos de colocación de órdenes. De arriba a abajo son: cerrado largo, cerrado corto, abierto largo, abierto corto.

Si tomamos como ejemplo la apertura de una posición larga (línea 23), esta es una "declaración if". Si solo se ejecuta una línea de código en esta declaración, se pueden omitir las llaves "{}". Esta declaración se traduce al texto como: Si la posición actual es 0, y el precio de cierre es mayor que la pista superior, y la hora de la línea K no es 14:45, entonces "devuelve 1".

Las personas cuidadosas pueden encontrar que hay "return 1" y "return -1" en estas líneas. Este es un formato fijo, lo que significa: si es una compra, escribe "return 1"; Si es una venta escribe "return -1". Abrir una posición larga y cerrar una posición corta son ambas compras, así que escribe "return 1"; Abrir una posición corta y cerrar una posición larga son ambas ventas, así que escribe "return -1".

Código de estrategia completo

En este punto, se ha escrito un código de estrategia completo. Si el marco comercial, los datos comerciales, la lógica comercial, la colocación de órdenes, etc. se escribieran por separado, ¿no sería muy simple? El siguiente es el código completo de esta estrategia:
img
Figura 4-28

Hay dos puntos a tener en cuenta: intentar (pero no necesariamente) escribir la lógica de la estrategia de manera que cuando se cumplan las condiciones de la línea K raíz, se coloquen las órdenes de la siguiente línea K, o cuando se cumplan las condiciones de la línea K anterior, se coloquen las órdenes de la siguiente línea K. De esta manera, los resultados del backtest no serán muy diferentes de los resultados reales. No es necesario escribirlo de esta manera, pero debes prestar atención a si la lógica de la estrategia es correcta. En términos generales, la lógica de cierre de una posición debe escribirse antes de la lógica de apertura de una posición. El propósito de hacer esto es hacer que la lógica de la estrategia sea lo más consistente posible con sus expectativas. Por ejemplo: si la lógica de la estrategia alcanza a la posición inversa, la regla de la posición inversa es cerrar la posición primero y luego abrir una nueva. En lugar de abrir primero una nueva posición y luego cerrarla. Si escribimos la lógica de cierre directamente antes de la lógica de apertura, este problema no ocurrirá.

Resumir

Arriba, hemos aprendido cada paso del desarrollo de una estrategia completa de trading cuantitativo intradía, incluyendo: introducción a la estrategia, método de cálculo del indicador de Banda de Bollinger, lógica de la estrategia, condiciones de compra y venta, implementación del código de la estrategia, etc. A través de este caso de estrategia, no solo puede familiarizarse con el método de programación de la herramienta cuantitativa del inventor, sino también adaptarlo a diferentes estrategias basadas en esta plantilla.

Las estrategias de trading cuantitativo no son más que resúmenes de experiencias o sistemas de trading subjetivos. Si escribimos las experiencias o sistemas utilizados en el trading subjetivo antes de escribir las estrategias, y luego los traducimos a códigos uno por uno, descubriremos que escribir estrategias será mucho más fácil. ¡Probar!

Vista previa de la siguiente sección

En el desarrollo de estrategias comerciales cuantitativas, si solo puede elegir un lenguaje de programación, entonces, sin dudarlo, debe elegir Python. Desde la adquisición de datos hasta el backtesting de estrategias y el trading, Python ha cubierto toda la cadena comercial. Ocupa una posición importante en el campo de la inversión cuantitativa financiera. En el próximo curso aprenderemos los conocimientos básicos del lenguaje Python.

Tarea

  1. Intente utilizar los conocimientos de esta sección para implementar una estrategia de doble media móvil.
  2. Intente implementar el algoritmo indicador KDJ utilizando el lenguaje JavaScript en la herramienta cuantitativa Inventor.

4.3 Introducción rápida al lenguaje Python

resumen

En el desarrollo de estrategias comerciales cuantitativas, si solo puede elegir un lenguaje de programación, entonces, sin dudarlo, debe elegir Python. Desde la adquisición de datos hasta el backtesting de estrategias y el trading, Python ha cubierto toda la cadena comercial. Ocupa una posición importante en el campo de la inversión cuantitativa financiera. En este curso aprenderemos los conocimientos básicos del lenguaje Python.

¿Por qué aprender tantos lenguajes de programación?

Mirando hacia atrás en los cursos anteriores, hemos aprendido un total de: lenguaje Mai, lenguaje visual, lenguaje JavaScript, incluyendo el lenguaje Python que se aprenderá en esta sección. Algunos amigos pueden tener preguntas. Estoy aquí para aprender trading cuantitativo, ¿por qué tengo que aprender tantos lenguajes de programación?

De hecho, cada lenguaje de programación tiene sus propias características y no hay distinción entre lenguajes buenos y malos. Depende más de qué lenguaje de programación sea más adecuado para su estrategia y si este lenguaje de programación es adecuado para usted. Hay un dicho que dice que sólo puedes saberlo si lo intentas tú mismo. Es por eso que hemos dedicado tanto espacio a hablar sobre lenguajes de programación. Si quieres hacer bien tu trabajo, primero debes afilar tus herramientas.

Al mismo tiempo, también nos comprometemos a abrir la puerta a la investigación cuantitativa para todos y a popularizar el conocimiento de varios lenguajes de programación. La investigación cuantitativa no es tan misteriosa ni está tan fuera de nuestro alcance como imaginamos. Creo que la investigación cuantitativa se volverá popular y accesible para el público general en el futuro.

¿Por qué elegir Python para el trading cuantitativo?

El proceso de comercio cuantitativo no es más que adquirir datos, analizarlos y calcularlos, procesarlos, etc. En términos de análisis de datos, ningún otro lenguaje puede ser tan bueno en los cálculos y mantener el rendimiento como Python. Especialmente en el procesamiento de datos de análisis de series de tiempo (K-line son datos de series de tiempo), Python tiene la ventaja de ser más simple y más conveniente. Además, en comparación con otros lenguajes de programación, Python es más conciso y fácil de aprender. Leer un buen programa en Python se siente como leer inglés.

Cinco razones para elegir Python

1. La aplicación cuantitativa es extensa:

Tanto Quantopian en Estados Unidos como Inventor Quant en China pueden utilizar el lenguaje Python.

2. Fácil de aprender:

La filosofía de diseño de Python está centrada en el usuario y es un lenguaje interpretado fácil de depurar.

3. Libre y de código abierto:

Sin costo de uso, código fuente abierto compartido y mayor eficiencia de aprendizaje y uso.

4. Biblioteca rica:

Tratamiento de datos, computación de datos, visualización, análisis estadístico, análisis técnico, aprendizaje automático...

5. Interfaz de la aplicación:

Interfaces para adquirir, almacenar, llamar y colocar órdenes basadas en información del mercado en tiempo real de las principales plataformas.

Estrategia completa

Para ayudarlo a comprender rápidamente el conocimiento clave de esta sección, antes de presentar la introducción rápida del lenguaje JavaScript cuantificado del inventor, primero debe tener una comprensión preliminar de los conceptos de esta sección. Tomemos como ejemplo la estrategia de media móvil doble más simple:

Apertura de posición larga:Si no hay ninguna posición actual y el promedio móvil de 5 períodos es mayor que el promedio móvil de 20 períodos.
Abrir una posición corta:Si no hay ninguna posición actual y el promedio móvil de 5 períodos es menor que el promedio móvil de 20 períodos.
Cierre de posición larga:Si actualmente mantiene una posición larga y el promedio móvil de 5 períodos es menor que el promedio móvil de 20 períodos.
Cierre de posiciones cortas:Si actualmente mantiene una posición corta y el promedio móvil de 5 períodos es mayor que el promedio móvil de 20 períodos.

Si estuviera escrito en Python, se vería así:
img
Figura 4-29

El código de la figura anterior es una estrategia comercial cuantitativa completa escrita en Python. Puede ejecutarse en tiempo real y realizar pedidos automáticamente. En términos de cantidad de código, Python es más que JavaScript, porque no utilizamos el marco comercial CTA.

Sin embargo, el proceso de diseño de toda la estrategia es casi el mismo: establecer los tipos de mercado, obtener datos de la línea K, obtener información de la posición, calcular la lógica comercial y colocar órdenes de compra y venta. En otras palabras, aunque la sintaxis de programación es diferente, la lógica de estrategia escrita es la misma, así que a continuación, ¡aprendamos la sintaxis básica de Python!

Selección de versión

Hay dos versiones de Python, a saber: Python2 y Python3. Una vez hubo un chiste que decía que Python es como un arma de dos cañones, pero solo puedes usar un cañón para disparar balas a la vez, pero nunca sabrás cuál es más preciso. Entonces, si eres nuevo en Python, se recomienda aprender Python 3 directamente porque es la versión más reciente y ha sido mantenida por la comunidad de Python. Nuestros cursos también se imparten en Python 3.

Identificador

El identificador es el nombre de la variable, como por ejemplo prueba, Test, test10,demo, etc. Todo en Python (variables, nombres de funciones y operadores) distingue entre mayúsculas y minúsculas, lo que significa que el nombre de variable test y el nombre de variable Test son dos variables diferentes. El primer carácter de un identificador (nombre de una variable, función, propiedad, parámetro de función) debe ser una letra, un guión bajo (), los caracteres que le siguen también pueden ser números, como se muestra en la siguiente figura:
img
Figura 4-30

Comentarios

Un comentario es una traducción o explicación de una línea de código. Las reglas son muy simples e incluyen comentarios de una sola línea y comentarios a nivel de bloque. Un comentario de una sola línea comienza con un signo de almohadilla (#), y un comentario de bloque comienza con tres comillas simples (''') o tres comillas dobles (""") y termina con tres comillas simples (''') o tres comillas dobles ("""), como se muestra en la siguiente figura:
img
Figura 4-31

Líneas y sangrías

La característica más distintiva de Python es el uso de sangría para indicar bloques de código, sin la necesidad de llaves {}. La cantidad de espacios para sangría es variable, pero las declaraciones en el mismo bloque de código deben contener la misma cantidad de espacios para sangría. Como se muestra a continuación: En este caso, el programa informará un error. Incluso si la condición if es verdadera, no se emitirá "True", porque Python detectará automáticamente si la sintaxis del código es correcta antes de que se ejecute el código. Si el formato del código es incorrecto, el programa no se ejecutará. La razón es que la quinta línea de código no tiene un formato de sangría de código unificado. La sangría de cuatro espacios es un formato fijo para Python y todos deben estar familiarizados con él.
img
Figura 4-32

Las variables

Las variables pueden almacenar cualquier tipo de datos. Simplemente escribiendo el nombre de la variable se crea la variable. Sin embargo, al crear una variable, es necesario establecer el valor de la variable al mismo tiempo, de lo contrario, el programa informará un error. El lado izquierdo del operador de signo igual (=) es un nombre de variable, y el lado derecho del operador de signo igual (=) es el valor almacenado en la variable. Como se muestra en la siguiente figura: name2 es el nombre de la variable y "cuantificación del inventor" es el valor de la variable. Si no establece un nuevo valor para name2, el valor de name2 siempre será "cuantificación del inventor".
img
Figura 4-33

datos

Python tiene seis tipos de datos, tres de los cuales son inmutables y tres son mutables. Como su nombre lo indica, una vez que se crean datos inmutables, su valor no se puede cambiar y su dirección en la memoria es única; Los datos mutables son una referencia a una dirección en la memoria y, si su valor cambia, su dirección de memoria permanece sin cambios.
Datos inmutables (3): Número, Cadena, Tupla;
Datos mutables (3): Lista, Diccionario, Conjunto.
img
Figura 4-34

Los números

Los tipos numéricos de Python admiten int (entero), float (punto flotante), bool (booleano) y complex (número complejo). La función type() incorporada se puede utilizar para consultar el tipo de objeto al que hace referencia una variable. Como se muestra a continuación:
img
Figura 4-35

El operador

Como la mayoría de los lenguajes, las matemáticas en Python son sencillas. Ya sean operadores aritméticos, operadores de comparación u operadores lógicos, todos son iguales a los que aprendimos en la escuela. Entre ellos, los operadores aritméticos son las operaciones matemáticas de suma, resta, multiplicación y división. Los operadores de comparación pueden comparar si dos valores son menores o menores que. Los principales operadores lógicos son: AND lógico, OR lógico y NOT lógico. [¿Puede hablar brevemente sobre las cadenas comúnmente utilizadas en las estrategias comerciales?] Por ejemplo, en nuestras estrategias comerciales, la cadena más utilizada es el código del producto, como: "rb1910", "MA1910".
img
Figura 4-36

Cabe señalar que "y" es un AND lógico, que significa "y". "o" es un OR lógico, que significa "cualquiera". "¡¡ ... es una negación lógica, que significa "no":
"y" significa que cuando todas las condiciones son "verdaderas", la condición final es "verdadera";
"o" significa que entre todas las condiciones, siempre que alguna de ellas sea "verdadera", la condición final será "verdadera".

Las prioridades

Si hay un 100*Para la expresión (10-1)/(10+5), ¿qué paso calcula primero el programa? Las matemáticas de secundaria nos dicen: ① Si se trata de una operación del mismo nivel, generalmente se calcula de izquierda a derecha. ② Si hay suma y resta, así como multiplicación y división, calcule primero la multiplicación y la división, luego la suma y la resta. ③Si hay paréntesis, calcule primero el contenido de los paréntesis. ④ Si se ajusta a las leyes de operación, estas se pueden utilizar para simplificar el cálculo. La prioridad del idioma Mai es la misma que se muestra a continuación:
img
Figura 4-37

Booleano

Booleano representa verdadero o falso y generalmente se utiliza en juicios condicionales y declaraciones de bucle. Python define dos constantes "True" y "False" para representar verdadero y falso. De hecho, cualquier objeto puede convertirse al tipo booleano y también puede usarse directamente para el juicio condicional, como se muestra en la siguiente figura:
img
Figura 4-38

Las cadenas

Las cadenas son texto. Las cadenas, como "if1905", se utilizan a menudo al configurar códigos de producto. Las cadenas en Python se escriben entre comillas simples (') o dobles ('). El signo más + es el operador de concatenación de cadenas. Se puede obtener un carácter en una cadena según el valor del índice, como se muestra a continuación:
img
Figura 4-39

Lista

La lista es el tipo de dato más utilizado en Python. Puedes pensar en una lista como un contenedor, excepto que los elementos del contenedor están organizados en orden de izquierda a derecha. El primer elemento es 0, el segundo elemento es 1, y así sucesivamente. Además, las listas de Python pueden almacenar cualquier tipo de datos, como se muestra a continuación:
img
Figura 4-40

función

Las funciones en Python son esencialmente las mismas que las funciones que aprendimos en la escuela secundaria. Puedes pensarlo como lo que se pasa y lo que se emite a través del cálculo de la función, como se muestra en la siguiente figura:
img
Figura 4-41

Declaración de si

Si a menudo aparecen en nuestra vida frases como: Si hoy llueve, sostendré un paraguas. Es decir, la declaración ejecutará el código sólo cuando la condición especificada sea Verdadera. ¡Nota: preste atención al formato de sangría del código, de lo contrario se generará un error de Python! Como se muestra en la siguiente figura:
img
Figura 4-42

instrucción if...else

Las declaraciones if...else también son declaraciones de uso común, por ejemplo: Si llueve hoy, sostendré un paraguas; De lo contrario, no sostendré un paraguas. La instrucción else es una extensión de la instrucción if, es decir, el código que sigue a else se ejecutará solo cuando la condición especificada sea Falso. Como se muestra en la siguiente figura:
img
Figura 4-43

Declaración de elif

Dado que Python no admite sentencias switch, Python solo puede usar sentencias elif para implementar múltiples juicios condicionales. Por ejemplo: si es una línea positiva, seré alcista; de lo contrario, si es una línea negativa, seré bajista; De lo contrario, esperaré y veré. Como se muestra en la siguiente figura:
img
Figura 4-44

bucle for

A veces necesitamos obtener los datos de la línea K de los últimos días y necesitamos obtenerlos de la matriz de la línea K en secuencia de acuerdo con la posición de los datos de la línea K. Entonces es muy conveniente utilizar un bucle for, como se muestra en la siguiente figura:
img
Figura 4-45

Bucle While

Todos sabemos que el mercado está cambiando constantemente. Si desea obtener la última matriz K-line, debe ejecutar el mismo código una y otra vez. Luego usa el bucle whilex. Mientras la condición especificada sea verdadera, el bucle siempre puede obtener la última matriz de K líneas.
img
Figura 4-46

sentencia break y sentencia continue

El bucle tiene una condición previa. Sólo cuando la condición previa sea "verdadera" el bucle comenzará a hacer algo repetidamente, y el bucle no finalizará hasta que la condición previa sea "falsa". Sin embargo, la declaración break puede salir inmediatamente del bucle durante la ejecución del mismo; La instrucción continue puede interrumpir un determinado bucle y luego continuar el siguiente. Como se muestra en la siguiente figura:
img
Figura 4-47

declaración de retorno

La declaración de retorno finaliza la ejecución de una función y devuelve el valor de la función. La declaración de retorno solo puede aparecer en el cuerpo de una función. Si aparece en cualquier otra parte del código, provocará un error de sintaxis.
img
Figura 4-48

Marco de estrategia

Puede entender la arquitectura de la estrategia como un formato fijo de la estrategia. La herramienta cuantitativa del inventor adopta un modo de sondeo. La siguiente es una arquitectura clásica de estrategia de futuros de materias primas.

Las líneas 4 a 7 son las funciones de entrada principales de todo el programa, es decir, el ordenador comienza a ejecutar el código desde la línea 4; luego ejecuta directamente la línea 5 y entra en un bucle infinito; luego, la función lógica de estrategia (onTick) y la función de dormir (Sleep) se ejecutan en el bucle infinito; La función onTick es el código en la línea 1, y puedes escribir la lógica de la estrategia en la línea 2; Sabemos que en el bucle, la velocidad de ejecución del programa es muy rápida, por lo que usar la función de suspensión (Sleep) puede pausar el programa por un tiempo. El siguiente código Sleep(500) significa que duerme durante 500 milisegundos cada vez que se completa el bucle.
img
Figura 4-49

Resumir

Lo anterior es una introducción rápida al lenguaje Python. Aunque se trata simplemente de un conocimiento básico simple, no supone ningún problema utilizarlo para escribir una estrategia de trading cuantitativa simple. Si necesita escribir estrategias más complejas, puede consultar la documentación de la API del lenguaje Python de la herramienta cuantitativa Inventor.

Vista previa de la siguiente sección

Entre las estrategias de tendencia en el campo del análisis técnico, la media móvil y la ruptura de canal son sin duda las dos escuelas principales. Aunque el objetivo es capturar la tendencia de los movimientos de precios, las filosofías comerciales y las características de riesgo de estas dos estrategias son completamente diferentes. Después de aprender la introducción al lenguaje Python en esta sección, en la siguiente sección le mostraremos cómo escribir una estrategia comercial cuantitativa para la ruptura del canal.

Tarea

  1. Intente utilizar el lenguaje Python en la herramienta cuantitativa Inventor para obtener datos históricos de la línea K.
  2. Intente escribir el código de estrategia al comienzo de esta sección y agregue comentarios.

4.4 Cómo implementar estrategias de trading usando el lenguaje Python

resumen

En el artículo anterior, aprendimos la introducción, la sintaxis básica, el marco de estrategia, etc. del lenguaje Python. Aunque el contenido sea aburrido, es una habilidad esencial para implementar tu estrategia comercial y debes aprenderla. En este artículo, aprovecharemos la oportunidad y continuaremos con los conocimientos básicos de Python del artículo anterior. Comenzaremos con una estrategia simple, aprenderemos mientras la usamos y ayudaremos a todos a realizar una estrategia comercial cuantitativa factible paso a paso.

Introducción a la estrategia

Entre muchas estrategias comerciales, la estrategia del canal de Donchian debería ser una de las estrategias de ruptura más clásicas. Era conocida ya en 1970. En ese momento, una empresa extranjera realizó pruebas de simulación e investigación sobre las principales estrategias comerciales de programas. Los resultados mostraron que, entre todas las pruebas de estrategia, la estrategia del Canal Donchian fue la más exitosa.

Más tarde, en Estados Unidos tuvo lugar el entrenamiento de comerciante "Tortuga" más famoso de la historia del trading, que tuvo un enorme éxito. En ese momento, los métodos comerciales de las "Tortugas" se mantuvieron en secreto, pero más de diez años después, cuando se hicieron públicas las "Reglas de Comercio de las Tortugas", la gente descubrió que las "Tortugas" estaban usando una versión mejorada del Canal Donchian. estrategia.

Las estrategias de trading con ruptura son adecuadas para operar con productos con tendencias relativamente suaves. El método de trading con ruptura más común es utilizar la relación de posición relativa entre el precio y los niveles de soporte y resistencia para determinar puntos específicos de compra y venta. La estrategia del Canal Donchian en esta sección se basa en este principio.

Reglas de estrategia del canal Donchian

El canal de Donchian es un indicador de tendencia, y su apariencia y señales son algo similares al indicador de bandas de Bollinger. Pero el canal de precios de Donchian se construye en base a los precios más altos y más bajos dentro de un cierto período de tiempo. Por ejemplo: calcular el valor máximo del precio más alto de las últimas 50 K líneas para formar la pista superior; calcular el valor mínimo del precio más bajo de las últimas 50 K líneas para formar la pista inferior.
Este indicador consta de tres curvas de diferentes colores. El valor predeterminado son los precios más altos y más bajos dentro de 20 períodos para mostrar la volatilidad de los precios del mercado. Cuando el canal es estrecho, significa que la volatilidad del mercado es pequeña. Por el contrario, un canal amplio significa que la volatilidad del mercado es relativamente grande.

Si el precio sube por encima de la pista superior, es una señal de compra; por el contrario, si el precio cae por debajo de la pista inferior, es una señal de venta. Dado que los canales superior e inferior se calculan utilizando los precios más altos y más bajos, en circunstancias normales, los precios rara vez suben y bajan por debajo de las líneas del canal superior e inferior al mismo tiempo. En la mayoría de los casos, los precios se mueven unilateralmente a lo largo de la trayectoria superior o inferior, o entre las trayectorias superior e inferior.

Método de cálculo del canal de Donchian

En la herramienta cuantitativa Inventor, el método de cálculo del canal de Donchian es muy simple. Puede usarlo directamente para obtener el precio más alto o el precio más bajo dentro del período especificado, como se muestra en la siguiente figura: la quinta línea es para obtener el valor máximo del precio más alto de 50 períodos y la sexta línea es para obtener el valor mínimo del precio más bajo de 50 períodos.
img
Figura 4-50

Lógica de estrategia

Existen muchas formas de utilizar el canal de Donchian. Se puede utilizar solo o en combinación con otros indicadores. En este curso utilizaremos el método más simple. Es decir, cuando el precio rompe la pista superior de abajo hacia arriba, es decir, rompe la línea de presión superior, creemos que la fuerza alcista se está haciendo más fuerte, se ha formado una ola de mercado ascendente y una señal de apertura de compra. Se genera; cuando el precio cae de arriba a abajo y rompe la pista inferior, es decir, cuando cae por debajo de la línea de soporte, creemos que el lado corto se está fortaleciendo, se ha formado una tendencia bajista y se abre una venta. Se genera la señal.
img
Figura 4-51

Si el precio vuelve a caer a la pista media del canal de Donchian después de abrir una posición larga, creemos que los alcistas se están debilitando o los bajistas se están fortaleciendo, y se genera una señal de venta; si el precio vuelve a caer a la pista media trayectoria del canal de Donchian después de abrir una posición corta, creemos que los alcistas se están debilitando o los bajistas se están fortaleciendo, y se genera una señal de venta; cuando vuelve a subir a la trayectoria media del canal de Donchian, creemos que La fuerza de los osos se está debilitando, o la fuerza de los alcistas se está fortaleciendo, y se genera una señal de compra para cerrar.

Condiciones comerciales
Apertura de posición larga:Si no hay posición y el precio de cierre es mayor que el track superior
Abrir una posición corta:Si no hay posición y el precio de cierre es menor que el precio de la pista inferior
Cierre de posición larga:Si mantiene una orden larga y el precio de cierre es menor que el precio medio
Cierre de posiciones cortas:Si mantiene una orden corta y el precio de cierre es mayor que el precio medio

Implementación del código de estrategia

El primer paso para implementar una estrategia es obtener datos, porque los datos son un prerrequisito para una estrategia comercial. ¿Imagina qué datos necesitamos? ¿Y cómo obtener estos datos? Luego diseñamos la lógica comercial en base a estos datos; Finalmente, colocamos órdenes de compra y venta de acuerdo con la lógica comercial. Los pasos específicos son los siguientes:

Paso 1: Utilice la biblioteca comercial

Puedes pensar en la biblioteca comercial como un módulo funcional. La ventaja de utilizar la biblioteca comercial es que le permite concentrarse en escribir la lógica de la estrategia. Por ejemplo: cuando utilizamos la biblioteca comercial, al abrir y cerrar posiciones, podemos utilizar directamente la API de órdenes en la biblioteca comercial; pero si no utilizamos la biblioteca de trading, al abrir y cerrar posiciones, necesitamos obtener el precio del mercado, considerar el problema de colocar órdenes pero no ejecutarlas, considerar el problema de cancelar órdenes, etc.
img
Figura 4-52

La imagen de arriba es el marco de la estrategia CTA utilizando las herramientas cuantitativas del inventor. Este es un formato de código fijo, y todos los códigos de lógica de transacción se escriben a partir de la línea 4. No se requieren modificaciones en ningún otro lugar.

La biblioteca de plantillas de JavaScript está incorporada, Python necesita copiar y guardar esta plantilla: https://www.fmz.com/strategy/24288. Luego haga clic en Referencia en la página de edición de políticas. Por supuesto, también puedes completar la estrategia sin utilizar la biblioteca de plantillas.

img

Paso 2: Obtener varios datos

Piénsalo detenidamente, ¿qué datos necesitas? A partir de nuestra lógica de estrategia comercial, descubrimos que: primero debemos obtener el estado actual de la posición, luego comparar la relación entre el precio de cierre y las pistas superior, media e inferior del indicador de Banda de Bollinger, y finalmente determinar si el mercado está a punto de cerrar. Así que obtengamos estos datos.

Obtención de datos de la línea K

El primer paso es obtener la matriz de la línea K y el precio de cierre actual de la línea K. Sólo con la matriz de K líneas podemos llamar a la API para obtener el precio más alto o más bajo de N períodos. Así es como se ve en el código:
img
Figura 4-53
Como se muestra en la figura anterior:
Línea 4: obtiene la matriz de K líneas, que tiene un formato fijo.
Línea 5: Filtra la longitud de la línea K. Como calculamos el precio más alto o más bajo de N períodos, el parámetro utilizado es 50. Cuando el número de K líneas es menor que 50, no se puede calcular. Por lo tanto, necesitamos filtrar la longitud de la línea K aquí. Si hay menos de 50 líneas K, omita este bucle y continúe esperando la siguiente línea K.
Línea 6: Usamos el código "records[len(records) - 1]" obtiene primero los últimos datos de la matriz de K-líneas, es decir, los datos más recientes de K-líneas. Estos datos son un objeto que contiene: precio de apertura, precio máximo, precio mínimo, precio de cierre, volumen de operaciones, hora y otros datos. Al ser un objeto, podemos usar directamente ".Close" para obtener el último precio de cierre de K-líneas.

Obtener datos de posición

La información de posición es una condición muy importante en las estrategias de trading cuantitativo. Cuando se cumplen las condiciones comerciales, también es necesario determinar si se debe colocar una orden en función del estado de la posición y el número de posiciones. Por ejemplo: cuando se cumplen las condiciones para abrir una posición de compra, si tienes una posición, no necesitas volver a colocar una orden; Si no tienes una posición, puedes realizar un pedido. Esta vez encapsulamos directamente la información de posición en una función, y podemos usarla simplemente llamando a esta función:
img
Figura 4-54

Como se muestra en la figura anterior:
Esta es una función que obtiene información de posición. Si es una posición corta, devuelve 0; si es una posición larga, devuelve 1; Si es una posición corta, devuelve -1. Tenga en cuenta el código de arriba:
Línea 2: Crea una función llamada mp, que no tiene parámetros.
Línea 3: Obtiene la matriz de posición, que tiene un formato fijo.
Línea 4: Determina la longitud de la matriz de posiciones. Si su longitud es igual a , debe ser una posición vacía, por lo que devuelve 0
Línea 6: use un bucle for para comenzar a recorrer la matriz. La siguiente lógica es muy simple. Si mantiene una posición larga, devuelve 1; Si mantiene una posición corta, devuelve -1.
Línea 18: Llama a la función mp que acabamos de escribir para obtener la información de posición.

Obtenga los precios más altos y más bajos de las últimas 50 mil líneas

En la herramienta cuantitativa de Inventor, puede obtenerlo directamente utilizando las funciones "TA.Highest" y "TA.Lowest" sin tener que escribir los cálculos lógicos usted mismo. Y los resultados devueltos por las funciones "TA.Highest" y "TA.Lowest" son valores específicos en lugar de matrices. Esto es muy conveniente. No sólo eso, el funcionario ha incorporado cientos de funciones indicadoras.
img
Figura 4-55

Como se muestra en la figura anterior:
Línea 19: Llamar a la función "TA.Highest" para obtener el valor máximo del precio más alto en 50 períodos
Línea 20: Llamar a la función "TA.Lowest" para obtener el valor mínimo del precio más bajo en 50 períodos
Línea 21: Calcular el valor promedio en base al valor máximo del precio más alto en 50 periodos y el valor mínimo del precio más bajo en 50 periodos

Paso 3: Realizar un pedido

Con los datos anteriores, puede escribir la lógica comercial y el código para realizar órdenes. El formato también es muy sencillo. La instrucción más utilizada es la "declaración if", que se puede describir en palabras como: si se cumplen las condiciones 1 y 2, realizar un pedido; Si se cumple la condición 3 o la condición 4, realice un pedido.
img
Figura 4-56

Como se muestra en la figura anterior:
Línea 22: Utilice la biblioteca de transacciones, que tiene un formato fijo
Líneas 23 y 24: Esta es una declaración para cerrar una posición larga, que utiliza los "operadores de comparación" y los "operadores lógicos" que aprendimos antes. Esto significa que si actualmente mantiene una posición larga y el precio de cierre es menor que el precio medio, se cerrarán todas las posiciones.
Líneas 25 y 26: Esta es una declaración para cerrar una orden corta, que utiliza los "operadores de comparación" y los "operadores lógicos" que aprendimos antes. Esto significa que si actualmente mantiene una orden corta y el precio de cierre es mayor que el precio medio, se cerrarán todas las posiciones.
Línea 27: Determinar el estado de la posición actual. Si la posición es corta, proceda al siguiente paso.
Líneas 28 y 29: Determinar si el precio de cierre es mayor que el límite superior. Si el precio de cierre sube por encima del nivel superior, compre para abrir una posición.
Líneas 30 y 31: Determinar si el precio de cierre es menor que el tramo inferior. Si el precio de cierre cae por debajo del nivel inferior, venda y abra una posición.

Resumir

Arriba, hemos aprendido cada paso del desarrollo de una estrategia comercial cuantitativa completa usando Python, incluyendo: introducción a la estrategia, método de cálculo del canal de Donchian, lógica de la estrategia, condiciones de compra y venta, implementación del código de estrategia, etc. Esta sección es solo una estrategia simple, como punto de partida. Hay más de un método. Puede superponer diferentes métodos comerciales según su propio sistema comercial para formar su propia estrategia comercial cuantitativa.

Vista previa de la siguiente sección

En el desarrollo de estrategias comerciales cuantitativas, desde la perspectiva de la velocidad de ejecución del lenguaje de programación, si preguntamos qué lenguaje es el más rápido, solo puede ser C++. Especialmente en el campo de los derivados y el comercio de alta frecuencia, C++ tiene una especificidad de lenguaje única y ventajas en los cálculos numéricos. Su velocidad se puede incrementar en varios órdenes de magnitud en comparación con JavaScript y Python. Si quieres desarrollarte en el campo de los derivados y el trading de alta frecuencia en el futuro, este será un curso que no te puedes perder.

Tarea

  1. Comience copiando e implementando las estrategias de esta sección.
  2. Intente agregar un indicador de media móvil a la estrategia en esta sección para reducir la frecuencia de las transacciones.

Capítulo 5 Estrategia: Backtesting, depuración y mejora

5.1 La importancia y los inconvenientes del backtesting

resumen

El backtesting es la mayor diferencia entre el trading cuantitativo y el trading tradicional. Basándose en datos reales del mercado ocurridos históricamente, simula rápidamente la activación de señales de estrategia y la coincidencia de transacciones para obtener informes de rendimiento y otros datos durante un período de tiempo. Es uno de los componentes más importantes del desarrollo de estrategias para acciones nacionales y extranjeras, futuros de materias primas, divisas y otros mercados.

La importancia del backtesting

En los capítulos anteriores, aprendimos los conceptos básicos de los principales lenguajes de programación y le enseñamos cómo utilizar estos conceptos básicos de programación para escribir algunas estrategias comerciales simples. Se puede decir que ya hemos recorrido más de la mitad de la larga marcha. Sin embargo, una vez escrita una estrategia, no se puede poner en práctica directamente. Todavía se requieren pruebas retrospectivas continuas, depuración, pruebas retrospectivas, depuración, y así sucesivamente, hasta que la estrategia pueda implementar completamente el contenido del modelo y funcionar sin problemas.

Desde la perspectiva de la lógica del trading cuantitativo, las estrategias se basan en realidad en una serie de conocimientos y suposiciones sobre el mercado. Las pruebas retrospectivas pueden determinar de manera eficiente si estas suposiciones son válidas y estables. ¿Qué pérdidas podrían ocurrir durante períodos históricamente inestables y cómo ayudar a tomar decisiones para prevenir esas pérdidas?

Además, desde la perspectiva de la operación comercial cuantitativa, el backtesting puede ayudar a detectar errores en la lógica de la estrategia, como funciones futuras, robo de precios, multi-ajuste, etc. Proporciona evidencia confiable de que la estrategia se puede utilizar en el comercio real.

  • Verificar la precisión de las señales comerciales.
  • Verifique la lógica de la transacción y si sus ideas son viables.
  • Descubra fallas en su sistema de trading y mejore su estrategia original.

Por lo tanto, la importancia del backtesting es restaurar el proceso comercial real de la forma más realista posible a través de datos históricos, verificar la efectividad de la estrategia, evitar pagar un precio alto por estrategias equivocadas y ayudarnos a detectar, mejorar y optimizar las estrategias comerciales.

Errores del backtesting

Señal de trampa de backtesting parpadeando:

Las estrategias comerciales se prueban retrospectivamente basándose en datos históricos estáticos. Los datos de transacciones reales son dinámicos. Por ejemplo: si el precio más alto es mayor que el precio de cierre de ayer, entonces compre para abrir una posición. En el trading real, si la línea K aún no se ha completado, el precio más alto será dinámico y la señal comercial puede oscilar de un lado a otro. Durante las pruebas retrospectivas, el motor de pruebas retrospectivas puede simular transacciones coincidentes basadas en datos históricos estáticos.

Trampa del backtesting de funciones futuras:

La función futura utiliza precios futuros, lo que significa que las condiciones actuales pueden modificarse en el futuro. La función futura también puede provocar que la señal parpadee. Por lo tanto, cualquier función tiene las características de una función futura, como por ejemplo la "función zigzag".

Como se muestra en la siguiente figura: La función ZigZag indica los puntos de inflexión de los picos y valles. Puede ajustar su valor en consecuencia según el último precio en tiempo real. Sin embargo, si el precio actual cambia, el resultado calculado por la función ZigZag también cambiará. Si se utiliza una función con una función futura, se puede establecer la señal de orden actual y se puede colocar la orden, pero es posible que la señal no se establezca después de un tiempo.
img
Figura 5-1

Trampa del backtesting: Robo de precios

El llamado robo de precios se refiere al uso de precios pasados ​​para comerciar. Por ejemplo: si el precio más alto es mayor que un precio fijo, comprar al precio de apertura. Esta condición es robar precios, porque en el mercado real, cuando el precio más alto es mayor que un precio determinado, el precio ya es una cierta distancia más alto que el precio de apertura, y en este momento no se puede comprar al precio de apertura. Pero en el backtest, hay una señal de compra y la transacción se puede completar.

Hay otra situación. Si el precio sube más y se abre más alto que el precio fijo establecido por la estrategia, la transacción se puede completar al precio fijo durante la prueba retrospectiva, pero este precio fijo obviamente no está disponible en el mercado real.

La trampa del backtesting: precios de transacción imposibles

Existen varias situaciones en las que los precios no pueden negociarse:
El primero: en el trading real, generalmente no puedes comprar cuando el precio alcanza el límite superior, y viceversa. Sin embargo, es posible realizar operaciones durante el backtest.

El segundo tipo: El mecanismo de emparejamiento de intercambio es: prioridad de precio y prioridad de tiempo. Algunas variedades suelen tener pedidos enormes al precio del mercado. Si realiza una orden de compra o venta durante una negociación real, debe esperar a que el precio del mercado se espese antes de que la transacción pueda completarse, o incluso no pueda completarse. Sin embargo, durante las pruebas retrospectivas, se pueden ejecutar órdenes de compra y venta pendientes.

El tercer tipo: si se trata de una estrategia de arbitraje, entonces el beneficio del backtesting es muy alto, porque cada vez durante el backtesting, se supone que se han aprovechado estas diferencias de precios. En realidad, muchos diferenciales de precios no se pueden aprovechar, o solo se puede aprovechar una pata. En términos generales, la pierna que no es favorable a tu dirección se ejecutará primero, por lo que debes llenar la otra pierna inmediatamente. En este momento, el deslizamiento ya no es de 1 o 2 puntos, y la propia estrategia de arbitraje gana la diferencia de precio de estos pocos puntos. Esta situación no se puede simular mediante backtesting. El beneficio real no es tan bueno como el del backtest.

El cuarto tipo: evento del cisne negro. Como se muestra en el círculo rojo en la figura a continuación, en el evento del cisne negro del tipo de cambio del franco suizo, aunque hay precios de apertura, precios más altos, precios más bajos y precios de cierre en la superficie, de hecho, en las condiciones extremas del mercado del día, el precio en el medio es vacío, una gran cantidad de órdenes de stop loss causaron estampidas, la liquidez era cero y las transacciones eran muy difíciles, pero se podían lograr stop loss en las pruebas retrospectivas.
img
Figura 5-2

Trampa del backtesting: sobreajuste

Cada vez que veo la imagen de abajo, pienso: Jajajaja... De la imagen de abajo, se puede ver que un modelo absurdo, siempre que sea lo suficientemente complejo, puede adaptarse perfectamente a los datos.
img
Figura 5-3

En el caso del trading cuantitativo, el backtesting se basa en datos históricos, pero las muestras de datos históricos son limitadas. Si la estrategia comercial tiene demasiados parámetros o la lógica comercial es demasiado complicada, la estrategia comercial se adaptará demasiado a los datos históricos.

El proceso de modelado de estrategias cuantitativas es esencialmente un proceso de búsqueda de datos locales no aleatorios a partir de una gran cantidad de datos aparentemente aleatorios. Sin la ayuda del conocimiento estadístico, es fácil caer en la trampa del sobreajuste.

Así que no te engañes a ti mismo. Si descubre que los datos fuera de la muestra no funcionan bien y piensa que es una lástima descartar el modelo o no está dispuesto a admitir que su modelo no es bueno y continúa optimizándolo con los datos fuera de la muestra hasta que funcione tan bien con ellos, al final será su dinero duramente ganado el que saldrá perjudicado.

Trampa del backtesting: sesgo de superviviente

Hay un chiste popular en Wall Street: supongamos que hay 1.000 monos participando en inversiones en el mercado. En el primer año se eliminarán 500 monos que pierdan en el mercado. En el segundo año, la mitad de los monos fueron eliminados nuevamente, quedando 250 monos. Al final del tercer año, quedaban 125 monos.
img
Figura 5-4

Para el noveno año sólo quedaba un mono. Luego lo miras, a la izquierda y a la derecha, y te parece familiar. Finalmente, cuando vi la portada de una revista financiera, de repente recordé: "Oh, ¿no es este Buffett?"

Por supuesto, esto es sólo una broma, pero ¿alguna vez has pensado que si hay 1.000 gestores de fondos, entonces después de 10 años, alrededor de 10 gestores de fondos superarán al mercado durante 10 años consecutivos? Pero esto puede estar determinado por el azar y la suerte, y no tiene nada que ver con las habilidades de los administradores de los fondos.

Al igual que el rendimiento de la prueba retrospectiva en el lado izquierdo de la imagen a continuación, creo que la mayoría de los inversores quedarán sorprendidos. Esta estrategia de inversión ha tenido un rendimiento muy sólido y casi no ha presentado caídas significativas.
img
Figura 5-5

Espera un minuto, como se muestra en la imagen de la derecha, la situación real está en el interior. Resulta que la curva de backtest de la izquierda es simplemente la de mejor rendimiento entre muchas pruebas retrospectivas. Es decir, en el backtest de la izquierda hay muchas situaciones con un rendimiento aún peor.

La trampa del backtesting: el coste del impacto

En un entorno comercial real, los precios fluctúan constantemente. Cuando ve una oportunidad comercial y realiza un pedido, es posible que el precio haya cambiado. Por lo tanto, el problema del deslizamiento es inevitable, tanto en el comercio subjetivo como en el comercio cuantitativo.

Sin embargo, el backtesting se basa en datos estáticos y es difícil simular un entorno comercial real. Por ejemplo: el precio de la orden de compra es 1050, pero el precio de la transacción real puede ser 1051. Hay muchas razones para este fenómeno, tales como: vacío de liquidez en condiciones extremas del mercado, retrasos en la red, sistemas de software y hardware, respuesta del servidor, etc.

Pruebas retrospectivas sin deslizamiento

img
Figura 5-6

Como se muestra en la figura anterior, se trata de una prueba retrospectiva sin deslizamiento. La curva de capital se ve mejor, pero hay una diferencia entre el precio de transacción real en el trading real y el precio de transacción ideal del backtest de la estrategia. Por lo tanto, para reducir este error, al realizar el backtesting de la estrategia, puedes establecer 2 puntos de deslizamiento para aumentar el precio de compra o bajar el precio de venta.

Pruebas retrospectivas con deslizamiento

img
Figura 5-7

Como se muestra en la figura anterior, para la misma estrategia, si el resultado de la prueba retrospectiva es significativamente diferente del resultado de la prueba retrospectiva sin deslizamiento después de agregar un deslizamiento de 2 saltos, significa que esta estrategia debe mejorarse o reemplazarse por una nueva. Especialmente para las estrategias con una frecuencia comercial relativamente alta, agregar un deslizamiento de 1 a 2 saltos durante la prueba retrospectiva puede hacer que la prueba retrospectiva se acerque más al entorno comercial real.

Resumir

Algunos amigos podrían preguntar, dado que puede haber tantos problemas en el trading cuantitativo, ¿cómo puedo demostrar que mi estrategia es buena? De hecho, la respuesta es muy sencilla. Antes de implementar la estrategia en la práctica, primero es necesario simular la transacción durante un período de tiempo. Si el precio de transacción de la transacción simulada es casi el mismo que el precio de transacción durante la prueba retrospectiva, entonces demuestra que no hay ningún problema con la estrategia, al menos no hay ningún problema con la lógica de la estrategia.

En cualquier caso, el backtesting es una actividad imprescindible para un desarrollador de sistemas de trading experimentado. Porque puede indicarle si una idea de estrategia puede verificarse como efectiva en transacciones históricas. Pero muchas veces el backtesting no significa rentabilidad futura. Debido a que el backtesting tiene muchos inconvenientes, no lo entenderás a menos que gastes dinero para aprender algunas lecciones. Y estas lecciones se aprenden con dinero real. Creo que leer este artículo puede al menos ayudarle a evitar muchos desvíos y trampas cuantitativas.

Tarea

  1. ¿Qué es el sobreajuste y cómo evitarlo?
  2. ¿Cuáles son algunos ejemplos de sesgo de supervivencia en la vida real?

5.2 Cómo hacer backtesting de trading cuantitativo

resumen

La importancia y trascendencia del backtesting están fuera de toda duda. Al realizar pruebas retrospectivas cuantitativas, se debe intentar mantener la estrategia en el entorno histórico real tanto como sea posible. Si se ignoran los detalles del entorno histórico, todo el backtest cuantitativo puede resultar inválido. Este artículo le explicará cómo realizar pruebas retrospectivas de trading cuantitativo.

El backtesting es equivalente a la reproducción de datos. Reproduce datos históricos de la línea K y simula reglas comerciales reales para comprar y vender y, finalmente, resume el índice de Sharpe, la tasa de reducción máxima, la tasa de rendimiento anualizada, la curva de capital y otros datos dentro de un período de tiempo. Actualmente, existen muchos software que pueden realizar backtesting, como Wenhua Finance, que tiene una gama completa de productos, VNPY, que se puede personalizar de forma flexible, etc.

Como software comercial de comercio cuantitativo, Inventor Quant viene con un motor de backtesting de alto rendimiento y adopta un marco de backtesting de bucle for (sondeo) para cálculos vectorizados, que es más rápido. También unifica los códigos para el backtesting y el trading real, resolviendo parcialmente el dilema de “backtesting fácil, trading real difícil”.

Introducción a la interfaz de backtesting

Tomemos como ejemplo la estrategia de lenguaje Mai de Inventor Quantitative y abramos el sitio web oficial de la herramienta de trading cuantitativa de Inventor (www.fmz.com). Haga clic en Centro de control, Biblioteca de estrategias, Seleccionar una estrategia, Simular backtest e ingrese a la siguiente página:
img
Figura 5-8

En la interfaz de configuración de backtest, puedes personalizarla según tus necesidades reales. Por ejemplo: establecer el tiempo de backtest, el período de la línea K, el tipo de datos (datos de nivel de simulación o datos de nivel de tiempo real. En comparación, el backtesting de datos de nivel de simulación es más rápido, mientras que el backtesting de datos de nivel de tiempo real es más preciso). Además, también puedes establecer la tarifa de backtesting y los fondos iniciales de la cuenta, etc.

Haga clic en la Biblioteca de Comercio en Idioma Mai, la primera es la pestaña Configuración de Comercio. La estrategia Mai Language en la herramienta de trading cuantitativo Inventor tiene dos métodos de ejecución de backtest, a saber: modelo de precio de cierre y modelo de precio en tiempo real. El modelo de precio de cierre significa que el modelo se ejecuta solo después de que se completa la línea K actual y la transacción se ejecuta cuando comienza la siguiente línea K. El modelo de precio en tiempo real significa que el modelo se ejecuta una vez cada vez que cambia el precio y la transacción se ejecuta inmediatamente cuando se establece la señal comercial. Como se muestra a continuación:
img
Figura 5-9

El tamaño del lote de apertura predeterminado se refiere a la cantidad de posiciones abiertas y cerradas durante las pruebas retrospectivas, y el tamaño máximo de orden de transacción única es la cantidad máxima de posiciones de apertura y cierre confiadas al motor de pruebas retrospectivas en una sola transacción. Existe una desviación entre el precio de transacción real y el precio de transacción preestablecido. Esta desviación generalmente se mueve en una dirección desfavorable para el comerciante, lo que resulta en pérdidas adicionales en la transacción, por lo que es necesario agregar deslizamiento. Los futuros de materias primas nacionales generalmente agregan 1 o 2 saltos, o incluso más, para simular un entorno comercial real.

Complete el tipo de contrato que se va a probar retrospectivamente en la opción de futuros, como rb000 o rb888. La opción real se utiliza principalmente para operaciones reales y las configuraciones predeterminadas se pueden mantener en las pruebas retrospectivas. Si se hace clic en el progreso de recuperación automática como verdadero, cuando la estrategia detiene el robot durante la operación en tiempo real, al reiniciar el robot se restaurará automáticamente la posición de la señal anterior sin volver a calcular la señal. El número predeterminado de reintentos de pedido es 20. Si un pedido falla, el sistema intentará realizarlo nuevamente. El intervalo de sondeo de la red es el intervalo de tiempo en el que el robot ejecuta el código de estrategia.
img
Figura 5-10

La opción de comercio al contado es principalmente para el comercio de moneda digital y puede mantener la configuración predeterminada en la prueba retrospectiva. Puede especificar el volumen de transacción única, el volumen mínimo de transacción, la precisión de la moneda de precios, la precisión del producto de transacción, las tarifas de manejo, el tiempo de sincronización de la cuenta, el intervalo de estadísticas de ganancias y pérdidas, etc. Además, para los intercambios de monedas digitales individuales, también puede establecer el apalancamiento múltiple y otras configuraciones relacionadas.
img
Figura 5-11

Backtesting de estrategia

Antes de realizar pruebas retrospectivas, primero determine su estrategia comercial. Aquí tomamos como ejemplo la estrategia del termostato. Esta estrategia adoptará una estrategia de tendencia en un mercado de tendencia y una estrategia volátil en un mercado volátil según las condiciones del mercado. El código fuente es el siguiente (también puedes descargarlo directamente desde el sitio web oficial de Strategy Square de Inventor Quantitative):
img
Figura 5-12
En la interfaz de prueba retrospectiva de simulación, después de configurar los ajustes de prueba retrospectiva, simplemente haga clic en el botón Iniciar prueba retrospectiva y los resultados de la prueba retrospectiva se mostrarán inmediatamente después de unas pocas decenas de segundos. En el registro de backtest, se registran la cantidad de segundos que tardó el backtest, la cantidad total de registros y la cantidad de transacciones. La información de la cuenta imprime los resultados finales del rendimiento del backtesting de la estrategia: ganancias y pérdidas promedio, ganancias y pérdidas de posición, margen, tarifas de manejo y retornos estimados, etc.
img
Figura 5-13

La columna de información de estado registra el tipo de transacción, el volumen de la posición, el precio de la posición, el último precio, el último tipo de señal, los precios más altos y más bajos después de mantener la posición, el número y la hora de actualización y la información de capital. Además, la etiqueta flotante de ganancias y pérdidas muestra la curva de capital detallada de la cuenta, así como indicadores de rendimiento comúnmente utilizados: rendimiento, rendimiento anualizado, índice de Sharpe, volatilidad anualizada y tasa máxima de reducción, que básicamente pueden satisfacer las necesidades de la mayoría de los usuarios.

Entre ellos, el indicador de rendimiento más importante es el ratio de Sharpe. Es un indicador completo que tiene en cuenta tanto el rendimiento como el riesgo. También es un indicador de referencia importante para medir un producto de fondo. En términos sencillos, significa cuánto riesgo corres por cada dólar que ganas. Por lo tanto, cuanto mayor sea el ratio de Sharpe, mejor.

Como sugiere su nombre, la volatilidad anualizada es la volatilidad diaria multiplicada por el número de días de negociación por año. Mide el riesgo de un fondo, pero definitivamente no es el riesgo total. Por ejemplo, la Estrategia A tiene una mayor volatilidad, pero ha estado fluctuando hacia arriba con una buena tasa de retorno, mientras que la Estrategia B tiene una menor volatilidad, pero se ha mantenido estable. ¿Podemos decir que la Estrategia B es mejor que la Estrategia A? Como se muestra en la siguiente figura, estrategia A:
img
Figura 5-14

Finalmente, en la columna de información de registro, se registra en detalle el estado de coincidencia de cada transacción durante el backtest, incluido el momento específico de la transacción, el intercambio, la compra y la venta, los tipos de apertura y cierre, el precio de la transacción coincidente con el motor de backtest, la cantidad de la transacción y la información impresa, etc.
img
Figura 5-15

Después de la prueba retrospectiva

Muchas veces, incluso en la mayoría de los casos, los resultados del backtesting estarán lejos de tus expectativas. Después de todo, una estrategia que genere ganancias a largo plazo, sostenidas y estables no es fácil de obtener. Requiere su capacidad para comprender el mercado.

Si la prueba retrospectiva de su estrategia arroja una pérdida, no se desanime, en realidad esto es normal. En primer lugar, verifique si la lógica de la estrategia está escrita incorrectamente, si se utilizan parámetros extremos, si hay demasiadas condiciones de apertura y cierre, etc. Si es necesario, también puede reexaminar su estrategia comercial y su filosofía comercial desde otro ángulo.

Si los resultados del backtest de su estrategia son muy buenos, la curva de capital es perfecta y el ratio de Sharpe supera 1 o incluso más. No te alegres demasiado todavía Cuando se encuentra con este tipo de situación, la mayoría de las veces se debe al uso de funciones futuras, robo de precios, sobreajuste o falla en la configuración del deslizamiento, etc. Puede utilizar datos fuera de la muestra y comercio real simulado para eliminar estos problemas.

Resumir

Lo anterior es una introducción a todo el proceso de backtesting de toda la estrategia comercial, que se puede decir que ha sido especificada hasta el último detalle. Cabe señalar que, después de todo, el backtesting de datos históricos es un entorno ideal en el que se conocen todos los riesgos. Por lo tanto, el mejor momento para realizar una prueba retrospectiva de la estrategia es atravesar un mercado alcista o bajista, y el número de transacciones efectivas no debe ser inferior a 100 veces, para evitar el sesgo de supervivencia parcial.

El mercado está en constante cambio y evolución. Una estrategia que funciona bien en pruebas retrospectivas históricas no necesariamente funcionará bien en el futuro. La estrategia no sólo puede hacer frente a los riesgos conocidos en el entorno de backtesting, sino que también necesita hacer frente a los riesgos desconocidos en el futuro. Por lo tanto, es muy necesario aumentar la resistencia al riesgo y la universalidad de la estrategia.

Tarea

  1. Intente copiar la estrategia de esta sección y realice una prueba retrospectiva del informe de rendimiento.
  2. Basándose en su propia experiencia comercial, intente mejorar y optimizar las estrategias de esta sección.

5.3 Cómo entender el informe de rendimiento del backtesting de la estrategia

resumen

Una vez completado nuestro backtest de estrategia, la herramienta de trading cuantitativo Inventor generará varios indicadores de rendimiento y gráficos de curvas de ganancias en la página web. Sin embargo, quizás porque no estamos familiarizados con la interpretación y el contenido de estos indicadores, no podemos juzgar con precisión si una estrategia es buena o mala. Este artículo comenzará con los conceptos principales de los indicadores para ayudar a todos a comprender el informe de rendimiento de backtesting de la estrategia y distinguir los pros y los contras de la estrategia. Por supuesto, la mayoría de las herramientas de trading cuantitativo tienen este tipo de informe de rendimiento de backtest, y el contenido es similar. Una vez que haya aprendido el contenido de esta sección, también será aplicable incluso si cambia a otra herramienta comercial.

Evaluación objetiva y completa

Ya sea el registro de datos comerciales reales o el informe de pruebas retrospectivas que utiliza datos históricos, la calidad del modelo se evalúa a través de estadísticas sobre las condiciones comerciales.

La pregunta clave es: ¿qué datos estadísticos se necesitan para la comparación? Veamos un ejemplo: como se muestra en la figura a continuación, suponiendo que los siguientes dos conjuntos de datos se obtienen en la prueba durante el mismo período de tiempo, ¿podemos determinar qué modelo funciona mejor?
img
Figura 5-16

La respuesta es no. La unilateralidad del sistema de evaluación llevará al sistema de comercio cuantitativo a un callejón sin salida.

El sistema de comercio debe poder pasar pruebas retrospectivas históricas antes de poder ponerse en uso. Es poco probable que un sistema de trading que no pueda pasar las pruebas retrospectivas históricas obtenga ganancias en el trading real a largo plazo. El backtesting histórico es un prerrequisito necesario para poner un sistema comercial en funcionamiento real.

Un sistema de trading que puede pasar las pruebas retrospectivas históricas no es necesariamente un buen sistema de trading, pero si no puede pasar las pruebas retrospectivas históricas, definitivamente no es un buen sistema de trading. En términos generales, debemos analizar los informes de desempeño desde la perspectiva de la estabilidad, la sostenibilidad y si cumplen con las expectativas.
img
Figura 5-17

Como se muestra en la imagen de arriba, cualquiera que haya estado expuesto al trading cuantitativo puede haber visto estos términos largos y oscuros sobre datos de rendimiento de backtesting. Entre estos datos de rendimiento, muchos son incluso contradictorios. Muchos principiantes cuantitativos están confundidos acerca de en qué datos centrarse.

Los términos de los indicadores de rendimiento en la imagen anterior se pueden dividir en varias categorías: ratios de rendimiento, análisis de ciclos, diversas curvas, análisis de trading extremo, etc. Incluso desde la perspectiva de los productos de fondos, la mayoría son solo una muestra de los resultados de los cálculos de backtest, con poca relevancia práctica, como: requisito de capital de la cuenta, ingresos por tenencia, límite de confianza, etc. Quizás incluso deba centrarse solo en los más importantes. A continuación, seleccionaré los más importantes entre los indicadores de rendimiento de backtest para una explicación detallada.

Indicadores de rendimiento importantes

Reducción máxima

La fórmula para calcular la reducción máxima es la indicada anteriormente. Para el modelo, la caída máxima es un indicador de riesgo muy importante, incluso más importante que la volatilidad. El drawdown máximo observado en el backtest también representa, en cierto sentido, la peor situación posible que puede ocurrir después de abrir una posición.

Desde un punto de vista matemático, si el capital pierde el 20%, los fondos restantes deben obtener una ganancia del 25% para restablecer la escala de capital original. Si la pérdida es del 50%, los fondos restantes deben generar una ganancia del 100% para restablecer la escala de capital antes de la pérdida.

Entonces no hay duda de que cuanto mayor sea la pérdida, menor será la posibilidad de recuperar la escala de capital inicial y mayor la dificultad. El espacio de ganancias ascendentes para los fondos es ilimitado, pero el espacio de pérdidas descendentes es limitado y la posibilidad de tocar fondo es mayor.

Independientemente de cómo se defina, al menos estos dos puntos son la interpretación predominante actual:

  1. Cuanto menor sea el retroceso máximo, mejor;
  2. La reducción es directamente proporcional al riesgo. Cuanto mayor sea la caída, mayor será el riesgo, y cuanto menor sea la caída, menor será el riesgo.

Relación rentabilidad-riesgo ajustada (RAROC)

Mucha gente no está familiarizada con este concepto. De hecho, la relación riesgo-rendimiento ajustada marca la línea divisoria entre los jugadores profesionales y los jugadores amateurs. También es una muy buena herramienta de evaluación para bancos de inversión, grandes fondos y traders profesionales, y es un estándar de evaluación común en el ámbito financiero global.

En la inversión no sólo debemos mirar las ganancias, sino también considerar cuánto riesgo se corrió para obtener esas ganancias. En términos generales, el riesgo y el rendimiento de un activo son proporcionales. Esto significa que cuando el modelo lidera en términos de rendimiento y logra avances rápidos, puede haber riesgos ocultos detrás de su gloria que aún no han surgido.

Por ejemplo, las condiciones de apertura y cierre o el aumento y disminución de posiciones en el modelo pueden tener mayores retornos cuando el mercado está en alza, pero una vez que ocurre una caída, las pérdidas se multiplicarán, resultando en enormes pérdidas. Es más, las subidas y bajadas tienen considerables impactos asimétricos.

Muchos traders cuantitativos experimentados están dispuestos a sacrificar algunos rendimientos para reducir el riesgo. En este caso, los rendimientos ajustados al riesgo son más valiosos como referencia. Por lo tanto, en el backtesting, un modelo con alto riesgo y alta volatilidad no es necesariamente un buen modelo incluso si tiene altos retornos.

Los depósitos son seguros, pero el rendimiento anual es sólo del 2%. El mercado puede hacerte ganar el 50% en unos pocos días, o puede hacerte perder el 50% en unos pocos días. Después de tantos años operando, tengo un concepto muy importante: afrontar los riesgos. Los riesgos y los beneficios nunca existen de forma aislada. Hacer trading es como salir al mar a pescar. Te resulta imposible pescar pero no quieres correr los riesgos del mar. Ser demasiado conservador y ser demasiado radical son en realidad dos extremos. Lo mismo ocurre con el diseño de modelos de estrategia.

Número de transacciones

No se pueden utilizar unos pocos meses de rendimiento de pruebas retrospectivas para probar el modelo. Si hay muy pocos datos de backtest, los resultados de backtest pueden ser accidentales, ya sea que los parámetros sean accidentales o las condiciones del mercado sean accidentales, etc. Además, los datos históricos más largos también pueden filtrar cierto sesgo de supervivencia.

En términos generales, en el caso de acciones y materias primas nacionales, los datos deben probarse retrospectivamente durante más de cinco años y, en el caso de productos recientemente listados, se requieren al menos tres años de pruebas retrospectivas. En el caso de productos o materias primas que hayan cotizado anteriormente, como el oro y el índice del dólar estadounidense, en el mercado internacional, se debería realizar una prueba retrospectiva de al menos un ciclo alcista-bajista, que generalmente debería durar más de 10 a 15 años. El período de prueba retrospectiva debe ser lo suficientemente largo para que los resultados de la prueba retrospectiva sean lo suficientemente confiables. Para los productos que no cumplen con este requisito, el valor R debe ponderarse adecuadamente al abrir una posición para reducir de forma proactiva la exposición al riesgo.

Beneficio promedio

El indicador de beneficio medio parece normal pero en realidad es muy importante. Su cálculo también es muy sencillo: Beneficio Neto / Número de Transacciones. No es exagerado decir que es un espejo que puede detectar aquellos resultados de backtest que parecen brillantes en la superficie. Como se muestra en la figura a continuación, si esta estrategia puede generar dinero, es anormal:
img
Figura 5-18
img
Figura 5-19

Si observa el rendimiento de backtest de esta estrategia, es posible que tenga una pregunta: ¿no sería una lástima no utilizar una estrategia tan casi perfecta? ¡Espera un minuto! Observe atentamente la ganancia promedio en la segunda imagen, que es solo 17, lo que significa que la ganancia promedio de cada transacción es de solo 17 yuanes.

Tomemos como ejemplo la mayoría de los productos del mercado de futuros con un salto de 10 yuanes. Cualquiera que haya realizado trading real comprenderá lo que significa. En el trading real, no solo es posible un salto, sino también diez u ocho. Lo habitual son dos y tres saltos.

Tasa de victorias

La tasa de ganancias nunca existe sola, o no es realista hablar del problema basándose únicamente en la tasa de ganancias. Si se utiliza el modelo adecuado en el mercado adecuado, no es sorprendente conseguir una tasa de éxito del 80%, pero esto no tiene sentido.

El precio sube o baja, de lo contrario permanece igual. Si el tiempo es lo suficientemente largo, descubrirás que la probabilidad de que los precios suban y bajen es del 50% cada una. Independientemente del tipo de modelo de estrategia que utilice, si la tasa de ganancias supera el 50 % durante las pruebas retrospectivas, debe tener cuidado. Desde un punto de vista matemático y físico, esto es imposible.

Curva de capital detallada

Como dice el refrán, una imagen vale más que mil palabras. La curva de capital detallada comienza desde el momento de la primera entrada hasta el momento de la última barra del gráfico. Es una curva de capital en tiempo real para operar. Es en tiempo real porque tiene en cuenta las ganancias y pérdidas flotantes de cada barra.
img
Figura 5-20

La curva de patrimonio detallada refleja los cambios en el valor neto de la cuenta y es la herramienta de evaluación más intuitiva. Permite obtener una idea aproximada del estado de pérdidas y ganancias de la estrategia y de la volatilidad/suavidad de las ganancias y pérdidas de un vistazo. Sin embargo, esta imagen del informe de rendimiento de la estrategia no sólo vale más que mil palabras, sino que también confunde a millones de creyentes. Además, nunca mires la curva de capital de cierre.

Tasa de rendimiento anualizada

El rendimiento anualizado es un indicador controvertido. Algunas personas piensan que esto es para que lo vean los profanos y que no tiene valor de referencia. En primer lugar, obtener ganancias es un requisito previo para que el modelo sea seleccionado, o en otras palabras, el rendimiento del modelo en sí debe tener un valor esperado positivo.
img
Figura 5-21

Puedes tener innumerables retornos del 100%, pero solo puedes permitirte un retorno del 100% como máximo. La brecha entre la tasa de rendimiento anualizada y la tasa de rendimiento real (tasa de rendimiento del período de tenencia) puede ser muy grande, a veces incluso mayor de lo que podemos imaginar.

Resumir

Por último, hay algo que hay que explicar. El rendimiento perfecto del backtesting no existe. Además de los problemas con los propios datos de prueba, los usuarios del modelo pueden enfrentarse a más dificultades. Todo, desde la optimización de parámetros hasta el diseño de transacciones, puede ser diferente de la operación real.

Más importante aún, las cuestiones emocionales a nivel de ejecución son el factor X a la hora de poner el modelo en producción. El trading real no se puede realizar en un entorno de “vacío emocional”. El fenómeno de la cola gorda es algo al que todo trader programático debe estar siempre atento.

Tarea

  1. Enumere los indicadores de rendimiento que considere más importantes en el backtesting.
  2. Intente calcular el indicador de ratio de Sharpe

5.4 Por qué son necesarias las pruebas fuera de la muestra

resumen

En la sección anterior, nos centramos en varios indicadores de rendimiento importantes para enseñarle cómo comprender el informe de rendimiento de pruebas retrospectivas de la estrategia. De hecho, escribir una estrategia que pueda generar dinero mediante backtesting no es lo más difícil. Lo más difícil es cómo evaluar si esta estrategia sigue siendo efectiva en el trading real. Así que hoy os voy a explicar qué son las pruebas fuera de muestra y su importancia.

El backtesting no es lo mismo que el trading real

Muchos principiantes cuantitativos se convencen fácilmente de sus estrategias comerciales basándose en un informe de rendimiento aparentemente bueno o en una curva de capital de un backtest, y están listos para mostrar su talento en el mercado. Es cierto que este resultado de backtest puede coincidir perfectamente con un determinado estado de mercado que observaron, pero una vez que esta estrategia comercial se pone en práctica durante un período de tiempo más largo, descubrirán que en realidad no es efectiva.

He visto muchas estrategias comerciales que tienen una tasa de éxito de más del 50 % cuando se prueban retrospectivamente. Con una tasa de ganancias tan alta, la relación de ganancias y pérdidas aún puede ser superior a 1:1. Sin embargo, una vez que estas estrategias se ponen en práctica, básicamente resultan en pérdidas. Hay muchas razones para las pérdidas, una de las cuales es que cuando se realizan pruebas retrospectivas, hay muy pocas muestras de datos, lo que genera sesgo en los datos.

Sin embargo, el comercio es algo muy complicado. Mirando hacia atrás, todo está muy claro, pero si volvemos al principio, todavía estamos perdidos. Esto involucra el problema fundamental de la cuantificación: las limitaciones de los datos históricos. Por lo tanto, si solo utiliza datos históricos limitados para probar su estrategia comercial, será difícil evitar el problema de "conducir mirando el espejo retrovisor".

¿Qué son las pruebas fuera de muestra?

¿Cómo podemos hacer el mejor uso de datos limitados para probar científicamente estrategias comerciales cuando los datos son limitados? La respuesta es la prueba fuera de muestra. Al realizar pruebas retrospectivas, los datos históricos se dividen en dos secciones según la secuencia de tiempo. La primera sección de datos se utiliza para la optimización de la estrategia y se denomina conjunto de entrenamiento, mientras que la segunda sección de datos se utiliza para pruebas fuera de la muestra y se denomina conjunto de prueba.

Si su estrategia siempre es efectiva, entonces optimice los mejores parámetros en los datos del conjunto de entrenamiento y aplique estos parámetros a los datos del conjunto de prueba para realizar pruebas retrospectivas. Lo ideal sería que los resultados del backtest fueran similares a los del conjunto de entrenamiento, o estuvieran dentro de un rango razonable. Esto demuestra que esta estrategia es relativamente efectiva.

Sin embargo, si una estrategia funciona bien en el conjunto de prueba pero funciona mal en el mismo conjunto de prueba, o varía mucho, y lo mismo sucede con otros parámetros, entonces la estrategia puede tener un sesgo de acomodación de datos.

Por ejemplo, supongamos que desea realizar pruebas retrospectivas de futuros de materias primas sobre varillas de refuerzo y que existen alrededor de 10 años de datos sobre varillas de refuerzo (2009-2019). Luego, puede utilizar los datos de 2009 a 2015 como conjunto de entrenamiento y los datos de 2015 a 2019 como conjunto de prueba. Por ejemplo, para una estrategia de doble promedio móvil, los mejores grupos de parámetros en el conjunto de entrenamiento son (promedio móvil de 15 períodos y promedio móvil de 90 períodos), (promedio móvil de 5 períodos y promedio móvil de 50 períodos), (promedio móvil de 10 períodos y promedio móvil de 100 períodos)... Luego, colocamos estos grupos de parámetros en el conjunto de prueba para realizar pruebas retrospectivas y comparamos los informes de desempeño de las pruebas retrospectivas y las curvas de capital del conjunto de entrenamiento y el conjunto de prueba para determinar si su diferencia está dentro de un rango razonable.

Si no utiliza pruebas fuera de muestra y utiliza directamente datos de 2009 a 2019 para realizar pruebas retrospectivas de la estrategia, los resultados pueden ser un buen informe de rendimiento de pruebas retrospectivas y una buena curva de capital debido al ajuste de los datos históricos. Sin embargo, estos resultados de backtest tienen poca importancia para el trading real y no tienen ningún papel orientador, especialmente para estrategias con más parámetros.

Pruebas avanzadas fuera de la muestra

Además de dividir los datos históricos en dos partes y realizar pruebas retrospectivas dentro y fuera de la muestra, en realidad existe una mejor opción, que son los métodos de pruebas retrospectivas recursivas y pruebas retrospectivas cruzadas. Especialmente cuando hay pocos datos históricos, como los futuros del petróleo crudo y los futuros de manzana que se han cotizado en los últimos años, estos dos métodos se pueden utilizar para probar exhaustivamente el modelo utilizando datos limitados.

Principio básico de la verificación recurrente: entrenar el modelo con el anterior fragmento de datos históricos más largos, y luego con datos más cortos, y luego mover constantemente hacia atrás la ventana de datos, repitiendo los pasos de entrenamiento y verificación.
Datos de entrenamiento: 2000 a 2001, datos de prueba: 2002;
Datos de entrenamiento: 2001 a 2002, datos de prueba: 2003;
Datos de entrenamiento: 2002 a 2003, datos de prueba: 2004;
Datos de entrenamiento: 2003 a 2004, datos de prueba: 2005;
Datos de entrenamiento: 2004 a 2005, datos de prueba: 2006;
...y así sucesivamente...
Finalmente, los resultados de las pruebas de los años 2002, 2003, 2004, 2005, 2006 ... se estadizan para evaluar el rendimiento de la estrategia de manera integral.

El siguiente gráfico explica el principio de la prueba recursiva de forma intuitiva:
img
Figura 5-22

El gráfico de arriba muestra los dos métodos de prueba deductiva.

La primera: cada vez que se hace la prueba, los datos de prueba son más cortos y el número de pruebas es mayor.
El segundo tipo de prueba es la prueba de datos más larga y menos repetida en cada prueba.

En aplicaciones prácticas, se puede cambiar la longitud de los datos de prueba y se pueden realizar múltiples pruebas para determinar la estabilidad del modelo al tratar con datos no estacionarios. El principio básico de la validación cruzada es dividir todos los datos en N partes iguales, utilizar N-1 partes para entrenamiento cada vez y utilizar las partes restantes para pruebas.

Dividimos los años 2000-2003 en cuatro partes. El proceso de verificación cruzada es el siguiente:

  1. Datos de entrenamiento: 2001-2003, datos de pruebas: 2000;
    2 Datos de entrenamiento: 2000-2002, datos de pruebas: 2003
    3 Datos de entrenamiento: 2000, 2001, 2003, datos de pruebas: 2002
  2. Datos de entrenamiento: 2000, 2002, 2003, datos de pruebas: 2001
    img
    Figura 5-23

La mayor ventaja de las pruebas cruzadas es que se aprovechan los datos limitados, y cada dato de entrenamiento también es un dato de prueba. Sin embargo, las pruebas cruzadas también tienen desventajas obvias cuando se aplican a las pruebas de modelos estratégicos:

Cuando los datos de precios no son estables, los resultados de las pruebas de los modelos suelen ser poco fiables. Por ejemplo, usar los datos de 2008 para entrenar y probar con los datos de 2005. Es muy probable que el entorno del mercado de 2008 haya cambiado mucho en comparación con el de 2005, por lo que los resultados de las pruebas de los modelos no son confiables.
2. Similar a la primera, en las pruebas de cruce, si se usa el modelo de entrenamiento de datos más reciente y el modelo de prueba de datos más antiguo, esto en sí mismo no es muy lógico.
Además, se encuentran problemas de superposición de datos en las pruebas de modelos de estrategias de contraste cuantitativo, tanto en las pruebas de inferencia como en las pruebas de cruce.

En el desarrollo de modelos de estrategias de negociación, la mayoría de los indicadores técnicos se basan en datos históricos de cierta longitud. Por ejemplo, si se utiliza un indicador de tendencia para calcular los datos históricos de los últimos 50 días, y el siguiente día de negociación, el indicador se basa en los datos de los 50 días anteriores a la fecha de negociación, entonces los datos de los dos indicadores son los mismos durante 49 días, lo que lleva a un cambio poco notable en el indicador cada dos días adyacentes.
img
Figura 5-24

La superposición de datos puede tener los siguientes efectos:

  1. Los cambios lentos en los resultados de las predicciones de los modelos conducen a cambios lentos en las posiciones, que es lo que solemos llamar la tardanza de los indicadores.
  1. Algunos valores estadísticos no son válidos para las pruebas de los resultados del modelo, y los resultados de algunas pruebas estadísticas no son confiables debido a la correlación de secuencias causada por la duplicación de datos.

Una buena estrategia comercial debería permitirle ser rentable en el futuro. Además de probar objetivamente las estrategias comerciales, las pruebas fuera de muestra también pueden ahorrar eficientemente tiempo a los operadores cuantitativos. En la mayoría de los casos, es muy peligroso adoptar directamente los parámetros óptimos de todas las muestras y aplicarlos al combate real.

Si se distingue entre todos los datos históricos antes del momento en que se realiza la optimización paramétrica y se dividen en datos dentro de la muestra y datos fuera de la muestra, se utiliza primero los datos dentro de la muestra para optimizar los parámetros y luego se utiliza los datos fuera de la muestra para realizar pruebas fuera de la muestra, se puede detectar este error, al mismo tiempo que se puede comprobar si la estrategia optimizada se aplica al mercado futuro.

Resumir

Al igual que con las transacciones, nunca podremos atravesar el tiempo y tomar una decisión correcta para nosotros mismos sin cometer el menor error. Si la mano de Dios o la habilidad de atravesar el futuro, entonces sin pruebas, el comercio de divisas en línea directamente, también puede llenar el bolsillo. Y los mortales como yo, debemos examinar nuestras estrategias en los datos históricos.

Sin embargo, incluso con una enorme cantidad de datos históricos, éstos parecen extremadamente escasos cuando enfrentamos el vasto, interminable e impredecible futuro. Por lo tanto, el sistema de comercio que se desarrolla desde abajo hacia arriba basándose en la historia, eventualmente se hundirá con el tiempo. Porque la historia no puede agotar el futuro. Por lo tanto, un sistema completo de trading con expectativas positivas debe estar respaldado por sus principios y lógica internos.

“Confía, pero verifica” — Presidente Reagan

Tarea

  1. ¿Qué fenómenos en la vida real son ejemplos de sesgo de supervivencia?
  2. Utilice las herramientas cuantitativas del inventor para realizar pruebas retrospectivas tanto dentro como fuera de la muestra y comparar sus diferencias.

5.5 Optimización y optimización de la estrategia comercial

resumen

La esencia de la estrategia comercial es la generalización y conclusión de las reglas del mercado. Cuanto más profundo sea su conocimiento del mercado y mayor sea su capacidad para expresar ideas con código, más cercana estará su estrategia al mercado. En esta sección continuaremos explicando cómo optimizar sus estrategias comerciales y realizar los preparativos finales para sus operaciones reales.

Optimizar la entrada y la salida

La mayoría de las estrategias de seguimiento de tendencias utilizan avances o indicadores técnicos para capturar las tendencias del mercado. Generalmente los métodos de entrada y salida de estas señales son menos oportunos. Si la estrategia utiliza un modelo de precio de cierre, el punto de entrada será el precio de apertura de la siguiente línea K. Por lo tanto, se perderá el mejor momento de entrada para romper esta línea K y se perderá una gran cantidad de ganancias.

Por lo tanto, una forma efectiva es utilizar precios en tiempo real más ventajosos en la implementación de la estrategia y colocar órdenes inmediatamente cuando aparecen las señales. De esta manera, cuando se establece la señal, usted puede ingresar al mercado inmediatamente y no perderá ganancias. Pero no todos los precios en tiempo real son mejores que los precios de cierre. Esto depende de la estrategia comercial. Para algunas estrategias con lógica comercial simple, la diferencia entre el precio en tiempo real y el precio de cierre es relativamente pequeña. Sin embargo, el modelo de precio de cierre no puede manejar una lógica comercial más detallada, por lo que es necesario utilizar el precio en tiempo real.

Optimización de parámetros

La optimización de parámetros puede hacer que las estrategias comerciales cuantitativas se acerquen más a los datos históricos y logren un mejor rendimiento en las pruebas retrospectivas. Por ejemplo: utilizamos una estrategia de doble promedio móvil en los contratos de varillas de refuerzo, pero ¿cuáles dos promedios móviles son los mejores? Luego puede utilizar la función de ajuste de parámetros en la herramienta Inventor Quant para encontrar automáticamente los dos mejores parámetros de promedio móvil.

Como se muestra en la figura a continuación, tomando como ejemplo la estrategia de doble promedio móvil, es en sí misma una instancia multidimensional. Si dibujamos los resultados de la prueba retrospectiva de cada parámetro como un punto (observe la figura a continuación), entonces cada parámetro es una dimensión de esta estrategia y, en última instancia, todas las combinaciones de parámetros construyen esta forma de superficie multidimensional compleja (como una montaña).
img
Figura 5-25

Como se muestra arriba, este es un gráfico de rendimiento de estrategia de dos parámetros. A medida que cambian los parámetros, la tasa de retorno final también cambia significativamente y la superficie se distorsiona fuertemente, formando "picos" y "valles" de diferentes alturas. Generalmente el primer lugar en el resultado de optimización es el punto más alto de toda la superficie. Sin embargo, desde la perspectiva de la sensibilidad de los parámetros, la objetividad, etc., a veces este resultado puede no ser el "óptimo". Porque el mercado está cambiando constantemente.

Por lo tanto, el principio importante de la optimización de parámetros es elegir mesetas de parámetros en lugar de islas de parámetros. La denominada meseta de parámetros se refiere a la existencia de un rango de parámetros más amplio dentro del cual la estrategia puede lograr un buen desempeño. Generalmente forma una distribución normal con el centro de la meseta. La llamada isla de parámetros significa que la estrategia funcionará bien solo cuando el valor del parámetro esté dentro de un rango muy pequeño. Cuando el parámetro se desvía de este valor, el rendimiento de la estrategia se deteriorará significativamente.
img
Figura 5-26

Meseta de parámetros

Tomando la figura anterior como ejemplo, una buena distribución de parámetros de estrategia debería ser una meseta de parámetros. Incluso cuando los ajustes de los parámetros varían, todavía se puede garantizar la rentabilidad de la estrategia. Estos parámetros son altamente estables, lo que puede hacer que la estrategia sea más universal al enfrentar diversas condiciones de mercado en futuras operaciones reales.
img
Figura 5-27

Islas de parámetros

Tomando la figura anterior como ejemplo, si el rendimiento del backtest muestra islas de parámetros, cuando los parámetros cambian ligeramente, la rentabilidad de la estrategia se reducirá en gran medida. Con frecuencia es difícil hacer frente a estos parámetros en las condiciones cambiantes del mercado en las transacciones reales debido a su escasa universalidad.

Por lo tanto, si el rendimiento de los parámetros cercanos es mucho peor que el del parámetro óptimo, entonces este parámetro óptimo puede ser el resultado de un sobreajuste, que puede considerarse matemáticamente como una solución singular en lugar de la solución máxima que se busca. Desde un punto de vista matemático, las singularidades son inestables. En futuras condiciones de mercado inciertas, una vez que las características del mercado cambian, los parámetros óptimos pueden convertirse en los peores parámetros.

Añadir filtro

Muchas estrategias de tendencia pueden captar bien la tendencia y lograr grandes retornos cuando el mercado cambia. Sin embargo, a largo plazo, el resultado final es una pequeña ganancia o una pérdida. ¿Cuál es el problema?

La razón es que la estrategia sigue operando repetidamente en un mercado volátil, y la mayoría de las operaciones volátiles son pérdidas o pequeñas ganancias. El mercado se encuentra en un estado volátil aproximadamente el 70% del tiempo. Las pequeñas pérdidas continuas a largo plazo conducen a la pérdida de todas las ganancias anteriores.
img
Figura 5-28

La solución es agregar filtros. Hay muchos tipos de filtros en el mercado, incluidos filtros de ganancias y pérdidas, filtros de valor de riesgo, filtros de patrones de tendencia, filtros de indicadores técnicos, etc. Por ejemplo, agregar un filtro de promedio móvil de período largo puede reducir la cantidad de transacciones en un mercado volátil y filtrar la mitad de las transacciones erróneas.

Suavizar la curva de financiación

La cuantificación persigue un método de obtención de beneficios estable y sostenible, que es lo que la mayoría de los traders desean ver. Nadie quiere ganar el 50% este año, perder el 30% el año que viene y ganar el 40% el año siguiente. Preferirían aceptar una rentabilidad anual del 20%, pero podría durar más de diez años. Esto es lo que puede hacer la inversión cuantitativa. Porque la inversión cuantitativa es un modelo comercial con un rendimiento sostenible.

Para lograr una curva de capital suave, es necesario construir una cartera de inversiones con múltiples estrategias, múltiples variedades, múltiples ciclos y múltiples parámetros. Pero más no es necesariamente mejor. Aquí hay un efecto marginal decreciente. Cuanto más añadas a la cartera al principio, mejor será la diversificación. Sin embargo, cuando la estrategia alcanza un cierto orden de magnitud, comienza a aparecer el efecto de los rendimientos decrecientes de la diversificación. La ventaja de una combinación es la diversificación. Aunque la tasa de rendimiento general no es la más alta, es la más estable.

Abandone la búsqueda del Santo Grial

Si el trading cuantitativo puede encontrar el Santo Grial es una pregunta que muchos traders se plantean. Algunos traders incluso se lanzan al mercado con sus llamadas estrategias perfectas después de un simple backtest. Espero ganar cada batalla y convertirme en un analista cuantitativo profesional que pueda superar todos los obstáculos.

Pero ¿existe el Santo Grial? En realidad es muy sencillo, la respuesta es no. De hecho, no es difícil de entender. Si este mercado realmente tiene reglas, entonces las personas con mayor coeficiente intelectual, mayor educación y más trabajo podrán descubrir las reglas. Ya sea que utilicen análisis matemático, monopolio de información u otros métodos de análisis, al final ganarán la mayor parte del dinero en el mercado. A largo plazo, estas personas monopolizarán el mercado comercial hasta que éste ya no pueda funcionar con normalidad.

Resumir

Si el tiempo de negociación es lo suficientemente largo, cualquiera puede enfrentar varias tendencias del mercado durante el proceso de negociación, y es poco probable que estas tendencias se repitan exactamente. Como trader cuantitativo, además de examinar y optimizar correctamente sus propias estrategias comerciales, también necesita monitorear continuamente las condiciones del mercado y mejorar continuamente sus estrategias en respuesta a los cambios del mercado.

Al mismo tiempo, también debes tener en cuenta que las ganancias y las pérdidas provienen de la misma fuente. Las pérdidas son parte de toda la estrategia comercial. Incluso la mejor estrategia comercial puede experimentar una serie de caídas. Cuando hay una pérdida en cada operación, no se deben cuestionar sus reglas y estrategias comerciales. Al menos no cambies fácilmente tu marco lógico estratégico a menos que tu marco lógico esté equivocado desde el principio.

Tarea

  1. Construya una cartera de inversiones basada en las características de su propia estrategia y realice pruebas retrospectivas utilizando las herramientas cuantitativas del inventor.
  2. Intente optimizar su estrategia de trading cuantitativo basándose en el contenido de esta sección.

5.6 Desarrolle el pensamiento probabilístico y mejore su patrón de trading

resumen

El trading es tanto una ciencia como un arte. Hay muchos métodos en el trading, ya sea inversión en valor, análisis técnico, puntos críticos de eventos, cobertura de arbitraje, etc., que parecen ser lógicamente rigurosos en la superficie y tienen sentido en teoría. Pero en realidad, a menudo son contradictorias. A veces, el rigor de la ciencia no puede explicar la imaginación salvaje del arte.

Aunque los distintos métodos de comercio tienen diferentes puntos de partida, todos los caminos conducen a Roma. La ventaja de la inversión en valor es que se puede establecer un margen de seguridad para las fluctuaciones de precios en función del valor; La ventaja del análisis técnico es que los tres supuestos principales hacen que la transacción sea científica.

Sin embargo, todos tienen una característica común: sólo pueden hacer predicciones aproximadas sobre el análisis de precios futuros, pero no predicciones precisas. Incluso si el análisis fundamental se combina con el análisis técnico, no puede resolver el problema de mejorar la "precisión", por lo que el trading es un juego de probabilidad de principio a fin.

Juegos de azar

De hecho, el trading no es sólo un juego de probabilidades. En la vida de uno, todo, desde las cosas pequeñas como cruzar la calle (la luz está verde, ¿es seguro cruzar la calle ahora?) y qué tipo de amigos hacer (¿es confiable este amigo?); En cuestiones tan importantes como qué tipo de carrera seguir (¿es realmente el trading profesional una buena carrera?) y con quién casarse (¿seremos felices juntos?), todos son juegos de probabilidad para evaluar riesgos y retornos. Como no tenemos la capacidad de predecir el futuro, cada vez que hacemos algo, por más seguros que estemos, siempre hay un riesgo y no podemos estar 100% seguros.

Una razón importante por la que muchas personas cometen errores en el trading es la falta de pensamiento probabilístico y el ser demasiado emocionales en lugar de racionales al operar. La emocionalidad es en realidad nuestro instinto primitivo. En el mercado, estos instintos primitivos pueden estimular muchas debilidades humanas y amplificarlas exponencialmente. Es por esto que la mayoría de la gente llega al mercado y termina fracasando.

Razones del fracaso de la transacción

Razón 1: Por la naturaleza humana

La gran mayoría de las personas tienen una debilidad: les gusta aprovechar pequeñas ventajas y tienen miedo de sufrir pequeñas pérdidas. Una vez que hay una pequeña ganancia en el mercado, la retiran inmediatamente y salen del mercado con ganancias; Una vez que hay una pérdida, se aferran a la posición perdedora en un intento de recuperar su dinero por casualidad. Como resultado, las pequeñas pérdidas se acumulan lentamente y se convierten en grandes pérdidas.

Los precios suben o bajan, o se mantienen igual. A largo plazo, sin tener en cuenta las comisiones por transacción y el deslizamiento, la probabilidad de ganar o perder dinero es de aproximadamente el 50%. Por lo tanto, el método de negociación de la mayoría de las personas se convierte en una estrategia de expectativas negativas con ganancias limitadas y riesgos ilimitados. Su estado de liquidación de transacción debería ser así: pequeña ganancia >>......>>pequeña ganancia >>gran pérdida.

En la vida real, esto es muy similar al pensamiento de la gente pobre y al de la gente rica. Los pobres son reacios a correr riesgos y tienen miedo de perder dinero. Me gustan los trabajos que proporcionen ingresos estables y busco la estabilidad. Incluso si no estás absolutamente seguro de hacer algo, nunca deberías hacerlo. A primera vista, no parece haber nada malo en hacerlo, pero hay enormes oportunidades y riesgos detrás de ello.

Los ricos están más dispuestos a asumir riesgos, sabiendo que el riesgo y el rendimiento son siempre proporcionales. Sólo el riesgo genera oportunidades. Evalúan los riesgos racionalmente y hacen apuestas valientes cuando los riesgos son controlables.

Razón 2: Me gusta ganar dinero rápido

Una institución extranjera realizó una vez una estadística que mostraba que, a largo plazo, es poco probable que el rendimiento anualizado de los activos netos de la mayoría de las industrias supere el 15%. Por el contrario, a muchos inversores minoristas les da vergüenza saludar a los demás si obtienen un beneficio del 15% en el mercado. A la gente le gusta ganar dinero rápido, por lo que se involucra en transacciones comerciales intensas y a corto plazo.

Posición pesada
Las posiciones pesadas, el alto apalancamiento y la asignación de capital son muy tentadores, pero también muy peligrosos. Si tienes éxito, tendrás éxito; Si fracasas, estarás condenado. Si tiene una estrategia comercial con una tasa de ganancia del 50% y opera con posiciones completas y margen, si tiene suerte, puede ganar más de diez veces seguidas y también es posible que su riqueza cambie de un cambio cuantitativo a un cambio cualitativo.

Pero si cometes un solo error, todo volverá a cero. Incluso si simplemente opera con una posición pesada sin ninguna asignación de capital, existe el riesgo de que su cuenta llegue a cero, porque no puede garantizar que no sufrirá pérdidas más de una docena de veces seguidas en la próxima situación del mercado. Incluso una negociación intensa puede convertir una estrategia comercial originalmente prevista en una estrategia con ganancias y pérdidas desiguales.

Corto plazo
La única arte marcial del mundo que no puede ser derrotada es la velocidad. En el círculo comercial, el trading intradía manual, el trading intradía a corto plazo y el trading cuantitativo de alta frecuencia siempre han sido muy misteriosos. No dudo de aquellas personas que hacen trading mirando el cronómetro, pero sí intento persuadirles para que abandonen el trading a corto plazo desde otra perspectiva.

Cuando juzgamos si un método es factible, no sólo debemos considerar a aquellos que han tenido éxito utilizando esos métodos, sino también a aquellos que han fracasado utilizando esos métodos. En otras palabras, no se puede asumir que comprar billetes de lotería es una estrategia con expectativas positivas sólo porque algunas personas ganan el premio mayor.

Además, si nos fijamos en el ranking de productos de capital privado, en los últimos tres años, ¿cuántos de los 100 primeros se dedican a la especulación diaria o a operaciones a corto plazo? No hay duda de que la tasa de éxito de la inversión a corto plazo es muy baja. Incluso si tiene éxito, este método de ganar dinero rápidamente es difícil de mantener a largo plazo. Si no tienes talento, ten cuidado al usar este tipo de trucos, después de todo, solo hay un Simmons.

Razón 3: Sesgo

Si es posible, te sugiero que dediques 100 minutos a ver una película: "12 hombres sin piedad". Una película rehecha por cuatro países: la primera versión estadounidense en 1957, la versión japonesa en 1991, la versión rusa en 1997 y la versión china en 2014. Aunque esta película no puede enseñarte a comerciar, te enseña a mirar las cosas y aprender a conocerte a ti mismo, lo cual es muy importante.

Como la experiencia humana es limitada, la cognición humana también es limitada. Todos tenemos prejuicios en mayor o menor medida según nuestras propias experiencias. Muchas veces, el prejuicio se ha convertido en un hábito de la mayoría de las personas y dan por sentado juzgar muchas cosas en función de sus propias emociones.

Volviendo al mercado, no importa si su juicio sobre el mercado se basa en el análisis fundamental o en el análisis técnico. Si sus opiniones son diferentes a las de la mayoría en el mercado, los precios tenderán a favorecer a la mayoría del mercado y el mercado no funcionará de acuerdo con sus opiniones.

Por lo tanto, en las transacciones, debemos recordar "juzgar, pero no confiar en el juicio". En última instancia, debe basarse en hechos y precios. La única fuerza que impulsa los precios hacia arriba y hacia abajo es la que la mayoría de la gente espera que sea el futuro. Su juicio no tiene peso en el mercado, así que nunca deje que su juicio conforme su propio sesgo.

Razón 4: Búsqueda de la perfección.

Los participantes del mercado incluyen expertos de todos los ámbitos de la vida, incluidos física, estadística, matemáticas, astronomía, etc. Muchas personas intentan utilizar sus conocimientos profesionales para explicar este mercado.

Pero los principales participantes del mercado son las personas, y las personas mismas tienen limitaciones cognitivas, lo que significa que el mercado en sí es erróneo e imperfecto. Entonces, ¿cómo podemos utilizar estos métodos “perfectos” para explicar el mercado? ¿No va esto contra la naturaleza del mercado?

A continuación se enumeran las razones por las cuales la gran mayoría de las personas que acuden al mercado finalmente fracasan. Además de las razones principales mencionadas anteriormente, hay muchos otros factores que no se enumeran aquí uno por uno. En resumen, excepto tu confianza en la victoria, todo lo demás es un obstáculo que te impide alcanzar el éxito.

Aquellos que ganan dinero en el mercado gracias a la buena suerte, eventualmente lo devolverán al mercado con el tiempo. Por lo tanto, el mercado de futuros es un juego de suma negativa. Sólo cambiando tu forma de pensar y estableciendo tu propia estrategia de trading podrás tener la posibilidad de tener éxito.

¿Qué es el pensamiento probabilístico?

El pensamiento probabilístico es un nombre elegante, pero en términos simples es pensamiento de juego. Lo escuchaste bien, el trading es una apuesta. Cuando escuchas hablar de juegos de azar, puedes pensar en "alguien que lo perdió todo en el juego, huyó por deudas o no le quedó familia" y mantenerse alejado de él.

Es cierto que existen algunos jugadores en la sociedad que están obsesionados con el juego. Pero el juego ≠ jugador. “Juego” es probablemente una de las palabras más incomprendidas. Si tu estrategia es la expectativa negativa, eres un jugador; Si tu estrategia es la expectativa positiva, estás jugando.

Si eliminamos el sentido negativo de “juego” y lo entendemos como una actividad que implica asumir ciertos riesgos a cambio de ciertas ganancias, entonces la vida es realmente “juego” en todas partes. Qué carrera elegir en la escuela, si comprar una casa, si emprender un proyecto, trabajar o emprender un negocio, etc.

Incluso poner dinero en un banco es una apuesta arriesgada, porque no se está seguro de si en el futuro habrá inflación o si el banco irá a la quiebra (véase la crisis de la deuda griega). En resumen, desde la cuna hasta la tumba, cada proceso de la vida es una apuesta.

Cómo ganar a largo plazo

Es necesario resolver más a fondo el concepto de juego: ¿cómo se puede ganar a largo plazo? Antes de estudiar las estrategias ganadoras a largo plazo, estudiemos primero los principios de esas estrategias ganadoras a largo plazo. Aparte de la máquina de imprimir dinero, ¿qué más puede garantizar una ganancia a largo plazo?

Esto es lo que sucede en el casino: baccarat, ruleta, máquinas tragamonedas, blackjack, etc. No importa cómo cambien los métodos de juego, el casino ganará al final. En realidad, hay un secreto oculto aquí que los casinos nunca revelan: la ley de los grandes números.

Cómo funciona el Sic Bo

Tres dados, apuesta al tamaño, 4-10 es pequeño, 11-17 es grande, si apuestas correctamente, ganas dinero. En el Sic Bo existe una especie de dados circundantes, es decir, cuando los puntos de tres dados son iguales, el crupier del casino ganará. La probabilidad de que aparezcan dados circundantes es del 2,8%. Entonces la probabilidad de que aparezca un número grande y uno pequeño es del 48,6% cada uno. El casino se basa en esta probabilidad del 2,8%. Si cada jugador apuesta 100 yuanes en cada juego, el casino ganará 280 yuanes después de jugar 100 juegos.

(0.486+0.028)100100-0.486100100=280

Sin embargo, esta estrategia de casino tiene lagunas. Si un gran jugador de repente hace una apuesta de decenas de miles de millones y gana, el casino irá a la quiebra de repente. Por lo tanto, el casino establecerá un límite de apuestas y no se podrán realizar más apuestas en esta ronda si se excede dicho límite. De esta manera, incluso si el jugador tiene la suerte de ganar dinero durante un tiempo, a largo plazo seguirá perdiendo ante la probabilidad. En un número infinito de juegos de Sic Bo, el jugador perderá el 2,8% de su dinero.

La ley de los grandes números

La ventaja del propietario del casino es sólo un 2% mayor que la del jugador. En una sola apuesta, el propietario puede sufrir una pérdida o incluso experimentar pérdidas continuas. Sin embargo, el dueño del casino no se asustará por las pérdidas, porque sabe que la razón por la que puede ganar dinero es que funciona la "ley de los grandes números". Mientras la gente siga apostando, sólo necesita una ligera ventaja del 2% para mantener ganancias estables a largo plazo.

Así que el casino no tiene miedo de que ganes dinero, sino de que no vengas. Incluso has oído hablar de bancos que han quebrado a lo largo de los años, pero ¿cuándo has oído hablar de un casino que ha quebrado? A largo plazo, el casino siempre es el ganador. Esta es la razón por la que los juegos de azar darán ganancias a largo plazo.

Ejemplos similares de ganancias a largo plazo incluyen: varias loterías. Los fondos del pozo de premios de la lotería se han ido acumulando cada vez más desde que se lanzó la lotería, y este dinero ciertamente proviene de la mayoría de los jugadores de lotería. ¿Sabes cuál es la probabilidad de ganar 5 millones en el Double Color Ball? La respuesta es una en 17,7 millones.

Cambios en la probabilidad

Supongamos que hay una moneda con el mismo peso en ambos lados, la probabilidad de obtener una palabra (dorso) o una flor (anverso) es del 50% y cada lanzamiento de moneda es independiente del resultado anterior. Si lanzas la moneda 10.000 veces seguidas, la probabilidad de que salga cara es de aproximadamente el 50%.

Pero si sólo lo lanzas 10 veces, la probabilidad de obtener un resultado positivo cambiará, y puede que no sea del 50%. Por lo tanto, el crupier del casino debe asegurarse de que esta estrategia de expectativa positiva se active suficientes veces para que sea efectiva. Esta es también la razón por la que las instituciones de capital privado no pueden detener la estrategia cuando inician una estrategia comercial cuantitativa a menos que existan condiciones especiales.

Cómo utilizar la “ley de los grandes números” para crear una estrategia ganadora a largo plazo en el mercado financiero será el contenido de nuestra próxima serie de cursos, ¡así que estad atentos!

Resumir

Arriba, le hemos explicado cómo ver el trading de una manera científica desde los aspectos de probabilidad, razones del fracaso en el trading, mentalidad correcta en el trading, el principio de ganar a largo plazo en los juegos de azar, etc. Creo que si aprende bien, el cambio de pensamiento será el cambio en su comportamiento, y el cambio de comportamiento será el cambio en su éxito.

Tarea

  1. ¿Por qué el trading es un juego de probabilidades?
  2. ¿Cuáles son otras razones por las que falla una transacción?
Related Recommendations
Comment
All comments (2)

    好文章啊!

    5 years ago

    mark

    5 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)