Friday, 15 June 2018

Backtesting trading strategies in r


Backtesting O que é Backtesting Backtesting é o processo de testar uma estratégia de negociação em dados históricos relevantes para garantir sua viabilidade antes que o comerciante arrisque qualquer capital real. Um comerciante pode simular a negociação de uma estratégia durante um período adequado de tempo e analisar os resultados para os níveis de rentabilidade e risco. BREAKING DOWN Backtesting Se os resultados satisfazem os critérios necessários que são aceitáveis ​​para o comerciante, a estratégia pode ser implementada com algum grau de confiança que resultará em lucros. Se os resultados forem menos favoráveis, a estratégia pode ser modificada, ajustada e otimizada para alcançar os resultados desejados, ou pode ser completamente descartada. Uma quantidade significativa do volume negociado no mercado financeiro de hoje é feito por comerciantes que usam algum tipo de automação de computador. Isto é especialmente verdadeiro para estratégias de negociação com base em análise técnica. Backtesting é uma parte integrante do desenvolvimento de um sistema de negociação automatizado. Backtesting Significado Quando feito corretamente, backtesting pode ser uma ferramenta inestimável para tomar decisões sobre se deve utilizar uma estratégia de negociação. O período de tempo de amostra em que um backtest é realizado é crítico. A duração do período de tempo de amostragem deve ser suficientemente longa para incluir períodos de condições de mercado variáveis, incluindo tendências de alta, tendências de baixa e negociação de intervalo limitado. Realizar um teste em apenas um tipo de condição de mercado pode produzir resultados únicos que podem não funcionar bem em outras condições de mercado, o que pode levar a conclusões falsas. O tamanho da amostra no número de negócios nos resultados dos testes também é crucial. Se o número de amostras de ofícios é muito pequeno, o teste pode não ser estatisticamente significativo. Uma amostra com muitas transações durante um período muito longo pode produzir resultados otimizados em que um número esmagador de trades vencedores coalesce em torno de uma condição de mercado específico ou tendência que é favorável para a estratégia. Isso também pode causar um comerciante para tirar conclusões enganosas. Mantê-lo real Um backtest deve refletir a realidade na medida do possível. Os custos de transacção que de outra forma poderiam ser considerados negligenciáveis ​​pelos operadores quando analisados ​​individualmente podem ter um impacto significativo quando o custo agregado é calculado durante todo o período de backtesting. Estes custos incluem comissões, spreads e derrapagem, e eles poderiam determinar a diferença entre se uma estratégia comercial é rentável ou não. A maioria dos pacotes de software de backtesting inclui métodos para contabilizar esses custos. Talvez a métrica mais importante associada ao backtesting seja o nível de robustez da estratégia. Isto é conseguido comparando os resultados de um teste de volta otimizado num período de tempo de amostra específico (referido como in-sample) com os resultados de um backtest com a mesma estratégia e configurações num período de tempo de amostra diferente (referido como out - Da amostra). Se os resultados são igualmente rentáveis, então a estratégia pode ser considerada válida e robusta, e está pronta para ser implementada em mercados em tempo real. Se a estratégia falhar em comparações fora da amostra, então a estratégia precisa de mais desenvolvimento, ou deve ser abandonada por completo. Como voltar a testar uma estratégia em R Vamos explorar as capacidades de backtesting de R. Em um post anterior, desenvolvemos alguns Oportunidades de entrada simples para o USD / CAD usando um algoritmo de aprendizado de máquina e técnicas de um subconjunto de mineração de dados chamada aprendizagem de regra de associação. Neste post, vamos explorar como fazer um backtest completo em R usando nossas regras do post anterior e implementar lucros de tomada e parar as perdas. Deixa o mergulho direito dentro: Nota: o backtest é construído fora das barras de 4 horas em nosso jogo de dados e não tem uma vista mais granular. A CAGR (taxa de crescimento anual composta) é a porcentagem de ganho / perda anualizada, o que significa que suaviza o crescimento em parcelas iguais a cada ano. Desde o nosso teste foi mais Vamos ver se podemos melhorar o desempenho, adicionando uma perda parar e ter lucro. Com apenas um stop loss, o desempenho caiu. Parece que estamos sendo retirados de nossos negócios antes que eles sejam capazes de se recuperar. A fim de bloquear os nossos lucros, vamos em frente e implementar um lucro take. Travar em nossos ganhos com um lucro de tomada melhorou ligeiramente o desempenho, mas não drasticamente. Vamos incorporar uma perda de stop e um lucro de tomada. Agora vamos comparar a linha de base Long Short estratégia, com apenas uma perda de stop, apenas um lucro de tomada, e tanto um take stop perda e ter lucro. Agora você sabe como adicionar um lucro take e parar a perda, eu recomendo que você brincar com os dados e testar diferentes valores com base em seus próprios parâmetros de risco pessoal e usando suas próprias regras. Mesmo com algoritmos poderosos e ferramentas sofisticadas, é difícil construir uma estratégia bem-sucedida. Para cada boa idéia, tendemos a ter muitos mais maus. Armado com as ferramentas certas e conhecimento, você pode testar suas idéias de forma eficiente até chegar aos bons. Nós simplificamos esse processo em TRAIDE. Weve desenvolveu uma infra-estrutura de teste que permite que você veja onde os padrões estão em seus dados são e em tempo real ver como eles teriam realizado sobre seus dados históricos. Bem estar liberando TRAIDE para 7 pares principais no mercado de FX com indicadores técnicos em duas semanas. Se você estiver interessado em testar o software e fornecer feedback, envie um e-mail para infoinovancetech. Temos 50 pontos disponíveis. Backteando Backtesting Strategy Backtesting é uma ferramenta essencial para ver se sua estratégia funciona ou não. Software de Backtesting simula sua estratégia em dados históricos e fornece um relatório de backtesting, que permite que você conduza a análise apropriada do sistema negociando. A versão de 64 bits permite carregar o máximo de dados necessários para o backtesting mais exigente. Para obter informações técnicas sobre este recurso, consulte a página Wiki relacionada. A precisão é fundamental A MultiCharts é uma solução criada especificamente para desenvolvimento de estratégia e backtesting. Nossa filosofia é que o backtesting de estratégia deve ser tão realista quanto a tecnologia moderna permite - é por isso que usamos multi-threading e tecnologia de 64 bits. Suposições mínimas criam testes mais realistas Mesmo que nenhuma aproximação possa ser 100 perfeita, fizemos tudo para recriar com precisão as condições de mercado passadas e a execução de ordens para negociação de estratégia. Motores de backtesting típicos têm um monte de suposições e atalhos, que resultam em testes irrealistas e resultados não confiáveis. MultiCharts é uma plataforma de negociação de nível institucional que minimiza suposições e considera muitos fatores. Tecnologias modernas para computadores poderosos A estratégia de backtesting muitas vezes precisa de muitos dados e software que é capaz de processá-lo. Quase todos os computadores agora apresentam configurações multi-core com muita memória, então você precisa aproveitar isso. Multi-threading significa que MultiCharts espalha muitas tarefas em diferentes núcleos, de modo que eles completam muito mais rápido. A versão de 64 bits do MultiCharts permite carregar tantos dados como se encaixam em sua memória para análise - até anos e anos de dados de carrapatos para movimentos de preços detalhados. Simulação tick-by-tick Chamamos esse recurso de Bar Magnifier. É essencial para aumentar a precisão durante o backtesting. MultiCharts pode construir barras maiores fora de compassssecond menor e barras de minutos fora de carrapatos, barras de hora e dia fora de minutos. Você pode recriar movimentos de preços exatos dentro de cada barra usando a lupa de barra, que construirá barras maiores fora de componentes menores. Por exemplo, barras de uma hora têm quatro pontos visuais abertos, altos, baixos e próximos. O Bar Magnifier pode invisivelmente carregar minutos que compõem a hora, ea estratégia será backtested em uma base minuto-a-minuto. Pergunte, lance e preços comerciais Backtesting leva em conta que a compra real acontece a preços de pedir, venda real a preços de oferta. Isto torna a nossa simulação backtesting tão realista quanto possível. Testando uma Estratégia de Negociação I8217ve ordenou Análise de Série de Tempo e Suas Aplicações: Com R Exemplos (Springer Texts in Statistics) para me ajudar a subir a série de tempo na curva de aprendizagem R. Até agora o que eu vi, parece bom. O autor tem uma boa página com as questões em R e séries de tempo. O livro deve chegar até o final da semana. Enquanto isso, me deparei com uma estratégia de negociação durante a leitura de um artigo fornecer sobre John Mauldin8217s 8220Over My Shoulder8221 serviço (que eu recomendo). O ponto crucial foi que no mercado de urso que começou com o crash da bolha tecnológica, uma estratégia de apostas na reversão média do SampP500 gerou retornos significativos. Naturalmente eu queria testar. Por favor note, eu não estou recomendando nada que segue. Faça sua lição de casa e fale com um profissional de investimento se você tiver dúvidas. A estratégia é ir por muito tempo o SampP500 quando o mercado fecha em um máximo sobre os 3 dias precedentes. Inverter o comércio e ir muito tempo quando o mercado fecha no mínimo nos últimos 3 dias. ETFs tornar esta estratégia relativamente fácil de comércio. SPY será nosso veículo para ser longo o SampP500 e SH será nosso veículo para ir curto. O SH começou a operar em 21/06/2006. Nós focamos nosso backtesting desse ponto até agora. Usando a função importSeries () que criamos anteriormente, obter todos os valores para SPY e SH. Spy importSeries (8220spy8221, toto, fromfrom) sh importSeries (8220sh8221, toto, fromfrom) série mesclar (espião, sh), c (8220spy. Open8221. 8220spy. Close8221 8220spy. Return8221 8220sh. Open8221 8220sh. Close8221 8220sh. Return8221) Precisamos criar algum timeSeries adicional para manter Long / Short Flag 8212 nos permite saber o status atual de nossas explorações. Trade Flag 8212 sinaliza que nós instituímos um comércio nesta data. Strat. Returns 8212 retorno nominal para o dia com a estratégia. Dólar Valor 8212 um valor bruto do dólar da carteira assumindo um valor de 10.000 dólares em 21/06/2006, e uma taxa de 2 transações quando negociamos. Depois de calcular a estratégia, também criaremos uma série de retorno bruto a partir da série de Montante do Dólar. Função f (x) 0 x ls fapply (série 1, FUNf) Nunca perca uma atualização Subscreva os R-blogueiros para receber e-mails com os últimos posts R. (Você não verá esta mensagem novamente.) Backtesting Campbell R. Harvey Universidade Duke - Fuqua Escola de Negócios National Bureau de Pesquisa Econômica (NBER) Iniciativa Duke Inovação Empreendedorismo Yan Liu Universidade do Texas AM, Departamento de Finanças Ao avaliar uma estratégia comercial, É rotina para descontar a relação de Sharpe de um backtest histórico. A razão é simples: há inevitável data mining pelo pesquisador e por outros pesquisadores no passado. Nosso artigo fornece um quadro estatístico que sistematicamente explica esses múltiplos testes. Propomos um método para determinar o corte de cabelo apropriado para qualquer razão de Sharpe relatada. Nós também fornecemos um obstáculo de lucro que qualquer estratégia precisa alcançar para ser considerado significativo. Número de páginas em PDF File: 32 Palavras-chave: Razão de Sharpe, Testes múltiplos, Backtest, Corte de cabelo, Estratégias de negociação, Testes fora da amostra, Testes na amostra Classificação JEL: G12, G14, G30, G00, C12, C20, B41 Data de publicação: 27 de outubro de 2017 Última revisão: 30 de julho de 2017

No comments:

Post a Comment