O recurso está a ser carregado... Carregamento...

5.2 Como fazer backtesting quantitativo de negociação

Autora:Bem-estar, Criado: 2019-05-08 13:08:52, Atualizado:

Resumo

O significado e a importância do backtesting é indubitável. Ao fazer o backtesting quantitativo, a estratégia deve ser colocada no ambiente histórico o mais real e próximo possível. Se alguns detalhes no ambiente histórico forem ignorados, todo o backtesting quantitativo pode ser inválido.

O backtesting é equivalente à reprodução de dados. Ao reproduzir dados históricos da linha K e executar regras de negociação de mercado real, como a taxa de Sharpe, taxa máxima de retracement, taxa de retorno anualizada e curvas de capital.

O FMZ Quant, como um software comercial de negociação quantitativa, vem com o motor de backtest de alto desempenho, usando o frame de backtest for-loop (polling), para quantificar o cálculo mais rapidamente.

FMZ Quant Backtest Interface Introdução

  • Passo 1

Tomando a estratégia de tempo do FMZ Quant Thermostat como exemplo, vamos abrir o site oficial do FMZ Quant (www.fmz.com). Clique no painel, estratégia, selecione uma estratégia, clique em backtest e vá para a página seguinte:

5.2 How to do quantitative trading backtesting 5.2 How to do quantitative trading backtesting

Na interface de configuração de backtest, você pode personalizá-lo de acordo com suas necessidades reais. Como: definir o período de backtest, o ciclo de linha K, o tipo de dados (dados de nível de simulação ou dados de nível de mercado real. Em contraste, a velocidade de backtesting de dados de nível de simulação é mais rápida, o backtesting de dados de nível de mercado real é mais preciso). Além disso, você também pode definir a taxa de comissão para o backtest e os fundos iniciais da conta.

  • Passo 2

Clique na biblioteca de negociação mylanguage core (porque essa estratégia é escrita pela linguagem M, se você usar outra linguagem de programação, essa opção pode não aparecer) Em primeiro lugar, defina o rótulo de negociação. A linguagem FMZ Quant M tem dois tipos de métodos de execução de backtest, que são: o modelo de preço de fechamento e o modelo de preço mais recente. O modelo de preço de fechamento refere-se à execução do modelo após a linha K atual ser concluída, e a negociação é executada no início da próxima linha K; O modelo de preço mais recente refere-se à execução de um modelo para cada mudança de preço, e quando o sinal de negociação é estabelecido, ele será negociado imediatamente.

5.2 How to do quantitative trading backtesting 5.2 How to do quantitative trading backtesting

O tamanho padrão do lote aberto refere-se ao montante da posição de abertura e fechamento durante o backtesting. Quantidade máxima de negociação uma vez é a posição máxima de abertura que é enviada para o motor de backtest por uma única transação.

A diferença entre o preço de negociação real e o preço de negociação planejado é sempre significativa. Este desvio geralmente se move em uma direção que não é favorável para o comerciante, resultando em perdas adicionais na negociação.

  • Passo 3

Preencha o contrato de futuros com o tipo de contrato que você quer backtest, para cryptocurreny, nós só precisamos especificar o período de k-linha que queremos backtest, neste caso, basta usar semana k linha, então, colocar this_week em.

5.2 How to do quantitative trading backtesting

A opção configurações de mercado real é usada principalmente para negociação de mercado real, no ambiente de backtesting, nós apenas mantemos que a configuração padrão será boa. Se o progresso de recuperação automática for marcado como verdadeiro, então quando o robô parar no mercado real, reiniciar o robô irá restaurar automaticamente a posição do sinal anterior sem recalcular o sinal. o número de tentativas de ordem definido para 20 por padrão. Quando a encomenda falha, ele tentará reenviar até 20 vezes. Intervalo de votação de rede (milissegundos) é onde o robô executa o código de estratégia a cada outra vez.

5.2 How to do quantitative trading backtesting

  • Passo 4

Opção de negociação spot é principalmente para negociação de criptomoedas, quando backtesting, mantê-lo nas configurações padrão vai ficar bem. Se você quiser, você pode especificar todos os parâmetros nessas configurações.

5.2 How to do quantitative trading backtesting

Estratégia Backtest

