Tuesday, 8 May 2018

Estratégias de negociação python


Biblioteca de Negociação Algorítmica Python.
O PyAlgoTrade é uma Biblioteca de Negociação Algorítmica Python, com foco em backtesting e suporte para negociação de papéis e negociação ao vivo. Digamos que você tenha uma ideia para uma estratégia de negociação e gostaria de avaliá-la com dados históricos e ver como ela se comporta. O PyAlgoTrade permite que você faça isso com o mínimo de esforço.
Principais características.
Totalmente documentado. Evento dirigido. Suporta ordens Market, Limit, Stop e StopLimit. Suporta o Yahoo! Arquivos Finanças, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados de séries temporais no formato CSV, por exemplo, o Quandl. Suporte de negociação Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas de Bollinger, expoente de Hurst e outros. Métricas de desempenho como a taxa de Sharpe e a análise de rebaixamento. Manipulando eventos do Twitter em tempo real. Criador de perfil de eventos. Integração TA-Lib.
Muito fácil de dimensionar horizontalmente, isto é, usando um ou mais computadores para fazer backtest de uma estratégia.
O PyAlgoTrade é gratuito, de código aberto e está licenciado sob a Licença Apache, Versão 2.0.

Backtesting Systematic Trading Strategies em Python: Considerações e Open Source Frameworks.
Backtesting Systematic Trading Strategies em Python: Considerações e Open Source Frameworks.
Neste artigo, Frank Smietana, um dos colaboradores convidados especializados da QuantStart, descreve o cenário de software de backtesting de código aberto Python e fornece conselhos sobre qual framework de backtesting é adequado para as necessidades de seu próprio projeto.
O backtesting é sem dúvida a parte mais crítica do processo de produção da SST (Estratégia de Negociação Sistemática), situada entre o desenvolvimento e a implementação da estratégia (negociação ao vivo). Se uma estratégia é falha, espera-se que um backtesting rigoroso exponha isso, impedindo que uma estratégia deficitária seja implantada.
Vários recursos relacionados se sobrepõem ao backtesting, incluindo simulação comercial e negociação ao vivo. O backtesting usa dados históricos para quantificar o desempenho do STS. Os simuladores de negociação levam o backtesting um passo adiante, visualizando o desencadeamento de negociações e o desempenho de preços em uma base barra a barra. A negociação simulada / ao vivo implanta um STS testado em tempo real: sinalizando negociações, gerando ordens, roteando ordens para corretoras e mantendo posições conforme as ordens são executadas.
A maioria dos frameworks vai além do backtesting para incluir alguns recursos de negociação ao vivo. Isso é conveniente se você quiser implantar a partir de sua estrutura de backtesting, que também funciona com seu corretor e fontes de dados preferidos. O Quantopian / Zipline dá um passo adiante, fornecendo uma solução totalmente integrada de desenvolvimento, backtesting e implementação.
A comunidade Python está bem atendida, com pelo menos seis estruturas de backtesting de código aberto disponíveis. Eles estão, no entanto, em vários estágios de desenvolvimento e documentação. Se você gosta de trabalhar em uma equipe criando uma estrutura de backtesting de código aberto, confira os repositórios do Github.
Antes de avaliar as estruturas de backtesting, vale a pena definir os requisitos do seu STS.
Qual (is) classe (s) de ativos você está negociando? Enquanto a maioria das estruturas suporta dados de Ações dos EUA via YahooFinance, se uma estratégia incorpora derivativos, ETFs ou títulos de EM, os dados precisam ser importados ou fornecidos pela estrutura. As coberturas de classes de ativos vão além dos dados. O framework pode lidar com futuros e opções de tamanho finito e gerar transações roll-over automaticamente? E quanto aos mercados sem liquidez, quão realista uma suposição deve ser feita ao executar grandes pedidos?
Qual freqüência de dados e detalhes seu STS é construído? Um sistema de negociação que exige cada tick ou lance / pedido tem um conjunto muito diferente de problemas de gerenciamento de dados que um intervalo de 5 minutos ou de hora em hora. Os fundos de hedge e as lojas HFT investiram significativamente na criação de estruturas de backtesting robustas e escalonáveis ​​para lidar com esse volume e frequência de dados. Algumas plataformas fornecem um conjunto rico e profundo de dados para várias classes de ativos, como ações da S & P, com resolução de um minuto.
Que tipo (s) de pedido exige o seu STS? No mínimo, limite, paradas e OCO devem ser suportados pelo framework.
Nível de suporte & amp; documentação necessária. Os frameworks de estágio inicial têm escassa documentação, poucos têm suporte além de conselhos comunitários.
Os componentes de um framework de backtesting.
Aquisição de dados e STS: Os componentes de aquisição consomem o arquivo de script / definição STS e fornecem os dados necessários para o teste. Se a estrutura exigir que qualquer STS seja recodificado antes do backtesting, a estrutura deverá suportar funções enlatadas para os indicadores técnicos mais populares para acelerar o teste de STS. Os usuários determinam quanto tempo um período histórico será backtest com base no que o framework fornece ou no que eles são capazes de importar.
O teste de desempenho aplica a lógica STS à janela de dados históricos solicitada e calcula uma ampla gama de riscos & amp; métricas de desempenho, incluindo redução máxima, taxas de Sharpe e Sortino. A maioria das estruturas suporta um número decente de recursos de visualização, incluindo curvas de equidade e estatísticas decifradas.
A otimização tende a exigir a maior parte dos recursos de computação no processo STS. Se o seu STS exigir otimização, concentre-se em uma estrutura que suporte o processamento distribuído / paralelo escalável.
No contexto de estratégias desenvolvidas usando indicadores técnicos, os desenvolvedores de sistemas tentam encontrar um conjunto ideal de parâmetros para cada indicador. Mais simplesmente, a otimização pode achar que um STS crossover médio de 6 e 10 dias acumulou mais lucro sobre os dados de teste históricos do que qualquer outra combinação de períodos de tempo entre 1 e 20. Já com este exemplo trivial, 20 * 20 = 400 combinações de parâmetros ser calculado & amp; classificado.
Em um contexto de portfólio, a otimização busca encontrar a ponderação ideal de todos os ativos do portfólio, incluindo instrumentos em curto e alavancados. Em uma base periódica, a carteira é reequilibrada, resultando na compra e venda de participações de carteira conforme necessário para alinhar com os pesos otimizados.
O dimensionamento de posição é um uso adicional de otimização, ajudando os desenvolvedores de sistemas a simular e analisar o impacto da alavancagem e o dimensionamento dinâmico da posição no STS e no desempenho do portfólio.
Seis Quadros de Backtesting para Python.
Os recursos padrão das plataformas de backtesting de Python de código aberto parecem incluir:
Evento orientado Licenciamento muito flexível e irrestrito Coleção decente de indicadores técnicos predefinidos Capacidades de cálculo / visualização / relatório de métricas de desempenho padrão.
PyAlgoTrade.
O PyAlgoTrade é uma estrutura de backtesting mutuamente documentada, juntamente com recursos de negociação em papel e ao vivo. O suporte de dados inclui o Yahoo! Finanças, Google Finance, NinjaTrader e qualquer tipo de série temporal baseada em CSV, como o Quandl. Tipos de pedidos suportados incluem Market, Limit, Stop e StopLimit.
O PyAlgoTrade suporta negociação Bitcoin via Bitstamp, e manipulação de eventos do Twitter em tempo real.
bt - Backtesting para Python.
bt “visa fomentar a criação de blocos facilmente testáveis, reutilizáveis ​​e flexíveis de lógica estratégica para facilitar o rápido desenvolvimento de estratégias de negociação complexas”.
A estrutura é particularmente adequada para testar o STS baseado em portfólio, com algos para ponderação de ativos e reequilíbrio de portfólio. Modificar uma estratégia para executar diferentes frequências de tempo ou pesos de ativos alternativos envolve um ajuste de código mínimo. bt é construído sobre o ffn - uma biblioteca de funções financeiras para Python.
Backtrader.
Essa plataforma é excepcionalmente bem documentada, com um blog de acompanhamento e uma comunidade on-line ativa para postar perguntas e solicitações de recursos. Backtrader suporta vários formatos de dados, incluindo arquivos CSV, Pandas DataFrames, iteradores de blaze e feeds de dados em tempo real de três corretores. Esses feeds de dados podem ser acessados ​​simultaneamente e podem até representar diferentes períodos de tempo. Corretores suportados incluem Oanda para negociação de FX e negociação de classe de múltiplos ativos via Interactive Brokers e Visual Chart.
pysystemtrade.
Rob Carver, desenvolvedor do pysystemtrade, tem um ótimo post discutindo por que ele se propôs a criar outro framework de backtesting em Python e os argumentos a favor e contra o desenvolvimento de frameworks. O framework de backtesting para o pysystemtrade é discutido no livro de Rob, "Systematic Trading".
O pysystemtrade lista vários recursos de roteiro, incluindo um testador completo completo que inclui técnicas de otimização e calibração e negociação de futuros totalmente automatizada com a Interactive Brokers. Contribuidores de código aberto são bem-vindos.
Zipline é um simulador de negociação algorítmica com capacidades de negociação em papel e ao vivo. Acessível através da interface IPython Notebook baseada em navegador, o Zipline fornece uma alternativa fácil de usar às ferramentas de linha de comando. Suportado e desenvolvido pela Quantopian, o Zipline pode ser usado como uma estrutura de backtesting autônoma ou como parte de um ambiente de desenvolvimento, teste e implementação de STS completo da Quantipian / Zipline. O Zipline fornece 10 anos de dados de estoque históricos americanos com resolução de minutos e várias opções de importação de dados.
O QSTrader é um framework de backtesting com recursos de negociação ao vivo. O Fundador da QuantStart, Michael Halls-Moore, lançou o QSTrader com o intuito de construir uma plataforma robusta e escalável o suficiente para atender às necessidades dos fundos institucionais de hedge, bem como aos traders quantificados de varejo. O QSTrader atualmente suporta dados de resolução "bar" do OHLCV em várias escalas de tempo, mas permite que dados de ticks sejam usados.
Ambos backtesting e live trading são completamente orientados a eventos, simplificando a transição de estratégias de pesquisa para testes e, finalmente, negociação ao vivo. A estratégia principal / código do portfólio é geralmente idêntica em ambas as implantações.
O principal benefício do QSTrader é a sua modularidade, permitindo uma ampla personalização de código para aqueles que possuem requisitos específicos de gerenciamento de risco ou portfólio.
Abraçando o Backtest.
É da natureza humana concentrar-se na recompensa de desenvolver um (esperançosamente lucrativo) STS, depois se apressar em implantar uma conta financiada (porque estamos esperançosos), sem gastar tempo e recursos suficientes para fazer um backtesting completo da estratégia. Mas o backtesting não é apenas um gatekeeper para nos impedir de implementar estratégias falhas e perder capital de negociação, ele também fornece uma série de diagnósticos que podem informar o processo de desenvolvimento do STS. Por exemplo, testar um STS idêntico em dois períodos de tempo diferentes, compreender o empate máximo de uma estratégia no contexto de correlações de ativos e criar portfólios mais inteligentes ao realizar backtesting de alocações de ativos em várias regiões geográficas.
Em posts futuros, cobriremos backtesting frameworks para ambientes não-Python, e o uso de várias técnicas de sampling como bootstrapping e jackknife para backtesting de modelos preditivos de trading.
A Quantcademy.
Participe do portal de associação da Quantcademy que atende à crescente comunidade de traders de quantificação de varejo e aprenda como aumentar a lucratividade de sua estratégia.
Negociação Algorítmica Bem Sucedida.
Como encontrar novas ideias de estratégia de negociação e avaliá-las objetivamente para o seu portfólio usando um mecanismo de backtesting personalizado no Python.
Comércio Algorítmico Avançado.
Como implementar estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas Bayesianas com R e Python.

