Mecanismo de correspondência de transacções a nível de tiques desenvolvido para backtesting de estratégias de alta frequência

Autora:Bem-estar, Criado: 2019-09-09 11:46:24, Atualizado: 2023-11-07 20:51:21

img

Resumo

img

O que é o mais importante quando testar a estratégia de negociação? a velocidade? os indicadores de desempenho?

A resposta é precisão! O propósito do backtest é verificar a lógica e a viabilidade da estratégia. Este também é o significado do backtest em si, os outros são secundários. Um resultado de backtest que realmente reflete os dados históricos da estratégia tem um valor de referência. Essas curvas de backtest aparentemente perfeitas podem contar uma bela história, mas não podem ser feitas no ambiente real do mercado.

Que dados são necessários para o backtesting

Como conseguir um backtesting preciso é um problema que muitos traders quantitativos se preocupam. A primeira coisa que precisamos descobrir é que os dados estão na negociação, porque a qualidade dos dados determinou em grande parte a qualidade do backtest.

Para esses tipos de dados, a maioria das pessoas pode pensar no preço de abertura, o preço mais alto, o preço mais baixo, o preço de fechamento e o volume de negociação no gráfico de linha K. Para melhor distinção, nos referimos a esses dados coletivamente como dados de barra, que você pode entender como a linha K. Mas você já pensou sobre de onde os dados vieram, e onde está a fonte desses dados?

img

Na verdade, os dados da troca enviando de volta não contêm esses dados Bar, apenas dados Tick. Então, o que são dados Tick? Você pode imaginar os dados na troca como um rio. Este rio contém dados detalhados para cada ordem. Os dados Tick são uma fatia no fluxo de dados. A frequência é de 2 fatia por segundo. é uma reprodução de determinada situação do mercado.

Em seguida, os dados de barra são baseados em dados de Tick e são divididos de acordo com o período de tempo. Os dados de barra de 1 minuto são compostos por dados de Tick dentro de 1 minuto, os dados de barra de 5 minutos são compostos por dados de Tick dentro de 5 minutos, e assim por diante. Formou uma variedade de gráficos de minutos, gráficos por hora, gráficos diários e assim por diante. A linha K de um minuto tem apenas um dado de barra, mas pode conter 120 dados de Tick. Portanto, os dados históricos do backtest podem ser divididos em: dados de barra e dados de Tick, e a quantidade de dados nos dados de barra é muito maior do que a quantidade de dados de barra no mesmo ciclo.

Backtest com base em dados de Bar

A maioria dos softwares de negociação quantitativa no mercado são todos compatíveis com o backtesting de dados Bar. Como a quantidade de dados é pequena, a carga de trabalho do mecanismo de backtesting é muito simplificada. Portanto, este backtesting é geralmente muito rápido, e os dados de dez anos podem ser backtestados em poucos segundos. Mesmo quando o backtest de dezenas de variedades de futuros ao mesmo tempo não excederá um minuto.

  • Preços extremos

A maioria dos traders sabe que é difícil comprar ou vender no preço limite diário, mas pode ser negociado no ambiente de backtest.

img

  • O vácuo de preços

Quando o preço de repente salta do limite mais baixo para o preço limite mais alto ou aparece uma lacuna de preço, é mostrado como uma grande linha positiva K no gráfico de linha K de grande ciclo, mas não há transações a serem feitas durante todo o tempo.

Por exemplo: a linha K atual tem sido pairando em torno do preço 5000, e subitamente sobe para 5100 perto do fechamento do mercado, e quase não há ordens pendentes e transações no meio.

  • Roubar preços e dados futuros

Eu acredito que muitos comerciantes quantitativos encontraram tais poços, e a maioria dessas curvas de backtest de ângulo de 45 graus são desta. A fim de facilitar a compreensão de todos, deixe-me dar outro exemplo: Sabemos que uma linha K tem 4 preços.

No entanto, a linha k do grande ciclo não será tão simples. Ela pode atingir uma nova alta, depois uma nova baixa, e depois fechar; também pode atingir uma nova baixa, depois uma nova alta, e então fechar; ou mesmo após uma rodada de voltas e voltas, ela atinge uma nova baixa, e então a nova alta, e depois a nova baixa, e então fechar; mas ela apenas aparece como uma linha K com sombra superior e inferior, há muitas possibilidades no meio de como ela se formou.

