Documentação

Aplicações

Última atualização em 24. 1. 2023 por Mark Fric

Limitações do Stockpicker Backtest

As estratégias diárias de estocagem e, em geral, de negociação têm algumas especificidades que serão explicadas abaixo.

 

Tempo de execução da estratégia explicada

A primeira coisa é que você pode escolher o momento em que a estratégia é acionada (avaliada) a partir de três valores possíveis:

  • Antes do Bar Aberto - avalia a estratégia antes da abertura do mercado (para estratégias diárias)
  • Em Bar Aberto - avalia a estratégia em Mercado aberto
  • Em Bar Close - avalia a estratégia de (pouco antes) fechamento do mercado

A escolha de quando a estratégia é avaliada afeta então quais preços estão disponíveis tanto no comércio ao vivo quanto no backtesting.

 

Usamos o parâmetro chamado Shift para denotar o índice do valor, por exemplo, Open[0] significa Preço aberto com Shift=0, e significa Preço aberto da barra atual (mais recente).
Aberto[1] significa Aberto com Shift=1, o que significa uma barra atrás.

Quando você usa blocos com Shift=0 (valor das barras atuais) em sua estratégia você deve ser extra cauteloso, pois eles podem significar coisas diferentes dependendo de quando você avalia a estratégia.

Mais uma vez, os três tempos de avaliação possíveis e suas implicações:

Antes do Bar Aberto

avalia a estratégia antes da abertura do mercado (para estratégias diárias).

A plataforma aciona isto alguns minutos antes da abertura real do mercado, depois as condições são avaliadas e as ordens são criadas.
Os negócios são executados quando o mercado abre.

Implicações
Bloco com Shift=0 retorna o valor atual da última barra acabada.
Assim, por exemplo, Close[0] retorna Preço fechado do dia de mercado final PREVIOUS, não o dia de mercado que começará dentro de algum tempo.
Aberto[0] retorna Preço aberto do dia anterior de mercado e assim por diante.
Você pode usar com segurança o Shift=0 em todos os blocos, mas eles se referem à última barra fechada - dia anterior ao mercado.

 

Em Bar Aberto

avalia a estratégia em Mercado aberto.

A plataforma aciona isto alguns minutos após a abertura real do mercado para permitir a consolidação dos preços.
As transações são executadas imediatamente.

Implicações
Bloco com Shift=0 valor de retorno do dia real de mercado aberto.
Portanto, Open[0] retorna preço atual de mercado Aberto.
Fechado[0] retorna Preço aberto, porque o atual Preço fechado do dia ainda não é conhecido (é o início do dia de mercado).
O mesmo para Alto[0], Baixo[0] - no mercado aberto ainda não se conhece o alto e o baixo do dia de negociação atual.
Você pode usar com segurança o Shift=0 APENAS com blocos de preços Abertos, e calcular indicadores somente usando o preço Aberto.

 

Em Bar Close

avalia a estratégia de fechamento do mercado.

A plataforma aciona isto alguns minutos ANTES do fechamento do mercado real para permitir a execução correta.
As transações são executadas imediatamente.

Implicações
Bloco com Shift=0 valores de retorno do dia real de fechamento do mercado.
Aberto[0] retorna mercado atual Preço aberto.
Close[0] retorna o preço real em tempo real - muito próximo do preço real Close [0].
Você pode usar com segurança o Shift=0 com todos os tipos de preços e indicadores. Porque a estratégia é avaliada muito próxima do mercado real próximo
os preços altos, baixos e fechados do dia de negociação atual serão muito precisos.

Nota especial sobre indicadores

os exemplos acima mostram como preços simples como Aberto, Alto, Baixo, Fechado são afetados quando utilizados com Shift=0,
mas você deve perceber que também existem indicadores que podem ser computados a partir de preços ainda não conhecidos.
Por exemplo, o cálculo de EMA a partir de Fechar com Shift=0 retornará resultados incorretos quando usado com o gatilho On Bar Open, porque os valores de Fechar[0] ainda não são conhecidos na época.
O mesmo para indicadores padrão como ATR - ATR com Shift[0] é computado usando High[0], Low[0], que novamente não são conhecidos no mercado aberto.

 

