Wednesday, 22 November 2017

Moving average backtest


Médias móveis simples - Backtests de troca Que parâmetros de média movente são os mais melhores Este local tem um oceano de backtests de média movente que eu conduzi para o DAX, SP500 e também USD / EU (Forex). Estes testes foram realizados utilizando diferentes estratégias de sinalização: variantes simples / exponenciais e cruzadas e diferentes índices para um período 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, para as estratégias de cross-over também em combinação. Esses dados também são unqiue como eu 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 rápida reação parece bom em teoria e com um teste simples. Mas o spread, taxas e impostos vai destruir todo o desempenho na aplicação prática. É por isso que esses testes realistas são tão valiosos. Eu espero que este local possa lhe ajudar com seus comércios, aprecie-o IntroOverview: Este Web site educacional livre é pretendido permitir que você compare técnicas de troca técnicas populares tão scientifically como possíveis com backtesting. Em geral, é muito difícil de forma consistente vencer o mercado e você deve ser cético de qualquer coisa que lhe diga o contrário. Este site permite que você backtest algumas técnicas técnicas comuns para ver como eles teriam realizado contra o mercado e permite que você tela para as ações que atendem aos seus critérios de negociação. As estratégias que backtest bem, naturalmente, não garantem o sucesso para a frente mas poderiam ter uma probabilidade mais elevada de executar bem. Backtesting também permite que você veja as condições de mercado em que uma determinada estratégia irá funcionar bem. Por exemplo, se você está confiante de que o mercado será faixa limite indo para a frente, você pode descobrir quais as estratégias de melhor desempenho neste tipo de mercado. Isso é feito por backtesting sobre períodos de tempo históricos que foram limite de intervalo e ver quais estratégias são melhores. Backtesting também ajuda a ver quais parâmetros de estratégia são mais robustos em diferentes períodos de tempo. Por exemplo, faz um 10 stop-loss superar um 5 stop-loss 9 períodos de tempo históricos de 10 Assim, backtesting pode fornecer informações valiosas comerciais, embora não possa garantir o futuro. Algumas coisas interessantes que você pode descobrir: A combinação de negociação ativa e comissões pode acabar com você mesmo se você tiver uma boa percentagem de ganhar comércios Really tight trailing stops pode ferir seriamente a sua rentabilidade a longo prazo e não reduzir drawdown tanto quanto você poderia esperar Estratégias que você pensou que seria bom que consistentemente underperform o mercado Orientações (Single Stock Backtesting): Selecione o estoque que você deseja backtest sua estratégia técnica em. Capital de Partida: Quantidade de dinheiro que você começa com Stoploss: Ponto em que você quer sair de uma posição movendo contra você. Uma parada regular significa que você vai sair de sua posição se o estoque cai um percentual definido abaixo onde você comprou. Trailing stop: Vamos dizer que você comprar um estoque em 10 e colocar em uma parada de 10 arrasto. Se o estoque cai 10 sem nunca ir mais alto, você vai vender em 9. Mas se o estoque vai até 15, em seguida, para baixo 10 a 13,5, você vai vender em 13,5 e bloquear em alguns dos ganhos. Target: Vender quando seu estoque atinja um determinado ganho de porcentagem (Pode desativar selecionando Dont Use Target) Data de Início / Data de Término: Selecione as datas históricas entre as quais você deseja testar a estratégia. Sinais: Os sinais envolvem os cruzamentos ou relações entre o preço e os indicadores técnicos. Por exemplo, a cruz de ouro, compre quando a média móvel simples de 50 dias (sma) cruza acima dos 200 dias sma e venda quando os 50 dias cruzam abaixo dos 200 dias (cruz da morte). Os links a seguir explicam alguns indicadores técnicos populares: Get Trades / Graph: Get trades irá literalmente mostrar-lhe os comércios que você teria feito se você voltasse no tempo com um resumo do desempenho incluído. Os testes estatísticos: teste para ver se o retorno médio diário da estratégia é o mesmo que o retorno médio diário do SampP 500 ou o mesmo que o retorno médio diário de comprar e manter durante o período de tempo. Queremos saber quão confiantes podemos ser para rejeitar que os dois retornos são os mesmos. Quanto maior a confiança, mais certeza você pode ser de que sua estratégia é realmente melhor / pior do que o SampP 500 ou comprar e segurar. O gráfico traça o valor da carteira ao longo do tempo com um resumo incluído do desempenho. Direções (PortTester Beta): Trata-se de backtesting uma estratégia que você aplicaria ao seu portfólio como estoques chegar a sua técnica comprar e vender sinais. Na primeira caixa de texto, digite os tickers para a cesta de ações que você deseja backtest sua estratégia técnica em. Digite cada ticker separado por um espaço. Os estoques atualmente disponíveis incluem as ações de 30 dow, AA AXP BAC CAT CSCO CVX DD DIS GE HD HPQ IBM INTC JNJ JPM KFT KO MCD MMM MRK MSFT PFE PG TRV UTX VZ WMT XOM. Para incluir todos os 30 no backtest, basta digitar DJIA, que é o padrão. Target Número de posições abertas: Este é o número de ações que você quer ter uma posição dentro e não mais. Por exemplo, vamos dizer que você deseja direcionar 2 posições abertas. Quando o backtester encontra um sinal de compra em uma das ações que você colocou na cesta, digamos GE, ele assumirá GE foi comprado. Ele agora vai procurar mais 1 estoque para comprar quando há um sinal de compra, digamos BAC. Agora você tem uma carteira de 2 posições abertas (GE e BAC) e o backtester não vai comprar mais até que um sinal vender vende uma das ações. Uma carteira diversificada deve provavelmente ter 10 ou mais ações, mas isso tem um monte de poder de computação para backtest. Assim, uma carteira pequena como o padrão de 5 posições abertas será suficiente para ter uma noção de desempenho de uma estratégia. De nota, para os investidores com uma pequena quantidade de capital dizer 10.000, é caro para o comércio de um grande número de posições com 20 comissões para comércios de ida e volta. ETFs são uma maneira barata de se diversificar. Capital de Partida: Quantidade de dinheiro que você começa com Comissão de Negociação: Valor que você paga TDAmeritrade, SOGO, ScottTrade, etc para negociar um estoque Dimensionamento de posição: É assim que você decide comprometer uma certa quantia de dinheiro para cada ação em sua carteira. Atualmente, apenas uma opção (Equal Cash Atribution) está disponível. Isto significa que se eu tenho 10.000 e eu quero entrar em 2 posições, vou colocar 5000 em cada menos comissões. Em outras palavras, dinheiro disponível será igualmente dividido em direção a novas posições até que eu atinja o meu alvo n número de posições abertas. Outras opções para vir será o mesmo número de ações, e volatilidade baseada posição dimensionamento regras. Stoploss: Ponto em que você quer sair de uma posição movendo contra você. Vamos dizer que você comprar um estoque em 10 e colocar em uma parada de 10 arrasto. Se o estoque cair 10 sem nunca ir mais alto, você vai vender em 9. Mas se o estoque vai até 15, em seguida, para baixo 10 a 13,5, você vai vender em 13,5 e bloquear em alguns dos ganho. Data de Início / Data Final: selecione as datas históricas entre as quais você deseja testar a estratégia. O backtester começará na data de início em dados históricos e procurará pelas ações que você selecionou até que multar um sinal de compra. Se nenhum sinal de compra for encontrado no primeiro dia, o backtester move-se para o dia seguinte e procura através de todas as ações na cesta até que um sinal de compra é encontrado em que o estoque é assumido para ser comprado ao preço fechado ajustado para divisões e Dividendos. Assim que um estoque é comprado, o backtester estará olhando para vender esse estoque quando um sinal do sell vem. Ele também continua a olhar para comprar ações até o número-alvo de posições abertas é atingido. Ao mesmo tempo, venderá qualquer posição existente se ocorrer um sinal de venda. O valor da carteira é calculado todos os dias até a data de término. Sinais: Os sinais envolvem os cruzamentos ou relações entre o preço e os indicadores técnicos. Por exemplo, a cruz de ouro, compre quando a média móvel simples de 50 dias (sma) cruza acima dos 200 dias sma e venda quando os 50 dias cruzam abaixo dos 200 dias (cruz da morte). Get Trades / Graph: Get trades irá literalmente mostrar-lhe os negócios que você teria feito se você voltou no tempo com um resumo do desempenho incluído. O gráfico traça o valor da carteira ao longo do tempo com um resumo incluído do desempenho. Isenção de responsabilidade: stockbacktest não endossa ou recomenda qualquer uma das estratégias ou valores mobiliários neste site. O conteúdo deste site é para fins informativos e não deve ser tomado como conselho de investimento. Stockbacktest não deve ser responsabilizado por quaisquer erros neste site ou ações tomadas com base neste conteúdo sites. Moving Médio - MA BREAKING DOWN Média Móvel - MA Como um exemplo SMA, considere um título com os seguintes preços de fechamento em 15 dias: Semana 1 (5 dias) 20, 22, 24, 25, 23 Semana 2 (5 dias) 26, 28, 26, 29, 27 Semana 3 (5 dias) 28, 30, 27, 29, 28 Uma MA de 10 dias A média dos preços de fechamento para os primeiros 10 dias como o primeiro ponto de dados. O ponto de dados seguinte iria cair o preço mais antigo, adicionar o preço no dia 11 e tomar a média, e assim por diante, como mostrado abaixo. Conforme mencionado anteriormente, MAs atraso ação preço atual, porque eles são baseados em preços passados ​​quanto maior for o período de tempo para o MA, maior o atraso. Assim, um MA de 200 dias terá um grau muito maior de atraso do que um MA de 20 dias porque contém preços nos últimos 200 dias. A duração da MA a ser utilizada depende dos objetivos de negociação, com MAs mais curtos usados ​​para negociação de curto prazo e MAs de longo prazo mais adequados para investidores de longo prazo. O MA de 200 dias é amplamente seguido por investidores e comerciantes, com quebras acima e abaixo desta média móvel considerada como sinais comerciais importantes. MAs também transmitir sinais comerciais importantes por conta própria, ou quando duas médias se cruzam. Um aumento MA indica que a segurança está em uma tendência de alta. Enquanto um declínio MA indica que ele está em uma tendência de baixa. Da mesma forma, o impulso ascendente é confirmado com um crossover de alta. Que ocorre quando um MA de curto prazo cruza acima de um MA de longo prazo. O impulso para baixo é confirmado com um crossover bearish, que ocorre quando um MA a curto prazo cruza abaixo de um MA a mais longo prazo. Backtesting um Crossover média móvel em Python com pandas Por Michael Halls-Moore em 21 de janeiro de 2017 No artigo anterior sobre Pesquisa Backtesting Environments Em Python Com Pandas criamos um ambiente de backtesting baseado em pesquisa orientado a objetos e o testamos 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 Médio Móvel na AAPL. Estratégia de Crossover Média em Movimento A técnica de Crossover de Moving Average é uma estratégia de momentum simplista extremamente bem conhecida. É freqüentemente considerado o exemplo Hello World para negociação quantitativa. A estratégia aqui descrita é longa. São criados dois filtros separados de média móvel simples, com períodos de retrocesso variáveis, de uma série temporal específica. Os sinais para comprar o ativo ocorrem quando a média móvel de retrocesso mais curta excede a média móvel de maior tempo de retrocesso. Se a média mais longa subseqüentemente exceder a média mais curta, o ativo é vendido de volta. A estratégia funciona bem quando uma série de tempo entra em um período de forte tendência e, em seguida, lentamente inverte a tendência. Para este exemplo, eu escolhi a Apple, Inc. (AAPL) como a série de tempo, com um lookback curto de 100 dias e um lookback longo de 400 dias. Este é o exemplo fornecido pela biblioteca de negociação algorítmica do zipline. Assim, se queremos implementar nosso próprio backtester, precisamos garantir que ele corresponda aos resultados em tirolesa, 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 essa implementação em particular, 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 subclassificar a classe-base Abstract de Estratégia para produzir MovingAverageCrossStrategy. Que contém todos os detalhes sobre como gerar os sinais quando as médias móveis de AAPL cruzar uns aos outros. O objeto requer uma janela curta e uma janela longa sobre a qual operar. Os valores foram ajustados 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 rollingmean pandas sobre o preço de fecho barsClose do estoque AAPL. Uma vez construídas as médias móveis individuais, a Série de sinais é gerada ajustando a coluna igual a 1,0 quando a média móvel curta é maior que a média móvel longa, ou 0,0 caso contrário. A partir daí, as ordens de posição podem ser geradas para representar sinais de negociação. O MarketOnClosePortfolio é subclassificado do Portfolio. Que é encontrado em backtest. py. É quase idêntico à implementação descrita no tutorial anterior, com a exceção de que as negociações são agora realizadas em uma base Close-to-Close, em vez de uma base Open-to-Open. Para obter detalhes sobre como o objeto Portfolio está definido, consulte o tutorial anterior. Ive deixou o código em para a integridade e para manter este tutorial auto-contido: Agora que as classes MovingAverageCrossStrategy e MarketOnClosePortfolio foram definidas, uma função principal será chamado para amarrar todas as funcionalidades em conjunto. Além disso, o desempenho da estratégia será analisado através de um gráfico da curva de equivalência patrimonial. O objeto DataReader do pandas faz o download dos preços OHLCV das ações da AAPL para o período de 1º de janeiro de 1990 a 1º de janeiro de 2002, momento em que os sinais DataFrame são criados para gerar os sinais long-only. Subseqüentemente, a carteira é gerada com uma base de capital inicial de 100.000 USD e os retornos são calculados na curva de patrimônio líquido. O passo final é usar matplotlib para traçar um gráfico de dois dígitos de ambos os preços da AAPL, superposto com as médias móveis e sinais de compra / venda, bem como a curva de equidade 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 fiz uso do comando IPython colar para colocar isso diretamente no console IPython enquanto no Ubuntu, para que a saída gráfica permaneceu na vista. Os upticks rosa representam a compra do estoque, enquanto os downticks pretos representam vendê-lo de volta: Como pode ser visto a estratégia perde dinheiro durante o período, com cinco negócios de ida e volta. Isto não é surpreendente, tendo em conta o comportamento da AAPL ao longo do período, que registou uma ligeira tendência descendente, seguida de um aumento significativo a partir de 1998. O período de retrocesso dos sinais da média móvel é bastante grande e isso afectou o lucro do comércio final , O que de outra forma pode ter feito a estratégia rentável. Em artigos subseqüentes, criaremos um meio mais sofisticado de analisar o desempenho, bem como descrevendo como otimizar os períodos de retorno dos sinais individuais de média móvel. Michael Halls-Moore Mike é o fundador da QuantStart e tem estado envolvido na indústria de finanças quantitativas nos últimos cinco anos, principalmente como um desenvolvedor quant e mais tarde como consultor de comerciante quant para hedge funds. The SampP 500 fechou setembro com uma perda mensal De 0,12, coincidentemente sua segunda perda consecutiva de 0,12. Todos os três SampP 500 MAs estão sinalizando investido e todos os cinco Ivy Carteira ETF MAs estão sinalizando investido. Na tabela, fechamentos mensais que estão dentro de 2 de um sinal são realçados em amarelo. A tabela acima mostra o atual sinal de média móvel simples de 10 meses (SMA) para cada um dos cinco ETFs apresentados no The Ivy Portfolio. Weve também incluiu uma tabela de 12 meses SMAs para os mesmos ETFs para esta estratégia alternativa popular. Para uma análise facinating da estratégia da carteira do Ivy, veja este artigo por Adam Butler, Mike Philbrick e Rodrigo Gordillo: Backtesting Movendo Médias Durante os últimos anos weve usou Excel para seguir o desempenho de várias estratégias de sincronização da média móvel. Mas agora usamos as ferramentas de backtesting disponíveis no website do ETFReplay. Quem está interessado em timing de mercado com ETFs deve ter um olhar para este site. Aqui estão as duas ferramentas que usamos com mais freqüência: Antecedentes em médias móveis Comprar e vender com base em uma média móvel de encerramentos mensais pode ser uma estratégia eficaz para gerenciar o risco de perda grave dos principais mercados de baixa. Em essência, quando o fechamento mensal do índice está acima do valor da média móvel, você mantém o índice. Quando o índice é fechado abaixo, você move para o caixa. A desvantagem é que ele nunca recebe você no topo ou de volta na parte inferior. Além disso, ele pode produzir o whipsaw ocasional (curto prazo comprar ou vender sinal), como weve ocasionalmente experimentado ao longo do ano passado. No entanto, um gráfico do SampP 500 encerra mensalmente desde 1995 mostra que uma média de 10 ou 12 meses simples estratégia média (SMA) teria segurado participação na maior parte do movimento de preços ascendentes, reduzindo drasticamente as perdas. Aqui está a variante de 12 meses: A média móvel exponencial de 10 meses (EMA) é uma variante ligeira na média móvel simples. Esta versão aumenta matematicamente a ponderação de dados mais recentes na seqüência de 10 meses. Desde 1995 tem produzido menos whipsaws do que a média móvel simples equivalente, embora fosse um mês mais lento para sinalizar uma venda após estes dois tops do mercado. Um olhar para trás nas médias móveis 10 e 12 meses no Dow durante o Crash de 1929 e Grande Depressão mostra a eficácia destas estratégias durante aqueles tempos perigosos. A Psicologia dos Sinais Momentum Timing funciona por causa de um traço humano básico. As pessoas imitam o comportamento bem-sucedido. Quando ouvem de outro que faz o dinheiro no mercado, compram dentro. Eventualmente a tendência inverte. Pode ser meramente as expansões e contrações normais do ciclo econômico. Às vezes, a causa é mais dramática mdash uma bolha de ativos, uma grande guerra, uma pandemia, ou um choque financeiro inesperado. Quando a tendência reverte, os investidores de sucesso vendem cedo. A imitação do sucesso transforma gradualmente o momentum de compra anterior em vender o momentum. Implementando a Estratégia Nossas ilustrações do SampP 500 são apenas ilustrações mdash. Nós usamos o SampP por causa dos dados históricos extensivos thats prontamente disponíveis. No entanto, os seguidores de uma estratégia de média móvel deve tomar decisões de compra / venda sobre os sinais para cada investimento específico, e não um índice amplo. Mesmo se você está investindo em um fundo que rastreia o SampP 500 (por exemplo, Vanguards VFINX ou SPY ETF) os sinais de média móvel para os fundos, ocasionalmente, diferem do índice subjacente por causa do reinvestimento de dividendos. Os números do SampP 500 em nossas ilustrações excluem dividendos. A estratégia é mais eficaz em uma conta de vantagem fiscal com um serviço de corretagem de baixo custo. Você quer os ganhos para si mesmo, não seu corretor ou seu tio Sam. Nota . Para quem quiser ver as médias móveis simples de 10 e 12 meses no SampP 500 e as posições de equidade versus dinheiro desde 1950, está um arquivo Excel (formato xls) dos dados. Nossa fonte para os encerramentos mensais (Coluna B) é Yahoo Finance. As colunas D e F mostram as posições assinaladas pelo fim do mês para as duas estratégias SMA. No passado weve recomendado Mebane Fabers artigo pensativo Uma Abordagem Quantitativa Atribuição Táctica de Ativos. O artigo foi atualizado e expandido como parte três: Active Management seu livro The Ivy Portfolio. Co-autor com Eric Richardson. Este é um deve ler para qualquer um contemplando o uso de um sinal de tempo para decisões de investimento. O livro analisa a aplicação das médias móveis do SampP 500 e de quatro classes de ativos adicionais: o Índice EAFE Morgan Stanley Capital International (MSCI EAFE), o Goldman Sachs Commodity Index (GSCI), o National Association of Real Estate Investment Trust Index (NAREIT) Governo dos Estados Unidos 10 anos títulos do Tesouro. Como um recurso regular deste site, tentamos atualizar os sinais no final de cada mês. Para informações adicionais de Mebane Faber, visite seu site, Mebane Faber Research. Nota de rodapé sobre o cálculo das médias móveis mensais: Se você está fazendo seus próprios cálculos de médias móveis para dividendos de ações ou ETFs, você ocasionalmente obterá resultados diferentes se você não ajustar para dividendos. Por exemplo, em 2017 VNQ permaneceu investido no final de novembro com base em fechamentos mensais ajustados, mas houve um sinal de venda se você ignorou os ajustes de dividendos. Como os dados de meses anteriores serão alterados quando os dividendos forem pagos, você deve atualizar os dados para todos os meses no cálculo se um dividendo tiver sido pago desde o fechamento mensal anterior. Este será o caso de quaisquer ações ou fundos que paguem dividendos.

No comments:

Post a Comment