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.
Tomando como ejemplo la estrategia de cronometraje FMZ Quant
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.
Haga clic en la biblioteca de operaciones
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.
Rellene el
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.
Antes de hacer backtesting, determine su estrategia de trading. Aquí tomamos la estrategia de tiempo
// 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.
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?
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.
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.
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.
Trate de copiar la estrategia en esta sección y backtest.
Trate de mejorar y optimizar la estrategia en esta sección en función de su experiencia comercial.