¿Mejores resultados con el control de los fondos propios?

La funcionalidad de control de fondos propios de Quant Analyzer le permite simular y probar varios métodos de uso de la curva de renta variable para controlar la lógica de negociación.

¿Qué significa exactamente?
La estrategia puede observar su propio rendimiento en el pasado (su curva de renta variable hasta el momento) y utilizarlo para determinar cómo debe operar en el futuro.
La premisa es sencilla: ¿podemos mejorar los rendimientos futuros de la estrategia analizando su patrimonio pasado?

Como entrada necesitamos una estrategia (resultados) para poder intentar mejorar su rendimiento. En este post utilizaremos la estrategia de ejemplo Test_EURUSD_strategy con la curva de renta variable que se muestra a continuación.

A la hora de mejorar el rendimiento de una estrategia, el enfoque por defecto suele ser intentar añadir uno o más filtros de mercado, mejorar las entradas o salidas de la estrategia, reducir el número de operaciones perdedoras y aumentar el número de operaciones ganadoras.

Pero otra opción interesante en la que se centra este artículo es la gestión de la curva de renta variable del sistema. En otras palabras, examinamos el rendimiento pasado de la estrategia y utilizamos esta información para determinar si debemos realizar la siguiente operación o no.

Ejemplo de gestión de la curva de renta variable - enfoque simple mediante media móvil
La idea es sencilla: añadir una media móvil de 20 periodos a la curva de renta variable generada por la estrategia. A continuación, emplear las reglas:

  • Si la curva de renta variable actual está por encima de su media móvil y debe abrirse una nueva operación, tómela.
  • Si la curva de renta variable actual está por debajo de su media móvil, no realice la operación real, realice sólo una operación sobre papel y actualice la curva de renta variable de la estrategia.

Simulación del control de fondos propios en Quant Analyzer

Quant Analyzer nos permite simular esto fácilmente en su Control del patrimonio tab. Sólo tiene que elegir el tipo de Control de Equidad que desea utilizar, establecer sus parámetros y hacer clic en Aplicar.
En nuestro ejemplo utilizaremos Media Móvil con periodo 20.

Tras hacer clic en Solicitar obtendremos dos curvas: la curva de equidad original sin ningún cambio y la curva de equidad "Controlada" en la que utilizamos estas reglas en la negociación.
También puede ver la línea de control roja, en nuestro caso la media móvil de 20 periodos de la equidad original que decide si la operación se toma o no.

Cuadro especial de control de recursos propios
Tenga en cuenta que las curvas de renta variable en el gráfico se muestran de una manera especial: cada punto es una nueva operación y el nivel de renta variable en ese punto es real. saldo de la cuenta en la apertura de la operación.
Esto nos permite controlar las operaciones utilizando la curva de equidad - podemos decidir si tomar la operación de acuerdo con el saldo de la cuenta al abrir la operación - al igual que en la realidad.

Si hay varias operaciones abiertas exactamente al mismo tiempo, todas se "agrupan" en un punto de operación.

La línea roja gruesa de la parte inferior del gráfico muestra claramente los periodos en los que las operaciones no se tomaron ni se modificaron por el control de la renta variable.

Si nos fijamos en el gráfico anterior, podemos ver inmediatamente que emplear el control de la renta variable de esta forma no mejora los resultados de la estrategia, de hecho los empeora. Veamos los detalles y ampliemos el gráfico a los primeros meses.

Tanto las líneas de capital original como las controladas son iguales hasta el punto 1. A partir de ese día la renta variable difiere:

  • La curva de renta variable original muestra que la estrategia sigue operando y registra nuevas pérdidas
  • La estrategia controlada no toma las siguientes operaciones porque la equidad actual en la apertura de la operación está por debajo de su media móvil (línea roja). Así que la estrategia pasa las operaciones y nos impide entrar en una pérdida más profunda hasta que la equidad original sube por encima de su media móvil.

Así pues, en esta muestra ampliada podemos ver que el control de la renta variable funciona, ya que evita que la estrategia entre en una reducción mayor al perderse las operaciones cuando la curva de la renta variable original estaba por debajo de su media móvil.

Entonces, ¿por qué el resultado global de la estrategia controlada es peor que el de la original?
Veamos otra sección del gráfico que comienza en torno a marzo de 2010:

De nuevo, tanto las líneas de capital original como las controladas son aproximadamente iguales hasta el punto 2.. A partir de ese momento, la estrategia "Controlada" empieza a perder rendimiento en comparación con la estrategia original.

¿Por qué?
Nuestras reglas especifican que la estrategia no opera cuando su valor está por debajo de su media móvil. Esto significa que puede saltarse algunas operaciones perdedoras para evitar más pérdidas, pero también puede saltarse algunas operaciones ganadoras que ayudaron a la estrategia original a recuperarse de pérdidas anteriores.

En nuestro caso se pierde operaciones muy rentables 3., 4. y 5. porque en el momento en que deberían haberse abierto estas operaciones, la curva de renta variable original estaba por debajo de su media móvil.
La estrategia controlada realizará la siguiente operación sólo después de que la acción original vuelva a subir por encima de su media móvil.

Conclusiones de este ejemplo

Nuestra simulación de control de la renta variable muestra que este tipo de control no mejora nada. De hecho, casi siempre disminuye el beneficio y también aumenta el drawdown si no se utiliza correctamente.

Pero, ¿y si probamos otra cosa?
En lugar de perder una operación cuando la renta variable está por debajo de la media, podemos duplicar su tamaño. Las reglas volverán a ser sencillas:

  • Si la curva de renta variable actual está por encima de su media móvil y debe abrirse una nueva operación, entonces realice la operación con su tamaño original.
  • Si la curva de renta variable actual está por debajo de su media móvil y debe abrirse una nueva operación, ábrala con un tamaño doble.

En este caso estamos especulando que después de algunas pérdidas debe venir un comercio rentable y utilizaríamos el tamaño doble para conseguir el beneficio doble de él.

Ampliación de Quant Analyzer
Para crear una nueva función de control de equidad personalizada utilizaremos capacidad de ampliación de la última versión de Quant Analyzer.
Quant Analyzer v3 ahora le permite programar su propia función de control de equidad y probar sus propias ideas. En este ejemplo vamos a utilizar la función especial de control de la equidad que se puede descargar a continuación.

MovingAverageAddContracts.java

Simplemente descargue este archivo, colóquelo en la carpeta {Quant Analyzer}/extend/code/EquityControl y reinicie el programa.

Debería ver la nueva opción Media móvil Añadir contratos añadido en la selección de tipos de control de la renta variable. Puede dejar los parámetros sin cambios, el parámetro Coef significa el coeficiente por el cual aumentaremos el tamaño de la operación si la renta variable está por debajo de su media móvil. Utiliza la fórmula:

nuevo tamaño comercial = coeficiente * tamaño original;

Poniéndolo a 2 duplicaremos el tamaño de la operación.
Haga clic en Aplicar y podremos comprobar los resultados de la simulación.

Podemos ver que esta vez el beneficio neto de la estrategia aumentó significativamente, pero también aumentó un poco el drawdown.
Podemos tomar como ejemplo que hay margen para influir significativamente en el rendimiento de la estrategia gestionando las operaciones utilizando su gráfico de renta variable en el pasado.

Reflexiones finales

El enfoque y los ejemplos que probamos en este artículo muestran sólo una de las muchas posibilidades de utilizar el control de la renta variable con su estrategia.
Quant Analyzer viene con otras 2 funciones de control de renta variable y le permite crear las suyas propias para probar sus propias ideas.

Qué hay que tener en cuenta
Hay algunas desventajas del control de las acciones que debemos conocer:

  • Es muy difícil de aplicar en EA - es fácil simular este tipo de control en Quant Analyzer, pero es otra tarea implementarlo en su EA. De hecho, no conozco ningún EA que utilice un enfoque similar de gestión de operaciones utilizando su capital.
  • Depende de la lógica de la estrategia original - no funcionará igual en todas las estrategias, depende de cosas como la relación Riesgo-Recompensa (tamaño del SL frente al PT), el "aspecto" y la inclinación de la curva de renta variable, el número de operaciones ganadoras y perdedoras consecutivas, etc.
  • A veces no funciona bien en "chuletas" - cuando la renta variable se mueve lateralmente, la estrategia controlada puede perder más que la normal, debido a su tendencia a perder operaciones rentables porque la renta variable está por debajo de su media.

