Walk forward testing trading system


O código de comércio do Sistema de Biblioteca de Código é divulgado em várias postagens, pode ser uma boa idéia consolidá-las em um só lugar (aqui) antes que tudo se torne um pouco complicado. Eu também escrevo mensalmente para a Revista Técnica de Stocks and Commodities (TASC) Na seção Dicas do Trader8217s (principalmente código Trading Blox). Por favor, encontre tudo abaixo para sua leitura: 8212 TASC magazine Traders8217 Dicas 8212 TASC Traders Tips (abril de 2018): modificado Volume Preço Tendência Indicador no Excel No artigo Modificado Volume-Preço Tendência Indicador nesta edição, o autor David Hawkins discute uma modificação de O indicador de tendência do preço do volume (VPT), ​​já baseado no indicador de volume no balanço desenvolvido originalmente por Joseph Granville. Link para traders8217 dicas link para arquivo Excel TASC Traders Tips (maio de 2018): Suavização b em Trading Blox Em 8220Smoothing o artigo Bollinger b8221, o autor Sylvain Vervoort explica como remover o ruído do indicador tradicional b, usado para identificar pontos de viragem claros e divergências . Link para dicas de traders8217 link para o arquivo tbx TASC Traders Tips (dezembro de 2018): Hull Moving Average In Trading Indexes com a média de Hull Moving naquela edição, o autor Max Gardner explica como usar a média móvel de Hull para o tempo de mercado a longo prazo. Link para traders8217 dicas link para o arquivo tbx 8212 MISC 8212 8212 CSI Unfair Advantage API 8212 RetrieveBackAdjustedContract2 Documentação da função da API Guia de referência sobre esta função essencial tirada do documento da API CSI. Link para o link de publicação original para o documento RTF Recuperar o contrato de futuros ajustado de volta Alguns exemplos de código em C usando a API para acessar uma das funções mais importantes para recuperar qualquer contrato de futuros com qualquer tipo de ajuste de retorno oferecido pelo CSI. Link para o link de publicação original para o arquivo de origem CS CSI Individual Contracts Extractor Um utilitário para extrair contratos individuais do CSI8217s Unfair Advantage Database em arquivos de texto simples. Link para o link de publicação original para o arquivo zip que contém o EXE 8212 Variação de estoque do Trading Blox 8212 MMDI no clássico Filtro de portfólio MACD, usando o indicador Moving Median em vez da média móvel padrão para a média rápida. Link para link de publicação original para arquivo de bloco (tbx) Indicadores Vortex e AVX aprimorados e sistema AVX O indicador Vortex original teve uma falha (gerenciamento de lacunas para mercados não-Forex) e não usou uma média móvel exponencial para suavização. Esta é a minha versão melhorada com um sistema de reversão básico usando-o para entriesexits link para link de publicação original para arquivo zip (contendo: Vortex Indicator 038 Arquivo de bloco auxiliar AVX (tbx), AVX Entry Exit block (tbx), AVX System (tbs)) 8212 R Código 8212 Walk-Forward implementação de Vince8217s Leverage Space Model Utiliza o pacote LSPM R (por Josh Ulrich) em uma abordagem walk-forward para permitir uma metodologia de teste de teste adaptativo. Link para publicação original com explicações necessárias arquivo de código R 8212 cálculo da relação e-ratio AmiBroker 8212 O e-ratio é uma maneira prática de avaliar a borda de um componente específico de um sistema sem ter que testar o sistema como um todo (ou seja, a borda do Sinal de entrada apenas). Link para a publicação original (inclui todos os trechos de código e lógica necessários) 8212 Cálculo de razão eletrônica TradersStudio 8212 para o sistema Donchian Channel Breakout Este código contém o código genérico necessário para calcular o e-ratio, bem como uma implementação para aplicar o cálculo a um Donchian Sinal de entrada do canal. Link para o link de publicação original para o arquivo zip (contendo o código TS do Indicador de Canal Donchian, o Código de TS do Código de Comércio Personalizado, o código do TS do Sistema de Compra, o Código do TS do Sistema de Venda, a macro do e-ratio do Excel (arquivo de texto), o livro de exemplo do Excel) Au. Tra. Sy blog, Systematic Trading, pesquisa e desenvolvimento, com um sabor de Trend Following. Descargo de responsabilidade: o desempenho passado não é necessariamente indicativo de resultados futuros. O comércio de futuros é complexo e apresenta o risco de perdas substanciais como tal, pode não ser adequado para todos os investidores. O conteúdo deste site é fornecido apenas como informação geral e não deve ser tomado como conselho de investimento. Todo o conteúdo do site, não deve ser interpretado como uma recomendação para comprar ou vender qualquer instrumento de segurança ou financeiro, ou para participar de qualquer estratégia de negociação ou investimento específica. As idéias expressas neste site são apenas as opiniões do autor. O autor pode ou não ter uma posição em qualquer instrumento financeiro ou estratégia acima mencionada. Qualquer ação que você toma como resultado de informações ou análises neste site é, em última análise, sua exclusiva responsabilidade. RESULTADOS DE DESEMPENHO HIPOTÉTICOS TEM MUITAS LIMITES INERENTES, ALGUNS DESCRITOS ABAIXO. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VÁ OU SEJA PROBABILITÁVEL PARA ALCANÇAR LUCROS OU PERDAS SIMILARES ÀQUELES MOSTRADOS EM FATO, HÁ DIFERENÇAS FREQUENTEMENTE SHARP ENTRE RESULTADOS DE DESEMPENHO HIPOTÉTICOS E OS RESULTADOS REAIS ASSOCIADOS SUBSQUECIMENTAMENTE POR QUALQUER PROGRAMA PARTICULAR DE NEGOCIAÇÃO. UMA DAS LIMITAÇÕES DOS RESULTADOS DE DESEMPENHO HIPOTÉTICOS É QUE ESTÃO GERALMENTE PREPARADAS COM O BENEFÍCIO DE HINDSIGHT. ADICIONALMENTE, O NEGOCIAÇÃO HIPOTÉTICA NÃO IMPORTA RISCOS FINANCEIROS, E NENHUM GRUPO DE NEGOCIAÇÃO HIPOTÉTICA PODE COMPLETAMENTE CONTA PARA O IMPACTO DO RISCO FINANCEIRO DE NEGOCIAÇÃO REAL. POR EXEMPLO, A CAPACIDADE DE PERDAS OU DE ADESIVO PARA UM PROGRAMA DE NEGOCIAÇÃO ESPECÍFICO EM ESPIRRO DE PERDAS DE NEGOCIAÇÃO SÃO PONTOS MATERIAIS QUE PODEM IGUALMENTE AFETAR EFECTUAR RESULTADOS REAIS DE NEGOCIAÇÃO. HÁ NOMBROSOS OUTROS FATORES RELACIONADOS COM OS MERCADOS EM GERAL OU NA EXECUÇÃO DE QUALQUER PROGRAMA ESPECÍFICO DE NEGOCIAÇÃO QUE NÃO PODE SER COMPLETAMENTE COMPTABILIZADO NA PREPARAÇÃO DE RESULTADOS DE DESEMPENHO HIPOTÉTICOS E TODOS OS QUE PODEMOS ADVERSAMENTE EFECTUAR OS RESULTADOS DE NEGOCIAÇÃO. ESTAS TABELAS DE DESEMPENHO E RESULTADOS SÃO HIPOTÉTICOS DE NATUREZA E NÃO REPRESENTAM A NEGOCIAÇÃO DE CONTAS REAIS. Copiar 2009-2017 Au. Tra. Sy blog 8211 Automated trading System mdash Sitemap mdash Desenvolvido por WordpressWalk-Forward Optimization em StrategyQuant O que é otimização A idéia por trás de uma otimização é simples. Primeiro, você precisa ter um sistema de negociação - por exemplo, um cruzamento de média móvel simples: se EMA (10) cruza acima de EMA (20), continue, caso contrário, vá curto. Em quase todos os sistemas comerciais, existem alguns parâmetros (períodos de 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 ReturnDD ou outro parâmetro desejado). Por exemplo, seria melhor usar a regra EMA (10) cruza acima de EMA (20) ou regra EMA (15) cruza acima EMA (50) A otimização pode ajudá-lo a encontrar os valores que retornaram o melhor desempenho no passado. O que é a análise de otimização 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 em todo o período de backtesting e são sempre seguidos pelos 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 do mercado e, em seguida, verifique o desempenho do sistema testando-o para a frente nos dados que seguem o segmento de otimização e o processo pode ser repetido em segmentos de tempo subseqüentes. Como a otimização Walk-Forward funciona 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 executada. 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âmetro. Estes valores de parâmetros são então aplicados ao período de execução 1 - a estratégia é negociada com os parâmetros otimizados encontrados na etapa anterior. No final do período de execução 1, o sistema novamente executa otimização simples em uma parte dos dados marcados como otimização do período 2. Ele encontra o melhor conjunto de valores de parâmetro e eles são novamente usados ​​para negociação no período de execução 2. Isso continua até o período 5, que também é o fim dos dados históricos usados ​​no teste. A otimização do Walk-Forward simula como você pode trabalhar com a estratégia durante a negociação real - você pode otimizá-la em alguns dados históricos e depois trocá-la com os melhores valores. Depois de algum tempo, você deseja re-optimizar e deixar trocar novamente. O que a análise de otimização Walk-Forward diz que você basicamente diz se o startegy é robusto o suficiente e se seu desempenho pode ser melhorado pela re-optimização. Se o desempenho da estratégia for pior durante a re-optimização do que o startegy original não otimizado, é um grande sinal para assistir o ajuste da curva. Por outro lado, se a estratégia otimizada Walk-Forward funcionar melhor do que a versão não otimizada nos mesmos dados, ela diz isso. Sua estratégia se beneficiará da otimização. Então você deve re-optimizar periodicamente para obter o melhor desempenho. Isso também significa que o startegy é robusto o suficiente para lidar com as mudanças do mercado (usando reoptimização) e há uma grande chance de que ele também funcionará no futuro. O exemplo de otimização Walk-Forward no StrategyQuant A realização de otimização Walk-Forward no StrategyQuant é simples, nas próximas linhas, Ill mostre o processo completo. Estratégia para otimização Para simplificar, use a estratégia EMA Cross neste exemplo. Note-se que esta estratégia na forma básica NÃO é rentável, e a re-optimização não o 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. Etapa 1: Carregando uma estratégia de otimização Em primeiro lugar, você deve alternar para a janela do Otimizador e carregar a estratégia que deseja otimizar o topo. Para este exemplo, use uma estratégia EMACross simples que seja longa quando EMA mais rápido se cruza acima da EMA mais lenta e diminua quando EMA mais rápido passa abaixo EMA mais lenta. Depois de carregar a estratégia, é adicionado também como estratégia original ao banco de dados de resultados da otimização. Você pode clicar duas vezes na estratégia original e, em seguida, ir para Resultados - Código-fonte para ver suas regras. Certifique-se de verificar a caixa de seleção Colocar valores nos parâmetros para que veja que as variáveis ​​pLongEMA1, pLongEMA2, pShortEMA1, pShortEMA1 são usadas para armazenar parâmetros do indicador. Em nosso otimização, experimente encontrar os melhores valores desses parâmetros. Ainda há um pequeno problema. Podemos ver que a estratégia usa diferentes parâmetros por longo e curto sentido. Podemos usá-lo assim se desejarmos encontrar valores ótimos de forma independente para o lado longo e curto, mas para o nosso exemplo, você usa o mesmo parâmetro para o lado longo e curto. Podemos fazê-lo no programa Ferramentas - Opções - Parâmetros da estratégia. Se você verificar a primeira caixa de seleção, 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 refazer o código-fonte. Passo 2: Configurando valores de otimização Para configurar 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 disponíveis para otimização. Otimização simplesmente significa tentar diferentes valores de parâmetros de entrada. Para cada parâmetro que você deseja otimizar, você deve verificar a linha do parâmetro e escolher os valores Iniciar, Parar e Etapa. O otimizador irá iterar o valor de Iniciar para Parar, levando Steps. O valor original também é configurável, ele será usado para testar novamente a estratégia original. Você pode usar esse valor para comparar o desempenho de novos resultados com as configurações originais. O valor do Número de testes mostra-nos quantos testes devem ser realizados para testar todas as combinações dos valores. Observação É possível que sua tabela de parâmetros contenha muito mais parâmetros, poderia parecer assim: Esta é outra característica poderosa do StrategyQuant. Ele permite que você otimize não apenas os parâmetros da estratégia, mas também outras opções de negociação, como por exemplo, quantas negociações devem ser realizadas por dia ou qual deve ser o intervalo de tempo para negociação. Essas configurações normalmente são 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 Parâmetros, vá mais uma vez aos parâmetros Ferramentas - Opções - Estratégia e desmarque a caixa de seleção para Adicionar parâmetros para opções de estratégia. Etapa 3: Configurando corridas para avançar Temos que especificar também as configurações de caminhada. Neste exemplo, use um período de 30 Out Of Sample (Run) e 6 etapas de re-optimização. Fora da amostra, isso significa o quanto de todo o período é deixado para ser executado. Se bem configurado para 30, significa que em cada período 70 dos dados são utilizados para otimização, e 30 serão usados ​​para negociação usando os valores otimizados. Walk Forward Runs isso significa quantas execuções de otimização haverá, o que significa quantas vezes melhor re-optimizar a estratégia. Também é possível especificar os períodos de otimização (In Sample) e executar (Out of Sample) por dias exatos, você pode fazê-lo, verificando Definir número específico de dias. Passo 4: Verificando os resultados, a otimização Walk-Forward demora mais do que uma simples, pois há 6 (ou mais) passos de otimização em vez de apenas um. Quando terminar, veja que temos apenas dois resultados no banco de dados - Estratégia original e resultado Walk-Forward. Quando bem, clique duas vezes no resultado no banco de dados, os resultados da estratégia serão abertos. Podemos ver que a estratégia falhou no teste walk-forward, com base em nossas configurações de pontuação de robustez. A pontuação de robustez é totalmente customizável. Podemos definir todas as condições que queremos assistir na tabela de componentes de pontuação Robustness (1) e definir seus valores de limite. O valor de limiar de pontuação principal de robustez (2) significa quantos desses escores utilizados devem passar para que o resultado de WF seja considerado bem-sucedido. À direita, a partir desta tabela, podemos verificar os resultados para cada otimização e período de execução: você pode ver que apenas 2 de 6 execuções acabaram em lucro. Também podemos verificar o gráfico de equidade: a linha azul representa a estratégia re-optimizada, enquanto a linha cinza mais fina representa a estratégia original não otimizada. Interpretando os resultados Como devemos interpretar esses resultados. Em primeiro lugar, é claro que esta estratégia particular não tem melhor resultado quando a reoptimização é usada. Certamente, essa estratégia não é rentável na sua forma original e NÃO FOI RENTÁVEL PELA REOPTIMALIZAÇÃO. Mas e se você quiser reoptimizar a estratégia com mais freqüência Ou se bem usar diferente Fora da amostra Como podemos dizer qual é o melhor período de re-optimização da estratégia? Aqui é onde Walk-Forward Matrix vem para jogar - verifique o próximo artigo. Descrição dos componentes de pontuação WF avançados Existem vários componentes de pontuação especiais que você pode usar na tabela de componentes de pontuação Robustness para determinar se a otimização Walk-Forward foi bem-sucedida ou não. Os componentes de estabilidade WF permitem que você compare o desempenho entre otimização e execução (em média por número de dias, portanto, não depende do tamanho relativo de cada período). Normalmente, podemos esperar que o desempenho da estratégia APÓS a otimização seja pior do que a parte otimizada, porque a parte otimizada já foi otimizada para o melhor desempenho. As condições abaixo nos permitem definir limites quanto o desempenho diminui muito, estamos dispostos a aceitar: Estabilidade do lucro líquido da WF - Desempenho do lucro líquido na execução vs na parte de otimização (em porcentagem). O valor acima de 100 significa que a estratégia funciona melhor na execução do que na parte de otimização. Digamos que você especifique a condição WF Net Profit Stability 60. Isso significa que o desempenho na parte executada (após otimização) deve ter pelo menos 60 de desempenho no período de otimização. Assim, por exemplo, se a estratégia for realizada em 1000 no período de otimização, ele deve fazer pelo menos 600 ou mais após o período de otimização para passar esta condição. Isso é importante para avaliar porque queremos que nossa estratégia funcione bem depois de otimizá-lo e esta condição nos permite controlar isso - em nossa condição, deixamos a otimização passar somente se o startegy executa pelo menos 60 de desempenho otimizado. WF Drawdown Stability - Drawdown em execução vs otimização parte (em percentagem). O valor acima de 100 significa que a estratégia tem pior redução em execução do que na parte de otimização. Digamos que você especifique a condição WF Drawdown Stability Stability Discute sobre este artigo aqui

Comments