Documentación

Aplicaciones

Última actualización el 24. 1. 2023 by Mark Fric

Limitaciones del Backtest de Stockpicker

La selección de valores y, en general, las estrategias de negociación diaria tienen algunas particularidades que se explicarán a continuación.

 

Explicación del calendario de ejecución de la estrategia

Lo primero es que puede elegir el momento en que se activa (evalúa) la estrategia entre tres valores posibles:

  • Antes de la apertura del bar - evalúa la estrategia antes de la apertura del mercado (para estrategias diarias)
  • En Barra Libre - evalúa la estrategia en la apertura del mercado
  • Al cierre del bar - evalúa la estrategia al cierre del mercado (poco antes)

La elección del momento en que se evalúa la estrategia afecta a los precios disponibles tanto en las operaciones reales como en las pruebas retrospectivas.

 

Usamos el parámetro llamado Shift para denotar el índice del valor, por ejemplo Open[0] significa precio de apertura con Shift=0, y significa precio de apertura de la barra actual (más reciente).
Open[1] significa Abierto con Shift=1, lo que significa una barra atrás.

Cuando utilice bloques con Shift=0 (valor de las barras actuales) en su estrategia debe ser extra cauteloso, porque podrían significar cosas diferentes dependiendo de cuando evalúe la estrategia.

De nuevo los tres posibles tiempos de evaluación y sus implicaciones:

Antes de la apertura del bar

evalúa la estrategia antes de la apertura del mercado (para estrategias diarias).

La plataforma lo activa unos minutos antes de la apertura real del mercado, luego se evalúan las condiciones y se crean las órdenes.
Las operaciones se ejecutan cuando se abre el mercado.

Implicaciones
El bloque con Shift=0 devuelve el valor actual de la última barra terminada.
Así, por ejemplo, Close[0] devuelve el precio de cierre del ANTERIOR día de mercado finalizado, no del día de mercado que comenzará dentro de un rato.
Open[0] devuelve el precio de apertura del día de mercado anterior y así sucesivamente.
Puede utilizar con seguridad Shift=0 en todos los bloques, pero se refieren a la última barra cerrada - anterior al día de mercado.

 

En Barra Libre

evalúa la estrategia en la apertura del mercado.

La plataforma lo activa unos minutos después de la apertura real del mercado para permitir la consolidación de los precios.
Las operaciones se ejecutan inmediatamente.

Implicaciones
El bloque con Shift=0 devuelve el valor del día real de mercado abierto.
Por tanto, Open[0] devuelve el precio de apertura actual del mercado.
Close[0] devuelve el precio de apertura, porque el precio de cierre actual del día no se conoce todavía (es el comienzo del día de mercado).
Lo mismo para High[0], Low[0] - en la apertura del mercado el máximo y mínimo del día de negociación actual aún no se conoce.
Puede utilizar con seguridad Shift=0 SÓLO con bloques de precios abiertos, y calcular indicadores sólo utilizando precios abiertos.

 

Al cierre del bar

evalúa la estrategia al cierre del mercado.

La plataforma lo activa unos minutos ANTES del cierre real del mercado para permitir ejecuciones correctas.
Las operaciones se ejecutan inmediatamente.

Implicaciones
El bloque con Shift=0 devuelve los valores del cierre real del día de mercado.
Open[0] devuelve el precio de apertura actual del mercado.
Close[0] devuelve el precio real en tiempo real - muy cercano al precio real de Cierre.
Puede utilizar Shift=0 de forma segura con todo tipo de precios e indicadores. Debido a que la estrategia se evalúa muy cerca del cierre real del mercado
los precios Máximo, Mínimo y Cierre del día de negociación actual serán muy precisos.

Nota especial sobre los indicadores

los ejemplos anteriores muestran cómo se ven afectados los precios simples como Open, High, Low, Close cuando se utilizan con Shift=0,
pero debe darse cuenta de que también hay indicadores que pueden calcularse a partir de precios que aún no se conocen.
Por ejemplo, calcular la EMA a partir de Close con Shift=0 devolverá resultados incorrectos cuando se utilice con el activador On Bar Open, porque los valores de Close[0] aún no se conocen en ese momento.
Lo mismo para los indicadores estándar como ATR - ATR con Shift[0] se calcula utilizando High[0], Low[0] que de nuevo no se conocen en la apertura del mercado.

 

