3
focar em
1444
Seguidores

Instruções de backtesting da plataforma quantitativa FMZ Inventor

Criado em: 2019-07-06 12:15:50, atualizado em: 2023-10-25 20:00:15
comments   22
hits   9711

Instruções de backtesting da plataforma quantitativa FMZ Inventor

A maioria das estratégias precisa ser testada para verificação antes de serem colocadas em prática. A FMZ suporta alguns tipos de contratos spot, futuros e perpétuos de moeda digital, bem como todos os tipos de futuros de commodities. No entanto, o mecanismo de backtesting da Inventor Quantitative Platform é diferente do backtesting onbar comum, o que tem causado confusão para muitos novatos. Este artigo explicará e responderá algumas perguntas comuns sobre backtesting em detalhes.

Como funciona o sistema de backtesting?

Instruções de backtesting da plataforma quantitativa FMZ Inventor

Conforme mostrado na figura acima, o tempo de início até o fim do backtest pode ser considerado um eixo de tempo. Durante o backtest, o ponto de tempo do backtest se move da esquerda para a direita ao longo do eixo para iniciar o backtest. Neste ponto de tempo, apenas este ponto pode ser obtido. A estratégia usa dados históricos anteriores para fazer compras e vendas com base nesses dados, resultando, em última análise, em lucro ou prejuízo. Obviamente, a distribuição dos pontos de tempo do backtesting é discreta, e a densidade da distribuição representa a precisão do backtesting. É claro que, considerando que quanto mais densos os pontos de tempo do backtesting, mais tempo ele leva, o sistema de backtesting real precisa fazer uma troca entre precisão e eficiência.

Mecanismo tradicional de backtesting onBar

O mecanismo de backtesting onbar é baseado na K-line, ou seja, cada K-line gera um ponto de tempo de backtesting, no qual os preços de abertura máxima e fechamento mínimo, volume de negociação e outras informações da K-line atual podem ser obtidos, como bem como as informações anteriores a esse ponto de tempo. Informações históricas da linha K. A desvantagem desse mecanismo é óbvia: apenas uma compra e venda podem ser geradas em uma linha K, e o preço geralmente é baseado no preço de fechamento da linha K. Além disso, uma linha K só pode obter quatro preços: abertura alta e fechamento baixo. Quanto a como o preço muda dentro da linha K, se o preço mais alto ocorre primeiro ou o preço mais baixo ocorre primeiro, etc., não há como para obter tais informações. Tomando a linha K de 1 hora como exemplo, na negociação real, as informações de mercado serão obtidas a cada poucos segundos, e as instruções de negociação serão emitidas durante a sessão de negociação, em vez de esperar o término da linha K. A vantagem do mecanismo de backtesting onbar é que ele é fácil de entender e a velocidade do backtesting é extremamente rápida.

Plataforma quantitativa do inventor FMZ no mecanismo de backtesting do Tick

Instruções de backtesting da plataforma quantitativa FMZ Inventor

A imagem acima é a interface de configurações de backtesting do FMZ. Os modos de backtesting são divididos em dois tipos: backtesting em nível de simulação e backtesting em tempo real, que são apresentados abaixo:

O que é um carrapato?

Diferente dos dados da linha K, o tick é o preço em um ponto específico no tempo. Com base nos dados da linha K, na verdade, sabemos apenas o momento em que o preço de abertura e o preço de fechamento ocorreram. Não está claro quando o preço atingiu o mais alto dentro do ciclo da linha K. Na verdade, os dados da linha K também são gerados com base em ticks. Com base nos dados da K-line, também podemos simular as mudanças em um tick específico de um período da K-line. Embora não seja um tick real, pode tornar nosso backtesting mais preciso. Além disso, o período da linha K usado para simulação pode ser muito menor do que o período usado para backtesting, então a precisão é maior.

Backtesting em nível de simulação

