Programação de estratégia de negociação


Como codificar seu próprio robô Algo Trading.
Já quis tornar-se um comerciante algorítmico com a capacidade de codificar seu próprio robô comercial? E ainda, você está frustrado com a quantidade de informações desorganizadas, enganosas e falsas promessas de prosperidade durante a noite? Bem, Lucas Liew, criador do curso de negociação algorítmica on-line AlgoTrading101, pode ter a solução para você. Tendo excelentes revisões e recebendo mais de 8.000 estudantes desde o primeiro lançamento em outubro de 2018, o curso de Liew - destinado a apresentar os fundamentos da negociação algorítmica de forma organizada - está sendo bastante popular. Ele é inflexível sobre o fato de que a negociação algorítmica é "não um esquema rápido e rápido". Com base em idéias de Liew e seu curso, delineadas abaixo estão os fundamentos do que é preciso para projetar, construir e manter seu próprio robô de negociação algorítmica .
O que é um Robô de Negociação Algorítmico.
No nível mais básico, um robô de negociação algorítmica é um código de computador que tem a capacidade de gerar e executar sinais de compra e venda nos mercados financeiros. Os principais componentes desse robô incluem regras de entrada que indicam quando comprar ou vender, regras de saída indicando quando fechar a posição atual e regras de dimensionamento de posição que definem as quantidades para comprar ou vender. (Para mais, veja: Noções básicas de negociação algorítmica: conceitos e exemplos.)
As principais ferramentas.
Obviamente, você vai precisar de um computador e uma conexão com a Internet. Depois disso, será necessário um sistema operacional Windows ou Mac para executar o MetaTrader 4 (MT4), uma plataforma de negociação eletrônica que usa o MetaQuotes Language 4 (MQL4) para codificar as estratégias de negociação. Embora o MT4 não seja o único software que se possa usar para construir um robô, ele possui uma série de benefícios significativos.
Enquanto a principal classe de ativos da MT4 é câmbio (FX), a plataforma pode ser usada para negociar ações, índices de ações, commodities e Bitcoins usando CFDs. Outros benefícios de usar o MT4 em oposição a outras plataformas incluem ser fácil de aprender, tem inúmeras fontes de dados FX disponíveis e é grátis. Infelizmente, o MT4 não permite a negociação direta em mercados de ações e futuros e a realização de análises estatísticas pode ser onerosa; no entanto, o MS Excel pode ser usado como uma ferramenta estatística suplementar.
Estratégias de negociação algorítmica.
É importante começar por refletir sobre alguns traços essenciais que toda estratégia de negociação algorítmica deve ter. A estratégia deve ser prudente no mercado em que é fundamentalmente sólida do ponto de vista do mercado e econômico. Além disso, o modelo matemático utilizado no desenvolvimento da estratégia deve basear-se em métodos estatísticos sólidos.
Em seguida, é crucial determinar quais informações o seu robô pretende capturar. Para ter uma estratégia automatizada, seu robô precisa ser capaz de capturar ineficiências de mercado identificáveis ​​e persistentes. As estratégias de negociação algorítmica seguem um conjunto rígido de regras que aproveitam o comportamento do mercado e, portanto, a ocorrência de uma ineficiência única do mercado não é suficiente para construir uma estratégia. Além disso, se a causa da ineficiência do mercado não for identificável, não haverá maneira de saber se o sucesso ou o fracasso da estratégia foi devido ao acaso ou não.
Com o acima em mente, existem vários tipos de estratégia para informar o design do seu robô de negociação algorítmica. Estes incluem estratégias que aproveitam (i) notícias macroeconômicas (por exemplo, mudanças na folha de pagamento ou na taxa de juros não agrícolas); (ii) análise fundamental (por exemplo, usando dados de receita ou notas de versão de resultados); (iii) análise estatística (por exemplo, correlação ou co-integração); (iv) análise técnica (por exemplo, médias móveis); (v) a microestrutura do mercado (por exemplo, infração de arbitragem ou comercial); ou (vi) qualquer combinação do acima. (Para leitura relacionada, veja: O que é a eficiência do mercado?)
Projetando e testando seu robô.
Existem essencialmente quatro etapas necessárias para construir e gerenciar um robô comercial:
Pesquisa preliminar: esta etapa se concentra no desenvolvimento de uma estratégia que se adapte às suas próprias características pessoais. Fatores como perfil de risco pessoal, compromisso de tempo e capital comercial são importantes para pensar quando desenvolver uma estratégia. Você pode então começar a identificar as persistentes ineficiências do mercado mencionadas acima. Tendo identificado uma ineficiência do mercado, você pode começar a codificar um robô comercial adequado às suas próprias características pessoais.
Backtesting: Esta etapa se concentra em validar seu robô comercial. Isso inclui verificar o código para se certificar de que está fazendo o que deseja e entender como ele se realiza em diferentes intervalos de tempo, aulas de ativos ou diferentes condições de mercado, especialmente em eventos tipo cisne preto, como a crise financeira global de 2008.
Otimização: Então, agora você codificou um robô que funciona e, nesta fase, você deseja maximizar seu desempenho ao mesmo tempo em que minimiza o viés de superposição. Para maximizar o desempenho, primeiro você precisa selecionar uma boa medida de desempenho que capture elementos de risco e recompensa, bem como consistência (por exemplo, taxa Sharpe). O desvio excessivo ocorre quando o robô está muito próximo com dados anteriores; Esse robô vai dar a ilusão de alto desempenho, mas como o futuro nunca se assemelha completamente ao passado, ele pode realmente falhar.
Execução ao vivo: agora você está pronto para começar a usar dinheiro real. No entanto, além de estar preparado para os altos e baixos emocionais que você pode experimentar, existem alguns problemas técnicos que precisam ser abordados. Essas questões incluem selecionar um intermediário apropriado e implementar mecanismos para gerenciar riscos de mercado e riscos operacionais, como potenciais hackers e tempo de inatividade tecnológico. Também é importante nesta etapa verificar se o desempenho do robô é semelhante ao experimentado na fase de teste. Finalmente, o monitoramento contínuo é necessário para garantir que a eficiência do mercado que o robô foi projetado ainda existe. (Para mais, consulte: Como os Algoritmos de Negociação foram Criados.)
The Bottom Line.
Considerando que Richard Dennis, o lendário comerciante de commodities, ensinou a um grupo de estudantes suas estratégias de negociação pessoal que, em seguida, ganhou mais de US $ 175 milhões em apenas cinco anos, é completamente possível que os comerciantes inexperientes sejam ensinados com um conjunto rigoroso de diretrizes e se tornem comerciantes bem-sucedidos. No entanto, este é um exemplo extraordinário e os iniciantes definitivamente devem se lembrar de ter expectativas modestas.
Para ser bem sucedido, é importante não apenas seguir um conjunto de diretrizes, mas também entender como essas diretrizes estão funcionando. Liew enfatiza que a parte mais importante da negociação algorítmica é "entender em que tipos de condições de mercado o seu robô funcionará e quando vai quebrar" e "entender quando intervir". O comércio algorítmico pode ser gratificante, mas a chave para o sucesso é compreensão. Qualquer curso ou professor que prometa altas recompensas com mínima compreensão deve ser um sinal de alerta importante.