Estratégias de negociação em python
P: Este curso está atualizado?
R: A atualização mais recente foi feita em 2016, quando o material do curso foi ampliado e atualizado para a versão 3 do Python. Atualmente estou trabalhando em uma versão completamente reformulada que será lançada em algum lugar em 2017. É claro que os atuais assinantes terão acesso à nova versão.
P. Quanto custa esse curso?
R. A taxa do curso é de US $ 95 ou € 90.
P. Este conteúdo do curso é pesado? (ou seja, prazos de atribuição, codificação, materiais de leitura, etc)
UMA . Não há prazos, você pode fazer o curso no seu próprio ritmo. Quatro semanas devem ser suficientes para completar as três primeiras partes do curso com base em 16 horas / semana de estudo. A última parte é mais complexa e exigirá diferentes quantidades de tempo, dependendo da sua experiência de programação. Haverá material de vídeo e / ou leitura com código de exemplo. Tome seu tempo para entender o código e use os conceitos para suas próprias tarefas.
P. Você estará passando por algumas estratégias de negociação?
UMA . Sim, várias estratégias típicas de negociação serão usadas como exemplos. Vamos dar uma olhada nas médias móveis (momentum), na reversão à média e na negociação de pares.
A: Abaixo está uma lista completa de cadernos incluídos.
twp_301 Métricas de desempenho.
Além disso, há vários exemplos de integração com a API Interactive Brokers.
P. As estratégias apresentadas serão lucrativas na negociação real?
UMA . Muito provavelmente não. Muitos não serão nem rentáveis ​​no backtest. O objetivo do curso é aprender como desenvolver suas próprias estratégias.
P. Haverá alguma forma de apoio (após o curso)?
A. Atualmente, o curso é oferecido sem suporte, mas é possível providenciar suporte extra. Por favor, entre em contato para mais detalhes.
P. Você poderia escrever um exemplo para minha estratégia de negociação ou algo não incluído no material do curso?
A. Somente se você se inscreveu em uma versão suportada do curso.
Q. Eu codifiquei essa estratégia e ela é executada sem erros. Ainda não tenho certeza de que todos os cálculos estão corretos. Você poderia verificar meu código para correção?
R. Infelizmente, essa é uma tarefa muito difícil, envolvendo o entendimento e a repetição de todos os cálculos passo a passo, o que é essencialmente o mesmo que reescrever o código do zero. Isso está além do escopo do suporte relacionado ao curso.
P. Posso baixar e manter os materiais do curso? (ou seja, notas, palestras em vídeo, códigos, etc.)
Sim, você pode manter tudo. Você também terá acesso vitalício ao material do curso no site. Um pedido gentil para manter o conteúdo premium para seu próprio uso.
Q Existe alguma coisa que você possa sugerir que eu faça para maximizar os benefícios de aprendizagem?
R. Acredito que aprender fazendo é a maneira mais eficaz. Decida quais serão seus próprios aplicativos (criando um banco de dados, fazendo backtesting de uma ideia, obtendo dados da Web, etc.) e reservando tempo suficiente para experimentar.

