Saturday 17 February 2018

Crie seu próprio sistema de negociação de alta freqüência


Jesse Spaulding.


Como fiz $ 500k com aprendizado de máquina e HFT (negociação de alta freqüência)


Esta publicação detalhará o que fiz para fazer aprox. 500k de negociação de alta freqüência de 2009 a 2010. Desde que eu estava negociando completamente de forma independente e não estou mais executando meu programa, eu estou feliz em contar tudo. Minha negociação foi principalmente em contratos de futuros Russel 2000 e DAX.


A chave para o meu sucesso, eu acredito, não estava em uma equação financeira sofisticada, mas sim no projeto de algoritmo geral que uniu muitos componentes simples e a aprendizagem de máquinas usadas para otimizar a máxima rentabilidade. Você ganhou não precisa conhecer qualquer terminologia sofisticada aqui porque, quando eu configurei meu programa, tudo foi baseado na intuição. (O curso de aprendizado de máquina incrível da Andrew Ng não estava ainda disponível - por favor, se você clicar nesse link, você será levado ao meu projeto atual: CourseTalk, um site de revisão para MOOCs)


Primeiro, eu só quero demonstrar que o meu sucesso não foi simplesmente o resultado da sorte. Meu programa fez 1000-4000 negociações por dia (meio e meio, curto) e nunca entrou em posições de mais de alguns contratos por vez. Isso significava que a sorte aleatória de qualquer comércio em particular era muito rápida. O resultado foi que nunca perdi mais de US $ 2000 em um dia e nunca tive um mês perdedor:


(EDITAR: estes números são depois de pagar comissões)


E aqui é um gráfico para dar uma sensação de variação diária. Observe que isso exclui os últimos 7 meses porque - à medida que os números pararam de subir - eu perdi minha motivação para inseri-los.


Antes de configurar meu programa de negociação automatizado I & rsquo; d tinha 2 anos de experiência como um & ldquo; manual & rdquo; comerciante do dia. Isso foi de volta em 2001 - foram os primeiros dias do comércio eletrônico e houve oportunidades para & ldquo; scalpers & rdquo; para ganhar dinheiro. Eu só posso descrever o que eu estava fazendo como semelhante a jogar um jogo de vídeo / jogo com uma suposta vantagem. Ser bem-sucedido significou ser rápido, ser disciplinado e possuir boas habilidades de reconhecimento de padrões intuitivas. Eu consegui fazer cerca de US $ 250 mil, pagar meus empréstimos estudantis e ter dinheiro restante. Ganhar!


Nos próximos cinco anos, eu lançaria duas startups, pegando algumas habilidades de programação ao longo do caminho. Não seria até o final de 2008 que eu voltaria a negociar. Com o dinheiro escorrendo da venda da minha primeira inicialização, a negociação ofereceu esperanças de algum dinheiro rápido enquanto eu descobri minha próxima jogada.


Em 2008 eu estava & ldquo; manualmente & rdquo; dia comercializando futuros usando o software chamado T4. Eu estava desejando algumas teclas de atalho de entrada de pedidos personalizadas, então, depois de descobrir que a T4 tinha uma API, assumi o desafio de aprender C # (a linguagem de programação necessária para usar a API) e segui adiante e construí-me algumas teclas rápidas.


Depois de ficar com os pés molhados com a API, logo tive aspirações maiores: queria ensinar o computador a trocar por mim. A API forneceu um fluxo de dados de mercado e uma maneira fácil de enviar ordens para a troca - tudo o que eu tinha que fazer era criar a lógica no meio.


Abaixo está uma captura de tela de uma janela de negociação T4. O que foi legal é que, quando trabalhei, consegui assistir o comércio de computadores nesta mesma interface. Ver as ordens reais que aparecem dentro e fora (por si com meu dinheiro real) foram emocionantes e assustadoras.


O design do meu algoritmo.


Desde o início, meu objetivo era configurar um sistema de forma que eu pudesse estar razoavelmente confiante. Eu ganharei dinheiro antes de fazer qualquer transação ao vivo. Para realizar isso, eu precisava construir uma estrutura de simulação de negociação que, com a maior precisão possível, simulasse a negociação ao vivo.


Embora a negociação no modo ao vivo exigisse o processamento de atualizações de mercado transmitidas através da API, o modo de simulação exigia a leitura de atualizações de mercado a partir de um arquivo de dados. Para coletar esses dados, configurei a primeira versão do meu programa para simplesmente conectar-se à API e registrar as atualizações do mercado com timestamps. Acabei usando 4 semanas de dados de mercado recentes para treinar e testar meu sistema.


Com um quadro básico no local, eu ainda tinha a tarefa de descobrir como criar um sistema comercial lucrativo. Como se verifica, meu algoritmo seria dividido em dois componentes distintos, que eu explorarei por sua vez:


Previsão de movimentos de preços; e fazer negócios lucrativos.


Previsão de movimentos de preços.


Talvez um componente óbvio de qualquer sistema comercial seja capaz de prever onde os preços se moverão. E o meu não foi exceção. Eu definei o preço atual como a média da oferta interna e oferta interna e eu estabeleci o objetivo de prever onde o preço seria nos próximos 10 segundos. Meu algoritmo precisaria apresentar esta previsão momento a momento ao longo do dia de negociação.


Criando & amp; indicadores de otimização.


Eu criei um punhado de indicadores que provaram ter uma habilidade significativa para prever movimentos de preços de curto prazo. Cada indicador produziu um número que era positivo ou negativo. Um indicador era útil se, com maior frequência, um número positivo correspondesse com o mercado subindo e um número negativo correspondia ao mercado descer.


