Thursday, 12 October 2017

Moving Average Strategy Backtest


Backtesting de um Crossover Médio Mínimo em Python com pandas No artigo anterior sobre Ambientes de Backtesting de Pesquisa Em Python Com Pandas, criamos um ambiente de backtesting baseado em pesquisa orientado a objetos e testávamos isso em uma estratégia de previsão aleatória. Neste artigo, faremos uso da maquinaria que introduzimos para realizar pesquisas sobre uma estratégia real, a saber, o Crossover de média móvel na AAPL. Estratégia de Crossover média móvel A técnica de Crossover de média móvel é uma estratégia de impulso simplista extremamente conhecida. Muitas vezes é considerado o exemplo do Hello World para negociação quantitativa. A estratégia descrita aqui é longa apenas. São criados dois filtros de média móvel simples separados, com diferentes períodos de lookback, de uma série temporal específica. Os sinais para comprar o recurso ocorrem quando a média móvel de lookback mais curta excede a média móvel de lookback mais longa. Se a média mais longa exceder a média mais curta, o ativo é vendido de volta. A estratégia funciona bem quando uma série temporal entra em um período de forte tendência e, em seguida, inverte lentamente a tendência. Para este exemplo, escolhi a Apple, Inc. (AAPL) como a série temporal, com um curto lookback de 100 dias e um longo lookback de 400 dias. Este é o exemplo fornecido pela biblioteca de negociação algorítmica de tirolesa. Assim, se quisermos implementar nosso próprio backtester, precisamos garantir que ele coincida com os resultados na linha aérea, como um meio básico de validação. Implementação Certifique-se de seguir o tutorial anterior aqui. Que descreve como a hierarquia de objeto inicial para o backtester é construída, caso contrário, o código abaixo não funcionará. Para esta implementação particular eu usei as seguintes bibliotecas: A implementação do macross. py requer backtest. py do tutorial anterior. O primeiro passo é importar os módulos e objetos necessários: como no tutorial anterior, vamos sub-classificar a classe básica abstrata Estratégia para produzir MovingAverageCrossStrategy. Que contém todos os detalhes sobre como gerar os sinais quando as médias móveis da AAPL se cruzam. O objeto requer uma janela curta e uma longa janela para operar. Os valores foram configurados para padrões de 100 dias e 400 dias, respectivamente, que são os mesmos parâmetros usados ​​no exemplo principal de tirolesa. As médias móveis são criadas usando a função pandas rollingmean nas barras. O preço de fechamento fechado do estoque AAPL. Uma vez que as médias móveis individuais foram construídas, a série do sinal é gerada definindo a coluna igual a 1,0 quando a média móvel curta é maior do que a média móvel longa, ou 0,0 caso contrário. A partir disso, as ordens de posições podem ser geradas para representar sinais de negociação. O MarketOnClosePortfolio é subclassado do Portfolio. Que é encontrado em backtest. py. É quase idêntico à implementação descrita no tutorial anterior, com a exceção de que os negócios são agora realizados em uma base Close-to-Close, em vez de Open-to-Open. Para obter detalhes sobre como o objeto Portfolio está definido, consulte o tutorial anterior. Eu deixei o código em completo e mantenho esse tutorial autônomo. Agora que as classes MovingAverageCrossStrategy e MarketOnClosePortfolio foram definidas, uma função principal será chamada para amarrar toda a funcionalidade em conjunto. Além disso, o desempenho da estratégia será examinado através de um gráfico da curva de equidade. O objeto DataReader de pandas baixa os preços de ações da AAPL da OHLCV para o período de 1º de janeiro de 1990 a 1º de janeiro de 2002, em que ponto os sinais DataFrame são criados para gerar os sinais de longo tempo. Posteriormente, o portfólio é gerado com uma base de capital inicial de 100.000 USD e os retornos são calculados na curva de patrimônio. O passo final é usar matplotlib para plotar um gráfico de dois dígitos de ambos os preços AAPL, superado com as médias móveis e os sinais de buysell, bem como a curva de equidade com os mesmos sinais de compra. O código de plotagem é tomado (e modificado) do exemplo de implementação de tirolesa. A saída gráfica do código é a seguinte. Eu usei o comando de pasta IPython para colocar isso diretamente no console do IPython, enquanto no Ubuntu, de modo que a saída gráfica permaneceu em exibição. As barras-de-rosa cor-de-rosa representam a compra do estoque, enquanto os bastões negros representam vendê-lo de volta: como pode ser visto, a estratégia perde dinheiro durante o período, com cinco comércios de ida e volta. Isso não é surpreendente, dado o comportamento da AAPL durante o período, que estava em uma ligeira tendência descendente, seguido de um aumento significativo em 1998. O período de lookback dos sinais da média móvel é bastante grande e isso impactou o lucro do comércio final , O que de outra forma pode ter tornado a estratégia rentável. Em artigos subseqüentes, criaremos um meio mais sofisticado de análise de desempenho, bem como descrevendo como otimizar os períodos de lookback dos sinais médios móveis individuais. Batejando as médias móveis, porque as médias móveis Como comerciante ou investidor, o único motivo para investigar as médias móveis É ganhar conhecimento para aumentar os lucros. Como muitos outros indicadores técnicos, as médias móveis devem ajudar-nos a indicar de forma objetiva o status do mercado a qualquer momento. Isso nos ajuda a ver as emoções do dia e tomar decisões racionais, o que, segundo a nossa opinião, levará a maiores lucros e menos perdas a longo prazo. As médias móveis (MAs) suavizam a série de preços de um estoque. As MAs são mais utilizadas para identificar a tendência de direção do mercado e são classificadas como um indicador de tendência. Isso não significa que os MAs são apenas para investidores de longo prazo. Os comerciantes de curto prazo 8211 os usam também. As médias móveis podem ser usadas para exibir ações para bons candidatos, oportunidades de compra de sinal e oferecer sinais de venda. Por que Backtest 8211 A Story O objetivo do backtesting é descobrir se as médias móveis realmente conduzem a melhores resultados e quais são as formas mais promissoras para aplicar MAs. Deixe-me contar uma breve história. Embora eu estivesse juntando os resultados para um dos problemas do relatório BackTesting médio móvel, visitei um amigo. Em sua casa, encontrei algum material de leitura de um corretor de ações de desconto bem anunciado. Nesse caso, foi um artigo que aconselhou seus clientes a usar uma determinada média móvel média aplicada de certa maneira para obter os melhores resultados. Eu tive meus exames abrangentes bem na minha frente e posso dizer-lhe que o método broker8217s não obteve os melhores resultados, embora eles mencionassem um comprimento de MA que seja útil de outras maneiras. Eu tinha em minha mão os resultados dos testes que mostraram que a maneira como o corretor aplicava a média móvel apresentava uma taxa de ganhos pior do que a linha de base quando testada em 7147 ações ao longo de 14 anos de dados do mercado de ações. Claramente, o corretor não executou esse tipo de teste. It8217s até os clientes 8211 nós 8211 para nos defender e descobrir o que funciona contra o que doesn8217t. Como calcular MAs Ao testar as médias móveis, a primeira decisão é como calcular a média móvel. Você quer uma média móvel simples (SMA) Ou algo projetado para rastrear o preço melhor, como uma média móvel exponencial (EMA). Você pode considerar uma experiência para comparar as taxas de ganhos das duas médias diferentes. Eu fiz exatamente isso há alguns anos atrás, e enquanto eu não tenho resultados para publicar, saí com a noção de que não criou uma grande diferença se eu escolhi SMA ou EMA 8212, basta escolher um e usá-lo de forma consistente. Então, para este projeto, eu escolho usar médias móveis simples porque eu as vejo mencionadas nos comentários mais frequentemente. Para realmente fazer o cálculo, confiei na função incorporada que acompanha a TradeStation. (A escolha do mecanismo de backtesting é outra decisão que é geral o suficiente para escrever sobre em outra publicação.) Como usar MAs Em seguida, você precisa definir como exatamente você deseja aplicar as médias móveis. Como você interpretará a relação entre preço e média móvel Quais regras você usará para decidir quando comprar e vender Você don8217t tem que ler por muito tempo sobre ações antes de encontrar uma referência de alta para uma negociação de ações acima de sua média móvel de 200 dias ou sua Média móvel de 50 dias, ou mesmo a MA de 10 ou 20 dias. Ou conselhos sobre a compra de ações à medida que atravessam sua média móvel de 50 dias ou 200 dias. Estas são regras importantes para testar no motor backtesting. E, em seguida, a média móvel do cruzamento 8211 é um método clássico de análise técnica. Isso faz três formas distintas de usar médias móveis para testar. Indo mais profundamente, alguns textos comerciais falam sobre a inclinação de uma média móvel. Se você retornar à álgebra e considerar o MA como uma linha, para encontrar sua inclinação, você escolheria dois pontos na linha e aplicaria a fórmula usual ((x2-x1) (y2-y1)). Isso traz a questão de quão distante para escolher os dois pontos que podem fazer a diferença nos resultados. Realmente, uma vez que o MA está sendo usado para identificar a tendência, só queremos saber se está inclinado para cima ou para baixo. Então podemos simplificar todo o cálculo notando que, se o preço estiver acima da média móvel, ele deve estar puxando a média para cima, e um preço abaixo do MA puxa para baixo. Assim, outro motivo para testar a eficácia do preço acima da média móvel. Configurações de parâmetros Depois de decidir sobre como usar os MAs, você precisa escolher uma seleção de vários comprimentos para testar. Cuidado com o excesso de otimização. Em algum lugar lá fora, há um cara com resultados de backtesting que mostram um ganho 3895 ou qualquer outra coisa usando apenas a média móvel direta. Muito ruim, ele não sabe o que MA produzirá esses resultados no futuro. Dito isto, você precisa tentar mais de um comprimento para se certificar de que seus resultados não são um acaso. Respeite as configurações padrão ou as que você ouve sobre a maioria na mídia. Encontrar a configuração perfeita de um parâmetro não o tornará rico. Encontrar um cluster de configurações boas e robustas só pode fazer você muito bom. Como uma questão prática, quando o backtesting permite atraso de dados suficiente antes de medir. Todos os testes devem começar a medir no mesmo local para a comparação de maçãs com as maçãs entre diferentes comprimentos MA. Por exemplo, se você estiver testando uma média móvel de 200 dias, levará os primeiros 200 dias de dados para calcular o primeiro ponto dessa média móvel. Isso significa que o primeiro dia em que você poderia ter um sinal é de 200 dias no conjunto de dados. Para fazer uma comparação justa com, digamos, a média móvel de 10 dias, você precisa se certificar de não contar nenhum sinal da média móvel de 10 dias antes do início dos 200 dias. Felizmente, a TradeStation tem uma maneira de definir o número 8220. O número máximo de barras de estudo será referência8221 em estratégias 8220Properties para All8221, o que força o mecanismo de teste de atraso a esperar tanto tempo antes de tabular dados. Mais lucros de compra ou venda As regras médias em movimento e, em particular, as regras de transição média móvel, são muitas vezes discutidas como um sistema de reversão. Isso significa que um sinal, digamos que as MAs cruzando para cima é um sinal de compra e, em seguida, o oposto, digamos as linhas MA que cruzam para baixo, não é apenas um sinal de venda, mas também o gatilho para diminuir. Teoricamente, isso é bom, mas muitas pessoas não estão interessadas em curtir o mercado. Eles estão procurando técnicas para ajudá-los a comprar e talvez vender. Mesmo uma pessoa que regularmente vende e vende curta pode usar técnicas diferentes para comprar e vender. Por estas razões, é sensato testar os sinais de compra separadamente dos sinais de venda. Isso representa um dilema porque é difícil avaliar um sinal de compra isoladamente. Uma maneira de fazer isso é usar as saídas cronometradas 8211, ou seja, sair do comércio ou vender o estoque após um certo período de tempo decorrido. Eu escolhi executar cada backtest três vezes com três saídas diferentes vezes porque diferentes pessoas têm diferentes estilos e necessidades diferentes. Para produzir resultados de backtesting úteis para negociar comerciantes, saio após 2 dias. Para modelar os comerciantes da posição, 20 dias. Para atender às necessidades dos investidores ativos, o backtesting mantém cada posição por 200 dias. Isso dá uma maneira de isolar os sinais de compra e descobrir o quão útil é a média móvel para estoque compradores de vários temperamentos. Precisa definir a bondade Uma coisa mais importante a considerar se você está testando as médias móveis para descobrir o quão bem elas fazem no mercado de ações: como você saberá o que é bom. Você precisa de critérios objetivos para o sucesso. Isso significa identificar as estatísticas-chave, como taxa de ganhos, expectativa, ganhos de equidade hipotéticos, etc. Isso também significa estabelecer padrões para desempenho aceitável em cada uma dessas áreas. Um exemplo ilustra porque isso é importante e porque it8217s não é tão fácil como aparece pela primeira vez. Diga que seus testes mostram uma taxa de $ 55 para um indicador específico. Isso pode não ser tão bom se, digamos, 62 de todas as ações subiram durante o mesmo período de tempo. Ou se apenas 25 de ações subissem durante esse período, sua taxa de 55 vitórias seria espetacular. O que é bom depende da comparação com o desempenho do mercado de base nas mesmas condições. Você pode baixar uma cópia gratuita do problema BackTesting Report Baseline clicando aqui. Para um backtest significativo, você precisa ter dados suficientes para fazer uma comparação estatisticamente válida. No mínimo, isso significa 30 negócios. Mesmo se você estiver negociando apenas um instrumento 8211, apenas um estoque ou apenas um par de moedas 8211, acho que isso é importante para testar sua estratégia comercial em muitos instrumentos diferentes para provar sua robustez. Eu fui no topo com um conjunto de teste extremamente grande 8212 7147 ações em 14 anos 8212 para garantir que meus resultados se aplicassem em uma ampla variedade de condições de mercado. Você pode obter sua cópia dos meus relatórios de backtesting em sinais de compra média móveis, clicando aqui. Símbolo médio do Backtest - Insira qualquer símbolo rastreado em nosso banco de dados ou use uma relação entre os símbolos inserindo dois símbolos como sym1: sym2. Médias móveis - Pode ser simples ou exponencial pelo número de dias especificado. Com uma única MA, a participação é determinada pelo valor do Preço relativo à Média Móvel. Quando duas MAs são usadas, a retenção é determinada pela relação entre as duas Médias Móveis. Participações - O fundo a ser realizado pode ser o mesmo ou diferente do fundo utilizado para os cálculos acima. Por exemplo, você poderia modelar a compra de um fundo alavancado com base na média móvel do fundo não alavancado. Benchmark - SPY é o padrão, mas qualquer símbolo pode ser usado. Estatísticas - As estatísticas incluem três medidas de volatilidade que você quer ser baixas, desvio padrão, índice de úlcera e redução máxima. Além disso, há três retorno: medidas de risco, onde maior é melhor. Estes incluem a Razão Sharpe, Sortino Ratio e Martin Ratio. De telas recentes Exibição do mercado ETF a partir de sexta-feira, sex. 27 de janeiro. Aviso importante: As informações fornecidas pela ETFScreen são estritamente para fins informativos e não devem ser interpretadas como conselhos ou solicitações para comprar ou vender qualquer garantia. O proprietário da ETFScreen não assume qualquer responsabilidade decorrente do uso do material aqui contido para qualquer finalidade, incluindo fins de investimento. Política de Privacidade DisclaimerTermos de Uso Se você tiver um comentário entre em contato conosco.

No comments:

Post a Comment