En la carga de los recursos... Cargando...

5.2 Cómo hacer backtesting de operaciones cuantitativas

El autor:La bondad, Creado: 2019-05-08 13:08:52, Actualizado:

Resumen de las actividades

La importancia y importancia de la backtesting es indudable. Al hacer backtesting cuantitativo, la estrategia debe colocarse en el entorno histórico lo más real y cercano posible. Si se ignoran algunos detalles en el entorno histórico, toda la backtesting cuantitativa puede ser inválida.

La prueba de retroceso es equivalente a la reproducción de datos. Al reproducir datos históricos de la línea K y realizar reglas de negociación en el mercado real, como la relación Sharpe, la tasa máxima de retroceso, la tasa de retorno anualizada y las curvas de capital.github.com, que se puede personalizar de forma flexible.

El FMZ Quant como un software comercial de comercio cuantitativo, viene con el motor de backtest de alto rendimiento, utilizando el marco de backtest for-loop (polling), para cuantificar el cálculo más rápido.

Introducción de la interfaz de prueba de retroceso cuántica FMZ

  • Paso 1

Tomando como ejemplo la estrategia de cronometraje FMZ Quant Thermostat, abramos el sitio web oficial de la FMZ Quant (www.fmz.com.) Haga clic en el panel de control, Estrategia, seleccione una estrategia, haga clic en backtest, y vaya a la siguiente página:

img img

En la interfaz de configuración de backtest, puede personalizarlo de acuerdo con sus necesidades reales. Por ejemplo: establecer el período de backtest, el ciclo de línea K, el tipo de datos (datos de nivel de simulación o datos de nivel de mercado real. En contraste, la velocidad de backtesting de datos de nivel de simulación es más rápida, la backtesting de datos de nivel de mercado real es más precisa). Además, también puede establecer la comisión por la backtest y los fondos iniciales de la cuenta.

  • Paso 2

Haga clic en la biblioteca de operaciones mylanguage core (ya que esta estrategia está escrita por lenguaje M, si usa otro lenguaje de programación, esta opción puede no aparecer) En primer lugar, establezca la etiqueta de operaciones. El lenguaje FMZ Quant M tiene dos tipos de métodos de ejecución de backtest, que son: el modelo de precio de cierre y el modelo de precio más reciente. El modelo de precio de cierre se refiere a la ejecución del modelo después de que se complete la línea K actual, y la negociación se ejecuta al comienzo de la siguiente línea K; El modelo de precio más reciente se refiere a la ejecución de un modelo para cada cambio de precio, y cuando se establezca la señal de negociación, se operará inmediatamente.

img img

El tamaño predeterminado del lote abierto se refiere al monto de la posición de apertura y cierre en el backtesting. Medio máximo de transacción una vez es la posición máxima de apertura que se envía al motor de backtest con una sola transacción.

En el caso de los precios de negociación, los precios de negociación en el mercado de valores son los precios de negociación de los mercados de divisas, los precios de negociación en el mercado de divisas y los precios de negociación en el mercado de divisas.

  • Paso 3

Rellene el contrato de futuros con el tipo de contrato que desea backtest, para cryptocurreny, sólo tenemos que especificar el período de k-línea que queremos backtest, en este caso, sólo utilizar semana k línea, así que, poner this_week en.

img

configuración del mercado real opción se utiliza principalmente para la negociación del mercado real, en el entorno de backtesting, sólo mantenemos que la configuración predeterminada estará bien. Si el progreso de recuperación automática está marcado como verdadero, entonces cuando el robot se detiene en el mercado real, reiniciar el robot restablecerá automáticamente la posición de la señal anterior sin recalcular la señal. el número de intentos de orden establecido a 20 por defecto. Cuando la orden falla, intentará volver a enviar hasta 20 veces. Intervalo de votación de red (millisegundos) es donde el robot ejecuta el código de estrategia cada otra vez.

img

  • Paso 4

La opción de negociación al contado es principalmente para el comercio de criptomonedas, cuando se hace backtesting, mantenerla en la configuración predeterminada estará bien. Si lo desea, puede especificar todos los parámetros en estas configuraciones. Además, para algunos intercambios de criptomonedas, también puede establecer tamaños de apalancamiento y otras configuraciones relacionadas.

img

Estrategia de prueba de retroceso

Antes de hacer backtesting, determine su estrategia de trading. Aquí tomamos la estrategia de tiempo Thermostat como ejemplo. Esta estrategia adoptará una estrategia de tendencia en el mercado de tendencia de acuerdo con el estado del mercado, y adoptará una estrategia Oscilante en un mercado volátil. El código fuente es el que se muestra a continuación (también se puede descargar desde la página de Estrategia Square del sitio web FMZ Quant):

// Calculate CMI indicator to distinguish between Oscillating and trend market
CMI:=ABS(C-REF(C,29))/(HHV(H,30)-LLV(L,30))*100;

// Define key prices
KOD:=(H+L+C)/3;

// In the Oscillating market, the closing price is greater than the key price is suitable for selling market, otherwise it is for buying market
BE:=IFELSE(C>KOD,1,0);
SE:=IFELSE(C<=KOD,1,0);

// Define 10-day ATR indicator
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR10:=MA(TR,10);

// Define the highest and lowest price 3-day moving average
AVG3HI:=MA(H,3);
AVG3LO:=MA(L,3);

