Release Notes¶
Release 1.1.1¶
Destaques¶
Zipline agora tem amplo apoio para futuros, além de ações. Ele também está sendo testado e embalado para o Python 3.5.
Nós também vimos que as mudanças de quebra ocorrem com o Yahoo alterando seu ponto final da API, impedindo assim que os usuários baixem os dados de benchmark necessários para backtests. Desde essa mudança, nós trocamos o código de benchmarking relacionado ao Yahoo com referências ao Google Finance e removemos todo o código do Yahoo depreciado, incluindo o uso de pacotes personalizados do Yahoo.
Melhorias¶
Adiciona uma propriedade para BarData para saber sobre a sessão atual # 8217; s minutos (# 1713) Adiciona uma mensagem de erro melhor para símbolos de raiz inexistentes (# 1715 :) Adiciona StaticSids Pipeline Filter (# 1717) Permite zipline. data. data_portal. DataPortal. get_spot_value para aceitar vários recursos (# 1719) Adiciona ContinuousFuture para lookup_generic (# 1718) Adiciona CFE Adhoc Holidays para exchange_calendar_cfe (# 1698) Permite substituir o arredondamento de quantidade de ordem (# 1722) Faz um estilo de ajuste de futuro contínuo um argumento (# 1726) Adiciona suporte preliminar para modelos de deslizamento e comissão do Futures (# 1738) Corrige um erro no cálculo da base de custo e muda todas as menções de sid to asset (# 1757) Adicione modelos de deslizamento e comissão para futuros (# 1748) Use o Python 3.5 em nosso Dockerfile ( # 1806) Permite que as pipelines sejam executadas em pedaços (# 1811) Adiciona get_range a BenchmarkSource (# 1815) Adiciona suporte para classificadores de relabagem no Pipeline (# 1833)
Recursos experimentais¶
As características experimentais estão sujeitas a alterações.
Corrige um problema de divisão de ponto flutuante em zipline. data. minute_bars usando em vez disso divisão inteira (# 1683) Classifica dados em zipline. pipeline. loaders. blaze. core em asof_date para resolver conflitos de timestamp (# 1710) Trocado o Yahoo por Google Finance benchmark dados (# 1812) Contratos de futuros de ouro e prata apenas negociados durante certos meses (# 1779) Corrige o erro na inicialização do TradingCalendar quando usamos tzaware datetimes (# 1802) Corrige problemas de precisão nos preços futuros ao arredondamento (# 1788)
Atuação¶
Evite chamadas recursivas repetidas ao obter o preço fechado cheio de entrega (# 1735)
Manutenção e Refatoração¶
Adiciona recomendações de linter ao módulo de ajustes (# 1712) Limpa a nomenclatura e a lógica no resmplemento fechado (# 1728) Use o ciclo trimestral de março para vários futuros contínuos (# 1762) Use melhor representação para Objetos de transação (# 1746) Acumula objetos de propriedade para objetos # 1786) Remove o uso da razão de informação de empírico # # 1854
Adiciona pacotes Python 3.5 (# 1701) Troque argumentos conda-build, então não criamos pacotes em cada compilação CI (# 1813)
Documentação¶
Adiciona diretrizes de desenvolvimento de Zipline, para que as pessoas leiam sobre como contribuir com a tirolesa (# 1820) Mostre o intercâmbio conforme necessário para as ações (# 1731) Atualiza o caderno Tutorial do Zipline Beginner (# 1707) Inclui PipelineEngine, pipeline Term, Factors and other pipeline coisas para documentos (# 1826)
Diversos¶
Use dados de mercado csv com run_algorithm, então não tentamos baixar dados para testes (# 1793) Atualizações Dockerfile para usar o Python 3.5.
Versão 1.1.0¶
Esta versão destina-se a fornecer suporte de tirolesa para pandas 0.18, bem como várias correções de bugs, mudanças de API e muitas mudanças de desempenho.
Melhorias¶
Faz com que o bar dos minutos leia as exceções NoDataOnDate de captura se as datas não estiverem no calendário. Antes, o leitor de barra de minutos estava encaminhado para a frente, mas agora retorna nan para OHLC e 0 para V. (# 1488) Adiciona método truncado a BcolzMinuteBarWriter (# 1499) Bumps até pandas 0.18.1 e numpy 1.11.1 (# 1339 ) Adiciona uma estimativa de ganhos trimestre de carregador para Pipeline (# 1396) Cria um gerenciador de lista restrito que leva informações sobre sids restrito e armazena na memória após instanciação (# 1487) Adiciona uds last_available ao DataPortal (# 1528) Adiciona Filtro SpecificAssets (# 1530 ) Adiciona a capacidade de um algoritmo solicitar o contrato atual para uma cadeia futura (# 1529) Adiciona o campo da cadeia aos métodos atuais e de suporte no DataPortal e OrderedContracts (# 1538) Adiciona histórico para futuros contínuos (# 1539) Adiciona o histórico ajustado para o contínuo futuro (# 1548) Adiciona estilo de rolagem que leva em conta o volume de um contrato futuro, especificamente para futuros contínuos (# 1556) Adiciona uma mensagem de erro melhor ao chamar funções de API Zipline fora de uma simulação em execução (# 1593) Adiciona MACDSignal (), MovingAverageConvergenceDivergenceSignal () e AnnualizedVolatility () como fatores internos. (# 1588) Adiciona o lookup_symbol vetorizado (# 1627) Ajusta comparações de igualdade para classes SlippageModel (# 1657) Adiciona um fator para resultados de winsorized (# 1588) (# 1696)
Muda str para string_types para evitar erros ao digitar verificação unicode e não tipo str. (# 1315) Algoritmos padrão para o pacote quantopian-quandl quando nenhuma fonte de dados é especificada (# 1479) (# 1374) Captura todas as exceções de dados perdidos ao calcular os índices de dividendos (# 1507) Cria ajustes com base em recursos ordenados em vez de um conjunto. Antes, foram criados ajustes para estimativas baseadas em quais ativos passaram a cair em um conjunto, em vez de usar recursos ordenados (# 1547). Respeita solicitações de pipeline flames para quando os usuários pesquisam a coluna asof_date (# 1608). Os tempos de data devem ser convertidos em utc. DataFrames sendo retornados estavam criando timestamps US / Eastern fora dos ints, potencialmente alterando a data retornada para ser a data anterior (# 1635) Corrige as entradas padrão para o fator IchimokuKinkoHyo (# 1638)
Atuação¶
Remove as invocações do get_calendar ('NYSE') que reduz o tempo de importação de tirolesa e torna a CLI mais sensível e usa menos memória. (# 1471) Economiza até 75% das chamadas para minute_to_session_label (# 1492) Acelera a contagem do número de minutos durante a sessão contígua (# 1497) Remove / defere as chamadas (# 1471) Repara e libera os termos do pipeline quando não são mais necessários. para get_loc em grandes índices (# 1504) (# 1503) Substitui chamadas get_loc em calc_dividend_ratios com get_indexer (# 1510) Acelera amostragem de minuto a sessão (# 1549) Adiciona algumas otimizações micro em data. current (# 1561) Adiciona otimização para inicial espaço de trabalho para pipelines (# 1521) Mais economias de memória (# 1599)
Manutenção e Refatoração¶
Atualiza a lista ETF alavancada (# 747) (# 1434) Adiciona campos adicionais a __getitem__ para a classe Order (# 1483) Adiciona a classe base BarReader para leitores de minutos e sessão (# 1486) Remove o método future_chain API, para ser substituído por data. current_chain ( # 1502) Coloca a linha aérea de volta no mestre da chama (# 1505) Adiciona Tini e define o alcance da versão para numpy, pandas e scipy no Dockerfile (# 1514) Define set_do_not_order_list (# 1487) Usa Timedelta em vez de DateOffset (# 1487) Atualize e pinte mais requisitos de dev (# 1642)
Adiciona dependência binária em numpy para empírico Remove versões numpy / pandas antigas de Travis (# 1339) Atualiza o appveyor. yml para o novo numpy e os pandas (# 1339). Invaloriza para 0,13 (# 1339) precipitadas empíricas para 0.2.2.
Documentação¶
Caderno de exemplo atualizado para a mais recente magia celular de tirolesa Adiciona as direções ANACONDA_TOKEN (# 1589)
Diversos¶
Mudou o short-opt para - antes no ponto de entrada limpo de tirolesa. O novo argumento é - e. O antigo argumento, - b, estava em conflito com o "short-opt" (# 1625).
Versão 1.0.2¶
Melhorias¶
Adiciona tabelas de ponto de verificação de preenchimento direto para o carregador core core. Isso permite que o carregador envie de forma mais eficiente o preenchimento dos dados, limitando a data mais baixa que deve procurar ao consultar os dados. Os pontos de controle devem ter novos deltas aplicados (# 1276). VagrantFile atualizado para incluir todos os requisitos do desenvolvimento e usar uma imagem mais nova (# 1310). Permitir que as correlações e as regressões sejam computadas entre dois fatores 2D fazendo cálculos ativos-sábios (# 1307). Os filtros foram feitos window_safe por padrão. Agora eles podem ser transmitidos como argumentos para outros Filtros, Fatores e Classificadores (# 1338). Adicionado um parâmetro groupby opcional para classificar (), top () e bottom (). (# 1349). Adicionado novos filtros de pipeline, Tudo e Qualquer, que leva outro filtro e retorna True se um recurso produzido um Verdadeiro para todos os dias nos dias da janela anterior (# 1358). Adicionado o novo filtro de pipeline AtLeastN, que leva outro filtro e um int N e retorna True se um recurso produzisse um Verdadeiro em N ou mais dias nos dias de janela_delado anteriores (# 1367). Use a biblioteca externa de forma empírica para cálculos de risco. Empírico unifica cálculos métricos de risco entre pyfolio e tirolesa. Empyrical adiciona opções de anualização personalizadas para retornar as freqüências personalizadas. (# 855) Adicionar Fator Aroon. (# 1258) Adicione fator oscilador estocástico rápido. (# 1255) Adicione um Dockerfile. (# 1254) Novo calendário de negociação que suporta sessões que se estendem em meio-ano, p. 24 horas 6:01 PM-6:00PM sessões para negociação de futuros. O zipline. utils. tradingcalendar está agora obsoleto. (# 1138) (# 1312) Permitir cortar uma única coluna de um fator / filtro / classificador. (# 1267) Fornecer Fator de nuvem Ichimoku (# 1263) Permitir parâmetros padrão em termos de pipeline. (# 1263) Fornecer taxa de variação do fator de porcentagem. (# 1324) Fornecer o fator médio móvel linear ponderado. (# 1325) Adicionar NotNullFilter. (# 1345) Permitir que as mudanças de capital sejam definidas por um valor de destino. (# 1337) Adicione o fator TrueRange. (# 1348) Adicione as pesquisas de ponto a tempo para assets. db. (# 1361) Faça o can_trade ciente da troca do recurso # 8217; s. (# 1346) Adicione o método downsample a todos os termos computaveis. (# 1394) Adicionar QuantopianUSFuturesCalendar. (# 1414) Permite a publicação de versões antigas do assets. db. (# 1430) Habilite schedule_function para o calendário de negociação Futures. (# 1442) Não permite regressões de comprimento 1. (# 1466)
Experimental¶
Adicione suporte para as janelas de histórico de futuro e de equidade embarcadas e habilite outros acessos futuros de dados via portal de dados. (# 1435) (# 1432)
Altera o factor incorporado de AverageDollarVolume para tratar os valores de falta ou de volume faltantes como 0. Anteriormente, os NaNs foram simplesmente descartados antes da média, dando muito peso aos valores restantes (# 1309). Remova a taxa livre de risco do cálculo da razão de sharpe. A proporção é agora a média dos retornos ajustados pelo risco em relação à violabilidade dos retornos ajustados. (# 853) A razão Sortino retornará o cálculo em vez de np. nan quando os retornos exigidos são iguais a zero. O índice agora retorna a média dos retornos ajustados ao risco em relação ao risco de queda. Corrigiu a API incorretamente identificada convertendo mar para downside_risk. (# 747) O risco de desvantagem agora retorna a raiz quadrada da média de quadrados de diferença de queda. (# 747) Rácio de informação atualizado para retornar a média dos retornos ajustados ao risco em relação ao desvio padrão dos retornos ajustados pelo risco. (# 1322) A relação Alpha e Sharpe agora é anualizada. (# 1322) Corrige unidades durante a leitura e escrita do atributo first_trading_day da barra diária. (# 1245) Os módulos de despacho opcionais, quando faltam, não causam mais um NameError. (# 1246) Trate o argumento schedule_function como uma regra de tempo quando uma regra de tempo, mas nenhuma regra de data é fornecida. (# 1221) Proteja contra condições de fronteira no início e dia final de negociação na função de cronograma. (# 1226) Aplica ajustes no dia anterior ao usar o histórico com uma frequência de 1d. (# 1256) Fail fast em colunas de pipeline inválidas, em vez de tentar acessar a coluna inexistente. (# 1280) Corrigir o tratamento com AverageDollarVolume NaN. (# 1309)
Atuação¶
Melhorias de desempenho para o carregador core principal. (# 1227) Permitir consultas de incandescência simultânea. (# 1323) Impedir que faltam os principais dados do minuto bcolz de fazer pesquisas repetidas e desnecessárias. (# 1451) Cache futuras pesquisas de cadeia. (# 1455)
Manutenção e Refatoração¶
Removido menções restantes de add_history. (# 1287)
Documentação¶
Adicione um conjunto de testes que forneça dados de preços diários a partir de fixações de dados de preços mínimos. (# 1243)
Alterações no formato de dados¶
BcolzDailyBarReader e BcolzDailyBarWriter usam a instância do calendário de negociação, em vez dos dias de negociação serializados para a JSON. (# 1330) Mude o formato de assets. db para suportar pesquisas de ponto a tempo. (# 1361) Mude o BcolzMinuteBarReader``and `` BcolzMinuteBarWriter para suportar diferentes tamanhos de tiques. (# 1428)
Versão 1.0.1¶
Esta é uma pequena versão de correção de erros de 1.0.0 e inclui um pequeno número de correções de bugs e melhorias na documentação.
Melhorias¶
Adicionado suporte para modelos de comissão definidos pelo usuário. Veja a lista de tirolesa da linha de tirolesa para obter mais detalhes sobre a implementação de um modelo de comissão. (# 1213) Adicionado suporte para colunas não flutuantes para conjuntos de dados do Pipeline com respaldo do Blaze (# 1201). Adicionado zipline. pipeline. slice. Slice, um novo termo de pipeline projetado para extrair uma única coluna de outro termo. As fatias podem ser criadas por indexação em um termo, com chave por ativos. (# 1267)
Corrigido um erro onde os carregadores de Pipeline não foram inicializados corretamente pelo zipline. run_algorithm (). Isso também afetou as invocações de tirolesa executadas a partir da CLI.
Corrigido um erro que causou a falha na magia das células 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 de na própria ordem, resultando em algoritmos sendo cobrados demais nas comissões ao colocar grandes pedidos.
O PerTrade agora aplica corretamente as comissões por pedido (# 1213).
Os acessos de atributo em CustomFactors que definem várias saídas agora retornam corretamente uma fatia de saída quando a saída também é o nome de um método de Fator (# 1214).
Substituiu o uso obsoleto de pandas. io. data com pandas_datareader (# 1218).
Corrigido um problema em que os arquivos. pyi stub para zipline. api foram excluídos acidentalmente da distribuição da fonte PyPI. Os usuários do Conda não devem ser afetados (# 1230).
Documentação¶
Adicionado um novo exemplo, zipline. examples. momentum_pipeline, que exerce a Pipeline API (# 1230).
Versão 1.0.0¶
Destaques¶
Zipline 1.0 Reescreva (# 1105) ¶
Reescrevemos um monte de Zipline e seus conceitos básicos para melhorar o desempenho em tempo de execução. Ao mesmo tempo, introduzimos várias novas APIs.
Em um nível alto, versões anteriores de simulações Zipline extraídas de um fluxo multiplexado de fontes de dados, que foram mescladas via heapq. Este fluxo foi alimentado para o ciclo de simulação principal, fazendo com que o relógio avançasse. Esta forte dependência na leitura de todos os dados dificultou a otimização do desempenho da simulação porque não havia conexão entre a quantidade de dados que buscamos e a quantidade de dados efetivamente utilizados pelo algoritmo.
Agora, nós só buscamos dados quando o algoritmo precisar dele. Uma nova classe, DataPortal, envia 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, e não com o número de recursos fornecidos pelas fontes de dados.
Em vez do fluxo de dados que dirige o relógio, agora as simulações iteram através de um conjunto pré-calculado de timestamps de dia ou minuto. Os timestamps são emitidos por MinuteSimulationClock e DailySimulationClock e consumidos pelo loop principal em transform ().
Nós retiramos os dados [sid (N)] e as APIs do histórico, substituindo-os por vários métodos no objeto BarData: current (), history (), can_trade () e is_stale (). As antigas APIs continuarão a funcionar por enquanto, mas emitirão avisos de desaprovação.
Agora você pode passar uma fonte de ajustes para o DataPortal e aplicaremos os ajustes nos dados de preços 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 negociado do ativo.
Novos Pontos de Entrada (# 1173 e # 1178) ¶
Para facilitar o uso de tirolesa, atualizamos os pontos de entrada para um backtest. As três formas suportadas para executar um backtest são agora:
Pacotes de dados (# 1173 e # 1178) ¶
1.0.0 introduz pacotes de dados. Os pacotes 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 executam um algoritmo. Isso também nos permite armazenar em cache os dados entre execuções.
Por padrão, o pacote quantopian-quandl será usado, o que extrairá os dados do espelho de Quantopian & # 8217; do conjunto de dados do que é WIKI. Novos pacotes podem ser registrados com zipline. data. bundles. register () como:
Esta função deve recuperar os dados de que precisa e, em seguida, usar os escritores que foram passados para gravar esses dados no disco em uma localização que a tirolesa pode encontrar mais tarde.
Esses dados podem ser usados em backtests passando o nome como o argumento - b / --bundle para $ zipline executado ou como o argumento do bundle para zipline. run_algorithm ().
Para obter mais informações, consulte Pacotes de dados para obter mais informações.
String Support no Pipeline (# 1174) ¶
Adicionado suporte para dados de seqüência de caracteres no Pipeline. zipline. pipeline. data. Column agora aceita o 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 classificadores também foram adicionados para a construção de instâncias de filtro com base em operações de string. Os novos métodos são:
element_of () startswith () endswith () has_substring () coincide ()
element_of é definido para todos os classificadores. Os métodos restantes são definidos apenas para classificadores string-dtype.
Melhorias¶
As classes de carregamento de dados têm interfaces mais consistentes. Isso inclui os escritores de barras de equidade, escritor de ajuste e escritor db de ativos. A nova interface é que o recurso a ser escrito é passado no tempo de construção e os dados a serem escritos são fornecidos mais tarde ao método de gravação como dataframes ou algum iterador de quadros de dados. Este modelo nos permite passar esses objetos de escritor ao redor como um recurso para outras classes e funções para consumir (# 1109 e # 1149).
Adicionado mascaramento para zipline. pipeline. CustomFactor. Os fatores personalizados agora podem ser passados por um filtro após a instanciação. Isso diz o fator para calcular apenas sobre ações para as quais o filtro retorna True, em vez de sempre computar todo o universo de ações. (# 1095)
Adicionado zipline. utils. cache. ExpiringCache. Um cache que envolve entradas em um 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 várias saídas. (# 1119)
Adicionado parâmetro de saídas opcionais para zipline. pipeline. CustomFactor. Os fatores personalizados agora são capazes de computar e retornar saídas múltiplas, cada uma delas sendo um fator. (# 1119)
Suporte adicionado para colunas de pipeline string-dtype. Os carregadores para essas colunas devem produzir instâncias de zipline. lib. labelarray. LabelArray quando percorridas. O último () em colunas de cadeia produz um string-dtype zipline. pipeline. Classifier. (# 1174)
Adicionado vários métodos para converter Classificadores em Filtros.
Os novos métodos são: - element_of () - startswith () - endswith () - has_substring () - matches ()
element_of é definido para todos os classificadores. Os métodos restantes são definidos apenas para strings. (# 1174)
Fetcher foi movido do código interno de Quantopian para Zipline (# 1105).
Recursos experimentais¶
As características experimentais estão sujeitas a alterações.
Adicionado uma nova classe zipline. lib. labelarray. LabelArray para representação e computação eficiente em dados de string com numpy. Esta classe é conceitualmente semelhante a pandas. Categorical, na medida em que representa arrays de cadeias como matrizes de índices em uma matriz (menor) de valores de seqüência únicos. (# 1174)
Atuação¶
Manutenção e Refatoração¶
Documentação¶
Documentação atualizada para os métodos da API (# 1188). Processo de lançamento atualizado para mencionar que os documentos devem ser criados com o Python 3 (# 1188).
Diversos¶
Zipline agora fornece um arquivo stub para o módulo zipline. api. Este módulo normalmente é criado dinamicamente para que o arquivo stub forneça algumas informações estáticas para utilitários que podem consumi-lo, por exemplo PyCharm (# 1208).
Libere 0.9.0¶
Destaques¶
Adicionado classificadores e métodos de normalização para pipeline, juntamente com novos conjuntos de dados e fatores. Adicionado suporte para o Windows com integração contínua no AppVeyor.
Melhorias¶
Adicionado novos conjuntos de dados CashBuybackAuthorizations e ShareBuybackAuthorizations para uso na API Pipeline. Esses conjuntos de dados fornecem uma interface abstrata para adicionar dinheiro e compartilhar dados de autorizações de recompra, respectivamente, para um novo algoritmo. As implementações de referência baseadas em pandas para esses conjuntos de dados podem ser encontradas em zipline. pipeline. loaders. buyback_auth e as implementações experimentais baseadas em blaze podem ser encontradas em zipline. pipeline. loaders. blaze. buyback_auth. (# 1022). Adicionou novos conjuntos de dados DividendsByExDate, DividendsByPayDate e DividendsByAnounenseDate para uso na API Pipeline. Esses conjuntos de dados fornecem uma interface abstrata para adicionar dados de dividendos organizados por data ex, data de pagamento e data de anúncio, respectivamente, para um novo algoritmo. As implementações de referência baseadas em pandas para esses conjuntos de dados podem ser encontradas em zipline. pipeline. loaders. dividends e implementações experimentais baseadas em blaze podem ser encontradas em zipline. pipeline. loaders. blaze. dividends. (# 1093). Adicionado novos fatores internos, zipline. pipeline. factors. BusinessDaysSinceCashBuybackAuth e zipline. pipeline. factors. BusinessDaysSinceShareBuybackAuth. Esses fatores usam os novos conjuntos de dados CashBuybackAuthorizations e ShareBuybackAuthorizations, respectivamente. (# 1022). Adicionado novos fatores internos, zipline. pipeline. factors. BusinessDaysSinceDividendAnnouncement, zipline. pipeline. factors. BusinessDaysUntilNextExDate e zipline. pipeline. factors. BusinessDaysSincePreviousExDate. Esses fatores usam os novos conjuntos de dados DividendsByAnnouncementDate` e `DividendsByExDate, respectivamente. (# 1093). Implementado zipline. pipeline. Classifier, um novo termo de API do pipeline principal que representa as chaves de agrupamento. Os classificadores são usados principalmente passando-os como o parâmetro groupby para os métodos de normalização de fator. (# 1046) Métodos de normalização de fator adicionados: zipline. pipeline. Factor. demean () e zipline. pipeline. Factor. zscore (). (# 1046) Adicionado zipline. pipeline. Factor. quantiles (), um método para computar um Classificador de um Fator por partição em baldes de tamanho igual. Também adicionou ajudantes para tamanhos quantile comuns (zipline. pipeline. Factor. quartiles (), zipline. pipeline. Factor. quartiles () e zipline. pipeline. Factor. deciles ()) (# 1075).
Recursos experimentais¶
As características experimentais estão sujeitas a alterações.
Corrigido um erro onde a fusão de duas expressões numéricas falhou devido a muitas entradas. Isso causou a falha de um pipeline ao combinar mais de dez fatores ou filtros. (# 1072)
Atuação¶
Manutenção e Refatoração¶
Adicionado AppVeyor para integração contínua no Windows. Adicionado conda build of zipline e suas dependências para AppVeyor e Travis builds, que carregam seus resultados em anaconda com o & # 8220; ci & # 8221 ;. (# 981)
Documentação¶
Diversos¶
Adiciona ZiplineTestCase que fornece ganchos para consumir dispositivos elétricos de teste. As funcionalidades são coisas como: WithAssetFinder que fará o self. asset_finder disponível para o seu teste com alguns dados simulados (# 1042).
Versão 0.8.4¶
Destaques¶
Adicionado um novo conjunto de dados do EarningsCalendar para uso na API do Pipeline. (# 905). Speedup AssetFinder (# 830 e # 817). Melhor suporte para dtypes não flutuantes no Pipeline. Mais notavelmente, agora suportamos datty64 e int64 dtypes para Factor, e BoundColumn. latest agora retorna um objeto Filtro 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 obsoletas e serão removidas em uma versão futura. O uso do histórico é recomendado como alternativa.
Melhorias¶
Adiciona uma maneira para que os usuários forneçam um gerenciador de contexto para usar ao executar as funções programadas (incluindo handle_data). Este gerenciador de contexto passará o objeto BarData para a barra e será usado durante o período de todas as funções programadas para serem executadas. Isso pode ser passado para TradingAlgorithm pelo argumento da palavra-chave create_event_context (# 828). Adicionado suporte para zipline. pipeline. factors. Factor instâncias com datetime64 [ns] dtypes. (# 905) Adicionado um novo conjunto de dados do EarningsCalendar para uso na API do Pipeline. 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 experimental baseada em blaze pode ser encontrada em zipline. pipeline. loaders. blaze. earnings. (# 905). Adicionado novos fatores integrados, zipline. pipeline. factors. BusinessDaysUntilNextEarnings e zipline. pipeline. factors. BusinessDaysSincePreviousEarnings. Esses fatores usam o novo conjunto de dados do EarningsCalendar. (# 905). Adicionou métodos isnan (), notnan () e isfinite () para zipline. pipeline. factors. Factor (# 861). Adicionado zipline. pipeline. factors. Returns, um fator embutido que calcula a variação percentual em preço próximo sobre o determinado window_length. (# 884). Adicionado um novo fator interno: AverageDollarVolume. (# 927). Adicionado ExponentialWeightedMovingAverage e ExponentialWeightedMovingStdDev fatores. (# 910). Permitir que as classes DataSet sejam subclassificadas onde as subclasses herdam todas as colunas do pai. Essas colunas serão novas sentinelas para que você possa registrar um carregador personalizado (# 924). Adicionado coerce () para coagir entradas de um tipo para outro antes de passar para a função (# 948). Adicionado opcionalmente () para enrolar outras funções do préprocessador para permitir explicitamente None (# 947). Adicionado secure_timezone () para permitir que argumentos de cadeia sejam convertidos em objetos datetime. tzinfo. Isso também permite que os objetos tzinfo sejam passados diretamente (# 947). Adicionado dois argumentos opcionais, data_query_time e data_query_tz para BlazeLoader e BlazeEarningsCalendarLoader. Esses argumentos permitem que o usuário especifique algum tempo de corte para os dados ao serem carregados a partir do recurso. Por exemplo, se eu quiser simular a execução da minha função before_trading_start às 8:45 US / Eastern, então eu poderia passar no datetime. time (8, 45) e 'US / Eastern' 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 filtro para colunas de dtype bool (# 962). Suporte adicionado para instâncias de Factor com digite int64. A coluna agora requer um valor de falta quando dtype é integral. (# 962) Agora também é possível especificar valores de valor faltando personalizados para os termos flutuante, data-hora e bool Pipeline. (# 962) Adicionado suporte de auto-fechamento para ações. Qualquer posição ocupada em um capital próprio que chegue à sua data de auto_close será liquidada em dinheiro de acordo com o último preço de venda da equivalência patrimonial. Além disso, todas as ordens abertas para esse patrimônio serão canceladas. Ambos os futuros e as ações estão agora fechados automaticamente na manhã do seu auto_close_date, imediatamente antes de before_trading_start. (# 982)
Recursos experimentais¶
As características experimentais estão sujeitas a alterações.
Adicionado suporte para subclasses do Factor parametrizado. Os fatores podem especificar params como um atributo de nível de classe contendo uma tupla de nomes de parâmetros. Esses valores são aceitos pelo construtor e encaminhados pelo nome para a função de cálculo do fator & # 8217; s. Esta API é experimental e pode mudar em lançamentos futuros.
Corrige um problema que faria com que o cache do método diário / minucioso 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 de beta quando os dados de referência eram escassos. Em vez numpy. nan é retornado (# 859). Corrigido uma questão de decapagem sentinela () objetos (# 872). Corrigido avisos falsos no primeiro download de dados do Tesouro (: questão 922). Corrigido as mensagens de erro para set_commission () e set_slippage () quando usado fora da função inicializar. Esses erros chamaram as funções override_ * em vez de set_ *. Isso também renomeou os tipos de exceção criados de OverrideSlippagePostInit e OverrideCommissionPostInit para SetSlippagePostInit e SetCommissionPostInit (# 923). Corrigido um problema na 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 total_posts_value ao criar uma conta (# 950). Corrigido problemas em torno de KeyErrors provenientes do histórico e do BarData no python de 32 bits, onde os ativos não se compararam corretamente com int64s (# 959). Corrigido um erro onde os operadores booleanos não foram implementados corretamente no Filtro (# 991). A instalação da tirolesa não mais diminui numpy para 1.9.2 silenciosa e incondicionalmente (# 969).
Atuação¶
Acelera lookup_symbol () adicionando uma extensão, AssetFinderCachedEquities, que carrega ações em dicionários e dirige lookup_symbol () a esses dicionários para encontrar ações correspondentes (# 830). Melhor desempenho do lookup_symbol () ao executar consultas em lotes. (# 817).
Manutenção e Refatoração¶
Os bancos de dados de ativos agora contêm informações de versão para garantir a compatibilidade com a versão atual do Zipline (# 815). Versão de pedidos de atualização para 2.9.1 (2ee40db) Atualize a versão do logbook para 0.12.5 (11465d9). Atualize a versão Cython para 0.23.4 (5f49fa2).
Torna os requisitos de instalação de tirolesa mais flexíveis (# 825). Use o versioneer para gerenciar o projeto __version__ e a versão setup. py (# 829). Integração de macacões corrigidas na construção de travis (# 840). Corrigido conda build, que agora usa fonte git como fonte e lê os requisitos usando setup. py, em vez de copiá-los e deixá-los sair da sincronização (# 937). Exigir setuptools & gt; 18.0 (# 951).
Documentação¶
Documentar o processo de lançamento para desenvolvedores (# 835). Documentos de referência adicionados para a API do Pipeline. (# 864). Documentos de referência adicionados para APIs de metadados de ativos. (# 864). A documentação gerada agora inclui links para código-fonte para muitas classes e funções. (# 864). Adicionado documentação específica da plataforma descrevendo como encontrar dependências binárias. (# 883).
Diversos¶
Adicionado um método show_graph () para processar um Pipeline como uma imagem (# 836). Adiciona o decorador subtest () para criar subtestes sem nose_parameterized. expand () que bloqueia a saída de teste (# 833). Limite o relatório do temporizador na saída do teste para 15 testes mais longos (# 838). Os downloads de Tesouraria e de benchmark agora aguardam até uma hora para baixar novamente se os dados retornados de uma fonte remota não se estendem à data esperada. (# 841). Adicionou uma ferramenta para rebaixar os recursos db para versões anteriores (# 941).
Versão 0.8.3¶
Avançamos a versão para 0.8.3 para corrigir um problema de distribuição de origem com o pypi. Não há alterações de código nesta versão.
Versão 0.8.0¶
Destaques¶
Novo sistema de documentação com um novo site no zipline. io Principais aprimoramentos de desempenho. Histórico dinâmico. Novo método definido pelo usuário: before_trading_start. Nova função api: schedule_function (). Nova função api: get_environment (). Nova função api: set_max_lverage (). Nova função api: set_do_not_order_list (). Pipeline API. Suporte para futuros de negociação.
Melhorias¶
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 estabelecido que está armazenado no objeto da conta. Esse 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 de histórico para poder atender a chamada. add_history () agora atua como uma dica pré-formal para pré-alocar espaço suficiente no recipiente. This change is backwards compatible with history , all existing algorithms should continue to work as intended (#412).
Simple transforms ported from quantopian and use history. SIDData now has methods for:
These methods, except for returns , accept a number of days. If you are running with minute data, then this will calculate the number of minutes in those days, accounting for early closes and the current time and apply the transform over the set of minutes. returns takes no parameters and will return the daily returns of the given asset. Exemplo:
New fields in Performance Period. Performance Period has new fields accessible in return value of to_dict : - gross leverage - net leverage - short exposure - long exposure - shorts count - longs count (#464).
Allow order_percent() to work with various market values (by Jeremiah Lowin).
Currently, order_percent() and order_target_percent() both operate as a percentage of self. portfolio. portfolio_value . This PR lets them operate as percentages of other important MVs. Also adds context. get_market_value() , which enables this functionality. Por exemplo:
Command line option to for printing algo to stdout (by Andrea D’Amore) (#545).
New user defined function before_trading_start . This function can be overridden by the user to be called once before the market opens every day (#389).
New api function schedule_function() . This function allows the user to schedule a function to be called based on more complicated rules about the date and time. For example, call the function 15 minutes before market close respecting early closes (#411).
New api function set_do_not_order_list() . This function accepts a list of assets and adds a trading guard that prevents the algorithm from trading them. Adds a list point in time list of leveraged ETFs that people may want to mark as ‘do not trade’ (#478).
Adds a class for representing securities. order() and other order functions now require an instance of Security instead of an int or string (#520).
Generalize the Security class to Asset . This is in preperation of adding support for other asset types (#535).
New api function get_environment() . This function by default returns the string 'zipline' . This is used so that algorithms can have different behavior on Quantopian and local zipline (#384).
Extends get_environment() to expose more of the environment to the algorithm. The function now accepts an argument that is the field to return. By default, this is 'platform' which returns the old value of 'zipline' but the following new fields can be requested:
''arena' : Is this live trading or backtesting? 'data_frequency' : Is this minute mode or daily mode? 'start' : Simulation start date. 'end' : Simulation end date. 'capital_base' : The starting capital for the simulation. 'platform' : The platform that the algorithm is running on. '*' : A dictionary containing all of these fields.
New api function set_max_leveraged() . This method adds a trading guard that prevents your algorithm from over leveraging itself (#552).
Experimental Features¶
Experimental features are subject to change.
Adds new Pipeline API. The pipeline API is a high-level declarative API for representing trailing window computations on large datasets (#630). Adds support for futures trading (#637). Adds Pipeline loader for blaze expressions. This allows users to pull data from any format blaze understands and use it in the Pipeline API. (#775).
Fix a bug where the reported returns could sharply dip for random periods of time (#378). Fix a bug that prevented debuggers from resolving the algorithm file (#431). Properly forward arguments to user defined initialize function (#687). Fix a bug that would cause treasury data to be redownloaded every backtest between midnight EST and the time when the treasury data was available (#793). Fix a bug that would cause the user defined analyze function to not be called if it was passed as a keyword argument to TradingAlgorithm (#819).
Performance¶
Major performance enhancements to history (by Dale Jung) (#488).
Maintenance and Refactorings¶
Remove simple transform code. These are available as methods of SIDData (#550).
Documentation¶
Switched to sphinx for the documentation (#816).
Release 0.7.0¶
Highlights¶
Command line interface to run algorithms directly. IPython Magic %%zipline that runs algorithm defined in an IPython notebook cell. API methods for building safeguards against runaway ordering and undesired short positions. New history() function to get a moving DataFrame of past market data (replaces BatchTransform). A new beginner tutorial.
Enhancements¶
CLI: Adds a CLI and IPython magic for zipline. Exemplo:
Grabs the data from yahoo finance, runs the file dual_moving_avg. py (and looks for dual_moving_avg_analyze. py which, if found, will be executed after the algorithm has been run), and outputs the perf DataFrame to dma. pickle (#325).
IPython magic command (at the top of an IPython notebook cell). Exemplo:
Does the same as above except instead of executing the file looks for the algorithm in the cell and instead of outputting the perf df to a file, creates a variable in the namespace called perf (#325).
Adds Trading Controls to the algorithm API.
The following functions are now available on TradingAlgorithm and for algo scripts:
set_max_order_size(self, sid=None, max_shares=None, max_notional=None) Set a limit on the absolute magnitude, in shares and/or total dollar value, of any single order placed by this algorithm for a given sid. If sid is None, then the rule is applied to any order placed by the algorithm. Exemplo:
set_max_position_size(self, sid=None, max_shares=None, max_notional=None) - Set a limit on the absolute magnitude, in either shares or dollar value, of any position held by the algorithm for a given sid. If sid is None, then the rule is applied to any position held by the algorithm. Exemplo:
set_long_only(self) Set a rule specifying that the algorithm may not hold short positions. Exemplo:
Adds an all_api_methods classmethod on TradingAlgorithm that returns a list of all TradingAlgorithm API methods (#333).
Expanded record() functionality for dynamic naming. The record() function can now take positional args before the kwargs. All original usage and functionality is the same, but now these extra usages will work:
The requirements are simply that the poritional args occur only before the kwargs (#355).
history() has been ported from Quantopian to Zipline and provides moving window of market data. history() replaces BatchTransform. It is faster, works for minute level data and has a superior interface. To use it, call add_history() inside of initialize() and then receive a pandas DataFrame by calling history() from inside handle_data() . Check out the tutorial and an example. (#345 and #357).
history() now supports 1m window lengths (#345).
Fix alignment of trading days and open and closes in trading environment (#331). RollingPanel fix when adding/dropping new fields (#349).
Performance¶
Maintenance and Refactorings¶
Removed undocumented and untested HDF5 and CSV data sources (#267). Refactor sim_params (#352). Refactoring of history (#340).
The following dependencies have been updated (zipline might work with other versions too):
Contributors¶
The following people have contributed to this release, ordered by numbers of commit:
Release 0.6.1¶
Highlights¶
Major fixes to risk calculations, see Bug Fixes section. Port of history() function, see Enhancements section Start of support for Quantopian algorithm script-syntax, see ENH section. conda package manager support, see Build section.
Enhancements¶
Always process new orders i. e. on bars where handle_data isn’t called, but there is ‘clock’ data e. g. a consistent benchmark, process orders.
Empty positions are now filtered from the portfolio container. To help prevent algorithms from operating on positions that are not in the existing universe of stocks. Formerly, iterating over positions would return positions for stocks which had zero shares held. (Where an explicit check in algorithm code for pos. amount != 0 could prevent from using a non-existent position.)
Add trading calendar for BMF&Bovespa.
Add beginning of algo script support.
Starts on the path of parity with the script syntax in Quantopian’s IDE on quantopian Example:
Add HDF5 and CSV sources.
Limit handle_data to times with market data. To prevent cases where custom data types had unaligned timestamps, only call handle_data when market data passes through. Custom data that comes before market data will still update the data bar. But the handling of that data will only be done when there is actionable market data.
Extended commission PerShare method to allow a minimum cost per trade.
Add symbol api function A symbol() lookup feature was added to Quantopian. By adding the same API function to zipline we can make copy&pasting of a Zipline algo to Quantopian easier.
Add simulated random trade source. Added a new data source that emits events with certain user-specified frequency (minute or daily). This allows users to backtest and debug an algorithm in minute mode to provide a cleaner path towards Quantopian.
Remove dependency on benchmark for trading day calendar. Instead of the benchmarks’ index, the trading calendar is now used to populate the environment’s trading days. Remove extra_date field, since unlike the benchmarks list, the trading calendar can generate future dates, so dates for current day trading do not need to be appended. Motivations:
The source for the open and close/early close calendar and the trading day calendar is now the same, which should help prevent potential issues due to misalignment. Allows configurations where the benchmark is provided as a generator based data source to need to supply a second benchmark list just to populate dates.
Port history() API method from Quantopian. Opens the core of the history() function that was previously only available on the Quantopian platform.
The history method is analoguous to the batch_transform function/decorator, 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.
Adjust benchmark events to match market hours (#241). Previously benchmark events were emitted at 0:00 on the day the benchmark related to: in ‘minute’ 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 ‘n - 1’ 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 compounded_log_returns were not values representative of the algorithms total return at a given time, though calculate_max_drawdown was treating the values as if they were. Instead, the algorithm_period_returns 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 shouldn’t 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._position_amounts 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 market_close 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 minute/minute 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 ‘sample’ calculation, whereas before cumulative risk was mostly using ‘population’. Using ddof=1 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 algorithm_period_returns and tresaury_period_return as the cumulative Sortino does, instead of using algorithm returns for both inputs into the Sortino calculation.
Performance¶
Removed alias_dt transform in favor of property on SIDData. Adding a copy of the Event’s dt field as datetime via the alias_dt 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 data['foo'].datetime may be removed, and could be considered deprecated. Remove the drop of ‘null return’ 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 sim_params to provide data frequency for the algorithm. In the case that data_frequency of the algorithm is None, allow the sim_params to provide the data_frequency .
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/ to compiling locally with pip. The following should install Zipline on many systems.
Contributors¶
The following people have contributed to this release, ordered by numbers of commit:
Bollinger bands quantopian
Obter através da App Store Leia esta publicação em nosso aplicativo!
Usage of Bollinger bands.
I looked through several sources on Bollinger bands and I do not see clear recipes of their usage. Wikipedia says "The use of Bollinger Bands varies widely among traders. " QSE discussion seems also says "Just like everyone else that's been down this path, you'll have to prove this stuff to yourself. "
Question Would you be so kind to share with me your experience - how (and when) do you use them ? what are the outcomes? and what idea stands behind it ?
Let me say what I understand - if market is in horizontal trend, i. e. we can think of it as price = Const + noise. Then it is reasonable to expect that if in some moment price is quite big, then it it will return to mean - so we go short at big price and sell in future, when it returns to trend(=Const).
However if we have positive trend: price(t) = A*t+B + noise, it very much depends on how fast noise is changing, how big is A, and volatility of noise. Since if trend is go ups very quickly even if the price is far from trend and it will return to trend some time after at the moment of return it will be much high than it was before (because of trend), so if you go short - you will lose.
I have played around with those a bit and my results were mixed. Bollinger bands essentially show you the price relative to rolling window volatility.
One interpretation is that if the current price leaves the Bollinger bands, a trend or movement emerges (of course depending on your time frame as with all technical indicators) in that direction. The strategy would be to buy as soon as the upper band is crossed from below, and close the position as soon as the price crosses the moving average with the same length as the bands. Intuitively, trade when the price is farther away from the moving average than a multiple of standard deviation (larger multiple => less trades, possibly stronger moves). On multiple day frames (between 4 and 60, iirc), this did yield nice results on stocks (in mock portfolios), but I assume that is mostly due to backtesting bias. Nothing consistent or reliable that I found worthy of exploring given the pressure of actual work. Maybe in the future though.
Another interpretation could be to trade the other way: As the price leaves the band, it should soon re-enter it. However I could not come up with a tradingstrategy that even remotely made sense to me, so I didn't explore this.
The most likely use in practice I would assume to be somewhere in the area of a short - to midterm indicator for equity risk, but I would prefer true econometric methods to be honest.
John Bollinger, the developer of Bollinger Bands, provides descriptions of methods he suggests for using his bands on his website BBands. They can be found under Four Methods in the support area. Bollinger Bands are most effective when used with other indicators for confirmation, and are very powerful for mean reversion and for price breakouts. On the home page of BBands there is a free webinar with 22 rules for using the bands that provides a lot of guidance for usage.
Usage of Bollinger Bands as a volatility indicator is a strange practice. Because it's calculation is based on asset volatility instead returns volatility. So any great trend piece will be contain more wider Bollinger Bands channel, than simple flat fluffy piece, where deviation realy is there.
A different approach to the more usual algo approach here, Bollinger Bands are a measure of the volatility, differences between buyers and sellers. So as either buyers or sellers are bought/sold out the bollinger bands squeeze beyond the average as a precursor to a sharp trend movement. I use a Bollinger Band Squeeze to highlight an imminent price movement.
Forgive me, I work with charts more than algorithims and I am unable to suggest the calculations for this, perhaps it will start you on the way. Muito bem sucedida.
Bollinger bands quantopian
Obter através da App Store Leia esta publicação em nosso aplicativo!
Usage of Bollinger bands.
I looked through several sources on Bollinger bands and I do not see clear recipes of their usage. Wikipedia says "The use of Bollinger Bands varies widely among traders. " QSE discussion seems also says "Just like everyone else that's been down this path, you'll have to prove this stuff to yourself. "
Question Would you be so kind to share with me your experience - how (and when) do you use them ? what are the outcomes? and what idea stands behind it ?
Let me say what I understand - if market is in horizontal trend, i. e. we can think of it as price = Const + noise. Then it is reasonable to expect that if in some moment price is quite big, then it it will return to mean - so we go short at big price and sell in future, when it returns to trend(=Const).
However if we have positive trend: price(t) = A*t+B + noise, it very much depends on how fast noise is changing, how big is A, and volatility of noise. Since if trend is go ups very quickly even if the price is far from trend and it will return to trend some time after at the moment of return it will be much high than it was before (because of trend), so if you go short - you will lose.
I have played around with those a bit and my results were mixed. Bollinger bands essentially show you the price relative to rolling window volatility.
One interpretation is that if the current price leaves the Bollinger bands, a trend or movement emerges (of course depending on your time frame as with all technical indicators) in that direction. The strategy would be to buy as soon as the upper band is crossed from below, and close the position as soon as the price crosses the moving average with the same length as the bands. Intuitively, trade when the price is farther away from the moving average than a multiple of standard deviation (larger multiple => less trades, possibly stronger moves). On multiple day frames (between 4 and 60, iirc), this did yield nice results on stocks (in mock portfolios), but I assume that is mostly due to backtesting bias. Nothing consistent or reliable that I found worthy of exploring given the pressure of actual work. Maybe in the future though.
Another interpretation could be to trade the other way: As the price leaves the band, it should soon re-enter it. However I could not come up with a tradingstrategy that even remotely made sense to me, so I didn't explore this.
The most likely use in practice I would assume to be somewhere in the area of a short - to midterm indicator for equity risk, but I would prefer true econometric methods to be honest.
John Bollinger, the developer of Bollinger Bands, provides descriptions of methods he suggests for using his bands on his website BBands. They can be found under Four Methods in the support area. Bollinger Bands are most effective when used with other indicators for confirmation, and are very powerful for mean reversion and for price breakouts. On the home page of BBands there is a free webinar with 22 rules for using the bands that provides a lot of guidance for usage.
Usage of Bollinger Bands as a volatility indicator is a strange practice. Because it's calculation is based on asset volatility instead returns volatility. So any great trend piece will be contain more wider Bollinger Bands channel, than simple flat fluffy piece, where deviation realy is there.
A different approach to the more usual algo approach here, Bollinger Bands are a measure of the volatility, differences between buyers and sellers. So as either buyers or sellers are bought/sold out the bollinger bands squeeze beyond the average as a precursor to a sharp trend movement. I use a Bollinger Band Squeeze to highlight an imminent price movement.
Forgive me, I work with charts more than algorithims and I am unable to suggest the calculations for this, perhaps it will start you on the way. Muito bem sucedida.
Analytics for bollinger band source code Add to watchlist.
Best of bollinger band source code at KeyOptimize (Out of 450 Thousand in result | Last check 01 December 2018 )
Quantitative trading for the rest of us.. How does it work?. In-browser Python IDE. Quickly see your backtest results.. Quantopian is a platform for you to build and test trading algorithms. You don’t have to be a professional quant to get started.. W.
MetaTrader 5 trading platform is a free Forex and stock trading tool.
Análise Quant, grátis, hedge funds, HFT, forex, análise quantitativa, dica de estoque.
Get Satisfaction is the leading customer engagement platform that helps companies build better relationships with their customers and prospects, through the best online customer community.
Auto trading can give you a serious advantage in FX. Join the cTDN community today to download, develop and collaborate on robots and indicators for the forex market.
Downloads gratuitos, seguros e rápidos a partir do maior diretório de aplicativos e software de código aberto - SourceForge.
MQL5: linguagem de estratégias comerciais incorporadas na MetaTrader 5 Trading Platform, permite escrever seus próprios robôs comerciais, indicadores técnicos, scripts e bibliotecas de funções.
Cotações ao vivo, gráficos gratuitos e idéias comerciais de especialistas. O TradingView é uma rede social para comerciantes e investidores em mercados de ações e futuros e Forex!
A Investopedia é a principal fonte de conteúdo financeiro do mundo e da # 039, na internet, que vão desde notícias do mercado até estratégias de aposentadoria, investindo educação para insights de conselheiros.
Wikipedia, a enciclopédia livre Página principal De Wikipedia, a enciclopédia livre Ir para: navegação, pesquisa Bem-vindo à Wikipédia, a enciclopédia gratuita que qualquer pessoa pode editar. 5,452,812 artigos em inglês Artes Biografia Geografia História Matemática.
Fidelity Investments is the online trading brokerage of choice, offering IRAs, retirement planning, mutual funds, ETFs, and more to help meet your goals.
Aproveite os vídeos e a música que você ama, faça o upload de conteúdo original e compartilhe tudo com amigos, familiares e mundo no YouTube.
Procure o índice mais abrangente do mundo dos livros de texto completo ... Minha biblioteca.
Bollinger Bands Strategy - Como Comércio O Squeeze.
O Squeeze é uma estratégia de Bollinger Bands que você precisa saber.
Hoje vou discutir uma ótima Estratégia de Bandas Bollinger. Ao longo dos anos, vi muitas estratégias de negociação ir e vir.
O que normalmente acontece é que uma estratégia comercial funciona bem em condições específicas do mercado e se torna muito popular. Uma vez que as condições do mercado mudam, a estratégia não funciona e é rapidamente substituída por outra estratégia que atua nas atuais condições de mercado.
Quando John Bollinger apresentou a Bollinger Bands Strategy há mais de 20 anos, fiquei céptico quanto à sua longevidade.
Eu pensei que duraria pouco tempo e desapareceria para o pôr do sol como as estratégias comerciais mais populares da época. Eu tenho que admitir que eu estava errado e as Bandas Bollinger se tornaram uma das mais confiantes em indicadores técnicos que já foram criados.
O que são Bandas de Bollinger.
Para aqueles que não estão familiarizados com as Bandas de Bollinger, é um indicador simples. Você começa com a média móvel simples de 20 dias dos preços de fechamento.
As bandas superior e inferior são então definidas dois desvios padrão acima e abaixo dessa média móvel. As bandas se afastam da média móvel quando a volatilidade se expande e se move em direção à média móvel quando a volatilidade se contrai.
Comprimento de muitos comerciantes da média móvel dependendo do prazo que eles usam. Para a demonstração de hoje, confiamos nas configurações padrão para manter as coisas simples.
Observe neste exemplo como as bandas se expandem e contratam dependendo da volatilidade e da faixa de negociação do mercado. Observe como as bandas se estreitam e ampliam de forma dinâmica com base na mudança de ação do preço do dia a dia.
As Bandas Contratam e Expõem Baseadas em Mudanças Diárias em Volatilidade.
A Bollinger Band-Width.
Há um indicador adicional que funciona de mãos dadas com Bollinger Bands que muitos comerciantes não conhecem.
Na verdade, é parte das Bandas de Bollinger, mas, como as Bandas de Bollinger sempre são desenhadas no gráfico em vez de abaixo do gráfico, não há um lugar lógico para colocar esse indicador ao renderizar a fórmula para as bandas atuais.
O indicador é chamado de largura de faixa e o único propósito desse indicador é subtrair o valor da banda inferior da banda superior.
Observe neste exemplo como o indicador Band-Width dá leituras mais baixas quando as bandas estão contraindo e leituras mais altas quando as bandas estão se expandindo.
A largura da banda faz parte do indicador da banda Bollinger.
Uma estratégia de Bollinger Bands Got My Attention.
Eu usei as Bandas de Bollinger muitas maneiras diferentes ao longo dos anos com resultados positivos. Uma Estratégia de Bandas Bollinger particular que uso quando a volatilidade está diminuindo nos mercados é a estratégia de entrada Squeeze. É uma estratégia muito simples e funciona muito bem para ações, futuros, moedas estrangeiras e contratos de commodities.
A estratégia Squeeze baseia-se na ideia de que uma vez que a volatilidade diminui durante longos períodos de tempo, a reação inversa ocorre tipicamente e a volatilidade se expande muito mais uma vez.
Quando a volatilidade se expande, os mercados geralmente começam a se expandir fortemente em uma direção por um curto período de tempo.
O Squeeze começa com o Band-Width fazendo um mínimo de 6 meses. Não importa qual seja o número real, porque é relativo apenas ao mercado que você procura negociar e nada mais.
Neste exemplo, você pode ver as ações da IBM atingindo o menor nível de volatilidade em 6 meses. Observe como o preço do estoque mal se move no momento em que a faixa de 6 meses de largura baixa é alcançada. Este é o momento de começar a procurar mercados porque os níveis baixos de largura de faixa de 6 meses normalmente precedem movimentos direcionais fortes.
Observe a faixa de negociação apertada no momento em que o sinal é gerado.
Neste exemplo, você pode ver como as ações da IBM escapam da Banda de Bollinger superior imediatamente após o nível de Baixa-Largura do estoque atingir 6 meses de baixa.
Esta é uma ocorrência muito comum e você deve começar a prestar atenção diariamente. A baixa de faixa de 6 meses é um ótimo indicador que precede o forte impulso direcional.
Breakout fora da banda superior ocorre logo após a volatilidade alcançar 6 meses de baixa.
Outro exemplo.
Neste exemplo, você pode ver como a Apple Computers atinge o nível mais baixo da largura da banda em 6 meses e, um dia depois, as ações ficam fora da banda superior. Este é o tipo de configurações que você deseja monitorar diariamente quando usar o indicador de Largura de Banda para configurações de Squeeze.
Apple atinge a leitura mais baixa da largura da banda em 6 meses.
Observe como a largura da banda começa a aumentar rapidamente após atingir o nível baixo de 6 meses. O preço do estoque geralmente começará a se mover mais alto dentro de alguns dias da baixa faixa de largura de 6 meses.
A volatilidade e o Momento começam a subir após os 6 meses de largura da banda baixa.
Coisas a ter em mente.
O Squeeze é um dos métodos mais simples e eficazes para medir a volatilidade, expansão e contração do mercado.
Lembre-se sempre que os mercados passam por diferentes ciclos e, uma vez que a volatilidade diminui para um mínimo de 6 meses, geralmente ocorre uma reversão e a volatilidade começa a subir de novo.
Quando a volatilidade começa a aumentar os preços geralmente começam a se mover em uma direção por um curto período de tempo.
Desejo o melhor para você.
Publicações populares.
Introdução à Volatilidade Histórica e Implícita.
Estratégias de negociação Swing.
Estratégias de negociação de ouro para comerciantes de ações.
Estratégias de negociação do dia que funcionam - táticas de retirada intradiária.
1976 South La Cienega Blvd # 270.
Los Angeles, Califórnia 90034.
Conecte-se conosco.
O desempenho passado não é garantia de resultados futuros. Este site é apenas para uso educacional e de informações gerais. Entre em contato com seu consultor financeiro para obter aconselhamento financeiro específico. Nada neste site constitui conselho ou recomendação para comprar ou vender uma determinada ação, opção, futuros ou qualquer outro ativo financeiro. Copyright © Market Geeks, LLC. Todos os direitos reservados.
No comments:
Post a Comment