Processo De Construção De Estratégia (E-Mini S & P 500 Futures)


Processo de Construção de Estratégia (E-mini S & P 500 Futures)


Construindo uma estratégia emini rentável para ES / TF / EMD


Por Mark Fric


Neste artigo vou explicar o processo completo passo a passo de construção de uma estratégia rentável e robusta para ES (E-mini S & P 500 Futures), incluindo várias etapas de diferentes testes de robustez.


Esta é uma variação do meu artigo mais antigo sobre Strategy Building Process for forex.


Ao usar técnicas de aprendizagem de máquina, como a programação genética, é realmente fácil de obter estratégias com curva de equidade agradável procurando. O perigo reside no ajuste da curva, de modo que a parte mais importante do processo de construção da estratégia é testar a estratégia de robustez para garantir que ela não esteja ajustada às curvas dos dados históricos.


Neste artigo, vou explicar como eu uso duplo OOS filtro mais testes de robustez mais Walk-Forward Matrix teste.


Este é o resultado


Para a motivação eu posto resultados de uma boa execução estratégias para ES / TF / EMD que eu encontrei usando o processo descrito abaixo.


Estratégia 238433 para ES / TF / EMD


A estratégia acima é publicada em nosso fórum (somente para usuários licenciados do StrategyQuant) aqui:


Disponível para download.


Os únicos insumos que eu uso são minhas expectativas da estratégia - eu quero construir uma estratégia para ES (E-mini S & P 500) no prazo de 15 Min que é rentável e tem como poucas retiradas quanto possível. Eu quero que a estratégia seja robusta o suficiente para que ela funcione também em outros futuros (TF, EMD) e eu quero que ele passe o teste Walk-Forward Matrix para garantir que a reoptimização funcione nesta estratégia.


Processo de construção da estratégia


1. Obtenção dos dados


Existem algumas diferenças entre futuros e forex. Em primeiro lugar, obter os dados para futuros é um pouco mais difícil e caro. Não há fontes de dados livres e a maioria dos corretores não lhe dá história mais do que alguns meses.


Você pode obter os dados do corretor que os oferece (Tradestation, se você for seu cliente) ou você tem que se inscrever para um serviço de dados ao vivo, como Kinetick ou iqFeed.


Há também alguns serviços especiais que não oferecem feed de dados ao vivo, mas que vendem dados de futuros históricos. Para encontrá-los apenas pesquisar "histórico intraday furtures dados" no Google.


Segunda diferença é que os contratos de futuros têm data de validade, os contratos são geralmente negociados por apenas 3-4 meses e, em seguida, eles são substituídos por uma versão mais recente do mesmo contrato futuro.


Para poder usar os dados de futuros para o desenvolvimento de estratégias, precisamos ter pelo menos alguns anos de dados em forma de contratos contínuos. A maioria dos serviços de dados oferecem essa opção, portanto, é apenas uma questão de subscrever o serviço de dados e baixar os dados para sua plataforma de negociação.


Exportando os dados do NinjaTrader


Quando você já tem dados em seu NinjaTrader você tem que copiá-los para StrategyQuant também, para que ele possa texto as estratégias geradas. Para fazer isso, temos que exportar dados do NinjaTrader e importá-los para o StrategyQuant. Para exportar dados temos que abrir o gráfico para ES 15 Min. Certifique-se de definir a sessão de negociação correta. Eu uso CME US Index Futures RTH sessão neste exemplo.


Quando o gráfico é aberto, basta encontrar o indicador SQDataExport e colocá-lo no gráfico. Ele irá exportar os dados para o gráfico aberto atualmente para um arquivo de texto.


Repita o mesmo processo também para TF (Mini Russel 2000 Futures) e EMD (E-mini S & P Midcap 400) também em 15 minutos com sessão de negociação correta.


Usaremos esses dados mais tarde para testar nossas estratégias em outros símbolos como uma forma de teste de robustez.


Em seguida, abra o StrategyQuant e crie novos símbolos para ES, TF e EMD e importe os respectivos arquivos de dados. Importar dados do NinjaTrader é descrito em mais detalhes também no guia de Usuários.


2. Gerar um grande grupo de potenciais candidatos


No primeiro passo da geração eu simplesmente tenho que gerar grande pool de potencialmente "boas" estratégias que vou testar para a robustez mais tarde. Eu quero todas as minhas estratégias iniciais para ser rentável e robusto (até certo ponto), então eu empregar vários filtros também nesta primeira fase.


