Wednesday 12 July 2017

Moving Average Crossover Backtest


Médias móveis simples - Testes de negociação Os parâmetros de média móvel são os melhores. Este site tem um oceano de backtests de média móvel que eu realizei para o DAX, SP500 e também o USDEU (Forex). Esses testes foram feitos usando diferentes estratégias de sinal: variáveis ​​simples e exponencial e diferentes índices para um período de tempo de 1000 dias de negociação. Em contraste com outros sites, eu testei todos os valores da média diária móvel de 1 a 1000 dias, pois as estratégias de cross-over também em combinação. Estes dados também são unqiue, pois tentei realizar testes realistas, simulando a propagação de buysell e impostos para Comparação com uma estratégia de referência (buy hold). Um valor de janela que reage rápido parece ser bom em teoria e com um teste simples. Mas a propagação, taxas e impostos destruirão todo o desempenho em aplicação prática. É por isso que esses testes realistas são tão valiosos. Espero que este site possa ajudá-lo com seus negócios, aproveite-o. Testando um Crossover Médico Mínimo em Python com pandas. No artigo anterior sobre Ambientes de Análise de Análise de Pesquisa em Python Com Pandas, criamos um ambiente de backtesting baseado em pesquisa orientado a objetos e testávamos isso de forma aleatória. Estratégia de previsão. 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 no preço de fechamento do fechamento de barras 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 subsequentes, criaremos um meio mais sofisticado de análise de desempenho, bem como descrevendo como otimizar os períodos de lookback dos sinais individuais de média móvel. Este é um teste de outra estratégia de negociação VIX do excelente Logical-Invest (veja o nosso anterior Teste de bandas de LI Bollinger). Este usa cruzamentos de média móvel de 515 dias para negociar VIP ETPs como XIV (ou VXX curto). O gráfico abaixo mostra os resultados da estratégia de negociação XIV (azul), em comparação com a compra e retenção de XIV (cinza), a partir de meados de 2004. Leia sobre os pressupostos do teste. Ou obter ajuda na sequência desta estratégia. Regras de estratégia: Vá long XIV no fechamento de hoje se sua média móvel simples de 5 dias (SMA) fechar-se-á acima de SMA de 15 dias. Mantenha até que o SMA de 5 dias feche abaixo da SMA de 15 dias e depois mude para dinheiro. A estratégia (como a variação da banda de Bollinger) é de forma indireta uma estratégia de impulso. A estratégia está comprando XIV quando está mostrando força recente, e mantendo até XIV voltar atrás abaixo da média intermediária. Note-se que o nosso backtest difere do teste original Logical-Invests de três formas: o teste LIs começou no início de 2009. Nós adicionamos quase 5 anos de dados simulados adicionais (1). O teste de LIs assumiu que VXX em curto-circuito. Enquanto Ive mostrou resultados de negociação longa XIV para permitir uma comparação de maçãs com as maçãs com outros backtests aqui na Volatility Made Simple. O teste de LI assumiu que nós executamos trades nos próximos dias abertos, em vez de fechar de perto. Eu teste no fechamento porque não há um método confiável para simular dados pré-2009 para o aberto. Como você esperaria intuitivamente com base nas regras das estratégias, ele fez um bom trabalho evitando a maior parte das cobranças significativas do XIV porque está forçando a estratégia a ganhar dinheiro quando o XIV começa a se mover contra o comerciante, independentemente de todas as outras considerações, como o estado dos futuros VIX Estrutura de termo, etc. Mas essa disposição para sair de posições rapidamente também deixa muitos ganhos na mesa quando o XIV está em uma tendência de alta consistente (ou seja, o VXX está em uma forte tendência de baixa), como foi o caso nos últimos 2 anos. A estratégia da banda de Bollinger, testada anteriormente, ajudou a responder isso, tornando-se um pouco mais difícil sair das posições (veja a publicação para detalhes). Com base nos testes muito mais longos apresentados aqui, das duas variações, prefiro a banda Bollinger. Um grande agradecimento a Logical-Invest por publicar esta estratégia. Quando as estratégias que abordamos no nosso blog (incluindo este) sinalizam novos negócios, incluímos um alerta no relatório diário enviado aos assinantes. Isso não está completamente relacionado com o nosso próprio sinal de estratégia, apenas serve para adicionar uma pequena cor ao relatório diário e permite que os assinantes vejam o que outras estratégias quantitativas estão dizendo sobre o mercado. Clique para ver Volatility Made Simples própria solução elegante para o quebra-cabeça VIX ETP. Good Trading, Volatility Made Simple Wonk note: Os dados anteriores ao lançamento do XIV foram simulados. Foram capazes de fazer isso com precisão usando uma combinação dos índices e os dados futuros sobre os quais este ETP se baseia. Leia mais sobre como simular dados para ETP VIX. Publicar navegação Categorias Mensagens recentes

No comments:

Post a Comment