Para backtesting em nível de simulação, você precisa selecionar o período da linha K e o período da linha K subjacente usado para backtesting. Por exemplo, se a estratégia usa backtesting de hora em hora e a linha K subjacente é de 5 minutos, então o intervalo entre os pontos de tempo de backtesting será baseado nos ticks gerados pela simulação da linha K de 5 minutos, o que se reflete nas mudanças contínuas no preço de fechamento da última linha K de 1 hora. O mecanismo de geração de ticks dentro de uma K-line com base na K-line é semelhante ao do MT4. Este post tem uma descrição detalhada: https://www.fmz.com/bbs-topic/662

Instruções de backtesting da plataforma quantitativa FMZ Inventor
Usamos uma estratégia simples para demonstrar esse mecanismo. O código da estratégia é o seguinte:

function main() {
  while(true){
      var records = exchange.GetRecords() //GetRecords可以填参数,获取不同周期K线。
      var ticker = exchange.GetTicker()
      Log('K线收盘价: ', records[records.length-1].Close, 'ticker买一卖一价: ', ticker.Buy, ticker.Sell)
      //js回测不用Sleep,会自动跳到下一个tick。Python需要一个小的休眠时间
  }
}

Resultados do backtesting: Instruções de backtesting da plataforma quantitativa FMZ Inventor Para cada linha K, apenas os ticks de abertura e fechamento são fixos, e 12 ticks simulados são adicionados entre eles, de modo que uma linha K formará 14 pontos de tempo de backtesting. Se o backtest for de um dia, o ciclo da linha K subjacente é de 5 minutos, com um total de 24×12×14 = 4032 pontos de tempo, enquanto o backtest onBar tradicional tem apenas 24, o que melhora muito a precisão. Posições de abertura e fechamento também podem ser concluídas dentro de um ciclo de linha K. Embora os ticks gerados no meio sejam simulados, o impacto não é significativo. No backtest, desde que o preço de compra seja maior que o preço de venda e o preço de venda seja menor que o preço de compra, uma transação será correspondida. Este método de backtesting leva em consideração a velocidade e a precisão do backtesting e é recomendado para todos.

Backtesting em tempo real

O backtesting em tempo real usa ticks reais, com o menor intervalo entre cada ponto de tempo sendo de apenas 1 segundo. Essa precisão do backtesting é precisa a cada segundo, mas devido à grande quantidade de dados, a velocidade do backtesting é lenta e o tempo do backtesting não pode ser garantido. Muito longo. A imagem abaixo mostra o carrapato real. O backtesting em tempo real pode ser usado para validar estratégias com precisão. Instruções de backtesting da plataforma quantitativa FMZ Inventor

A lacuna entre o backtesting e a negociação real

Mesmo o backtesting em tempo real e a negociação real ainda apresentam deficiências de dados óbvias, como a incapacidade de obter negociações de histórico de transações, a incapacidade de obter mudanças reais de profundidade, atrasos reais na rede, etc. Mesmo assim, o atual sistema de backtesting da FMZ é relativamente completo e tem muitas pequenas funções, como simular erros de rede, que podem ser usados ​​para testar a tolerância a falhas de estratégias, simular atrasos de rede, desenhar ícones de mercado, etc.

Perguntas frequentes

Por que apenas alguns pares de negociação e bolsas têm suporte para backtesting?

Atualmente, há apenas alguns pares de dados de negociação comuns. Na verdade, a relação entre estratégia e produto não é muito grande, mas é o suficiente para verificar a estratégia.

Ele pode simular a taxa de financiamento cobrada pela BitMEX?

Sim, você pode ativar o registro de eventos selecionando BitMEX Backtest. Instruções de backtesting da plataforma quantitativa FMZ Inventor

Onde o backtesting é feito?

O backtesting das estratégias de JavaScript é feito no navegador, e o Python pode escolher os servidores da FMZ ou seu próprio hoster.

Os logs de backtest podem ser baixados?

Sim, há um botão de download no canto superior direito do log

Posso fazer backtest localmente?

A FMZ tornou público seu mecanismo de backtesting Python. Referência: https://www.fmz.com/bbs-topic/1687