// Calculate the entry price of the Oscillating market
LEP:=IFELSE(C>KOD,O+ATR10*0.5,O+ATR10*0.75);
SEP:=IFELSE(C>KOD,O-ATR10*0.75,O-ATR10*0.5);
LEP1:=MAX(LEP,AVG3LO);
SEP1:=MIN(SEP,AVG3HI);

// Calculate the entry price of the trend market
UPBAND:=MA(C,50)+STD(C,50)*2;
DNBAND:=MA(C,50)-STD(C,50)*2;

// Calculate the quit price of the trend market
MA50:=MA(C,50);

// Oscillating strategy logic
CMI<20&&C>=LEP1,BK;
CMI<20&&C<=SEP1,SK;
CMI<20&&C>=AVG3HI,SP;
CMI<20&&C<=AVG3LO,BP;

// Trend strategy logic
CMI>=20&&C>=UPBAND,BK;
CMI>=20&&C<=DNBAND,SK;
CMI>=20&&C<=MA50,SP;
CMI>=20&&C>=MA50,BP;
AUTOFILTER;

En la interfaz de backtesting de simulación, después de configurar la configuración de backtesting, haga clic en el botón Inicio de backtesting, y los resultados de backtesting se mostrarán inmediatamente después de unos segundos. En el registro de backtest, mostrará cuántos segundos se usaron para backtest, registros y el número total de transacciones. La información de la cuenta imprime los resultados finales de la backtest de estrategia: ganancias y pérdidas promedio, ganancias y pérdidas de posición, margen, comisiones y rendimientos estimados.

img

La barra de estado registra la variedad de operaciones, las posiciones, los precios de las posiciones, el precio más reciente, los tipos de señales comerciales anteriores, el precio más alto y más bajo de las posiciones, el número de actualizaciones, así como la información de capital y tiempo. Además, en la etiqueta de ganancias y pérdidas flotantes, se muestra la curva de fondos detallada de la cuenta, y también se incluyen los indicadores de rendimiento comúnmente utilizados: la tasa de rendimiento, la tasa de rendimiento anualizada, la relación Sharpe, la volatilidad anualizada y la tasa máxima de retroceso, que básicamente pueden satisfacer la gran mayoría de las necesidades de los usuarios.

Entre ellos, el indicador de rendimiento más importante es: Sharpe ratio. Fue al implementar el índice integral considerar los beneficios y riesgos, y es un índice importante para medir los productos de un fondo. En general, es cuánto riesgo asumes, cada vez que ganas ganancias, por lo que el valor del índice Sharpe es mayor, mejor.

La volatilidad anualizada, en pocas palabras, la anualización de una cifra asume que las observaciones durante un corto período de tiempo continuarán en el transcurso de un año. Es una medida del riesgo del fondo, pero definitivamente no es el riesgo completo. Por ejemplo, la Estrategia A tiene una mayor volatilidad, pero ha sido volatilidad al alza, el beneficio es bueno; La Estrategia B tiene una pequeña volatilidad, pero se ha estado moviendo constantemente ((casi no se mueve en absoluto). ¿Podemos decir que la Estrategia B es mejor que la Estrategia A?

img

Por último, en la información del registro, un registro detallado de cada situación de negociación con intermediarios durante la prueba posterior, incluida la hora específica de la negociación, la información del intercambio, el tipo de posición abierta y cerrada, el mecanismo de correspondencia de órdenes del motor de prueba posterior, así como el número de transacciones e información de impresión.

img

Después de las pruebas de retroceso

Muchas veces, y en la mayoría de los casos, los resultados de las pruebas de retroceso estarán lejos de lo que espera.

Si los resultados de su estrategia backtest están perdiendo dinero, no se desanime. Esto es en realidad bastante normal. compruebe si la lógica de la estrategia ha sido malinterpretada por el código, si está utilizando algunos parámetros extremos, si está utilizando demasiadas condiciones de posición de apertura, etc. También es necesario volver a examinar las estrategias de negociación e ideas comerciales desde otro ángulo.

Si los resultados de la prueba de retroceso de su estrategia son muy buenos, la curva de financiación es perfecta, con una relación Sharpe superior a 1. Por favor, no tenga prisa. En este caso, la mayoría de las situaciones están utilizando las funciones futuras, robando precios, sobreajuste, o sin precio de deslizamiento agregado, etc. Puede usar los datos fuera de la muestra y la simulación de operaciones en el mercado real para excluir estos problemas.

En resumen

Lo anterior es todo el proceso de backtesting de la estrategia comercial, se puede decir que ha sido específico en cada detalle. Debe tenerse en cuenta que el backtesting de datos históricos es un entorno ideal donde se conocen todos los riesgos. Por lo tanto, lo mejor es pasar por una ronda de mercado alcista y bajista para el tiempo de backtesting de la estrategia. El número efectivo de operaciones no debe ser inferior a 100 veces, para evitar algunos sesgos de los sobrevivientes.

El mercado está siempre en proceso de cambio y evolución. La estrategia histórica de backtesting no significa que el futuro será el mismo. No es sólo para dejar que la estrategia haga frente a los posibles riesgos conocidos en el entorno de backtesting, sino también para 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.

Ejercicios extraescolares

  1. Trate de copiar la estrategia en esta sección y backtest.

  2. Trate de mejorar y optimizar la estrategia en esta sección en función de su experiencia comercial.


Más.