Friday, 9 March 2018

Algo trading strategies python


Python Algorithmic Trading Library.
PyAlgoTrade é uma Biblioteca de Negociação Algorítmica Python com foco em backtesting e suporte para negociação de papel e negociação ao vivo. Digamos que você tenha uma idéia de uma estratégia de negociação e que você gostaria de avaliá-la com dados históricos e ver como ela se comporta. PyAlgoTrade permite que você faça isso com um esforço mínimo.
Principais características.
Totalmente documentado. Evento conduzido. Suporta pedidos Market, Limit, Stop e StopLimit. Suporta Yahoo! Finanças, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados da série temporal no formato CSV, por exemplo, Quandl. Suporte comercial Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas Bollinger, Expositores Hurst e outros. Métricas de desempenho como a taxa de Sharpe e análise de redução. Manipulação de eventos do Twitter em tempo real. Perfil de eventos. Integração TA-Lib.
Muito fácil de dimensionar horizontalmente, ou seja, usando um ou mais computadores para testar uma estratégia.
PyAlgoTrade é gratuito, de código aberto e está licenciado sob a Licença Apache, Versão 2.0.

Estratégias comerciais Algo python
Se você é um comerciante ou um investidor e gostaria de adquirir um conjunto de habilidades de negociação quantitativas, você está no lugar certo.
O curso Trading With Python irá fornecer-lhe as melhores ferramentas e práticas para pesquisa de negociação quantitativa, incluindo funções e scripts escritos por comerciantes quantitativos especializados. O curso dá o máximo impacto para o seu tempo investido e dinheiro. Ele se concentra na aplicação prática da programação ao comércio e não à informática teórica. O curso irá pagar por si mesmo rapidamente, economizando tempo no processamento manual de dados. Você passará mais tempo pesquisando sua estratégia e implementando negócios lucrativos.
Visão geral do curso.
Parte 1: princípios Você vai aprender por que a Python é uma ferramenta ideal para negociação quantitativa. Começaremos pela criação de um ambiente de desenvolvimento e, em seguida, apresentaremos as bibliotecas científicas.
Parte 2: Manipulação dos dados Saiba 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: estratégias de pesquisa Aprenda a calcular o P & L e as métricas de desempenho acompanhantes, como Sharpe e Drawdown. Desenvolva uma estratégia de negociação e otimize seu desempenho. Múltiplos exemplos de estratégias são discutidos nesta parte.
Parte 4: Indo ao vivo! Esta parte é centrada em torno da Interactive Brokers API. Você aprenderá como obter dados em estoque em tempo real e colocar ordens ao vivo.
Muitos códigos de exemplo.
O material do curso consiste em "cadernos" que contêm texto junto com um código interativo como este. Você poderá aprender interagindo com o código e modificando-o para seu próprio gosto. Será um excelente ponto de partida para escrever suas próprias estratégias.
Embora alguns tópicos sejam explicados em grande detalhe para ajudá-lo a entender os conceitos subjacentes, na maioria dos casos você nem precisa escrever seu próprio código de baixo nível, devido ao suporte de bibliotecas de código aberto existentes:
A biblioteca TradingWithPython combina uma grande parte da funcionalidade discutida neste curso como uma função pronta para usar e será usada ao longo do curso. Pandas irá fornecer-lhe todo o poder de levantamento pesado necessário no trituraçã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 2018, é o que os alunos conseguiram dizer:
Matej curso bem projetado e bom treinador. Definitivamente valeu o preço e meu tempo, Lave Jev, obviamente, conhecia suas coisas. A profundidade de cobertura foi perfeita. Se Jev executar algo assim novamente, serei o primeiro a se inscrever. John Phillips Seu curso realmente me fez começar a pensar em python para a análise do sistema de estoque.