Meu sistema me permitiu determinar rapidamente a capacidade preditiva de qualquer indicador, então eu consegui experimentar muitos indicadores diferentes para ver o que funcionou. Muitos dos indicadores tinham variáveis ​​nas fórmulas que os produziam e consegui encontrar os valores ótimos para essas variáveis, fazendo comparações lado a lado dos resultados obtidos com valores variáveis.


Os indicadores que foram mais úteis foram todos relativamente simples e foram baseados em eventos recentes no mercado que negociei, bem como os mercados de títulos correlacionados.


Fazendo previsões de movimento de preço exato.


Ter indicadores que simplesmente previam um movimento de preços para cima ou para baixo não era suficiente. Eu precisava saber exatamente quanto o movimento do preço era previsto por cada valor possível de cada indicador. Eu precisava de uma fórmula que convertesse um valor indicador para uma previsão de preços.


Para realizar isso, rastreei os movimentos de preços previstos em 50 baldes que dependiam do alcance em que o valor do indicador caiu. Isso produziu previsões únicas para cada balde que eu então consegui representar no Excel. Como você pode ver, a variação esperada do preço aumenta à medida que o valor do indicador aumenta.


Com base em um gráfico como esse, consegui fazer uma fórmula para ajustar a curva. No começo eu fiz isso & ldquo; curve fitting & rdquo; manualmente, mas logo escrevi algum código para automatizar esse processo.


Observe que nem todas as curvas indicadoras tiveram a mesma forma. Observe também que os baldes foram distribuídos logaritticamente de modo a espalhar os dados de forma uniforme. Finalmente, note que os valores de indicadores negativos (e as respectivas previsões de preços descendentes correspondentes) foram invertidos e combinados com os valores positivos. (Meu algoritmo tratado de forma ascendente e exata exatamente o mesmo.)


Combinando indicadores para uma única previsão.


Uma coisa importante a considerar era que cada indicador não era totalmente independente. Eu não poderia simplesmente resumir todas as previsões que cada indicador faz individualmente. A chave era descobrir o valor preditivo adicional que cada indicador tinha além do que já estava previsto. Isso não era muito difícil de implementar, mas isso significava que se eu fosse & ldquo; curve fitting & rdquo; vários indicadores ao mesmo tempo eu tive que ter cuidado; mudar um afetaria as previsões de outro.


A fim de & ldquo; curve fit & rdquo; Todos os indicadores ao mesmo tempo eu configurei o otimizador para passar apenas 30% do caminho para as novas curvas de previsão com cada passagem. Com este salto de 30%, descobri que as curvas de previsão se estabilizariam dentro de algumas passagens.


Com cada indicador agora nos dando a previsão de preço adicional de ñsquo; eu poderia simplesmente adicioná-los para produzir uma previsão única de onde o mercado seria em 10 segundos.


Por que a previsão de preços não é suficiente.


Você pode pensar que com essa vantagem no mercado eu estava dourado. Mas você precisa ter em mente que o mercado é composto por lances e ofertas - não é apenas um preço de mercado. O sucesso na negociação de alta freqüência se resume a obter bons preços e não é tão fácil.


Os seguintes fatores tornam difícil a criação de um sistema lucrativo:


Com cada troca eu tinha que pagar comissões para o meu corretor e a troca. O spread (diferença entre oferta mais alta e oferta mais baixa) significava que, se eu fosse simplesmente comprar e vender aleatoriamente, eu estaria perdendo uma tonelada de dinheiro. A maior parte do volume do mercado eram outros bots que só executariam um comércio comigo se achassem que tinham alguma vantagem estatística. Ver uma oferta não garantiu que eu pudesse comprá-la. No momento em que minha ordem de compra chegou ao intercâmbio, era muito possível que essa oferta tivesse sido cancelada. Como um pequeno jogador do mercado, não havia nenhuma maneira de eu competir sozinho na velocidade.


Construindo uma simulação de negociação completa.


Então eu tive uma estrutura que me permitiu backtest e otimizar indicadores. Mas eu tinha que ir além disso - eu precisava de uma estrutura que me permitisse fazer backtest e otimizar um sistema comercial completo; um onde eu estava mandando ordens e entrando em posições. Neste caso, I & rsquo; d seja otimizado para P & amp; L total e, em certa medida, P & amp; L médio por comércio.


Isso seria mais complicado e, de certa forma, impossível modelar exatamente, mas eu fiz o melhor que pude. Aqui estão algumas das questões que eu tive que lidar com:


Quando um pedido foi enviado ao mercado em simulação, tive que modelar o tempo de atraso. O fato de meu sistema ter visto uma oferta não significava que pudesse comprá-lo imediatamente. O sistema enviaria o pedido, espere aproximadamente 20 milissegundos e, em seguida, apenas se a oferta ainda fosse considerada como um comércio executado. Isso foi inexato porque o tempo de atraso real foi inconsistente e não relatado. Quando eu coloquei lances ou ofertas, tive que olhar para o fluxo de execução comercial (fornecido pela API) e usá-los para avaliar quando minha ordem teria sido executada contra. Para fazer isso, tive que rastrear a posição do meu pedido na fila. (É um sistema de primeira saída em primeiro lugar). Mais uma vez, não consegui fazer isso perfeitamente, mas fiz uma melhor aproximação.