Se uma linha K está aparecendo assim: preço de abertura 4950, preço mais baixo 4900, preço mais alto 5100, preço de fechamento 5050, uma linha K positiva normal. Sua estratégia é: Se o último preço exceder o preço mais alto anterior 5000, comprar longo e definir um stop loss de 1% após a abertura da posição, ou seja, quando o preço cair abaixo de 4950, ele irá preformar o stop loss.

Ok, vamos começar o backtest:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Earned 1% when the market closed

Mas a situação real pode ser assim:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Soon the price begins to fall
Continue to fall to 4949
Stop loss signal triggers stop loss 1%
Price rises to 5100
Market close at 5050

Como você pode ver, no exemplo acima, a mesma estratégia, os mesmos dados, houve dois resultados muito diferentes. A razão ainda é por causa da diferença nos dados. No teste de retorno de nível de barra, se você usar o backtest diário de linha K, você não saberia como essas linhas K são formadas. Se você usar o backtest de linha K por hora, você não saberia que essas linhas k por hora são formadas. Em suma, o teste de dados de barra é fraco!

  • Backtest baseado em dados Tick

Se você pode usar os dados do Tick para backtesting e análise, não há dúvida de que tem grandes vantagens. No entanto, parece não haver nenhuma plataforma de negociação quantitativa para backtesting e análise de dados do Tick no mercado. Por exemplo, o MT4 usa dados de simulação de interpolação. Isso apenas simula mudanças nos dados, não dados reais do Tick.

Claro, existem softwares que afirmam ser capazes de fazer backtesting de nível Tick. mas esses softwares cometeram um erro fatal ao projetar o mecanismo de backtesting, ou seja: mecanismo de correspondência de preço. O que isso significa? Se os dados atuais do Tick forem: preço de venda 5001, preço de compra 5000, se minha ordem de compra pendente estiver em 5000, no mercado real, definitivamente não será capaz de negociar, mas a verdade não é.

Esteja ciente de que em um ambiente de negociação real, as ordens que colocamos são correspondidas no fluxo de dados Tick da bolsa. As regras de correspondência da bolsa são: prioridade de preço, prioridade de tempo. Se a profundidade da ordem não for muito espessa neste momento, a ordem de compra de preço 5000 que enviamos provavelmente será negociada passivamente.

  • O princípio do mecanismo de backtesting baseado em dados de mercado

A plataforma FMZ Quant (fmz.com) O motor de backtesting de nível Tick foi criado, este motor de backtesting não só corresponde às ordens com base na prioridade de preço dos dados Tick. De acordo com a mesma prioridade de preço, o número de ordens pendentes é calculado para determinar se a ordem pendente atual atingiu a condição de transação passiva, a fim de alcançar um ambiente de simulação real.

  • O primeiro Tick é: Venda: 101 Volume: 80 Comprar: 100 Volume: 30

  • O segundo Tic é: Venda: 101 Volume: 60 Comprar: 100 Volume: 50

  • O terceiro Tic é: Venda: 101 Volume: 80 Comprar: 100 Volume: 30

  • O 4o Tic é: Venda: 101 Volume: 80 Compra: 100 Volume: 10

Para o primeiro Tick, o preço de compra é de 100, a quantidade de ordens pendentes é de 30 lotes; neste momento, o sinal de compra vem, compre 20 lotes a preço de 100; o segundo Tick é gerado, o preço de compra é de 100, e a quantidade de ordem pendente é de 50. há 20 lotes de ordens pendentes; o terceiro Tick é produzido, o preço de compra é de 100, e a quantidade de ordens pendentes é de 30 lotes. Isso prova que 20 lotes foram executados ou cancelados, e estamos fechando o negócio; o quarto Tick foi produzido, o preço de compra foi de 100, e a quantidade de ordens pendentes foi de 10 lotes. Foi um grande vendedor, e todas as nossas ordens de compra foram executadas de uma vez.

Através do exemplo acima, podemos descobrir que nos dados do Tick, sob a premissa de que o preço não mudou, é possível calcular se há uma transação passiva da ordem pendente através da mudança do valor da ordem pendente. O uso do mesmo preço, primeira abordagem de tempo.