Dados semanais e mensais

Dados semanais e mensais também estão disponíveis. Para a semana e o mês atuais, o preço de fechamento é derivado simplesmente do preço do último dia de negociação. Os dados para a semana e mês atuais são simplesmente referidos usando a barra [0] (por exemplo, Máxima Semanal[0] ou Fechamento Mensal [0] etc.).

 

Manuseio de Stop Loss e Objetivos de Lucro em testes de retaguarda

O retro-teste das estratégias de Coleta de Estoque deve ser rápido - temos que avaliar uma estratégia em centenas ou milhares de estoques. Por isso, usamos apenas os preços diários da OHLC no backtest.
Não é possível utilizar dados minuciosos ou de ticker para o motor Stockpicker.

A utilização de dados OHLC diários tem uma desvantagem que não pode ser facilmente resolvida - não conhecemos o movimento intradiário do preço.
Não é um problema na maioria dos casos, descrevemos como o motor SQ backtestng lida com isso para garantir que os backtests sejam confiáveis.

O problema pode surgir quando você usa SL + PT, ou entrada em Stop/Limit combinado com SL ou PT.
Em ambos os casos, há mais de uma parada ou nível de preço limite - entrada (parada/limite), SL, PT.

O problema que estamos enfrentando é em situações em que estes níveis estão tão próximos um do outro que ambos poderiam ser preenchidos intraday no dia do mercado.
Sem dados reais de tick não podemos saber qual destes níveis será atingido primeiro, então não podemos simular de forma confiável a entrada em stop/limite seguido por SL ou PT na mesma barra.

No comércio real, SL+PT é adicionado imediatamente quando o comércio é aberto, mas por razões mencionadas acima, não somos capazes de simulá-lo de forma confiável no backtester - isso levaria a testes retroativos muito otimistas e irrealistas.

Para garantir que os resultados sejam confiáveis, o motor backtester detecta este tipo de situações e as trata desta forma:

  • Quando a Entrada é Mercado, apenas SL ou apenas PT é definido - neste caso, podemos avaliar SL ou PT imediatamente, na mesma barra
  • Quando a entrada está em Stop/Limit e SL, PT ou ambos são definidos - neste caso SL & PT são aplicados apenas no dia seguinte, não sabemos se o preço de entrada ou SL/PT foi alcançado na barra aberta, então não podemos avaliá-lo imediatamente
  • Quando ambos SL e PT são usados, e ambos poderiam ter sido preenchidos em uma barra - o backtester leva SL para fazer uma variante pessimista, pois não sabemos qual deles seria preenchido primeiro.

 

Esta situação geralmente afeta o desempenho da estratégia somente se você usar um Stop Loss ou uma meta de lucro muito apertada - não o faça e você não terá este problema.

 

Pequenas diferenças nos tempos de execução entre o backtest e a negociação ao vivo

Observe que no backtester quando o comércio é aberto no mercado aberto ou fechado usando Enter no Mercado (ou Exit no final do dia), ele é aberto pelo preço de Abertura/Fecho dos dados - o preço real de Abertura ou Fechamento do mercado.

No comércio ao vivo, isto não é 100% realizável - quando você aciona a estratégia Na barra aberta, ela será avaliada e executada em um tempo muito curto DEPOIS da abertura real do mercado. O mesmo acontece com On Bar Close - é executado muito curto ANTES do fechamento do mercado real.

É tratado assim porque não é possível acionar suas ordens exatamente no mercado aberto ou fechado. Devido a isso, os preços de mercado "Aberto" e "Fechado" tomados nestes momentos não corresponderão aos preços de mercado Aberto ou Fechado informados nos dados históricos. A diferença será insignificante e não deve afetar o desempenho de sua estratégia, mas ainda assim ela estará lá.

 

Este artigo foi útil? O artigo foi útil O artigo não foi útil

Assine
Notificação de
0 Comentários
Feedbacks em linha
Ver todos os comentários