Para refinar a simulação de execução do meu pedido, fiz os meus arquivos de log da negociação ao vivo através da API e comparei-os aos arquivos de log produzidos por negociação simulada do mesmo período. Eu consegui minha simulação até o ponto de ser bastante preciso e, para as partes que eram impossíveis de modelar exatamente, me assegurei pelo menos de produzir resultados estatisticamente similares (nas métricas que achava importantes).


Faz negócios lucrativos.


Com um modelo de simulação de ordem no local, agora eu poderia enviar ordens no modo de simulação e ver uma P & amp; L simulada. Mas como saberia o meu sistema quando e onde comprar e vender?


As previsões de movimento de preços foram um ponto de partida, mas não toda a história. O que eu fiz foi criar um sistema de pontuação para cada um dos 5 níveis de preço na oferta e oferta. Estes incluíram um nível acima da oferta interna (para um pedido de compra) e um nível abaixo da oferta interna (para uma ordem de venda).


Se a pontuação em qualquer nível de preço fosse superior a um certo limite que significaria que meu sistema deveria ter uma oferta / oferta ativa - abaixo do limite, então todas as ordens ativas deveriam ser canceladas. Com base nisso, não era incomum que meu sistema iria mostrar uma oferta no mercado e, em seguida, cancelá-lo imediatamente. (Embora eu tentei minimizar isso, como é irritante, como diabos para quem olha a tela com olhos humanos - inclusive eu.)


Os escores do nível de preços foram calculados com base nos seguintes fatores:


A previsão do movimento do preço (que discutimos anteriormente). O nível de preços em questão. (Os níveis internos significaram que foram necessárias maiores previsões de movimento de preços). O número de contratos na frente do meu pedido na fila. (Menos foi melhor.) O número de contratos por trás do meu pedido na fila. (Mais foi melhor.)


Essencialmente, esses fatores serviram para identificar & ldquo; safe & rdquo; lugares para oferecer / oferecer. A previsão de movimento de preço por si só não era adequada porque não explicava o fato de que ao colocar uma oferta eu não estava preenchido automaticamente - eu só cheguei se alguém me vendesse lá. A realidade era que o simples fato de alguém me vender a um certo preço alterou as probabilidades estatísticas do comércio.


As variáveis ​​utilizadas nesta etapa estavam todas sujeitas a otimização. Isso foi feito exatamente da mesma maneira que otimizei variáveis ​​nos indicadores de movimento de preços, exceto neste caso eu estava otimizando a linha de fundo P & amp; L.


Ao negociar como seres humanos, muitas vezes temos poderosas emoções e desvios que podem levar a decisões menos do que ótimas. Claramente, não queria codificar esses preconceitos. Aqui estão alguns fatores que meu sistema ignorou:


O preço que uma posição foi inserida - Em um escritório de negociação, é muito comum ouvir a conversa sobre o preço no qual alguém é longo ou curto, como se isso pudesse afetar a futura tomada de decisões. Embora isso tenha alguma validade como parte de uma estratégia de redução de risco, ele realmente não tem influência no futuro dos eventos no mercado. Portanto, meu programa ignorou completamente essa informação. É o mesmo conceito que ignorar custos irrecuperáveis. Ir a curto vs. sair de uma posição longa - Normalmente, um comerciante teria critérios diferentes que determinam onde vender uma posição longa versus onde ficar curto. No entanto, da minha perspectiva de algoritmos não havia motivo para fazer uma distinção. Se o meu algoritmo esperava que uma venda de movimento descendente fosse uma boa idéia, independentemente de ser atualmente longa, curta ou plana. A & ldquo; dobrando para cima & rdquo; estratégia - Esta é uma estratégia comum em que os comerciantes comprarão mais ações no caso de o comércio original ir contra elas. Isso resulta em um preço de compra médio menor e significa que quando (ou se) o estoque se virar, você estará configurado para fazer o seu dinheiro de volta em nenhum momento. Na minha opinião, esta é realmente uma estratégia horrível, a menos que você seja o Warren Buffet. Você está enganado para pensar que você está indo bem porque a maioria de seus negócios serão vencedores. O problema é quando você perde você perder grande. O outro efeito é que dificilmente julgar se você realmente tem uma vantagem no mercado ou está apenas tendo sorte. Ser capaz de monitorar e confirmar que o meu programa de fato teve uma vantagem foi um objetivo importante.


Uma vez que meu algoritmo tomou decisões do mesmo modo, independentemente de onde ele entrou em um comércio ou se fosse atualmente longo ou curto, ocasionalmente sentava-se (e aceitou) alguns grandes negócios perdidos (além de alguns grandes negócios vencedores). Mas, você não deveria pensar que não havia nenhum gerenciamento de riscos.


Para gerenciar o risco, apliquei um tamanho máximo de posição de 2 contratos por vez, ocasionalmente acumulado em dias de alto volume. Eu também tive um limite máximo de perda diária para proteger contra quaisquer condições de mercado inesperadas ou um erro no meu software. Esses limites foram aplicados no meu código, mas também no backend através do meu corretor. Como aconteceu, nunca encontrei problemas significativos.


Desde o momento em que comecei a trabalhar no meu programa, demorei cerca de 6 meses antes de chegar ao ponto de rentabilidade e começar a executá-lo ao vivo. Embora seja justo, uma quantidade significativa de tempo foi aprender uma nova linguagem de programação. Enquanto trabalhava para melhorar o programa, vi maiores lucros para cada um dos próximos quatro meses.