En general, es una técnica que merece la pena tener en cuenta, y Quant Analyzer le permite simular los posibles resultados antes de ponerse a la tarea de aplicarla en su estrategia.

Suscríbase a
Notificar a
5 Comentarios
Más antiguo
Más reciente Más votados
Feedbacks de Inline
Ver todos los comentarios
Hani Hamdan
11. 12. 2021 10:24 am

Teóricamente está claro, pero ¿cómo se ejecutará esto? ¿puede hacerse automáticamente para que la estrategia deje de operar una vez que la curva cruce un indicador? y ¿cómo podemos hacerlo?

tomas262
Admin
Responder a  Hani Hamdan
13. 12. 2021 17:45

QuantAnalyzer no puede darle los códigos que gestionan el comercio de control de la equidad para usted. Usted tiene que implementar manualmente la función de control de la equidad directamente en EA

Ed Cas
Responder a  tomas262
21. 1. 2023 7:23 pm

QuantAnalyzer es una gran herramienta, ser capaz de aplicar la curva de control de la equidad de comercio real es el siguiente paso. Por favor, hágamelo saber su opinión sobre algoritmos de control de la equidad de trade-station:
https://community.tradestation.com/Discussions/Topic.aspx?Result=1&Topic_ID=119576&SearchTerm=equity+intraday&txtExactMatch=

Es el único algoritmo que promete cierto éxito hasta ahora. Las instrucciones para aplicar el proceso deben seguirse al pie de la letra.

Gracias por su aportación.

Ed Cas
Responder a  Hani Hamdan
21. 1. 2023 7:19 pm

Consulte comentar imagen

en el foro de ayuda de tradestaton.

De momento estoy experimentando con él y parece que funciona.

Ed Cas
21. 1. 2023 7:18 pm

He seguido una pista sobre el apoyo TS y encontró una manera de utilizar el control de la equidad en las estrategias.
Descarga el Ejemplo y sigue las instrucciones para instalarlo en la T.
Al menos en el ejemplo el código para controlar la línea de equidad está bien.
Descárgalo, pruébalo e infórmate.

https://community.tradestation.com/Discussions/Topic.aspx?Result=1&Topic_ID=119576&SearchTerm=equity%20intraday&txtExactMatch=

comentar imagenPublicado - 16/04/2012 15:02:44comentar imagen  comentar imagen  comentar imagen Plantilla y ejemplo de negociación de la curva de renta variable

https://community.tradestation.com/Discussions/DATA/20120418211655EC_BeforeAndAfter_EC Comercio Aplicado.JPG

https://community.tradestation.com/Discussions/DATA/20120416145356goose Arquitectura de negociación de la curva de renta variable.JPG

FINALIDAD DE ESTA PLANTILLA Y EJEMPLO
La Plantilla y Ejemplo de Curva de Equidad publicada aquí es una plantilla simple y un ejemplo de cómo la curva de equidad
puede realizarse a nivel de tick utilizando el Diccionario Global, y utilizando la arquitectura presentada
por oca en Topic_ID=119190. Se pretende sustituir el algoritmo simple utilizado por un algoritmo que
se aplica a las características de la curva de renta variable que se negocia.

LIMITACIONES DE ESTA PLANTILLA Y EJEMPLO
Tengo esta solución GlobalDictionary con TimeStamps trabajando y lo he utilizado ampliamente para el comercio de la CE
desarrollo. Pero es lento y se necesita un programador experimentado para configurarlo, y para obtener el ejemplo
funcionando, y sustituir el código de estrategia del ejemplo de plantilla por el código de estrategia del usuario. Esto no es
buena solución para el usuario general. Como señala mmillar, ELC/ADE es la solución preferida.

SIMULACIÓN DE ESTRATEGIAS EN FUNCIÓN, COMO ALTERNATIVA (actualización 18/7/2012)
He completado la simulación de una estrategia de ejecución continua que utiliza órdenes limitadas en una función que coincide con cada operación histórica de la estrategia durante un período de 10 años. La función se ejecuta continuamente y forma una curva EC y un algoritmo que se puede utilizar para activar y desactivar la estrategia. Conseguir que todas las operaciones históricas de la función coincidan con todas las operaciones históricas de la estrategia no fue una tarea fácil, y hubo que abordar muchas sutilezas y gotchas. A continuación, un par de sugerencias:

1) Cuando se emite una orden de mercado, no cambie la CC (variable para contratos actuales) en el momento en que se emite la orden de mercado. En su lugar, establezca una bandera para que CC se cambie en la siguiente barra.
2) Cuando una orden limitada es detectada como ejecutada, cambie la CC en ese momento, no espere hasta la siguiente barra.
3) En varias condiciones es necesario añadir código para distinguir entre la barra después de que una condición se vuelva falsa, de modo que no se emita ninguna orden en esa barra, pero todavía se pueda detectar un relleno. Este principio se aplica a condiciones tales como la condición de tiempo de negociación. Hay dos conjuntos de condiciones de tiempo de negociación para las órdenes limitadas, una para colocar operaciones y otra que es una barra más larga para controlar si las operaciones se completan.

Ahora la estrategia puede llamar a la función y activarse y desactivarse en consecuencia. Un indicador puede utilizar esa misma función para trazar puntos e indicadores relevantes.

DESCRIPCIÓN
Plantilla y ejemplo de negociación de la curva de renta variable
Versión 1.23 (8 de mayo de 2012: Añadido retardo de 2 compases a los receptores antes del primer acceso al diccionario,
para dar tiempo a que GlobalDictionary se cree y rellene antes de que se acceda a él.
Codificado y probado por ruletrader7320
Fecha de publicación: 16 de abril de 2012
Última actualización: 8 de mayo de 2012
Créditos:
   1) Ganso para la arquitectura de negociación de la curva de renta variable
   2) ganso para resolver el problema con el primer argumento de GlobalDictionary creaciones por Topic_ID=120035
Hilo de referencia: Topic_ID=119190
Finalidad: plantilla y ejemplo para la negociación de curvas de renta variable a nivel de tick, Arquitectura por oca

Componentes: La "Plantilla y ejemplo de negociación de la curva de renta variable" consta de los tres componentes siguientes
archivos de estrategia colocados en dos gráficos. La estrategia _ecStratTemplate&Example se coloca
en cada gráfico con un ajuste de entrada diferente:

Gráfico 1:
_ecStratTemplate&Example, con la entrada AutoON siempre en false en este gráfico.
_ecMonitor-sender(IOG) Para backtesting establecer backtestON a true.

Gráfico 2: (debe ser idéntico al primer gráfico)
_ecStratTemplate&Example, con la entrada AutoON siempre establecida en true en este gráfico.
_ecMonitor-receptor(IOG).

Se incluyen dos estrategias de diagnóstico para ayudar a diagnosticar problemas.

INSTALACIÓN
1) Actualice a la versión 9.1 de TradeStation o a la última versión si aún no la tiene.

2a) Importar 5 estrategias: _ecStratTemplate&Example, _ecMonitor-sender(IOG), _ecMonitor-receiver(IOG),
y dos diagnósticos, del siguiente ELD:.
Adjunto:DATA/20120508184752_EC_EQUITYCURVETRADING_TEMPLATEANDEXAMPLE_V1.23.ELD 40527 bytes

2b) Si su estrategia utiliza IntraBarOrderGeneration, entonces edite ecStratTemplate&Example y cambie
IntraBarOrderGeneration a true: [Intrabarordergeneration = true]

****** INICIO RÁPIDO PARA QUE EL EJEMPLO FUNCIONE ******

3) Forme un nuevo espacio de trabajo con dos gráficos idénticos uno al lado del otro, con el siguiente formato:
      symbol @ES
      Intervalo de barras de 60 minutos
      Última fecha: 04/12/2012
      5 meses atrás
      Zona horaria: cambio (CT)

      Después de configurar ambos gráficos, compruebe los ajustes de cada uno de ellos para asegurarse de que se han realizado correctamente
      (es mejor encontrar un problema ahora que pasarse horas intentando averiguar por qué no funciona después).

4) Inserte las siguientes 2 estrategias en el gráfico de la derecha, y configure iputs como se indica:
      a) _ecMonitor-sender(IOG), y establecer la entrada backtestON a truey, a continuación, establezca Estado en Desactivado (para ahorrar un poco de tiempo).      
      b) _ecStratTemplate&Example, y establecer la entrada AutoON a false.. y vuelva a activar el estado del remitente.

      NOTA 1: el estado debería ser Activado para ambas estrategias, y su gráfico derecho debería mostrar ahora las operaciones.