Programação de estratégia de negociação
Nós vamos criar uma estratégia de cruzamento Simple Moving Average neste financiamento com o tutorial Python, o que nos permitirá ficar confortáveis ​​com a criação de nosso próprio algoritmo e utilizando os recursos da Quantopian. Para começar, vá para a guia Algoritmos e escolha o botão "Algoritmo novo". Aqui, você pode nomear seu algoritmo o que quiser, e então você deve ter algum código inicial como:
Como você pode ver, alguns códigos iniciais foram preparados para nós.
Se você não está familiarizado com as médias móveis, o que faz é ter um certo número de "janelas" de dados. No caso de correr contra preços diários, uma janela seria um dia. Se você tivesse uma média móvel de 20, isso significaria uma média móvel de 20 dias. A partir daqui, a idéia é dizer que você tem uma média móvel de 20 e uma média móvel de 50. Traçar isso em um gráfico pode parecer 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 idéia é que quando a média móvel de 20, que reage mais rápido, ultrapassa a média móvel de 50, isso significa que o preço pode estar tendendo, e podemos querer investir. Por outro lado, se a média móvel de 20 cai abaixo da média móvel de 50, isso talvez signifique que o preço está em declínio e que queremos vender ou investir ou até vender a empresa.
Venda curta.
A venda a descoberto é o ato de vender uma segurança que não possui. Normalmente, isso é feito emprestando a parte de outra pessoa para vender, com a promessa de comprá-lo de volta. O objetivo aqui é vender o estoque de outra pessoa, por exemplo, $ 100, porque você acha que vai cair. Então, então cai para US $ 90, você compra de volta, e depois devolve o proprietário original. A diferença de US $ 10 é sua para manter.
A venda a descoberto é arriscada por dois motivos principais. O primeiro é que, na maioria das vezes, é que a outra pessoa está emprestando as ações da empresa, então este é um empréstimo, e você pode acabar perdendo dinheiro que você nunca teve.
A próxima razão pela qual isso é arriscado é porque um short pode ir infinitamente ruim. Por exemplo, se você comprar uma empresa por US $ 100, o máximo que você pode perder é de US $ 100 por ação, pois a participação pode ser igual a zero. Se você abre uma empresa que é de US $ 100, você pode perder uma quantidade infinita de dinheiro, porque essa empresa deve pagar US $ 200 por ação, US $ 2.000 por ação. ou $ 200,000 por ação. É claro que é improvável que isso seja ruim, mas o ponto é: você pode perder muito mais do que seu investimento original, e isso geralmente é acompanhado pelo fato de que o investimento original não era mesmo com o dinheiro, era um empréstimo.
Normalmente, você será emprestado a parte pelo seu corretor ou banco, que também tem o direito de reclamar as ações sempre que quiserem. Isso significa que as ações de US $ 100 podem subir para US $ 110 antes de descer para US $ 90, mas o banco pode reclamar as ações na marca de US $ 110 e você está pagando essa conta.
Olhando para o gráfico acima, parece-nos gostaríamos de fazer muito bem. Perdemos os picos absolutos e as tarifas do preço, mas, em geral, pensamos que faríamos tudo bem com esta estratégia.
Toda vez que você cria 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 que você inicia de novo.
O método de inicialização é 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 executando dados diários, então isso significa que ele será executado uma vez por dia.
Dentro do nosso método de inicialização, geralmente passamos esse parâmetro de contexto. Contexto é um dicionário de Python, que é o que usaremos para rastrear o que de outra forma poderemos usar variáveis ​​globais. O contexto acompanhará vários aspectos do nosso algoritmo de negociação à medida que o tempo passa, para que possamos fazer referência a essas coisas dentro do nosso script.
Dentro do nosso método de inicialização:
O que isso faz, é que estabelece a nossa segurança para a comercialização para o SPY. Esta é a ETF Spyder S & P 500 (Exchange Traded Fund), que é um método que podemos usar para trocar o índice S & P 500.
Isso é tudo o que faremos agora no nosso método de inicialização, a seguir iniciaremos nosso método handle_data:
Observe aqui que passamos o contexto e um novo parâmetro chamado dados. Dados rastreiam os dados atuais das empresas dentro do nosso "universo comercial". O universo é a coleção de empresas às quais estamos potencialmente interessados ​​em investir. No nosso caso, estabelecemos este universo no início no método de inicialização, definindo todo o nosso universo no 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.
.mavg () é um método incorporado em Quantopian, e "data [context. security]" é nós referenciando a chave por este nome no nosso dicionário de contexto.
Poderíamos chamar esses context. MA1 e context. MA2 se quisermos armazená-los no nosso dicionário de contexto e usá-lo fora do nosso método handle_data, mas não precisamos acessar esses dados fora daqui, então nós apenas os faremos variáveis ​​locais.
Agora que temos as médias móveis calculadas, estamos prontos para obter mais lógica. Para negociar, precisamos ter lógica como se os MAs se cruzassem, mas também, antes que possamos fazer um comércio, precisamos ver se temos dinheiro suficiente para fazer uma compra, precisamos saber o preço do segurança, e devemos verificar 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 para ver as posições atuais que temos ao fazer referência ao nosso contexto. Portfólio. Aqui, podemos fazer referência a todos os tipos de coisas em relação ao nosso portfólio, mas, agora mesmo, queremos verificar nossas posições. Isso retorna um dicionário de todas as suas posições, o valor, 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. amount no final.
Até agora, criamos as informações necessárias para que possamos saber antes de realmente usar alguma lógica para executar negócios, mas não escrevemos nada para realmente fazer a negociação. É o que vamos cobrir no próximo tutorial.

