Backtesting: Interpretação do passado O backtesting é um componente chave do desenvolvimento efetivo do sistema de negociação. Isso é realizado reconstruindo, com dados históricos, negociações que teriam ocorrido no passado usando regras definidas por uma determinada estratégia. O resultado oferece estatísticas que podem ser usadas para avaliar a eficácia da estratégia. Usando esses dados, os traders podem otimizar e melhorar suas estratégias, encontrar falhas técnicas ou teóricas e ganhar confiança em sua estratégia antes de aplicá-la nos mercados reais. A teoria subjacente é que qualquer estratégia que funcionou bem no passado provavelmente funcionará bem no futuro e, inversamente, qualquer estratégia que tenha tido um desempenho ruim no passado provavelmente terá um desempenho ruim no futuro. Este artigo examina quais aplicativos são usados para backtest, que tipo de dados é obtido e como usá-los. Os dados e o backtesting de ferramentas podem fornecer muitos dados estatísticos valiosos sobre um determinado sistema. Algumas estatísticas de backtesting universais incluem: Lucro ou perda líquida - ganho ou perda percentual líquido. Período de tempo - datas passadas em que o teste ocorreu. Universo - Ações que foram incluídas no backtest. Medidas de volatilidade - Máximo percentual de vantagens e desvantagens. Médias - Ganho médio percentual e perda média, barras médias mantidas. Exposição - Porcentagem de capital investido (ou exposto ao mercado). Rácios - rácio de ganhos / perdas. Retorno anualizado - Retorno percentual ao longo de um ano. Retorno ajustado ao risco - Retorno percentual em função do risco. Normalmente, o software de backtesting terá duas telas importantes. O primeiro permite que o comerciante personalize as configurações para o backtesting. Essas personalizações incluem tudo, desde período de tempo até custos de comissão. Aqui está um exemplo de tal tela no AmiBroker: A segunda tela é o relatório de resultados de backtesting real. É aqui que você pode encontrar todas as estatísticas mencionadas acima. Novamente, aqui está um exemplo desta tela no AmiBroker: Em geral, a maioria dos softwares de negociação contém elementos semelhantes. Alguns programas de software high-end também incluem funcionalidades adicionais para executar dimensionamento automático de posição, otimização e outros recursos mais avançados. Os 10 Mandamentos Há muitos fatores aos quais os investidores prestam atenção quando estão realizando backtesting de estratégias de negociação. Aqui está uma lista das 10 coisas mais importantes a serem lembradas durante o backtesting: Leve em consideração as amplas tendências de mercado no período de tempo em que uma determinada estratégia foi testada. Por exemplo, se uma estratégia só foi testada novamente em 1999-2000, ela pode não se sair bem em um mercado em baixa. Muitas vezes é uma boa ideia fazer backtest durante um longo período de tempo que engloba vários tipos diferentes de condições de mercado. Leve em conta o universo em que ocorreu o backtesting. Por exemplo, se um sistema amplo de mercado for testado com um universo constituído por ações de tecnologia, ele pode não se dar bem em setores diferentes. Como regra geral, se uma estratégia é direcionada a um gênero específico de estoque, limite o universo a esse gênero, mas, em todos os outros casos, mantenha um grande universo para fins de teste. Medidas de volatilidade são extremamente importantes para considerar no desenvolvimento de um sistema de negociação. Isto é especialmente verdadeiro para as contas alavancadas, que são sujeitas a chamadas de margem se o seu patrimônio cai abaixo de um certo ponto. Os comerciantes devem procurar manter a volatilidade baixa, a fim de reduzir o risco e facilitar a transição dentro e fora de um determinado estoque. O número médio de bares mantidos também é muito importante para assistir ao desenvolver um sistema de negociação. Embora a maioria dos softwares de backtesting inclua custos de comissão nos cálculos finais, isso não significa que você deva ignorar essa estatística. Se possível, aumentar o seu número médio de barras pode reduzir os custos de comissão e melhorar seu retorno geral. A exposição é uma faca de dois gumes. O aumento da exposição pode levar a maiores lucros ou maiores perdas, enquanto a diminuição da exposição significa menores lucros ou menores perdas. No entanto, em geral, é uma boa ideia manter a exposição abaixo de 70, a fim de reduzir o risco e facilitar a transição dentro e fora de um determinado estoque. A estatística de ganho / perda médio, combinada com a taxa de ganhos por perdas, pode ser útil para determinar o tamanho ideal de posição e gerenciamento de dinheiro usando técnicas como o Critério Kelly. (Veja Gerenciamento de Dinheiro Usando o Critério Kelly). Os comerciantes podem assumir posições maiores e reduzir os custos de comissão, aumentando seus ganhos médios e aumentando sua taxa de ganhos por perdas. O retorno anualizado é importante porque é usado como uma ferramenta para avaliar os retornos de sistemas em relação a outros locais de investimento. É importante não só olhar para o retorno anualizado global, mas também para levar em conta o aumento ou diminuição do risco. Isso pode ser feito observando o retorno ajustado ao risco, que é responsável por vários fatores de risco. Antes de um sistema de negociação ser adotado, ele deve superar todos os outros espaços de investimento em risco igual ou menor. A personalização de backtesting é extremamente importante. Muitos aplicativos de backtesting têm entradas para quantidades de comissão, tamanhos de lotes redondos (ou fracionários), tamanhos de ticks, requisitos de margem, taxas de juros, premissas de slippage, regras de dimensionamento de posição, regras de saída de barra idêntica, configurações de parada (trailing) e muito mais. Para obter os resultados de backtesting mais precisos, é importante ajustar essas configurações para imitar o broker que será usado quando o sistema for ativado. O backtesting às vezes pode levar a algo conhecido como otimização excessiva. Essa é uma condição em que os resultados de desempenho são tão altamente ajustados ao passado que não são mais precisos no futuro. Geralmente, é uma boa ideia implementar regras que se apliquem a todas as ações, ou um conjunto selecionado de ações específicas, e que não sejam otimizadas na medida em que as regras não sejam mais compreensíveis pelo criador. O backtesting nem sempre é a maneira mais precisa de avaliar a eficácia de um determinado sistema de negociação. Às vezes, as estratégias que tiveram bom desempenho no passado não se dão bem no presente. O desempenho passado não é indicativo de resultados futuros. Certifique-se de que o comércio de papel é um sistema que foi testado com sucesso antes de entrar em operação para garantir que a estratégia ainda se aplica na prática. Conclusão O backtesting é um dos aspectos mais importantes do desenvolvimento de um sistema de negociação. Se criado e interpretado corretamente, ele pode ajudar os traders a otimizar e melhorar suas estratégias, encontrar falhas técnicas ou teóricas, bem como ganhar confiança em sua estratégia antes de aplicá-la aos mercados do mundo real. Recursos Tradecision (tradecision) - Desenvolvimento de Sistema de Negociação High-end AmiBroker (amibroker) - Desenvolvimento do Sistema de Negociação Orçamentária. Você pergunta como criar um sistema de negociação no NinjaTrader (NT) e testá-lo novamente. Isso pode ser feito, mas não é fácil. Sem entrar na codificação e na arquitetura / design de software, só posso dar uma idéia geral de como alguém pode fazer isso. O primeiro passo é escrever um sistema de negociação. Simplificando, isso consiste em várias partes: (i) escrever um módulo que conterá todas as várias configurações para as negociações que você deseja executar (identifique as condições que constituem a oportunidade ideal para entrar em uma negociação. Isso dependerá em seus critérios, e você pode ter vários set ups), (ii) escrever um módulo que irá procurar por esses set ups em seus dados em tempo real, (iii) escrever um módulo que catalogará e salvará os set ups encontrados em os dados em tempo real, e (iv) escrever um módulo que irá executar uma negociação com base em qualquer um desses set ups. Isso por si só é um desafio, pois isso precisa ser feito em tempo real. Além disso, você deve lidar com os casos em que você encontra várias configurações que podem estar indicando negociações na mesma ou em direções opostas (ou seja, longas e curtas). Você também precisa considerar metas, critérios de lucratividade para seus set ups, stop loss e critérios de trailing. Por último, mas certamente não menos importante, você precisa pensar em dimensionar as estratégias de entrada e saída com seus critérios de configuração de negociação. Como um aparte, eu nem mencionei os componentes de verificação e tratamento de erros do código, que você precisará abordar também. Para fazer isso de forma eficiente, você precisará encadear esse código. O problema de escrever isso no NT é que o NT suporta apenas um subconjunto da linguagem C e atualmente fornece suporte apenas para a estrutura. Net 3.5. Isso significa que você precisará escrevê-lo em C como dll e referenciá-lo em seu código do NT. Agora que você escreveu sua dll para identificar uma negociação, você precisará escrever código para executar a negociação. O NT oferece uma abordagem Gerenciada e Não Gerenciada para fazer isso. Eu atualmente uso e código NT, e vou dizer que esta parte do NT não está bem documentada, pelo menos eu não achei que fosse, mas com toda a justiça, você pode obter alguma ajuda do pessoal do NT em seu fórum de suporte. Você vai querer usar a abordagem não gerenciada para obter maior flexibilidade. Claro que você vai querer implementar alguma estrutura de banco de dados em seu código para registrar seus negócios. Esta parte do programa também será desafiadora, porque há alguns problemas que você encontrará aqui. Cada negociação precisará ser verificada, os pedidos precisarão ser sequenciados e monitorados extremamente bem, e sua posição precisará ser observada cuidadosamente - especialmente se você também planeja entrar em negociações revertendo posições. Agora que você chegou até aqui, você pode escrever uma estratégia do NT para testar seu sistema. Mais uma vez, a abordagem não gerenciada será de grande valor aqui, pois oferece a maior flexibilidade para você. Novamente, esse código é complicado e não é bem documentado. Entretanto, isso pode ser feito. Parabéns, você acabou de codificar e pode começar a testar seu código ao vivo. Você talvez precise alterar seu código para lidar com condições em tempo real nos dados em tempo real. Dependendo dos mercados que você planeja negociar, você precisará pensar em como você lidará com negociações durante os relatórios, mantendo posições durante a noite, limites de negociação, bem como quando a negociação for suspensa pela bolsa. Supondo que você tenha feito tudo isso, agora você tem um sistema de negociação testado de volta no NT. Como eu disse, não é fácil, mas certamente é factível. Feito isso, prepare-se para horas e horas (e horas) de trabalho e testes. Quando comecei, subestimei o esforço exigido. 1,4k Visualizações middot Ver Upvotes middot Não para reproducçãoAtualmente, sou um novo membro, e sou novato em negociações (mas peguei muitas coisas boas neste fórum, obrigado). Eu continuo ouvindo sobre backtesting seu sistema ou estratégia, mas como você obter os últimos 5 anos de dados para backtest-los em Existe um lugar que eu posso ir para baixar dados históricos Eu estou tentando escrever um simulador de software para me ajudar backtest vários sistemas Im interessado agora, mas o problema é que eu não sei onde obter os dados para fazer backtesting. 15 de março de 2004, 02:11 Entrou em Junho de 2003 para o final do dia, tente, como sempre, muitos dados tem buracos, etc, e outros erros, mas esses caras parecem relativamente precisos. no intradiário, os outros podem sugerir fontes de dados. houve um de um site russo, mas não posso, para a vida de mim, encontrar o link. Vai ter outro olhar, porém, 15 de março de 2004, 03:10 Entrou em janeiro de 2003 15 de março de 2004, 03:16 Entrou em março de 2003 15 de março de 2004, 04:36 Registou dezembro 2003 Eu pensei em backtesting, mas meu corretor me disse só poderia negociar no presente, não no passado. Você tem que ter várias técnicas que funcionam em condições de mercado DIFERENTES - porque está sempre mudando. Tentar negociar o mesmo sistema em todas as condições é um caminho seguro para a pobre casa / hospício. Se houvesse um sistema ótimo de indicadores, sinais, etc., você não acha que os bancos com sua riqueza e poder computacional descobririam isso antes de você? Economize seu tempo - esqueça os testes posteriores - é para analistas e gurus justificar sua existência e só faz o desenvolvedor de software rico, não o comerciante. Gaste seu tempo aprendendo a negociar o que está acontecendo agora - é mais lucrativo - confie em mim. 15 de março de 2004, 4:38 pm Cadastrou-se em dezembro de 2003, se você fizer backtest, você deve certificar-se de que você tenha dados de tempo / vendas voltando várias décadas. 16 de março de 2004, 01:19 Entrou em março de 2004 Olá a todos, Muito obrigado pelos links, Eu os examinarei detalhadamente depois do trabalho. gtgtGaste seu tempo aprendendo a negociar o que está acontecendo agora - é ainda mais lucrativo - confie em mim. Estou planejando ler tantos bons livros que posso aprender, e ler fóruns para aprender com outros comerciantes, e talvez investir um pouco no curso oferecido aqui: - Além de encontrar um mentor que esteja disposto a me ensinar, não tenho certeza de que outra forma para prosseguir. Poderia os veteranos me dar algumas dicas estou realmente apaixonado por isso e estou disposto a trabalhar muito duro para isso.
No comments:
Post a Comment