Thursday 12 April 2018

Sistemas de negociação hft


Mais um passo.
Complete a verificação de segurança para acessar a velocidade da luz.
Por que eu tenho que completar um CAPTCHA?
Concluir o CAPTCHA prova que você é humano e dá acesso temporário à propriedade da web.
O que posso fazer para evitar isso no futuro?
Se você estiver em uma conexão pessoal, como em casa, você pode executar uma verificação antivírus em seu dispositivo para se certificar de que não está infectado com malware.
Se você estiver em um escritório ou rede compartilhada, você pode pedir ao administrador da rede para executar uma varredura na rede procurando dispositivos mal configurados ou infectados.
Cloudflare Ray ID: 3e265b5041768b1c & bull; Seu IP: 78.109.24.111 & bull; Performance & amp; segurança por Cloudflare.

Fundamentos do comércio algorítmico: conceitos e exemplos.
Um algoritmo é um conjunto específico de instruções claramente definidas destinadas a realizar uma tarefa ou processo.
O comércio algorítmico (negociação automatizada, negociação em caixa preta ou simplesmente algo-trading) é o processo de uso de computadores programados para seguir um conjunto definido de instruções para colocar um comércio para gerar lucros a uma velocidade e freqüência impossíveis para um comerciante humano. Os conjuntos definidos de regras são baseados em tempo, preço, quantidade ou qualquer modelo matemático. Além das oportunidades de lucro para o comerciante, o algo-trading torna os mercados mais líquidos e torna a negociação mais sistemática descartando impactos emocionais humanos nas atividades comerciais. (Para mais, consulte Picking the Right Algorithmic Trading Software.)
Suponha que um comerciante siga esses critérios de comércio simples:
Compre 50 ações de uma ação quando sua média móvel de 50 dias excede a média móvel de 200 dias. Vende ações da ação quando sua média móvel de 50 dias está abaixo da média móvel de 200 dias.
Usando este conjunto de duas instruções simples, é fácil escrever um programa de computador que monitorará automaticamente o preço das ações (e os indicadores de média móvel) e colocará as ordens de compra e venda quando as condições definidas forem atendidas. O comerciante não precisa mais manter um relógio para preços e gráficos ao vivo, ou colocar as ordens manualmente. O sistema de negociação algorítmica automaticamente faz isso para ele, identificando corretamente a oportunidade comercial. (Para mais informações sobre as médias móveis, consulte Médias móveis simples, faça as tendências se destacarem.)
[Se você quiser saber mais sobre as estratégias comprovadas e pontuais que podem eventualmente ser trabalhadas em um sistema de comércio alorítico, confira o Curso de Torneio de Dia de Torneio da Invastopedia Academy. ]
Benefícios da negociação algorítmica.
A Algo-trading oferece os seguintes benefícios:
Negociações executadas com os melhores preços Posicionamento instantâneo e preciso da ordem comercial (com altas chances de execução nos níveis desejados) Negociações cronometradas corretamente e instantaneamente, para evitar mudanças de preços significativas Custos de transação reduzidos (veja o exemplo de falta de implementação abaixo) Verificações automatizadas simultâneas em múltiplos condições de mercado Reduziu o risco de erros manuais na colocação dos negócios Backtest o algoritmo, com base nos dados históricos e em tempo real disponíveis Reduzida a possibilidade de erros por comerciantes humanos com base em fatores emocionais e psicológicos.
A maior parte do dia-a-dia é a negociação de alta freqüência (HFT), que tenta capitalizar a colocação de um grande número de pedidos em velocidades muito rápidas em múltiplos mercados e múltiplos parâmetros de decisão, com base em instruções pré-programadas. (Para obter mais informações sobre o comércio de alta freqüência, consulte Estratégias e Segredos de Empresas de Negociação de Alta Freqüência (HFT).)
O Algo-trading é usado em muitas formas de atividades de comércio e investimento, incluindo:
Investidores de médio a longo prazo ou empresas de compra (fundos de pensão, fundos de investimento, companhias de seguros) que adquirem ações em grandes quantidades, mas não querem influenciar os preços das ações com investimentos discretos e de grande porte. Os comerciantes de curto prazo e os participantes do lado da venda (fabricantes de mercado, especuladores e arbitragentes) se beneficiam da execução comercial automatizada; Além disso, ajudas de algo-trading na criação de liquidez suficiente para os vendedores no mercado. Os comerciantes sistemáticos (seguidores de tendências, comerciantes de pares, hedge funds, etc.) acham muito mais eficiente programar suas regras comerciais e permitir que o programa seja comercializado automaticamente.
O comércio algorítmico proporciona uma abordagem mais sistemática ao comércio ativo do que os métodos baseados na intuição ou instinto do comerciante humano.
Estratégias de negociação algorítmica.
Qualquer estratégia de negociação algorítmica exige uma oportunidade identificada que seja rentável em termos de melhoria de ganhos ou redução de custos. As seguintes são estratégias de negociação comuns usadas em algo-trading:
As estratégias de negociação algorítmicas mais comuns seguem as tendências em médias móveis, fuga de canais, movimentos no nível de preços e indicadores técnicos relacionados. Estas são as estratégias mais fáceis e simples de implementar através de negociação algorítmica porque essas estratégias não envolvem fazer previsões ou previsões de preços. Os negócios são iniciados com base na ocorrência de tendências desejáveis, que são fáceis e direitas de implementar através de algoritmos sem entrar na complexidade da análise preditiva. O exemplo acima mencionado de média móvel de 50 e 200 dias é uma tendência popular seguindo a estratégia. (Para mais informações sobre as estratégias de negociação de tendências, consulte: Estratégias simples para capitalizar as tendências.)
Comprar um estoque cotado duplo a um preço mais baixo em um mercado e simultaneamente vendê-lo a um preço mais alto em outro mercado oferece o diferencial de preço como lucro ou arbitragem sem risco. A mesma operação pode ser replicada para ações versus instrumentos de futuros, pois os diferenciais de preços existem de tempos em tempos. Implementar um algoritmo para identificar esses diferenciais de preços e colocar as ordens permite oportunidades lucrativas de forma eficiente.
Os fundos do índice definiram períodos de reequilíbrio para que suas participações fossem compatíveis com seus respectivos índices de referência. Isso cria oportunidades rentáveis ​​para comerciantes algorítmicos, que capitalizam os negócios esperados que oferecem lucros de 20 a 80 pontos base, dependendo do número de ações no fundo do índice, apenas antes do reequilíbrio do fundo do índice. Essas negociações são iniciadas através de sistemas de negociação algorítmica para execução atempada e melhores preços.
Muitos modelos matemáticos comprovados, como a estratégia de negociação neutra do delta, que permitem a negociação de combinações de opções e sua segurança subjacente, onde os negócios são colocados para compensar deltas positivos e negativos, de modo que o portfólio delta seja mantido em zero.
A estratégia de reversão média baseia-se na ideia de que os preços altos e baixos de um bem são um fenômeno temporário que retorna periodicamente ao seu valor médio. Identificar e definir uma faixa de preço e implementar algoritmos com base em isso permite que os negócios sejam colocados automaticamente quando o preço do recurso entra e sai do seu alcance definido.
A estratégia de preços médios ponderados por volume quebra uma grande ordem e libera pedaços menores determinados dinamicamente da ordem para o mercado usando perfis de volume histórico específicos de estoque. O objetivo é executar a ordem perto do preço médio ponderado do volume (VWAP), beneficiando assim o preço médio.
A estratégia de preço médio ponderado no tempo quebra uma grande ordem e libera dinamicamente determinados pedaços menores da ordem para o mercado usando intervalos de tempo uniformemente divididos entre o início e o fim do tempo. O objetivo é executar a ordem perto do preço médio entre os horários de início e término, minimizando assim o impacto no mercado.
Até que a ordem comercial seja totalmente preenchida, este algoritmo continua enviando ordens parciais, de acordo com o índice de participação definido e de acordo com o volume negociado nos mercados. A "estratégia de etapas" relacionada envia ordens a uma porcentagem definida pelo usuário de volumes de mercado e aumenta ou diminui essa taxa de participação quando o preço da ação atinge os níveis definidos pelo usuário.
A estratégia de falta de implementação visa minimizar o custo de execução de uma ordem através da negociação do mercado em tempo real, economizando assim o custo da ordem e beneficiando do custo de oportunidade da execução atrasada. A estratégia aumentará a taxa de participação direcionada quando o preço das ações se mover de forma favorável e diminuí-lo quando o preço das ações se mover de forma adversa.
Existem algumas classes especiais de algoritmos que tentam identificar "acontecimentos" do outro lado. Esses "algoritmos de sniffing", usados, por exemplo, por um market maker market market têm a inteligência interna para identificar a existência de qualquer algoritmo no lado da compra de uma grande ordem. Essa detecção através de algoritmos ajudará o fabricante de mercado a identificar grandes oportunidades de ordem e permitir que ele se beneficie ao preencher os pedidos a um preço mais alto. Isso às vezes é identificado como front-running de alta tecnologia. (Para obter mais informações sobre negociação de alta freqüência e práticas fraudulentas, consulte: Se você comprar ações on-line, você está envolvido em HFTs.)
Requisitos técnicos para negociação algorítmica.
Implementar o algoritmo usando um programa de computador é a última parte, batida com backtesting. O desafio é transformar a estratégia identificada em um processo informatizado integrado que tenha acesso a uma conta de negociação para fazer pedidos. São necessários os seguintes:
Conhecimento de programação de computador para programar a estratégia de negociação necessária, programadores contratados ou software de negociação pré-fabricado Conectividade de rede e acesso a plataformas de negociação para colocar os pedidos Acesso a feeds de dados de mercado que serão monitorados pelo algoritmo para oportunidades de colocar pedidos A capacidade e infra-estrutura para voltar a testar o sistema uma vez construído, antes de entrar em operação em mercados reais Dados históricos disponíveis para backtesting, dependendo da complexidade das regras implementadas no algoritmo.
Aqui está um exemplo abrangente: o Royal Dutch Shell (RDS) está listado na Amsterdam Stock Exchange (AEX) e London Stock Exchange (LSE). Vamos construir um algoritmo para identificar oportunidades de arbitragem. Aqui estão algumas observações interessantes:
AEX negocia em Euros, enquanto a LSE negocia em libras esterlinas. Devido à diferença horária de uma hora, a AEX abre uma hora antes da LSE, seguido de ambas as trocas comerciais simultaneamente durante as próximas horas e depois de negociar apenas na LSE durante a última hora à medida que o AEX fecha .
Podemos explorar a possibilidade de negociação de arbitragem nas ações da Royal Dutch Shell listadas nesses dois mercados em duas moedas diferentes?
Um programa de computador que pode ler os preços atuais do mercado Os feeds de preços de LSE e AEX A taxa de câmbio para a taxa de câmbio GBP-EUR Capacidade de colocação de pedidos que podem rotear a ordem para a troca correta do recurso Back-testing em feeds históricos de preços.
O programa de computador deve executar o seguinte:
Leia o preço de entrada do estoque RDS de ambas as bolsas Usando as taxas de câmbio disponíveis, converta o preço de uma moeda para outra. Se houver uma discrepância de preço suficientemente grande (descontando os custos de corretagem) levando a uma oportunidade rentável, então coloque a compra ordem em troca de preços mais baixos e ordem de venda em troca de preços mais elevados Se as ordens forem executadas conforme desejado, o lucro de arbitragem seguirá.
Simples e fácil! No entanto, a prática de negociação algorítmica não é simples de manter e executar. Lembre-se, se você pode colocar um comércio gerado por algo, os outros participantes do mercado podem também. Conseqüentemente, os preços flutuam em milissegundos e até mesmo em microssegundos. No exemplo acima, o que acontece se o seu comércio de compras for executado, mas o comércio de vendas não acontece à medida que os preços de venda mudam quando o seu pedido atinge o mercado? Você vai acabar sentado com uma posição aberta, tornando sua estratégia de arbitragem inútil.
Existem riscos e desafios adicionais: por exemplo, riscos de falha do sistema, erros de conectividade de rede, atrasos de tempo entre ordens comerciais e execução e, o mais importante de tudo, algoritmos imperfeitos. O algoritmo mais complexo é o backtesting mais rigoroso antes de ser posto em ação.
The Bottom Line.
A análise quantitativa do desempenho de um algoritmo desempenha um papel importante e deve ser examinada criticamente. É excitante ir pela automação auxiliada por computadores com a noção de ganhar dinheiro sem esforço. Mas é preciso certificar-se de que o sistema está completamente testado e os limites exigidos são definidos. Os comerciantes analíticos devem considerar a aprendizagem de sistemas de programação e construção por conta própria, ter confiança em implementar as estratégias certas de forma infalível. O uso cauteloso eo teste completo de algo-trading podem criar oportunidades rentáveis. (Para mais informações, consulte Como codificar seu próprio robô Algo Trading.)

