Wednesday 22 November 2017

Média móvel simples em python


Estou jogando em Python um pouco mais, e eu encontrei um livro limpo com exemplos. Um dos exemplos é traçar alguns dados. Eu tenho um arquivo. txt com duas colunas e eu tenho os dados. Eu tracei os dados muito bem, mas no exercício diz: Modifique seu programa ainda mais para calcular e traçar a média de execução dos dados, definida por: onde r5 neste caso (eo yk é a segunda coluna no arquivo de dados) . Faça com que o programa trace os dados originais e a média corrente no mesmo gráfico. Até agora eu tenho isso: Então, como eu calculo a soma Em Mathematica sua simples desde a sua manipulação simbólica (Sumi, por exemplo), mas como calcular soma em python que leva a cada dez pontos nos dados e médias, e faz isso Até o final dos pontos eu olhei para o livro, mas não encontrei nada que possa explicar isso: heltonbikers código fez o truque: D Muito obrigado :) Há um problema com a resposta aceita. Eu acho que precisamos usar válido em vez de mesmo aqui - retornar numpy. convolve (intervalo, janela, mesmo). Como Exemplo, experimente o MA deste conjunto de dados 1,5,7,2,6,7,8,2,2,7,8,3,7,3,7,3,15,6 - o resultado Deve ser 4,2,5,4,6,0,5,0,5,0,5,2,5,4,4,4,5,4,5.6,5.6,4.6,7.0,6.8. Mas ter o mesmo nos dá uma saída incorreta de 2.6.3.0,4.2,5.4,6.0,5.0,5.0,5.2,5.4,4.4,5.4,5.6,5.6, 4.6,7.0,6.8,6.2,4.8 Código enferrujado para experimentar isto -: Tente isso com amplificador válido mesmo e ver se a matemática faz sentido. Respondeu Oct 29 14 at 4:27 Haven39t tentou isso, mas I39ll olhar para ele, It39s sido um tempo desde I39ve codificado em Python. Ndash dingod Oct 29 14 at 7:07 dingod Por que don39t você rapidamente tentar isso com o código enferrujado (eo conjunto de dados de exemplo (como uma lista simples), eu postei. Para algumas pessoas preguiçoso (como eu tinha sido no início) - suas máscaras para fora o fato de que a média móvel está incorreto. Probably você deve considerar a edição de sua resposta original. Eu tentei isso ontem e verificação dupla me salvou cara de olhar mal em relatar ao nível Cxo. Tudo o que você precisa fazer, é tentar Sua mesma média móvel uma vez com quotvalidquot e outro tempo com quotsamequot - e uma vez que você está convencido me dar algum amor (aka-up-vote) ndash ekta Oct 29 14 em 7: 16elsen 0.1.2 Elsen API Library ltp aligncentergt lta hrefelsen. cogt Ltimg srcelsen. co/img/apple-touch-icon-144x144.png/gt lt / agt lt / pgt Esta biblioteca é as ligações Python para a API Elsen que se integram com as ferramentas de modelagem Python existentes como Pandas e NumPy / SciPy. Para facilidade de uso, recomenda-se que você use o Anaconda Python Distribution, que está disponível para Windows, Mac OSX e Linux. É um ambiente autônomo do Python que agrupa todas as ferramentas comuns de modelagem financeira. 1) Instale o Anaconda (docs. continuum. io/anaconda/installmac-install) 2) Abra o Terminal da pasta Aplicativos: Utilitários. 3) Clone o código-fonte para a biblioteca. Se você não tiver o Git instalado no momento, uma janela aparecerá para pedir que você instale o Developer Tools. Clique em Continuar e execute novamente o comando acima. 4) Mover para a pasta de origem da biblioteca. 5) Instale a biblioteca Elly Python. Bash python setup. py install 6) Execute o código de exemplo. Bash python Example. py Ou para iniciar diretamente no bloco de notas do IPython. 1) Instale o Anaconda (docs. continuum. io/anaconda/installlinux-install) 2) Se você não tiver o Git instalado, instale-o. Bash sudo apt-get install git 3) Abra o Dash clicando no ícone do Ubuntu no canto superior esquerdo, digite o terminal e selecione o aplicativo Terminal dos resultados que aparecem. 4) Clone o código-fonte para a biblioteca. 5) Mova-se para a pasta de origem da biblioteca. 6) Instale a biblioteca Elsen Python. Bash python setup. py install 7) Execute o código de exemplo. Bash python Example. py Ou para iniciar diretamente no bloco de notas do IPython. Bash pip install - r requirements. txt python setup. py install Opcionalmente várias bibliotecas comuns podem ser integradas: bash pip instalar pandas pip instalar numpy pip instalar ipython pip instalar matplotlib A biblioteca está inteiramente contido no módulo elsen: python from elsen import Para autenticar Com o sistema youll requerem quatro partes de informação contidas em seu Elsen Bem-vindo e-mail: Autenticação token Aplicação id Nome de usuário Senha python elsen Elsen () elsen. authenticate (appid appid, nome de usuário bob, senha trader) Adicionando um novo aplicativo. Python elsen. addapplication (e-mail bobelsen. co appid appid) Uma vez conectado, novos usuários podem ser adicionados a um aplicativo. elsen. adduser python (appid, nome de usuário, senha, Campos opcionais firstName Bob, Trader sobrenome, e-mail bobelsen. co.) python Em 1: elsen. getexchanges () Out1: uNASDAQ, uNYSE, uAMEX python em 1: elsen. getindices () Out1: uSP500 Para obter os filtros mais comuns (em termos de contagem de empresas) disponíveis na consulta do sistema, a função de filtros comuns. Os 10 principais disponíveis no sistema são os seguintes: avgvol30 - Quantidade média de ações negociadas em um período de 30 dias. Phigh250 - Porcentagem ao preço mais alto que uma ação negociou no ano anterior. Dailyvolume - Quantidade média de ações negociadas em um dia. Currentprice - Preço em tempo real de um título ou o mais recente listado. Plow250 - Porcentagem ao preço mais baixo que uma ação negociou no ano anterior. Inceibt - Lucro líquido antes dos impostos - incsdws - Média ponderada de ações ordinárias em circulação incluindo diluição por opções. - incsdai - EPS (tendo em conta as opções), incluindo despesas causadas por acontecimentos extraordinários. - incsbas - Média ponderada de ações ordinárias em circulação menos diluição. - incsbai - EPS, incluindo despesas ocasionadas por eventos anormais como desastres naturais, etc. python n 1: elsen. getfilters () 0:10 Out1: ltltfilter: nameincvpti descIncome antes dos impostos, excluindo encargos e / ou créditos não recorrentes. Count500gtgt, ltltfilter: nameincndep descDepreciation Despesa count2gtgt, ltltfilter: nameincxnic descIncome disponível excluindo despesas causadas por eventos extraordinários. count504gtgt, ltltfilter: nameincnama descAmortization de Aquisição Custos count0gtgt, ltltfilter: nameincvrrp descReported count0gtgt lucro ordinário, ltltfilter: nameincsbtr count43gtgt descBank Receita Total, ltltfilter: nameincstps descTotal Plano de Serviço count83gtgt Custo, ltltfilter: nameincvdcd descDefined Contribuição Despesa - count30gtgt Doméstica, ltltfilter: descTransition nameincvxtc custos - Pós-Aposentadoria count8gtgt, ltltfilter: descNumber namebalqtsn1 de ações ordinárias detidas pela própria companhia e de suas controladas count477gtgt python em 2: elsen. searchfilters (lucro) OUT2: ltltfilter: nameincvrrp descReported count0gtgt lucro ordinário, ltltfilter: nameincvnbp descReported lucros das empresas Net count0gtgt, ltltfilter: nameincvopp descReported lucro operacional count2gtgt, ltltfilter: nameincndta descDealer Negociação Demonstração count1gtgt, ltltfilter: nameincmigk descNew do lucro de negócio count0gtgt, ltltfilter: impostos descAll nameincttax com base nos lucros pertencentes ao governo federal, estadual e / ou governo estrangeiro. count484gtgt, ltltfilter: nameincvgrp descReported Lucro Bruto count0gtgt, ltltfilter: nameincvopr descReported Operating Profit Margin count0gtgt, ltltfilter: nameincsgrp descGross Profit count386gtgt, ltltfilter: nameincmibz descUnderwriting Lucro ou perda count5gtgt, ltltfilter: relação descThe nameincsnpm do lucro líquido para a receita (geralmente expressa em) . Count477gtgt, ltltfilter: nameincninc descA salários ou lucro total da empresa s. python count504gtgt Em 1: elsen. getindicators () OUT1: ltltindicator: trailinggtgt, ltltindicator: crossgtgt, ltltindicator: emagtgt, ltltindicator: rsigtgt, ltltindicator: macdgtgt, ltltindicator: bollingerbandgtgt, ltltindicator: smagtgt Índice de Força Relativa: python In1: elsen. getindicators rsi (Rsi) In2: print rsi. shortdesc O Índice de Força Relativa (RSI) mede a tendência de um preço de títulos medindo a relação de ganhos médios para perdas médias e convertendo-a em um índice de 1 a 100. Em 3: rsi. () Ulookback: u períodos de lookback, ulower: uSmallest valor que irá desencadear uma ativação, inclusive., Uname: uRSI, uupper: uLargest valor que irá desencadear uma ativação, inclusive. A média móvel simples é um indicador de preço de fecho, indicando as tendências dos preços dos valores mobiliários, medindo o preço de fecho médio de um número seleccionado de períodos anteriores à data de vencimento. Para o período corrente. U: uMais valor que irá desencadear uma ativação, inclusive., Ulookback: u Tamanho da janela, uname: uSMA python Comprar quando oversold ind1 Indicador ( actionBUY, nameRSI, lower1, upper30, lookback21) Vender quando overbought ind2 Indicator (actionSELL, nameRSI, lower70, upper100, lookback21) Filtre baixo preço e empresas de baixo volume Filtro Flt1 (namecurrentprice, min0, MAX200) flt2 filtro (nameavgvol30, min10000000. 0, max3400000000.0) Configure a estratégia de estratégia elsen. setupstrategy (universo SP900, indicadores ind1, ind2, filtros flt1, flt2, intervalo 1) Para executar o backtest, aplique o objeto de estratégia como argumento para setupbacktest juntamente com um intervalo de datas. Python backtest elsen. setupbacktest (estratégia de estratégia, iniciar 2017-5-1, final 2017-12-1) Execute o backtest, aguarde os resultados. Backtest. join (timingTrue) backtest. details () Para puxar os detalhes específicos para um backtest no sistema, dado um ID de backtest específico. Use os detalhes para a função. python In1: elsen. detailsfor (dfd7faf3-e13c-4293-b55d-33bbd4fb0f9f) python In1: Devoluções de impressão: s backtest. returns () Retorna: 40193,9147 IN2: imprimir Sharpe Ratio: s backtest. sharpe () Sharpe Ratio: 0,77072534093809145889 In3: Print Alpha: s backtest. alpha () Alfa: -0.140887764298623 In4: print Beta: s backtest. beta () Beta: 0.0000752396488764315 Para obter todas as métricas para o objeto Backtest você pode chamar help (backtest) para obter a lista de todas Propriedades e métodos disponíveis. O próprio objeto backtest também pode ser convertido em um frame de dados Pandas, objeto JSON ou serializado em um arquivo. Python In1: backtest. todataframe (). In2: backtest. tojson (). Em 3: backtest. todataframe () drawdown Out4: 0 45.48239846246275415098 Nome: drawdown, dtype: object Para puxar os negócios individuais para um backtest use a função trades que pode gerar o objeto de dataframe resultante. Python In1: backtest. trades (). In2: backtest. trades (). Todataframe () bash cd docs fazer html fazer latexpdf Se você arquivar um problema com suporte Elsen, em seguida, por favor, coloque a seguinte linha no início do seu script. Em seu relatório de bug / e-mail para suporte, por favor inclua o seguinte Script ou IPython Notebook usado para executar seu programa. O arquivo de saída elsen-python. log. Os casos de uso também são fornecidos no formulário de caderno IPython para uso interativo: bash ipython notebook Visualization. ipynb Previsão e Python Parte 1 8211 Médias Móveis Gostaria de dar início a uma série que leva diferentes metodologias de previsão e demonstra-los usando Python. Para começar o 8216ball rolling8217 eu quero começar com as médias móveis e idealmente terminar a série sobre a previsão com modelos ARIMA (AutoRegressive Integrated Moving Average). Meu objetivo é ter esse conteúdo em teoria e matemática e, em vez disso, focar na aplicação em código. Eu escrevo estas tarde da noite, então sinta-se livre para ping-me se eu tiver quaisquer erros. Eu freqüentemente me refiro ao Y predito como chapéu de Y, se você não está ciente, na equação o símbolo de chapéu está localizado sobre o previsto Y. Previsão com média móvel As médias móveis devem ser um ótimo lugar para começar cada livro que eu tenho começa com a movimentação Médias para lançar as bases. As fórmulas são simples e divertidas. Equação 1: Médias Móveis Equação O modelo de médias móveis calcula a média de cada observação nos períodos k. No meu código e resultados vou usar uma média móvel de 12 períodos, portanto, k12. Y hat (t1) é o valor de previsão para o próximo período e Y (t) é o valor real no período t. Um período pode ser horas, dias, semanas, meses, ano, etc. Como o modelo é o mesmo independentemente, não vou especificar uma unidade. Yvalues ​​é um subconjunto de todos os valores Y reais introduzidos no código. Definir meu 8216k8217 (períodos) igual a 12 como vou calcular uma média móvel de 12 períodos. O código itera sobre as observações (n), calcula a média para cada intervalo de 12 períodos (k12) e atribui o cálculo à lista yhat. No caso de você ter notado, yfull é a minha lista completa de valores Y, onde yvalues ​​é um subconjunto que foi compensado por k. Mais sobre isso abaixo na seção 8216Offsetting Y Subset List8217. Plot real e previsão de previsão 1. 12 período de média móvel Medição de erros de previsão Eu tenho a minha previsão, mas é qualquer bom Visualmente a previsão segue os valores reais muito bem, mas como posso medir a qualidade desta previsão e, em seguida, compará-lo contra as previsões Derivado usando métodos diferentes. Uma maneira de medir uma previsão é medir os erros (a. k.a. residuals, Y real 8211 Y hat) Escolhi incluir os seguintes métodos para medir os erros de previsão nesta discussão. Mean Squared Error (MSE) que mede as médias dos erros quadrados (diferença de Y e Y hat). MSE é relatado nas mesmas unidades que os valores que estão sendo estimados (Y), assim poderia dizer-se que uma previsão é fora por 821610.000 units8217. Esse erro pode ser visto como pequeno se os valores reais variam em bilhões de unidades. O erro pode ser visto como grande se os valores reais só variam no 108217s de milhares. Um problema comum com o MSE é que pesa pesadamente os outliers grandes que inflam a medida do erro. O Root Mean Squared Error toma a raiz quadrada do MSE. RMSE representa o desvio padrão da amostra dos resíduos. O erro de percentagem absoluta média (MAPE) é um método alternativo que reporta o erro como uma percentagem. Em vez de dizer que a previsão está desativada por 8216x units8217, poderíamos dizer que uma previsão está desativada em 4. Eu freqüentemente uso mais de um método ao comparar as previsões como cada um tem limitações, que em algum momento pode resultar em medições espúrias por um ou dois métodos. Equação 2 amp 3: MSE e MAPE Equação 3: RMSE Forecast 1: Medições de erro MSE: 630,649.39 RMSE: 794.13 MAPE: 10.22 Offsetting Y Lista de subconjuntos É interessante que a previsão acima (previsão 1) não 8216fit8217 os valores reais de forma mais eficaz 8211 É uma série de dados simples, eu esperaria que os resíduos fossem menores. Para calcular os valores de Y hat para o modelo de média móvel de 12 períodos, utilizo uma fórmula que move o tempo (t) 12 períodos à frente (veja a equação 1 acima). Isto era como eu fui ensinado originalmente e tenho exemplos para nos livros de texto em minha prateleira do escritório. Este código cria yfull a partir do arquivo de dados carregado, em seguida, cria uma lista de subconjuntos iniciando 12 períodos em. Why8230 porque vamos usar o primeiro período de 12 para lançar a nossa previsão média móvel. Os valores de previsão, no entanto, não 8216fit8217 os valores reais, tanto quanto eu gostaria. Eles estão sob previsão ou sobre a previsão. Outro método para a média móvel de previsão sugere iniciar a previsão no ponto médio de 8216k8217. Previsão 1: Dados usando o ponto médio de 8216k8217 Previsão 2: 12 média móvel de período Previsão 2: Medidas de erro MSE: 7,350.78 RMSE: 85.74 MAPE: 0.86 Comparando as medidas de erro de previsão da previsão 1 com a previsão 2 fornece uma indicação de que o segundo método melhor se adapte Nossos dados. However8230 Há uma grande quantidade de conteúdo disponível em Centered Moving Averages que dará detalhes completos de como calcular os valores de ponto médio para pares / períodos ímpares. Eu não sou essa fonte estou apenas demonstrando como reduzir o atraso das médias alinha melhor nossos chapéus Y para o real e melhora as medidas de erro. O código é quase idêntico, exceto que a lista de subconjuntos (yvalues) é criada 6 períodos em e pára 6 períodos curtos. A média dos dados a partir do ponto médio em diante reduziu a quantidade de sobre / sob previsão como feito na previsão 1. Previsão 2: Dados quando Moving Averages é menos adequado A previsão média móvel começa a falhar quando a série de dados tem uma componente cíclica ou sazonalidade. Abaixo está o mesmo 12 período de média móvel de código Python contra uma série de dados cíclicos. Previsão Médias Mínimas do Período 3: 12 Previsão 3: Medidas de Erro MSE: 5.386.003.002.91 RMSE: 73.389,39 MAPE: 48.79 O gráfico ea medida de erro calculada indicam que as médias móveis não são adequadas para esta série. Eu usarei esta mesma série com outros modelos de previsão para demonstrar técnicas que fazem ciclos de pick-up nos dados. Séries Matplotlib Avançadas (vídeos e fonte final somente) Uma vez que você tenha um entendimento básico de como o Matplotlib funciona, você pode ter interesse em Levando seu conhecimento um pouco mais. Algumas das necessidades gráficas mais complexas vêm na forma de análise de ações e gráficos, ou Forex. Nesta série tutorial, foram indo para cobrir onde e como automaticamente pegar, classificar e organizar alguns stock livre e dados de preços forex. Em seguida, foram indo para gráfico usando alguns dos indicadores mais populares como um exemplo. Aqui, bem fazer MACD (Moving Average Convergence Divergence) eo RSI (Relative Strength Index). Para nos ajudar a calculá-los, usaremos o NumPy, mas, caso contrário, calcularemos tudo por conta própria. Para adquirir os dados, iriam usar a API de finanças do Yahoo. Esta API retorna dados de preços históricos para o símbolo de ticker que especificamos e para o tempo que pedimos. Quanto maior o período de tempo, menor a resolução de dados que obtemos. Assim, se você pedir um período de tempo de 1 dia para AAPL, você receberá 3-minuto OHLC (aberto alto fechamento baixo) dados. Se você pedir 10 anos vale a pena, você obterá dados diários, ou mesmo 3 dias de tempo. Tenha isso em mente e escolha um período de tempo que se ajuste aos seus objetivos. Além disso, se você escolher um intervalo de tempo baixo o suficiente e obter alta granularidade suficiente, a API retornará o tempo em um carimbo de data / hora unix, em comparação com um carimbo de data. Uma vez que tenhamos os dados, vamos querer graficá-lo. Para começar, basta traçar as linhas, mas a maioria das pessoas vai querer traçar um castiçal em seu lugar. Vamos usar a função de candelabro Matplotlibs, e fazer uma edição simples para melhorar ligeiramente. Neste mesmo gráfico, bem também sobrepor alguns cálculos de média móvel. Depois disso, vamos criar uma sub-trama, e graficar o volume. Não podemos plotar o volume na mesma subtrama imediatamente, porque a escala é diferente. Para começar, vamos plotar o volume embaixo em outro sub-plot, mas eventualmente bem realmente sobreposição de volume na mesma figura e torná-lo um pouco transparente. Então, foram indo para adicionar 2 sub-parcelas e traçar um RSI indicador na parte superior eo MACD indicador na parte inferior. Para todos estes, foram indo para compartilhar o eixo X, para que possamos zoom in e out em 1 parcela e todos eles correspondem ao mesmo período de tempo. Vamos tramar no formato de data para o eixo X, e personalizar quase todas as coisas que podemos para a estética. Isso inclui mudar as cores da etiqueta da marca, as cores da borda / coluna, as cores das linhas, as cores do candelabro da OHLC, aprender a criar um gráfico preenchido (para o volume), histogramas, desenhar linhas específicas (hline para RSI) e muito mais. Heres o resultado final (eu tenho tanto um Python 3 e uma versão Python 2. Python 3 primeiro, depois Python 2. Certifique-se de que você está usando o que corresponde a sua versão Python): Isso é tudo por agora. Quer mais tutoriais Chefe para a Home Page Matplotlib Crash CourseBacktesting 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 Ambientes Em Python Com Pandas criamos um objeto orientado à investigação baseada Backtesting ambiente e testou-o 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 desenvolvedor quantitativo e, mais tarde, como consultor de comerciante de quant para hedge funds.

No comments:

Post a Comment