Todas as semanas, eu treinaria o sistema com base nas 4 semanas anteriores de dados. Eu achei que isso atingiu o equilíbrio certo entre a captura de tendências comportamentais recentes do mercado e garantir que meu algoritmo tivesse dados suficientes para estabelecer padrões significativos. À medida que o treinamento começou a tomar mais e mais tempo, eu o separei para que ele possa ser executado por 8 máquinas virtuais usando o Amazon EC2. Os resultados foram então agrupados na minha máquina local.


O ponto alto da minha negociação foi outubro de 2009, quando eu fiz quase 100k. Depois disso, continuei a gastar os próximos quatro meses tentando melhorar meu programa, apesar da diminuição do lucro a cada mês. Infelizmente, neste ponto, acho que eu implementei todas as minhas melhores idéias, porque nada que tentei pareceu ajudar muito.


Com a frustração de não poder fazer melhorias e não ter um senso de crescimento, comecei a pensar em uma nova direção. Eu ed 6 empresas diferentes de comércio de alta freqüência para ver se eles estão interessados ​​em comprar meu software e me contratando para trabalhar para eles. Ninguém respondeu. Eu tive algumas idéias de inicialização novas que queria trabalhar, então eu nunca segui.


UPDATE - Posteci isso no Hacker News e tem tido muita atenção. Eu só quero dizer que não defendo ninguém tentando fazer algo assim agora. Você precisaria de uma equipe de pessoas realmente inteligentes com uma variedade de experiências para ter alguma esperança de competir. Mesmo quando eu estava fazendo isso, eu acreditava que era muito raro que os indivíduos conseguissem sucesso (embora eu tivesse ouvido falar de outros).


Há um comentário no topo da página que menciona "estatísticas manipuladas" e se refere a mim como um investidor de varejo & ldquo; rdquo; que os quants gostariam de escolher com entusiasmo & rdquo ;. Este é um comentário bastante infeliz que simplesmente não é baseado na realidade. Configurando isso de lado há alguns comentários interessantes: news. ycombinator / item? Id = 4748624.


UPDATE # 2 - I & rsquo; postou um FAQ de seguimento que responde algumas perguntas comuns que eu recebi dos comerciantes sobre esta publicação.


Delhideviant gostou disto.


Oi, sou Jesse, fundador da Thinklab. Eu vivo e toco em São Francisco. Você encontrou minha casa na web ... Bem-vindo!


Construa um sistema de negociação de ações para sua vida!


Negociar para viver é uma idéia emocionante, e os sistemas de estoque de negociação podem lhe dar a vida que você deseja. Um sistema é simplesmente um conjunto de regras que define como você entrará e sairá dos mercados financeiros para ganhar dinheiro. Os sistemas de negociação de ações funcionam porque eliminam a emoção, criam consistência e capturam uma vantagem nos mercados.


A maioria dos novos comerciantes falham e perdem dinheiro e # xa0, porque eles tomam dicas dos outros, fazem o que é popular, fazem o que soa bem nas festas, eles fazem o que comercializa fortemente pela indústria, eles usam o estoque de outra pessoa sistema de negociação & # xa0; - eles não fazem o que é rentável!


Atualização: Movi-me! Junte-se a mim no meu novo site enlightenedstocktrading.


estratégia de negociação de ações.


sistema de comércio de ações.


Eu acredito que VOCÊ pode ter sucesso onde tantos outros falharam!


Você pode fazer o comércio de dinheiro, & # xa0; VOCÊ pode viver e trabalhar em qualquer lugar do mundo e VOCÊ pode ser livre da escravidão corporativa. Construindo seu próprio sistema comercial que atenda seus objetivos, se adequa à sua personalidade e lhe dá a vida que você quer é a resposta. Posso mostrar-lhe, em quatro passos simples, como criar um sistema rentável que funcione para você, independentemente de querer negociar o mercado de ações, o mercado de futuros ou os mercados cambiais.


Meu objetivo é ajudá-lo a ter sucesso construindo seu próprio sistema de negociação de ações rentável que atenda seus objetivos e lhe dá a vida que deseja. A maioria dos novos comerciantes falha porque eles não têm um guia para ajudá-los a construir um sistema rentável que se adapte a eles.


Por sua conta, esta é uma jornada difícil - Deixe-me ajudá-lo a se tornar um comerciante rentável rapidamente! Certifique-se de que você também verifique meu novo site na Enlightened Stock Trading para saber como desenvolver um sistema de negociação de ações vencedor que se adapte à sua personalidade, seus objetivos e seu estilo de vida ideal.


Por onde eu começo?


Existem inúmeros cursos, serviços de assinatura e sistemas caros para venda nesta indústria. Nada disso é a resposta isolada.


. A resposta é projetar seu próprio sistema comercial com uma compreensão de si mesmo.


Alguém que gosta de ação terá problemas para negociar uma abordagem semanal de longo prazo.


A pergunta que a maioria dos novos comerciantes perguntam: "Como você faz o comércio de dinheiro?" É A PERDA ERRADA!


A pergunta que cada comerciante deve fazer é: "Como posso ganhar dinheiro negociando?"


Todos são diferentes, então, você não pode ganhar dinheiro consistentemente tomando dicas de amigos, seguindo boletins informativos, se inscrevendo em serviços de cobrança de estoque, lendo boletins informativos, pagando seminários caros para aprender métodos comerciais secretos. porque? Porque essas coisas tudo têm uma coisa em comum - eles não conseguem levar em conta você!


O melhor lugar para começar é com você!


Há muitos equívocos sobre como fazer lucros comerciais consistentes.


A verdade é que você pode construir a liberdade financeira através da negociação.


sem ser forçado a assistir os mercados o dia todo, sem dia de negociação, sem comércio de alta freqüência, sem escalar, sem conhecimento interno.