5) Inserte las 2 estrategias siguientes en el gráfico de la izquierda y configure las entradas como se indica.
      a) _ecStratTemplate&Example, y establecer la entrada AutoON a verdadero. si no se ha establecido ya.
      b) _ecMonitor-receptor(IOG), sin ajustes de entrada

      NOTA 2: Ahora su gráfico izquierdo debería mostrar operaciones (pero deberían faltar algunas operaciones mostradas en el gráfico derecho).
      
6) Visualice las curvas de equidad de los gráficos derecho e izquierdo. Deberían mostrar menos operaciones en el gráfico de la izquierda
(pero esto no coincidirá con las curvas actuales en la parte superior debido a los cambios para IOG).
Si esto no funciona,
      a) Desactive todas las estrategias de los dos gráficos.
      b) A continuación, active las estrategias en el gráfico de la derecha y revise el gráfico en busca de operaciones.
      c) Después de que las operaciones se muestren en el gráfico de la derecha, active las estrategias en el gráfico de la izquierda (receptor).
      d) Las curvas deberían ser diferentes, con menos operaciones en el gráfico de la izquierda.
      NOTA: Para repetirlo, deben ejecutarse las estrategias del gráfico de la izquierda después de estrategias en el gráfico de la derecha tienen
      completado y rellenado el GlobalDictionary. (Véase la sección siguiente y los pasos en la parte d.)

****** BACKTESTING & LIVE TRADING ******

7) Ajustes para backtesting y live trading.
   Para backtesting:
      a) Ajustar la entrada backtestON a true en la estrategia_ecMonitor-sender(IOG).
      b) Desactivar la automatización en el gráfico del receptor (gráfico que contiene _ecMonitor-receptor(IOG),
      y contiene _ecStratTemplat&Example, y mantener la entrada AutoON establecida en true).
      c) El backtesting no puede realizarse en un gráfico que reciba datos en tiempo real. Ponga una fecha de finalización
      gráfico anterior a la fecha actual si está conectado a TradeStation.
      d) Pasos para realizar backtests consecutivos con cambios en la estrategia entre backtests:
      - 1. En el gráfico de la izquierda (receptores), desactive ambas estrategias estableciendo su estado en OFF.
      - 2. Realice los cambios deseados en la estrategia (ecStratTemplat&Example) y verifíquelos.
      - 3. Las estrategias en el gráfico de la derecha deberían estar activadas y ahora deberían volver a ejecutarse, así que supervise el gráfico de la derecha.
      - 4. Después de que las estrategias de la derecha hayan terminado de ejecutarse (y GlobalDictionary ahora poblado),
      --activar las estrategias en el gráfico de la izquierda que ahora se ejecutarán contra los nuevos valores de GlobalDictionary.
      - 5. Una vez ejecutadas las estrategias del gráfico de la izquierda y analizado el rendimiento, apague el
      -estrategias en el gráfico de la izquierda en preparación para el siguiente ciclo (de modo que estas estrategias de la izquierda
      --chart sólo se ejecutará después de estrategias en el gráfico de la derecha). Ahora repita cuidadosamente los pasos.
   Para operar en directo:
      a) Ajustar la entrada backtestON a false en la estrategia_ecMonitor-sender(IOG).
      b) Active la automatización (ventana Análisis de formato ...) en el gráfico izquierdo del receptor y mantenga AutoON en verdadero.

****** SUSTITUYENDO EL CÓDIGO DE EJEMPLO POR SU CÓDIGO ******