Minhas configurações para esta etapa


Você pode fazer o download das configurações que eu uso nesta etapa usando o link abaixo. Clique no link com o botão direito do mouse e selecione Salvar link como.


Em seguida, em StrategyQuant use Carregar configurações para carregar este arquivo de configurações para o programa.


Note que se você nomeou seus símbolos no StrategyQuant de forma diferente, você precisará definir os dados manualmente.


Definições explicadas


Primeiro de tudo, eu gero todas as minhas estratégias em vários símbolos. Meu objetivo é encontrar uma boa estratégia para ES, mas quero que minha estratégia seja robusta - então eu quero que ela seja rentável também na EMD. Eu adiciono EMD aos dados adicionais, então agora a estratégia será testada em ambos os símbolos.


Imagem 1: Definir os dados


Vou usar dados de 2.1.2003 a 31.12.2012, que é de 10 anos. O restante dos dados será deixado para posterior teste OOS mais tarde.


Vou usar o modo de Evolução Genética. A idéia é fazer com que uma população de 200 estratégias, evoluí-los durante 30 gerações e, em seguida, começar de novo a partir do zero. Desta forma eu vou evitar correr em um beco sem saída durante a evolução e as melhores estratégias são armazenadas continuamente para Databank.


Você também pode ver que a única condição para a população inicial é que ele deve fazer pelo menos 100 comércios. Não precisa ser rentável - a evolução genética deve ser capaz de melhorá-lo.


Imagem 2: Opções genéticas


Poderíamos usar também geração aleatória sem evolução, mas a evolução deve encontrar as estratégias rentáveis ​​mais rápido.


A última parte importante do ajuste é opções do Ranking. Eu ajusto Databank para armazenar 2000 melhores estratégias, porque eu quero ter uma base boa para um processo de seleção mais adicional. Eu também definir os critérios de seleção para Return / Drawdown razão - este é o meu favorito. Você pode usar outros critérios de seleção, talvez você obtenha melhores resultados.


Imagem 3: Opções de classificação


Outra das coisas mais importantes é definir os critérios de filtro inicial para as estratégias no Databank. Eu quero considerar apenas as estratégias que são, pelo menos, US $ 2000 em lucro, têm Return / DD ratio> 3, pelo menos 300 negócios e retorno / DD razão de uma carteira de ser pelo menos 2,5.


Como estou testando as estratégias em dois símbolos - ES e EMD, os resultados da carteira para as estratégias também serão computados. Usando esta condição, eu simplesmente especificar que o desempenho da carteira não será muito pior do que o desempenho em apenas ES, eo programa vai demitir todas as estratégias com mau desempenho da carteira.


Agora só temos que acertar o botão Iniciar e deixar o programa fazer o trabalho.


Lembre-se, queremos gerar pelo menos 2000 estratégias "boas" antes de continuar com o processo de filtragem.


Dependendo das configurações e da velocidade do seu computador, pode demorar várias horas ou mesmo dias, por isso tenha paciência. Se o programa não produzir qualquer estratégia por muito tempo, talvez devêssemos mudar para um período de tempo mais alto - 30 min, 1 Hora, ou tornar as restrições menos restritivas.


3. Primeiro filtro - Teste fora da amostra (OOS)


Quando eu tiver 2000 estratégias potencialmente boas no Databank, vou parar a geração e iniciar o processo de filtragem.


Vou aplicar o primeiro filtro - removendo todo o sistema que tem mau desempenho fora da amostra. Posso fazê-lo rapidamente, apenas por classificar as estratégias em Databank e excluir os que têm OOS lucro menor do que US $ 3000.


Image 4 Banco de dados com pool de estratégias classificadas por OOS Net Profit


Este primeiro passo geralmente remove uma grande porção de estratégias, por isso a partir de 2000 candidatos iniciais, estamos em torno de 1700.


2. Segundo filtro - reteste e segundo teste OOS


Nesta etapa vou testar novamente todas as estratégias sobre o desconhecido Out of Sample período mais eu vou adicionar teste em dados TF.


Retestando as estratégias é simples - vou apenas selecionar todas as estratégias no banco de dados e clique no botão Retest. Isso moverá todas as estratégias para uma guia Retest. Vou também confirmar diálogo perguntando se ele deve usar as configurações de compilação para Retest