Apesar de todo o hype, estes são apenas como um trabalho estressante que encadeia você para a tela do computador. Você pode ter tanto tempo quanto dinheiro. As estratégias de negociação de médio a longo prazo podem dar-lhe isso.


Minha abordagem de 4 passos para sistemas de negociação de ações.


A ótima notícia é que o melhor sistema não é complexo ou difícil de projetar.


Não importa se você comercializa o mercado de ações, o mercado de futuros, o forex ou opções ou qualquer outro instrumento, o melhor sistema é aquele que você constrói para si mesmo, para que você entenda como e por que funciona.


Minha abordagem para guiá-lo é um processo direto e transparente para o sucesso comercial.


Através deste site e de meus outros recursos, vou ajudá-lo:


Desenvolver regras de gestão de risco e gerenciamento de portfólio para atender aos seus objetivos Escolhendo seu software para assegurar a tarefa de desenvolver um sistema robusto.


I & # xa0; tive muito apoio na minha própria jornada para o sucesso comercial. Demorou vários anos para encontrar uma abordagem que deu o estilo de vida que queria. Meu objetivo era a liberdade através da negociação, não um trabalho de troca de tempo integral.


Havia um apoio útil muito limitado na indústria comercial, e bons recursos eram difíceis de encontrar. Desenvolvi gradualmente a minha compreensão da psicologia do comércio e investiguei inúmeras estratégias comerciais e abordagens de investimento. I & # xa0; ler inúmeros livros sobre sistemas de negociação, projetado e testado meus próprios sistemas, aprendi o software e encontrei o meu caminho.


Muitas pessoas falham porque este é um caminho desafiador, mas o resultado vale a pena a viagem. Espero que compartilhar minha jornada lhe traga sucesso e ataca sua curva de aprendizado para negociação com rentabilidade.


estratégia de negociação de ações.


sistema de comércio de ações.


Princípios de negociação.


Sobre.


Copyright В © Trading System Life PTE. LTD. 2013 - 2015. Todos os direitos reservados.


Começando: Construindo um Sistema de Negociação Totalmente Automatizado.


Nos últimos 6 meses, fiquei focado no processo de construção da pilha de tecnologia completa de um sistema de negociação automatizado. Eu encontrei muitos desafios e aprendi muito sobre os dois métodos diferentes de backtesting (Vectorizado e Evento conduzido). Na minha jornada de construção de um backtester dirigido por um evento, surpreendi que o que você acabasse fosse perto da pilha de tecnologia completa necessária para construir uma estratégia, testá-la e executar a execução ao vivo.


O meu maior problema ao abordar o problema foi a falta de conhecimento. Olhei em muitos lugares para uma introdução à construção da tecnologia ou um blog que me guiaria. Encontrei alguns recursos que vou compartilhar com você hoje.


Para iniciantes:


Para os leitores novos para negociação quantitativa, eu recomendaria o livro de Ernie P. Chan intitulado: Negociação Quantitativa: como construir seu próprio negócio de negociação algorítmica. Este livro é o básico. Na verdade, é o primeiro livro que eu li em negociação quantitativa e, mesmo assim, achei muito básico, mas há algumas notas que você deveria tomar.


Da página 81-84 Ernie escreve sobre como no nível de varejo uma arquitetura de sistema pode ser dividida em estratégias semi-automáticas e totalmente automatizadas.


Um sistema semi-automatizado é adequado se você deseja fazer alguns negócios por semana. Ernie recomenda o uso de Matlab, R ou mesmo do Excel. Utilizei todas as 3 plataformas e este é o meu conselho:


Saltei Matlab, custou muito dinheiro e eu só consegui acesso aos laboratórios universitários. Não há muito material de treinamento como blogs ou livros que irão ensinar-lhe como codificar uma estratégia usando o Matlab. R tem toneladas de recursos que você pode usar para aprender a construir uma estratégia. Meu blog favorito abordando o tópico é: QuantStratTradeR executado por Ilya Kipnis. O Microsoft Excel é provavelmente o local onde você iniciará se você não tiver experiência de programação. Você pode usar o Excel para negociação semi-automatizada, mas não vai fazer o truque quando se trata de construir a pilha de tecnologia completa.


Quadro semi-automático pg 81.


Sistemas de negociação totalmente automatizados são para quando você deseja colocar negócios automaticamente com base em um feed de dados ao vivo. Eu codifiquei o meu em C #, QuantConnect também usa C #, QuantStart anda pelo leitor através da construção dele em Python, Quantopian usa Python, HFT provavelmente usará C ++. Java também é popular.


Estrutura de negociação totalmente automatizada pg 84.


Passo 1: Obter uma vantagem.


Faça o Programa Executivo em Negociação Algorítmica oferecido pela QuantInsti. Acabei de começar o curso e o primeiro conjunto de palestras foi na arquitetura do sistema. Isso me salvaria cerca de 3 meses de pesquisa se eu tivesse começado aqui. As palestras me acompanharam por cada componente que eu precisaria, bem como uma descrição detalhada do que cada componente precisa fazer. Abaixo está uma captura de tela de uma das suas lâminas utilizadas na apresentação:


Você também pode usar esse quadro geral ao avaliar outros sistemas de negociação automática.


No momento da escrita, estou apenas na terceira semana de palestras, mas estou confiante de que um profissional poderá construir uma estratégia de negociação totalmente automatizada que, com um pouco de polonês, possa ser transformada em um hedge fund quantitativo .