A linguagem de programação mais fácil para comerciantes.
Apresentando o TradeScript, nossa nova e poderosa linguagem de programação que permite aos comerciantes projetar sistemas de negociação sem experiência de programação prévia.
Para quem é?
O TradeScript é um componente de desenvolvimento projetado para desenvolvedores de software que desejam expandir o conjunto de recursos em seu aplicativo comercial fornecendo uma linguagem de script.
O TradeScript, como idioma, destina-se a comerciantes que precisam escrever suas próprias estratégias comerciais, mas não sabem como programar em linguagens de baixo nível, como C e C ++.
O TradeScript permite que os comerciantes desenvolvam sistemas de negociação rápida e sem esforço. É tão fácil como 1-2-3.
Com o TradeScript, você pode habilitar seu aplicativo comercial para executar scripts que fornecem alertas quando o preço de uma segurança (estoque, futuros ou forex) alcança uma nova alta, cruza uma média móvel ou reduz uma porcentagem definida, embora essas sejam apenas alguns exemplos. O TradeScript também pode escanear o mercado, gerar sinais comerciais, estratégias de negociação de back-test e muito mais.
Linguagens de programação de vetores.
Aplicativos comerciais mais populares, como o MetaStock & trade ;, TradeStation & trade ;, NinjaTrader & trade ;, MetaTrader & trade; e outros fornecem suas próprias linguagens de programação (como MQL4, MQL5, EasyLanguage, linguagem de script do MetaStock, etc.). Sem uma linguagem de programação, os comerciantes não conseguem desenvolver sistemas de negociação automatizados ou realizar back-testing de estratégias.
Uma linguagem de programação vetorial oferece flexibilidade extrema com uma curva mínima de aprendizado. Na verdade, em apenas cinco minutos, você pode começar a escrever com o TradeScript.
Então, o que é uma linguagem de programação vetorial e por que é tão fácil de aprender?
As linguagens de programação de vetor (também conhecidas como matriz ou linguagens multidimensionais) generalizam operações em escalares para serem aplicadas de forma transparente para vetores, matrizes e matrizes dimensionais superiores. A idéia por trás da programação vetorial é que as operações se aplicam de uma só vez a um conjunto inteiro de valores (um vetor ou campo). Isso permite que você pense e opere em agregados inteiros de dados, sem recorrer a laços explícitos de operações escalares individuais.
Em outras palavras, é semelhante ao macro idioma encontrado no Excel.
A linguagem de programação mais fácil para os comerciantes. O mais poderoso também.
Um exemplo: para calcular uma média móvel simples com base no preço médio de uma garantia em 30 dias, em uma linguagem de programação tradicional, como o BASIC, você precisaria escrever um programa semelhante ao código mostrado neste bloco de código.
Várias linhas de código seriam necessárias para criar o vetor "MedianAmedes". Mas com o TradeScript, você pode realizar a mesma coisa usando apenas uma linha de código como mostrado abaixo.
Para n = barra - 30 a barra.
mediana = (CLOSE + OPEN) / 2.
Média = Média + Média.
Médias médias (bar) = Média / 30.
E agora MedianAverage torna-se um novo vetor que contém a média móvel simples de 30 períodos do preço médio da segurança.
Não é incomum encontrar a linguagem de programação da matriz "one-liners" que requerem mais do que algumas páginas do código BASIC, Java ou C ++. O mesmo vale para a criação de sistemas de negociação para testes de volta e alertas comerciais.
O TradeScript foi originalmente projetado como uma linguagem de programação de alto desempenho para comerciantes de alta freqüência. Ele foi projetado para verificar mais de 100.000 ações com base em critérios técnicos complexos e retornar resultados instantâneos em menos de cinco milissegundos. Isso foi há mais de dez anos. Hoje é ainda mais rápido.
Voltar Testar estatísticas.
Além de um registro de comércio real, os resultados do teste de volta do TradeScript incluem mais de 24 resultados estatísticos: número total de negócios, número médio de negócios por período, número de negócios rentáveis, número de operações de perda, lucro total, perda total, lucro percentual, maior Lucro, maior perda, redução máxima, Drawdown máximo (Monte Carlo), índice mensal de valor agregado (VAMI), ROR mensal composto, desvio padrão, desvio padrão anualizado, desvio reverso, taxa de Sharpe, taxa Sharpe anual, razão Sortino, razão calmaria, e Sterling Ratio.
Solução de Desenvolvimento Rápido e Fácil.
Se você é um desenvolvedor de software, ficará surpreso ao saber que apenas leva cerca de 30 minutos para implementar o TradeScript em seu aplicativo comercial. O TradeScript vem com ajuda sensível ao contexto, e nosso Guia do Programador pode ser enviado com seu aplicativo. Adicionar um idioma de script ao seu aplicativo comercial não poderia ser mais fácil.
Comece com o TradeScript>
Implementação da plataforma de negociação M4.
O TradeScript é a linguagem de programação utilizada na nossa plataforma de negociação M4, onde executa negócios automatizados, processa alertas em tempo real, executa varreduras de estoque e sistemas de negociação de back-tests.
Disponível em C ++ e em versões C #.
O TradeScript está disponível em C ++ (x64 para melhor desempenho) e C # para desenvolver aplicativos da web. Ele vem com mais de 30 projetos de exemplo e suporte para desenvolvedores extensivos para ajudá-lo a implementar a biblioteca em seu projeto.
Cenários de desenvolvimento comuns.
O TradeScript é mais usado em um dos três cenários. Muitas vezes, é usado dentro de aplicativos de comércio de desktop, onde é incorporado no lado do cliente. Também é comumente usado no lado do servidor, onde executa estratégias para clientes finos, como aplicativos móveis e web. Outro cenário comum é onde o TradeScript é executado no lado do servidor, a fim de fornecer resultados de digitalização em tempo real para usuários da web e móveis.
Programação genética.
Um algoritmo genético pode ser integrado no TradeScript para criar um mecanismo autônomo de criação de sistemas comerciais. Verifique o nosso mecanismo de algoritmo genético Evo2, que vem com exemplos do TradeScript.
Estudo de caso.
O TradeScript é usado em várias aplicações comerciais populares, uma das quais é a plataforma WhenToTrade Cycles and Algorithm Gentic. O estudo de caso descreve como o TradeScript é implementado para realizar análise cíclica dos mercados.
O WhenToTrade Cycles e a GA Platform combinam análise técnica usando TradeScript e gráficos financeiros usando StockChartX com novos algoritmos para análise cíclica. A solução faz parte de um pacote de conhecimento completo e permite que os comerciantes apliquem as estratégias derivadas a todos os tipos de mercados e prazos.
Com o TradeScript, você pode:
Crie scripts automatizados de entrada de ordens Execute milhares de alertas simultâneas Crie testes de retorno e otimização de sistema de negociação Crie gráficos orientados por script e conselheiros especializados Obtenha resultados de fórmula em tempo real.
Por que escolher o módulo?
O Modulus é uma empresa de tecnologia financeira. Embora isso não pareça um diferencial real, é. Isso significa que nossas soluções são de nossos anos de experiência no setor de tecnologia financeira. Nossos produtos e serviços são fornecidos por desenvolvedores e engenheiros que possuem experiência de negociação de primeira mão. Todo mundo aqui no Modulus fala seu idioma.
Direitos autorais e cópia; 2002-2018 por Modulus Global, Inc., todos os direitos reservados.

