Monday 18 December 2017

Movendo média scipy no Brasil


O módulo scikits. timeseries não está mais em desenvolvimento ativo. Há uma excelente lista de bugs que provavelmente não serão corrigidos. O plano é que a funcionalidade principal deste módulo seja implementada em pandas. Se você deseja ver este módulo ao vivo independentemente de pandas, sinta-se livre para bifurcar o código e assumi-lo. O módulo scikits. timeseries fornece classes e funções para manipular, reportar e plotar séries temporais de várias freqüências. O foco está no acesso e manipulação de dados convenientes, ao mesmo tempo em que alavanca a funcionalidade matemática existente em numpy e scipy. Se os seguintes cenários lhe parecerem familiares, então você provavelmente encontrará o módulo scikits. timeseries útil: Compare muitas séries de tempo com diferentes faixas de dados (por exemplo, preços de ações) Crie gráficos de eixos com espaçamento inteligente A mensal, tomando o valor médio durante cada mês Trabalho com dados que têm valores em falta Determine o último dia útil do mês anterior quarterteryear para fins de relato Calcular um desvio padrão móvel de forma eficiente Estes são apenas alguns dos cenários que são feitas muito simples com o scikits Módulo. timeseries. DocumentationZipline é uma biblioteca de negociação algorítmica Pythonic. É um sistema baseado em eventos que suporta backtesting e live-trading. Zipline é atualmente usado na produção como o backtesting e motor de troca ao vivo potenciando Quantopian 8211 uma plataforma livre, comunidade-centrada, hospedada para construir e executar estratégias de troca. Facilidade de uso: Zipline tenta sair de seu caminho para que você possa se concentrar no desenvolvimento de algoritmos. Veja abaixo um exemplo de código. Zipline vem 8220batteries included8221 como muitas estatísticas comuns, como média móvel e regressão linear pode ser facilmente acessado a partir de um algoritmo escrito pelo usuário. A entrada de dados históricos ea produção de estatísticas de desempenho baseiam-se em Pandas DataFrames para integrar-se bem no ecossistema PyData existente. Estatística e aprendizagem de máquinas bibliotecas como matplotlib, scipy, statsmodels, sklearn e apoiar o desenvolvimento, análise e visualização de state-of-the-art trading systems. Instalação Instalando com o pip Assumindo que você tenha todas as dependências não necessárias do Python (veja nota abaixo), você pode instalar o Zipline com pip via: Nota: Instalar o Zipline via pip é ligeiramente mais envolvido do que o pacote Python médio. Simplesmente executando pip instalar zipline provavelmente irá falhar se you8217ve nunca instalou qualquer pacote científico Python antes. Há duas razões para a complexidade adicional: Zipline envia várias extensões C que exigem acesso à API CPython C. Para construir as extensões C, o pip precisa de acesso aos arquivos de cabeçalho CPython para a instalação do Python. Zipline depende de numpy. A biblioteca central para computação em matriz numérica em Python. Numpy depende de ter as rotinas de álgebra linear LAPACK disponíveis. Como LAPACK e os cabeçalhos CPython são dependências binárias, a maneira correta de instalá-los varia de plataforma para plataforma. No Linux, os usuários geralmente adquirem essas dependências através de um gerenciador de pacotes como o apt. Yum Ou pacman. Em OSX, Homebrew é uma escolha popular que fornece a funcionalidade similar. Consulte a documentação de instalação completa do Zipline para obter mais informações sobre a aquisição de dependências binárias para a sua plataforma específica. Outra maneira de instalar o Zipline é através do gerenciador de pacotes conda, que vem como parte do Anaconda ou pode ser instalado via pip install conda. Uma vez configurado, você pode instalar o Zipline do nosso canal Quantopian: Plataformas atualmente suportadas incluem: Quickstart ContributionsRelease Notes 8 de setembro de 2017 Aprimoramentos Adiciona tabelas de checkpoint de preenchimento avançado para o carregador do núcleo do blaze. Isso permite que o carregador para enviar mais eficientemente preencher os dados, limitando a data mais baixa deve procurar para quando consultar dados. Os postos de controle devem ter novos deltas aplicados (1276). Atualizado VagrantFile para incluir todos os requisitos dev e usar uma imagem mais recente (1310). Permitir que as correlações e regressões sejam calculadas entre dois fatores 2D fazendo cálculos ativos-sábios (1307). Filtros foram feitos windowsafe por padrão. Agora eles podem ser passados ​​como argumentos para outros Filtros, Fatores e Classificadores (1338). Adicionado um parâmetro groupby opcional para classificar (). topo(). E inferior (). (1349). Adicionado novos filtros de pipeline, All and Any. Que recebe outro filtro e retorna True se um ativo produziu um True para todos os dias nos dias anteriores do windowlength (1358). Adicionado novo filtro de pipeline AtLeastN. Que recebe outro filtro e um int N e retorna True se um ativo produziu um True em N ou mais dias nos dias windowlength anteriores (1367). Use biblioteca externa empírico para cálculos de risco. Empírico unifica cálculos métricos de risco entre carteira e tirolesa. O Empyrical adiciona opções personalizadas de anualização para devoluções de freqüências personalizadas. (855) Adicionar fator Aroon. (1258) Adicionar fator de oscilador estocástico rápido. (1255) Adicione um Dockerfile. (1254) Novo calendário comercial que suporta sessões que abrangem toda a noite, por ex. 24 horas 6:01 PM-6:00PM sessões para negociação de futuros. Zipline. utils. tradingcalendar agora está desativado. (1138) (1312) Permitir cortar uma única coluna de um FactorFilterClassifier. (1267) Fornecer o fator Ichimoku Cloud (1263) Permitir parâmetros padrão nos termos Pipeline. (1263) Fornecer taxa de fator de porcentagem de mudança. (1324) Fornecer fator de média móvel ponderada linear. (1325) Adicionar NotNullFilter. (1345) Permitir que as alterações de capital sejam definidas por um valor-alvo. (1337) Adicione o fator TrueRange. (1348) Adiciona pesquisas ponto a ponto em assets. db. (1361) Faça cantrade ciente da troca de assets8217s. (1346) Adicione o método downsample a todos os termos computáveis. (1394) Adicionar QuantopianUSFuturesCalendar. (1414) Ative a publicação de versões antigas do assets. db. (1430) Habilitar a função de programação para o calendário de negociação de futuros. (1442) Proibir regressões de comprimento 1. (1466) Experimental Adicionar suporte para janelas de histórico Futureled e Equity, e ativar outro acesso de dados do Future via portal de dados. (1435) (1432) Correções de Bugs Mudanças AverageDollarFator incorporado de volume para tratar valores de fechamento ou volume ausentes como 0. Anteriormente, os NaNs foram simplesmente descartados antes da média, dando aos demais valores muito peso (1309). Remova a taxa livre de risco do cálculo da relação de sharpe. A relação é agora a média dos retornos ajustados ao risco sobre a volatilidade dos retornos ajustados. (853) A razão Sortino retornará o cálculo em vez de np. nan quando os retornos exigidos forem iguais a zero. A relação agora retorna a média dos retornos ajustados ao risco sobre o risco de queda. Corrigido mislabeled API convertendo mar para downsiderisk. (747) O risco de desvantagem agora retorna a raiz quadrada da média dos quadrados de diferença negativa. (747) Rácio de informação actualizado para retorno da média dos retornos ajustados ao risco sobre o desvio padrão dos retornos ajustados ao risco. (1322) As relações alfa e sharpe são agora anualizadas. (1322) Fixar unidades durante a leitura e escrita do atributo firsttradingday da barra diária. (1245) Os módulos de despacho opcionais, quando em falta, deixam de causar um NameError. (1246) Trate o argumento de função de programação como uma regra de tempo quando uma regra de tempo, mas nenhuma regra de data for fornecida. (1221) Proteja contra condições de fronteira no início e no final do dia de negociação na função de programação. (1226) Aplique ajustes ao dia anterior ao usar o histórico com uma frequência de 1d. (1256) Falha rápida em colunas de pipeline inválidas, em vez de tentar acessar a coluna inexistente. (1280) Correção MédiaDollarVolume NaN manipulação. (1309) Melhorias de desempenho para o carregador de núcleos blaze. (1227) Permitir consultas de chama concorrentes. (1323) Impedir que os dados de minutos bcolz levando ausentes de fazer repetidas pesquisas desnecessárias. (1451) Cache futuras pesquisas de cadeia. (1455) Manutenção e Refactorings Removido restante mentions de addhistory. (1287) Documentação Adicionar dispositivo de teste que origina dados de precificação diária de fixtures de dados de preços minuciosos. (1243) Alterações de formato de dados BcolzDailyBarReader e BcolzDailyBarWriter usam instância do calendário de negociação, em vez de dias de negociação serializados para JSON. (1330) Muda o formato de assets. db para pesquisas de ponto a ponto de suporte. (1361) Alterar BcolzMinuteBarReader e BcolzMinuteBarWriter para suportar tamanhos de carrapatos variados. (1428) Release 1.0.1 Esta é uma versão de bug-fix menor de 1.0.0 e inclui um pequeno número de correções de bugs e melhorias de documentação. Aprimoramentos Adicionado suporte para modelos de comissão definidos pelo usuário. Consulte a classe zipline. financemissionmissionModel para obter mais detalhes sobre a implementação de um modelo de comissão. (1213) Adicionado suporte para colunas não-float para Blaze-backed Pipeline datasets (1201). Adicionado zipline. pipeline. slice. Slice. Um novo termo pipeline projetado para extrair uma única coluna de outro termo. As fatias podem ser criadas pela indexação em um termo, chaveado pelo recurso. (1267) Correções de Bugs Corrigido um bug em que os carregadores de Pipeline não foram inicializados corretamente pelo zipline. runalgorithm (). Isso também afetou as invocações de tirolesa correr a partir da CLI. Corrigido um bug que causou a falha da magia de célula IPython de zipline (533233fae43c7ff74abfb0044f046978817cb4e4). Corrigido um erro no modelo de comissão PerTrade, onde as comissões foram incorretamente aplicadas a cada preenchimento parcial de uma ordem, em vez da ordem em si, resultando em algoritmos sendo cobrados demais em comissões ao colocar grandes pedidos. O PerTrade agora aplica corretamente as comissões por ordem (1213). Os acessos de atributo em CustomFactors que definem múltiplas saídas agora retornarão corretamente uma fatia de saída quando a saída for também o nome de um método Factor (1214). Substituiu o uso deprecated de pandas. io. data com pandasdatareader (1218). Corrigido um problema em que arquivos. pyi stub para zipline. api foram excluídos acidentalmente da distribuição de origem PyPI. Os usuários Conda não devem ser afetados (1230). Documentação Adicionado um novo exemplo, zipline. examples. momentumpipeline. Que exerce a Pipeline API (1230). Destaques Zipline 1.0 Rewrite (1105) Temos reescrito um monte de Zipline e seus conceitos básicos, a fim de melhorar o desempenho runtime. Ao mesmo tempo, we8217ve introduziu várias novas APIs. Em um nível alto, versões anteriores de simulações Zipline puxado de um fluxo multiplexado de fontes de dados, que foram mescladas via heapq. Este fluxo foi alimentado para o loop de simulação principal, dirigindo o relógio para a frente. Essa forte dependência na leitura de todos os dados tornou difícil otimizar o desempenho da simulação, porque não havia nenhuma conexão entre a quantidade de dados que buscamos ea quantidade de dados realmente usados ​​pelo algoritmo. Agora, só buscamos dados quando o algoritmo precisa dele. Uma nova classe, DataPortal. Envia as solicitações de dados para várias fontes de dados e retorna os valores solicitados. Isso torna o tempo de execução de uma escala de simulação muito mais próximo da complexidade do algoritmo, em vez do número de recursos fornecidos pelas fontes de dados. Em vez de o fluxo de dados dirigir o relógio, agora as simulações iterar através de um conjunto pré-calculado de dia ou minutos timestamps. Os carimbos de data / hora são emitidos por MinuteSimulationClock e DailySimulationClock. E consumido pelo loop principal em transform (). We8217ve retirou as APIs de datasid (N) e de histórico, substituindo-as por vários métodos no objeto BarData: current (). história(). pode negociar(). E isstale (). As APIs antigas continuarão a funcionar por enquanto, mas emitirão avisos de depreciação. Agora você pode passar uma fonte de ajustes para o DataPortal. E aplicaremos ajustes nos dados de precificação ao olhar para trás nos dados. Os preços e volumes para execução e apresentados ao algoritmo em data. current são o valor do ativo negociado. Novos pontos de entrada (1173 e 1178) Para tornar mais fácil o uso da tirolesa, atualizamos os pontos de entrada para um backtest. As três formas suportadas de executar um backtest são agora: zipline. runalgo () zipline run zipline (IPython magic) Pacotes de dados (1173 e 1178) 1.0.0 introduz bundles de dados. Os bundles de dados são grupos de dados que devem ser pré-carregados e usados ​​para executar backtests mais tarde. Isso permite que os usuários não precisem especificar quais tickers eles estão interessados ​​em cada vez que executar um algoritmo. Isso também nos permite armazenar em cache os dados entre as execuções. Por padrão, o bundle de quantopian-quandl será usado que puxa dados de Quantopian8217s espelho do datasl WIKI quandl. Novos bundles podem ser registrados com zipline. data. bundles. register () como: Esta função deve recuperar os dados de que precisa e, em seguida, usar os gravadores que foram passados ​​para gravar esses dados no disco em um local que zipline pode encontrar mais tarde. Esses dados podem ser usados ​​em backtests passando o nome como o argumento - b --bundle para zipline executar ou como o argumento de bundle para zipline. runalgorithm (). Para obter mais informações, consulte Pacotes de dados para obter mais informações. String Support in Pipeline (1174) Adicionado suporte para dados de string em Pipeline. Zipline. pipeline. data. Column agora aceita objeto como um dtype, o que significa que os carregadores para essa coluna devem emitir iteradores com janelas sobre a nova classe experimental LabelArray. Vários novos métodos Classifier também foram adicionados para construir instâncias de filtro com base em operações de seqüência de caracteres. Os novos métodos são: elementof é definido para todos os classificadores. Os métodos restantes são somente definidos para classificadores string-dtype. Melhorias As classes de carregamento de dados têm interfaces mais consistentes. Isso inclui os escritores de barra de equidade, escritor de ajuste e escritor db de ativos. A nova interface é que o recurso a ser escrito para é passado no tempo de construção e os dados para escrever é fornecido mais tarde para o método de gravação como dataframes ou algum iterador de dataframes. Este modelo nos permite passar esses objetos escritor em torno como um recurso para outras classes e funções para consumir (1109 e 1149). Adicionado mascaramento para zipline. pipeline. CustomFactor. Fatores personalizados agora podem ser passados ​​um Filtro na instanciação. Isso indica que o fator só calcula os estoques para os quais o filtro retorna True, ao invés de sempre computar sobre todo o universo de ações. (1095) Adicionado zipline. utils. cache. ExpiringCache. Um cache que envolve entradas em um arquivo zipline. utils. cache. CachedObject. Que gerencia a expiração das entradas com base no dt fornecido ao método get. (1130) Implementado zipline. pipeline. factors. RecarrayField. Um novo termo de pipeline projetado para ser o tipo de saída de um CustomFactor com múltiplas saídas. (1119) Adicionado parâmetro de saídas opcional para zipline. pipeline. CustomFactor. Fatores personalizados são agora capazes de computar e retornar múltiplas saídas, cada uma das quais são elas mesmas um fator. (1119) Adicionado suporte para colunas de pipeline string-dtype. Carregadores para essas colunas devem produzir instâncias de zipline. lib. labelarray. LabelArray quando percorridos. Latest () em colunas de seqüência de caracteres produz um string-dtype zipline. pipeline. Classifier. (1174) Adicionado vários métodos para converter classificadores em filtros. Os novos métodos são: - elementof () - startswith () - endswith () - hassubstring () - matches () elementof é definido para todos os classificadores. Os métodos restantes são apenas definidos para strings. (1174) Fetcher foi movido do código interno de Quantopian para Zipline (1105). Características experimentais As características experimentais estão sujeitas a alterações. Foi adicionada uma nova classe zipline. lib. labelarray. LabelArray para representar e computar eficientemente os dados de string com numpy. Esta classe é conceitualmente semelhante ao pandas. Categorical. Na medida em que representa matrizes de seqüência de caracteres como matrizes de índices em uma matriz (menor) de valores de seqüência de caracteres exclusivos. (1174) Correções de Erros Destaques Adicionado um novo conjunto de dados EarningsCalendar para uso na Pipeline API. (905). AssetFinder (830 e 817). Suporte aprimorado para dtypes não flutuantes no Pipeline. Mais notavelmente, agora apoiamos datetime64 e int64 dtypes para Factor. E BoundColumn. latest agora retorna um objeto Filter adequado quando a coluna é de dtype bool. Zipline agora suporta numpy 1,10, pandas 0,17 e scipy 0,16 (969). As transformações em lote foram reprovadas e serão removidas em uma versão futura. Recomenda-se usar o histórico como uma alternativa. Aprimoramentos Adiciona um caminho para que os usuários forneçam um gerenciador de contexto para usar ao executar as funções agendadas (incluindo handledata). Esse gerenciador de contexto passará o objeto BarData para a barra e será usado para a duração de todas as funções programadas para serem executadas. Isso pode ser passado para TradingAlgorithm pelo argumento de palavra-chave createeventcontext (828). Adicionado suporte para instâncias zipline. pipeline. factors. Factor com datetime64ns dtypes. (905) Adicionado um novo conjunto de dados EarningsCalendar para uso na Pipeline API. Este conjunto de dados fornece uma interface abstrata para adicionar dados de anúncio de ganhos a um novo algoritmo. Uma implementação de referência baseada em pandas para este conjunto de dados pode ser encontrada em zipline. pipeline. loaders. earnings. E uma implementação baseada em chama experimental pode ser encontrada em zipline. pipeline. loaders. blaze. earnings. (905). Adicionado novos fatores embutidos, zipline. pipeline. factors. BusinessDaysUntilNextEarnings e zipline. pipeline. factors. BusinessDaysSincePreviousEarnings. Esses fatores usam o novo conjunto de dados EarningsCalendar. (905). Adicionado isnan (). Notnan () e isfinite () para zipline. pipeline. factors. Factor (861). Adicionado zipline. pipeline. factors. Returns. Um fator incorporado que calcula a alteração percentual no preço de fechamento ao longo do comprimento de janela dado. (884). Adicionado um novo fator incorporado: AverageDollarVolume. (927). Adicionado fatores ExponentialWeightedMovingAverage e ExponentialWeightedMovingStdDev. (910). Permitir classes DataSet para ser subclassed onde subclasses herdam todas as colunas do pai. Estas colunas serão sentinelas novas assim que você pode registrá-las um carregador feito sob encomenda (924). Adicionado coerce () para coagir entradas de um tipo para outro antes de passá-las para a função (948). Adicionado opcionalmente () para envolver outras funções do pré-processador para permitir explicitamente None (947). Adicionado ensuretimezone () para permitir que os argumentos de string sejam convertidos em objetos datetime. tzinfo. Isso também permite que os objetos tzinfo sejam passados ​​diretamente (947). Adicionado dois argumentos opcionais, dataquerytime e dataquerytz para BlazeLoader e BlazeEarningsCalendarLoader. Esses argumentos permitem que o usuário especifique algum tempo de corte para dados ao carregar a partir do recurso. Por exemplo, se eu quiser simular a execução da minha função beforetradingstart às 8:45 USEastern, então eu poderia passar datetime. time (8, 45) e USEastern para o carregador. Isso significa que os dados que são timestamped em ou após 8:45 não serão vistos naquele dia na simulação. Os dados serão disponibilizados no dia seguinte (947). BoundColumn. latest agora retorna um Filter para colunas de dtype bool (962). Adicionado suporte para instâncias de fator com int64 dtype. Coluna agora requer um missingvalue quando dtype é integral. (962) Agora também é possível especificar valores de valores perdidos personalizados para float. data hora. E bool Pipeline termos. (962) Adicionado auto-fechar apoio para acções. Quaisquer posições detidas em um patrimônio líquido que chegue ao seu autoclosedate serão liquidados por dinheiro de acordo com o último preço de venda de equity8217s. Além disso, quaisquer ordens em aberto para esse patrimônio serão canceladas. Ambos os futuros e ações são agora auto-fechado na manhã do seu autoclosedate. Imediatamente antes do início da vigência. (982) Características experimentais As características experimentais estão sujeitas a alterações. Adicionado suporte para subclasses de fatores parametrizados. Fatores podem especificar params como um atributo de nível de classe contendo uma tupla de nomes de parâmetro. Esses valores são então aceitos pelo construtor e encaminhados por nome para a função de cálculo do factor8217s. Esta API é experimental e pode mudar em lançamentos futuros. Correções de bugs Corrige um problema que faria com que o cache do método dailyminutely alterasse o len de um objeto SIDData. Isso nos faria pensar que o objeto não estava vazio mesmo quando era (826). Corrige um erro levantado no cálculo do beta quando os dados de benchmark eram escassos. Em vez numpy. nan é retornado (859). Corrigido um problema de decodificação de objetos sentinel () (872). Corrigido avisos espúrios no primeiro download de dados do tesouro (: questão 922). Corrigido as mensagens de erro para setcommission () e setslippage () quando usado fora da função initialize. Esses erros chamados as funções substituem em vez de conjunto. Isso também renomeou os tipos de exceção criados de OverrideSlippagePostInit e OverrideCommissionPostInit para SetSlippagePostInit e SetCommissionPostInit (923). Corrigido um problema no CLI que faria com que os recursos fossem adicionados duas vezes. Isso mapearia o mesmo símbolo para dois sids diferentes (942). Corrigido um problema em que o PerformancePeriod relatou incorretamente o valor totalpositions ao criar uma Conta (950). Corrigido problemas em torno de KeyErrors provenientes de histórico e BarData em 32 bits python, onde os recursos não comparar corretamente com int64s (959). Corrigido um bug em que os operadores booleanos não foram devidamente implementados no Filter (991). Instalação de zipline não mais downgrades numpy para 1.9.2 silenciosamente e incondicionalmente (969). Desempenho Acelera lookupsymbol () adicionando uma extensão, AssetFinderCachedEquities. Que carrega equities em dicionários e, em seguida, direciona lookupsymbol () para esses dicionários para encontrar ações correspondentes (830). Melhor desempenho de lookupsymbol () executando consultas em lote. (817). Manutenção e refatoração Os bancos de dados de ativos agora contêm informações de versão para garantir compatibilidade com a versão atual do Zipline (815). Versão dos pedidos de upgrade para 2.9.1 (2ee40db) Atualizar a versão do logbook para 0.12.5 (11465d9). Atualize a versão do Cython para 0.23.4 (5f49fa2). Torna os requisitos de instalação do zipline mais flexíveis (825). Use o versioneer para gerenciar a versão do projeto ea versão do setup. py (829). Cobertas fixas integração em travis construir (840). Corrigido conda build, que agora usa git source como sua fonte e lê os requisitos usando o setup. py, em vez de copiá-los e deixá-los ficar fora de sincronia (937). Requer setuptools gt 18.0 (951). Documentação Documentar o processo de liberação para desenvolvedores (835). Documentos de referência adicionados para a API do Pipeline. (864). Documentos de referência adicionados para APIs de metadados de recursos. (864). A documentação gerada agora inclui links para código-fonte para muitas classes e funções. (864). Adicionada documentação específica da plataforma descrevendo como encontrar dependências binárias. (883). Diversos Adicionado um método showgraph () para renderizar um Pipeline como uma imagem (836). Adiciona subtest () decorador para criar subtestes sem noseparameterized. expand () que incha a saída de teste (833). Limita o relatório do temporizador na saída de teste a 15 testes mais longos (838). Os downloads de tesouraria e de benchmark agora aguardarão até uma hora para serem baixados novamente se os dados retornados de uma fonte remota não se estenderem à data esperada. (841). Adicionada uma ferramenta para fazer o downgrade do db de ativos para versões anteriores (941). Release 0.8.3 Destaques Novo sistema de documentação com um novo site na zipline. io Principais melhorias de desempenho. História dinâmica. Novo método definido pelo usuário: beforetradingstart. Nova função api: schedulefunction (). Nova função api: getenvironment (). Nova função api: setmaxleverage (). Nova função api: setdonotorderlist (). Pipeline API. Suporte para futuros de negociação. Aprimoramentos Objeto de conta: Adiciona um objeto de conta ao contexto para rastrear informações sobre a conta de negociação. Exemplo: Retorna o valor de caixa liquidado armazenado no objeto de conta. Este valor é atualizado conforme o algoritmo é executado (396). HistoryContainer agora pode crescer dinamicamente. As chamadas para o histórico () agora poderão aumentar o tamanho ou alterar a forma do contêiner do histórico para poder atender a chamada. Addhistory () agora atua como uma dica preformance para pré-alocar espaço suficiente no recipiente. Esta alteração é compatível com a história. Todos os algoritmos existentes devem continuar a funcionar como pretendido (412). Simples transforma portado de quantopian e usa história. SIDData agora tem métodos para: Esses métodos, exceto para retorna. Aceitar um número de dias. Se você estiver executando com dados de minutos, então isso irá calcular o número de minutos naqueles dias, a contagem para fechamentos precoce eo tempo atual e aplicar a transformação sobre o conjunto de minutos. Retorna não tem parâmetros e retornará os retornos diários do ativo dado. Exemplo: Novos campos no Período de desempenho. Período de desempenho tem novos campos acessíveis em valor de retorno de todict. - alavancagem bruta - alavancagem líquida - exposição curta - exposição longa - contagem de shorts - contagem de longos (464). Permitir orderpercent () para trabalhar com vários valores de mercado (por Jeremiah Lowin). Atualmente, orderpercent () e ordertargetpercent () funcionam como uma porcentagem de self. portfolio. portfoliovalue. Este PR permite que eles funcionem como porcentagens de outros MVs importantes. Também adiciona context. getmarketvalue (). Que permite esta funcionalidade. Por exemplo: opção de linha de comando para para imprimir algo para stdout (por Andrea D8217Amore) (545). Nova função definida pelo usuário beforetradingstart. Essa função pode ser substituída pelo usuário para ser chamado uma vez antes do mercado abrir todos os dias (389). Nova função api schedulefunction (). Esta função permite ao usuário programar uma função a ser chamada com base em regras mais complicadas sobre a data e hora. Por exemplo, chamar a função 15 minutos antes do fechamento do mercado respeitando fechamento precoce (411). Nova função api setdonotorderlist (). Esta função aceita uma lista de ativos e adiciona um guarda de negociação que impede que o algoritmo de negociação deles. Adiciona um ponto de lista na lista de tempo de ETFs alavancados que as pessoas podem querer marcar como 8216do não trade8217 (478). Adiciona uma classe para representar títulos. Order () e outras funções de ordem agora exigem uma instância de Security em vez de um int ou string (520). Generalize a classe Security para Asset. Isso está em preparação para adicionar suporte para outros tipos de ativos (535). Nova função api getenvironment (). Essa função retorna, por padrão, a string de tirolesa. Isso é usado para que os algoritmos possam ter um comportamento diferente em Quantopian e zipline local (384). Estende getenvironment () para expor mais do ambiente ao algoritmo. A função agora aceita um argumento que é o campo para retornar. Por padrão, esta é a plataforma que retorna o valor antigo da tirolesa, mas os seguintes novos campos podem ser solicitados: arena. É esta negociação ao vivo ou backtesting datafrequency. Este modo minuto ou modo diário é iniciado. Data de início da simulação. fim. Data de término da simulação. Base de capital O capital inicial para a simulação. plataforma. A plataforma que o algoritmo está em execução. . Um dicionário contendo todos esses campos. Nova função api setmaxleveraged (). Este método adiciona um guarda de negociação que impede que seu algoritmo se aproveite demais (552). Características experimentais As características experimentais estão sujeitas a alterações. Adiciona nova API de pipeline. A API de pipeline é uma API declarativa de alto nível para representar cálculos de janela de saída em grandes conjuntos de dados (630). Adiciona suporte para negociação de futuros (637). Adiciona o carregador do Pipeline para expressões de chama. Isso permite que os usuários puxem dados de qualquer formato blaze entende e usá-lo na Pipeline API. (775). Correções de bugs Corrigir um bug em que os retornos relatados podem acentuar bruscamente por períodos de tempo aleatórios (378). Corrigir um bug que impediu que os depuradores resolverem o arquivo de algoritmo (431). Avançar adequadamente os argumentos para a função de inicialização definida pelo usuário (687). Corrigir um bug que faria com que os dados do tesouro fossem descarregados novamente cada backtest entre a meia-noite EST e o momento em que os dados do tesouro estavam disponíveis (793). Corrigir um bug que faria com que a função de análise definida pelo usuário não fosse chamada se ela fosse passada como um argumento de palavra-chave para o TradingAlgorithm (819). Desempenho Melhorias de desempenho importantes para a história (por Dale Jung) (488). Manutenção e refatoração Remova o código de transformação simples. Estes estão disponíveis como métodos de SIDData (550). Destaques Interface de linha de comando para executar algoritmos diretamente. IPiTon Magic zipline que executa o algoritmo definido em uma célula de notebook IPython. Métodos de API para a construção de salvaguardas contra ordens fugitivas e posições curtas indesejadas. Nova função history () para obter um DataFrame em movimento de dados de mercado anteriores (substitui BatchTransform). Um novo tutorial para iniciantes. Melhorias CLI: Adiciona uma magia CLI e IPython para zipline. Exemplo: Agarra os dados do yahoo finance, executa o arquivo dualmovingavg. py (e procura dualmovingavganalyze. py que, se encontrado, será executado após o algoritmo ter sido executado) e emite o perf DataFrame para dma. pickle (325) . IPython comando mágico (na parte superior de uma célula do notebook IPython). Exemplo: Faz o mesmo que acima, exceto que em vez de executar o arquivo procura o algoritmo na célula e em vez de emitir o perf df para um arquivo, cria uma variável no namespace chamado perf (325). Adiciona Controles de Negociação à API do algoritmo. As seguintes funções estão agora disponíveis em TradingAlgorithm e para scripts de algo: setmaxordersize (self, sidNone, maxsharesNone, maxnotionalNone) Definir um limite na magnitude absoluta, em ações ou valor total do dólar, de qualquer ordem individual colocada por este algoritmo para um dado sid . Se sid é None, então a regra é aplicada a qualquer ordem colocada pelo algoritmo. Exemplo: setmaxpositionsize (self, sidNone, maxsharesNone, maxnotionalNone) - Defina um limite na magnitude absoluta, seja em ações ou valor em dólar, de qualquer posição mantida pelo algoritmo para um dado sid. Se sid é None, então a regra é aplicada a qualquer posição mantida pelo algoritmo. Exemplo: setlongonly (self) Define uma regra especificando que o algoritmo não pode manter posições curtas. Exemplo: Adiciona um método de classe allapimethods no TradingAlgorithm que retorna uma lista de todos os métodos da API TradingAlgorithm (333). Funcionalidade record () expandida para nomeação dinâmica. A função record () pode agora tomar args posicionais antes dos kwargs. Todo o uso e funcionalidade originais é o mesmo, mas agora esses usos extras funcionarão: Os requisitos são simplesmente que os argumentos portais ocorrem apenas antes dos kwargs (355). History () foi portado de Quantopian para Zipline e fornece janela móvel de dados de mercado. History () substitui BatchTransform. É mais rápido, funciona para dados de nível de minuto e tem uma interface superior. Para usá-lo, chamar addhistory () dentro de initialize () e, em seguida, receber um pandas DataFrame chamando history () de dentro handledata (). Confira o tutorial e um exemplo. (345 e 357). History () agora suporta comprimentos de janela de 1m (345). Correções de bugs Fixar o alinhamento dos dias de negociação e abrir e fechar no ambiente de negociação (331). RollingPanel ao adicionar campos novos (349). Manutenção e Refatoração de Desempenho Fontes de dados HDF5 e CSV não documentadas e não testadas (267). Refractor simparams (352). Refatoração da história (340). As dependências a seguir foram atualizadas (a zipline pode funcionar com outras versões também): Destaca as correções principais para os cálculos de risco, consulte a seção Correções de Bug. Port of history (), consulte a seção Enhancements Início do suporte para o algoritmo de Quantopian script-sintaxe, consulte a seção ENH. Conda pacote gerente suporte, consulte Build seção. Melhorias Sempre processar novas encomendas, ou seja, em barras onde handledata isn8217t chamado, mas há 8216clock8217 dados, e. Um benchmark consistente, ordens de processo. As posições vazias agora são filtradas do contêiner do portfólio. Para ajudar a evitar que algoritmos operem em posições que não estão no universo existente de ações. Anteriormente, iterando sobre posições iria retornar posições para ações que tinham zero partes detidas. (Onde uma verificação explícita no algoritmo código para pos. amount 0 poderia impedir de usar uma posição inexistente). Adicionar calendário de negociação para BMFampBovespa. Adicione início de suporte de script de algo. Inicia no caminho de paridade com a sintaxe do script em Quantopian8217s IDE no quantopian Exemplo: Adicionar fontes HDF5 e CSV. Limitar handledata às vezes com dados de mercado. Para evitar casos em que os tipos de dados personalizados tinham marcas de tempo não alinhadas, apenas ligue para handledata quando os dados de mercado passarem. Dados personalizados que são fornecidos antes de dados do mercado ainda atualizarão a barra de dados. Mas o tratamento desses dados só será feito quando houver dados de mercado acionáveis. Compensação de comissão método PerShare para permitir um custo mínimo por comércio. Adicionar função de api de símbolo Um recurso de pesquisa de símbolo () foi adicionado ao Quantopian. Ao adicionar a mesma função de API para tirolesa, podemos fazer copiar um Zipline para Quantopian mais fácil. Adicionar fonte de comércio aleatório simulado. Adicionada uma nova fonte de dados que emite eventos com determinada freqüência especificada pelo usuário (minuto ou diariamente). Isso permite que os usuários backtest e depurar um algoritmo no modo minuto para fornecer um caminho mais limpo para Quantopian. Remova a dependência da referência para o calendário do dia de negociação. Em vez do índice benchmarks8217, o calendário de negociação é agora usado para preencher os dias de negociação do environment8217s. Remover o campo de extradação, uma vez que ao contrário da lista de benchmarks, o calendário de negociação pode gerar datas futuras, portanto, as datas para a negociação do dia atual não precisam ser anexadas. Motivações: A fonte para o calendário aberto e closeearly perto eo calendário do dia de negociação é agora o mesmo, o que deve ajudar a evitar potenciais problemas devido ao desalinhamento. Permite configurações onde o benchmark é fornecido como uma fonte de dados baseada em gerador para precisar fornecer uma segunda lista de benchmark apenas para preencher datas. Port history () método API de Quantopian. Opens the core of the history() function that was previously only available on the Quantopian platform. The history method is analoguous to the batchtransform functiondecorator, but with a hopefully more precise specification of the frequency and period of the previous bar data that is captured. Example usage: N. B. this version of history lacks the backfilling capability that allows the return a full DataFrame on the first bar. Bug Fixes Adjust benchmark events to match market hours (241 ). Previously benchmark events were emitted at 0:00 on the day the benchmark related to: in 8216minute8217 emission mode this meant that the benchmarks were emitted before any intra-day trades were processed. Ensure perf stats are generated for all days When running with minutely emissions the simulator would report to the user that it simulated 8216n - 18217 days (where n is the number of days specified in the simulation params). Now the correct number of trading days are reported as being simulated. Fix repr for cumulative risk metrics. The repr for RiskMetricsCumulative was referring to an older structure of the class, causing an exception when printed. Also, now prints the last values in the metrics DataFrame. Prevent minute emission from crashing at end of available data. The next day calculation was causing an error when a minute emission algorithm reached the end of available data. Instead of a generic exception when available data is reached, raise and catch a named exception so that the tradesimulation loop can skip over, since the next market close is not needed at the end. Fix pandas indexing in trading calendar. This could alternatively be filed under Performance. Index using loc instead of the inefficient index-ing of day, then time. Prevent crash in vwap transform due to non-existent member. The WrongDataForTransform was referencing a self. fields member, which did not exist. Add a self. fields member set to price and volume and use it to iterate over during the check. Fix max drawdown calculation. The input into max drawdown was incorrect, causing the bad results. i. e. the compoundedlogreturns were not values representative of the algorithms total return at a given time, though calculatemaxdrawdown was treating the values as if they were. Instead, the algorithmperiodreturns series is now used, which does provide the total return. Fix cost basis calculation. Cost basis calculation now takes direction of txn into account. Closing a long position or covering a short shouldn8217t affect the cost basis. Fix floating point error in order(). Where order amounts that were near an integer could accidentally be floored or ceilinged (depending on being postive or negative) to the wrong integer. por exemplo. an amount stored internally as -27.99999 was converted to -27 instead of -28. Update perf period state when positions are changed by splits. Otherwise, self. positionamounts will be out of sync with position. amount, etc. Fix misalignment of downside series calc when using exact dates. An oddity that was exposed while working on making the return series passed to the risk module more exact, the series comparison between the returns and mean returns was unbalanced, because the mean returns were not masked down to the downside data points however, in most, if not all cases this was papered over by the call to. valid() which was removed in this change set. Check that self. logger exists before using it. self. logger is initialized as None and there is no guarantee that users have set it, so check that it exists before trying to pass messages to it. Prevent out of sync market closes in performance tracker. In situations where the performance tracker has been reset or patched to handle state juggling with warming up live data, the marketclose member of the performance tracker could end up out of sync with the current algo time as determined by the performance tracker. The symptom was dividends never triggering, because the end of day checks would not match the current time. Fix by having the tradesimulation loop be responsible, in minuteminute mode, for advancing the market close and passing that value to the performance tracker, instead of having the market close advanced by the performance tracker as well. Fix numerous cumulative and period risk calculations. The calculations that are expected to change are: cumulative. beta cumulative. alpha cumulative. information cumulative. sharpe period. sortino How Risk Calculations Are Changing Risk Fixes for Both Period and Cumulative Use sample instead of population for standard deviation. Add a rounding factor, so that if the two values are close for a given dt, that they do not count as a downside value, which would throw off the denominator of the standard deviation of the downside diffs. Standard Deviation Type Across the board the standard deviation has been standardized to using a 8216sample8217 calculation, whereas before cumulative risk was mostly using 8216population8217. Using ddof1 with np. std calculates as if the values are a sample. Cumulative Risk Fixes Use the daily algorithm returns and benchmarks instead of annualized mean returns. Use sample instead of population with standard deviation. The volatility is an input to other calculations so this change affects Sharpe and Information ratio calculations. The benchmark returns input is changed from annualized benchmark returns to the annualized mean returns. The benchmark returns input is changed from annualized benchmark returns to the annualized mean returns. Period Risk Fixes Now uses the downside risk of the daily return vs. the mean algorithm returns for the minimum acceptable return instead of the treasury return. The above required adding the calculation of the mean algorithm returns for period risk. Also, uses algorithmperiodreturns and tresauryperiodreturn as the cumulative Sortino does, instead of using algorithm returns for both inputs into the Sortino calculation. Performance Removed aliasdt transform in favor of property on SIDData. Adding a copy of the Event8217s dt field as datetime via the aliasdt generator, so that the API was forgiving and allowed both datetime and dt on a SIDData object, was creating noticeable overhead, even on an noop algorithms. Instead of incurring the cost of copying the datetime value and assigning it to the Event object on every event that is passed through the system, add a property to SIDData which acts as an alias datetime to dt. Eventually support for datafoo. datetime may be removed, and could be considered deprecated. Remove the drop of 8216null return8217 from cumulative returns. The check of existence of the null return key, and the drop of said return on every single bar was adding unneeded CPU time when an algorithm was run with minute emissions. Instead, add the 0.0 return with an index of the trading day before the start date. The removal of the null return was mainly in place so that the period calculation was not crashing on a non-date index value with the index as a date, the period return can also approximate volatility (even though the that volatility has high noise-to-signal strength because it uses only two values as an input.) Maintenance and Refactorings Allow simparams to provide data frequency for the algorithm. In the case that datafrequency of the algorithm is None, allow the simparams to provide the datafrequency . Also, defer to the algorithms data frequency, if provided. Added support for building and releasing via conda For those who prefer building with conda. pydata. org to compiling locally with pip. The following should install Zipline on many systems.

No comments:

Post a Comment