Estratégia de Crossover Média Móvel.
Nesta página, gostaria de mostrar uma comparação entre alguns sistemas de crossover médios móveis. Um usa duas médias móveis simples (sma's) e o outro usa três sma's.
Já pensou em usar um sistema de média móvel dual para negociar?
Se você estiver pensando em usar crossovers de média móvel dupla para entrar e sair de negociações, você pode considerar o teste de um sistema triplo de MA também. Compare-os lado a lado em diferentes ações ou outros instrumentos de negociação, bem como diferentes períodos de tempo ou prazos. Teste diferentes períodos de média móvel, mas tenha cuidado para não confiar em resultados otimizados ou de 'ajuste de curva'.
Mas, como alguns dos meus visitantes não sabem o que é isso, vamos primeiro ao básico.
O QUE É UM CROSSOVER MÉDIO EM MOVIMENTO?
A imagem à direita é um exemplo de um crossover de média móvel dupla, que iniciaria um sinal de compra (crossover de alta). Uma média móvel mais rápida (8 sma - blue) cruza acima de uma média mais lenta (13 sma - yellow).
Observe que o sinal não é confirmado até o fechamento da barra. Isso significa que a entrada real (em negociação ao vivo) estaria em algum lugar na próxima barra. Muito provavelmente perto da abertura desse bar.
Se você ainda não fez nenhum backtesting, esse tipo de sistema simples provavelmente será um dos primeiros que você testará, já que requer poucas habilidades de programação. De qualquer forma, se você seguir esse caminho, verá que o preço de abertura da próxima barra após a cruz, é onde o software de backtesting (dependendo da configuração) colocará os negócios simulados. O que é razoável, porque se você estivesse realmente negociando usando um software de negociação automatizado, esta é uma aproximação aproximada de onde o seu negócio seria realizado.
Com um típico sistema 'stop & reverse', essa entrada longa não seria concluída até que o MA azul, mais rápido, cruzasse abaixo do MA amarelo e mais lento. Esse crossover de baixa do MA não apenas sai do negócio, mas também inicia um curto comercio na direção oposta. Assim, com sistemas de crossovers médios móveis duplos, o negociador está sempre em uma negociação, longa ou curta.
Vamos dar uma olhada em um exemplo intradiário ao longo de um dia.
CROSSOVER MÉDIO MOVENTE DUPLO.
Usaremos um gráfico de 5 minutos do SPY com duas médias móveis simples para o primeiro exemplo: Fast = (8 sma - green) e Slow = (13 sma - yellow).
Eu escolhi este dia em particular, porque eu queria ilustrar o que é muito típico para praticamente qualquer estratégia de crossover média móvel. O primeiro comercio longo depois das 11:00 da manha vai muito bem e realmente pega uma boa entrada de pullback.
A saída por volta das 12:45 é lucrativa.
Mas, eu quero que você observe é a ação do preço agitado entre 12:00 - 3:00. É aí que os sistemas double MA podem realmente reduzir seus lucros. O mestre apenas balbuciava causando três perdas seguidas, provavelmente evaporando os lucros do primeiro negócio. Se uma pessoa estava negociando este método neste dia, felizmente eles teriam visto mais uma negociação vencedora decente às 2:30.
A parte boa deste sistema é exibida na primeira negociação e na última negociação. Enquanto a movimentação de crossovers médios falha miseravelmente durante a ação do preço agitado, eles funcionam muito bem durante a ação do preço de tendência.
Se você fizer o backtest desses sistemas simples de parada e reversão, e inspecionar um que saia com lucro, você provavelmente descobrirá que o% de vitória é menor que 50%, mas o vencedor médio será maior que o perdedor médio.
Isso porque os sistemas de crossover médios móveis são essencialmente sistemas de 'tendência de negociação'. E, os sistemas de negociação de tendência quase sempre têm essa característica de uma pequena porcentagem de vencedores e uma boa proporção de ave. win para ave. loss.
Nos gráficos abaixo L = Long, S = Short e Ex = Exit.
CROSSOVER MÉDIO MOVENTE TRIPLO.
Até agora, a discussão centrou-se em torno de um sistema tipo stop & reverse, em que um sinal para uma saída também produz um comércio na direção oposta. Mas se introduzirmos uma terceira média móvel para o sistema, pode haver um período de neutralidade. Em outras palavras, nenhum negócio ocorre - você está em dinheiro.
Para este exemplo, vamos usar um gráfico de 3 minutos e três médias móveis simples: 4 sma, 10 sma e 50 sma.
As regras são muito simples. Se a linha lenta (50 sma) estiver subindo e a linha rápida (4 sma) cruzar acima da linha do meio (10 sma), haverá um sinal de compra. O sinal de saída vem quando a linha rápida cruza abaixo da linha do meio.
As regras são o oposto para entradas curtas. É fácil ver que este sistema é semelhante a tirar comércios da tendência de um período de tempo maior.
Uma alternativa para este sistema seria apenas ter entradas longas, quando as médias móveis rápidas e médias estão acima do sma lento.
Esteja ciente de que quando você está lidando com três graus de liberdade (3 variáveis), ao invés de dois, como no exemplo acima, você está tornando o sistema mais complexo e, portanto, criando muito mais combinações possíveis para testar.
É claro que o software de backtesting simplifica isso, mas lembre-se de que adicionar filtros e complexidade nem sempre é um sistema melhor. Freqüentemente, um sistema mais simples pode ser mais robusto sob testes.
Melhorando o sistema de cruzamento de média móvel.
Vamos dar uma olhada em um sistema de crossover de média móvel simples e ver se podemos melhorá-lo. Especificamente, podemos melhorar o desempenho do sistema de média móvel ao reduzir o número de serrações durante esses mercados de faixa de alcance temidos? Whipsaws ocorrem quando um mercado passa de um modo de tendência para um modo de consolidação. Durante este modo de consolidação, o sistema fica muito curto, criando uma sequência de negociações perdidas. Negociações longas repentinamente revertem atingindo sua parada. Da mesma forma para comércios curtos. Estes "sinais falsos" # 8217; pode destruir sua curva de capital. Neste artigo, vou apresentar dois métodos simples para melhorar o sistema de crossover de média móvel simples. Essas idéias podem ser facilmente implementadas em seus sistemas de negociação e podem fornecer um ótimo ponto de partida para um sistema de acompanhamento de tendência.
Sistema de linha de base.
Nosso sistema de linha de base consistirá de duas médias móveis simples (SMA) executadas em um gráfico diário dos futuros do Euro. Eu estou escolhendo o euro porque demonstrou características de tendência sólidas ao contrário dos mercados de índice de ações que tendem a ser reversão de média. Se você se lembrar, os sinais serão gerados quando uma média móvel mais rápida (trigger SMA ou trigger line) cruzar uma média móvel mais lenta (SMA lenta ou slow line).
Período SMA 50 lento.
Trigger SMA 3 período.
Ir Longo quando o gatilho cruzar acima do Slow SMA.
Vá em Curto quando o gatilho cruzar em Slow SMA.
Datas testadas: maio de 2001 & # 8211; 30 de setembro de 2013.
Comissões e amp; Slippage: $ 30 deduzido por negociação.
Número de contratos: 1.
Para aqueles que usam o TradeStation, o sistema de linha de base foi criado com a inserção de duas estratégias no gráfico fornecidas pela TradeStation. Abaixo estão as duas estratégias. O primeiro controla as regras de entrada longa (LE) e o segundo controla as regras de entrada curta (SE). Você pode ver os campos de entrada contendo os três e os cinquenta para os dois períodos diferentes para as nossas médias móveis. Compre usando essas estratégias fornecidas que você pode criar uma estratégia de crossover de média móvel em segundos sem nenhuma habilidade de codificação.
Curva de Equidade do Sistema de Linha de Base.
Essas duas regras simples produzem um sistema de negociação que é realmente lucrativo no longo prazo. Este é um testimate para as características de tendência do mercado de futuros do Euro. No entanto, há períodos de grandes perdas e longos períodos em que não são criados novos máximos de patrimônio. Não é provável que alguém realmente troque isso com dinheiro real. A imagem abaixo mostra um período recente a partir de 2011, quando o euro entrou em uma fase de consolidação durante os meses de verão de junho a agosto. Durante esse período, nosso Sistema de Linha de Base produziu uma seqüência de oito negociações perdedoras consecutivas.
Whipsaw Verão 2011.
Melhoria # 1: Entrada atrasada.
Com esse método de entrada, atrasaremos nossa entrada no mercado depois que a linha de disparo cruzar a lenta SMA. Então, quando a linha de disparo cruza a lenta SMA, não abrimos nossa posição imediatamente. Atrasamos por vários bares. Vamos dizer que esperamos por 15 barras após a ocorrência da cruz. No décimo bar após o sinal, vemos se o preço ainda está acima do SMA lento (para uma entrada longa) e entramos em aberto no dia 11. Se o preço estiver abaixo do nosso SMA lento, não abrimos uma nova posição. Ao fazer isso, eliminamos algumas barganhas às custas de entrar na negociação mais tarde do que a cruz original da SMA. A idéia por trás desse método é se um novo mercado em alta está prestes a começar, o preço não deve cair abaixo do SMA lento. Em suma, é outra maneira de medir a quantidade de condenação para a próxima fase do mercado. No entanto, vamos manter a saída igual. Quando ocorre uma cruz de EMA, sempre fechamos nossa posição aberta. Nós só aplicamos o atraso ao abrir uma nova posição.
A curva de capital com a nossa entrada atrasada, na verdade, move toda a curva de capital acima da linha zero. Menos negócios são feitos e reduzimos o lucro líquido total. A curva de capital também parece um pouco menos irregular, implicando uma subida ligeiramente mais suave. Abaixo está uma imagem mostrando o período de verão whipsaw em 2011. Você vai notar que reduzimos o número de whipsaws de oito para zero.
Whipsaw Verão 2011.
Melhoria # 2: bandas de negociação.
Ao contrário do crossover de média móvel padrão, em que a linha de disparo deve simplesmente cruzar o SMA lento, nossa linha de disparo deve agora demonstrar convicção cruzando além do SMA lento. Por exemplo, imagine outra banda acima do SMA lento que seja 1 ATR acima do SMA lento. Para abrir uma nova posição longa, precisamos que a linha de disparo penetre na banda ATR acima da linha lenta. Agora imagine outra banda que é um ATR abaixo do SMA. Essa banda representa nosso gatilho curto quando abrimos uma posição curta. Esperamos eliminar algumas falhas, atrasando nossa entrada e forçando o mercado a nos mostrar alguma força.
Alguns de vocês já devem ter percebido que o que temos é um canal Keltner. Um canal Keltner não é nada mais que uma média móvel (SMA lento) com um número X de ATRs de banda superior acima e abaixo do SMA lento. As bandas superior e inferior atuam como o gatilho para inserir uma posição longa ou uma posição curta. As bandas se adaptam à volatilidade em expansão, exigindo mais convicção de preços para iniciar uma nova posição. Da mesma forma, essas bandas se contraem durante tempos de menor volatilidade. Assim, as regras de entrada e saída são mais dinâmicas para um mercado em mudança do que um simples crossover de média móvel.
O gráfico de patrimônio não parece muito diferente do nosso sistema de linha de base. Toda a curva de capital gasta menos tempo perto da linha zero e há menos negociações. Abaixo está o mesmo período de tempo mostrando que o Sistema de Banda reduziu o número de sinais falsos de oito para dois. Esta é uma grande melhoria em relação ao sistema de linha de base.
Cada um dos dois métodos melhorou os resultados do sistema de linha de base original. Olhando para a tabela abaixo, podemos ver estatísticas de desempenho, como fator de lucro, porcentagem de ganhadores e lucro líquido médio de comércio, todos aumentados. O Keltner produziu as melhores estatísticas globais. Nós certamente não temos um sistema de negociação que seja negociável com dinheiro real, mas cumprimos nossa missão. Reduzimos o número de whipsaws com o nosso Sistema de Entrada com Atraso e Sistema de Entrada de Banda. Você pode ver isso observando o número de negociações realizadas por cada sistema e a porcentagem de negociações vencedoras.
Mais ideias
Você pode fazer essa pesquisa em todos os tipos de direções. Aqui mais duas ideias.
Delay With Time Decay & # 8211; Os mercados mudam entre tendências e não tendências, como todos sabemos. Muitas vezes, você notará uma sequência de sons rápidos em um sistema de crossover médio móvel logo após o fechamento de uma grande negociação vencedora. O mercado aparentemente está agora se transformando em um mercado limitado e provavelmente fará isso por algum tempo. No entanto, à medida que os dias ou semanas se desgastam, a probabilidade de uma fuga provavelmente aumenta. Assim, talvez possamos reduzir o tempo de atraso com o passar do tempo. Após o encerramento de uma negociação bem-sucedida, começamos a procurar a próxima cruz com nosso atraso de barra X padrão. O mercado permanece ligado ao limite e produz vários sinais falsos ao longo das semanas, mas o nosso sistema não recebe novos sinais. Durante estes sinais falsos, o contador de atrasos é reiniciado, mas nem sempre o redefini-lo para X. Todos os dias ou todas as semanas, reduzimos o atraso do dia X em um. Fazemos isso porque acreditamos que, com o passar do tempo, uma fuga se torna mais provável. No entanto, nunca reduzimos o X para chegar a zero ou menos. Na verdade, podemos nunca querer ir muito abaixo de 5 ou mais.
Filtro de tendência & # 8211; Em um artigo anterior, usei o rsRank ou um SMA de 200 períodos como indicador de tendência para ajudar a determinar o quadro geral do euro. Em outras palavras, estamos em um mercado de alta ou baixa? Talvez apenas fazer negócios longos durante um mercado altista ou fazer negócios curtos durante um mercado de baixa possa melhorar os resultados. Este seria um teste interessante e simples de realizar. Eu adoraria ouvir seus resultados.
Não deixe de comentar abaixo. Eu adoraria ouvir alguma ideia ou resultado dos seus próprios testes!
Tanto a linha de base quanto os sistemas de canal Keltner são diretos para serem criados, portanto, não estão incluídos aqui. No entanto, o sistema baseado em entrada atrasada é um pouco mais complicado de codificar para que o sistema esteja disponível aqui para download.
MA Crossover Com Atraso TradeStation (ELD)
Sobre o autor Jeff Swanson.
Jeff é o fundador do System Trader Success - um site e uma missão para capacitar o profissional de varejo com o conhecimento e as ferramentas adequadas para se tornar um operador lucrativo no mundo da negociação quantitativa / automatizada.
Posts Relacionados.
Guia para iniciantes de negociação quantitativa.
Estudo de caso: Uma técnica simples do Market Internals pode melhorar os resultados da estratégia de negociação?
Você está perdendo quando deveria estar ganhando? Aqui está algo que você pode estar perdendo.
Você já olhou para a Média Móvel Exponencial Dupla (DEMA)? Em milhares de testes, tentando todas as idéias baseadas em MA que eu poderia pensar, o DEMA era de longe o MA mais confiável para crossovers que eu vi.
Eu pessoalmente não olhei para o DEMA muito em tudo. Eu vou ter que dar uma chance. Obrigado por compartilhar sua idéia.
Assim que eu me ponho um pouco melhor em navegar pela TradeStation e pela Easy Language, estou ansioso para testar ideias como essa! Estou curioso para ver como a combinação de alguns deles afetaria os resultados.
Ótimo Andy! Esta é a melhor maneira de aprender & # 8211; sujar as mãos construindo, testando e modificando o código. Aqui estão alguns links que você pode achar úteis.
Você pode encontrar alguns tutoriais gratuitos aqui:
TradeStation como alguns bons exemplos, mas são mais complicados:
Fóruns de discussão do EasyLanguage:
Guia de Programação EasyLanguage:
Ei, boa dica sobre o atraso, eu tenho experimentado usando escala de vela e médias móveis, estou tendo problemas para programá-los em probuilder, você tem alguma idéia?
Não necessariamente o primeiro lugar para mergulhar o dedo do pé na água, mas o código educacional e útil também. A última vez que ouvi um tutorial oficial da Tradestation sobre matrizes, o tutor não pôde pensar por que você gostaria de usar um. Bill Brower pode. Coisas realmente boas.
Aproveite o effot colocado e respeitado leituras como fornecidas pelo seu site. Uma pergunta rápida: você poderia explicar por que sua codificação nunca incorpora uma função setdollartailing? A razão é a mais óbvia, mas eu gostaria de aqui de você.
Obrigado novamente e mantenha o grande trabalho.
O pequeno trabalho que fiz com o setdollartriling não funcionou muito bem. Com base nos meus testes, muitas vezes prejudicou o sistema mais do que ajudou. Não estou dizendo que não há usos válidos para setdollartrailing, mas não encontrei muitas ocasiões. Muitas vezes descobri que sair com base no tempo ou em um evento, como preço cruzando um limite, é muito melhor como uma saída. Isso também inclui não mover meu disco rígido.
Desculpe pela distração, ou seja, erro de ortografia & # 8211; A função de autocorreção tem sua própria mente.
Você está certo em seu método de melhorar as estratégias de médias móveis, já que os MAs estão atrasados e criando muitas barulhos. O que eu prefiro fazer é usar 2 EMAs em vez de 2 SMAs. E quando o mais rápido cruza o mais lento no gráfico diário eu começo a negociar com base no gráfico H4 (4 horas) apenas na direção da tendência (diária) até que o EMA mais rápido vira no gráfico diário (quero dizer, quando não aponta mais na mesma direção com o mais lento, mas parece estar invertendo, não há necessidade de esperar até que ele cruza o mais lento no dia anterior).
Eu devo completar isso muitas vezes, mesmo que o EMA mais rápido vire como se estivesse invertendo para voltar mais devagar, ele pode voltar em breve, fazendo com que a tendência no dia-a-dia continue. Nesse caso, continuo negociando em gráficos H4 na direção da mesma tendência (diária) renovada.
Posts populares.
Atualização de RSI de 2 períodos do Connors para 2013.
Este indicador simples faz dinheiro de novo e de novo.
O portfólio Ivy.
Melhorando a estratégia do intervalo simples, parte 1.
Copyright © 2011-2018 pela Capital Evolution LLC. - projetado por prosperar temas | Alimentado por WordPress.
Por favor faça login novamente. A página de login será aberta em uma nova janela. Após o login, você pode fechá-lo e retornar a esta página.
EA média móvel simples.
EA média móvel simples.
Nós ficamos curtos se o SMA cair.
Eu tentei isso, mas não está funcionando.
Aqui, apenas seguimos a direção da média móvel simples, um 85 SMA.
Nós ficamos curtos se o SMA cair.
Eu estou tentando usar este EA em um corretor ECN e, apesar dos lotes que eu coloquei, eu sempre recebo o erro: & quot; Quantidade de lotes inválidos para função OrderSend & quot; e depois: & quot; OrderSend error 4051 & quot;
Obrigado pela ajuda que você pode dar.
Copyright e cópia 2000 - 2018, Jelsoft Enterprises Ltd.
Backtesting do sistema de negociação médio móvel
Uma das coisas mais úteis que você pode fazer na janela de análise é testar sua estratégia de negociação em dados históricos. Isso pode lhe dar informações valiosas sobre pontos fortes e fracos de seu sistema antes de investir dinheiro real. Este único recurso AmiBroker pode economizar muito dinheiro para você.
Escrevendo suas regras de negociação.
Primeiro você precisa ter regras objetivas (ou mecânicas) para entrar e sair do mercado. Este passo é a base da sua estratégia e você precisa pensar sobre isso sozinho, já que o sistema deve corresponder à sua tolerância ao risco, tamanho do portfólio, técnicas de gerenciamento de dinheiro e muitos outros fatores individuais.
Uma vez que você tenha suas próprias regras para negociação, você deve escrevê-las como regras de compra e venda na fórmula AmiBroker Lanugage (mais curta e cobrir se você quiser testar também a negociação a descoberto).
Neste capítulo, vamos considerar o sistema de crossover médio móvel muito básico. O sistema compraria ações / contratos quando os preços subirem acima da média móvel exponencial de 45 dias e venderá ações / contratos quando o preço próximo cair abaixo da média móvel exponencial de 45 dias.
A média móvel exponencial pode ser calculada em AFL usando sua função interna EMA. Tudo o que você precisa fazer é especificar a matriz de entrada e o período de cálculo, de modo que a média móvel exponencial de 45 dias dos preços de fechamento possa ser obtida pela seguinte declaração:
O identificador de fechamento refere-se ao array embutido mantendo os preços de fechamento do símbolo atualmente analisado.
Para testar se o preço de fechamento cruza acima da média móvel exponencial, usaremos a função cruzada embutida:
buy = cruz (fechar, ema (fechar, 45));
A declaração acima define uma regra de negociação de compra. Dá & quot; 1 & quot; ou & quot; verdadeiro & quot; quando fechar preço cruza acima ema (fechar, 45). Então podemos escrever a regra de venda que daria & quot; 1 & quot; quando a situação oposta acontece - fechar cruzes de preço abaixo de ema (fechar, 45):
sell = cruz (ema (fechar, 45), fechar);
Por favor, note que estamos usando a mesma função cruzada, mas a ordem oposta de argumentos.
A fórmula completa para negócios longos será assim:
buy = cruz (fechar, ema (fechar, 45));
sell = cruz (ema (fechar, 45), fechar);
OBSERVAÇÃO: para criar uma nova fórmula, abra o Editor de fórmulas usando o menu Analysis - & gt; Editor de fórmulas, digite a fórmula e escolha Ferramentas - & gt; menu Enviar para análise no editor de fórmulas.
Para fazer o back-test do seu sistema, basta clicar no botão Back test na janela de análise automática. Verifique se você digitou a fórmula que contém pelo menos as regras de compra e venda (como mostrado acima). Quando a fórmula está correta, a AmiBroker começa a analisar seus símbolos de acordo com suas regras de negociação e gera uma lista de negociações simuladas. Todo o processo é muito rápido - você pode testar milhares de símbolos em questão de minutos. A janela de progresso mostrará o tempo estimado de conclusão. Se você quiser parar o processo, basta clicar no botão Cancelar na janela de progresso.
Quando o processo é concluído, a lista de negociações simuladas é mostrada na parte inferior da janela Análise automática. (o painel Resultados). Você pode examinar quando os sinais de compra e venda ocorreram apenas clicando duas vezes no comércio no painel Resultados. Isso lhe dará sinais brutos ou não filtrados para cada barra quando as condições de compra e venda forem atendidas. Se você quiser ver apenas setas de comércio único (abrindo e fechando o comércio atualmente selecionado), você deve clicar duas vezes na linha enquanto mantém pressionada a tecla SHIFT. Alternativamente, você pode escolher o tipo de exibição, selecionando o item apropriado no menu de contexto que aparece quando você clica no painel de resultados com o botão direito do mouse.
Além da lista de resultados, você pode obter estatísticas muito detalhadas sobre o desempenho do seu sistema clicando no botão Relatório. Para saber mais sobre as estatísticas do relatório, confira a descrição da janela do relatório.
Alterando suas configurações de teste de volta.
O mecanismo de teste traseiro do AmiBroker usa alguns valores predefinidos para executar sua tarefa, incluindo o tamanho do portfólio, periodicidade (diária / semanal / mensal), quantidade de comissão, taxa de juros, perda máxima e paradas de lucro, tipo de negociações, campos de preços e assim por diante . Todas essas configurações podem ser alteradas pelo usuário usando a janela de configurações. Depois de alterar as configurações, lembre-se de executar o teste de volta novamente se quiser que os resultados estejam em sincronia com as configurações.
Por exemplo, para fazer o teste em barras semanais em vez de apenas clicar no botão Configurações, selecione a caixa combinada Semanalmente a partir da periodicidade e clique em OK e, em seguida, execute sua análise clicando em Voltar teste.
Nomes de variáveis reservados.
A tabela a seguir mostra os nomes das variáveis reservadas usadas pelo Automatic Analyzer. O significado e exemplos sobre o uso deles são dados mais adiante neste capítulo.
define & quot; vender & quot; (fechar a posição longa) regra de negociação.
CAVEAT: esta variável AFL é configurada por padrão para 1 (um), independentemente do conteúdo da janela de informações, A MENOS QUE você ative o modo de futuros (SetOption (& quot; FuturesMode & quot ;, True))
Permite controlar o valor em dólares ou a porcentagem da carteira investida no comércio (veja explicações abaixo)
Até agora, discutimos o uso bastante simples do back tester. A AmiBroker, no entanto, suporta métodos e conceitos muito mais sofisticados que serão discutidos mais adiante neste capítulo. Por favor, note que o usuário iniciante deve primeiro jogar um pouco com os tópicos mais fáceis descritos acima antes de prosseguir.
Então, quando você estiver pronto, por favor, dê uma olhada nos seguintes recursos introduzidos recentemente do back-tester:
a) Host de scripts AFL para criadores de fórmulas avançados.
b) suporte aprimorado para comércios curtos.
c) a maneira de controlar o preço de execução do pedido a partir do script.
d) vários tipos de paradas no back tester.
e) dimensionamento de posição.
f) tamanho do lote e tamanho do carrapato.
g) conta de margem.
O host de script da AFL é um tópico avançado que é abordado em um documento separado disponível aqui e não discutirei neste documento. Os recursos restantes são muito mais fáceis de entender.
Suporte ao comércio curto.
Nas versões anteriores do AmiBroker, se você quisesse fazer back-teste do sistema usando negociações longas e curtas, você poderia apenas simular a estratégia stop-and-reverse. Quando a posição longa foi fechada, uma nova posição curta foi aberta imediatamente. Foi porque comprar e vender variáveis reservadas foram usadas para ambos os tipos de negociações.
Agora (com a versão 3.59 ou superior) existem variáveis reservadas separadas para abrir e fechar negociações longas e curtas:
comprar - & quot; true & quot; ou 1 valor abre comércio longo.
sell - & quot; true & quot; ou 1 valor fecha comércio longo.
curto - & quot; verdadeiro & quot; ou 1 valor abre negociação a descoberto.
cover - & quot; true & quot; ou 1 valor fecha comércio a descoberto.
Para fazer um back-test de shorttrades, é necessário atribuir variáveis curtas e de cobertura.
Se você usar o sistema stop-and-reverse (sempre no mercado), basta atribuir sell short e buy to cover.
Isso simula a maneira como as versões pré-3.59 funcionavam.
Mas agora o AmiBroker permite que você tenha regras de negociação separadas para ir longo e para ir mais curto, conforme mostrado neste exemplo simples:
// longa troca regras de entrada e saída:
buy = cross (cci (), 100);
sell = cross (100, cci ());
// regras de entrada e saída de negociações curtas:
short = cross (-100, cci ());
cover = cross (cci (), -100);
Observe que, neste exemplo, se o CCI estiver entre -100 e 100, você está fora do mercado.
Controle de preço de negociação.
O AmiBroker agora fornece 4 novas variáveis reservadas para especificar o preço pelo qual as ordens de compra, venda, venda a descoberto e de cobertura são executadas. Essas matrizes têm os seguintes nomes: preço de compra, preço de venda, preço de venda e preço de capa.
A principal aplicação dessas variáveis é o controle do preço de negociação:
BuyPrice = IIF (dayofweek () == 1, ALTO, FECHAR);
// na segunda feira compre no alto, caso contrário compre no final.
Então você pode escrever o seguinte para simular ordens de parada reais:
BuyStop =. a fórmula para comprar o nível de parada;
SellStop =. a fórmula para vender o nível de parada;
// a ordem de compra ocorre (em buystop ou low, o que for maior)
Compra = Cruz (Alta, BuyStop);
// se a qualquer momento durante o dia os preços caírem abaixo do nível do preço de venda (baixa & lt; ponto de venda)
// a ordem de venda ocorre (no ponto de venda ou alto, o que for menor)
Venda = Cruz (SellPrice, SellStop);
BuyPrice = max (BuyStop, Low); // certifique-se de que o preço de compra não seja inferior a Low.
SellPrice = min (SellStop, Alto); // certifique-se de que o preço de venda não seja maior que Alto.
Observe que o AmiBroker pré-configura as variáveis de preço do preço de compra, preço de venda, preço de compra e preço do pacote com os valores definidos na janela de configurações do teste do sistema (mostrada abaixo), portanto você não pode defini-los em sua fórmula. Se você não os definir, o AmiBroker funciona como nas versões antigas.
Durante o back-testing, o AmiBroker irá verificar se os valores que você atribuiu ao preço de compra, preço de venda, preço de curto prazo, preço de cobertura se encaixam na faixa alta-baixa da barra dada. Se não, o AmiBroker irá ajustá-lo para o preço alto (se o preço da matriz for maior que o alto) ou para o preço mais baixo (se o preço da matriz for menor do que o valor mais baixo)
O destino do lucro é interrompido.
Como você pode ver na figura acima, novas configurações para paradas de lucro estão disponíveis na janela de configurações de teste do sistema. As paradas de meta de lucro são executadas quando o preço alto para um determinado dia excede o nível de parada que pode ser dado como um aumento percentual ou pontual do preço de compra. Por padrão, as paradas são executadas pelo preço que você define como matriz de preço de venda (para negociações longas) ou matriz de preço de cobertura (para operações de curto prazo). Esse comportamento pode ser alterado usando & quot; Sair na parada & quot; característica.
Se você marcar & quot; Sair na parada & quot; box nas configurações as paradas serão executadas no nível de parada exato, ou seja, se você definir a meta de lucro parar em + 10% de sua parada e o preço de compra for 50 a ordem de parada será executada a 55 mesmo se sua matriz de preço de venda contiver valor diferente ( por exemplo preço de fechamento de 56).
As perdas máximas param de forma semelhante - elas são executadas quando o preço baixo de um determinado dia cai abaixo do nível de parada que pode ser dado como um aumento percentual ou pontual do preço de compra.
Esse tipo de parada é usado para proteger os lucros à medida que ele acompanha sua negociação, de modo que, a cada vez que um valor de posição atingir um novo máximo, a parada móvel é colocada em um nível mais alto. Quando o lucro cai abaixo do nível de parada móvel, a posição é fechada. Este mecanismo é ilustrado na figura abaixo (10% de trailing stop é mostrado):
/ * uma amostra de implementação de baixo nível de parada de lucro-alvo na AFL: * /
priceatbuy = BuyPrice [i];
SellPrice [i] = 1,1 * priceatbuy;
Este é um novo recurso na versão 3.9. O dimensionamento de posição no backtester é implementado por meio da nova variável reservada.
PositionSize = & lt; size array & gt;
Agora você pode controlar o valor em dólar ou a porcentagem do portfólio investido no comércio.
número positivo define valor (dólar) que é investido no comércio, por exemplo:
-100 dá 100% do tamanho atual da carteira,
-33 dá 33% do patrimônio disponível, por exemplo:
Se menos de 100% do dinheiro disponível é investido, então o montante restante ganha taxa de juros, conforme definido nas configurações.
Há também uma nova caixa de seleção na janela de configurações de AA: & quot; Permitir encolhimento do tamanho da posição & quot; - isso controla como o backtester manipula a situação quando o tamanho da posição solicitada (via variável PositionSize) excede o caixa disponível: quando este flag é marcado, a posição é inserida com o tamanho ajustado para o caixa disponível se for desmarcada.
Para ver os tamanhos reais das posições, use um novo modo de relatório na janela de configurações AA: & quot; Lista de negociação com preços e pos. tamanho & quot;
Para o fim, aqui está um exemplo da técnica de dimensionamento de posição baseada em ATR de Tharp, codificada em AFL:
Compre = & lt; sua fórmula de compra aqui & gt;
Vender = 0; // vendendo apenas por stop.
TrailStopAmount = 2 * ATR (20);
Capital = 100000; / * IMPORTANTE: Defina também nas Configurações: Equidade Inicial * /
ApplyStop (2, 2, TrailStopAmount, 1);
A técnica pode ser resumida da seguinte forma:
O capital total por símbolo é de US $ 100.000, definimos o nível de risco em 1% do patrimônio total. O nível de risco é definido da seguinte forma: se um stop móvel em uma ação de $ 50 for de, digamos, US $ 45 (o valor de dois ATRs contra a posição), a perda de US $ 5 será dividida em US $ 1.000 para dar 200 ações. Assim, o risco de perda é de US $ 1.000, mas o risco de alocação é de 200 ações x US $ 50 / ação ou US $ 10.000. Então nós estamos.
alocando 10% do capital para a compra, mas apenas arriscando $ 1000. (Trecho editado da lista de discussão do AmiBroker)
Tamanho do lote redondo e tamanho do carrapato.
Vários instrumentos são negociados com várias "unidades de negociação" ou "blocos". Por exemplo, você pode comprar um número fracionário de unidades de fundo mútuo, mas você não pode comprar um número fracionário de ações. Às vezes você tem que comprar em lotes de 10 ou 100. O AmiBroker agora permite que você especifique o tamanho do bloco no nível global e por símbolo.
Você pode definir o tamanho do lote de cada símbolo na página Informações do Symbol - & gt; (foto 3). O valor zero significa que o símbolo não tem um tamanho de lote redondo especial e usará & quot; Tamanho do lote redondo padrão & quot; (configuração global) na página de configurações da análise automática (foto 1). Se o tamanho padrão for definido como zero, isso significa que o número fracionário de compartilhamentos / contratos é permitido.
Você também pode controlar o tamanho do lote redondo diretamente da sua fórmula AFL usando a variável reservada RoundLotSize, por exemplo:
Esta configuração controla o movimento de preço mínimo do símbolo dado. Você pode defini-lo no nível global e por símbolo. Tal como acontece com o tamanho do lote, pode definir o tamanho do carrapato por símbolo na página de informação Symbol - & gt; (foto 3). O valor zero instrui o AmiBroker a usar o & quot; tamanho padrão do tick & quot; definido na página Configurações (figura 1) da janela Análise automática. Se o tamanho padrão do tick também for definido como zero, significa que não há movimentação mínima de preço.
Você pode definir e recuperar o tamanho do carrapato também da fórmula AFL usando a variável reservada TickSize, por exemplo:
Observe que a configuração do tamanho do carrapato afeta SOMENTE as negociações realizadas por paradas internas e / ou ApplyStop (). O backtester pressupõe que os dados de preço seguem os requisitos de tamanho do tick e não altera as matrizes de preços fornecidas pelo usuário.
Portanto, especificar o tamanho do tick só faz sentido se você estiver usando paradas internas para que os pontos de saída sejam gerados em & quot; permitido & quot; níveis de preços em vez dos calculados. Por exemplo, no Japão - você não pode ter partes fracionárias de yen, portanto, você deve definir o ticksize global como 1, de modo que as paradas internas saem de negociações em níveis inteiros.
A configuração da margem da conta define o requisito de porcentagem de margem para toda a conta. O valor padrão da margem da conta é 100. Isso significa que você tem que fornecer 100% dos fundos para entrar na negociação, e é assim que o backtester funcionou nas versões anteriores. Mas agora você pode simular uma conta de margem. Quando você compra na margem, você está simplesmente pedindo dinheiro emprestado ao seu corretor para comprar ações. Com os regulamentos atuais, você pode colocar 50% do preço de compra da ação que deseja comprar e emprestar a outra metade do seu corretor. Para simular isso, insira 50 no campo Margem da conta (veja a foto 1). Se o seu capital inicial estiver definido para 10000, o seu poder de compra será então de 20000 e você poderá entrar em posições maiores. Observe que essa configuração define a margem da conta inteira e NÃO está relacionada à negociação de futuros. Em outras palavras, você pode negociar ações na conta de margem.
& quot; Formas de sinal de entrada reversa saem & quot; caixa de seleção para as configurações do Backtester.
Quando está ON (a configuração padrão) - o backtester funciona como nas versões anteriores e fecha a posição já aberta se um novo sinal de entrada na direção reversa for encontrado. Se esta chave estiver DESLIGADA - mesmo que o sinal reverso ocorra, o backtester mantém o comércio aberto no momento e não fecha a posição até que o sinal de saída regular (venda ou cobertura) seja gerado.
Em outras palavras, quando essa chave está em OFF, o backtester ignora os sinais Short durante as negociações longas e ignora os sinais Buy durante as negociações mais curtas.
Quando está ligado (as configurações padrão) - entrada e saída na mesma barra é permitida (como nas versões anteriores)
se estiver DESLIGADO - a saída pode acontecer a partir da próxima barra somente (isso se aplica a sinais regulares, há uma configuração separada para saídas geradas pelo ApplyStop). A mudança para OFF permite reproduzir o comportamento do backtester de MS que não é capaz de lidar com saídas no mesmo dia.
Inicialmente, a ideia era permitir o redesenho mais rápido de gráficos através do cálculo da fórmula de AFL somente para aquela parte visível no gráfico. De maneira semelhante, a janela de análise automática pode usar o subconjunto de cotações disponíveis para calcular o AFL, se selecionado & # 8220; intervalo & # 8221; parâmetro é menor que & # 8220; todas as cotações & quot ;.
Observe que essa opção funciona não apenas no backtester, mas também em otimizações, explorações e varreduras.
Michael sincero.
Olhe para as estratégias mais lucrativas.
Os últimos cinco anos de mercado deram aos investidores muitos desafios e muitas oportunidades. De grandes comícios a punições, e de volatilidade recorde a faixas de negociação apertadas - os mercados passaram por uma enorme variedade de condições. À medida que o novo ano começa, vale a pena dar uma olhada para ver quais estratégias ganharam dinheiro e quais não foram aproveitadas.
Kent Thacker, diretor de produtos de corretagem da Fidelity, testou as 30 estratégias de negociação que vêm pré-programadas no Wealth-Lab Pro ® ao longo dos últimos cinco anos para ver quais delas lhe renderiam mais dinheiro e o que lhe custaria. É claro que o fato de essas estratégias funcionarem no passado não garante que elas funcionem no futuro. As condições podem mudar, mas usar os recursos de backtesting do Wealth-Lab pode ajudar a torná-lo um profissional mais informado. Ver o que funcionou no passado pode ajudá-lo a tomar uma decisão fundamentada no futuro.
Os três primeiros Para descobrir quais dessas estratégias de negociação geraram mais lucros nos últimos cinco anos até 30 de novembro de 2009, Thacker fez backtested de todas as ações do S & amp; P 500 ® Index usando as 30 estratégias de negociação incorporadas no Wealth-Lab. Pró. Para este teste, ele assumiu um investimento de US $ 10.000 por negociação.
Os resultados hipotéticos do backtest são exibidos abaixo:
De acordo com este teste, as três principais estratégias para o período de tempo foram o LDL2 (0,96, 2, 3), a estratégia Moving Average Crossover (20, 50) e o RSI Agita (20, 30, 55). Isso não significa que você deve esgotar e usar imediatamente essas estratégias. Mas você poderia usar os resultados como ponto de partida para investigar mais, & # 8221; Thacker sugere. Aqui está uma análise mais detalhada dessas três estratégias.
A estratégia: A estratégia de LDL2 é uma estratégia de negociação técnica que tenta encontrar ações em um mergulho e entrar na parte inferior. O sistema tem como objetivo entrar no mercado em níveis de sobrevenda e sair após a reação ter se estabilizado.
Análise: A estratégia foi extremamente sensível à volatilidade do mercado. Os grandes movimentos de queda de 2008 e a volatilidade de 2009 criaram mergulhos de compra que essa estratégia capitalizou, levando a um grande lucro líquido.
Embora essa estratégia tenha sido muito lucrativa, os investidores podem querer dar uma olhada mais de perto. O LDL2 com buy-on-the-dip tem algumas limitações. Ao longo dos cinco anos, um investidor seguindo essa estratégia teria feito 33.000 negócios. O grande número de negócios não só consumiria muito tempo, mas também geraria muitas comissões.
Além disso, embora essa estratégia tenha se saído muito bem em 2008, a estratégia buy-on-the-dip também não apresentou bom desempenho nos mercados em alta desde 2004-2007. Tendências ascendentes sustentadas fornecem menos sinais de compra para o & # 8220; dip & # 8221; estratégias. Uma consideração adicional para os compradores de dip é que uma tendência de baixa prolongada pode causar perdas significativas.
& # 8220; Com todas as estratégias, haverá vantagens e desvantagens, & # 8221; Thacker diz. "Parte do desafio é saber o que você está tentando realizar usando essa estratégia". # 8221; Em outras palavras, você precisa de um plano e metas.
2. A Estratégia de Crossover Média Móvel.
A estratégia: a estratégia Moving Average Crossover é popular entre muitos traders. Na verdade, é uma estratégia bastante simples: compre quando a média móvel de 20 dias de uma ação cruzar a AM de 50 dias e vender quando a AM de 20 dias cruzar abaixo da AM de 50 dias.
Análise: A ideia por trás dessa estratégia é comprar no início da tendência e montá-la até o fim. & # 8220; Quando você atinge uma tendência, & # 8221; Thacker diz: "você estará seguindo seu ponto ideal". # 8221;
Toni Turner, autora de best-sellers do A Beginner’s Guide to Short-Term Trading (Adams Media, 2008), não ficou surpresa quando dissemos a ela que a estratégia Moving Average Crossover foi classificada como uma estratégia de alto desempenho no backtest. & # 8220; O Moving Average Crossover funcionou da melhor maneira para mim. É elegante em sua simplicidade. & # 8221;
Turner acrescenta que, às vezes, os traders sentem que precisam de gráficos complicados carregados de indicadores. "A verdade simples é que, se estabelecermos um sistema baseado em regras e usarmos cruzamentos médios móveis, poderemos ter uma vida muito boa no mercado", & # 8221; ela diz. As variáveis padrão no Wealth-Lab Pro são as médias móveis de 20 e 50 dias. Turner usa essas configurações em seu sistema de negociação, mas também emprega as médias móveis de 8 dias e 13 dias em um gráfico diário.
Olhando para os resultados, a estratégia Moving Average Crossover gerou quase o mesmo lucro líquido que o LDL2, mas com a metade do número de negociações.
Thacker notou uma variável que deveria ser considerada. & # 8220; Você pode ver que a porcentagem de negociações vencedoras (42%) é bastante baixa. Significa que há muitas fugas falsas, o que pode ser desanimador para algumas pessoas, porque você terá uma série de pequenas perdas. & # 8221;
3. Índice de Força Relativa (RSI) Agita.
A estratégia: O Índice de Força Relativa é um oscilador de momentum - isso significa que a rapidez com que uma ação está ganhando ou perdendo preço e tenta detectar mudanças no ritmo da mudança de preço. O indicador pressupõe que, como o ganho ou perda de preço diminui, você pode estar se aproximando de uma parada.
Análise: A estratégia do RSI foi criada para aproveitar as condições de venda excessiva. The strategy paid off over the last five years, and particularly among the last two years — when this was the best-performing strategy of the 30 Thacker tested.
One reason it works so well is that the strategy continues buying stock as conditions grow more oversold, so that it builds up a larger position when prices are down, according to Thacker.
For this test, the RSI strategy’s win ratio was 67%, significantly more than the Moving Average Crossover strategy, which succeeded just 42% of the time.
Of course, the RSI strategy has risks as well. Followers of this strategy buy into positions as stocks become oversold, anticipating a rebound. If the downtrend continues, traders following these types of strategies can expect occasional significant losses. Traders can limit the impact of such occurrences by trading the strategy across multiple stocks, and by limiting the amount of trading capital devoted to such strategies.
A losing strategy In addition to finding out the top three strategies, Thacker also studied the less successful strategies for this time period. Using the default settings, the Bandwagon Trade was highly unprofitable.
Bandwagon Trade.
The strategy: The Bandwagon Trade uses the Average True Range (ATR) as its main indicator. The ATR attempts to measure a security’s volatility over a certain period. After you enter the position, long or short, you immediately set an exit strategy using calculations built into the strategy.
Analysis: The bandwagon strategy struggled during the five-year period, failing to deliver significant profits in either the down market of 2008 or the rally of 2009. Chris Clark, director at Fidelity, thinks the poor performance might be due to the reactive nature of the trading strategy. “With this strategy, you are buying into positions after a strong initial move up or down,” says Clark. “With the high volatility we’ve seen, there haven’t been a lot of sustained uptrends or downtrends and you may be missing the price move.”
If you use a strategy that ends up at the bottom, like the Bandwagon Trade, you might want to examine why. Review your previous trades to determine if using this strategy makes sense in the future. Sometimes, a strategy that fails during one market cycle might shine in another.
Why backtest? The main reason to backtest is to “see if your strategy works before putting real money into it,” says Thacker. In addition, the next time someone tells you about a new trading strategy, you can verify the results. Several years ago, according to news reports, an investment bank backtested Bernard Madoff’s Ponzi-scheme trading strategy, and couldn’t match his data. This blaring red flag convinced them to invest elsewhere.
“Wealth-Lab Pro allows you to create your own strategy or tweak existing ones,” says Thacker. “At first, many people start with a pre-shipped strategy.” The program also allows you to play “what if” games, trying to create a better system.
He says you can also use Wealth-Lab Pro to go back in history to test how well a strategy would have performed during similar market conditions.
Rank strategies To rank your strategies or compare them to benchmarks such as the S&P 500 ® Index, Dow Jones Industrial Average, or Nasdaq 100, you will need to download Wealth-Lab Pro. There’s a 30-day trial period for Fidelity customers. After it’s downloaded, double-click on the Wealth-Lab Pro icon and an uncomplicated home page appears.
From the Tools menu, select Strategy Ranking, click + Add Strategies, then choose one or more strategies. Select Basic or Extended Scorecard, which displays the default measurements that come with the program. Finally, select Begin. The strategies are ranked and the information is displayed. To change the rankings, for example, click on Net Profit and the strategies will line up from most profitable to least profitable.
You can download additional strategies or modify the existing strategies with your own specifications.
Ranking strategies gives you some relative performance numbers, but by backtesting each individual strategy, you can gather even more data. You can easily tweak the value of the indicators and optimize the strategy for your own uses.
Pós-navegação.
© 2003 - 2018 Sincere Books, LLC, All Rights Reserved | Política de Privacidade.
Contact Me.
If you have questions or comments about any of my books, please fill out this form. I always like to hear from you, and will respond to every email.
Trading Strategy Backtesting Guide.
In this trading Strategy Backtesting Guide you will find a backtesting approach as well as some guidelines on how to avoid overfitting and what metrics to include in performance reports.
Table Of Content.
Backtesting refers to testing a predictive model or trading system using historical data. Traders use backtesting to test strategy ideas, compare strategy performance in different markets, time frames as well as determine optimal input parameter values for their systems.
Trading strategies and parameters are evaluated by feeding a set of historical data, such as open/high/low/close prices, technical analysis calculations, options greeks, etc.. to a custom backtesting application, R script, or an Excel spreadsheet and evaluating resulting strategy performance using a set of metrics.
In this article we’ll be focusing on applying backtesting to the so called “system trading” – a trading approach where traders develop, test, and run automated rule-based trading algorithms and evaluate strategy performance based on concrete data.
Why Do We Still Need to Backtest?
Everyone knows that past results do not guarantee future performance. However, while a good backtest performance result is not by itself sufficient to guarantee trading profits (and what is?) – it is nevertheless one of the necessary tests that traders will put their systems through in order to consider them fit for live trading.
In order to ensure long-term success in the markets – traders need not only generate and apply original trading ideas, but also keep coming up with fresh ones on a regular basis. A system trader may have to go through dozens of prospective strategies before he finds one that works. And then, how does one pick the optimal set of indicators, input parameters, and markets to apply the strategy to? Should you use a 20-period Bollinger Band, 30, or 50? Do you go with 2 standard deviations or 2.5, or 3? Should you use the same std. deviation value for both upper and lower bands or take into account current price trend and set a higher (lower) std. deviation value on the corresponding band? Go with 14, 30, 50, or a 100-bar moving average? SMA, EMA, WMA? What mechanisms to use to detect volatility levels? These are simple examples of the type of questions a trading system developer will have to answer.
To make things worse – no trading strategy, no matter how good it is, remains profitable forever. Profitability window generally remains open only for a small period of time, generally between few weeks and a few months. After that a number of things may happen to make the strategy stop performing: market conditions change, trending market turns into range-bound or vice versa, other traders find the same profit opportunity and close it, HFT trades mess things up, your broker catches on to your strategy and starts front-running you (it does happen – always make sure you use a reputable and regulated broker), etc… Regardless of the reason – a trader who wants to stay profitable for an extended period of time must keep regularly changing strategies and adapting to new conditions. That means system traders need to constantly be looking for and testing new strategies. It might take weeks or months to develop a new working strategy. In the meantime, an alternative solution can be to modify a proven existing strategy by tweaking input parameters, adding a new “secret sauce” rule, or simply applying it to a different market. All of the above can be time consuming considering the sheer number of input parameter combinations that need to be evaluated and tested.
Backtesting proves useful for a couple of reasons. First, it is a method that provides concrete performance data for side-by-side strategy comparison. It eliminates guesswork and enables traders to apply scientific method to trading. Second, automated backtesting is a great time-saving tool. A good backtesting tool provides a way to iterate over thousands of parameter combinations and find the optimal ones. This process can be executed repeatedly on daily basis to ensure that a strategy stays fine-tuned using most up-to-date data.
Curve Fitting.
One of the biggest challenges in backtesting is curve fitting (also known as “overfitting”). Since backtesting makes it easy to tweak parameters until your strategy performs perfectly – you often end up over-optimizing the strategy to the specific data set you happened to be testing the system on. This is called overfitting. Overfitting tends to happen more frequently when strategy uses a large number of parameters and indicators . With higher number of available variables it becomes easier to generate a curve that fits historical performance perfectly.
There are several ways to mitigate the risk of overfitting:
Keep number of input parameters reasonable. If you use more than 2-3 price-based technical analysis indicators – you probably need to get rid of some of them. Price-based indicators tend to duplicate each other’s signals with varying degrees of delay and adding more than a couple is redundant.
Test your strategy on several distinct sets of data. One approach often used in machine learning is to split your historical data set into two parts: training (about 60-70% of available data), and validation (the other 30-40%). Training data set is used for testing and parameter optimization. When you think you found sufficiently good parameter values – run them on the validation data set and compare performance results. If performance shown on the training data set is significantly better than from the validation data set – you have an overfitting problem. You over-optimized the strategy to work perfectly on the training set, but not on any other data.
Test on historical data from different market instruments. If your strategy is genuinely profitable – it should not only perform well on AAPL or S&P 500 futures – it should show at least comparable results on other contracts/symbols. Similarly, if you trade Forex – don’t test your strategy only on EUR/USD, even if that is the only pair you intend to trade live – test your strategy on a few other pairs and see if performance results are more or less similar. If performance varies significantly – dig deeper to figure out the cause. Again, the main culprit would be overfitting.
Commissions and Slippage.
A trading strategy performance report that does not include commissions and slippage cannot be considered seriously. The whole idea of backtesting is to test how a strategy would perform during live trading using real money, and commissions and slippage are two unavoidable realities of trading.
Optimizing a strategy with commissions and slippage will reflect reality of trading and prevent nasty surprises, such as finding out that your strategy, while super-profitable in idealized backtesting environment, performs horribly in live trading.
Strategies that generate a large number of trades will obviously accumulate large commission and slippage costs.
Calculating commission is straightforward - find out what your broker charges per trade and multiply that amount by number of trades.
Slippage is a bit trickier. First of all, there are several main causes of slippage: bid - ask spreads, market volatility, and (lack of) liquidity for low-volume instruments. Calculating slippage accurately can become a laborious task. The good news – you probably don’t need to do it. In practice approximating slippage is all that’s needed to generate sufficiently accurate performance reports that will reflect live trading performance close enough. One simple approach we recommend is to simulate slippage by adjusting every entry and exit trade price by a few ticks against your direction. Number of slippage ticks should usually be one of the input parameters for your strategy, just like the commission amount.
Keep in mind: slippage can have varying degrees of impact on your strategy depending on what type of orders you use and what markets you trade. Strategies using market orders will experience higher slippage, while this using limit orders – lower. Similarly, slippage will be less of an issue in high-volume liquid markets than in low-volume slow ones.
Strategy Performance Reports.
A performance report should include a number of metrics that will describe trading system performance, expected returns, and, more importantly: expected risk.
Standardize.
As a trading system developer you will often find yourself comparing multiple strategy performance reports for different parameter values, trading instruments, time frames, and time periods. For example, you may have access to ten years of stock prices, but only one or two years of S&P futures data. In order to compare apples to apples it is helpful to standardize metrics presented in performance reports. All expected profit and loss figures, both absolute dollar amounts, and percentage value should be annualized.
Drawdown is the difference, at any given time, between equity value at that time, and the maximum equity generated by the strategy up to that point in time.
Drawdowns are a measure of risk, and managing risk should be the primary objective a trading strategy developer, much more important than profit generation. Your first priority should always be to “stay alive” and preserve your capital, and only then to increase it.
A performance report must always include drawdown statistics such as the longest drawdown and biggest loss due to a drawdown, measured as both: dollar amount and percentage of initial account size.
There are dozens of different performance ratios used to measure trading strategy performance. In fact, an entire series of articles can be written on them (and many already have been). We find that using a couple of ratios which are widely accepted and understood will usually be sufficient for strategy performance assessment. Ratios must be risk-adjusted so that they reflect the risks of running a strategy as opposed to only its profit generation potential.
Again, you can find detailed descriptions of many different ratios in various books, blog posts, and white papers available online and in print. At some point we may write a more detailed post on the subject, but for now we’ll limit ourselves to describing two ratios that we have been using on performance reports for our clients:
Sharpe Ratio.
Sharpe Ratio divides the average return of an investment by the standard deviation of its returns. The standard deviation is taken as a measure of the investment’s risk. A higher Sharpe Ratio suggests more returns at lower risk. But the standard deviation includes variations above the average returns. Most people like those and only worry about the below average returns.
Measures average return adjusted for risk as measured by standard deviation (i. e. volatility). Higher volatility brings Sharpe ratio down.
Value interpretation guidelines: over 1.0 : good, over 2.0 : very good, over 3.0 : awesome.
Calmar Ratio.
Calmar ratio uses maximum drawdown (decline from a historical peak, see the Wikipedia article, Drawdown (economics)) instead of standard deviation as a measure of risk. So the Calmar Ratio is an investment’s average return (usually for a 3 year period, but does not have to be) divided by its maximum drawdown in the same period. A higher Calmar Ratio suggests more returns at lower risk.
Because big drawdowns bring Calmar ratio down – it is a valuable risk-adjusted performance indicator.
Other Useful Metrics.
Other metrics useful for getting a better insight into performance of a strategy and learning what to expect if/when you launch for live trading:
Reflects how active your strategy is. How many trades should you expect to see when your run your strategy.
This, combined with the total number of trades, is one of the most important metrics. It will show you how to much profit (or loss) your strategy is expected to generate over a period of time.
Calculating expected trade Profit/Loss amount:
Exp P/L = (Avg Profit * Pct Win Trades) + (Avg Loss * Pct of Losing Trades)
Exp P/L = expected profit or loss per trade Avg Profit = average profit per winning traded, expressed as currency amount Pct Win Trades = percent of winning trades (round-trip) Avg Loss = average loss per losing trade, expressed as currency amount Pct of Losing Trades = percent of losing trades (round-trip)
This and the next metric are important for setting expectations and managing stress levels when you watch your strategy running live. Depending on your personality if this number is too low (and number of losing trades is too high) – you may not be comfortable with this strategy, even if the expected P/L per trade will turn overall performance in your favor over time.
Both dollar amount and as percent of starting account balance.
Watch this statistic, if total amount of commissions and slippage (next) is too high – it can ruin overall performance of an otherwise profitable strategy.
This is an introductory article on trading strategy backtesting. We hope we provided some useful insights and tips into trading strategy development and backtesting. We intend to continue posting more articles on the subject, please check back regularly. In the meantime – please check out our other posts and hand-picked book selections we posted at the end of each article. Each book we recommend is one that we read ourselves and found it containing useful information for traders and system developers.
Leave a Reply Cancel reply.
IB Data Downloader.
IB Data Downloader version 3.3 is now available! Download historical data from Interactive Brokers. Stocks, Futures, ETFs, Indexes, Forex, Options, FOPs. Now supports options historical data download! Runs on Windows, MacOS, Linux. Automatically handles IB API pacing violations, no restrictions on duration due to pacing limitations! Supports historical data for expired futures contracts.
IB Excel Trader.
IB Excel Trader version 1.6 is now available! Trade Stocks, ETFs, Futures, and Forex directly from Excel. Implement custom trading rules using spreadsheet formulas or VBA. Program entry rules for single or bracket exit orders. Market, Stop, Limit, Stop-Limit, as well as complex algo orders are supported. Order Log sheet (new!). Contains a detailed list of each order status change in a filterable Excel table. Use our Customization Service to extend IB Excel Trader and contract our programmers to develop your custom trading strategies.
Interactive Brokers (IB) is a low cost provider of trade execution and clearing services for individuals, advisors, prop trading groups, brokers and hedge funds. IB's premier technology provides direct access to stocks, options, futures, forex, bonds and funds on over 100 markets worldwide from a single IB Universal account.
Member NYSE, FINRA, SIPC. Visit interactivebrokers for more information.
Recent Posts.
Contact Us!
Message Sent.
Thank you for contacting Trading Geeks. We will respond to your message shortly. In the mean time - if you have any additional questions - please do not hesitate to email us at: contacts@tradinggeeks.
Sorry, there has been a problem and your message was not sent.
Please enter your contact details and a short message below and we will respond to your message shortly.
Комментариев нет:
Отправить комментарий