Documentação

Aplicações

Última atualização em 6. 5. 2015 por Mark Fric

Otimização do Walk-Forward

O que é otimização?

A idéia por trás de uma otimização é simples. Primeiro você tem que ter um sistema comercial - por exemplo, um simples crossover de média móvel: Se os cruzamentos EMA(10) acima do EMA(20) forem longos, caso contrário, curtos.

Em quase todos os sistemas comerciais existem alguns parâmetros (períodos indicadores, constantes para comparar, etc.) que influenciam o desempenho do sistema. A otimização significa encontrar os valores ótimos desses parâmetros (dando o maior lucro ou a melhor relação retorno/desempenho ou outro parâmetro desejado).

Por exemplo, seria melhor usar a regra "EMA(10) cruza acima de EMA(20)" ou a regra "EMA(15) cruza acima de EMA(50)"?
A otimização pode ajudar você a encontrar os valores que retornaram o melhor desempenho no passado.

O que é otimização/análise Walk-Forward?

A otimização Walk-Forward é geralmente um tipo especial de backtest que é composto de vários backtests menores em períodos de otimização. Esses períodos de otimização são divididos ao longo de todo o período de backtesting e são sempre seguidos por testes de Out of Sample com os parâmetros otimizados.

É uma técnica na qual você otimiza os valores dos parâmetros em um segmento passado de dados de mercado, depois verifica o desempenho do sistema testando-o a tempo nos dados que seguem o segmento de otimização, e o processo pode ser repetido em segmentos de tempo subseqüentes.

Como funciona a otimização do Walk-Forward

na otimização walk-forward, os dados são divididos em um número configurável de períodos (5 neste exemplo). Cada período consiste em parte de otimização e parte de execução.

O programa começa com o período de otimização 1. Ele executará a otimização simples no período de otimização 1 para encontrar os melhores valores de parâmetros. Estes valores de parâmetros são então aplicados ao período de execução 1 - a estratégia é negociar com os parâmetros otimizados encontrados no passo anterior.

No final do período de execução 1, o sistema executa novamente uma otimização simples em uma parte dos dados marcados como período de otimização 2. Ele encontra o melhor conjunto de valores de parâmetros e eles são novamente utilizados para negociação no período de execução 2.

Isto continua até o período 5, que é também o fim do histórico dos dados utilizados no teste.

A otimização do Walk-Forward simula como você poderia trabalhar com a estratégia durante a negociação real - você pode otimizá-lo em alguns dados históricos e depois negociá-lo com os valores ideais. Após algum tempo, você gostaria de reoptimizá-lo e deixá-lo comercializar novamente.

O que o Walk-Forward Optimization/analysis lhe diz?

Basicamente diz a você se a energia inicial for suficientemente robusta e se seu desempenho puder ser melhorado através de uma reoptimização.
Se o desempenho da estratégia for pior durante a reoptimização do que o original não otimizado, é um grande sinal para se prestar atenção ao ajuste da curva.

Por outro lado, se a estratégia otimizada da Walk-Forward funciona melhor do que a versão não otimizada nos mesmos dados, ela lhe diz que :

  1. Sua estratégia se beneficiará com a otimizaçãopor isso, você deve reoptimizá-lo periodicamente para obter o melhor desempenho
  2. Isso também significa que o a energia inicial é robusta o suficiente para lidar com as mudanças do mercado (usando a reoptimização) e há uma grande chance de que isso funcione também no futuro.

Exemplo de otimização de Walk-Forward em StrategyQuant

Realizar a otimização do Walk-Forward em StrategyQuant é simples, nas próximas linhas vou mostrar o processo completo.

Estratégia de otimização
Para simplificar, vamos usar a estratégia EMA Cross neste exemplo. Note que esta estratégia na forma básica NÃO é lucrativa, e a reoptimização não a ajudará, mas é simples o suficiente para demonstrar como a otimização funciona.

Você pode baixar a estratégia usando o link abaixo - Clique com o botão direito do mouse e escolha Salvar como...

EMA Cross strategy.stratégia.str

Conteúdo:

  1. Carregando uma estratégia de otimização
  2. Definição de valores de otimização
  3. Configuração de percursos a pé
  4. Verificação dos resultados
  5. Interpretando os resultados
  6. Descrição dos componentes avançados da pontuação WF

Etapa 1: Carregando uma estratégia de otimização

Primeiro de tudo, você tem que mudar para a janela do Otimizador e carregar a estratégia que você deseja otimizar.

Para este exemplo, usaremos a estratégia simples EMA_Cross que vai longo quando o EMA mais rápido atravessa acima do EMA mais lento, e vai curto quando o EMA mais rápido atravessa abaixo do EMA mais lento. Depois de carregar a estratégia, ela é adicionada também como estratégia original ao banco de dados de resultados de Otimização.

Você pode clicar duas vezes na estratégia original e depois ir para Results -> Source code para ver suas regras.

