Médias móveis simples - backtests de negociação Quais parâmetros de média móvel são os melhores Este site tem um oceano de backtests médios móveis que eu conduzi para o DAX, SP500 e também USD / EU (Forex). Estes testes foram feitos usando diferentes estratégias de sinalização: variantes simples / exponenciais e crossover e índices diferentes para um período de 1000 dias de negociação. Ao contrário de outros sites, eu testei todos os valores médios diários de 1 a 1000 dias, para as estratégias cross-over também em combinação. Esses dados também são únicos, pois tentei realizar testes realistas, simulando o spread de compra / venda e impostos para comparação com uma estratégia de referência (buy hold). Um valor de janela de reação rápida parece bom na teoria e com um teste simples. Mas o spread, taxas e impostos irão destruir todo o desempenho na 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, aproveitá-lo. Este é um teste de outra estratégia de negociação VIX da excelente Logical-Invest (veja nosso teste anterior de bandas de Bollinger de LIs). Este usa crossovers médios móveis de 5/15 dias para negociar VIX 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 realização XIV (cinza), a partir de meados de 2004. Leia sobre as suposições do teste. ou obtenha ajuda seguindo essa estratégia. Regras de estratégia: O XIV se aproxima no fechamento de hoje se a média móvel simples de 5 dias (SMA) fechará acima de sua SMA de 15 dias. Aguarde até que a sua SMA de 5 dias feche abaixo da sua SMA de 15 dias e, em seguida, mude para dinheiro. A estratégia (como a variação da banda Bollinger) é de forma indireta uma estratégia de momentum. A estratégia é comprar o XIV quando ele mostra a força recente, e se manter até o XIV voltar abaixo da sua média de médio prazo. Observe que nosso backtest difere do teste original da Logical-Invests de três maneiras: o teste da LI começou no início de 2009. Acrescentamos quase 5 anos de dados adicionais simulados (1). O teste de LI assumiu que encurtamos VXX. enquanto eu mostrei resultados negociando long XIV para permitir uma comparação de maçãs para maçãs com outros backtests aqui no Volatility Made Simple. O teste da LI pressupõe que nós executamos negociações nos próximos dias em aberto, em vez de fecharmos hoje. Eu testo 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 de estratégia, fez um bom trabalho evitando a maioria das quedas significativas do XIV porque forçou a estratégia a lucrar quando o XIV começou a se mover contra o trader, independentemente de todas as outras considerações como o estado dos futuros VIX. Mas essa ânsia de 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 tendência de baixa forte), como foi o caso nos últimos dois anos. A estratégia da banda Bollinger que testamos anteriormente ajudou a responder isso, tornando um pouco mais difícil a saída de posições (veja post para detalhes). Com base nos testes muito mais longos que apresento aqui, das duas variações, prefiro a banda Bollinger. Um grande obrigado à Logical-Invest por postar essa estratégia. Quando as estratégias que abordamos em nosso blog (incluindo este) sinalizam novos negócios, incluímos um alerta no relatório diário enviado aos assinantes. Isso é completamente alheio ao nosso próprio sinal de estratégia, pois serve apenas para adicionar um pouco de 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. Boas Negociações, Volatilidade Simplificada Nota Wonk: Os dados anteriores ao lançamento do XIV foram simulados. Conseguimos fazer isso com precisão usando uma combinação dos índices e os dados de futuros nos quais este ETP se baseia. Leia mais sobre a simulação de dados para VIX ETPs. Post navigation Categorias PostsBacktesting recente com Crossover 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 objeto e o testamos em uma estratégia de previsão aleatória. Neste artigo, utilizaremos as máquinas que introduzimos para realizar pesquisas sobre uma estratégia real, a saber, o Moving Average Crossover na AAPL. Estratégia de Crossover Média Móvel A técnica de Crossover Média Móvel é uma estratégia de momentum simplista extremamente bem conhecida. Muitas vezes, é considerado o exemplo da Hello World para negociação quantitativa. A estratégia descrita aqui é longa apenas. Dois filtros de média móvel simples separados são criados, com períodos de lookback variáveis, de uma determinada série temporal. Os sinais para comprar o ativo ocorrem quando a média móvel de lookback menor excede a média móvel de lookback mais longa. Se a média mais longa subsequentemente 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 então lentamente inverte a tendência. Para este exemplo, escolhi a Apple, Inc. (AAPL) como a série temporal, com uma pequena retrospectiva de 100 dias e uma longa retrospectiva 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 corresponda aos resultados em zipline, como um meio básico de validação. Implementação Certifique-se de seguir o tutorial anterior aqui. que descreve como a hierarquia inicial do objeto para o backtester é construída, caso contrário, o código abaixo não funcionará. Para esta implementação em particular, usei as seguintes bibliotecas: A implementação do macross. py requer o backtest. py do tutorial anterior. O primeiro passo é importar os módulos e objetos necessários: Como no tutorial anterior, vamos subclassificar a classe base abstrata Strategy 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 janela longa na qual operar. Os valores foram definidos para padrões de 100 dias e 400 dias, respectivamente, que são os mesmos parâmetros usados no exemplo principal da tirolesa. As médias móveis são criadas usando a função pandas rollingmean no preço de fechamento barsClose do estoque AAPL. Uma vez que as médias móveis individuais tenham sido construídas, a série de sinais é gerada ajustando-se a coluna igual a 1,0 quando a média móvel curta é maior que a média móvel longa, ou 0,0. A partir disso, as ordens de posições podem ser geradas para representar sinais de negociação. O MarketOnClosePortfolio é subclassificado do Portfólio. que é encontrado em backtest. py. É quase idêntica à implementação descrita no tutorial anterior, com a exceção de que as negociações agora são executadas em uma base Close-to-Close, em vez de uma base Open-to-Open. Para detalhes sobre como o objeto Portfolio está definido, veja o tutorial anterior. Deixei o código para ser completo e manter este tutorial autônomo: Agora que as classes MovingAverageCrossStrategy e MarketOnClosePortfolio foram definidas, uma função principal será chamada para unir todas as funcionalidades. Além disso, o desempenho da estratégia será examinado através de um gráfico da curva de capital. O objeto DataReader dos pandas baixa os preços do OHLCV das ações da AAPL no período de 1º de janeiro de 1990 a 1º de janeiro de 2002, quando os sinais DataFrame são criados para gerar os sinais de longa duração. Subsequentemente, a carteira é gerada com uma base de capital inicial de 100.000 USD e os retornos são calculados na curva de capital. O passo final é usar o matplotlib para traçar um gráfico de dois dígitos de ambos os preços AAPL, sobrepostos às médias móveis e sinais de compra / venda, bem como a curva de capital com os mesmos sinais de compra / venda. O código de plotagem é obtido (e modificado) a partir do exemplo de implementação da tirolesa. A saída gráfica do código é a seguinte. Eu usei o comando IPython paste para colocar isso diretamente no console do IPython enquanto no Ubuntu, para que a saída gráfica permanecesse visível. Os altos upticks rosa representam a compra do estoque, enquanto os downticks pretos representam a venda de volta: Como pode ser visto, a estratégia perde dinheiro durante o período, com cinco negociações de ida e volta. Isso não é surpreendente, dado o comportamento da AAPL no período, que estava em ligeira tendência decrescente, seguido por um aumento significativo iniciado em 1998. O período de lookback dos sinais médios móveis é bastante grande e isso impactou o lucro do comércio final. , que de outra forma poderia ter tornado a estratégia lucrativa. Nos artigos subsequentes, criaremos um meio mais sofisticado de analisar o desempenho, além de descrever como otimizar os períodos de lookback dos sinais médios móveis individuais.
No comments:
Post a Comment