Nota: o curso não está focado na construção da pilha de tecnologia.


Etapa 2: codifique um backtester baseado em eventos básicos.


O blog de Michael Hallsmore e o quantstart & amp; livro "Negociação Algorítmica de Sucesso"


Este livro possui seções dedicadas à construção de um backtester dirigido por eventos robustos. Ele dirige o leitor através de uma série de capítulos que irão explicar sua escolha de linguagem, os diferentes tipos de backtesting, a importância do backtesting dirigido a eventos e como codificar o backtester.


Michael apresenta o leitor às diferentes classes necessárias em um design orientado a objetos. Ele também ensina o leitor a construir um banco de dados mestre de valores mobiliários. É aqui que você verá como a arquitetura do sistema da QuantInsti se encaixa.


Nota: Você precisará comprar seu livro: "Successful Algorithmic Trading", seu blog deixa para fora muita informação.


Passo 3: Vire a TuringFinance.


O programa EPAT Leitura "Successful Algorithmic Trading" & amp; codificando um backtester em um idioma diferente da sua escolha.


Você deve se mudar para um blog chamado TuringFinance e ler o artigo intitulado "Algorithmic Trading System Architecture" Por: Stuart Gordon Reid. Em sua publicação, ele descreve a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42010 e padrão de descrição de arquitetura de engenharia de software.


Eu achei esta publicação muito técnica e tem algumas ótimas idéias que você deve incorporar na sua própria arquitetura.


Uma captura de tela de sua postagem.


Passo 4: Estudar sistemas de comércio aberto.


4.1) Quantopian.


Escusado será dizer que Quantopian deve ser adicionado a esta lista e estou com vergonha de dizer que não passei muito tempo usando sua plataforma (devido à minha escolha de linguagem). Quantopian tem muitas vantagens, mas as que melhoram para mim são as seguintes:


Fácil de aprender Python Acesso gratuito a muitos conjuntos de dados Uma grande comunidade e competições Eu adoro como eles hospedam QuantCon!


Quantopian é líder de mercado neste campo e é amado por quants por toda parte! Seu projeto de código aberto está sob o nome de código Zipline e isso é um pouco sobre isso:


"Zipline é o nosso motor de código aberto que alimenta o backtester no IDE. Você pode ver o repositório de códigos no Github e contribuir com solicitações de envio para o projeto. Existe um grupo do Google disponível para procurar ajuda e facilitar discussões ".


Aqui está um link para sua documentação:


4.2) QuantConnect.


Para aqueles que não estão familiarizados com a QuantConnect, eles fornecem um mecanismo de troca algorítmica de código aberto completo. Aqui está um link.


Você deve dar uma olhada em seu código, estudá-lo, & amp; dar-lhes elogios. Eles são competição de Quantopians.


Gostaria de aproveitar esta oportunidade para agradecer a equipe da QuantConnect por me deixar escolher seu cérebro e pelo brilhante serviço que eles fornecem.


Aqui está um link para sua documentação:


Observações finais:


Espero que este guia ajude os membros da comunidade. Eu queria ter essa visão 6 meses atrás, quando comecei a codificar nosso sistema.


Gostaria de chegar à comunidade e perguntar: "Quais bons cursos de negociação algorítmica você conhece?" Eu gostaria de escrever uma publicação que analisa o tópico e fornece uma classificação. Existem recomendações para a construção de um sistema de negociação totalmente automatizado que você gostaria de adicionar a esta publicação?


Compartilhar isso:


Compartilhe essa entrada.


Você pode gostar também.


Bom artigo. Eu gostaria de ter tido cerca de 6 meses atrás. Eu uso QuantConnect porque sou um programador C #. Achei muito conveniente poder fazer o download do teste Lean e back test localmente. Rummaging através do seu código também é valioso. Além disso, eles cortaram um acordo com a Trader por negócios de US $ 1. Isso ajuda muito. Não sou tão saliente sobre spreads e execução da Trader. O IB pode ser melhor para isso.


Vou dar uma olhada no curso que você mencionou.


Você não mencionou a Quantocracy ou RBloggers. Ambos são recursos muito valiosos.


O que você usa para traçar resultados de testes de volta? Eu logro os valores do OHLC e do indicador para csv do evento OnData e estou realmente cansado de usar o Excel para traçar os resultados. Gostaria de apontar um pacote de gráficos para um arquivo de dados e simplesmente ir.


Você ainda possui um fornecedor de caixas de seleção?


Tenho um pensamento sobre os sistemas dirigidos a eventos. O problema com os eventos é que eles são assíncronos e latentes. Parece que eles são inevitáveis ​​assim que você obtém uma corretora envolvida, então eu tenho sonhado com um sistema de streaming mais seguindo os princípios da programação funcional.


& # 8211; Injeste um fluxo de tiquetaque ou barra.


& # 8211; Execute-o através de um processo de cálculo de indicadores, execução de análise ou ML, e assim por diante.


& # 8211; Retornar um sinal.


& # 8211; Envie-o para o corretor para executar.


Em seguida, em um fluxo separado.


& # 8211; Receba uma resposta do corretor.


O problema, é claro, é o estado. Tenho margem suficiente para fazer o comércio? O que está no meu portfólio? Como está funcionando? Normalmente, o corretor api pode ser consultado para descobrir essas coisas, mas leva tempo e é assíncrono. Eu também estou olhando extensões Rx. Dessa forma, o sistema pode reagir às mudanças no sistema através do padrão observável.


Os eventos são ótimos para cliques no mouse. Não é tão bom para processamento transacional de alto volume.