Estratégias de negociação em python
Se você é um profissional ou um investidor e gostaria de adquirir um conjunto de habilidades de negociação quantitativa, você está no lugar certo.
O curso de Negociação com o Python fornecerá as melhores ferramentas e práticas para pesquisa de negociação quantitativa, incluindo funções e scripts escritos por especialistas em negociações quantitativas. O curso dá o máximo impacto ao seu tempo e dinheiro investidos. Centra-se na aplicação prática da programação à negociação, em vez da informática teórica. O curso se pagará rapidamente economizando seu tempo no processamento manual de dados. Você passará mais tempo pesquisando sua estratégia e implementando negociações lucrativas.
Visão geral do curso.
Parte 1: Noções básicas Você aprenderá por que o Python é uma ferramenta ideal para negociações quantitativas. Começaremos configurando um ambiente de desenvolvimento e, em seguida, apresentaremos as bibliotecas científicas.
Parte 2: Manipulando os dados Aprenda como obter dados de várias fontes gratuitas como Yahoo Finance, CBOE e outros sites. Leia e escreva vários formatos de dados, incluindo arquivos CSV e Excel.
Parte 3: Pesquisando estratégias Aprenda a calcular P & L e acompanhar as métricas de desempenho como Sharpe e Drawdown. Construa uma estratégia de negociação e otimize seu desempenho. Vários exemplos de estratégias são discutidos nesta parte.
Parte 4: Indo ao vivo! Esta parte é centralizada em torno da API Interactive Brokers. Você aprenderá como obter dados de estoque em tempo real e fazer pedidos ao vivo.
Muito código de exemplo.
O material do curso consiste em 'cadernos' que contêm texto juntamente com código interativo como este. Você poderá aprender interagindo com o código e modificando-o ao seu gosto. Será um ótimo ponto de partida para escrever suas próprias estratégias.
Embora alguns tópicos sejam explicados detalhadamente para ajudá-lo a entender os conceitos subjacentes, na maioria dos casos você não precisará escrever seu próprio código de baixo nível, devido ao suporte de bibliotecas de código aberto existentes:
A biblioteca TradingWithPython combina grande parte da funcionalidade discutida neste curso como uma função pronta para uso e será usada durante todo o curso. Os pandas fornecerão a você todo o poder de levantamento pesado necessário para a compactação de dados.
Todo o código é fornecido sob a licença BSD, permitindo seu uso em aplicações comerciais.
Classificação do curso.
Um piloto do curso foi realizado na primavera de 2013, isso é o que os alunos puderam dizer:
Matej curso bem planejado e bom treinador. Definitivamente vale seu preço e meu tempo Lave Jev obviamente sabia suas coisas. A profundidade da cobertura foi perfeita. Se Jev executar algo assim novamente, eu serei o primeiro a me inscrever. John Phillips Seu curso realmente me fez começar a considerar o python para análise de sistemas de estoque.

