Wednesday 27 November 2019

Como backtest a trading system


Backtesting: Interpretando o passado Backtesting é um componente chave do desenvolvimento do sistema de comércio eficaz. É realizado reconstruindo, com dados históricos, os negócios 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 comerciantes podem otimizar e melhorar suas estratégias, encontrar quaisquer falhas técnicas ou teóricas, e ganhar confiança em sua estratégia antes de aplicá-lo aos mercados reais. A teoria subjacente é que qualquer estratégia que funcionou bem no passado é susceptível de funcionar bem no futuro e, inversamente, qualquer estratégia que teve um desempenho ruim no passado é susceptível de funcionar mal no futuro. Este artigo dá uma olhada no que os aplicativos são usados ​​para backtest, que tipo de dados são obtidos, e como colocá-lo para usar Os dados e as ferramentas Backtesting pode fornecer abundância de estatística valiosa comentários sobre um determinado sistema. Algumas estatísticas de backtesting universal incluem: Lucro líquido ou perda - ganho ou perda percentual líquido. Prazo - Datas passadas em que o teste ocorreu. Universo - Ações que foram incluídas no backtest. Medidas de volatilidade - Percentagem máxima de subida e descida. Médias - Percentagem de ganho médio e perda média, média de barras mantidas. Exposição - Percentual de capital investido (ou exposto ao mercado). Razões - Relação vitórias-perdas. Retorno anualizado - Retorno percentual ao longo de um ano. Retorno ajustado ao risco - Retorno percentual em função do risco. Normalmente, backtesting software terá duas telas que são importantes. A primeira permite que o profissional personalize as configurações para backtesting. Essas personalizações incluem tudo, desde o período de tempo até os custos de comissão. Aqui está um exemplo de tal tela no AmiBroker: A segunda tela é o relatório de resultados de backtesting real. Isto é onde você pode encontrar todas as estatísticas mencionadas acima. Novamente, aqui está um exemplo desta tela no AmiBroker: Em geral, a maioria dos softwares comerciais contém elementos semelhantes. Alguns programas de software high-end também incluem funcionalidades adicionais para realizar o dimensionamento automático da posição, otimização e outros recursos mais avançados. Os 10 mandamentos Há muitos fatores que os comerciantes prestam atenção quando eles estão backtesting estratégias de negociação. Aqui está uma lista das 10 coisas mais importantes a lembrar enquanto backtesting: Tome em conta as tendências do mercado amplo no período em que uma determinada estratégia foi testada. Por exemplo, se uma estratégia só foi testada de 1999 a 2000, pode não estar bem em um mercado de baixa. É muitas vezes uma boa idéia para backtest durante um período de tempo longo que engloba vários tipos diferentes de condições de mercado. Leve em conta o universo no qual o backtesting ocorreu. Por exemplo, se um sistema de mercado amplo é testado com um universo consistindo de ações de tecnologia, pode deixar de fazer bem em diferentes setores. Como regra geral, se uma estratégia é direcionada para um gênero específico de estoque, limitar o universo a esse gênero, mas, em todos os outros casos, manter um grande universo para fins de teste. Medidas de volatilidade são extremamente importantes a considerar no desenvolvimento de um sistema de comércio. Isto é especialmente verdadeiro para as contas alavancadas, que são submetidas a chamadas de margem se a sua equidade desce abaixo de um certo ponto. Os comerciantes devem procurar manter a volatilidade baixa, a fim de reduzir o risco e permitir uma transição mais fácil dentro e fora de um determinado estoque. O número médio de barras mantidas também é muito importante para assistir ao desenvolver um sistema de negociação. Embora a maioria dos backtesting software inclui custos de comissão nos cálculos finais, isso não significa que você deve ignorar esta estatística. Se possível, aumentar o número médio de barras mantidas pode reduzir os custos de comissão e melhorar seu retorno geral. A exposição é uma espada de dois gumes. Exposição aumentada pode conduzir aos lucros mais elevados ou aos perdas mais elevados, quando a exposição diminuída significa lucros mais baixos ou perdas mais baixas. No entanto, em geral, é uma boa idéia para manter a exposição abaixo de 70, a fim de reduzir o risco e permitir uma transição mais fácil dentro e fora de um determinado estoque. A estatística média de perda de ganho, combinada com a relação ganhos-perdas, pode ser útil para determinar o dimensionamento de posição ótimo e a administração de dinheiro usando técnicas como o Critério de Kelly. (Veja Money Management 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 relação ganhos-para-perdas. Retorno anualizado é importante porque é usado como uma ferramenta para comparar os retornos de sistemas contra outros locais de investimento. É importante não só olhar para o retorno global anualizado, mas também para ter em conta o risco aumentado ou diminuído. Isso pode ser feito olhando para o retorno ajustado ao risco, que explica vários fatores de risco. Antes de um sistema de negociação ser adotado, ele deve superar todos os outros locais de investimento em igual ou menos risco. Backtesting personalização é extremamente importante. Muitas aplicações de backtesting têm entrada para valores de comissão, tamanhos de lote redondos (ou fracionários), tamanhos de carrapatos, requisitos de margem, taxas de juros, pressupostos de deslizamento, regras de dimensionamento de posição, regras de saída da mesma barra e configurações de parada. Para obter os resultados de backtesting mais precisos, é importante ajustar essas configurações para imitar o corretor que será usado quando o sistema for ativado. Backtesting às vezes pode levar a algo conhecido como super-otimização. Esta é uma condição onde os resultados de desempenho são ajustados tão altamente ao passado que eles não são mais precisos no futuro. Geralmente, é uma boa idéia implementar regras que se apliquem a todas as ações ou a um conjunto selecionado de ações segmentadas e não sejam otimizadas na medida em que as regras não sejam mais compreensíveis pelo criador. Backtesting nem sempre é a maneira mais precisa para avaliar a eficácia de um determinado sistema de comércio. Às vezes, as estratégias que funcionaram bem no passado não conseguem fazer bem no presente. O desempenho passado não é indicativo de resultados futuros. Certifique-se de comércio de papel de um sistema que foi testado com sucesso antes de ir ao vivo para ter certeza de que a estratégia ainda se aplica na prática. Conclusão Backtesting é um dos aspectos mais importantes do desenvolvimento de um sistema comercial. Se criado e interpretado corretamente, pode ajudar comerciantes a aperfeiçoar e melhorar suas estratégias, encontrar todas as falhas técnicas ou teóricas, assim como ganhar a confiança em sua estratégia antes de aplicá-la aos mercados reais. Recursos Tradecision (tradecision) - High-end Desenvolvimento do Sistema de Negociação AmiBroker (amibroker) - Desenvolvimento do Sistema de Negociação de Orçamento. O Artigo 50 é uma cláusula de negociação e de liquidação no tratado da UE que delineia as medidas a serem tomadas para qualquer país que. Uma oferta inicial sobre os ativos de uma empresa falida de um comprador interessado escolhido pela empresa falida. De um pool de licitantes. Beta é uma medida da volatilidade, ou risco sistemático, de um título ou de uma carteira em comparação com o mercado como um todo. Um tipo de imposto incidente sobre ganhos de capital incorridos por pessoas físicas e jurídicas. Os ganhos de capital são os lucros que um investidor. Uma ordem para comprar um título igual ou inferior a um preço especificado. Uma ordem de limite de compra permite que traders e investidores especifiquem. Uma regra do Internal Revenue Service (IRS) que permite retiradas sem penalidade de uma conta IRA. A regra exige que. Although nossa estrutura de criação de estratégia evoluiu muito além dos limites do NT, anos atrás, eu me acho ainda usá-lo de vez em quando, para múltiplos fins, e é onde começamos o nosso início, então talvez eu possa ajudar você aqui. NinjaTrader certamente tem seus bugs e falhas, mas todas as plataformas fazem, e entre as plataformas de comércio de varejo comuns lá fora, eu acho que o NT é um dos mais intuitivos e diretos, e um dos mais fáceis de usar de uma maneira eficaz eficazes fora da caixa . Uma das razões para isso é NTs estratégia assistente, que permite que um usuário para construir uma estratégia sem qualquer conhecimento de codificação, usando entryexit condição blocos de construção. Vou dar um exemplo. Vamos dizer que queremos construir uma estratégia que entra quando a EMA (média móvel exponencial) em um período de 15 cruzamentos acima da SMA (média móvel simples) em um período de 15, e sai no fechamento do mercado de cada dia. Para isso, basta abrir o assistente de estratégia, atribuir um nome a nossa estratégia, e foram confrontados com a seguinte tela, permitindo definir até 10 conjuntos diferentes de condições que, quando acionadas, levarão a uma ação específica (geralmente Uma entrada ou saída): Quando clicamos no add, na janela superior, foram confrontados com a seguinte tela: Como você pode ver, Ive simplesmente selecionados EMA à esquerda, e SMA à direita, e eu mudei os nossos valores de Período Para cada um para 15. No centro, Ive mudou a seleção suspensa para CrossAbove. Pressionando ok, preenche a parte superior da captura de tela superior. Vou dizer-lhe agora para Enter Long, quando este gatilho ocorre, e clique Ok: E é isso. Nós cliquemos através da próxima, a nossa estratégia savescompiles, e foram livres para backtest-lo para determinar seus resultados comerciais durante o período histórico, usando a plataforma NT. Concedido, esta é uma estratégia unidimensional (e certamente wouldnt ser um rentável), mas é um exemplo de quão facilmente um pode criar uma estratégia de negociação automatizada, assumindo a sua entryexit lógica pode ser quantificada usando suas opções de building-block, que São bastante extensas se você é criativo. Finalmente, vamos percorrer mais um recurso. Digamos que não soubessem quais valores de média móvel são ótimos, em nossa estratégia de exemplo. Vamos dizer que queremos testar vários valores, para nos ajudar a determinar quais valores podem ser ideais. Para fazê-lo, basta pressionar para trás, e foram confrontados com esta tela: Como você pode ver Ive criou duas variáveis, e lhes deu nomes, acima. O PeriodOne atuará como o valor do período da nossa média móvel EMA e o PeriodTwo atuará como o valor do período de nossa média móvel SMA. Agora, eu clico em seguida e retornar à nossa tela de condições de entrada, e novamente abrir o construtor de condição, e eu simplesmente mudar nossos 15 valores para os nossos novos valores de nome de variável (PeriodOne e PeriodTwo, respectivamente): O que isso nos permite fazer, É lançar uma otimização, que irá proceder a backtest vários valores de período para ambos estes média móvel, e posteriormente exibir os resultados de cada teste, para a nossa leitura. Ive ido adiante e funcione esta optimização, que fêz exame apenas de um minuto ou de dois, usando o óleo cru, e os aumentos de barra 15-minute como nosso jogo de dados: Como você pode ver na coluna extrema direita dos parâmetros, testou diversas combinações diferentes de E classificou todos os resultados de acordo com o Lucro Líquido total obtido durante o período histórico na nossa faixa de teste (312017 a 112017, neste caso). Novamente, este é um exemplo excepcionalmente simples, para ilustrar um ponto, mas o ponto é válido. Especialmente nas fases iniciais, quando você está experimentando e testando várias coisas, pode-se ir desde os estágios da idéia, até os resultados de um backtest mostrando exatamente o que aquela idéia teria produzido ao longo do período histórico, em poucos minutos, mesmo sem qualquer conhecimento de programação. Além disso, há um botão View Code em algumas das screenshots acima, o que permite que você veja claramente como seus blocos de construção selecionados diferentes se traduzem em código funcional, uma ótima maneira de ajudá-lo a aprender o processo de codificação, ao longo do tempo. Meu conselho Ir direto para dentro, experimentar, brincar. Muito pode ser aprendido, de forma rápida e eficiente, ao fazê-lo. Especialmente para aqueles que aprendem melhor fazendo. Em vez de imbuir textos de instrução longos, pesados ​​e secos. Espero que isto seja útil. Desfrute de 660 Vistas middot Ver Upvotes middot Não é para reprodução Você pergunta como criar um sistema comercial no NinjaTrader (NT) e voltar a testá-lo. Pode ser feito, mas não é fácil. Sem entrar em codificação e design de arquitetura de software, eu só posso dar uma idéia geral de como se pode ir sobre ele. O primeiro passo é escrever um sistema comercial. Simplisticamente falando, isso consiste em várias partes: (i) escrever um módulo que irá conter todas as várias configurações para os negócios que você deseja executar (identificar as condições que constituem a oportunidade ideal para entrar em um comércio. Em seus critérios, e você pode ter vários 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 irá catalogar e salvar os set ups encontrados em Os dados em tempo real, e (iv) escrever um módulo que irá executar um comércio com base em qualquer um desses set ups. Isso em si é um desafio, pois isso precisa ser feito em tempo real. Além disso, você deve lidar com os casos em que você encontrar vários set ups que podem estar indicando comércios no mesmo ou opostos direções (por exemplo, longo e curto). Você também precisa considerar metas, critérios de lucratividade para o seu set ups, stop loss e critérios à direita. Por último, mas certamente não menos importante, você precisa pensar em dimensionamento dentro e fora das estratégias com o seu comércio configurar os critérios. Como um aparte, eu nem mencionei a verificação e manipulação de erros componentes do código, que você precisará endereço também. Para fazer isso de forma eficiente, você precisará thread este código. O problema com a escrita deste no NT é que o NT só suporta um subconjunto da linguagem C e atualmente apenas fornece suporte para a estrutura 3.5. Isso significa que você precisará gravá-lo em C como um dll e referência-lo em seu código NT. Agora que você escreveu sua dll para identificar um comércio, você precisará escrever código para executar o comércio. NT oferece uma abordagem gerenciada e não gerenciada para fazer isso. Atualmente, uso e codifico o NT, e direi que esta parte do NT não está bem documentada - pelo menos não encontrei, 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 a 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 será desafiadora também, porque há algumas edições que você encontrará aqui. Cada negócio terá de ser verificado, as encomendas terão de ser sequenciadas e monitoradas extremamente bem, e sua posição terá de ser observado com cuidado, especialmente se você também pretende entrar em comércios, por meio de inversão de posições. Agora que você chegou tão longe, você pode escrever uma estratégia de NT para testar o seu sistema de volta. Novamente, a abordagem não gerenciada será de maior valor aqui, pois oferece a maior flexibilidade para você. Novamente, este código é complicado e não documentado particularmente bem. Entretanto, isso pode ser feito. Parabéns, agora você está fazendo codificação e pode começar a testar seu código ao vivo. Talvez você precise modificar seu código para lidar com condições em tempo real em dados ao vivo. Dependendo dos mercados que você planeja negociar, você precisará pensar como você vai lidar com negociação durante os relatórios, mantendo posições durante a noite, limites de negociação, bem como quando a negociação é suspensa pela troca. 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. Tendo feito isso, estar preparado para horas e horas (e horas) de trabalho e testes. Quando comecei, subestimei grosseiramente o esforço necessário. 1.5k Vistas middot Ver Upvotes middot Não para ReproduçãoComo backtest sistemas de negociação e evitar ajuste de curva Para julgar o quão bem um determinado sistema de comércio deve funcionar no futuro, nós backtest-lo em dados do mercado passado. Backtesting aplica um conjunto de regras de negociação a dados históricos para estimar como essas regras teriam realizado se tivéssemos realmente negociado-los. Os bons resultados históricos hipotéticos não garantem que um conjunto de regras funcione bem no futuro. No entanto, os pobres resultados históricos hipotéticos quase certamente significam que um sistema não deve ser negociado em tempo real. O valor percebido do backtesting está enraizado na crença de que as tendências históricas se repetem. Traders têm testado estratégias sobre dados históricos para gerações. No entanto, a prática tornou-se popular com o advento de computadores pessoais e purpose-built sistema de teste de software. Como System Writer, que evoluiu para TradeStation. Este software e um banco de dados históricos permitiram que aqueles sem um fundo de código-escrita para testar idéias do sistema de negociação. A maior compreensão e aceitação de sistemas de negociação, bem como a frustração que muitos encontraram ao tentar construir sistemas de negociação por conta própria, ajudaram o mercado de sistemas de terceiros a florescer ao longo dos anos 90. Futures Truth é uma empresa independente que tem rastreado comercialmente disponíveis sistemas de negociação desde a década de 1980. Atualmente, ele rastreia mais de 500 sistemas. Futures Truth testes sistemas de negociação em tempo real, e não em dados históricos. Isso impede a modificação de regras ao longo do tempo e simula melhor a execução de regras em condições reais de mercado, como períodos de alta volatilidade. De acordo com a Verdade de Futuros, apenas cerca de 45 dos sistemas de rastreamento são rentáveis ​​a longo prazo, enquanto apenas 20 exibiram uma boa razão de risco-benefício. No entanto, esses números provavelmente são melhores do que os populações mais amplas, porque somente aqueles vendedores verdadeiramente confiantes em sua lógica o transformam em Futures Truth para análise em tempo real e crítica pública. Assim, muitos sistemas falham porque faltam uma premissa válida. Em vez disso, os parâmetros de entrada e saída são derivados da mineração de dados. A mineração de dados simplesmente digitaliza dados históricos para regras que teriam funcionado no passado. Muitas vezes, essas regras se encaixam precisamente no passado e não têm nenhuma esperança de trabalhar melhor do que aleatória em dados invisíveis. Em vez disso, o desenvolvimento do sistema deve começar com uma teoria que pode ser testada, analisada e ajustada para aplicação. Este conceito também implica uma perspectiva diferente no próprio teste do sistema: O objetivo do backtesting não é produzir uma coleção de estatísticas de lucro e perda hipotéticas. É para testar a validade da teoria ea precisão das regras na captura da premissa. O teste do sistema é um processo multifacetado dos dados, à escala de tempo, às suposições da entrada da ordem, aos detalhes do contrato e ao controle de risco. Falhar em qualquer um destes pode arruinar um mdash de teste válido de outra forma ou, manipulando-os pode gerar resultados que são muito superiores do que nós conseguiríamos em tempo real. Você precisa fazer isso direito se você esperar para validar mdash ou quando apropriado, invalidar mdash seu sistema. Ferramentas do comércio Existem dois elementos para backtesting: as ferramentas adequadas mdash software e dados mdash e um método científico para desenvolver sistemas usando essas ferramentas. Letrsquos começar por olhar para as ferramentas do comércio. Muitas opções estão disponíveis para testar suas idéias. Eles diferem na facilidade de transformar idéias em código e em como eles lidam com os detalhes, o que pode ter um grande impacto nos resultados. Por exemplo, se um sistema entra em uma ordem de limite, algum software registra um preenchimento se esse preço for tocado. No entanto, dificilmente haverá garantia de que tal ordem teria sido preenchida na negociação real, nem há garantia de que ela não exista. Entrar em paragens garante uma entrada, mas não um preço. Outra questão é registrar os preços reais. Enquanto a maioria dos softwares desenvolvidos profissionalmente já não tem esse problema, ainda é uma preocupação para aqueles que testar sistemas manualmente em planilhas, como o Microsoft Excel. Por exemplo, se um sistema compra em uma parada igual ao fechamento mais um terço da faixa média nos últimos três períodos, e se a faixa média é 10, então estamos comprando no fechamento mais 3.333. Se estamos negociando o E-mini SampP 500, negocia em 0,25 tamanhos de carrapatos. Isso significa que o diferencial de entrada deve arredondar para 3.50. Um comerciante de início não pode perceber isso se manualmente trituração números, e wasnrsquot muito tempo atrás que muitos programas profissionais cometiam o mesmo erro. Com o passar do tempo, esse erro poderia somar uma discrepância considerável. No quadro geral, no entanto, tais detalhes processuais são menores. O grande problema são os dados. Artigos Relacionados How to backtest trading system Olá. Im um trader noobie e até agora eu consegui obter 5k forex demo conta para baixo para cerca de 4k em um mês. Eu não estou muito feliz com o resultado, mas de qualquer maneira. Eu li sobre vários sistemas de negociação, includig rapirforex, sistema de forex surpreendente, surf, 123-froex, surefire forex trading e lucros explosivos para nomear poucos. Gostaria de testar esses sistemas, e quaisquer outros sistemas que eu possa encontrar usando dados históricos do mercado. Estou primariamente à procura de uma taxa de sucesso para ach sistema. Eu fiz alguma pesquisa na rede, mas eu não posso localizar nada nada construtivo. Que software eu precisaria fazer isso. Onde eu iria obter dados de mercado forex histirical. Qualquer sites em particular eu deveria chack fora. desde já, obrigado. Jan 30, 2005, 10:56 pm Entrou em nov 2004 ir para spreadtrade2win um grande sistema e fórum e todos gratuitos. Jan 31, 2005, 6:53 am Entrou em Mar 2004 Postado Originalmente por aberry ir para spreadtrade2win um grande sistema e fórum e todos gratuitos. Bom software backtestting, você precisará fazer alguma programação para usá-lo tho (como a programação vai não é isso assustador) Postado Originalmente por SOCRATES Há um monte de discussão sobre sites comerciais sobre o tópico de backtesting. Isso me intriga e perplexo enormemente. Há também muita discussão relacionada aos sistemas. Quais são esses sistemas que você está falando? Parece-me que você pode estar falando sobre a verificação da eficiência de um determinado software. É isso correto? Parece-me também que você pode estar discutindo os méritos ou demirits de métodos particulares. É isso também é correto ou não Sim, estou tentando testar o sistema sobre os dados históricos para encontrar ut como precisas é a longo prazo. O sistema não é um software. É um sistema de negociação, ou seja, é suposto apontar bons sinais buysell com maior possivelmente precisão com base em analysys técnico. E, BTW, im um programador pela instrução, assim que a programação não é um problema para mim Publicado originalmente por SOCRATES Há muitos da discussão em Web site negociando sobre o tópico de backtesting. Isso me intriga e perplexo enormemente. Há também muita discussão relacionada aos sistemas. Quais são esses sistemas que você está falando? Parece-me que você pode estar falando sobre a verificação da eficiência de um determinado software. É isso correto? Parece-me também que você pode estar discutindo os méritos ou demirits de métodos particulares. É que também é correto ou não eu não posso falar para outros cartazes, eu pessoalmente uso backtesting software como um meio de testar e aprender sobre estratégias diferentes. Eu também sou um programador de comércio por isso é uma maneira bastante familiar e confortável de me testar idéias contra dados genuínos. Eu não presumo que apenas porque uma estratégia trabalhou no passado, vai funcionar no futuro, mas eu diria que tem uma maior chance de fazê-lo.

No comments:

Post a Comment