Saturday 28 October 2017

Exponencial Moving Average Pandas


Média de Movimento Exponencial A Média de Movimento Exponencial A Média de Movimento Exponencial difere de uma Média de Movimento Simples, tanto pelo método de cálculo quanto pela forma como os preços são ponderados. A média móvel exponencial (encurtada para as EMA iniciais) é efetivamente uma média móvel ponderada. Com a EMA, a ponderação é tal que os preços dos dias recentes recebem mais peso do que os preços mais antigos. A teoria por trás disso é que os preços mais recentes são considerados mais importantes do que os preços mais antigos, particularmente porque uma média simples de longo prazo (por exemplo, 200 dias) coloca igual peso em dados de preços com mais de 6 meses de idade e poderia ser pensado De um pouco fora de data. O Cálculo da EMA é um pouco mais complexo do que a Média de Movimento Simples, mas tem a vantagem de que não seja necessário manter um grande registro de dados que cobrem cada preço de fechamento nos últimos 200 dias (ou, no entanto, muitos dias estão sendo considerados). . Tudo o que você precisa é o EMA para o dia anterior e o preço de fechamento de hoje para calcular a nova Média de Movimento Exponencial. Calculando o Exponente Inicialmente, para o EMA, um expoente precisa ser calculado. Para começar, pegue o número de dias EMA que você deseja calcular e adicione um para o número de dias que você está considerando (por exemplo, para uma média móvel de 200 dias, adicione um para obter 201 como parte do cálculo). Bem, ligue para estes Days1. Então, para obter o Exponente, basta pegar o número 2 e dividi-lo por Days1. Por exemplo, o Exponente para uma média móvel de 200 dias seria: 2 201. O que equivale a 0,01 Cálculo Completo se a Média de Movimento Exponencial Uma vez que obtivemos o expoente, tudo o que precisamos agora são mais dois bits de informação que nos permitem realizar o cálculo completo . O primeiro é a média móvel exponente. Bem suponha que já conheçamos isso, pois teríamos calculado ontem. No entanto, se você já está ciente de ontem EMA, você pode começar calculando a média móvel simples para ontem e usando isso no lugar da EMA para o primeiro cálculo (ou seja, o cálculo de hoje) da EMA. Então, amanhã você pode usar o EMA que você calculou hoje, e assim por diante. A segunda informação que precisamos é o preço de fechamento de hoje. Vamos supor que queremos calcular a Média de Mudança Exponencial de 200 dias de hoje para uma ação ou estoque que tenha EMA anterior de 120 centavos (ou centavos) e um dia atual de fechamento de preço de 136 centavos. O cálculo completo é sempre o seguinte: Média de Mudança Exponencial de Hoje (preço atual de encerramento do dia x Exponente) (dias anteriores EMA x (1- Exponente)). Assim, usando nossos exemplos de números acima, o EMA de 200 dias de hoje seria: (136 x 0,01 ) (120 x (1- 0,01)) O que equivale a um EMA para hoje de 120.16.It. Mas a maior parte do trabalho de descobrir o melhor caminho já está pronto. Nós só precisamos finalizá-lo. Depois disso, é apenas um monte de cópias para envolver toda a biblioteca TAlib. Há muitas coisas boas nos trabalhos para resolver certas falhas. É uma questão de recursos na maior parte. O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer garantia ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. A Quantopian não oferece garantias quanto à exatidão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas. Todos os investimentos envolvem risco, incluindo perda de principal. Você deve consultar um profissional de investimento antes de fazer qualquer decisão de investimento. Caracterizando um Crossover de média móvel 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 um 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 de tempo entra em um período de forte tendência e depois 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 este tutorial autônomo. Agora que as classes MovingAverageCrossStrategy e MarketOnClosePortfolio foram definidas, uma função principal será chamada para amarrar todas as funcionalidades 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, momento em que 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 da AAPL, superados 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 individuais de média móvel.

No comments:

Post a Comment