Estratégias de negociação em python
Vamos criar uma estratégia de crossover Average Moving Simple neste tutorial de Finanças com Python, que nos permitirá ficar confortáveis ​​com a criação do nosso próprio algoritmo e utilizando os recursos do Quantopian. Para começar, vá para a guia Algoritmos e escolha o botão "Novo Algoritmo". Aqui, você pode nomear seu algoritmo como quiser, e então você deve ter algum código inicial como:
Como você pode ver, algum código inicial foi preparado para nós.
Se você não estiver familiarizado com as médias móveis, o que elas fazem é obter um certo número de "janelas" de dados. No caso de correr contra os preços diários, uma janela seria um dia. Se você pegasse uma média móvel de 20, isso significaria uma média móvel de 20 dias. A partir daqui, a ideia é dizer que você tem uma média móvel de 20 e uma média móvel de 50. Plotar isso em um gráfico pode ser algo como:
Aqui, a linha azul é o preço das ações, a linha vermelha é a média móvel de 20 e a linha amarela é a média móvel de 50. A ideia é que, quando a média móvel de 20, que reage mais rápido, se mover acima da média móvel de 50, isso significa que o preço pode estar subindo, e podemos querer investir. Inversamente, se a média móvel de 20 cair abaixo da média móvel de 50, isso sinaliza talvez que o preço está tendendo para baixo, e que poderíamos querer vender ou investir ou mesmo vender a empresa a descoberto.
Venda a descoberto.
A venda a descoberto é o ato de vender um título que não se possui. Geralmente, isso é feito emprestando a parte de outra pessoa para vender, com a promessa de comprá-la de volta. O objetivo aqui é vender ações de alguém por, digamos, US $ 100, porque você acha que vai cair. Então, cai para $ 90, você o compra de volta e depois devolve ao dono original. A diferença de US $ 10 é sua para manter.
A venda a descoberto é arriscada por duas razões principais. A primeira é que, na maioria das vezes, a outra pessoa está lhe emprestando as ações da empresa, então este é um empréstimo, e você pode acabar perdendo dinheiro que nunca teve.
A próxima razão pela qual isso é arriscado é porque um curto pode ser infinitamente ruim. Por exemplo, se você comprar uma empresa por US $ 100, o máximo que você pode perder é US $ 100 por ação, porque a ação pode chegar a zero. Se você comprou uma empresa que é de US $ 100, talvez você perca uma quantia infinita de dinheiro, porque essa empresa deve ir para US $ 200 por ação, US $ 2.000 por ação. ou US $ 200.000 por ação. É claro que é improvável que fique assim tão ruim, mas o ponto é: você pode perder muito mais do que seu investimento original, e isso é geralmente associado ao fato de que o investimento original não era nem mesmo com dinheiro, era um empréstimo.
Normalmente, você será emprestado a parte por seu corretor ou banco, que também tem o direito de recuperar as ações sempre que quiserem. Isso significa que o estoque de US $ 100 pode subir para US $ 110 antes de cair para US $ 90, mas o banco pode recuperar as ações na marca de US $ 110 e você está pagando essa conta.
Olhando para o gráfico acima, parece-nos que faríamos muito bem. Perdemos os altos e baixos absolutos do preço, mas, no geral, achamos que faríamos bem com essa estratégia.
Toda vez que você criar um algoritmo com Zipline ou Quantopian, você precisará ter os métodos initialize e handle_data. Eles devem ser incluídos em todos os algoritmos iniciados novos.
O método initialize é executado uma vez no início do algoritmo (ou uma vez por dia, se você estiver executando o algoritmo ao vivo em tempo real). Handle_data é executado uma vez por período. No nosso caso, estamos usando dados diários, o que significa que será executado uma vez por dia.
Dentro do nosso método initialize, geralmente passamos esse parâmetro de contexto. Contexto é um Dicionário Python, que é o que vamos usar para rastrear o que poderíamos usar para variáveis ​​globais. O Context irá acompanhar vários aspectos do nosso algoritmo de negociação com o passar do tempo, para que possamos referenciar essas coisas dentro do nosso script.
Dentro do nosso método inicializar:
O que isto faz, é definir nossa segurança para negociação para o SPY. Este é o ETF do Spyder S & P 500 (Exchange Traded Fund), que é um método que podemos usar para negociar o índice S & P 500.
Isso é tudo o que faremos por agora no nosso método initialize, em seguida começaremos nosso método handle_data:
Observe aqui que passamos o contexto e um novo parâmetro chamado data. Os dados acompanham os dados atuais das empresas dentro do nosso "universo comercial". O universo é a coleção de empresas nas quais estamos plausivelmente interessados ​​em investir. No nosso caso, definimos este universo no início do método de inicialização, definindo todo o nosso universo para o SPY.
Simplificando, o contexto var é usado para rastrear nossa atual situação de investimento, com coisas como nosso portfólio e dinheiro. A variável de dados é usada para rastrear nosso universo de empresas e suas informações.
O. mavg () é um método embutido no Quantopian, e "data [context. security]" nos referencia a chave por este nome em nosso dicionário de contexto.
Poderíamos chamar esses context. MA1 e context. MA2 se quiséssemos armazená-los em nosso dicionário de contexto e usá-los fora de nosso método handle_data, mas não precisamos acessar esses dados fora daqui, então vamos apenas torná-los variáveis ​​locais.
Agora que calculamos as médias móveis, estamos prontos para mais lógica. Para negociar, precisamos ter lógica como se os MAs tivessem atravessado, mas também, antes de podermos fazer uma negociação, precisamos ver se temos dinheiro suficiente para fazer uma compra, precisamos saber o preço da transação. segurança, e devemos verificar para ver se já temos essa posição. Para fazer isso, adicionamos o seguinte ao nosso método handle_data:
Nós pegamos o preço atual referenciando dados, que é nossa maneira de rastrear nosso universo de empresas (atualmente apenas o S ​​& P 500 ETF $ SPY). Em seguida, verificamos todas as posições atuais que temos referenciando nosso context. portfolio. Aqui, podemos fazer referência a todo tipo de coisas em relação ao nosso portfólio, mas, agora, só queremos verificar nossas posições. Isso retorna um dicionário de todas as suas posições, a quantidade, o quanto foi preenchido e assim por diante. Então, estamos interessados ​​em uma posição específica em uma empresa, então fazemos context. portfolio. positions [symbol ('SPY')]. A partir daqui, nossa única preocupação agora é apenas ver se temos algum investimento, então o atributo que mais nos interessa é a quantidade de posições que temos, então usamos a quantidade no final.
Até agora, criamos as informações necessárias para sabermos antes de usarmos alguma lógica para executar negociações, mas não escrevemos nada para realmente fazer a negociação. Isso é o que vamos cobrir no próximo tutorial.