Antes do backtesting, determine sua estratégia de negociação. Aqui, tomamos a estratégia de tempo Thermostat como exemplo. Esta estratégia adotará uma estratégia de tendência no mercado de tendência de acordo com o estado do mercado e adotará uma estratégia de oscilação no mercado volátil. O código fonte é como mostrado abaixo (também pode ser baixado na página de estratégia do Quadrado do site 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;

Na interface de backtesting de simulação, depois de configurar as configurações de backtesting, clique no botão Start Backtest, e os resultados do backtest serão exibidos imediatamente após alguns segundos. No log do backtest, ele mostrará quantos segundos foram usados para backtest, logs e o número total de transações. As informações da conta imprimem os resultados finais do backtest da estratégia: lucro e perda médio, lucro e perda de posição, margem, taxas de comissão e retornos estimados.

5.2 How to do quantitative trading backtesting

A barra de status registra a variedade de negociação, as posições, os preços das posições, o preço mais recente, os tipos de sinal de negociação anteriores, o preço mais alto e mais baixo das posições, o número de atualizações, bem como informações de capital e tempo.

Entre eles, o indicador de desempenho mais importante é: taxa de Sharpe. Foi ao implementar o índice abrangente considerar os benefícios e riscos, e é um índice importante para medir um produto de fundo. Em geral, é quanto risco você suporta, cada vez que você ganha lucro, então o valor da taxa de Sharpe é maior, melhor.

A volatilidade anualizada, em termos simples, a anualização de um número pressupõe que as observações em um curto período de tempo continuarão ao longo de um ano. É uma medida do risco do fundo, mas definitivamente não é o risco total. Por exemplo, a Estratégia A tem uma volatilidade maior, mas tem sido volatilidade para cima, o lucro é bom; A Estratégia B tem uma pequena volatilidade, mas tem se movido de forma constante (à pouco e nem se move). Podemos dizer que a Estratégia B é melhor que a Estratégia A?

5.2 How to do quantitative trading backtesting

Por último, nas informações do diário, um registo pormenorizado de cada situação de negociação por intermédio de corretores no momento do backtesting, incluindo a hora específica da negociação, as informações de troca, o tipo de posição aberta e de posição fechada, o mecanismo de correspondência de ordens do mecanismo de backtest, bem como o número de transações e as informações impressas.

5.2 How to do quantitative trading backtesting

Após o teste de retorno

Muitas vezes, e na maioria dos casos, os resultados do backtesting estarão longe do que você espera. Afinal, uma estratégia de longo prazo, estável e rentável não é tão fácil de obter, o que requer sua capacidade de entender o mercado.

Se os resultados do backtest de sua estratégia estão perdendo dinheiro, não se desanime. Isso é realmente bastante normal. verifique se a lógica da estratégia foi mal interpretada pelo código, se está usando alguns parâmetros extremos, se está usando condições de posição de abertura demais, etc. Também é necessário reexaminar as estratégias de negociação e ideias de negociação de outro ângulo.

Se os resultados do backtest de sua estratégia forem muito bons, a curva de financiamento é perfeita, com uma taxa de Sharpe superior a 1. Por favor, não tenha pressa. Neste caso, a maioria das situações está usando as funções futuras, roubando preços, superajustando ou não adicionando preço de deslizamento, etc. Você pode usar os dados fora da amostra e a simulação de negociação no mercado real para excluir esses problemas.

Resumindo

O processo de backtesting da estratégia de negociação é o seguinte, pode-se dizer que foi específico em todos os detalhes. Deve-se notar que o backtesting de dados históricos é um ambiente ideal onde todos os riscos são conhecidos. Portanto, é melhor passar por uma rodada de mercado de touros e ursos para o tempo de backtesting da estratégia. O número efetivo de negociações deve ser não inferior a 100 vezes, a fim de evitar alguns viés de sobreviventes.

O mercado está sempre em processo de mudança e evolução. A estratégia histórica de backtesting não significa que o futuro será o mesmo. Não é apenas para deixar a estratégia lidar com os riscos possíveis conhecidos no ambiente de backtesting, mas também para lidar com os riscos desconhecidos no futuro. Portanto, é muito necessário aumentar a resistência ao risco e a universalidade da estratégia.

Exercícios após a escola

  1. Tente copiar a estratégia nesta seção e testá-la.

  2. Tente melhorar e otimizar a estratégia nesta seção com base em sua experiência comercial.


Mais informações