Negociação de alta freqüência - HFT.
O que é 'High-Frequency Trading - HFT'
O comércio de alta freqüência (HFT) é uma plataforma de negociação de programas que usa computadores poderosos para realizar um grande número de pedidos em velocidades muito rápidas. Ele usa algoritmos complexos para analisar múltiplos mercados e executar ordens com base em condições de mercado. Normalmente, os comerciantes com as velocidades de execução mais rápidas são mais rentáveis ​​do que os comerciantes com velocidades de execução mais lentas.
BREAKING Down 'High-Frequency Trading - HFT'
Benefícios da HFT.
O principal benefício da HFT é que melhorou a liquidez do mercado e eliminou os spreads de oferta e solicitação que anteriormente seriam muito pequenos. Isso foi testado pela adição de taxas no HFT, e como resultado, os spreads de oferta e solicitação aumentaram. Um estudo avaliou a forma como os spreads de compra e oferta canadenses mudaram quando o governo introduziu taxas na HFT, e verificou-se que os spreads de oferta e solicitação aumentaram 9%.
Críticas de HFT.
A HFT é controversa e foi encontrada com críticas severas. Ele substituiu uma grande quantidade de broker-dealers e usa modelos e algoritmos matemáticos para tomar decisões, levando a decisão e a interação humana fora da equação. As decisões ocorrem em milisegundos, o que pode resultar em grandes movimentos no mercado sem razão. Por exemplo, em 6 de maio de 2018, a Dow Jones Industrial Average (DJIA) sofreu sua maior queda no ponto intradiário, diminuindo 1.000 pontos e caindo 10% em apenas 20 minutos antes de subir de novo. Uma investigação do governo culpou uma enorme ordem que desencadeou uma venda para o acidente.
Uma crítica adicional da HFT é que permite que as grandes empresas lucrem à custa dos "pequenos", ou dos investidores institucionais e de varejo. Outra queixa importante sobre a HFT é que a liquidez fornecida pela HFT é "liquidez fantasma", o que significa que fornece liquidez que está disponível para o mercado um segundo e foi a próxima, impedindo que os comerciantes realmente possam negociar essa liquidez.