8) Una vez que el ejemplo esté funcionando, puede actualizar las estrategias de ejemplo con su código, omitiendo
todos menos el último paso d) de esta sección. O puedes formar un nuevo conjunto de estrategias idéntico al del ejemplo
estrategias y, a continuación, actualizar las nuevas estrategias con Designer Generado y código de inicialización, y
con su código de acuerdo con los siguientes pasos:
   a) Forme tres nuevas estrategias y copie y pegue el código exacto de emisor, receptor y estrategia de este ejemplo.
   b) Para cada estrategia, configure el Designer Generated y el código de inicialización como sigue:
      1. Con la ventana del editor de la nueva estrategia en primer plano, seleccione "Ver/Barras de herramientas/Propiedades",
      o haga clic en el icono "Ventana de propiedades" de la barra de herramientas superior. Aparecerá una ventana de propiedades.
      2. Haga clic en el icono "Eventos" (rayo) de la ventana de propiedades.
      3. Haga doble clic en el campo en blanco "Valor" a la derecha de "Inicializado" y debería aparecer lo siguiente
      rellenar ese campo: "AnalysisTechnique_Initialized" .... Esto formará el Código Generado por el Diseñador
      y el código del evento de inicialización en la estrategia.
      4. Observe el nuevo bloque de código cerca de la parte superior que comienza con "method void AnalysisTechnique_Initialized ...".
      Vamos a tomar esa línea y reemplazar una línea más abajo que puede ser idéntica o casi idéntica
      con esa línea y, a continuación, elimine el nuevo bloque de código con los siguientes pasos:
      - Elimine la línea anterior que comienza de la misma manera.
      - Copie la nueva línea y péguela donde acaba de borrar la anterior.
      - Elimina el nuevo bloque de código en la parte superior, todo lo que necesitábamos era esa nueva línea.
   c) Ahora asegúrate de que el nuevo conjunto de estrategias funciona exactamente igual que en el ejemplo
   siguiendo los pasos del 3 al 6, empezando por formar dos nuevos gráficos. (Como ya ha hecho
   esto para el ejemplo, esto no tomará mucho tiempo y confirmará su punto de partida y revisión haciendo
   la configuración correcta de backtestON y AutoON).
   d) En la ventana del editor de cada estrategia, busque en SUSTITUIR y sustituya o actualice el ejemplo
   código de la plantilla con su propio código y configuración según las instrucciones que siguen a SUSTITUIR.
      NOTA: este paso requiere conocimientos avanzados de programación.

****** RESOLUCIÓN DE PROBLEMAS ******

9) DIAGNÓSTICO y RESOLUCIÓN DE PROBLEMAS: Si surgen problemas, revise siempre en primer lugar la entrada
los ajustes de la carta (deben ser idénticos), y repita la siguiente secuencia de apagado y encendido:
      - Desactive todas las estrategias de los dos gráficos.
      - A continuación, active las estrategias en el gráfico de la derecha (emisor) y revise el gráfico para ver las operaciones.
      - Después de que las operaciones se muestren en el gráfico de la derecha, active las estrategias en el gráfico de la izquierda (receptor).

   Si las comprobaciones y la secuencia de encendido y apagado no resuelven el problema, realice la siguiente prueba de diagnóstico:
      a) Inserte _ecDiagnosticSender en el gráfico de la derecha. (ya importado en el paso 2)
      b) Inserte _ecDiagnosticReceiver en el gráfico de la izquierda. (ya importado en el paso 2)
      c) Si no se produce ninguna excepción, abra el siguiente archivo con el editor de su elección (por ejemplo, Notebook):
      c:ecDiagnosticChart.txt.
      Ese archivo debe contener las dos líneas siguientes (con diferentes marcas de tiempo).
      1120412 2015 Chart_01 19/4/2012 12:07:54 PM
      1120412 2015 Chart_02 19/4/2012 12:07:57 PM

      d) Si el archivo de diagnóstico no lanza una excepción y el archivo de salida muestra las dos líneas correctas, entonces
      la prueba de diagnóstico ha pasado y la aplicación debería funcionar. Tal vez se instaló incorrectamente o un ajuste
      falló. Por lo tanto, elimine todas las estrategias y gráficos instalados, reinicie el ordenador y reinicie TradeStation.
      y cuidadosamente hacer una nueva instalación en nuevas cartas.
      
      e) Si el diagnóstico falló, o un reinicio y una nueva instalación no resuelven el problema, entonces solicite más
      asistencia en los foros y PM el autor para una posible asistencia adicional. Asegúrese de ser muy detallado sobre
      cuál es el problema, incluido el mensaje de error exacto, qué paso falló, cuáles son los ajustes de entrada, cuál es la
      qué cambios se han hecho en el código, si los ha habido, etc.
///////////////////////////////////

También lo he hecho con SPY y funciona - No he utilizado en el comercio real todavía.

comentar imagen

Hágame llegar sus comentarios.
Así que, por fin, será posible aplicar el control de la equidad.

Seguir leyendo