Datos semanales y mensuales

También se dispone de datos semanales y mensuales. Para la semana y el mes en curso, el precio de cierre se obtiene simplemente a partir del precio del último día de negociación. Los datos de la semana y el mes en curso se refieren simplemente utilizando la barra [0] (por ejemplo, máximo semanal [0] o cierre mensual [0], etc.).

 

Manejo de Stop Loss y Profit Targets en backtesting

El backtesting de las estrategias de Stockpicker debe ser rápido - tenemos que evaluar una estrategia en cientos o miles de acciones. Por ello, en el backtest sólo utilizamos precios diarios OHLC.
No es posible utilizar datos de minutos o ticks para el motor Stockpicker.

El uso de datos OHLC diarios tiene una desventaja que no puede resolverse fácilmente: no conocemos el movimiento intradiario del precio.
No es un problema en la mayoría de los casos, describimos cómo SQ backtestng motor maneja esto para asegurarse de backtests son fiables.

El problema podría surgir cuando se utiliza SL + PT, o la entrada en Stop / Límite combinado con SL o PT.
En ambos casos hay más de un nivel de precio stop o límite - entrada (stop/límite), SL, PT.

El problema al que nos enfrentamos es en situaciones en las que estos niveles están tan cerca el uno del otro que ambos podrían llenarse intradía en el día de mercado.
Sin datos reales, no podemos saber cuál de estos niveles se alcanzará primero, por lo que no podemos simular de forma fiable la entrada en el stop/límite seguida del SL o PT en la misma barra.

En las operaciones reales, el SL+PT se añade inmediatamente cuando se abre la operación, pero por las razones mencionadas anteriormente no podemos simularlo de forma fiable en el backtester, ya que daría lugar a backtests demasiado optimistas y poco realistas.

Para garantizar la fiabilidad de los resultados, el motor del backtester detecta este tipo de situaciones y las trata así:

  • Cuando Entrada es Mercado, sólo SL o sólo PT está fijado - en este caso podemos evaluar SL o PT inmediatamente, en la misma barra
  • Cuando la entrada está en Stop/Limit y SL, PT o ambos están fijados - en este caso SL & PT se aplican sólo al día siguiente, no sabemos si el precio de entrada o SL/PT se alcanzó en la barra abierta por lo que no podemos evaluarlo inmediatamente.
  • Cuando se utiliza tanto SL como PT, y ambos podrían haberse llenado en una barra - backtester toma SL para hacer una variante pesimista, ya que no sabemos cuál de ellos se llenaría primero.

 

Esta situación generalmente afecta al rendimiento de la estrategia sólo si utiliza Stop Loss o Profit Target muy ajustados - no lo haga y no tendrá este problema.

 

Pequeñas diferencias en los tiempos de ejecución entre el backtest y la negociación en vivo

Tenga en cuenta que en el backtester, cuando la operación se abre a la apertura o al cierre del mercado utilizando Entrar a Mercado (o Salir al final del día), se abre al precio de Apertura/Cierre de los datos - el precio real de Apertura o Cierre del mercado.

En el comercio en vivo esto no es 100% alcanzable - cuando se activa la estrategia en la barra abierta, que será evaluado y ejecutado un tiempo muy corto DESPUÉS de la apertura real del mercado. Lo mismo ocurre con el cierre de la barra: se ejecuta muy poco tiempo ANTES del cierre real del mercado.

Se maneja así porque no es posible activar sus órdenes exactamente a la apertura o cierre del mercado. Debido a esto, los precios de mercado de "Apertura" y "Cierre" tomados en estos momentos no coincidirán con los precios de mercado de Apertura o Cierre reportados en los datos históricos. La diferencia será insignificante, y no debería afectar al rendimiento de su estrategia, pero seguirá estando ahí.

 

¿Le ha resultado útil este artículo? El artículo era útil El artículo no era útil

Suscríbase a
Notificar a
0 Comentarios
Feedbacks de Inline
Ver todos los comentarios