Programação de estratégia de negociação
Olá e bem-vindo à parte 13 da série tutorial Python for Finance. Neste tutorial, vamos começar a falar sobre o back-testing da estratégia. O campo de teste de volta e os requisitos para fazê-lo direito são bastante maciços. Basicamente, o que é necessário para nós é criar um sistema que levará dados de preços históricos e simulará a negociação nesse ambiente e, em seguida, nos dará os resultados. Isso pode parecer simples, mas, para analisar a estratégia, precisamos rastrear um conjunto de métricas, como o que vendemos, quando, com que freqüência trocamos, o que nossa Beta e Alpha é, além de outras métricas, como a redução, Sharpe Relação, volatilidade, alavancagem e muito mais. Juntamente com isso, geralmente queremos visualizar tudo isso. Então, podemos escrever tudo isso a nós mesmos, ou podemos usar uma plataforma para nos ajudar com isso.
. É por isso que vamos introduzir a Quantopian, que é uma plataforma que nos permite escrever e testar as estratégias de negociação com Python facilmente.
O que o Quantopian faz é adicionar uma camada de GUI em cima da biblioteca de testes de Zipline para Python, além de um conjunto de fontes de dados, muitas das quais são completamente gratuitas para trabalhar. Você também pode obter alocações de capital da Quantopian, ao licenciar sua estratégia para elas se você 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 princípios de Quantopian primeiro. Uma vez que a partpian é alimentada por bibliotecas primariamente abertas, como Zipline, Alphalens e Pyfolio, você também pode executar uma plataforma semelhante a Quantopian localmente, se quiser. Eu acho que a maioria das pessoas interessadas em atuar localmente estão interessadas em manter seus algoritmos privados. A Quantopian não vê os seus algoritmos, a menos que você dê permissão, e a comunidade só vê seus algoritmos se os compartilhar. Eu altamente encorajar você a ver seu relacionamento com a Aspian não como um adversário, mas sim como uma parceria. Se você chegar com algo de alta qualidade, a Quespian está muito interessada em trabalhar com, e tem o financiamento para investir em você. Nessa relação, a Quantopian está trazendo a plataforma, o 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 faça login. Sinta-se à vontade para puxar um pouco. Os fóruns da comunidade de Quantopian são um ótimo lugar para absorver algum conhecimento. Quantopian também executa um concurso freqüente para preços em dinheiro. Vamos começar com os algoritmos. Uma vez lá, escolha o botão azul "novo algoritmo". Por enquanto, vamos passar a maior parte do tempo em dois lugares, que podem ser encontrados no botão "Meu Código". Para começar, iremos para algoritmos e criamos um novo algoritmo usando o botão azul "Algoritmo novo".
Quando você cria o algoritmo, você deve ser levado para sua página de algoritmos de edição ativa com o algoritmo clonado, que se parece com isso (menos as caixas coloridas) e algumas mudanças possivelmente para a IU.
Python Editor - É onde você codifica sua lógica Python para o algoritmo. Resultados do algoritmo construído - Quando você cria o algoritmo, os resultados gráficos aparecerão aqui. Saída de registro / erro - Qualquer informação de saída / log do console virá aqui. É comum que o seu programa libere vários bits de texto para depuração ou apenas para obter mais informações. Algoritmo de criaçã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 incorporado. Full Backtest - Isso executará um teste de retorno completo com base no seu algoritmo atual. Os testes completos completos 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 rever os testes de volta e visualizar o código exato que gerou um resultado específico.
O código de exemplo inicial é algo como:
O que é ótimo, mas talvez seja um pouco demais para começar. Quantopian também fornece alguns algoritmos de exemplo se sua conta for nova. Sinta-se livre para verificar esses, mas você pode achar que eles são confusos. As únicas duas funções que você precisa em cada algoritmo são: initialize e handle_data. A função de inicialização é executada uma vez, no início do seu script. Você usará isso para configurar globals 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 do mercado.
Vamos escrever nossa estratégia simples para ficar confortável com o Lespian. Vamos implementar uma estratégia de cruzamento de média móvel simples e ver como isso acontece.
Se você não está familiarizado com as médias móveis, o que faz é ter um certo número de "janelas" de dados. No caso de correr contra preços diários, uma janela seria um dia. Se você tivesse uma média móvel de 20, isso significaria uma média móvel de 20 dias. A partir daqui, a idéia é dizer que você tem uma média móvel de 20 e uma média móvel de 50. Traçar isso em um gráfico pode parecer 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 idéia é que quando a média móvel de 20, que reage mais rápido, ultrapassa a média móvel de 50, isso significa que o preço pode estar tendendo, e podemos querer investir. Por outro lado, se a média móvel de 20 cai abaixo da média móvel de 50, isso indica talvez que o preço está a diminuir, e que queremos vender ou investir, ou mesmo vender a empresa, onde você apostou.
Para os nossos propósitos aqui, apliquemos uma estratégia de cruzamento em média móvel para a Apple (AAPL), entre as datas de 7 de outubro de 2018 e 7 de outubro de 2018. Para esse período, as ações da AAPL diminuíram, e depois, com muito pouca mudança líquida global . Nossa estratégia de cruzamento deve, espero, ficar longe ou curto (apostar contra) à medida que o preço cai e, em seguida, pular quando o preço está aumentando. O shorting de uma empresa implica o empréstimo de partes de outra pessoa, vendendo-as e, em seguida, reabastecimento das ações em uma data posterior. Sua esperança é que o preço das ações caia, e você os recompõe de volta muito mais barato e dê ao proprietário original suas ações, embolando a diferença. Para começar, vamos construir o método de inicialização:
Por enquanto, vamos definir o nosso estoque de maçã. Se você realmente começar a digitar o sid (o Quantopian possui uma funcionalidade de preenchimento automático agradável, onde você pode começar a digitar o nome da empresa ou o símbolo do ticker para encontrar o sid. O motivo para usar o sid é porque os tickers da empresa podem mudar ao longo de períodos de tempo . Esta é uma maneira de garantir que você esteja recebendo o ticker que você realmente pretende obter. Você também pode usar o símbolo () para usar o ticker e tornar seu código um pouco mais fácil de ler, mas isso não é recomendado , uma vez que o ticker pode mudar.
Toda vez que você cria um algoritmo com Zipline ou Quantopian, você precisará ter os métodos initialize e handle_data.
O método de inicialização é 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 de inicialização, passamos esse parâmetro de contexto. Contexto é um dicionário de Python, que é o que usaremos para rastrear o que de outra forma poderemos usar variáveis ​​globais. Simplificando, a variável de contexto é usada para rastrear nossa atual situação de investimento, com coisas como nossa carteira e dinheiro.
Em seguida, ainda precisamos da nossa função handle_data. Esta função leva contexto e dados como parâmetros.
O parâmetro de contexto já foi explicado e a variável de dados é usada para rastrear o ambiente fora do nosso portfólio atual. Isso rastreia coisas como preços de ações e outras informações sobre empresas nas quais podemos ser investidos, ou não, mas são empresas que estamos rastreando.
Para iniciar a função handle_data:
Podemos usar o método. history para obter os preços históricos da Apple, nos últimos 50 dias, em intervalos de 1 dia. Agora podemos fazer:
O valor sma_50 é apenas o que é a média / média para os dados do histórico que acabamos de tirar. O sma_20 é os últimos 20 dias de dados. Observe que isso está contido no método handle_data, que é executado para todos os períodos, então é tudo o que temos a fazer para rastrear os valores diários das médias móveis 50 e 20 simples.
No próximo tutorial, vamos falar sobre fazer pedidos.

Comments