Certifique-se de verificar o Colocar valores nos parâmetros para que você veja que as variáveis pLongEMA_1, pLongEMA_2, pShortEMA_1, pShortEMA_1 são usadas para armazenar parâmetros indicadores. Em nossa otimização, tentaremos encontrar os valores ótimos desses parâmetros.

Há ainda um pequeno problema. Podemos ver que a estratégia utiliza parâmetros diferentes para uma direção longa e para uma direção curta. Podemos usá-la assim se quisermos encontrar valores ótimos independentemente para o lado longo e curto, mas para nosso exemplo gostaríamos de usar o mesmo parâmetro para o lado longo e curto.

Podemos fazer isso em programa Ferramentas -> Opções -> Parâmetros de estratégia.

Se você marcar a primeira caixa de seleção, ela usará os mesmos parâmetros para direção longa e curta (desde que as regras sejam as mesmas). Clique em OK para armazenar as configurações e atualizar o código fonte.


Etapa 2: Definição de valores de otimização

Para definir valores que serão otimizados, temos que ir para Configurações -> Parâmetros

Aqui você pode ver a lista de todos os parâmetros de estratégia que estão disponíveis para otimização. Otimização significa simplesmente tentar diferentes valores de parâmetros de entrada.

Para cada parâmetro que você deseja otimizar você tem que verificar a linha do parâmetro e escolher os valores Start, Stop e Step. O otimizador irá iterar o valor de Start to Stop, dando passos. O valor original também é configurável, será usado para testar novamente a estratégia original. Você pode usar este valor para comparar o desempenho dos novos resultados com as configurações "originais".

O Número de testes valor nos mostra quantos testes devem ser realizados para testar todas as combinações dos valores.

Nota!
É possível que sua tabela de parâmetros contenha muito mais parâmetros, poderia ser assim:

Esta é outra característica poderosa da StrategyQuant. Ela permite otimizar não apenas os parâmetros da estratégia, mas também outras opções de negociação, tais como quantas negociações devem ser feitas por dia, ou qual deve ser o intervalo de tempo para negociação. Essas configurações normalmente fazem parte das Opções de Estratégia, mas você também pode otimizar seus valores.

Se você não quiser usá-los e vê-los na tabela de Parâmetros, vá mais uma vez para Ferramentas -> Opções -> Parâmetros de estratégia e desmarque a caixa de seleção para Adicionar parâmetros para opções de estratégia.


Passo 3: Configuração dos percursos a pé

Temos que especificar também as configurações do walk-forward. Neste exemplo, usaremos o 30% fora do período de amostra (Run) e 6 passos de reoptimização.

Fora da amostra %
isto significa quanto do período inteiro resta para correr. Se o definirmos para 30 %, significa que em cada período 70% dos dados são usados para otimização, e 30% será usado para negociação usando os valores otimizados.

Corridas a pé para a frente
isto significa quantas otimizações serão realizadas, o que significa quantas vezes reabriremos a estratégia.

Também é possível especificar os períodos de otimização (In Sample) e de execução (Out of Sample) por dias exatos, você pode fazer isso verificando Definir número específico de dias.


Etapa 4: Verificação dos resultados

A otimização Walk-Forward leva mais tempo do que uma simples, porque há 6 (ou mais) etapas de otimização em vez de apenas uma.

Quando terminar, veremos que temos apenas dois resultados no banco de dados - estratégia original e resultado do Walk-Forward.

Quando clicarmos duas vezes sobre o resultado no banco de dados, os resultados da estratégia se abrirão.

Podemos ver que a estratégia falhou no teste de caminhada em frente, com base em nossas configurações de pontuação de robustez.

A pontuação de robustez é totalmente personalizável. Podemos definir todas as condições que desejamos observar na tabela de componentes da pontuação Robustez (1) e definir seus valores-limite.

O valor principal do limiar de robustez (2) significa quantas destas pontuações utilizadas devem passar para que o resultado WF seja considerado bem sucedido.

À direita desta tabela, podemos verificar os resultados para cada otimização e período de execução:

Você pode ver que apenas 2 em cada 6 corridas acabaram em lucro.

Também podemos verificar o gráfico de equidade:

A linha azul representa uma estratégia reoptimizada, enquanto a linha cinza mais fina representa uma estratégia original não otimizada.


Interpretando os resultados

Como devemos interpretar estes resultados?

Antes de mais nada, é claro que esta estratégia particular não tem melhor resultado quando a reoptimização é utilizada.
Certamente, esta estratégia não é lucrativa em sua forma original e NÃO FOI LEVANTADA POR REOPTIMALIZAÇÃO.

Mas e se nós reoptimizássemos a estratégia com mais freqüência? Ou se usarmos diferentes do Sample %? Como podemos dizer qual é o melhor período de reoptimização da estratégia?

Aqui é onde Matriz de Avanço vem para jogar - confira o próximo artigo.

 

Dica - verifique também o artigo Descrição dos valores avançados do Walk-Forward para descrição de vários valores que podem ser usados em filtros ou mostrados em banco de dados.

 

 

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