Comércio com Python.
Sábado, 20 de maio de 2017.
Yahoo está morto, Viva Yahoo!
Nota: os dados fornecidos parecem ser ajustados para divisões, mas não para dividendos.
Sábado, 20 de fevereiro de 2018.
Uma vantagem estatística simples em SPY.
Ocorreu-me que, na maioria das vezes, há muita conversa na mídia sobre o mercado que cai (depois de grandes perdas ao longo do período de tempo), uma recuperação bastante significativa às vezes segue.
No passado, cometi alguns erros ao fechar minhas posições para reduzir as perdas, apenas para perder uma recuperação nos próximos dias.
Após um período de perdas consecutivas, muitos comerciantes liquidarão suas posições por medo de perda ainda maior. Grande parte desse comportamento é governado pelo medo, ao invés de risco calculado. Comerciantes mais inteligentes entram nas pechinchas.
Depois de três perdas ou mais, percorrer o tempo. Sair no próximo fechamento.
Isso não parece nada mal! Olhando para os índices de sharpe, a estratégia classifica uma descida 2.2 versus 0.44 para os B e H. Na verdade, isso é muito bom! (Não fique excitado demais, pois não contai com custos de comissão, derrapagem, etc.).
Embora a estratégia acima não seja algo que eu gostaria de negociar simplesmente por causa do longo período de tempo, a própria teoria provoca mais pensamentos que poderiam produzir algo útil. Se o mesmo princípio se aplica aos dados intradiários, uma forma de estratégia de escalação poderia ser construída. No exemplo acima, simplifiquei o mundo um pouco apenas contando o * número * dos dias baixos, sem prestar atenção à profundidade da retirada. Além disso, a saída da posição é apenas um "próximo dia próximo" básico. Há muito a ser melhorado, mas a essência na minha opinião é esta:
Segunda-feira, 17 de novembro de 2017.
Trading VXX com previsão de vizinhos mais próximos.
Minha definição desses dois é:
volatilidade premium = VIX-realizadoVol delta (inclinação da estrutura do termo) = VIX-VXV.
Combinar tanto premium como delta em um modelo foi um desafio para mim, mas sempre quis fazer uma aproximação estatística. Em essência, para uma combinação de (delta, premium), gostaria de encontrar todos os valores históricos mais próximos dos valores atuais e fazer uma estimativa dos retornos futuros com base neles. Algumas vezes eu comecei a escrever meus próprios algoritmos de interpolação de vizinho mais próximo, mas sempre que eu tinha que desistir. até encontrar a regressão dos vizinhos mais próximos. Isso me permitiu construir rapidamente um preditor com base em duas entradas e os resultados são tão bons, que estou um pouco preocupado por ter cometido um erro em algum lugar.
crie um conjunto de dados de [delta, premium] - & gt; [Retorno do VXX no próximo dia] (na amostra) crie um preditor vizinho mais próximo baseado no conjunto de dados acima da estratégia de comércio (fora da amostra) com as regras: vá longo se for previsto o retorno & gt; 0 vá curto se for previsto o retorno & lt; 0.
Nas duas últimas parcelas, a estratégia parece executar o mesmo dentro e fora da amostra. O índice Sharpe é de cerca de 2,3.
Estou muito satisfeito com os resultados e tenho a sensação de que eu apenas estava riscando a superfície do que é possível com esta técnica.
Quarta-feira, 16 de julho de 2017.
Módulo de backtesting simples.
Minha busca de uma ferramenta de backtesting ideal (minha definição de "ideal" é descrita nas postagens anteriores de "dilemas de Backtesting") não resultou em algo que eu poderia usar de imediato. No entanto, revisar as opções disponíveis me ajudou a entender melhor o que eu realmente quero. Das opções que eu olhei, pybacktest foi o que mais gostei por causa de sua simplicidade e velocidade. Depois de passar pelo código-fonte, tenho algumas idéias para torná-lo mais simples e um pouco mais elegante. A partir daí, foi apenas um pequeno passo para escrever meu próprio backtester, que agora está disponível na biblioteca TradingWithPython.
encontrar entrada e sair - & gt; calcular pnl e fazer parcelas com backtester - & gt; dados da estratégia pós-processo.
Sábado, 7 de junho de 2017.
Impulsionando o desempenho com Cython.
5k amostras como dados de teste. Aqui vem a versão original da minha função de redução (como agora é implementada na biblioteca TradingWithPython)
Hmm 1,2 segundos não é muito rápido para uma função tão simples. Há algumas coisas aqui que podem ser um excelente arrastar para o desempenho, como uma lista * highwatermark * que está sendo anexado em cada iteração de loop. Acessar a Série pelo seu índice também deve envolver algum processamento que não seja estritamente necessário. Vamos dar uma olhada no que acontece quando esta função é reescrita para trabalhar com dados numpy.
Bem, isso é muito mais rápido do que a função original, aproximadamente 40x de aumento de velocidade. Ainda há muito espaço para melhorar ao mudar para o código compilado com o cython. Agora eu reescrevo a função dd acima, mas usando dicas de otimização encontradas no tutorial do cython. Note que esta é a minha primeira tentativa de otimizar funções com o Cython.
Uau, esta versão é executada em 122 micro segundos, tornando-o dez mil vezes mais rápido que a minha versão original! Devo dizer que estou muito impressionado com o que as equipes de Cython e IPython conseguiram! A velocidade em comparação com a facilidade de uso é incrível!
P. S. Eu costumava fazer otimizações de código em Matlab usando o C puro e o wrapper de. mex, tudo era apenas uma dor no burro em comparação com isso.
Terça-feira, 27 de maio de 2017.
Dilemas de backtesting: revisão de pyalgotrade.
Primeira impressão: desenvolvido ativamente, documentação bastante boa, mais do que suficientes feautures (indicadores de TA, otimizadores, etc.). Parece bom, então continuei com a instalação, que também funcionou sem problemas.
O tutorial parece estar um pouco desactualizado, já que o primeiro comando yahoofinance. get_daily_csv () lança um erro sobre a função desconhecida. Não há preocupações, a documentação está atualizada e acho que a função ausente agora é renomeada para yahoofinance. download_daily_bars (símbolo, ano, csvFile). O problema é que esta função apenas faz o download de dados por um ano em vez de tudo, desde aquele ano até a data atual. Tão bonito, inútil.
Depois que eu baixei os dados e salvou-o para o csv, eu precisava ajustar os nomes das colunas, porque aparentemente o pyalgotrade espera que Date, Adj Close, Close, High, Low, Open, Volume estejam no cabeçalho. Isso é um problema menor.
Após o teste de desempenho em uma estratégia SMA que é fornecida no tutorial. O meu conjunto de dados consiste em 5370 dias de SPY:
Isso é bastante bom para uma estrutura baseada em eventos.
Mas tentei buscar documentação sobre a funcionalidade necessária para espalhar spreads e múltiplas carteiras de ativos e simplesmente não encontrou nenhuma. Então eu tentei encontrar uma maneira de alimentar pandas DataFrame como uma entrada para uma estratégia e não é possível, o que é novamente uma grande decepção. Não afirmei como um requisito na publicação anterior, mas agora chego a perceber que o suporte de pandas é uma obrigação para qualquer estrutura que funcione com dados da série temporal. Pandas foi uma razão para eu mudar de Matlab para Python e nunca mais quero voltar.
Conclusão pyalgotrade não cumpre meu requisito de flexibilidade. Parece que foi projetado com TA clássico em mente e comércio de instrumentos individuais. Eu não vejo isso como uma boa ferramenta para estratégias de backtesting que envolvem vários ativos, hedging etc.
Segunda-feira, 26 de maio de 2017.
Dilemas de backtesting.
Seja uma boa aproximação do mundo real. Este é, claro, o requisito mais importante. Permita flexibilidade ilimitada: as ferramentas não devem impedir o teste de idéias prontas. Tudo o que pode ser quantificado deve ser utilizável. Seja fácil de implementar & amp; manter. É tudo sobre produtividade e ser capaz de testar muitas idéias para encontrar uma que funcione. Permitir varredura de parâmetros, testes avançados e otimizações. Isso é necessário para investigar o desempenho e a estabilidade da estratégia, dependendo dos parâmetros da estratégia. O problema de satisfazer todos os requisitos acima é que # 2 e # 3 são conflitantes. Não há nenhuma ferramenta que possa fazer tudo sem o custo de alta complexidade (= baixa manutenção). Normalmente, uma ferramenta de ponto e clique de terceiros limitará severamente a liberdade para testar com sinais personalizados e portfólios ímpares, enquanto que na outra extremidade do espectro, uma solução diy com codificação personalizada exigirá dezenas ou mais horas para implementar com altas chances de terminando com código desordenado e ilegível. Então, na tentativa de combinar o melhor dos dois mundos, vamos começar alguns lugares no meio: use uma estrutura de backtesting existente e adapte-a ao nosso gosto.
Nas seguintes postagens, eu estarei olhando três candidatos possíveis que eu encontrei:
A Zipline é amplamente conhecida e é o motor por trás da Pyonggotpia da Lospian parece estar ativamente desenvolvido e o bem-documentado pybacktest é uma estrutura leve baseada em vetor que pode ser interessante por causa de sua simplicidade e desempenho. Eu estarei olhando a adequação dessas ferramentas comparando-as contra uma estratégia de negociação hipotética. Se nenhuma dessas opções se adequar aos meus requisitos, eu terei que decidir se eu quero investir na escrita da minha própria estrutura (pelo menos, olhando as opções disponíveis I & # 8217; saberá o que não funciona) ou fique com código personalizado para cada estratégia.
O primeiro para a avaliação é Zipline.
Minha primeira impressão de Zipline e Quantopian é positiva. A Zipline é apoiada por uma equipe de desenvolvedores e é testada em produção, então a qualidade (bugs) deve ser excelente. Há uma boa documentação no site e um exemplo de caderno no github.
Para arrumar isso, baixei o notebook do exampe e comecei a jogar com ele. Para minha decepção, rapidamente me deparo com o primeiro exemplo, Algoritmo de Zipline Simplest: Compre a Apple. O conjunto de dados tem apenas 3028 dias, mas executar este exemplo demorou para sempre. Aqui é o que eu medei:
Eu não esperava um desempenho estelar como o tirolesa é um backtester baseado em eventos, mas quase um minuto para 3000 amostras é muito ruim. Esse tipo de desempenho seria proibitivo para qualquer tipo de digitalização ou otimização. Outro problema surgirá ao trabalhar com conjuntos de dados maiores, como dados intradiários ou vários títulos, que podem conter facilmente centenas de milhares de amostras.
Infelizmente, eu vou ter que descartar Zipline da lista de backtesters utilizáveis, pois não atende a minha exigência # 4 por uma margem de gordura.
Na próxima publicação, eu vou olhar para PyAlgotrade.
Nota: Meu sistema atual tem alguns anos, executando um AMD Athlon II X2 @ 2800MHZ com 3 GB de RAM. Com o backtesting baseado em vetor I & # 8217; m usado para tempos de cálculo de menos de um segundo para um único backtest e um minuto ou dois para uma verificação de parâmetros. Um teste básico walk-forward com 10 passos e uma varredura de parâmetros para grade 20x20 resultaria em uma frequência de 66 horas com tirolesa. Não é tão paitient.
Quarta-feira, 15 de janeiro de 2017.
Iniciando o IPython notebook a partir do arquivo Windows exlorer.
Segunda-feira, 13 de janeiro de 2017.
ETFs com alavancas em 2018, onde está sua decadência agora?
Conhecendo o comportamento alavancado de etf, eu esperaria que esses resultados melhorassem seu benchmark, então a estratégia que tentaria lucrar com a deterioração perderia dinheiro.
Uma vez que normalizamos os preços para 100 $ no início do período de atraso (250 dias), é evidente que o 2x etf supera 1x etf.
O código fonte completo dos cálculos está disponível para os assinantes do curso Trading With Python. Caderno # 307.
Quinta-feira, 2 de janeiro de 2017.
Colocando um preço na TWTR.
Preço derivado do valor do usuário.
O TWTR é atualmente mais valioso por usuário que não é FB ou LNKD. Isso não é lógico, pois ambos os concorrentes têm mais valiosos dados de usuários pessoais à sua disposição. O GOOG tem se destacado na extração de receita de anúncios de seus usuários. Para fazer isso, tem um conjunto de ofertas altamente diversificadas, do mecanismo de busca para Google+, Docs e Gmail. TWTR não tem nada parecido com isso, enquanto seu valor por usuário é apenas 35% menor que o do Google. A TWTR tem um espaço limitado para aumentar a base de usuários, pois não oferece produtos comparáveis ​​às ofertas do FB ou do GOOG. TWTR tem sido em torno de sete anos agora e a maioria das pessoas que desejam um accout tem sua chance. O resto simplesmente não se importa. A base de usuários TWTR é volátil e é provável que se mova para o próximo hot thing quando ele estará disponível.
Preço derivado de ganhos futuros.
Conclusão.
Quinta-feira, 19 de setembro de 2018.
Curso de negociação com Python disponível!
Domingo, 18 de agosto de 2018.
Estratégia VXX curta.
Em um mundo ideal, se você segurar o tempo suficiente, um lucro gerado pela queda do tempo nos futuros e o reequilíbrio é garantido, mas, no curto prazo, você teria que passar por algumas retiradas bastante pesadas. Basta olhar para trás no verão de 2018. Fui lamentável (ou tolo) o suficiente para manter uma curta posição VXX logo antes do VIX subir. Eu quase explodi minha conta até então: 80% de redução em apenas alguns dias, resultando em uma ameaça de chamada de margem por meu corretor. Margin Call significaria cobrar a perda. Esta não é uma situação em que eu gostaria de estar novamente. Eu sabia que não seria fácil manter a cabeça fresca em todos os momentos, mas experimentar o estresse e a pressão da situação era algo diferente. Felizmente, eu sabia como VXX tende a comportar-se, então não entrei em pânico, mas troquei de lado para XIV para evitar uma chamada de margem. A história acaba bem, 8 meses depois, meu portfólio voltou à força e eu aprendi uma lição muito valiosa.
Dito isto, vamos dar uma olhada em uma estratégia que minimiza alguns dos riscos ao curvar o VXX somente quando for apropriado.
O gráfico acima mostra dados VIX-VXV desde janeiro de 2018. Os pontos de dados do ano passado são mostrados em vermelho.
Eu escolhi usar um ajuste quadrático entre os dois, aproximando VXV = f (VIX). O f (VIX) é plotado como uma linha azul.
Os valores acima da linha representam a situação quando os futuros estão em contango mais forte do que o normal. Agora eu defino um indicador delta, que é o desvio do ajuste: delta = VXV-f (VIX).
É evidente que áreas verdes correspondem a retornos negativos no VXX.
Short VXX quando delta & gt; 0 Capital constante (aposta em cada dia é de 100 $) Não há custos de deslizamento ou de transação.
Obtendo um pequeno volume de BATS.
Quinta-feira, 15 de agosto de 2018.
Construindo um indicador a partir de dados de curto volume.
Precisamos de mais informações adicionais ao que contém o preço para fazer um palpite mais informado sobre o que acontecerá no futuro próximo. Um excelente exemplo de combinar todo tipo de informações com uma análise inteligente pode ser encontrado no blog Short Side of Long. Produzir esse tipo de análise exige uma grande quantidade de trabalho, para o qual eu simplesmente não tenho tempo, pois só negocio a tempo parcial.
Então eu criei o meu próprio "painel de bordo do mercado" que coleciona informações automaticamente para mim e a apresenta de forma facilmente digerível. Nesta publicação, vou mostrar como criar um indicador com base em dados de curto volume. Esta publicação irá ilustrar o processo de coleta e processamento de dados.
A troca de BATS fornece dados de volume diários gratuitamente em seu site.
Os dados de curto volume da troca do BATS estão contidos em um arquivo de texto que é compactado. Cada dia tem seu próprio arquivo zip. Depois de baixar e descompactar o arquivo txt, isso é o que está dentro (primeiro várias linhas):
Esses dados precisam de algum trabalho antes que ele possa ser apresentado de forma significativa.
O que eu realmente quero não é apenas os dados de um dia, mas uma proporção de volume curto para volume total nos últimos anos, e eu realmente não sinto como baixar 500 arquivos zip e copiá-los em excel manualmente.
Por sorte, a automação total é apenas um par de linhas de código:
Primeiro, precisamos criar dinamicamente um URL a partir do qual um arquivo será baixado:
Passo 5: Faça um gráfico:
Domingo, 17 de março de 2018.
Negociação com curso Python - atualização de status.
A partir de hoje, vou preparar um novo site e material para o curso, que começará na segunda semana de abril.
Quinta-feira, 12 de janeiro de 2018.
Reconstruindo VXX a partir de dados futuros do CBOE.
Os scripts abaixo automatizam esse processo. O primeiro, downloadVixFutures. py, obtém os dados do cboe, salva cada arquivo em um diretório de dados e os combina em um único arquivo csv, vix_futures. csv.
O segundo script reconstituir VXX. p.p. analisa o vix_futures. csv, calcula os retornos diários do VXX e salva os resultados para reconstruídoVXX. csv.
Para verificar os cálculos, comparei meus resultados simulados com os dados do índice SPVXSTR, os dois concordam muito bem, veja os gráficos abaixo.
Código para reconstruir o VXX.
Segunda-feira, 26 de dezembro de 2018.
howto: padrão de observador.
Uma classe de ouvinte pode ser de qualquer tipo, aqui eu faço um monte de classes de ExampleListener, chamado Bob, Dave & amp; Charlie. Todos eles têm um método, isto é, está inscrito no remetente. A única coisa especial sobre o método inscrito é que deve conter três parâmetros: remetente, evento, mensagem. Sender é a referência de classe da classe Remetente, então um ouvinte saberia quem enviou a mensagem. O evento é um identificador, pelo qual geralmente uso uma string. Opcionalmente, uma mensagem é o dado que é passado para uma função.
Um detalhe agradável é que, se um método de ouvinte lança uma exceção, ele é automaticamente cancelado a inscrição em outros eventos.
Quarta-feira, 14 de dezembro de 2018.
Ploting with guiqwt.
aquisição de dados: ibpy & amp; tradingWithPython. lib. yahooData - verificar.
recipiente de dados: pandas e amp; sqlite - cheque.
biblioteca de gráficos: matplotlib - ehm. Não.
Mas, como muitas vezes acontece com o Python, alguém, em algum lugar, já escreveu um kit de ferramentas kick-ass que é perfeito para o trabalho. E parece que o guiqt é apenas isso. Os gráficos interativos são apenas algumas linhas de código agora, veja um exemplo aqui: Criando caixa de diálogo de curva. Para isso eu usei um exemplo de código de guiqwt com alguns ajustes menores.
. Se eu soubesse como definir datas no eixo dos x.
Sexta-feira, 4 de novembro de 2018.
Como configurar o ambiente de desenvolvimento do Python.
2. Instale Tortoise SVN. Este é um utilitário que você precisa para extrair o código-fonte do Google Code.
3. Instalar Pandas (biblioteca de séries temporais)
Para obter o código, use o menu de contexto 'Windows Svn Checkout' do Windows Explorer que esteja disponível após a instalação do Tortoise SVN. Marque assim (mude o diretório Checkout para o local desejado, mas deve terminar com tradingWithPython):
Ok, tudo pronto, agora você pode executar os exemplos de \ cookbok dir.
Sexta-feira, 28 de outubro de 2018.
Os pandios kung fu resolverão seus problemas de dados.
Há algum tempo, encontrei um conjunto de ferramentas de análise de dados, especialmente adequado para trabalhar com dados financeiros. Depois de apenas arranhar a superfície de suas capacidades, eu já estou impressionado com o que entrega. O pacote está sendo desenvolvido ativamente por Wes McKinney e sua ambição é criar a ferramenta de análise / manipulação de dados de código aberto mais poderosa e flexível disponível. Bem, acho que ele está bem no caminho!
Aqui está o resultado:
Cara, isso poderia me salvar uma tonelada de tempo! Mas ainda vai me ajudar no futuro, pois vou usar seu objeto DataFrame como padrão no meu trabalho adicional.

AlgoTrader Algorithmic Trading Software.
O AlgoTrader é a primeira solução de software de negociação algorítmica totalmente integrada para fundos hedge quantitativos. Ele permite a automação de estratégias de negociação complexas e quantitativas em mercados de ações, Forex e Derivados. O AlgoTrader fornece tudo o que um fundo de hedge quantitativo típico precisa diariamente para executar sua operação e é o primeiro e único produto de software de negociação algorítmica para permitir o comércio automatizado de Bitcoin e outras Cryptocurrencies.
AlgoTrader Benefícios.
Automatizado - Qualquer estratégia de negociação quantitativa pode ser totalmente automatizada.
Rápido - Os altos volumes de dados de mercado são processados, analisados ​​e atuados automaticamente em velocidade ultra alta.
Customizable - Arquitetura de código aberto pode ser personalizada para requisitos específicos do usuário.
Rentável: a negociação totalmente automatizada e os recursos internos reduzem o custo.
Confiável - Construído na arquitetura mais robusta e tecnologia de ponta.
Totalmente suportado - orientação abrangente disponível para instalação e personalização. Treinamento e consultoria no local e remoto disponíveis.
Recursos do AlgoTrader.
AlgoTrader, como funciona.
Qualquer estratégia de negociação baseada em regras pode ser totalmente automatizada:
Chegam dados eletrônicos do mercado. Os dados são encaminhados para estratégias de negociação em execução no AlgoTrader. As estratégias de negociação analisam, filtram e processam dados de mercado e criam sinais comerciais. Com base em sinais comerciais, as ações são executadas (por exemplo, colocando um pedido ou fechando uma posição). As encomendas são enviadas para os respectivos mercados.
AlgoTrader Services & # 038; Treinamento.
Consulta e treinamento no local e remoto: Automação e migração de estratégias existentes Melhorando e otimizando estratégias existentes Protótipos e backtesting de novas estratégias Desenvolvimento de funcionalidades personalizadas Documentação completa e guias de usuários.
Últimas notícias.
AlgoTrader entre os 5 vencedores do Swisscom Startup Challenge de 17 a 20 de agosto de 2010.
Apresentando o AlgoTrader 4.0 - Repleto de novos recursos poderosos Jul-17-2017.
O AlgoTrader faz parte do Swiss National Fintech Team 2017 Jun-12-2017.
Testemunhos.
A Vontobel aprecia a arquitetura aberta e extensível do AlgoTrader, bem como o uso de componentes de código aberto padrão usados ​​como o Esper e o Spring.
Benjamin Huber, chefe da Algo Trading & # 038; Smart Order Routing, Bank Vontobel AG, Zürich.
Estamos impressionados com as capacidades da AlgoTrader em termos de desenvolvimento estratégico e flexibilidade técnica. O AlgoTrader é a tecnologia chave que nos permite negociar várias estratégias VIX Future e Option em paralelo.
Raimond Schuster, Membro da Comissão Executiva, ISP Securities AG, Zürich.
Todos os direitos reservados.
Links Sociais.
Endereço inferior.
Suíça Ligue-nos: +41 44 291 14 85 Email:
1. Vá para aws. amazon e clique em & # 8220; Inicie sessão na consola & # 8221; (veja a imagem abaixo)
2. Se ainda não possui uma conta Amazon AWS, siga o processo de registro clicando em "Criar conta AWS"
3. Uma vez conectado ao console Amazon AWS, selecione "Minha conta" no menu no lado superior direito da tela sob seu nome de usuário.
4. Na próxima tela, você verá o ID de Amazon de 12 dígitos exibido em "Configurações da conta"
OS TERMOS E CONDIÇÕES DO CONTRATO DE LICENÇA DO USUÁRIO FINAL (& # 8220; ACORDO & # 8221;) GOVERNECE O USO DO SOFTWARE A MENOS QUE VOCÊ E O LICENCIANTE EXECUTAM UM ACORDO DE LICENÇA ESCRITO SEPARADO QUE REGULA O USO DO SOFTWARE.
O Licenciador está disposto a conceder a licença do Software apenas mediante a condição de você aceitar todos os termos contidos neste Contrato. Ao assinar este Contrato ou ao fazer download, instalar ou usar o Software, você indicou que entendeu este Contrato e aceita todos os seus termos. Se você não aceitar todos os termos deste Contrato, então o Licenciador não está disposto a licenciar o Software, e você não pode baixar, instalar ou usar o Software.
1. CONCESSÃO DE LICENÇA.
uma. Licença de Uso de Avaliação e Uso de Avaliação. Sujeito à sua conformidade com os termos e condições deste Contrato, o Licenciante concede a você uma licença pessoal, não exclusiva e não transferível, sem o direito de sublicenciar, durante o termo deste Contrato, usar o Software exclusivamente para Uso de avaliação e uso de desenvolvimento. Os produtos ou módulos de software de terceiros fornecidos pelo Licenciante, se houver, podem ser usados ​​exclusivamente com o Software e podem estar sujeitos à aceitação dos termos e condições fornecidos por esses terceiros. Quando a licença terminar, você deve parar de usar o Software e desinstalar todas as instâncias. Todos os direitos não especificamente concedidos aqui são conservados pelo Licenciador. O desenvolvedor não deve fazer nenhum uso comercial do Software, ou qualquer trabalho derivado dele (incluindo para fins de negócios internos do Desenvolvedor). Copiando e redistribuindo, de qualquer forma, o Software ou o Aplicativo de desenvolvedor para seus clientes diretos ou indiretos é proibido.
b. Licença de uso de produção. Sujeito à sua conformidade com os termos e condições deste Contrato, incluindo o pagamento da taxa de licença aplicável, o Licenciante concede a você uma licença não exclusiva e não transferível, sem o direito de sublicenciar, durante o termo deste Contrato, para : (a) use e reproduza o Software exclusivamente para seus próprios fins de negócios internos (& # 8220; Uso de Produção; # 8221;); e (b) fazer um número razoável de cópias do Software apenas para fins de backup. Essa licença é limitada ao número específico de CPUs (se licenciado pela CPU) ou instâncias de Java Virtual Machines (se licenças por máquina virtual) para as quais você pagou uma taxa de licença. O uso do Software em uma maior quantidade de CPUs ou instâncias de Java Virtual Machines exigirá o pagamento de uma taxa de licença adicional. Os produtos ou módulos de software de terceiros fornecidos pelo Licenciador, se houver, podem ser utilizados exclusivamente com o Software.
c. Não existem outros direitos. Os seus direitos e o uso do Software são limitados aos expressamente concedidos nesta Seção 1. Você não fará nenhum outro uso do Software. Exceto quando expressamente licenciado nesta Seção, o Licenciante não lhe concede outros direitos ou licenças, por implicação, impedimento ou de outra forma. TODOS OS DIREITOS NÃO CONCEDIDOS EXPRESSAMENTE AQUI SÃO RESERVADOS PELO LICENCIANTE OU SEUS FORNECEDORES.
2. RESTRIÇÕES.
Exceto conforme expressamente previsto na Seção 1, você não: (a) modificará, traduzirá, desmontará, criará obras derivadas do Software ou copiará o Software; (b) alugar, emprestar, transferir, distribuir ou conceder quaisquer direitos no Software de qualquer forma a qualquer pessoa; (c) fornecer, divulgar, divulgar ou disponibilizar, ou permitir o uso do Software, por qualquer terceiro; (d) publicar qualquer benchmark ou teste de desempenho executado no Software ou qualquer parte dele; ou (e) remover quaisquer avisos de propriedade, rótulos ou marcas no Software. Você não distribuirá o Software a qualquer pessoa em uma base autônoma ou em um fabricante de equipamento original (OEM).
3. PROPRIEDADE.
Entre as partes, o Software é e permanecerá propriedade única e exclusiva do Licenciador, incluindo todos os direitos de propriedade intelectual nele contidos.
uma. No caso de você usar o Software sob a licença estabelecida na Seção 1 (a), este Contrato permanecerá em vigor durante o período de avaliação ou desenvolvimento.
b. No caso de você usar o Software sob a licença estabelecida na Seção 1 (b), este Contrato permanecerá em vigor, seja (a) por um período de um ano, se adquirido como uma licença de assinatura anual ou (b) perpetuamente se comprado como um licença perpétua. Uma licença de assinatura anual será renovada automaticamente por um ano, a menos que seja encerrado com aviso prévio de um mês. Este Contrato terminará automaticamente sem aviso prévio se você violar qualquer termo deste Contrato. Após a rescisão, você deve imediatamente deixar de usar o Software e destruir todas as cópias do Software em sua posse ou controle.
5. SERVIÇOS DE APOIO.
Se você comprou esta licença, incluindo Serviços de Suporte, isso inclui Lançamentos de Manutenção (Atualizações e Atualizações), suporte por telefone e suporte por e-mail ou web.
uma. O Licenciador fará esforços comercialmente razoáveis ​​para fornecer uma atualização projetada para resolver ou ignorar um erro relatado. Se tal erro tiver sido corrigido em uma versão de manutenção, o Licenciado deve instalar e implementar a versão de manutenção aplicável; Caso contrário, a Atualização pode ser fornecida sob a forma de uma correção, procedimento ou rotina temporária, a ser usada até que uma Atualização de Manutenção contendo a Atualização permanente esteja disponível.
b. Durante o Termo do Contrato de Licença, o Licenciador deverá disponibilizar os Lançamentos de Manutenção ao Licenciado se, à medida que o Licenciador disponibilizar, em geral, tais Licenças de Manutenção a seus clientes. Se surgir uma questão sobre se uma oferta de produto é uma Atualização ou um novo produto ou recurso, a opinião do Licenciante prevalecerá, desde que o Licenciante considere a oferta de produtos como um novo produto ou recurso para seus clientes finais em geral .
c. A obrigação do Fornecedor de fornecer serviços de suporte está condicionada ao seguinte: (a) O titular da licença faz esforços razoáveis ​​para corrigir o erro depois de consultar o Licenciador; (b) O Licenciado fornece ao Licenciador informações e recursos suficientes para corrigir o erro no site do Licenciante ou no acesso remoto ao site do Licenciado, bem como no acesso ao pessoal, ao hardware e a qualquer outro software envolvido na descoberta do erro; (c) O titular da licença instala prontamente todas as versões de manutenção; e (d) o Licenciado adquire, instala e mantém todos os equipamentos, interfaces de comunicação e outros equipamentos necessários para operar o Produto.
d. O Licenciador não é obrigado a prestar serviços de suporte nas seguintes situações: (a) o Produto foi alterado, modificado ou danificado (exceto se sob supervisão direta do Licenciador); (b) o erro é causado pela negligência do Licenciado, falta de hardware ou outras causas além do controle razoável do Licenciador; (c) o erro é causado por software de terceiros não licenciado através do Licenciador; (d) O Licenciado não instalou e implementou a (s) Versão (s) de Manutenção para que o Produto seja uma versão suportada pelo Licenciador; ou (e) O Licenciado não pagou as taxas da Licença ou dos Serviços de Suporte quando vencer. Além disso, o Licenciador não é obrigado a fornecer serviços de suporte para o código de software escrito pelo próprio cliente com base no Produto.
e. O Licenciador reserva-se o direito de interromper os Serviços de Apoio se o Licenciador, a seu exclusivo critério, determinar que o suporte contínuo para qualquer Produto não é mais economicamente praticável. O Licenciador dará ao Licenciado pelo menos três (3) meses de antecedência prévia por escrito de qualquer descontinuação de Serviços de Apoio e reembolsará quaisquer taxas de Serviços de Suporte não acumuladas que o Licenciado pode ter pago antecipadamente em relação ao Produto afetado. O Licenciador não tem obrigação de suportar ou manter qualquer versão do Produto ou plataformas de terceiros subjacentes (incluindo, mas não limitado a, software, JVM, sistema operacional ou hardware) para o qual o Produto é suportado, exceto (i) a versão atual do Produto e plataforma de terceiros subjacente, e (ii) as duas versões imediatamente anteriores do Produto e do sistema operacional por um período de seis (6) meses após a sua primeira substituição. O Licenciador reserva-se o direito de suspender o desempenho dos Serviços de Apoio se o Licenciado não pagar qualquer montante a pagar ao Licenciador sob o Contrato no prazo de trinta (30) dias após esse valor ser devido.
6. GARANTIA.
uma. O Licenciador garante que o Software será capaz de realizar em todos os aspectos relevantes de acordo com as especificações funcionais estabelecidas na documentação aplicável por um período de 90 dias após a data em que você instalou o Software. Em caso de incumprimento de tal garantia, o Licenciante deverá, a seu critério, corrigir o Software ou substituir esse Software gratuitamente. O que precede são os seus únicos e exclusivos remédios e a única responsabilidade do Licenciador por violação dessas garantias. As garantias estabelecidas acima são feitas e em benefício de você apenas. As garantias aplicar-se-ão somente se (a) o Software tiver sido devidamente instalado e usado em todos os momentos e de acordo com as instruções de uso; (c) as atualizações mais recentes foram aplicadas ao software; e (c) nenhuma modificação, alteração ou adição foi feita ao Software por pessoas que não sejam o Licenciante ou o representante autorizado do Licenciador.
7. RENÚNCIA.
EXCEPTO, COMO SEJA FORNECIDO NO ÂMBITO DA SEÇÃO 6 (a), O LICENCIANTE EXCLUIRÁ EXPRESSAMENTE TODAS AS GARANTIAS, EXPRESSAS OU IMPLÍCITAS, INCLUINDO QUAISQUER GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO, APTIDÃO PARA UM PROPÓSITO ESPECÍFICO E NÃO INFRACÇÃO, E QUAISQUER GARANTIAS DECORRENTES DO CURSO DE NEGOCIAÇÃO OU USO DE COMÉRCIO. NENHUM AVISO OU INFORMAÇÃO, SEJA ORAL OU ESCRITO, OBTIDO DO LICENCIANTE OU DE OUTRO PODE CRIARÁ QUALQUER GARANTIA NÃO EXPRESSAMENTE INDICADA NESTE ACORDO.
O Licenciante não garante que o Produto de Software atenda seus requisitos ou opere sob suas condições específicas de uso. O Licenciante não garante que a operação do Produto de Software seja segura, sem erros ou sem interrupção.
VOCÊ DEVE DETERMINAR SE O PRODUTO DE SOFTWARE SUFICIENTEMENTE CARREGA SEUS REQUISITOS PARA SEGURANÇA E ININTERRUPTABILIDADE. VOCÊ PODE SER ÚNICA RESPONSABILIDADE E TODA A RESPONSABILIDADE POR QUALQUER PERDA INCURRIDA POR FALHA DO PRODUTO DO SOFTWARE PARA CUMPRIR OS SEUS REQUISITOS. O LICENCIANTE NÃO SERÁ RESPONSÁVEL PELA PERDA DE DADOS POR QUALQUER COMPUTADOR OU DISPOSITIVO DE ARMAZENAMENTO DE INFORMAÇÕES, SOB QUALQUER CIRCUNSTÂNCIA.
8. LIMITAÇÃO DE RESPONSABILIDADE.
A RESPONSABILIDADE TOTAL DO LICENCIANTE & # 8217; SÃO DE TODAS AS CAUSAS DE AÇÃO E SOB TODAS AS TEORIAS DE RESPONSABILIDADE SERÃO LIMITADAS E NÃO EXCEDERÃO A TAXA DE LICENÇA PAGADA POR VOCÊ PARA O LICENCIANTE PARA O SOFTWARE. EM NENHUM CASO, O LICENCIANTE SERÃO RESPONSÁVEIS POR QUAISQUER DANOS ESPECIAIS, INCIDENTAIS, EXEMPLARES, PUNITIVOS OU CONSEQÜENCIAIS (INCLUINDO PERDA DE USO, DADOS, NEGÓCIOS OU LUCROS) OU PARA O CUSTO DE PRODUTOS DE SUBSTITUIÇÃO DE PROCURAÇÃO QUE SÃO FORA DE OU EM CONEXÃO COM ESTE ACORDO OU O USO OU O DESEMPENHO DO SOFTWARE, SEJA TAL RESPONSABILIDADE DECORRENDO DE QUALQUER RECLAMAÇÃO COM BASE NO CONTRATO, GARANTIA, HORTOSÃO (INCLUINDO NEGLIGÊNCIA), RESPONSABILIDADE ESTRITA OU DE OUTRA FORMA, E SE O LICENCIANTE TENHA SIDO AVISADO DA POSSIBILIDADE DE TAL PERDA OU DANIFICAR. AS LIMITAÇÕES ANTERIORES SOBREVIVARÃO E APLICAREM MESMO SE QUALQUER REMÉDIO LIMITADO ESPECIFICADO NESTE ACORDO SE ENCONTRARÁ PARA QUE NÃO FALOU DE SEU PROPÓSITO ESSENCIAL. NA EXTENSÃO DE QUE A LEGISLAÇÃO APLICÁVEL LIMITA O LICENCIANTE DE APLICAÇÃO DE CUSTAS GARANTIAS IMPLÍCITAS, ESTA ISENÇÃO DE RESPONSABILIDADE SERÁ EFICAZ NA MÁXIMA EXTENSÃO PERMITIDA.
Se qualquer disposição deste Contrato for considerada inválida ou inexequível, o restante deste Contrato permanecerá em pleno vigor e efeito. Na medida em que quaisquer restrições expressas ou implícitas não sejam permitidas pelas leis aplicáveis, essas restrições expressas ou implícitas permanecerão em vigor e aplicadas na extensão máxima permitida por tais leis aplicáveis.
Este Contrato é o acordo completo e exclusivo entre as partes em relação ao assunto em questão, substituindo e substituindo todos e quaisquer acordos, comunicações e entendimentos anteriores (tanto escritos quanto orais) em relação a esse assunto. As partes deste Contrato são empreiteiras independentes, e tampouco tem o poder de vincular o outro ou de incorrer em obrigações em favor do outro. Nenhuma falha de qualquer das partes para exercer ou fazer valer qualquer dos seus direitos ao abrigo do presente acordo constituirá uma renúncia a tais direitos. Quaisquer termos ou condições contidos em qualquer pedido de compra ou outro documento de pedido que sejam inconsistentes ou adicionais aos termos e condições deste Contrato são rejeitados pelo Licenciador e serão considerados nulos e sem efeito.
Este Acordo será interpretado e interpretado de acordo com as leis da Suíça, sem levar em conta os princípios do conflito de leis. As partes concordam com a jurisdição exclusiva e o local dos tribunais localizados em Zurique, Suíça, para resolução de eventuais litígios decorrentes ou relacionados a este Contrato.
10. DEFINIÇÕES.
& # 8220; Avaliação Use & # 8221; significa o uso do Software exclusivamente para avaliação e avaliação para novas aplicações destinadas ao seu Uso de Produção.
& # 8220; Uso de Produção & # 8221; significa usar o Software apenas para fins comerciais internos. O Uso da Produção não inclui o direito de reproduzir o Software para sublicenciar, revender ou distribuir, incluindo, sem limitação, operação em um compartilhamento de tempo ou distribuição do Software como parte de um arranjo ASP, VAR, OEM, distribuidor ou revendedor.
& # 8220; Software & # 8221; significa o software do licenciador e todos os seus componentes, documentação e exemplos incluídos pelo Licenciador.
& # 8220; Erro & # 8221; significa (a) uma falha no Produto de acordo com as especificações estabelecidas na documentação, resultando na incapacidade de usar ou restrição no uso do Produto, e / ou (b) um problema que requer novos procedimentos, esclarecimentos, informações adicionais e / ou solicitações de aprimoramentos de produtos.
& # 8220; Liberação de manutenção & # 8221; significa atualizações e atualizações para o Produto que estão disponíveis para licenciados de acordo com os Serviços de Suporte padrão definidos na seção 5.
& # 8220; Update & # 8221; significa uma modificação ou adição de software que, quando feita ou adicionada ao Produto, corrige o Erro, ou um procedimento ou rotina que, quando observado na operação regular do Produto, elimina o efeito adverso prático do Erro no Licenciado.
& # 8220; Upgrade & # 8221; significa uma revisão do Produto divulgada pelo Licenciador aos seus clientes finais em geral, durante o Termo de Serviços de Suporte, para adicionar funções novas e diferentes ou para aumentar a capacidade do Produto. A atualização não inclui a liberação de um novo produto ou recursos adicionais para os quais pode haver uma cobrança separada.

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 19 de abril de 2018.
Neste artigo, quero apresentar-lhe os métodos pelos quais eu próprio identifico estratégias de negociação algorítmicas rentáveis. Nosso objetivo hoje é entender em detalhes como encontrar, avaliar e selecionar esses sistemas. Vou explicar como as estratégias de identificação são tanto sobre preferências pessoais quanto sobre o desempenho da estratégia, como determinar o tipo e a quantidade de dados históricos para o teste, como avaliar de forma imparcial uma estratégia de negociação e, finalmente, como avançar para a fase de backtesting e implementação estratégica.
Identificando suas próprias preferências pessoais para negociação.
Para ser um comerciante bem sucedido - de forma discricionária ou algorítmica - é necessário fazer-se algumas perguntas honestas. O Trading oferece a você a capacidade de perder dinheiro em uma taxa alarmante, por isso é necessário "conhecer você mesmo" tanto quanto é necessário entender a estratégia escolhida.
Eu diria que a consideração mais importante na negociação é estar ciente de sua própria personalidade. O comércio e o comércio algorítmico em particular, requer um grau significativo de disciplina, paciência e desapego emocional. Como você está deixando um algoritmo executar sua negociação para você, é necessário ser resolvido para não interferir com a estratégia quando está sendo executado. Isso pode ser extremamente difícil, especialmente em períodos de redução prolongada. No entanto, muitas estratégias que mostraram ser altamente rentáveis ​​em um backtest podem ser arruinadas por uma simples interferência. Compreenda que se você deseja entrar no mundo da negociação algorítmica, você será testado emocionalmente e, para ser bem-sucedido, é necessário trabalhar com essas dificuldades!
A próxima consideração é uma das vezes. Você tem um emprego a tempo inteiro? Você trabalha a tempo parcial? Você trabalha em casa ou tem uma longa viagem diária? Essas perguntas ajudarão a determinar a freqüência da estratégia que você deve procurar. Para aqueles de você no emprego a tempo inteiro, uma estratégia de futuros intradiária pode não ser apropriada (pelo menos até que seja totalmente automatizada!). Suas restrições de tempo também ditarão a metodologia da estratégia. Se sua estratégia é freqüentemente negociada e dependente de feeds de notícias caras (como um terminal da Bloomberg), você terá claramente que ser realista sobre sua capacidade de executar com sucesso durante o escritório! Para aqueles de vocês com muito tempo, ou as habilidades para automatizar sua estratégia, você pode querer examinar uma estratégia mais técnica de negociação de alta freqüência (HFT).
Minha opinião é que é necessário realizar pesquisas contínuas sobre suas estratégias de negociação para manter um portfólio consistentemente lucrativo. Poucas estratégias permanecem "sob o radar" para sempre. Assim, uma parte importante do tempo atribuído à negociação será na realização de pesquisas em andamento. Pergunte a si mesmo se você está preparado para fazer isso, pois pode ser a diferença entre uma forte rentabilidade ou um declínio lento em relação a perdas.
Você também precisa considerar seu capital de negociação. O valor mínimo ideal geralmente aceito para uma estratégia quantitativa é de 50,000 USD (aproximadamente £ 35,000 para nós no Reino Unido). Se eu estivesse começando de novo, eu começaria com uma quantidade maior, provavelmente mais perto de 100,000 USD (aproximadamente £ 70,000). Isso ocorre porque os custos de transação podem ser extremamente caros para estratégias de média a alta freqüência e é necessário ter capital suficiente para absorvê-los em tempos de redução. Se você está considerando começar com menos de 10.000 USD, então você precisará se restringir a estratégias de baixa freqüência, negociando em um ou dois ativos, já que os custos de transação irão comer rapidamente em seus retornos. Interactive Brokers, que é um dos corretores mais amigáveis ​​para aqueles com habilidades de programação, devido à sua API, tem uma conta de varejo mínima de 10.000 USD.
A habilidade de programação é um fator importante na criação de uma estratégia de negociação algorítmica automatizada. Estar bem informado em uma linguagem de programação como C ++, Java, C #, Python ou R permitirá que você crie o sistema de armazenamento de dados, o sistema de backtest e o sistema de execução de ponta a ponta. Isso tem uma série de vantagens, cujo chefe é a capacidade de estar completamente atento a todos os aspectos da infra-estrutura comercial. Também permite que você explore as estratégias de freqüência mais alta, pois você terá o controle total da sua "pilha de tecnologia". Embora isso signifique que você possa testar seu próprio software e eliminar erros, também significa mais tempo gasto na codificação de infra-estrutura e menos na implementação de estratégias, pelo menos na parte anterior da sua carreira de trading. Você pode achar que você está confortável negociando no Excel ou MATLAB e pode terceirizar o desenvolvimento de outros componentes. Eu não recomendaria isso no entanto, especialmente para aqueles que negociavam em alta freqüência.
Você precisa se perguntar o que você espera alcançar por meio de negociação algorítmica. Você está interessado em um rendimento regular, pelo qual você espera obter lucros de sua conta de negociação? Ou, você está interessado em um ganho de capital a longo prazo e pode se negociar sem a necessidade de retirar fundos? A dependência de renda determinará a freqüência de sua estratégia. As retiradas de renda mais regulares exigirão uma estratégia de negociação de maior freqüência com menor volatilidade (ou seja, uma proporção Sharpe mais alta). Os comerciantes de longo prazo podem pagar uma frequência comercial mais tranquila.
Finalmente, não se ilude com a noção de tornar-se extremamente rico num curto espaço de tempo! O comércio de Algo não é um esquema rápido e rápido - se alguma coisa pode ser um esquema rápido e rápido. É preciso disciplina, pesquisa, diligência e paciência importantes para serem bem-sucedidos no comércio algorítmico. Pode levar meses, senão anos, gerar rentabilidade consistente.
Sourcing Algorithmic Trading Ideas.
Apesar das percepções comuns em contrário, é realmente bastante direto localizar estratégias de negociação rentáveis ​​no domínio público. Nunca as idéias comerciais estão mais disponíveis do que hoje. Revistas de finanças acadêmicas, servidores de pré-impressão, blogs comerciais, fóruns de negociação, revistas comerciais semanais e textos especializados fornecem milhares de estratégias de negociação com as quais basear suas idéias.
Nosso objetivo como pesquisadores quantitativos de negócios é estabelecer um pipeline estratégico que nos forneça um fluxo de idéias comerciais em andamento. Idealmente, queremos criar uma abordagem metódica para sourcing, avaliação e implementação de estratégias que encontramos. Os objetivos do pipeline são gerar uma quantidade consistente de novas idéias e fornecer-nos uma estrutura para rejeitar a maioria dessas idéias com o mínimo de consideração emocional.
Devemos ser extremamente cuidadosos para não permitir influências cognitivas na nossa metodologia de tomada de decisão. Isso pode ser tão simples como ter uma preferência por uma classe de ativos sobre outra (o ouro e outros metais preciosos vêm à mente) porque são percebidos como mais exóticos. Nosso objetivo sempre deve ser encontrar estratégias consistentemente lucrativas, com expectativas positivas. A escolha da classe de ativos deve basear-se em outras considerações, como restrições de capital de negociação, taxas de corretagem e capacidades de alavancagem.
Se você não está completamente familiarizado com o conceito de estratégia comercial, então o primeiro lugar a procurar é com os livros didáticos estabelecidos. Os textos clássicos fornecem uma ampla gama de idéias mais simples e diretas, para se familiarizarem com a negociação quantitativa. Aqui está uma seleção que eu recomendo para aqueles que são novos para negociação quantitativa, que gradualmente se tornam mais sofisticados enquanto você trabalha através da lista:
Para uma lista mais longa de livros de negociação quantitativos, visite a lista de leitura QuantStart.
O próximo lugar para encontrar estratégias mais sofisticadas é com fóruns de negociação e blogs comerciais. No entanto, uma nota de cautela: muitos blogs comerciais dependem do conceito de análise técnica. A análise técnica envolve a utilização de indicadores básicos e psicologia comportamental para determinar tendências ou padrões de reversão nos preços dos ativos.
Apesar de ser extremamente popular no espaço comercial geral, a análise técnica é considerada um pouco ineficaz na comunidade de finanças quantitativas. Some have suggested that it is no better than reading a horoscope or studying tea leaves in terms of its predictive power! In reality there are successful individuals making use of technical analysis. However, as quants with a more sophisticated mathematical and statistical toolbox at our disposal, we can easily evaluate the effectiveness of such "TA-based" strategies and make data-based decisions rather than base ours on emotional considerations or preconceptions.
Here is a list of well-respected algorithmic trading blogs and forums:
Once you have had some experience at evaluating simpler strategies, it is time to look at the more sophisticated academic offerings. Some academic journals will be difficult to access, without high subscriptions or one-off costs. If you are a member or alumnus of a university, you should be able to obtain access to some of these financial journals. Otherwise, you can look at pre-print servers , which are internet repositories of late drafts of academic papers that are undergoing peer review. Since we are only interested in strategies that we can successfully replicate, backtest and obtain profitability for, a peer review is of less importance to us.
The major downside of academic strategies is that they can often either be out of date, require obscure and expensive historical data, trade in illiquid asset classes or do not factor in fees, slippage or spread. It can also be unclear whether the trading strategy is to be carried out with market orders, limit orders or whether it contains stop losses etc. Thus it is absolutely essential to replicate the strategy yourself as best you can, backtest it and add in realistic transaction costs that include as many aspects of the asset classes that you wish to trade in.
Here is a list of the more popular pre-print servers and financial journals that you can source ideas from:
What about forming your own quantitative strategies? This generally requires (but is not limited to) expertise in one or more of the following categories:
Market microstructure - For higher frequency strategies in particular, one can make use of market microstructure , i. e. understanding of the order book dynamics in order to generate profitability. Different markets will have various technology limitations, regulations, market participants and constraints that are all open to exploitation via specific strategies. This is a very sophisticated area and retail practitioners will find it hard to be competitive in this space, particularly as the competition includes large, well-capitalised quantitative hedge funds with strong technological capabilities. Fund structure - Pooled investment funds, such as pension funds, private investment partnerships (hedge funds), commodity trading advisors and mutual funds are constrained both by heavy regulation and their large capital reserves. Thus certain consistent behaviours can be exploited with those who are more nimble. For instance, large funds are subject to capacity constraints due to their size. Thus if they need to rapidly offload (sell) a quantity of securities, they will have to stagger it in order to avoid "moving the market". Sophisticated algorithms can take advantage of this, and other idiosyncrasies, in a general process known as fund structure arbitrage . Machine learning/artificial intelligence - Machine learning algorithms have become more prevalent in recent years in financial markets. Classifiers (such as Naive-Bayes, et al.) non-linear function matchers (neural networks) and optimisation routines (genetic algorithms) have all been used to predict asset paths or optimise trading strategies. If you have a background in this area you may have some insight into how particular algorithms might be applied to certain markets.
There are, of course, many other areas for quants to investigate. We'll discuss how to come up with custom strategies in detail in a later article.
By continuing to monitor these sources on a weekly, or even daily, basis you are setting yourself up to receive a consistent list of strategies from a diverse range of sources. The next step is to determine how to reject a large subset of these strategies in order to minimise wasting your time and backtesting resources on strategies that are likely to be unprofitable.
Evaluating Trading Strategies.
The first, and arguably most obvious consideration is whether you actually understand the strategy . Would you be able to explain the strategy concisely or does it require a string of caveats and endless parameter lists? In addition, does the strategy have a good, solid basis in reality? For instance, could you point to some behavioural rationale or fund structure constraint that might be causing the pattern(s) you are attempting to exploit? Would this constraint hold up to a regime change, such as a dramatic regulatory environment disruption? Does the strategy rely on complex statistical or mathematical rules? Does it apply to any financial time series or is it specific to the asset class that it is claimed to be profitable on? You should constantly be thinking about these factors when evaluating new trading methods, otherwise you may waste a significant amount of time attempting to backtest and optimise unprofitable strategies.
Once you have determined that you understand the basic principles of the strategy you need to decide whether it fits with your aforementioned personality profile. This is not as vague a consideration as it sounds! Strategies will differ substantially in their performance characteristics. There are certain personality types that can handle more significant periods of drawdown, or are willing to accept greater risk for larger return. Despite the fact that we, as quants, try and eliminate as much cognitive bias as possible and should be able to evaluate a strategy dispassionately, biases will always creep in. Thus we need a consistent, unemotional means through which to assess the performance of strategies. Here is the list of criteria that I judge a potential new strategy by:
Methodology - Is the strategy momentum based, mean-reverting, market-neutral, directional? Does the strategy rely on sophisticated (or complex!) statistical or machine learning techniques that are hard to understand and require a PhD in statistics to grasp? Do these techniques introduce a significant quantity of parameters, which might lead to optimisation bias? Is the strategy likely to withstand a regime change (i. e. potential new regulation of financial markets)? Sharpe Ratio - The Sharpe ratio heuristically characterises the reward/risk ratio of the strategy. It quantifies how much return you can achieve for the level of volatility endured by the equity curve. Naturally, we need to determine the period and frequency that these returns and volatility (i. e. standard deviation) are measured over. A higher frequency strategy will require greater sampling rate of standard deviation, but a shorter overall time period of measurement, for instance. Leverage - Does the strategy require significant leverage in order to be profitable? Does the strategy necessitate the use of leveraged derivatives contracts (futures, options, swaps) in order to make a return? These leveraged contracts can have heavy volatility characterises and thus can easily lead to margin calls . Do you have the trading capital and the temperament for such volatility? Frequency - The frequency of the strategy is intimately linked to your technology stack (and thus technological expertise), the Sharpe ratio and overall level of transaction costs. All other issues considered, higher frequency strategies require more capital, are more sophisticated and harder to implement. However, assuming your backtesting engine is sophisticated and bug-free, they will often have far higher Sharpe ratios. Volatility - Volatility is related strongly to the "risk" of the strategy. The Sharpe ratio characterises this. Higher volatility of the underlying asset classes, if unhedged, often leads to higher volatility in the equity curve and thus smaller Sharpe ratios. I am of course assuming that the positive volatility is approximately equal to the negative volatility. Some strategies may have greater downside volatility. You need to be aware of these attributes. Win/Loss, Average Profit/Loss - Strategies will differ in their win/loss and average profit/loss characteristics. One can have a very profitable strategy, even if the number of losing trades exceed the number of winning trades. Momentum strategies tend to have this pattern as they rely on a small number of "big hits" in order to be profitable. Mean-reversion strategies tend to have opposing profiles where more of the trades are "winners", but the losing trades can be quite severe. Maximum Drawdown - The maximum drawdown is the largest overall peak-to-trough percentage drop on the equity curve of the strategy. Momentum strategies are well known to suffer from periods of extended drawdowns (due to a string of many incremental losing trades). Many traders will give up in periods of extended drawdown, even if historical testing has suggested this is "business as usual" for the strategy. You will need to determine what percentage of drawdown (and over what time period) you can accept before you cease trading your strategy. This is a highly personal decision and thus must be considered carefully. Capacity/Liquidity - At the retail level, unless you are trading in a highly illiquid instrument (like a small-cap stock), you will not have to concern yourself greatly with strategy capacity . Capacity determines the scalability of the strategy to further capital. Many of the larger hedge funds suffer from significant capacity problems as their strategies increase in capital allocation. Parameters - Certain strategies (especially those found in the machine learning community) require a large quantity of parameters. Every extra parameter that a strategy requires leaves it more vulnerable to optimisation bias (also known as "curve-fitting"). You should try and target strategies with as few parameters as possible or make sure you have sufficient quantities of data with which to test your strategies on. Benchmark - Nearly all strategies (unless characterised as "absolute return") are measured against some performance benchmark. The benchmark is usually an index that characterises a large sample of the underlying asset class that the strategy trades in. If the strategy trades large-cap US equities, then the S&P500 would be a natural benchmark to measure your strategy against. You will hear the terms "alpha" and "beta", applied to strategies of this type. We will discuss these coefficients in depth in later articles.
Notice that we have not discussed the actual returns of the strategy. Por que é isso? In isolation, the returns actually provide us with limited information as to the effectiveness of the strategy. They don't give you an insight into leverage, volatility, benchmarks or capital requirements. Thus strategies are rarely judged on their returns alone. Always consider the risk attributes of a strategy before looking at the returns.
At this stage many of the strategies found from your pipeline will be rejected out of hand, since they won't meet your capital requirements, leverage constraints, maximum drawdown tolerance or volatility preferences. The strategies that do remain can now be considered for backtesting . However, before this is possible, it is necessary to consider one final rejection criteria - that of available historical data on which to test these strategies.
Obtaining Historical Data.
Nowadays, the breadth of the technical requirements across asset classes for historical data storage is substantial. In order to remain competitive, both the buy-side (funds) and sell-side (investment banks) invest heavily in their technical infrastructure. It is imperative to consider its importance. In particular, we are interested in timeliness, accuracy and storage requirements. I will now outline the basics of obtaining historical data and how to store it. Unfortunately this is a very deep and technical topic, so I won't be able to say everything in this article. However, I will be writing a lot more about this in the future as my prior industry experience in the financial industry was chiefly concerned with financial data acquisition, storage and access.
In the previous section we had set up a strategy pipeline that allowed us to reject certain strategies based on our own personal rejection criteria. In this section we will filter more strategies based on our own preferences for obtaining historical data. The chief considerations (especially at retail practitioner level) are the costs of the data, the storage requirements and your level of technical expertise. We also need to discuss the different types of available data and the different considerations that each type of data will impose on us.
Let's begin by discussing the types of data available and the key issues we will need to think about:
Fundamental Data - This includes data about macroeconomic trends, such as interest rates, inflation figures, corporate actions (dividends, stock-splits), SEC filings, corporate accounts, earnings figures, crop reports, meteorological data etc. This data is often used to value companies or other assets on a fundamental basis, i. e. via some means of expected future cash flows. It does not include stock price series. Some fundamental data is freely available from government websites. Other long-term historical fundamental data can be extremely expensive. Storage requirements are often not particularly large, unless thousands of companies are being studied at once. News Data - News data is often qualitative in nature. It consists of articles, blog posts, microblog posts ("tweets") and editorial. Machine learning techniques such as classifiers are often used to interpret sentiment . This data is also often freely available or cheap, via subscription to media outlets. The newer "NoSQL" document storage databases are designed to store this type of unstructured, qualitative data. Asset Price Data - This is the traditional data domain of the quant. It consists of time series of asset prices. Equities (stocks), fixed income products (bonds), commodities and foreign exchange prices all sit within this class. Daily historical data is often straightforward to obtain for the simpler asset classes, such as equities. However, once accuracy and cleanliness are included and statistical biases removed, the data can become expensive. In addition, time series data often possesses significant storage requirements especially when intraday data is considered. Financial Instruments - Equities, bonds, futures and the more exotic derivative options have very different characteristics and parameters. Thus there is no "one size fits all" database structure that can accommodate them. Significant care must be given to the design and implementation of database structures for various financial instruments. We will discuss the situation at length when we come to build a securities master database in future articles. Frequency - The higher the frequency of the data, the greater the costs and storage requirements. For low-frequency strategies, daily data is often sufficient. For high frequency strategies, it might be necessary to obtain tick-level data and even historical copies of particular trading exchange order book data. Implementing a storage engine for this type of data is very technologically intensive and only suitable for those with a strong programming/technical background. Benchmarks - The strategies described above will often be compared to a benchmark . This usually manifests itself as an additional financial time series. For equities, this is often a national stock benchmark, such as the S&P500 index (US) or FTSE100 (UK). For a fixed income fund, it is useful to compare against a basket of bonds or fixed income products. The "risk-free rate" (i. e. appropriate interest rate) is also another widely accepted benchmark. All asset class categories possess a favoured benchmark, so it will be necessary to research this based on your particular strategy, if you wish to gain interest in your strategy externally. Technology - The technology stacks behind a financial data storage centre are complex. This article can only scratch the surface about what is involved in building one. However, it does centre around a database engine, such as a Relational Database Management System (RDBMS), such as MySQL, SQL Server, Oracle or a Document Storage Engine (i. e. "NoSQL"). This is accessed via "business logic" application code that queries the database and provides access to external tools, such as MATLAB, R or Excel. Often this business logic is written in C++, C#, Java or Python. You will also need to host this data somewhere, either on your own personal computer, or remotely via internet servers. Products such as Amazon Web Services have made this simpler and cheaper in recent years, but it will still require significant technical expertise to achieve in a robust manner.
As can be seen, once a strategy has been identified via the pipeline it will be necessary to evaluate the availability, costs, complexity and implementation details of a particular set of historical data. You may find it is necessary to reject a strategy based solely on historical data considerations. This is a big area and teams of PhDs work at large funds making sure pricing is accurate and timely. Do not underestimate the difficulties of creating a robust data centre for your backtesting purposes!
I do want to say, however, that many backtesting platforms can provide this data for you automatically - at a cost. Thus it will take much of the implementation pain away from you, and you can concentrate purely on strategy implementation and optimisation. Tools like TradeStation possess this capability. However, my personal view is to implement as much as possible internally and avoid outsourcing parts of the stack to software vendors. I prefer higher frequency strategies due to their more attractive Sharpe ratios, but they are often tightly coupled to the technology stack, where advanced optimisation is critical.
Now that we have discussed the issues surrounding historical data it is time to begin implementing our strategies in a backtesting engine. This will be the subject of other articles, as it is an equally large area of discussion!
Just Getting Started with Quantitative Trading?
3 Reasons to Subscribe to the QuantStart Email List:
1. Quant Trading Lessons.
You'll get instant access to a free 10-part email course packed with hints and tips to help you get started in quantitative trading!
2. All The Latest Content.
Every week I'll send you a wrap of all activity on QuantStart so you'll never miss a post again.
Real, actionable quant trading tips with no nonsense.

No comments:

Post a Comment