Esta é exatamente a abordagem que tomei com minhas próprias coisas. Essencialmente, eu tenho um & # 8216; normal & # 8217; programa que envolve uma pequena parte que é conduzida a eventos para falar com o corretor (IB API). Agora, para o problema do estado. Você tem duas escolhas; obter o estado do corretor, ou armazená-lo internamente, atualizando-o quando você receber um preenchimento. Isso significa que há momentos em que você não conhece seu estado ou quando as duas fontes de estado estão potencialmente em conflito (dados ruins ou atrasos). Parte disso depende da rapidez com que você troca. A menos que você esteja negociando com muita rapidez, então, pausando se você tiver um conflito de estado, ou você está incerto de estado, é melhor do que prosseguir sem saber o seu estado. Eu uso um banco de dados & # 8216; lock & # 8217; paradigma para lidar com isso.


Quanto a quase tudo o que você pediu, você está perto da resposta em Reactive Extension (Rx).


Com Rx indo de tiques para velas é trivial.


Passar de Velas para Indicadores é trivial.


Indicadores de composição de outros indicadores é trivial.


Escrever Posições de Indicadores é trivial.


Composição de Portfolios (como realizada ao longo do tempo) das Posições é trivial.


Simular o modelo de risco é trivial.


Back testing ou trading live é simplesmente decidir entre uma transmissão ao vivo de dados ou uma repetição simulada de dados do banco de dados.


Executar é trivial.


A implementação é possível em tudo, desde C # até F # para JavaScript para C ++ em código quase idêntico.


A otimização é feita rapidamente porque o Rx puramente funcional é massivamente paralisável ao GPU.


É certo que a otimização e a alimentação do efeito da otimização contínua de volta ao teste de back-back não é trivial, mas dado que não é trivial de qualquer maneira, eu irei deixar esse slide 😉


Puramente funcional (ou perto dela) A Rx é, na minha opinião, a única maneira de abordar a infraestrutura desse problema.


Conheço o sistema que quero negociar. Eu não quero programar ou aprender algo que alguém já conhece. Então, quem posso contratar para levar o sistema que eu quero usar e automatizá-lo. Por automatizar isso, quero dizer, eu não quero olhar para ele. Eu vou olhar os resultados uma vez por semana e os negócios serão executados sem a minha atenção. Parece estranho para mim que, em 2016, tanto esforço precisa seguir um conjunto de regras e ter essas regras executadas no meu corretor.


Eu sugeriria inscrever-se com o Quantopian e depois encontrar alguém dentro da comunidade lá para construir a estratégia para você. Eles serão capazes de construí-lo para você dentro da plataforma IB Brokers e ser totalmente automatizado.


Deixe-me dizer, porém, que acho que você deve monitorá-lo de perto, e não apenas "esqueça-o para" # 8221 ;.


Contrate os desenvolvedores.


para construir seus próprios robôs de negociação para fazer negócios por algoritmo.


Negociação e negociação de alta freqüência.


Existem muitos riscos incluídos na negociação nos mercados financeiros, um deles é o risco de tomar uma decisão comercial incorreta. Todo comerciante tem um sonho de seu próprio robô comercial, que está sempre em boa forma e não está sujeito a fraquezas humanas - impaciência, medo, ganância.


Grande ecossistema na negociação.


Intercâmbios como NASDAQ, NYSE, CME, etc. são algumas das baleias gerenciadas por software, que conecta compradores e vendedores. As APIs fechadas são fornecidas por trocas para acessar seus dados e realizar negócios.


As empresas de corretores atuam como intermediários que trabalham entre pequenas empresas / indivíduos e trocas. Geralmente, eles estão fornecendo seu próprio aplicativo de usuário personalizado para um cliente para negociação. Às vezes, parece um programa que gráficos e botões para comprar / vender ações.


Alguns dos institutos financeiros, como hedge funds, fundos mútuos e bancos, estão criando seus próprios robôs comerciais para negociação. Esses departamentos financeiros precisam de um departamento separado que trabalhe dedicadamente para desenvolver robôs e matemáticos chamados de "quants", que criam modelos de negociação matemática.


No caso, você é um investidor individual, que quer automatizar a negociação, então alugue Space-O para criar um robô para negociação algorítmica e negociação de alta freqüência.


O que exatamente os robôs comerciais fizeram?


Os indivíduos geralmente querem robôs simples que correm dentro do terminal intermediário. Hedge funds e outras grandes empresas normalmente usam software desenvolvido especializado e até hardware para executar suas estratégias. Nesse nível, os robôs operam com uma API de troca ou corretor de baixo nível e funcionam muito rápido.


Há uma área separada e muito específica chamada HFT (comércio de alta frequência), onde o robô executa milhões de trades por dia, cada um fazendo pouco dinheiro. Às vezes, tais robôs usam erros de mercado e ineficiências e, assim, precisam ser mais rápidos do que outros robôs. Assim, a velocidade e a latência são as principais prioridades aqui.


Trading Robots e Forex.


Acredita-se que o mercado Forex tenha uma grande liquidez. Além disso, permite 24 horas de negociação em um dia, ao contrário de outros mercados e, portanto, muitos comerciantes estão tentando desenvolver robôs comerciais particularmente para o mercado Forex, ele oferece uma grande quantidade de instrumentos de negociação.


Os terminais comerciais MetaTrader 4 e MetaTrader 5 são especialmente projetados para criar sistemas de negociação automatizados, no entanto, ao mesmo tempo, sua interface também é adequada para negociação manual.


Programação de um robô de negociação.