Vou então estender o período de dados para o final dos dados disponíveis. As estratégias foram geradas a partir de dados de 2.1.2003 a 31.12.2012, vou agora reteste as estratégias sobre os dados até 31.12.2013 (um ano a mais não utilizado durante a geração) e definir Out of Sample período de 31.12.2012 para 31.12.2012 .


Observe que isso irá testar novamente as estratégias nos dados completos ea parte OOS mostrará o desempenho da estratégia durante o último ano dos dados anteriormente não utilizados.


Imagem 5: Configurações para reteste


Porque eu tenho também dados históricos para TF vou adicioná-los a dados adicionais para comparar o desempenho em todos os três eminis.


O teste pode levar algum tempo e depois que ele é feito, eu vou mais uma vez remover todo o sistema que têm mau desempenho fora da amostra. Mais uma vez eu posso classificar as estratégias em Databank por lucro líquido (OOS) e apagar os que têm OOS lucro menor do que $ 1500.


3. Terceiro filtro - EMD, TF check


Terceiro filtro é visual - vou verificar o desempenho das estratégias EMD e símbolos TF. Eu vou para Resultados -> gráfico Equity, switch chart para Portfolio e passar por estratégias uma por uma olhando para as curvas de equidade para EMD e TF.


Imagem 6: Exemplo de bom e mau desempenho EMD / TF


O que você está procurando? Como esses eminis são altamente correlacionados, eu quero que a estratégia seja rentável em todos os três símbolos, assim como no primeiro exemplo. Podemos ver no segundo exemplo que o desempenho em TF é muito pobre em comparação com ES e EMD, sua curva de equidade não é grodwing, por isso vou demitir tais estratégias.


Também pode haver outro extremo - que o desempenho em TF e / ou EMD é muito melhor do que o desempenho em ES. Isso é ok, muitas vezes acontece que as estratégias funcionam melhor em TF do que em ES.


Não devemos olhar apenas para o desempenho final, mas também para as curvas de capital próprio. Devemos descartar todas as curvas patrimoniais que têm longos períodos de estagnação, ou grandes reduções.


Desta forma, podemos fazer o filtro muito embora, devemos acabar com não mais do que 10-20 restantes estratégias de topo para o próximo passo.


4. Quarto filtro - Testes de robustez


Depois de remover todas as estratégias com mau desempenho EMD / TF há menos de 20 estratégias deixadas que têm boa IS e OOS desempenho, bem como o desempenho satisfatório EMD / TF. Vou agora reteste estratégias novamente com testes de robustez e Money Management para ver como cada uma das estratégias lida com pequenas mudanças nos insumos e ser capaz de comparar as estratégias uns com os outros.


Vou mudar a gestão do dinheiro do tamanho fixo para o montante fixo, deixando cada risco startegy $ 500 por comércio. Isso permite uma melhor comparação de estratégias, porque eles arriscam o mesmo valor por comércio.


Imagem 7: Definir o gerenciamento de dinheiro para um valor fixo


Em testes de robustez eu uso pelo menos 20 simulações e testar a estratégia para todos os tipos de situações de estresse. Depois de configurar o teste de robustez eu retest as estratégias novamente.


Desta vez, será rápido porque existem poucas estratégias deixadas no banco de dados.


Imagem 8: Testes de robustez


Como avaliar os testes de robustez


Testes de robustez mostram-nos como a estratégia pode se comportar na realidade, quando há negociações perdidas, diferentes dados de história, etc. Estou procurando estratégias que tenham valores aceitáveis ​​para Lucro Líquido e Drawdown em nível de confiança de 95%.


Imagem 9: Resultados dos testes de robustez


No exemplo acima podemos ver resultados de robustez para duas estratégias. Estratégia na esquerda tem lucro em nível aceitável, mas redução mais do que dobrou em relação ao resultado original.


Estratégia à direita também tem lucro em nível aceitável e redução foi praticamente inalterada.


Neste passo eu vou escolher apenas 1-3 estratégias finais que serão submetidos ao próximo teste de robustez.


Essas estratégias finais são selecionadas pelos melhores resultados em testes de robustez, rentabilidade geral e também simplicidade - quero que as regras de estratégia sejam tão simples quanto possível, e as regras de negociação devem fazer algum sentido.


5. Quinto filtro - Teste Matrix Walk-Forward


