Thursday 6 July 2017

Backtesting De Média Móvel Simples


Estratégia Testing Precisa de mais informações Back-Testing Estratégias de Negociação com Wealth-Lab Pro. As estratégias de negociação e o teste de estratégia e os sinais comerciais gerados pelas estratégias são fornecidos para fins educacionais e apenas como exemplos e não devem ser usados ​​ou confiados para tomar decisões sobre sua situação individual. Você pode modificar os parâmetros de Teste de Estratégia como entender. A Fidelity não está adotando, fazendo uma recomendação ou endossando qualquer estratégia de negociação ou investimento ou segurança específica. O recurso Teste de Estratégia fornece um cálculo hipotético de como um título ou carteira de títulos, sujeito a um exemplo de estratégia de negociação, teria sido executado ao longo de um período de tempo histórico. Somente os títulos que estavam em existência durante o período de tempo histórico e que têm dados de preços históricos estão disponíveis para uso no recurso Teste de Estratégia. O recurso tem apenas uma capacidade limitada para calcular as comissões de negociação hipotético, e não conta para quaisquer outras taxas ou para as consequências fiscais que poderiam resultar de uma estratégia de negociação. Você não deve assumir que Strategy Testing de uma estratégia de negociação fornecerá qualquer indicação de como sua carteira de títulos, ou uma nova carteira de títulos, pode executar ao longo do tempo. Você deve escolher suas próprias estratégias de negociação com base em seus objetivos específicos e tolerâncias de risco. Certifique-se de rever as suas decisões periodicamente para se certificar de que eles ainda estão consistentes com seus objetivos. O desempenho passado não é garantia de resultados futuros. Cópia 1998 ndash 2012 FMR LLC. Todos os direitos reservados. Simple Moving Averages - Backtests de negociação Que parâmetros de média móvel são os melhores Este site tem um oceano de backtests média móvel que eu realizei 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. Espero que este site pode ajudá-lo com seus negócios, aproveite-o IntroBacktesting um média móvel Crossover em Python com pandas Por Michael Halls-Moore em 21 de janeiro de 2014 No artigo anterior sobre Pesquisa Backtesting Ambientes Em Python Com Pandas criamos um objeto orientado Baseado em pesquisa backtesting ambiente e testou-lo 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 de quant e mais tarde como consultor de comerciante quant para hedge funds. Overview: Este site educacional gratuito destina-se a Permitem que você compare técnicas de negociação técnicas populares tão cientificamente quanto possível através de 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 atendam 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 os prazos históricos que foram limite de intervalo e ver quais as 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 ele não pode 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) eo backtester não vai comprar mais até que um sinal de venda 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 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. 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 pesquisa todos os estoques do cesto até que um sinal de compra seja encontrado no qual o estoque é assumido como sendo comprado ao preço de fechamento 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 considerado 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. Python vs R 3: um backtest cruzamento simples média móvel em SPY Este é o terceiro de uma série que está comparando Python e R para quantitativa Análise de negociação. Usando o framework zipline para Python eo trabalho de Systematic Investor Toolbox para R. Eu implemento o mesmo modelo de cross-over de média móvel em cada idioma. Devido à natureza OOP de Python existem muitas diferenças entre as duas linguagens, levando a cerca de duas vezes mais código. Presumivelmente, a complexidade adicionada de OO é útil em estratégias muito mais complicadas. Python R Python R O próximo passo da série será analisar as métricas de desempenho embutidas das linguagens e os pacotes de backtesting disponíveis.

No comments:

Post a Comment