College Kids são agora alta freqüência de troca de dormitórios.
O estudante universitário Spencer Singleton está entre uma crescente banda de amadores voltando-se para a negociação automatizada de ações automatizadas por computador - até agora a reserva de hedge funds e mega corretores - e diz que está batendo o mercado.
Singleton, com sede em Texas, venceu um concurso em julho passado por um site de investimento algorítmico para escrever programas de negociação. O site, Quantopian, deu-lhe US $ 100.000 para colocar seu modelo em ação por seis meses e disse-lhe para manter lucros.
O jogador de 21 anos diz que seu portfólio cresceu cerca de 1,5% neste ano, contra uma queda de 8% no índice de ações S & amp; P 500. Da mesma forma, ele fez cerca de 2,5% desde meados de setembro, enquanto o índice dos EUA perdeu mais de 7% no período.
Outros amadores tentaram o mesmo jogo de seus quartos da frente ou galpões de jardim e acabaram ficando queimados, concluindo que isso é uma caçada ao "ouro & # 8217; s # 8221; melhor para os grandes jogadores, a menos que você seja um ex-profissional ou um garoto do computador.
Singleton não é - ele é um estudante de terceiro ano de gerenciamento da cadeia de suprimentos -, mas diz que a competição deu sua grande chance. Como estudante universitário, não teria conseguido US $ 100.000 em um milhão de anos para negociar, e # 8221; ele disse à Reuters. & # 8220; Teria facilmente levado 10 anos para eu desenvolver uma plataforma de algo complicada como a oferecida por Quantopian. & # 8221;
As plataformas de negociação on-line orientadas por programas, como a Quantpian e a QuantConnect e a base britânica Cloud9trader, com sede nos Estados Unidos, que têm clientes em todo o mundo, não existiram no auge da crise financeira de 2008.
No entanto, Singleton disse que testou seu modelo contra dados históricos do ano de crise, obtendo um retorno de 16% contra uma queda de 38% no índice S & amp; P.
Um grande número de amadores agora está tentando atingi-lo rico nos mercados globais, com o mercado global de comércio no varejo no valor de US $ 3 trilhões nos Estados Unidos.
Mas enquanto a negociação automatizada representa cerca de 75 por cento de todo o volume de mercado financeiro, apenas uma pequena fração de comerciantes independentes ou amadores os usam devido à tecnologia complexa, necessidade de dados históricos maciços e altos custos.
No entanto, as empresas que fornecem plataformas para o aluguel de casas & # 8220; algues & # 8221; Dizem que a popularidade está crescendo entre todos, desde executivos de publicidade e engenheiros de telecomunicações para empreiteiros de defesa.
O fundador e executivo-chefe da Aspian, John Fawcett, disse que a sua adesão aumentou para 60 000 desde 35 mil menos do que um ano atrás, enquanto o fundador e CEO da QuantConnect, Jared Broad, viu um salto em sua participação em 17 mil em comparação com 6.000 no ano anterior .
Broad disse que as estratégias automatizadas tendem a fazer bem quando os mercados são voláteis ou diminuindo acentuadamente, acrescentando que os volumes de negociação em uma de suas corretoras cresceram 300% em apenas três semanas em 2018.
O seu rápido crescimento aumenta o risco de manipulação de mercado ou fraude, mas a Aspian disse que criou muitas salvaguardas, incluindo limites no número de negócios que os clientes podem fazer.
Navinder Singh Sarao, com sede em Londres, foi preso no ano passado, com as autoridades dos EUA ligando seus negócios de computador automáticos para o flash crash do & # 8220; # 8221; em 2018, que secou brevemente US $ 1 trilhão dos mercados de ações dos EUA.
Sarao, que trocou de seus pais & # 8217; perto do aeroporto de Heathrow, em um subúrbio de Londres, está lutando contra os EUA tentando extraditá-lo. Um tribunal britânico deve ouvir o caso em 4 de fevereiro.
Essencialmente, as plataformas de negociação on-line baseadas em regras fornecem ferramentas e tutoriais para as pessoas escreverem algoritmos em navegadores da Web e testar seus modelos com anos de dados históricos. Eles também ajudam as pessoas a abrir contas com corretores aprovados.
É difícil verificar de forma independente as reivindicações de comerciantes de varejo que dizem ter feito muito dinheiro este ano, quando as preocupações com uma economia chinesa em desaceleração e o preço do petróleo em queda acabaram com US $ 8 trilhões dos mercados de ações mundiais apenas em janeiro.
Algumas pessoas como Jason Roberts perderam e saíram. Ele passou cerca de seis anos, de aproximadamente 1999 a 2004 e novamente em 2008, construindo software de negociação automatizado antes de sair para ajudar projetos de inicialização na web e celular.
Roberts disse que cada vez que ele se juntou com comerciantes em um empreendimento comercial automatizado, suas estratégias e idéias perderam a marca, mesmo que anteriormente tenham sido bem-sucedidas como profissionais do mercado.
Como as corretoras, esses sites de negociação ganham dinheiro quando as pessoas usam suas plataformas, por isso está interessado em convencê-lo de que você pode vencer o mercado, e # 8221; disse Roberts, que agora é consultor do serviço de viagem Uber.
Não estou totalmente convencido de que é possível vencer o mercado de forma consistente, quer você seja negociado manualmente, guiado por experiência e intuição ou algorítmica, o que equivale a seguir um conjunto codificado de regras & # 8230; É fácil perder dinheiro com negociação algorítmica, assim como com qualquer investimento. & # 8221;
Julien Turc, chefe da estratégia quantitativa de ativos cruzados da Societe Generale, disse que a construção de uma estratégia de negociação sistemática é muito difícil. É fácil encontrar estratégias que teriam feito bem no passado, mas mais difícil ganhar dinheiro com elas no futuro.
& # 8220; No entanto, o comércio de algoritmos está ficando mais popular agora, pois você obteve melhores tecnologias, os reguladores empurram para negociações transparentes e eletrônicas e cada vez mais se torna difícil ganhar dinheiro usando ferramentas de negociação tradicionais. # 8221;
Singleton e Michael Van Kleeck, outro vencedor do concurso mensal de escrita de código da Quespian & # 8217; em junho passado, estão entre milhares de entusiastas que, desconsiderados pelas críticas, acreditam que têm uma vantagem sobre os métodos comerciais tradicionais.
& # 8220; Os seres humanos são consistentemente menos performantes porque têm interferência emocional. O comércio de Algo formaliza a sua estratégia por conta própria e define limites claros na sua exposição ao risco, & # 8221; disse Jon Kafton, fundador da Cloud9Trader, um site de negociação online automatizado sendo julgado.
Para Kleeck, os sites de algo e as plataformas de negociação atraem aqueles que, como ele, têm um apetite voraz por ler qualquer coisa relacionada a ganhar dinheiro nos mercados financeiros.
Não é uma ciência do foguete, embora possa haver alguns cientistas de foguete no fórum. Isso é parte da disseminação geral da tecnologia em vidas cotidianas. & # 8221; (Reportagem de Atul Prakash, edição de Sudip Kar-Gupta e David Stamp)
CONTEÚDO FINANCEIRO PATROCINADO.
Você pode gostar.
Histórias de.
Assine nossa newsletter.
Inscreva-se & amp; Salve .
Assine nossa newsletter.
A Fortune pode receber compensação por alguns links para produtos e serviços neste site. As ofertas podem estar sujeitas a alterações sem aviso prévio.
Cotações atrasadas pelo menos 15 minutos. Dados de mercado fornecidos pela Interactive Data. ETF e fundos mútuos fornecidos pela Morningstar, Inc. Termos e condições da Dow Jones: djindexes / mdsidx / html / tandc / indexestandcs. html.
Os dados do índice S & P são propriedade da Chicago Mercantile Exchange Inc. e seus licenciadores. Todos os direitos reservados. Termos e Condições. Desenvolvido e implementado por soluções interativas de gerenciamento de dados.

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 2018. 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 me criei 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 enviei 6 empresas de comércio de alta freqüência diferentes para ver se eles estavam interessados ​​em comprar meu software e me contratar 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!