Nós somos deixados com algumas estratégias e nós podemos funcionar o teste final para a robustez - teste da matriz do Walk-Forward. WF Matrix é simplesmente uma matriz de otimizações walk-forward com número diferente de execuções e períodos de execução.


Se a estratégia passar no teste Walk-Forward Matrix, isso significa que com a ajuda da reoptimização de parâmetros a estratégia é adaptável a uma grande variedade de condições de mercado E também que a estratégia não é ajustada a dados específicos - uma vez que com reoptimização ele funciona em muitos diferentes períodos de tempo.


Além deste teste WF Matrix também nos diz se a estratégia deve ser permanentemente reoptimized e qual é o período de reoptimização mais ideal.


Walk-Forward Matrix teste tem que ser feito para cada estratégia separadamente. Vou carregar a minha estratégia para o Optimizer e selecionar a opção Walk-Forward Matrix. Também selecionarei etapas para corridas e porcentagens de OOS. StrategyQuant passará por todas essas combinações, realizando a otimização Walk-Forward da estratégia.


Imagem 10: Configurando a matriz Walk-Forward


Definir parâmetros para otimização


Para que a otimização faça sentido, é necessário definir os parâmetros de estratégia que serão otimizados. Cada estratégia usa lógica diferente e tem parâmetros diferentes, então você tem que configurar a otimização de forma diferente.


Imagem 11: Otimização de parâmetros


Esta estratégia é relativamente simples, por isso vou otimizar apenas o valor Stop Loss e parar o coeficiente de arrasto.


Não é necessário otimizar todos os parâmetros, apenas aqueles que têm o maior impacto no desempenho da estratégia.


Avaliando a matriz Walk-Forward


Quando a otimização terminar, vou clicar no resultado da matriz Walk-Forward no Databank para ver os detalhes.


Eu quero otimizador para me dar resposta clara se a estratégia passou Walk-Forward otimização teste, então eu tenho que configurar critérios de pontuação.


Estes são critérios simples que têm de ser verdadeiras para a estratégia para passar no teste.


Imagem 13: Walk-Forward Matrix resultados


O resultado final é que o startegy passou o teste de matriz Walk Forward para robustez. O gráfico de pontuação 3D mostra que 19 de 24 combinações passaram nossos critérios (configurações padrão usadas).


A estratégia não precisa passar para cada combinação, estou procurando 2x2 ou 3x3 área que tem a maioria das combinações passadas - este será o grupo de melhores combinações reoptimization. Neste caso, eu posso ver que 10 corridas com 30% Out of Sample é uma das melhores combinações, porque é cercado por outras combinações que também passou.


Quando eu verificar o gráfico de otimização Walk-Forward eu posso ver que a estratégia permanece rentável também durante reoptimization. A diminuição da rentabilidade está em linha com os testes que obtivemos com a análise de robustez Monte Carlo, mas a estratégia ainda é rentável.


Imagem 14: gráfico de otimização Walk-Forward


Eu descrevi meu processo completo de trabalhar com StrategyQuant, que conduziu a algumas estratégias novas interessantes.


Estes strateguies são apenas amostras um dit levou-me menos de 2 dias de execução SQ e cerca de 1-2 horas do meu tempo para encontrá-los com o uso de StrategyQuant.


Você pode experimentá-lo, inspirar-se e, possivelmente, melhorar o processo com suas próprias idéias, que você pode compartilhar no nosso fórum.


Possíveis melhorias do processo - você pode tentar procurar estratégias separadamente para a direção longa e curta. Cada direção tem sua própria dinâmica, e diferentes estratégias para longo e curto poderia retornar melhores resultados.


Eu não mencionei Improver - é uma ferramenta poderosa que permite que você procure uma melhor variação de sua estratégia existente, se você ainda não está satisfeito com o desempenho.


Basta ter em mente - o ponto não é encontrar uma estratégia que é perfeita em dados históricos. Esta é uma receita para o desastre, porque a estratégia excessivamente otimizada é garantida a falha na negociação real.


Nosso objetivo deve ser encontrar uma estratégia que seja robusta em diferentes dados e / ou símbolos, porque isso significa que tem real vantagem sobre o mercado.

Comments

Popular posts from this blog

Binary Options 15 Minutes Strategy Board

Pengenalan Indikator Forex Terbaik

Binary Option Strategy Pdf