Python Data Analysis Library 8220 pandas nos permite focar mais na pesquisa e menos na programação. Encontramos pandas fáceis de aprender, fáceis de usar e fáceis de manter. A linha inferior é que aumentou a nossa produtividade.8221 Diretor de Otimização amp Analytics 8220 pandas é a ferramenta perfeita para reduzir o fosso entre as iterações rápidas de análise ad hoc e o código de qualidade de produção. Se você quer que uma ferramenta seja usada em uma organização multidisciplinar de engenheiros, matemáticos e analistas, não procure mais nada.8221 8220 Usamos pandas para processar dados de séries temporais em nossos servidores de produção. A simplicidade e a elegância de sua API e seu alto nível de desempenho para conjuntos de dados de alto volume, tornaram a escolha perfeita para nós.8221 Destaques da Biblioteca Um objeto DataFrame rápido e eficiente para manipulação de dados com indexação integrada Ferramentas para ler e escrever dados entre Estruturas de dados em memória e formatos diferentes: arquivos de texto e CSV, Microsoft Excel, bancos de dados SQL e o formato HDF5 rápido alinhamento inteligente de dados e gerenciamento integrado de dados faltantes. Obtenha alinhamento automático baseado em rótulos em computações e manipule facilmente dados confusos em uma forma ordenada. Remodelação e rotação flexíveis de conjuntos de dados. Recorte com base em etiquetas inteligentes. Indexação extravagante. E subconjunto de grandes conjuntos de dados. As colunas podem ser inseridas e excluídas das estruturas de dados para a mutabilidade do tamanho. Agregando ou transformando dados com um grupo poderoso por mecanismo, permitindo operações split-apply-combinar em conjuntos de dados. Combinação e união de alto desempenho de conjuntos de dados. O indexação de eixos hierárquicos fornece Uma maneira intuitiva de trabalhar com dados de alta dimensão em uma estrutura de dados de dimensões mais baixas. Física de séries temporais: geração de datas e conversão de freqüência, estatísticas de janela em movimento, regressões lineares de janela em movimento, mudança de data e atraso. Mesmo crie compensações de tempo específicos de domínio e junte séries temporárias sem perder dados Altamente otimizado para desempenho. Com caminhos de códigos críticos escritos em Cython ou C. Python com pandas está em uso em uma ampla variedade de domínios acadêmicos e comerciais, incluindo Finanças, Neurociências, Economia, Estatística, Publicidade, Web Analytics e muito mais. Testando um Crossover Médico Mover em Python Com pandas No artigo anterior sobre Ambientes de Backtesting de Pesquisa No Python Com Pandas, criamos um ambiente de backtesting baseado em pesquisa orientado a objetos e testávamos isso 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 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 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 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 de média móvel individual. Série Matplotlib Avançada (somente vídeos e fonte final) Depois de ter uma compreensão básica de como Matplotlib Funciona, você pode ter interesse em levar seu conhecimento um pouco mais. Algumas das mais complexas necessidades gráficas vêm na forma de análise de estoque e gráficos, ou Forex. Nesta série de tutoriais, iriam cobrir onde e como agarrar, classificar e organizar automaticamente alguns dados de estoque e de preços gratuitos. Em seguida, deveríamos enquadrá-lo usando alguns dos indicadores mais populares como exemplo. Aqui, bem, faça o MACD (Divergência da Convergência da Média em Movimento) e o RSI (Índice de Força Relativa). Para nos ajudar a calcular estes, usaremos NumPy, mas, de outra forma, vamos calcular estes todos por nossa conta. Para adquirir os dados, iriam usar a API de finanças do Yahoo. Esta API retorna os dados do preço histórico para o símbolo do ticker que especificamos e para o período de tempo que pedimos. Quanto maior o intervalo de tempo, menor a resolução de dados que obtemos. Então, se você solicitar um período de tempo de 1 dia para a AAPL, você receberá dados de 3 minutos de OHLC (open high low close). Se você pedir 10 anos, você receberá dados diários, ou mesmo prazos de 3 dias. Tenha isso em mente e escolha um período de tempo que corresponda às suas metas. Além disso, se você escolher um intervalo de tempo suficientemente baixo e obter uma granularidade suficientemente alta, a API retornará o tempo em um carimbo de hora do Unix, em comparação com um selo de data. Uma vez que possamos os dados, gostaríamos de representá-lo. Para começar, bem, apenas trace as linhas, mas a maioria das pessoas vai querer traçar um castiçal em vez disso. Usaremos a função de castiçal Matplotlibs, e criamos uma edição simples para melhorá-la ligeiramente. Neste mesmo gráfico, bem, também supera alguns cálculos de média móvel. Depois disso, iriam criar uma subtração e representar o gráfico do volume. Não podemos plotar o volume na mesma subtrama imediatamente, porque a escala é diferente. Para começar, vamos traçar o volume embaixo em outro sub-gráfico, mas, eventualmente, realmente supera o volume na mesma figura e torná-lo um pouco transparente. Então, iriam adicionar 2 sub-lotes e traçar um indicador RSI na parte superior e o indicador MACD na parte inferior. Para todos estes, iriam compartilhar o eixo X, para que possamos ampliar e diminuir em 1 parcela e todos irão igualar o mesmo período de tempo. Vai traçar o formato da data para o eixo X e personalizar praticamente todas as coisas que podemos fazer para a estética. Isso inclui a mudança das cores do rótulo, das cores da linha da espinha, das cores das linhas, das cores do candelabro do OHLC, aprenda como criar um gráfico preenchido (para volume), histogramas, desenhar linhas específicas (hline para RSI) e muito mais. Heres o resultado final (eu tenho uma versão Python 3 e Python 2 para isso. Python 3 primeiro, em seguida, Python 2. Certifique-se de que você está usando o que combina com a sua Python Version): Isso é tudo por enquanto. Quer mais tutoriais Dirija-se à Página Inicial
No comments:
Post a Comment