Para que lado?

Na plataforma FMZ Quant, o backtesting de nível Bar e Tick existe ao mesmo tempo. Cada comerciante quantitativo pode usar diferentes motores de backtesting de acordo com suas próprias estratégias de negociação, e não importa que tipo de backtesting você use.

O backtesting de estratégia de baixa frequência não requer um mecanismo de correspondência complexo, porque o número de transações para tais estratégias é pequeno, o custo do deslizamento não tem um grande impacto na própria estratégia.

Algumas negociações intradiárias ou estratégias que envolvem posição de abertura durante o dia, se necessário, também podem ajustar a granularidade dos dados na página de parâmetros de configuração de backtesting, como backtesting em um ciclo de 1 hora, que pode ser ajustado para dados mais finos de 15 minutos.

A negociação de alta frequência é uma forma de negociação de alta frequência, pois o número de transações é alto o suficiente, uma única variedade pode negociar dezenas ou mesmo centenas de vezes em um dia, por isso, desde que o mecanismo de correspondência seja razoável, então, sob o efeito da lei de grandes números, os resultados do backtesting são basicamente confiáveis.

No backtest de negociação de alta frequência, quanto maior a frequência da transação, menor o período de tempo de posição de detenção; menor o lucro médio de uma única transação. Neste momento, se o projeto do motor de backtest for irracional, ou o método de correspondência de ordens comparar com o ambiente de negociação real não são os mesmos, então haverá um fenômeno de uma pequena diferença faz uma enorme disparidade mil, então para a negociação de alta frequência, o motor de backtest no nível Tick é a melhor escolha.

Backtest dos dados de nível de marcação de acordo com os dados reais do mercado

Nós demonstramos a você como um backtest de nível Tick funciona com uma estratégia de criação de mercado de alta frequência escrita em C++ (que também suporta Python e JavaScript). Você pode completar a estratégia e realizar backtesting on-line clicando no link abaixo. A imagem a seguir é tirada das informações do log. Observe que compramos 1 lote no preço de 2231 em 2019-07-12 14:59, e vendemos em 2232.

img

  • O primeiro Tick é: Venda: 2232 Volume: 409 Compra: 2231 Volume: 73

  • O segundo Tic é: Venda: 2232 Volume: 351 Compra: 2231 Volume: 84

  • O terceiro Tic é: Venda: 2232 Volume: 369 Compra: 2231 Volume: 67

Esta estratégia de demonstração é fechar a posição ao fazer um lucro de marcação de preço. Após a abertura da posição, enviamos a ordem de posição de fechamento em 2232 para fechar a posição longa e 2231 para fechar a posição curta. De acordo com o tradicional backtest de nível de barra, o preço dessa ordem pendente não pode ser fechado. No entanto, o mecanismo de backtesting de nível de marcação da plataforma calcula constantemente a mudança no valor das ordens no mercado. Quando os dados do terceiro Tick são gerados, de acordo com o mecanismo de marcha de ordem de troca da bolsa, se o preço for o mesmo, de acordo com a regra do tempo-primeiro, nossa operação de posição longa de fechamento será negociada.

Estratégia de cópia

Clique neste link (https://www.fmz.com/strategy/162372) para copiar a estratégia completa sem ter de configurar parâmetros

Nota: Atualmente, só suportamos a gama completa de futuros de commodities domésticos chineses e os dados de nível Tick da exchange criptomoeda OKEX.

Fim

O que está acima é a análise da plataforma FMZ Quant e o combate real do backtesting de todos os níveis. Não só isso, mas além de apoiar comerciantes profissionais e usuários institucionais, também é muito amigável para novatos que ainda não começaram. A linguagem visual pode ser implementada sem escrever código. Além disso, a linguagem My pode ser resolvida em 10 frases.

Pensar em estratégia, fazer estatísticas e analisar... A negociação tem sido muito difícil. Se você é um CTA de baixa frequência, negociação intradiária, negociação de alta frequência, a plataforma de negociação quantitativa FMZ Quant pode ser perfeitamente suportada sem problemas.


Relacionados

Mais.