sistemas de comércio Hft
Obter através da App Store Leia esta publicação em nosso aplicativo!
Quão rápido são os sistemas de negociação HFT de última geração hoje?
Todo o tempo que você ouve sobre comércio de alta freqüência (HFT) e quão rápido são os algoritmos. Mas estou pensando - o que é rápido nos dias de hoje?
Não estou pensando na latência causada pela distância física entre uma troca e o servidor que executa um aplicativo comercial, mas a latência introduzida pelo próprio programa.
Para ser mais específico: qual é o tempo decorrido dos eventos que chegam no fio em um aplicativo para esse aplicativo, emite um pedido / preço no fio? Isto é, hora do tic-to-trade.
Estamos falando sub-milissegundo? Ou sub-microssegundo?
Como as pessoas conseguem essas latências? Codificação em montagem? FPGAs? Código de C ++ bom e antigo?
Foi recentemente publicado um artigo interessante sobre o ACM, fornecendo muitos detalhes sobre a tecnologia HFT de hoje, que é uma excelente leitura:
Você recebeu excelentes respostas. Há um problema, porém - a maioria das algotrading é um segredo. Você simplesmente não sabe o quão rápido é. Isso vai nos dois sentidos - alguns podem não dizer o quão rápido eles funcionam, porque eles não querem. Outros podem, digamos, "exagerar", por muitas razões (atraindo investidores ou clientes, por um).
Os rumores sobre picossegundos, por exemplo, são bastante escandalosos. 10 nanosegundos e 0,1 nanosegundos são exatamente a mesma coisa, porque o tempo necessário para que a ordem atinja o servidor de negociação seja muito mais do que isso.
E, o mais importante, embora não seja o que você perguntou, se você tentar negociar algorítmicamente, não tente ser mais rápido, tente ser mais inteligente. Eu vi algoritmos muito bons que podem lidar com segundos de latência e ganhar muito dinheiro.
Eu sou o CTO de uma pequena empresa que fabrica e vende sistemas HFT baseados em FPGA. Construindo nossos sistemas no topo do Solarflare Application Onload Engine (AOE), estamos constantemente oferecendo latência de um evento de mercado "interessante" no fio (10Gb / S UDP market data feed de ICE ou CME) para o primeiro byte do mensagem de ordem resultante atingindo o fio na faixa de 750 a 800 nanosegundos (sim, submicosegundo). Nós antecipamos que nossos sistemas de próxima versão estarão na faixa de 704 a 710 nanosegundos. Algumas pessoas reivindicaram um pouco menos, mas isso é em um ambiente de laboratório e na verdade não está sentado em uma COLO em Chicago e limpa as ordens.
Os comentários sobre física e "velocidade da luz" são válidos, mas não relevantes. Todo mundo que é sério sobre a HFT tem seus servidores em um COLO na sala ao lado do servidor da troca.
Para entrar neste domínio sub-microsegundo, você não pode fazer muito na CPU do host, exceto os comandos de implementação da estratégia de alimentação para o FPGA, mesmo com tecnologias como o bypass do kernel você tem 1.5 microssegundos de despesas gerais inevitáveis. então neste domínio tudo está jogando com FPGAs.
Uma das outras respostas é muito honesta ao dizer que, neste mercado altamente secreto, poucas pessoas falam sobre as ferramentas que eles usam ou seu desempenho. Cada um de nossos clientes exige que nem digamos a ninguém que eles usem nossas ferramentas nem divulguem nada sobre como elas as usam. Isso não só dificulta o marketing, mas também evita o bom fluxo de conhecimento técnico entre colegas.
Devido a esta necessidade de entrar em sistemas exóticos para a parte do mercado "wicked fast", você descobrirá que os Quants (as pessoas que aparecem nos algoritmos que fazemos rápido) estão dividindo seus algos em eventos-a - camadas de tempo de resposta. No topo da tecnologia, o heap é o sistema de microsecondos secundários (como o nosso). A próxima camada são os sistemas C ++ personalizados que fazem uso intenso do bypass do kernel e estão na faixa de 3-5 microsegundos. A próxima camada são as pessoas que não podem se dar ao luxo de estar em um fio de 10Gb / S apenas um roteador de lúpulo da "troca", eles podem estar ainda em COLO, mas por causa de um jogo desagradável que chamamos de "roleta de porta" eles estão no dezenas de centenas de microsecondos. Uma vez que você entra em milissegundos, quase não é HFT.
"sub-40 microssegundos", se você quiser acompanhar a Nasdaq. Esta figura é publicada aqui nasdaqomx / technology /
Um bom artigo que descreve o estado do HFT (em 2018) e oferece algumas amostras de soluções de hardware que tornam possível o uso de nanosegundos: as ruas de parede precisam de velocidade de negociação: a era de nanosegundos.
Com a corrida pela menor "latência" continuando, alguns participantes do mercado estão falando sobre picossegundos - trilhões de segundo.
EDIT: Como Nicholas mencionou gentilmente:
O link menciona uma empresa, a Fixnetix, que pode "preparar um comércio" em 740ns (ou seja, o tempo de um evento de entrada ocorre a uma ordem que está sendo enviada).
Para o que vale a pena, o produto de mensagens FTL da TIBCO é sub-500 ns para dentro de uma máquina (memória compartilhada) e alguns micro segundos usando RDMA (Remote Direct Memory Access) dentro de um data center. Depois disso, a física se torna a principal parte da equação.
Então, essa é a velocidade com que os dados podem ser obtidos a partir do feed para o aplicativo que toma decisões.
Pelo menos um sistema reivindicou.
30ns mensagens interthread, que provavelmente é um benchmark tweaked up, então qualquer um que fala sobre números mais baixos está usando algum tipo de CPU mágica.
Uma vez que você está no aplicativo, é apenas uma questão de quão rápido o programa pode tomar decisões.
Hoje em dia, o tic-to-trade de um dígito em microssegundos é a barra para empresas HFT competitivas. Você deve poder fazer dígitos únicos altos usando apenas o software. Então & lt; 5 usec com hardware adicional.
O comércio de alta freqüência ocorreu pelo menos desde 1999, depois que a Bolsa de Valores dos EUA (SEC) autorizou as trocas eletrônicas em 1998. Na virada do século 21, os negócios da HFT tiveram um tempo de execução de vários segundos, enquanto que até 2018 isso diminuiu em milissegundos e até mesmo em microssegundos.
Nunca será inferior a alguns microsegundos, devido ao limite de velocidade de em-w / luz, e apenas um número sortudo, que deve estar em menos de um quilômetro de distância, pode até sonhar em aproximar-se disso.
Além disso, não há codificação, para alcançar essa velocidade, você deve se tornar físico ... (o cara com o artigo com o interruptor 300ns, que é apenas a latência adicional desse switch!, Igual a 90m de viagem através de um óptico e um pouco menos em cobre)

No comments:

Post a Comment