Estratégias de negociação em python
Olá, bem-vindo à parte 13 da série de tutoriais do Python for Finance. Neste tutorial, vamos começar a falar sobre back-testing de estratégia. O campo de testes de volta e os requisitos para fazer o certo são muito grandes. Basicamente, o que é necessário para nós é criar um sistema que receba dados históricos de preços e simule negociações nesse ambiente, e depois nos forneça os resultados. Isso pode parecer simples, mas, para analisar a estratégia, precisamos rastrear um monte de métricas como o que vendemos, quando, com que frequência trocamos, o que são nossos Beta e Alpha, além de outras métricas como rebaixamento, Sharpe Proporção, Volatilidade, alavancagem e muito mais. Junto com isso, geralmente queremos ser capazes de visualizar tudo isso. Então, podemos escrever tudo isso por nós mesmos ou podemos usar uma plataforma para nos ajudar com isso.
. É por isso que vamos apresentar o Quantopian, que é uma plataforma que nos permite escrever e fazer back-teste de estratégias de negociação baseadas em Python com muita facilidade.
O que o Quantopian faz é adicionar uma camada de GUI no topo da biblioteca de teste de retorno do Zipline para Python, junto com um monte de fontes de dados, muitas das quais são completamente livres para trabalhar. Você também pode obter alocações de capital da Quantopian licenciando sua estratégia para eles se atender a determinados critérios. Geralmente, um beta entre -0,3 e +0,3 é um bom ponto de partida, mas você também precisa ter outras métricas saudáveis ​​para competir. Mais sobre isso mais tarde, vamos aprender sobre os fundamentos do primeiro Quantopian. Como o Quantopian é desenvolvido principalmente por bibliotecas de código aberto, como Zipline, Alphalens e Pyfolio, você também pode executar uma plataforma semelhante à Quantopian localmente, se desejar. Eu acho que a maioria das pessoas que estão interessadas em correr localmente estão interessadas nisso para manter seus algoritmos privados. O Quantopian não vê seus algoritmos, a menos que você lhes dê permissão, e a comunidade só vê seus algoritmos se você os compartilhar. Eu recomendo fortemente que você veja seu relacionamento com a Quantopian não como um adversário, mas sim como uma parceria. Se você inventar algo de alta qualidade, a Quantopian está muito interessada em trabalhar e tem o financiamento para investir em você. Nessa relação, a Quantopian está trazendo a plataforma, financiamento e outros especialistas no campo para ajudá-lo, é um bom negócio na minha opinião.
Para começar, dirija-se a Quantopian, crie uma conta se você não tiver uma, e entre. Sinta-se à vontade para dar uma olhada. Os fóruns comunitários da Quantopian são um ótimo lugar para absorver algum conhecimento. A Quantopian também realiza uma competição frequente pelos preços à vista. Nós vamos começar com algoritmos. Uma vez lá, escolha o botão azul "novo algoritmo". Por enquanto, vamos passar a maior parte do nosso tempo em dois lugares, que podem ser encontrados no botão "Meu Código". Para começar, vamos para algoritmos e criar um novo algoritmo usando o botão azul "Novo Algoritmo".
Quando você cria o algoritmo, você deve ser levado para a página de algoritmos de edição ativa com o algoritmo clonado, que se parece com isso (menos as caixas coloridas), e algumas alterações possivelmente para a interface do usuário.
Python Editor - É onde você codifica sua lógica Python para o algoirthm. Resultados de algoritmos construídos - Quando você cria o algoritmo, os resultados gráficos aparecerão aqui. Saída de log / erro - Qualquer informação de saída / registro do console virá aqui. É comum que o seu programa envie vários pedaços de texto para depuração ou apenas para mais informações. Algoritmo de construção - Use isso para testar rapidamente o que você escreveu. Os resultados não serão salvos, mas você pode ver o resultado na seção de resultados do algoritmo construído. Backtest completo - Isso executará um teste completo com base em seu algoritmo atual. Os testes de back-back vêm com um pouco mais de análise, os resultados são salvos e o algoritmo que gerou esses resultados também é salvo, para que você possa voltar aos testes anteriores e visualizar o código exato que gerou um resultado específico.
O código de amostra inicial é algo como:
O que é ótimo, mas talvez um pouco demais para começar. O Quantopian também fornece alguns exemplos de algoritmos se sua conta for nova. Sinta-se livre para verificar isso, mas você pode achar que eles são confusos. As únicas duas funções que você precisa em todos os algoritmos são: initialize e handle_data. A função de inicialização é executada uma vez, no início do seu script. Você vai usar isso para configurar globais como regras, funções para usar mais tarde e vários parâmetros. Em seguida, a função handle_data que é executada a cada minuto em relação aos dados de mercado.
Vamos escrever nossa própria estratégia simples para nos familiarizarmos com o Quantopian. Vamos implementar uma estratégia de crossover de média móvel simples e ver como isso acontece.
Se você não estiver familiarizado com as médias móveis, o que elas fazem é obter um certo número de "janelas" de dados. No caso de correr contra os preços diários, uma janela seria um dia. Se você pegasse uma média móvel de 20, isso significaria uma média móvel de 20 dias. A partir daqui, a ideia é dizer que você tem uma média móvel de 20 e uma média móvel de 50. Plotar isso em um gráfico pode ser algo como:
Aqui, a linha azul é o preço das ações, a linha vermelha é a média móvel de 20 e a linha amarela é a média móvel de 50. A ideia é que, quando a média móvel de 20, que reage mais rápido, se mover acima da média móvel de 50, isso significa que o preço pode estar subindo, e podemos querer investir. Inversamente, se a média móvel de 20 cair abaixo da média móvel de 50, isso sinaliza talvez que o preço está tendendo para baixo, e que poderíamos querer vender ou investir ou mesmo vender a empresa em curto, que é onde você aposta contra isso.
Para nossos objetivos aqui, vamos aplicar uma estratégia de crossover de média móvel à Apple (AAPL), entre as datas de 7 de outubro de 2015 e 7 de outubro de 2016. Para esse período, as ações da AAPL caíram e aumentaram, com muito pouca mudança líquida global . Nossa estratégia de crossover deve ficar longe ou curta (apostar contra) quando o preço cair, e depois saltar quando o preço estiver subindo. Encurtar uma empresa implica emprestar ações de outra pessoa, vendê-las e, em seguida, recomprar as ações em uma data posterior. Sua esperança é que o preço das ações caia, e você volte a comprá-las de volta muito mais barato, e devolva as ações ao dono original, embolsando a diferença. Para começar, vamos construir o método initialize:
Por enquanto, vamos definir nossas ações da Apple. Se você realmente começar a digitar sid (, o Quantopian tem uma boa funcionalidade de preenchimento automático onde você pode começar a digitar o nome da empresa ou o símbolo para encontrar seu sid. A razão para usar sid é porque os tickers da empresa podem mudar em períodos de tempo Esta é uma maneira de garantir que você está recebendo o ticker que você está realmente pretendendo obter. Você também pode usar symbol () para usar o ticker e tornar seu código um pouco mais fácil de ler, mas isso não é recomendado , já que o ticker pode mudar.
Toda vez que você criar um algoritmo com Zipline ou Quantopian, você precisará ter os métodos initialize e handle_data.
O método initialize é executado uma vez no início do algoritmo (ou uma vez por dia, se você estiver executando o algoritmo ao vivo em tempo real). Handle_data é executado uma vez por minuto.
Dentro do nosso método initialize, passamos esse parâmetro de contexto. Contexto é um Dicionário Python, que é o que vamos usar para rastrear o que poderíamos usar para variáveis ​​globais. Simplificando, a variável de contexto é usada para rastrear nossa atual situação de investimento, com coisas como nosso portfólio e dinheiro.
Em seguida, ainda precisamos da nossa função handle_data. Essa função usa o contexto e os dados como parâmetros.
O parâmetro de contexto já foi explicado e a variável de dados é usada para rastrear o ambiente fora de nosso portfólio real. Isso rastreia coisas como preços de ações e outras informações sobre empresas em que podemos estar investindo, ou não, mas são empresas que estamos rastreando.
Para começar a função handle_data:
Podemos usar o método. history para obter preços históricos para a Apple, nos últimos 50 dias, em intervalos de 1 dia. Agora podemos fazer:
O valor sma_50 é exatamente o que a média / média é para os dados do histórico que acabamos de extrair. O sma_20 é os últimos 20 dias de dados. Observe que isso está contido no método handle_data, que é executado para cada período, então é tudo o que precisamos fazer para rastrear os valores diários das 50 e 20 médias móveis simples.
No próximo tutorial, vamos falar sobre como fazer pedidos.

No comments:

Post a Comment