Digamos que você está aprendendo ou aprendeu a linguagem de programação MQL4 ou MQL5 (se você não, então contratar Space-O para fazer este trabalho, experimentamos desenvolvedores para desenvolver robôs comerciais), então você está pronto para escrever seu primeiro consultor especialista para o terminal do cliente MetaTrader. Aqui, muitas coisas são possíveis.


Em primeiro lugar, você pode examinar muitos robôs comerciais prontos que estão listados neste artigo para melhor compreensão das complexidades de programação.


Ou, você pode fazer suas perguntas sobre MQL4munity ou MQL5munity. Você encontrará muitos recém-chegados experientes, que mostram interesse no assunto.


Por fim, você pode solicitar melhorias ou desenvolvimento de um Consultor Especialista ou um indicador no serviço de Emprego, caso você não consiga escrever um programa necessário por conta própria. Embora você faça um pedido através do serviço de freelancer, você deve ter alguma idéia sobre testes de estratégia para pesquisar um idioma comum com um desenvolvedor.


Além de ter conhecimento básico de uma linguagem de programação, ele permite implementar pequenas correções e alterações no código após o trabalho ter sido concluído. Afinal, não seria muito conveniente contratar programadores do Space-O para corrigir todos os pequenos problemas que você encontrar.


Criar Sistema Automatizado de Negociação Baseado em Redes Neurais.


Desenvolvimento de sistema de negociação automatizado baseado em redes neurais usando ferramentas pré-fabricadas amplamente disponíveis em pacotes de matemática e software especial. É uma tarefa empolgante e desafiadora criar um sistema comercial automatizado com os elementos da inteligência artificial. No entanto, não requer antecedentes matemáticos profundos ou experiência de programação, pois tudo é feito usando auxílios visuais.


Um comerciante deve ter informações sobre os conceitos básicos de indicadores técnicos, o conhecimento de preparar dados de preços essenciais e experiência em determinado pacote para trabalhar com redes neutras. No entanto, a desvantagem desta abordagem é que um robô comercial obtido por meio de ferramentas especializadas para trabalhar com redes neurais, que na verdade é uma "caixa preta".


Os comerciantes não sabem que são princípios de trabalho e, portanto, torna-se difícil para eles prever qual a frase do mercado mais problemática para o robô.


Vamos dar um exemplo:


Stock Prophet é um sistema de negociação de redes de redes de usuário fácil de usar e ferramentas de desenvolvimento de sistema de comércio de propósito geral para empregar a tecnologia de rede neural da BrainMaker. Ele combina automaticamente vários indicadores em um único sinal claro de compra / venda. Tais coisas podem ser aplicadas em futuros, ações, fundos de investimento e outros instrumentos financeiros.


De acordo com todos os entusiastas da rede neural, o passo mais forte na operação de uma rede neural é a coleta e pré-processamento de dados volumosos e de alta qualidade. Sendo uma rede poderosa, as redes neurais dependem dos dados aplicáveis ​​em quantidade suficiente e no formato perfeito para funcionarem adequadamente.


Como funciona a Rede Neural?


As redes neurais são criadas a partir de centenas ou milhares de neurônios simulados conectados entre si, da mesma forma que os neurônios do cérebro. As redes neurais aprendem com a experiência em vez da programação. As redes neurais são excelentes na previsão de tendências, reconhecimento de padrões e generalização.


As redes neurais não precisam de fórmulas ou regras, pois são mais rápidas e aceitam dados imperfeitos. Essas redes são treinadas ao mostrar repetidamente exemplos à rede. Cada um dos exemplos deles inclui ambas as entradas, isto é, informação e saída, ou seja, resposta, decisão.


Custaria milhões para criar um robô?


NÃO, não. Como os compradores de robôs são diferentes, seus criadores também são diferentes. Existem empresas que não desenvolvem robôs para terminais populares. O Space-O desenvolve robôs comerciais inteiros que vêm em duas formas diferentes:


Plug-in para um aplicativo de terminal que geralmente funciona para robôs simples e alguma troca de algo. Programa não-GUI que funciona separadamente do terminal. Geralmente, isso funciona quando você está fazendo negócios sérios e HFT.


Nossos desenvolvedores estão trabalhando com pesquisas sobre a construção de ambos os tipos de robôs. No entanto, estamos recomendando que você desenvolva seu próprio robô comercial, de acordo com suas necessidades. Os intercâmbios, os bancos e os fundos Hedge têm suas próprias equipes de desenvolvimento de robôs dedicados internos para operar o software financeiro. Investir no desenvolvimento e investimento em robôs realmente altera o mundo. As decisões de gerenciamento baseadas em dados podem levar a um novo estilo de gerenciamento, onde os futuros líderes bancários e de seguros perguntarão as questões corretas relacionadas às máquinas, em vez de agentes de suporte, que analisarão os dados e lhe darão as decisões recomendadas que os líderes e seus subordinados usar e motivar sua força de trabalho para implementar. O setor de serviços financeiros precisa ser cuidadoso antes da implantação de processos robotizados, a fim de evitar interrupções mínimas nas empresas e o pleno cumprimento dos padrões regulatórios.


Vamos construir o aplicativo.


20M + downloads de aplicativos.


25 + startups bem sucedidos.


Mais de 200 desenvolvedores móveis.


15 + recursos únicos para implementar (1ª vez na loja de aplicativos)


100 + inovações pequenas / grandes.


Empresa premiada.


Direitos autorais e cópia; 2017 Space-O Technologies. Todos os direitos reservados.

No comments:

Post a Comment