суббота, 26 мая 2018 г.

Backtest forex system


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 de Alto Padrão AmiBroker (amibroker) - Desenvolvimento do Sistema de Negociação Orçamentária. A taxa de juros pela qual uma instituição depositária empresta fundos mantidos no Federal Reserve para outra instituição depositária. Uma carteira de títulos de renda fixa em que cada título possui uma data de vencimento significativamente diferente. O propósito de. A data de vencimento de vários futuros sobre índices de ações, opções de índices de ações, opções de ações e futuros de ações individuais. Todo o estoque. Um tipo de apólice de seguro em que o segurado paga uma quantia específica de despesas reembolsáveis ​​para serviços de saúde como. Ações e políticas do governo que restringem ou restringem o comércio internacional, muitas vezes feitas com a intenção de proteger o local. Um fiduciário é uma pessoa que age em nome de outra pessoa, ou pessoas para gerenciar ativos. Como backtest sistema com dados do passado Aqui estão 2 pdfs sobre o uso de MT4 para back testing. Diz-se que o MT4 não é o melhor para o teste de volta, mas eu acho que é bom para obter uma estimativa do que você pode esperar. O teste avançado é a melhor maneira de determinar o potencial de uma estratégia antes de cometer dinheiro. O Alpari doc é muito bom, pois descreve como atingir uma qualidade de 90 modelagem. Na negociação, não há besteira. Você quer ganhar dinheiro ou você não. Os membros devem ter pelo menos 0 vouchers para postar neste tópico. 0 comerciante visualiza agora Forex Factoryreg é uma marca registrada. QSForex é um backtesting orientado a eventos de código aberto e plataforma de negociação ao vivo para uso nos mercados cambiais (forex), atualmente em um estado alfa. Foi criado como parte da série Forex Trading Diary no QuantStart para fornecer à comunidade de negociação sistemática um mecanismo de negociação robusto que permite a implementação e teste diretos da estratégia do Forex. O software é fornecido sob uma licença MIT permissiva (veja abaixo). Open-Source - O QSForex foi lançado sob uma Licença MIT de código aberto extremamente permissiva, que permite o uso total em aplicações comerciais e de pesquisa, sem restrições, mas sem garantia de qualquer tipo. Livre - QSForex é totalmente gratuito e não custa nada para baixar ou usar. Colaboração - Como o QSForex é de código aberto, muitos desenvolvedores colaboram para melhorar o software. Novos recursos são adicionados com freqüência. Quaisquer erros são rapidamente determinados e corrigidos. Desenvolvimento de Software - O QSForex é escrito na linguagem de programação Python para suporte direto a várias plataformas. QSForex contém um conjunto de testes de unidade para a maioria do seu código de cálculo e novos testes são constantemente adicionados para novos recursos. Arquitetura Orientada a Eventos - A QSForex é totalmente orientada a eventos, tanto para backtesting quanto para negociação ao vivo, o que leva à transição direta de estratégias de uma fase de pesquisa / teste para uma implementação de negociação ao vivo. Custos de transação - Os custos de spread são incluídos por padrão para todas as estratégias de backtested. Backtesting - QSForex apresenta backtesting de pares multi-dia com resolução de ticks intraday. Negociação - A QSForex atualmente suporta negociação intraday ao vivo usando a API de Brokerage da OANDA em um portfólio de pares. Métricas de desempenho - QSForex atualmente suporta medição de desempenho básico e visualização de equidade através das bibliotecas de visualização Matplotlib e Seaborn. Instalação e Uso 1) Visite oanda / e configure uma conta para obter as credenciais de autenticação da API, as quais você precisará para realizar negociações ao vivo. Eu explico como realizar isso neste artigo: quantstart / artigos / Forex-Trading-Diário-1-Automatizado-Forex-Trading-com-o-OANDA-API. 2) Clone este repositório git em um local adequado em sua máquina usando o seguinte comando em seu terminal: git clone github / mhallsmoore / qsforex. git. Alternativamente, você pode baixar o arquivo zip da ramificação mestre atual em github / mhallsmoore / qsforex / archive / master. zip. 3) Crie um conjunto de variáveis ​​de ambiente para todas as configurações encontradas no arquivo settings. py no diretório raiz do aplicativo. Como alternativa, você pode codificar suas configurações específicas substituindo as chamadas os. environ. get (.) Para cada configuração: 4) Crie um ambiente virtual (virtualenv) para o código QSForex e utilize pip para instalar os requisitos. Por exemplo, em um sistema baseado em Unix (Mac ou Linux) você pode criar um diretório como o seguinte, inserindo os seguintes comandos no terminal: Isso criará um novo ambiente virtual para instalar os pacotes. Supondo que você baixou o repositório git QSForex em um diretório de exemplo como / projects / qsforex / (mude este diretório abaixo para onde quer que você tenha instalado o QSForex), então para instalar os pacotes você precisará executar os seguintes comandos: tempo como NumPy, SciPy, Pandas, Scikit-Learn e Matplotlib devem ser compilados. Há muitos pacotes necessários para que isso funcione, portanto, dê uma olhada nestes dois artigos para obter mais informações: Você também precisará criar um link simbólico do diretório de pacotes do site para o diretório de instalação do QSForex para poder chamar import qsforex dentro do código. Para fazer isso, você precisará de um comando semelhante ao seguinte: Certifique-se de alterar / projects / qsforex para o diretório de instalação e /venv/qsforex/lib/python2.7/site-packages/ para o diretório virtualenv site packages. Agora você poderá executar os comandos subseqüentes corretamente. 5) Nesta fase, se você simplesmente deseja praticar ou viver negociação, então você pode executar python trading / trading. py. que usará a estratégia de negociação padrão do TestStrategy. Isso simplesmente compra ou vende um par de moedas a cada 5 ticks. É puramente para testes - não use em um ambiente de negociação ao vivo Se você deseja criar uma estratégia mais útil, basta criar uma nova classe com um nome descritivo, por exemplo, MeanReversionMultiPairEstratégia e garanta que ele tenha um método calculatesignals. Você precisará passar essa classe à lista de pares, bem como à fila de eventos, como em trading / trading. py. Por favor, olhe para strategy / strategy. py para detalhes. 6) Para realizar qualquer backtesting é necessário gerar dados simulados de forex ou baixar dados históricos de ticks. Se você quiser simplesmente testar o software, a maneira mais rápida de gerar um exemplo de backtest é gerar alguns dados simulados. O formato de dados atual usado pelo QSForex é o mesmo fornecido pelo DukasCopy Historical Data Feed em dukascopy / swiss / english / marketwatch / historical /. Para gerar alguns dados históricos, certifique-se de que a configuração CSVDATADIR em settings. py seja definida como um diretório no qual você deseja que os dados históricos sejam mantidos. Você precisa então executar o generateimulatedpair. py. que está sob o diretório scripts /. Ele espera um único argumento de linha de comando, que nesse caso é o par de moedas no formato BBBQQQ. Por exemplo: nesse estágio, o script é codificado para criar um único mês para janeiro de 2014. Ou seja, você verá arquivos individuais, do formato BBBQQQYYYYMMDD. csv (por exemplo, GBPUSD20140112.csv), exibidos em seu CSVDATADIR em todos os dias úteis em naquele mês. Se você deseja alterar o mês / ano da saída de dados, simplesmente modifique o arquivo e execute novamente. 7) Agora que os dados históricos foram gerados, é possível realizar um backtest. O arquivo de backtest em si é armazenado em backtest / backtest. py. mas isso contém apenas a classe Backtest. Para realmente executar um backtest, você precisa instanciar esta classe e fornecê-la com os módulos necessários. A melhor maneira de ver como isso é feito é examinar o exemplo da implementação do Moving Average Crossover no arquivo examples / mac. py e usá-lo como um modelo. Isso faz uso do MovingAverageCrossStrategy, que é encontrado em strategy / strategy. py. Isso padroniza a negociação de GBP / USD e EUR / USD para demonstrar o uso de múltiplos par de moedas. Utiliza dados encontrados no CSVDATADIR. Para executar o exemplo de backtest, simplesmente execute o seguinte: Isso levará algum tempo. No meu sistema de desktop Ubuntu em casa, com os dados históricos gerados via generateimulatedpair. py. Demora cerca de 5-10 minutos para ser executado. Uma grande parte desse cálculo ocorre no final do backtest real, quando o drawdown está sendo calculado, então lembre-se de que o código não foi desativado. Por favor, deixe-o até a conclusão. 8) Se você quiser ver o desempenho do backtest, você pode simplesmente usar o output. py para visualizar uma curva de capital, retornos de período (isto é, retornos tick-to-tick) e uma curva de rebaixamento: E é nesse estágio que você está pronto para começar a criar seus próprios backtests modificando ou anexando estratégias em strategy / strategy. py e usando dados reais baixados do DukasCopy (dukascopy / swiss / english / marketwatch / historical /). Se você tiver alguma dúvida sobre a instalação, por favor, sinta-se à vontade para me enviar um e-mail no mikequantstart. Se você tiver algum bug ou outros problemas que você acha que podem estar relacionados à base de código especificamente, sinta-se à vontade para abrir um problema no Github: github / mhallsmoore / qsforex / issues Copyright (c) 2015 Michael Halls-Moore responsável, para qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o Software), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de uso, cópia, modificação, fusão, publicação, distribuição, sublicenciamento e / ou vender cópias do Software e permitir que as pessoas a quem o Software é fornecido o façam, sujeitas às seguintes condições: O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software. O SOFTWARE É FORNECIDO COMO ESTÁ, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUMA CIRCUNSTÂNCIA, OS AUTORES OU PROPRIETÁRIOS DE DIREITOS DE AUTOR PODERÃO SER RESPONSABILIZADOS POR QUAISQUER REIVINDICAÇÕES, DANOS OU OUTRAS RESPONSABILIDADES, QUER EM ACÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, DECORRENTES DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO PROGRAMAS. Negociação Forex Aviso Legal Negociar em moeda estrangeira possui um alto nível de risco e pode não ser adequado para todos os investidores. O desempenho passado não é indicativo de resultados futuros. O alto grau de alavancagem pode funcionar contra você e também para você. Antes de decidir investir em moeda estrangeira, você deve considerar cuidadosamente seus objetivos de investimento, nível de experiência e apetite de risco. Existe a possibilidade de você sustentar uma perda de parte ou de todo o seu investimento inicial e, portanto, não deve investir dinheiro que não pode perder. Você deve estar ciente de todos os riscos associados à negociação em moeda estrangeira e procurar orientação de um consultor financeiro independente, caso tenha alguma dúvida.

Комментариев нет:

Отправить комментарий