Estratégias e Segredos das Empresas de Negociação de Alta Freqüência (HFT).
O sigilo, a Estratégia e a Velocidade são os termos que melhor definem as empresas de alta freqüência (HFT) e, de fato, a indústria financeira em geral, tal como existe hoje.
As empresas HFT são seguras sobre suas formas de operar e chaves para o sucesso. As pessoas importantes associadas à HFT evitam as luzes das pistas e preferem ser menos conhecidas, embora isso esteja mudando agora.
As empresas do negócio HFT operam através de múltiplas estratégias para negociar e ganhar dinheiro. As estratégias incluem diferentes formas de arbitragem - arbitragem de índice, arbitragem de volatilidade, arbitragem estatística e arbitragem de fusão, juntamente com macro global, equidade longa / curta, mercado de mercado passivo, e assim por diante.
A HFT confia na velocidade ultra rápida do software de computador, acesso a dados (NASDAQ TotalView-ITCH, NYSE OpenBook, etc.) a recursos importantes e conectividade com latência mínima (atraso).
Vamos explorar mais sobre os tipos de empresas HFT, suas estratégias para ganhar dinheiro, grandes players e muito mais.
As empresas HFT geralmente usam dinheiro privado, tecnologia privada e uma série de estratégias privadas para gerar lucros. As empresas comerciais de alta freqüência podem ser divididas em três tipos.
A forma mais comum e maior da empresa HFT é a empresa proprietária independente. A negociação exclusiva (ou "prop trading") é executada com o próprio dinheiro da empresa e não com os clientes. Por outro lado, os lucros são para a empresa e não para clientes externos. Algumas empresas da HTF são parte subsidiária de uma empresa de corretores. Muitas das empresas regulares de corretoras têm uma seção secundária conhecida como mesas de negociação proprietárias, onde o HFT está pronto. Esta seção está separada do negócio que a empresa faz para seus clientes externos regulares. Por último, as empresas HFT também operam como hedge funds. Seu foco principal é lucrar com as ineficiências nos preços entre títulos e outras categorias de ativos usando arbitragem.
Antes da regra de Volcker, muitos bancos de investimento tinham segmentos dedicados à HFT. Post-Volcker, nenhum banco comercial pode possuir mesas de negociação proprietárias ou quaisquer investimentos de hedge funds desse tipo. Embora todos os principais bancos tenham encerrado suas lojas de HFT, alguns desses bancos ainda estão enfrentando alegações sobre possíveis malversações relacionadas ao HFTs realizadas no passado.
Existem muitas estratégias empregadas pelos comerciantes de propriedade para ganhar dinheiro com suas empresas; alguns são bastante comuns, alguns são mais controversos.
Essas empresas negociam de ambos os lados, ou seja, eles fazem pedidos para comprar e vender usando pedidos de limite que estão acima do mercado atual (no caso de venda) e ligeiramente abaixo do preço de mercado atual (no caso de compra). A diferença entre os dois é o lucro que eles bolsam. Assim, essas empresas se dedicam à "criação de mercado" apenas para obter lucros com a diferença entre o spread de oferta e solicitação. Essas transações são realizadas por computadores de alta velocidade usando algoritmos. Outra fonte de renda para as empresas HFT é que eles são pagos por fornecer liquidez pelas Redes de Comunicações Eletrônicas (ECNs) e algumas trocas. As empresas HFT desempenham o papel de criadores de mercado, criando spreads de oferta e solicitação, produzindo principalmente preços baixos, estoques de alto volume (favoritos típicos para HFT) muitas vezes em um único dia. Essas empresas cercam o risco ao esquentar o comércio e criar um novo. (Veja: Seleção de Principais estoques de comerciantes de alta freqüência (HFTs)) Outra maneira dessas empresas ganhar dinheiro é procurando discrepâncias de preços entre títulos em diferentes bolsas ou aulas de ativos. Esta estratégia é chamada de arbitragem estatística, em que um comerciante proprietário está atento às inconsistências temporárias nos preços em diferentes trocas. Com a ajuda de transações ultra rápidas, eles capitalizam essas pequenas flutuações que muitos nem sequer percebem. As empresas HFT também ganham dinheiro ao se entregarem a uma ignição momentânea. A empresa pode ter como objetivo causar um pico no preço de um estoque, usando uma série de negócios com o motivo de atrair outros comerciantes de algoritmos para negociar esse estoque. O instigador de todo o processo sabe que após o movimento de preços rápidos "artificialmente criado", o preço reverte para o normal e, portanto, o comerciante ganha tomando uma posição no início e, eventualmente, trocando antes de sair. (Leitura relacionada: como o investidor varejista beneficia da negociação de alta freqüência)
O mundo da HFT tem jogadores que vão desde pequenas empresas até empresas de médio porte e grandes jogadores. Alguns nomes da indústria (sem pedido específico) são o Automated Trading Desk (ATD), a Chopper Trading, a DRW Holdings LLC, a Tradebot Systems Inc., a KCG Holdings Inc. (fusão da GETCO e Knight Capital), Susquehanna International Group LLP ( SIG), Virtu Financial, Allston Trading LLC, Geneva Trading, Hudson River Trading (HRT), Jump Trading, Five Rings Capital LLC, Jane Street, etc.
As empresas envolvidas em HFT enfrentam frequentemente riscos relacionados à anomalia de software, condições dinâmicas do mercado, bem como regulamentos e conformidade. Uma das instâncias flagrantes foi um fiasco ocorrido em 1 de agosto de 2012, que trouxe o Knight Capital Group perto da falência - perdeu US $ 400 milhões em menos de uma hora depois que os mercados abriram esse dia. A "falha comercial", causada por um mau funcionamento do algoritmo, levou a comércio errático e ordens ruins em 150 estoques diferentes. A empresa foi finalmente resgatada. Essas empresas devem trabalhar no gerenciamento de riscos, uma vez que é esperado que assegurem muita conformidade regulatória, além de enfrentar os desafios operacionais e tecnológicos.
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.)
Estratégias de negociação de alta freqüência.
A maioria dos investidores provavelmente nunca viu a P & amp; L de uma estratégia de negociação de alta freqüência. Há uma razão para isso, é claro: dado as características de desempenho típicas de uma estratégia de HFT, uma empresa de comércio tem pouca necessidade de capital externo. Além disso, as estratégias de HFT podem ser limitadas de capacidade, uma grande consideração para os investidores institucionais. Por isso, é divertido ver a reação de um investidor ao encontrar o histórico de uma estratégia HFT pela primeira vez. Acostumados quanto a ver os índices de Sharpe no intervalo de 0,5-1,5, ou talvez até 1,8, se tiverem sorte, os retornos assustadores ajustados ao risco de uma estratégia de HFT, que muitas vezes têm razões de Sharpe de dois dígitos, são verdadeiramente Incompreensível.
A título de ilustração, anexei abaixo o registro de desempenho de uma dessas estratégias HFT, que negocia cerca de 100 vezes ao dia no contrato eMini S & amp; P 500 (incluindo a sessão noturna). Observe que a borda não é ótima. com média de 55% de negócios lucrativos e lucro por contrato de cerca de metade do tiquete # 8211; Estas são algumas das características definidoras das estratégias de negociação HFT. Mas, devido ao grande número de negócios, resulta em lucros muito substanciais. A esta frequência, as comissões de negociação são muito baixas, geralmente abaixo de US $ 0,1 por contrato, em comparação com US $ 1 e 8211; $ 2 por contrato para um comerciante de varejo (na verdade, uma empresa de HFT tipicamente possui ou arrenda assentos de câmbio para minimizar tais custos).
Ocultos a partir da análise acima são os custos indiretos associados à implementação dessa estratégia: o feed de dados do mercado, a plataforma de execução e a conectividade capazes de lidar com enormes volumes de mensagens, bem como a lógica de algo para monitorar os sinais da microestrutura e gerenciar a prioridade do livro de pedidos. . Sem isso, a estratégia seria impossível de implementar de forma rentável.
Escalando as coisas de volta um pouco, vamos dar uma olhada em uma estratégia de troca de dias que negocia apenas cerca de 10 vezes ao dia, em barras de 15 minutos. Embora não ultra-alta freqüência, a estratégia, no entanto, é de alta freqüência para ser sensível à latência. Em outras palavras, você não gostaria de tentar implementar essa estratégia sem uma alimentação de dados de mercado de alta qualidade e plataforma de negociação de baixa latência capaz de executar no nível de 1 milésimo de segundo. Pode ser possível implementar uma estratégia desse tipo usando a plataforma ADL da TT & # 8217; s, por exemplo.
Enquanto a taxa de vitórias e o fator de lucro são semelhantes à primeira estratégia, a menor freqüência de comércio permite um maior PL de comércio de pouco mais de 1 tiquetaque, enquanto a curva de equidade é muito menos lisa, refletindo uma relação Sharpe que é & # 8220; apenas & # 8221; em torno de 2.7.
O pressuposto crítico em qualquer estratégia HFT é a taxa de preenchimento. As estratégias HFT executam usando ordens limitadas ou IOC e somente uma certa porcentagem delas será preenchida. Supondo que há alfa no sinal, a P & amp; L cresce em proporção direta ao número de negócios, o que, por sua vez, depende da taxa de preenchimento. Uma taxa de preenchimento de 10% a 20% geralmente é suficiente para garantir a rentabilidade (dependendo da qualidade do sinal). Uma baixa taxa de preenchimento, como seria tipicamente observada se uma tentasse trocar em uma plataforma de comércio varejista, destruiria a rentabilidade de qualquer estratégia HFT.
Para ilustrar este ponto, podemos dar uma olhada no resultado se a estratégia acima foi implementada em uma plataforma de negociação que resultou em pedidos sendo preenchidos somente quando o mercado se processa através do preço limite. Não é uma visão bonita.
A moral da história é: desenvolver um algoritmo de negociação HFT que contém um sinal alfa viável é apenas metade da imagem. A infra-estrutura comercial utilizada para implementar essa estratégia não é menos crítica. É por isso que as empresas HFT gastam dezenas, ou centenas de milhões de dólares, desenvolvendo a melhor infra-estrutura possível.
US Search Mobile Web.
Bem-vindo ao fórum Yahoo Search! Nós adoramos ouvir suas idéias sobre como melhorar a Pesquisa do Yahoo.
O fórum de comentários do produto do Yahoo agora requer uma ID e senha de Yahoo válidas para participar.
Agora você precisa fazer o login usando sua conta de e-mail do Yahoo para nos fornecer feedback e enviar votos e comentários às ideias existentes. Se você não possui uma ID do Yahoo ou a senha para sua ID do Yahoo, inscreva-se para uma nova conta.
Se você tiver uma ID e senha de Yahoo válidas, siga estas etapas, se desejar remover suas postagens, comentários, votos e / ou perfil no fórum de comentários do produto do Yahoo.
Vote em uma ideia existente () ou publique uma nova ideia ...
Ideias quentes Principais ideias Novas ideias Categoria Estado Meus comentários.
Você me disse para adicionar minhas outras contas, adicionei minha conta do Gmail, mas você não respondeu bem.
Quando busco meu nome, você publica resultados estranhos. As duas imagens que são eu foram removidas de um site que eu encerrei. Remover.
Ao pesquisar meu nome, estranha propaganda de imagens de palhaço vem para o capitão o palhaço em outro estado, REMOVA-O.
e as imagens.
Todas as coisas tentando implicar coisas estranhas.
O Yahoo pode desenvolver a opção para imagens serem vistas como uma apresentação de slides? Isso ajudaria em vez de ter que percorrer cada imagem e tornar esta experiência do Yahoo mais agradável. Obrigado pela sua consideração.
Não vê a sua ideia? Publique uma nova ideia ...
US Search Mobile Web.
Feedback e Base de Conhecimento.
Dê retorno.
Deutschland Finanzen Mobile DF iOS 1 idéia España Finanzas Mobile DF iOS 7 ideias Contas Painel 33 ideias Opinião do anúncio 3 ideias Respostas TH 31 ideias Respostas TH 0 idéias Respostas Fórum UV (versão de teste) 10 ideias Austrália Ideias de celebridades 0 Austrália Finanças Mobile Android 0 ideias Austrália Estilo 0 idéias Austrália Yahoo Tech 0 idéias Autos Impulso 2 idéias Aviate 1.513 idéias Canadá Finanças 1.099 idéias Canadá Finanças Mobile Android 0 ideias Canadá Finanças Mobile DF iOS 3 idéias Canadá Finanças Mobile iOS 468 ideias Canadá Página inicial 5.11 idéias Canadá Filmes 14 ideias Notícias do Canadá 873 ideias Canadá com segurança 10 idéias Canadá Tela 128 idéias Canadá Clima 94 ideias Canadá Yahoo Beleza 0 idéias Canadá Yahoo Celebrity 10 ideias Canadá Yahoo Finanças 0 ideias Canadá Yahoo Filmes 10 ideias Canadá Yahoo Notícias 0 idéias Canadá Yahoo Estilo 21 idéias Futebol universitário Escolher & # 39; em 112 idéias TV conectada 361 idéias Corp Mail Test 1 1.313 idéias Corp Mail Testing 1.256 idéias Cricket 21 ideias Daily Fantasy 88 ideias Developer Netwo rk 1 ideia Double Down 86 ideias Fantasy Baseball 432 ideias Fantasy Basketball 398 ideias Fantasy Football 705 ideias Fantasy Hockey 341 ideias Fantasy Live Scoring on Matchup and Classical 807 ideias Fantasy Sports Aplicações Android 1.367 ideias Fantasy Sports iOS Apps 2.112 ideias Finanças 1.211 ideias Finanças - CA 495 idéias Finanças - ideias US 9 Finanças Ideias ChartIQ 436 Finanças Mobile Web 403 idéias Finanças Portfolios 810 idéias Finanças Triagem de ações 35 idéias Finanças Tablet 44 idéias Flickr - Perfil 290 idéias Flickr Android 60 idéias Flickr para Apple TV 25 idéias Flickr Grupos 12 idéias Flickr Interno 0 ideias Flickr iOS Dogfooding 0 idéias Flickr iPad 140 idéias Flickr iPhone 336 ideias Flickr Nova foto Página 8,030 idéias Flickr Pesquisa 0 ideias Food Revistas 0 idéias Jogos 3,147 ideias Mapas globais 1,023 ideias GS Mobile Web 42 idéias Health Pulse 3 ideias Home Page (Android) 1.689 ideias Home Page (iOS) 3.808 ideias Hong Kong Homepage 0 ideias Índia Celebridade 43 ideias Índia Finanças 493 ideias Índia Homepage 1.867 idéias Índia Estilo de vida 173 idéias Índia Filmes 84 idéias Índia Notícias 328 ideias Índia Parceiro Portal Tata 0 idéias Índia Parceiro Portal Tikona 0 idéias Índia com segurança 15 idéias Índia Tela 165 idéias Índia Tempo 30 ideias Índia Yahoo Beleza 0 idéias Índia Yahoo Celebridade 4 idéias Índia Yahoo Finanças 0 ideias Índia Yahoo Movies 16 ideias Índia Yahoo Notícias 0 ideias Índia Yahoo Estilo 14 ideias Indonésia Ideias da celebridade 38 Indonésia Página inicial 1.158 ideias Indonésia Notícias 170 ideias Indonésia com segurança 29 idéias Indonésia Ela 34 ideias Página inicial da Irlanda 90 idéias Jordânia Maktoob Homepage 419 idéias Comentários de mensagens por correio eletrônico 10 ideias Maktoob الطقس مكتوب 5 ideias Maktoob Celebridade 1 ideia Maktoob Entretenimento 10 ideias Maktoob Estilo de vida 0 ideias Maktoob Filmes 2 ideias Maktoob Notícias 182 idéias Maktoob Tela 15 ideias Maktoob Id. de estilo 1 Maktoob ألعاب مكتوب 0 ideias Maktoob شاشة مكتوب 28 ideias Malásia Homepage 17 ideias Malásia Notícias 58 ideias Malásia com segurança 6 ideias Malásia Video 0 ideias Malásia Tempo 1 idéia Soluções do comerciante 1 ideia Meu Yahoo 31,912 ideias Meu Yahoo - backup 1 idéia Meu Yahoo - US 9,176 idéias Meu arquivo do Yahoo 314 idéias Novo email 10,012 idéias Novo email * 3,165 idéias Nova Zelândia Negócios & Finanças 132 idéias Nova Zelândia Página inicial 1.039 idéias Nova Zelândia com segurança 3 idéias Nova Zelândia Tela 0 idéias Notícias do PH ANC 21 ideias Filipinas Celebridade 214 ideias Filipinas Página inicial 8 ideias Filipinas Notícias 123 idéias Filipinas com segurança 12 idéias Filipinas Vídeo 0 idéias Filipinas Tempo 3 idéias Pick N Roll 19 ideias Postmaster 43 ideias Pro Football Pick & # 39; em 103 ideias Varejo Pulse 0 idéias Rivais 11 idéias com segurança 165 idéias Tela para idéias iOS 0 Busca extensões 96 idéias Pesquisar Downloads de produtos 88 idéias Segurança 497 ideias Experiência de login 79 idéias Singapura Entretenimento 20 idéias Cingapura Finanças 230 idéias Cingapura Página inicial 1.049 idéias Cingapura Notícias 212 idéias Cingapura com segurança 11 idéias Cingapura Tela 19 idéias Cingapura Tempo 4 idéias Cingapura Yahoo Beleza 0 idéias Cingapura Yahoo Ideias da celebridade 4 Cingapura Yahoo Finanças 0 idéias Cingapura Yahoo Filmes 0 idéias Cingapura Yahoo Notícias 0 idéias Singapore Yahoo Style 4 ideas Idéias da celebridade da África do Sul Ideia da África do Sul 374 idéia s África do Sul Notícias 23 ideias Esportes Android 1,534 ideias Esportes CA 34 ideias Esportes iOS 1.025 ideias Desporto Redesign 3.189 ideias SportsReel 6 ideias StatTracker Beta 573 ideias Survival Futebol 81 ideias Taiwan Yahoo 名人 娛樂 0 ideias Taiwan Yahoo 運動 0 ideias Tailândia Safely 2 ideias Toolbar Mail App 216 ideas Toolbar Weather App 72 ideias Tourney Pick & # 39; em 41 ideias UK & amp; Irlanda Finanças 1.077 ideias UK & amp; Jogos da Irlanda 19 ideias UK & amp; Irlanda Homepage 442 ideias UK & amp; Irlanda Notícias 0 ideias UK & amp; Ireland News Balde interno 0 ideias UK & amp; Irlanda Notícias Lego 376 ideas UK & amp; Irlanda com segurança 38 ideias UK & amp; Irlanda TV 21 ideias UK & amp; Irlanda Vídeo 187 ideias UK & amp; Irlanda Tempo 99 ideias Reino Unido Respostas 1 ideia UK Daily Fantasy 0 ideias UK Finanças Mobile Android 12 idéias UK Finanças Mobile DF iOS 2 idéias UK Finanças Mobile iOS 308 ideias UK Yahoo Movies 23 ideias US Respostas 8,975 ideias Respostas dos EUA Mobile Web 2,155 ideias US Autos GS 442 ideias US Celebrity GS 661 ideias EUA Comentários 350 ideias US Finance Mobile Android 44 idéias US Finance Mobile iOS 561 idéias US Flickr 249 ideias Grupos dos EUA 4.170 ideias Página inicial dos EUA B1 68 ideias US Homepage B2 33 ideias US Homepage B3 50 ideias US Homepage B4 33 ideias US Homepage B5 0 ideias US Homepage M 7,021 ideias Página inicial dos EUA YDC 43 ideias US Homes GS 203 idéias US Live Web Insights 24 ideias US Mail 193 ideias US Mail 12,289 ideias US Mapas 3,491 idéias US Membership Desktop 8,113 ideias US Membership Mobile 91 ideias US Filmes GS 424 ideias US Music GS 195 ideias US News 6,020 ideias US Search App Android 2 ideias US Search App iOS 12 ideias US Search Chrome Extensão 780 ideias US Chrome Chrome Extensão v2 2,197 ideias EUA Pesquisar Desktop 40 ideia s US Search Desktop Bucket A 7 ideias US Search Desktop Bucket B 8 idéias EUA Pesquisa KG 21 ideias EUA Pesquisa Listagens locais 20,780 ideias EUA Busca Mobile Web 3 ideias EUA Busca Mozilla 1 ideia EUA Pesquisar estoque Quotes 11 ideias US Pesquisar Tablet Web 1 ideia EUA Shine GS 1 idéia US Toolbar 5,548 ideias US Travel GS 207 idéias EUA TV GS 367 ideias US Weather 2,314 idéias US Weather Bucket 0 ideias US Mobile Mobile 13 ideias USA Weather Mobile Android 2 ideias Guia de vídeo Android 150 ideias Guia de vídeo iOS 206 ideias Guia de vídeo Testando 15 ideias Web Hosting 4 idéias Yahoo Acessibilidade 359 idéias Yahoo Autos 71 idéias Yahoo Beleza 100 idéias Ideias Yahoo Celebrity 0 Yahoo Celebrity Canada 0 ideias Yahoo Decor 0 ideias Yahoo Entertainment 356 ideias Yahoo Esports 50 ideias Yahoo Feedback 0 ideias Yahoo Finance Feedback Forum 1 ideia Yahoo Finance IN Mobile Android 0 ideias Yahoo Finance SG Mobile Android 1 ideia Yahoo FinanceReel 4 ideias Yahoo Comida 118 idéias Yahoo Gemini 2 ideias Yahoo Saúde 90 ideias Yahoo ajuda 262 ideias Yaho o Home 218 ideias Yahoo Home * 28 ideias Yahoo Lifestyle 168 idéias Ideias Yahoo Yahoo ao vivo Yahoo Mail 2,219 ideias Yahoo Mail Aplicativo Android 404 ideias Yahoo Mail Basic 636 ideias Yahoo Mail iOS App 49 idéias Yahoo Mail Mobile Web 1 ideia Yahoo Makers 51 ideias Yahoo Messenger 84 idéias Yahoo Mobile Developer Suite 61 idéias Yahoo Mobile para ideias do telefone 15 Yahoo Mobile para idéias do Tablet 0 Yahoo Music 78 idéias Yahoo News Digest Ideias do Android 870 Yahoo News Digest Ideias do iPad 0 Yahoo News Digest iPhone 1,531 idéias Aplicação de Android do Yahoo Newsroom 56 idéias Yahoo Newsroom iOS App 34 ideias Yahoo Parenting 63 idéias Yahoo Política 118 idéias Yahoo Publishing 13 ideias Yahoo Real Estate 2 ideias Yahoo Tech 459 idéias Yahoo Travel 143 idéias Yahoo TV 102 ideias Yahoo Ver 210 ideias Yahoo Weather Android 2.114 idéias Yahoo Weather iOS 22.742 ideias Yahoo! 7 Food App (iOS) 0 ideias Yahoo! 7 Página inicial Archive 57 ideas Yahoo! 7 Notícias (iOS) 23 ideias Yahoo! 7 Tela 0 ideias Yahoo! 7 TV FANGO App (Android) 1 ideia Yahoo! 7 aplicação TV FANGO (iOS) 1 ideia Yahoo! 7 TV Guide App (Android) 0 ideias Yahoo! 7 Guia de TV Guia (iOS) 1,248 ideias Yahoo! 7 Aplicação TV Plus7 (iOS) 0 ideias Yahoo! Centro de Feedback do Teste de Conceito 174 idéias Yahoo! Idéia de Contributor Network 1 Yahoo! Transliteração 29 ideias YAHOO! 7 Finanças 551 idéias Yahoo! 7 Jogos 9 ideias Yahoo! 7 Safely 19 ideias Yahoo7 Finanças Mobile DF iOS 12 ideias Yahoo7 Finanças Mobile iOS 217 ideias Yahoo7 Homepage 2.545 ideias.
Sua senha foi alterada.
Fizemos alterações para aumentar nossa segurança e restabelecer sua senha.
Acabamos de enviar-lhe um e-mail para. Clique no link para criar uma senha, depois volte aqui e faça o login.
Melhor linguagem de programação para sistemas de negociação algorítmica?
Melhor linguagem de programação para sistemas de negociação algorítmica?
Uma das perguntas mais freqüentes que recebo no QS mailbag é "Qual é a melhor linguagem de programação para negociação algorítmica?". A resposta curta é que não existe um "melhor" idioma. Parâmetros de estratégia, desempenho, modularidade, desenvolvimento, resiliência e custo devem ser considerados. Este artigo descreve os componentes necessários de uma arquitetura de sistema de negociação algorítmica e como as decisões relativas à implementação afetam a escolha do idioma.
Em primeiro lugar, serão considerados os principais componentes de um sistema de negociação algorítmico, como ferramentas de pesquisa, otimizador de portfólio, gerenciador de riscos e motor de execução. Posteriormente, serão examinadas diferentes estratégias de negociação e como elas afetam o design do sistema. Em particular, a freqüência de negociação e o provável volume de negociação serão discutidos.
Uma vez que a estratégia de negociação foi selecionada, é necessário arquitetar todo o sistema. Isso inclui a escolha de hardware, o (s) sistema (s) operacional (is) e a resiliência do sistema contra eventos raros e potencialmente catastróficos. Enquanto a arquitetura está sendo considerada, deve-se ter em conta o desempenho, tanto para as ferramentas de pesquisa quanto para o ambiente de execução ao vivo.
Qual é o sistema de comércio tentando fazer?
Antes de decidir sobre o "melhor" idioma com o qual escrever um sistema de negociação automatizado, é necessário definir os requisitos. O sistema será puramente baseado em execução? O sistema exigirá um módulo de gerenciamento de risco ou construção de portfólio? O sistema exigirá um backtester de alto desempenho? Para a maioria das estratégias, o sistema comercial pode ser dividido em duas categorias: Pesquisa e geração de sinal.
A pesquisa está preocupada com a avaliação de um desempenho de estratégia em relação aos dados históricos. O processo de avaliação de uma estratégia de negociação em relação aos dados anteriores do mercado é conhecido como backtesting. O tamanho dos dados e a complexidade algorítmica terão um grande impacto na intensidade computacional do backtester. A velocidade da CPU e a concorrência são muitas vezes os fatores limitantes na otimização da velocidade de execução da pesquisa.
A geração de sinal está preocupada com a geração de um conjunto de sinais de negociação a partir de um algoritmo e envio de ordens para o mercado, geralmente através de uma corretora. Para determinadas estratégias, é necessário um alto nível de desempenho. As questões de E / S, como a largura de banda da rede e a latência, muitas vezes são fatores limitantes na otimização de sistemas de execução. Assim, a escolha de idiomas para cada componente de todo o seu sistema pode ser bastante diferente.
Tipo, Frequência e Volume de Estratégia.
O tipo de estratégia algorítmica empregada terá um impacto substancial no design do sistema. Será necessário considerar os mercados comercializados, a conectividade com os fornecedores de dados externos, a freqüência e o volume da estratégia, o trade-off entre facilidade de desenvolvimento e otimização de desempenho, bem como qualquer hardware personalizado, incluindo customizado servidores, GPUs ou FPGAs que possam ser necessários.
As opções de tecnologia para uma estratégia de ações de baixa freqüência dos EUA serão muito diferentes das de uma negociação de estratégias de arbitragem estatística de alta freqüência no mercado de futuros. Antes da escolha do idioma, muitos fornecedores de dados devem ser avaliados que pertencem à estratégia em questão.
Será necessário considerar a conectividade com o fornecedor, a estrutura de todas as APIs, a pontualidade dos dados, os requisitos de armazenamento e a resiliência em face de um fornecedor que está offline. Também é aconselhável possuir acesso rápido a vários fornecedores! Vários instrumentos têm todos os seus peculiaridades de armazenamento, exemplos dos quais incluem símbolos de ticker múltiplos para ações e datas de vencimento para futuros (sem mencionar nenhum dado OTC específico). Isso precisa ser incorporado ao design da plataforma.
A frequência da estratégia provavelmente será um dos maiores drivers de como a pilha de tecnologia será definida. Estratégias que empregam dados com mais freqüência do que minuciosamente ou em segundo lugar, exigem uma consideração significativa em relação ao desempenho.
Uma estratégia que excede as barras segundo (isto é, dados de marca) leva a um design orientado a desempenho como o principal requisito. Para estratégias de alta freqüência, uma quantidade substancial de dados do mercado precisará ser armazenada e avaliada. Software como HDF5 ou kdb + é comumente usado para essas funções.
Para processar os extensos volumes de dados necessários para aplicações HFT, um sistema de backtester e execução extensivamente otimizado deve ser usado. C / C ++ (possivelmente com algum montador) é provável para o candidato a linguagem mais forte. As estratégias de ultra-alta freqüência certamente exigirão hardware personalizado, como FPGAs, co-localização de troca e ajuste de interface de rede / kernal.
Sistemas de pesquisa.
Os sistemas de pesquisa geralmente envolvem uma mistura de desenvolvimento interativo e script automatizado. O primeiro geralmente ocorre dentro de um IDE, como Visual Studio, MatLab ou R Studio. O último envolve cálculos numéricos extensos em vários parâmetros e pontos de dados. Isso leva a uma escolha de idioma que fornece um ambiente direto para testar código, mas também fornece desempenho suficiente para avaliar estratégias em várias dimensões de parâmetros.
Os IDE típicos neste espaço incluem Microsoft Visual C ++ / C #, que contém extensos utilitários de depuração, recursos de conclusão de código (via "Intellisense") e visões gerais diretas de toda a pilha do projeto (via o banco de dados ORM, LINQ); MatLab, que é projetado para uma grande variedade de álgebras lineares numéricas e operações vetoriais, mas de uma forma de console interativo; R Studio, que envolve o console de linguagem estatística R em um IDE de pleno direito; Eclipse IDE para Linux Java e C ++; e IDE semi-proprietários, como Enthought Canopy para Python, que incluem bibliotecas de análise de dados, como NumPy, SciPy, scikit-learn e pandas em um único ambiente interativo (console).
Para backtesting numérico, todos os idiomas acima são adequados, embora não seja necessário utilizar uma GUI / IDE, pois o código será executado "em segundo plano". A principal consideração nesta fase é a velocidade de execução. Um idioma compilado (como C ++) geralmente é útil se as dimensões do parâmetro backtest forem grandes. Lembre-se de que é necessário desconfiar de tais sistemas se for esse o caso!
Idiomas interpretados, como Python, muitas vezes fazem uso de bibliotecas de alto desempenho, como NumPy / pandas para a etapa de teste, para manter um grau razoável de competitividade com equivalentes compilados. Em última análise, o idioma escolhido para o backtesting será determinado por necessidades algorítmicas específicas, bem como o intervalo de bibliotecas disponíveis no idioma (mais sobre isso abaixo). No entanto, o idioma utilizado para o backtester e os ambientes de pesquisa podem ser completamente independentes dos usados na construção de portfólio, gerenciamento de riscos e componentes de execução, como será visto.
Construção de carteiras e gerenciamento de riscos.
A construção do portfólio e os componentes de gerenciamento de riscos são muitas vezes ignorados pelos comerciantes algorítmicos de varejo. Isso é quase sempre um erro. Essas ferramentas fornecem o mecanismo pelo qual o capital será preservado. Eles não só tentam aliviar o número de apostas "arriscadas", mas também minimizam o churn dos próprios negócios, reduzindo os custos de transação.
Versões sofisticadas desses componentes podem ter um efeito significativo na qualidade e consistência da lucratividade. É direto criar um estável de estratégias, pois o mecanismo de construção do portfólio e o gerenciador de riscos podem ser facilmente modificados para lidar com múltiplos sistemas. Assim, eles devem ser considerados componentes essenciais no início do projeto de um sistema de comércio algorítmico.
O trabalho do sistema de construção de carteiras é levar um conjunto de trades desejados e produzir o conjunto de negócios reais que minimizam o churn, manter exposições a vários fatores (como setores, classes de ativos, volatilidade, etc.) e otimizar a alocação de capital para vários estratégias em um portfólio.
A construção do portfólio geralmente se reduz a um problema de álgebra linear (como uma fatoração da matriz) e, portanto, o desempenho é altamente dependente da eficácia da implementação de álgebra linear numérica disponível. As bibliotecas comuns incluem uBLAS, LAPACK e NAG para C ++. O MatLab também possui operações de matriz amplamente otimizadas. Python utiliza NumPy / SciPy para tais cálculos. Um portfólio freqüentemente reequilibrado exigirá uma biblioteca de matriz compilada (e bem otimizada!) Para executar esta etapa, de modo a não engarrafar o sistema de comércio.
O gerenciamento de riscos é outra parte extremamente importante de um sistema de comércio algorítmico. O risco pode vir de várias formas: aumento da volatilidade (embora isso possa ser visto como desejável para certas estratégias!), Aumento de correlações entre classes de ativos, contraparte padrão, interrupções do servidor, eventos de "cisnes negros" e erros não detectados no código comercial, para nomear alguns.
Os componentes de gerenciamento de risco tentam antecipar os efeitos da volatilidade excessiva e a correlação entre as classes de ativos e seus efeitos (s) subsequentes sobre o capital de negociação. Muitas vezes isso se reduz a um conjunto de cálculos estatísticos, como Monte Carlo "testes de estresse". Isso é muito semelhante às necessidades computacionais de um mecanismo de preços de derivativos e, como tal, será vinculado à CPU. Essas simulações são altamente paralelizáveis (veja abaixo) e, até certo ponto, é possível "lançar hardware no problema".
Sistemas de Execução.
O trabalho do sistema de execução é receber sinais de negociação filtrados dos componentes de construção de portfólio e gerenciamento de riscos e enviá-los para uma corretora ou outros meios de acesso ao mercado. Para a maioria das estratégias de negociação algorítmica de varejo, isso envolve uma conexão API ou FIX para uma corretora, como Interactive Brokers. As considerações primárias ao decidir sobre um idioma incluem a qualidade da API, a disponibilidade do idioma para uma API, a freqüência de execução e o deslizamento antecipado.
A "qualidade" da API refere-se ao quão bem documentado é, qual o tipo de desempenho que ele fornece, se ele precisa de um software autônomo para ser acessado ou se um gateway pode ser estabelecido de forma sem cabeça (ou seja, sem GUI). No caso dos Interactive Brokers, a ferramenta Trader WorkStation precisa ser executada em um ambiente GUI para acessar sua API. Uma vez, tive que instalar uma edição do Desktop Ubuntu em um servidor de nuvem da Amazon para acessar os corretores interativos de forma remota, apenas por esse motivo!
A maioria das APIs fornecerá uma interface C ++ e / ou Java. Geralmente, é de responsabilidade da comunidade desenvolver wrappers específicos do idioma para C #, Python, R, Excel e MatLab. Note-se que, com cada plugin adicional utilizado (especialmente os wrappers da API), há possibilidades de insetos no sistema. Sempre teste plugins desse tipo e assegure-se de que sejam ativamente mantidos. Um indicador valioso é ver quantas novas atualizações de uma base de código foram feitas nos últimos meses.
A frequência de execução é de extrema importância no algoritmo de execução. Note que centenas de pedidos podem ser enviados a cada minuto e, como tal, o desempenho é crítico. Slippage será incorrido através de um sistema de execução mal executado e isso terá um impacto dramático sobre a rentabilidade.
Os idiomas estaticamente digitados (veja abaixo), como C ++ / Java, geralmente são ótimos para execução, mas há um trade-off em tempo de desenvolvimento, testes e facilidade de manutenção. Idiomas dinamicamente digitados, como Python e Perl, geralmente são geralmente "rápidos o suficiente". Certifique-se sempre de que os componentes foram projetados de forma modular (veja abaixo) para que eles possam ser "trocados" à medida que o sistema se reduz.
Processo de Planejamento e Desenvolvimento Arquitetônico.
Os componentes de um sistema de comércio, seus requisitos de freqüência e volume foram discutidos acima, mas a infraestrutura do sistema ainda não foi coberta. Aqueles que atuam como comerciante de varejo ou que trabalham em um fundo pequeno provavelmente estarão "vestindo muitos chapéus". Será necessário cobrir o modelo alfa, o gerenciamento de riscos e os parâmetros de execução, bem como a implementação final do sistema. Antes de aprofundar linguagens específicas, o design de uma arquitetura de sistema ideal será discutido.
Separação de preocupações.
Uma das decisões mais importantes que devem ser tomadas no início é como "separar as preocupações" de um sistema comercial. No desenvolvimento de software, isso significa essencialmente como dividir os diferentes aspectos do sistema de negociação em componentes modulares separados.
Ao expor as interfaces em cada um dos componentes, é fácil trocar partes do sistema por outras versões que ajudem o desempenho, confiabilidade ou manutenção, sem modificar nenhum código de dependência externo. Esta é a "melhor prática" para esses sistemas. Para estratégias em frequências mais baixas, tais práticas são aconselhadas. Para a negociação de alta freqüência, o livro de regras pode ser ignorado à custa de ajustar o sistema para ainda mais desempenho. Um sistema mais acoplado pode ser desejável.
Criar um mapa de componentes de um sistema de negociação algorítmico vale um artigo em si. No entanto, uma abordagem ótima é garantir que haja componentes separados para as entradas de dados de mercado históricos e em tempo real, armazenamento de dados, API de acesso a dados, backtester, parâmetros de estratégia, construção de portfólio, gerenciamento de riscos e sistemas de execução automatizada.
Por exemplo, se o armazenamento de dados em uso estiver atualmente com desempenho inferior, mesmo em níveis significativos de otimização, ele pode ser trocado com reescrituras mínimas para a ingesta de dados ou API de acesso a dados. Até o ponto em que o backtester e os componentes subsequentes estão em causa, não há diferença.
Outro benefício de componentes separados é que permite que uma variedade de linguagens de programação sejam usadas no sistema geral. Não é necessário restringir a um único idioma se o método de comunicação dos componentes for independente de linguagem. Este será o caso se estiverem se comunicando via TCP / IP, ZeroMQ ou algum outro protocolo independente de linguagem.
Como um exemplo concreto, considere o caso de um sistema de backtesting que está sendo escrito em C ++ para o desempenho do "crunching", enquanto o gerenciador de portfólio e os sistemas de execução são escritos em Python usando SciPy e IBPy.
Considerações sobre o desempenho.
O desempenho é uma consideração significativa para a maioria das estratégias comerciais. Para estratégias de maior freqüência, é o fator mais importante. O "Desempenho" cobre uma ampla gama de problemas, como velocidade de execução algorítmica, latência de rede, largura de banda, E / S de dados, simultaneidade / paralelismo e dimensionamento. Cada uma dessas áreas é coberta individualmente por grandes livros didáticos, portanto este artigo apenas arranhará a superfície de cada tópico. A escolha da arquitetura e da linguagem agora será discutida em termos de seus efeitos sobre o desempenho.
A sabedoria prevalecente, como afirmou Donald Knuth, um dos pais da Ciência da Computação, é que "a otimização prematura é a raiz de todo o mal". Este é quase sempre o caso - exceto quando se forma um algoritmo de negociação de alta freqüência! Para aqueles que estão interessados em estratégias de baixa freqüência, uma abordagem comum é construir um sistema da maneira mais simples possível e apenas otimizar à medida que os estrangulamentos começam a aparecer.
Ferramentas de perfil são usadas para determinar onde surgem os estrangulamentos. Perfis podem ser feitos para todos os fatores listados acima, em um ambiente MS Windows ou Linux. Existem muitas ferramentas de sistema operacional e de idioma disponíveis para isso, bem como utilitários de terceiros. A escolha da linguagem agora será discutida no contexto da performance.
C ++, Java, Python, R e MatLab contêm bibliotecas de alto desempenho (como parte do padrão ou externo) para estrutura básica de dados e trabalho algorítmico. C ++ é fornecido com a Biblioteca de modelos padrão, enquanto o Python contém NumPy / SciPy. Tarefas matemáticas comuns são encontradas nessas bibliotecas e raramente é benéfico escrever uma nova implementação.
Uma exceção é se uma arquitetura de hardware altamente personalizada é necessária e um algoritmo está fazendo uso extensivo de extensões proprietárias (como caches personalizados). No entanto, muitas vezes a "reinvenção da roda" desperdiça o tempo que pode ser melhor gasto no desenvolvimento e otimização de outras partes da infra-estrutura de negociação. O tempo de desenvolvimento é extremamente precioso especialmente no contexto dos únicos desenvolvedores.
A latência é muitas vezes uma questão do sistema de execução, pois as ferramentas de pesquisa geralmente estão localizadas na mesma máquina. Para o primeiro, a latência pode ocorrer em vários pontos ao longo do caminho de execução. Os bancos de dados devem ser consultados (latência de disco / rede), os sinais devem ser gerados (sistema operacional, latência de mensagens do kernal), sinais comerciais enviados (latência NIC) e pedidos processados (latência interna dos sistemas de troca).
Para operações de maior freqüência, é necessário familiarizar-se intimamente com a otimização do kernal, além de otimizar a transmissão da rede. Esta é uma área profunda e está significativamente além do escopo do artigo, mas se um algoritmo UHFT é desejado então esteja ciente da profundidade do conhecimento necessário!
O cache é muito útil no conjunto de ferramentas de um desenvolvedor de negócios quantitativo. O armazenamento em cache refere-se ao conceito de armazenar dados freqüentemente acessados de uma maneira que permita um acesso de alto desempenho, em detrimento do potencial estancamento dos dados. Um caso de uso comum ocorre no desenvolvimento da web ao tirar dados de um banco de dados relacional com respaldo de disco e colocá-lo na memória. Quaisquer pedidos subseqüentes para os dados não precisam "acessar o banco de dados" e, portanto, os ganhos de desempenho podem ser significativos.
Para situações de negociação, o cache pode ser extremamente benéfico. Por exemplo, o estado atual de um portfólio de estratégia pode ser armazenado em um cache até ser reequilibrado, de modo que a lista não precisa ser regenerada em cada ciclo do algoritmo de negociação. Essa regeneração provavelmente será uma alta CPU ou operação de E / S de disco.
No entanto, o armazenamento em cache não está sem os seus próprios problemas. A regeneração de dados de cache de uma só vez, devido à natureza volátil do armazenamento de cache, pode colocar uma demanda significativa na infraestrutura. Outra questão é o empilhamento de cães, onde múltiplas gerações de uma nova cópia de cache são realizadas sob uma carga extremamente alta, o que leva a uma falha em cascata.
A alocação de memória dinâmica é uma operação cara na execução de software. Assim, é imperativo que os aplicativos de maior desempenho comercial sejam conscientes de como a memória está sendo alocada e desalocada durante o fluxo do programa. Novos padrões de linguagem, como Java, C # e Python, todos executam a coleta automática de lixo, que se refere à desalocação da memória alocada dinamicamente quando os objetos ficam fora do escopo.
A coleta de lixo é extremamente útil durante o desenvolvimento, pois reduz erros e ajuda a legibilidade. No entanto, muitas vezes é sub óptimo para certas estratégias de negociação de alta freqüência. A coleta de lixo personalizada é muitas vezes desejada para esses casos. Em Java, por exemplo, ao ajustar a configuração do coletor de lixo e do heap, é possível obter alto desempenho para as estratégias de HFT.
C ++ não fornece um coletor de lixo nativo e, portanto, é necessário lidar com toda a alocação / desalocação de memória como parte da implementação de um objeto. Embora potencialmente propenso a erros (potencialmente levando a ponteiros pendurados), é extremamente útil ter um controle fino de como os objetos aparecem no heap para determinadas aplicações. Ao escolher um idioma, certifique-se de estudar como funciona o coletor de lixo e se ele pode ser modificado para otimizar um caso de uso específico.
Muitas operações em sistemas de negociação algorítmica são favoráveis à paralelização. Isso se refere ao conceito de realização de múltiplas operações programáticas ao mesmo tempo, ou seja, em "paralelo". Os algoritmos denominados "embarassingly paralelos" incluem etapas que podem ser computadas totalmente independentemente de outras etapas. Certas operações estatísticas, como as simulações de Monte Carlo, são um bom exemplo de algoritmos embarazosa paralelos, pois cada sorteio aleatório e subsequente operação do caminho podem ser computados sem o conhecimento de outros caminhos.
Outros algoritmos são apenas parcialmente paralelizados. As simulações de dinâmica de fluidos são um exemplo, onde o domínio da computação pode ser subdividido, mas, em última instância, esses domínios devem se comunicar entre si e, portanto, as operações são parcialmente seqüenciais. Os algoritmos paralisáveis estão sujeitos à Lei de Amdahl, que fornece um limite superior teórico para o aumento de desempenho de um algoritmo paralelizado quando sujeito a processos separados em $ N $ (por exemplo, em um núcleo ou fio de CPU).
A paralelização tornou-se cada vez mais importante como um meio de otimização, uma vez que as velocidades do clock do processador estagnaram, já que os processadores mais novos contêm muitos núcleos com os quais realizar cálculos paralelos. O aumento do hardware de gráficos de consumo (predominantemente para videogames) levou ao desenvolvimento de Unidades de processamento gráfico (GPUs), que contém centenas de "núcleos" para operações altamente concorrentes. Tais GPUs são agora muito acessíveis. Os quadros de alto nível, como o CUDA da Nvidia, levaram a uma adoção generalizada na academia e nas finanças.
Esse hardware de GPU geralmente é apenas adequado para o aspecto de pesquisa de financiamento quantitativo, enquanto que outros equipamentos mais especializados (incluindo matrizes de portas programáveis em campo - FPGAs) são usados para (U) HFT. Atualmente, a maioria dos langauges modernos suporta um grau de concorrência / multithreading. Assim, é direto otimizar um backtester, pois todos os cálculos são geralmente independentes dos outros.
O dimensionamento em engenharia e operações de software refere-se à capacidade do sistema de lidar consistentemente com o aumento de cargas sob a forma de solicitações maiores, maior uso do processador e maior alocação de memória. Na negociação algorítmica, uma estratégia pode escalar se pode aceitar quantidades maiores de capital e ainda produzir retornos consistentes. A pilha de tecnologia de negociação escala se pode suportar maiores volumes de comércio e latência aumentada, sem bloqueio de estrangulamento.
Enquanto os sistemas devem ser projetados para dimensionar, muitas vezes é difícil prever de antemão, onde um gargalo irá ocorrer. O registro, o teste, o perfil e o monitoramento rigorosos ajudarão grandemente em permitir que um sistema seja dimensionado. As próprias línguas são muitas vezes descritas como "inesquecíveis". Isso geralmente é o resultado de uma informação errônea, e não de um fato difícil. É a pilha de tecnologia total que deve ser verificada quanto à escalabilidade, e não ao idioma. Claramente, certas línguas têm maior desempenho do que outras em casos de uso específicos, mas um idioma nunca é "melhor" do que outro em todos os sentidos.
Um meio de gerenciar a escala é separar as preocupações, como afirmado acima. A fim de introduzir ainda a capacidade de lidar com "picos" no sistema (ou seja, uma volatilidade súbita que desencadeia uma série de trades), é útil criar uma "arquitetura de filas de mensagens". Isso simplesmente significa colocar um sistema de fila de mensagens entre os componentes para que as ordens sejam "empilhadas" se um determinado componente não conseguir processar muitos pedidos.
Em vez de pedidos de perda, eles simplesmente são mantidos em uma pilha até que a mensagem seja tratada. Isso é particularmente útil para enviar trocas para um mecanismo de execução. Se o motor está sofrendo em latência intensa, ele irá fazer backup de trades. Uma fila entre o gerador de sinal comercial e a API de execução aliviará essa questão à custa de uma possível destruição comercial. Um bem respeitado corretor de fila de mensagens de código aberto é RabbitMQ.
Hardware e sistemas operacionais.
O hardware que executa sua estratégia pode ter um impacto significativo na rentabilidade do seu algoritmo. Esta não é uma questão restrita aos comerciantes de alta freqüência. Uma má escolha em hardware e sistema operacional pode levar a uma falha na máquina ou reiniciar no momento mais inoportuno. Assim, é necessário considerar onde sua candidatura irá residir. A escolha é geralmente entre uma máquina de mesa pessoal, um servidor remoto, um provedor de "nuvem" ou um servidor co-localizado em troca.
As máquinas de mesa são simples de instalar e administrar, especialmente com sistemas operacionais mais novos e amigáveis, como o Windows 7/8, o Mac OSX eo Ubuntu. Os sistemas de desktop possuem algumas desvantagens significativas, no entanto. O principal é que as versões dos sistemas operacionais projetados para máquinas de mesa provavelmente irão requerer reinicialização / remendo (e muitas vezes no pior dos tempos!). Eles também usam mais recursos computacionais pela virtude de exigir uma interface gráfica do usuário (GUI).
Utilizar hardware em um ambiente doméstico (ou escritório local) pode levar à conectividade com a internet e aos problemas de tempo de atividade. O principal benefício de um sistema de desktop é que a potência computacional significativa pode ser comprada pela fração do custo de um servidor dedicado remoto (ou sistema baseado em nuvem) de velocidade comparável.
Um servidor dedicado ou uma máquina baseada em nuvem, muitas vezes mais caro do que uma opção de desktop, permite uma infra-estrutura de redundância mais significativa, como backups automatizados de dados, a capacidade de garantir de forma mais direta o tempo de atividade e monitoramento remoto. Eles são mais difíceis de administrar, pois exigem a capacidade de usar recursos de logon remoto do sistema operacional.
No Windows, isto é geralmente através do GUI Remote Desktop Protocol (RDP). Em sistemas baseados em Unix, a linha de comando Secure SHell (SSH) é usada. A infraestrutura de servidor baseada em Unix é quase sempre baseada em linha de comando, o que imediatamente faz com que as ferramentas de programação baseadas em GUI (como MatLab ou Excel) sejam inutilizáveis.
Um servidor co-localizado, como a frase é usada nos mercados de capitais, é simplesmente um servidor dedicado que se encontra dentro de uma troca para reduzir a latência do algoritmo de negociação. Isso é absolutamente necessário para certas estratégias de negociação de alta freqüência, que dependem de baixa latência para gerar alfa.
O aspecto final para a escolha do hardware e a escolha da linguagem de programação é a independência da plataforma. Existe a necessidade do código para executar vários sistemas operacionais diferentes? O código foi projetado para ser executado em um tipo específico de arquitetura de processador, como o Intel x86 / x64 ou será possível executar em processadores RISC, como os fabricados pela ARM? Essas questões serão altamente dependentes da frequência e do tipo de estratégia implementada.
Resiliência e Testes.
Uma das melhores maneiras de perder muito dinheiro na negociação algorítmica é criar um sistema sem resiliência. Isso se refere à durabilidade do sistema quando sujeito a eventos raros, como falências de corretagem, volatilidade súbita em excesso, tempo de inatividade em toda a região para um provedor de servidor em nuvem ou a exclusão acidental de um banco de dados de negociação inteiro. Anos de lucro podem ser eliminados em segundos com uma arquitetura mal projetada. É absolutamente essencial considerar questões como debugging, testes, logging, backups, alta disponibilidade e monitoramento como componentes principais do seu sistema.
É provável que, em qualquer aplicativo de negociação quantitativo personalizado razoavelmente complicado, pelo menos 50% do tempo de desenvolvimento serão gastos em depuração, teste e manutenção.
Quase todas as linguagens de programação são enviadas com um depurador associado ou possuem alternativas de terceiros bem respeitadas. Em essência, um depurador permite a execução de um programa com inserção de pontos de interrupção arbitrários no caminho do código, que interrompe temporariamente a execução para investigar o estado do sistema. O principal benefício da depuração é que é possível investigar o comportamento do código antes de um ponto de falha conhecido.
A depuração é um componente essencial na caixa de ferramentas para analisar erros de programação. No entanto, eles são mais amplamente utilizados em linguagens compiladas, como C ++ ou Java, pois linguagens interpretadas, como Python, geralmente são mais fáceis de depurar devido a menos declarações LOC e menos verbosas. Apesar desta tendência, o Python é enviado com o pdb, que é uma ferramenta de depuração sofisticada. O Microsoft Visual C ++ IDE possui amplos utilitários de depuração de GUI, enquanto que para o programador de linha de comando Linux C ++, o depurador gdb existe.
O teste no desenvolvimento de software refere-se ao processo de aplicação de parâmetros e resultados conhecidos a funções, métodos e objetos específicos dentro de uma base de código, para simular o comportamento e avaliar múltiplos caminhos de código, ajudando a garantir que um sistema se comporta como deveria. Um paradigma mais recente é conhecido como Test Driven Development (TDD), onde o código de teste é desenvolvido contra uma interface especificada sem implementação. Antes da conclusão da base de código real, todos os testes falharão. À medida que o código é escrito para "preencher os espaços em branco", os testes eventualmente passarão, em que ponto o desenvolvimento deve cessar.
O TDD requer um design de especificação detalhado e abrangente, bem como um grau de disciplina saudável para realizar com sucesso. Em C ++, o Boost fornece uma estrutura de teste de unidade. Em Java, a biblioteca JUnit existe para cumprir a mesma finalidade. O Python também possui o módulo unittest como parte da biblioteca padrão. Muitas outras línguas possuem estruturas de teste de unidade e muitas vezes existem várias opções.
Em um ambiente de produção, o log sofisticado é absolutamente essencial. Logging refere-se ao processo de saída de mensagens, com vários graus de gravidade, em relação ao comportamento de execução de um sistema em um arquivo ou banco de dados plano. Logs are a "first line of attack" when hunting for unexpected program runtime behaviour. Unfortunately the shortcomings of a logging system tend only to be discovered after the fact! As with backups discussed below, a logging system should be given due consideration BEFORE a system is designed.
Both Microsoft Windows and Linux come with extensive system logging capability and programming languages tend to ship with standard logging libraries that cover most use cases. It is often wise to centralise logging information in order to analyse it at a later date, since it can often lead to ideas about improving performance or error reduction, which will almost certainly have a positive impact on your trading returns.
While logging of a system will provide information about what has transpired in the past, monitoring of an application will provide insight into what is happening right now . All aspects of the system should be considered for monitoring. System level metrics such as disk usage, available memory, network bandwidth and CPU usage provide basic load information.
Trading metrics such as abnormal prices/volume, sudden rapid drawdowns and account exposure for different sectors/markets should also be continuously monitored. Further, a threshold system should be instigated that provides notification when certain metrics are breached, elevating the notification method (email, SMS, automated phone call) depending upon the severity of the metric.
System monitoring is often the domain of the system administrator or operations manager. However, as a sole trading developer, these metrics must be established as part of the larger design. Many solutions for monitoring exist: proprietary, hosted and open source, which allow extensive customisation of metrics for a particular use case.
Backups and high availability should be prime concerns of a trading system. Consider the following two questions: 1) If an entire production database of market data and trading history was deleted (without backups) how would the research and execution algorithm be affected? 2) If the trading system suffers an outage for an extended period (with open positions) how would account equity and ongoing profitability be affected? The answers to both of these questions are often sobering!
It is imperative to put in place a system for backing up data and also for testing the restoration of such data. Many individuals do not test a restore strategy. If recovery from a crash has not been tested in a safe environment, what guarantees exist that restoration will be available at the worst possible moment?
Similarly, high availability needs to be "baked in from the start". Redundant infrastructure (even at additional expense) must always be considered, as the cost of downtime is likely to far outweigh the ongoing maintenance cost of such systems. I won't delve too deeply into this topic as it is a large area, but make sure it is one of the first considerations given to your trading system.
Choosing a Language.
Considerable detail has now been provided on the various factors that arise when developing a custom high-performance algorithmic trading system. The next stage is to discuss how programming languages are generally categorised.
Type Systems.
When choosing a language for a trading stack it is necessary to consider the type system . The languages which are of interest for algorithmic trading are either statically - or dynamically-typed . A statically-typed language performs checks of the types (e. g. integers, floats, custom classes etc) during the compilation process. Such languages include C++ and Java. A dynamically-typed language performs the majority of its type-checking at runtime. Such languages include Python, Perl and JavaScript.
For a highly numerical system such as an algorithmic trading engine, type-checking at compile time can be extremely beneficial, as it can eliminate many bugs that would otherwise lead to numerical errors. However, type-checking doesn't catch everything, and this is where exception handling comes in due to the necessity of having to handle unexpected operations. 'Dynamic' languages (i. e. those that are dynamically-typed) can often lead to run-time errors that would otherwise be caught with a compilation-time type-check. For this reason, the concept of TDD (see above) and unit testing arose which, when carried out correctly, often provides more safety than compile-time checking alone.
Another benefit of statically-typed languages is that the compiler is able to make many optimisations that are otherwise unavailable to the dynamically - typed language, simply because the type (and thus memory requirements) are known at compile-time. In fact, part of the inefficiency of many dynamically-typed languages stems from the fact that certain objects must be type-inspected at run-time and this carries a performance hit. Libraries for dynamic languages, such as NumPy/SciPy alleviate this issue due to enforcing a type within arrays.
Open Source or Proprietary?
One of the biggest choices available to an algorithmic trading developer is whether to use proprietary (commercial) or open source technologies. There are advantages and disadvantages to both approaches. It is necessary to consider how well a language is supported, the activity of the community surrounding a language, ease of installation and maintenance, quality of the documentation and any licensing/maintenance costs.
The Microsoft stack (including Visual C++, Visual C#) and MathWorks' MatLab are two of the larger proprietary choices for developing custom algorithmic trading software. Both tools have had significant "battle testing" in the financial space, with the former making up the predominant software stack for investment banking trading infrastructure and the latter being heavily used for quantitative trading research within investment funds.
Microsoft and MathWorks both provide extensive high quality documentation for their products. Further, the communities surrounding each tool are very large with active web forums for both. The software allows cohesive integration with multiple languages such as C++, C# and VB, as well as easy linkage to other Microsoft products such as the SQL Server database via LINQ. MatLab also has many plugins/libraries (some free, some commercial) for nearly any quantitative research domain.
There are also drawbacks. With either piece of software the costs are not insignificant for a lone trader (although Microsoft does provide entry-level version of Visual Studio for free). Microsoft tools "play well" with each other, but integrate less well with external code. Visual Studio must also be executed on Microsoft Windows, which is arguably far less performant than an equivalent Linux server which is optimally tuned.
MatLab also lacks a few key plugins such as a good wrapper around the Interactive Brokers API, one of the few brokers amenable to high-performance algorithmic trading. The main issue with proprietary products is the lack of availability of the source code. This means that if ultra performance is truly required, both of these tools will be far less attractive.
Open source tools have been industry grade for sometime. Much of the alternative asset space makes extensive use of open-source Linux, MySQL/PostgreSQL, Python, R, C++ and Java in high-performance production roles. However, they are far from restricted to this domain. Python and R, in particular, contain a wealth of extensive numerical libraries for performing nearly any type of data analysis imaginable, often at execution speeds comparable to compiled languages, with certain caveats.
The main benefit of using interpreted languages is the speed of development time. Python and R require far fewer lines of code (LOC) to achieve similar functionality, principally due to the extensive libraries. Further, they often allow interactive console based development, rapidly reducing the iterative development process.
Given that time as a developer is extremely valuable, and execution speed often less so (unless in the HFT space), it is worth giving extensive consideration to an open source technology stack. Python and R possess significant development communities and are extremely well supported, due to their popularity. Documentation is excellent and bugs (at least for core libraries) remain scarce.
Open source tools often suffer from a lack of a dedicated commercial support contract and run optimally on systems with less-forgiving user interfaces. A typical Linux server (such as Ubuntu) will often be fully command-line oriented. In addition, Python and R can be slow for certain execution tasks. There are mechanisms for integrating with C++ in order to improve execution speeds, but it requires some experience in multi-language programming.
While proprietary software is not immune from dependency/versioning issues it is far less common to have to deal with incorrect library versions in such environments. Open source operating systems such as Linux can be trickier to administer.
I will venture my personal opinion here and state that I build all of my trading tools with open source technologies. In particular I use: Ubuntu, MySQL, Python, C++ and R. The maturity, community size, ability to "dig deep" if problems occur and lower total cost ownership (TCO) far outweigh the simplicity of proprietary GUIs and easier installations. Having said that, Microsoft Visual Studio (especially for C++) is a fantastic Integrated Development Environment (IDE) which I would also highly recommend.
Batteries Included?
The header of this section refers to the "out of the box" capabilities of the language - what libraries does it contain and how good are they? This is where mature languages have an advantage over newer variants. C++, Java and Python all now possess extensive libraries for network programming, HTTP, operating system interaction, GUIs, regular expressions (regex), iteration and basic algorithms.
C++ is famed for its Standard Template Library (STL) which contains a wealth of high performance data structures and algorithms "for free". Python is known for being able to communicate with nearly any other type of system/protocol (especially the web), mostly through its own standard library. R has a wealth of statistical and econometric tools built in, while MatLab is extremely optimised for any numerical linear algebra code (which can be found in portfolio optimisation and derivatives pricing, for instance).
Outside of the standard libraries, C++ makes use of the Boost library, which fills in the "missing parts" of the standard library. In fact, many parts of Boost made it into the TR1 standard and subsequently are available in the C++11 spec, including native support for lambda expressions and concurrency.
Python has the high performance NumPy/SciPy/Pandas data analysis library combination, which has gained widespread acceptance for algorithmic trading research. Further, high-performance plugins exist for access to the main relational databases, such as MySQL++ (MySQL/C++), JDBC (Java/MatLab), MySQLdb (MySQL/Python) and psychopg2 (PostgreSQL/Python). Python can even communicate with R via the RPy plugin!
An often overlooked aspect of a trading system while in the initial research and design stage is the connectivity to a broker API. Most APIs natively support C++ and Java, but some also support C# and Python, either directly or with community-provided wrapper code to the C++ APIs. In particular, Interactive Brokers can be connected to via the IBPy plugin. If high-performance is required, brokerages will support the FIX protocol.
Conclusão.
As is now evident, the choice of programming language(s) for an algorithmic trading system is not straightforward and requires deep thought. The main considerations are performance, ease of development, resiliency and testing, separation of concerns, familiarity, maintenance, source code availability, licensing costs and maturity of libraries.
The benefit of a separated architecture is that it allows languages to be "plugged in" for different aspects of a trading stack, as and when requirements change. A trading system is an evolving tool and it is likely that any language choices will evolve along with it.
A Quantcademy.
Junte-se ao portal de adesão da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento e saiba como aumentar a rentabilidade da sua estratégia.
Comércio Algoritmo bem sucedido.
Como encontrar novas ideias de estratégia de negociação e avaliá-las objetivamente para seu portfólio usando um mecanismo de backtesting personalizado em Python.
Negociação Algorítmica Avançada.
Como implementar estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquinas e estatísticas bayesianas com R e Python.
Comércio de alta freqüência e # 8211; Os perigos ocultos de Scalping & # 038; Dia de Comércio.
Atualizado: 21 de setembro de 2017.
Quase invariavelmente, quando as pessoas descobrem o Forex, elas são atraídas pela negociação de alta freqüência.
É o tópico mais quente na maioria das salas de bate-papo e fóruns, e é promovido fortemente por corretores (por isso deve ser legítimo, certo?). Sem mencionar, isso atrai o aspecto adictivo à adrenalina de nossas próprias personalidades.
Vamos ser honestos, é o que queremos fazer porque é divertido, pelo menos inicialmente. Os comerciantes são atraídos por sistemas de ritmo acelerado porque querem gratificação imediata e acreditam que com a promessa de muitas oportunidades comerciais - vem a promessa de enriquecer rápido.
Se você está pensando em assumir um sistema de negociação de alta freqüência ou já estiver usando esse método de negociação, faça um grande favor e leia este artigo.
Eu vou dizer-lhe por que penso que a comercialização do dia-a-dia ou qualquer outra estratégia de negociação de alta freqüência não é apenas uma maneira extremamente arriscada de negociar Forex (financeiramente), mas também pode ter sérios efeitos colaterais negativos em sua saúde e felicidade.
A intensidade desses sistemas de negociação pode transformá-lo em vegetais que não se banham; impacto negativo em sua vida cotidiana, encorajando você a negligenciar suas outras responsabilidades, como a realização de um trabalho onde você realmente ganha dinheiro, ou passar tempo com sua esposa e filhos; e pode ser especialmente perigoso psicologicamente, porque se você soprou suas economias tentando se enriquecer de uma "coisa segura", talvez você tenha que contemplar o suicídio.
A atração do comércio de alta freqüência.
Toda a idéia de negociação de alta freqüência é abrir posições por apenas um período muito curto de tempo, às vezes apenas alguns segundos. Esta intensa negociação dentro e fora é a "excitação" que os novos comerciantes estão procurando.
Mesmo se eles tiverem a sorte de se afastar com pão ralado, ainda é um passeio de emoção. Você pode se lembrar quando começou a operar, certo? Tudo o que você queria fazer era sentar-se na frente das paradas o dia todo e tomar tantos comércios como pudesse. Considere isso: quanto de análise e pensamento você poderia ter implementado em suas decisões comerciais?
Você estava gravando seus negócios em um periódico onde você poderia refletir e analisar suas vitórias e suas perdas? Você estava usando uma parada de perda? Você teve o cuidado de não se sobreexplicar tomando vários negócios ao mesmo tempo? Se você respondeu negativamente a essas perguntas, você está participando de comportamentos de risco.
Todos já estivemos lá em algum momento, mas, eventualmente, o zumbido inicial desaparece. O comerciante começa a ficar mais sério e começa a se concentrar muito em ganhar dinheiro.
Infelizmente, o comerciante ainda está "condicionado" a essa mentalidade de negociação de alta freqüência. Pode ser um ciclo vicioso para se libertar porque ninguém gosta de admitir a derrota, ninguém quer aceitar que o que eles fizeram não está funcionando.
Mais cedo ou mais tarde, os comerciantes envolvidos em estratégias de negociação de alta freqüência perceberão que estão açoitando um cavalo morto. A verdade é que a abordagem comercial de alta freqüência para o mercado simplesmente não funciona.
Trader Burnout.
O comércio de alta freqüência, particularmente o escalpelo, exige que você gaste muitas horas coladas em monitores, rastreando o movimento minuto a minuto.
Se você for para uma pausa no banheiro, ou a cozinha para tomar um café / algo para comer, você pode perder a oportunidade de negociação que esteve olhando as paradas durante as últimas 3 horas esperando. #frustrando.
Sentado na frente das tabelas por muito tempo é taxando mentalmente e afetará mesmo fisicamente.
Pessoalmente, eu tive o suficiente depois de olhar os gráficos por mais de 30 minutos. O pensamento de gastar longos períodos de tempo em frente a eles, mantendo o controle de minutos de movimento de preços sem parar, me deixa desconfortável.
Sua mente só pode demorar tanto. Por quanto tempo você pode se sentar na frente das cartas e permanecer mentalmente focado?
Quanto tempo antes de se cansar e começar a tomar decisões comerciais ruins? Qual é o limite onde o tédio entra e você começa a forçar negócios apenas para que algo aconteça? As negociações só devem ser abertas quando as probabilidades são a seu favor, não porque você precise de estimulação mental.
Quarto pequeno para erro.
Os sistemas de negociação de alta freqüência geralmente têm metas de lucro muito pequenas. Fazer retornos decentes para o dia exige que o comerciante de alta freqüência acumule uma quantidade perturbadora de negócios rentáveis para garantir que seus esforços valem a pena.
A maioria dos sistemas de negociação de alta freqüência incentivam o gerenciamento de dinheiro ruim expondo sua conta a uma quantidade de risco insalubre. Geralmente, um sistema de negociação de alta freqüência exige que você arrisque demais para os pequenos ganhos. Os índices de recompensa de risco geralmente são negativos, uma grave bandeira vermelha em meus livros.
De fato, as perdas são muito maiores do que as vitórias de que uma troca perdedora pode colocá-lo em um buraco profundo que é muito difícil de sair.
Por exemplo, um comerciante de alta freqüência pode arriscar vinte pips para ganhar cinco pips. Essa é uma razão de risco / recompensa negativa de 4: 1. Para colocar isso em perspectiva, uma troca perdedora colocará um escalador de volta a quatro fatores de risco.
Os próximos quatro trocas do scalper precisarão ser bem-sucedidos para obter a conta de volta ao estágio "break even".
Claro, isso é assumir que o tamanho do mesmo lote está sendo usado em todos os negócios. Os comerciantes de alta freqüência também tendem a usar o gerenciamento de dinheiro irregular, provavelmente devido ao fato de que as decisões são tomadas rapidamente e "on the fly".
O comércio de alta frequência pode ser rápido em pêlos, é assustador. Por um lado, as chances de seus próximos quatro negócios serem bem sucedidas estão contra você. A margem de erro permitida neste exemplo é de apenas vinte pips.
Isso não é muito, considerando que a volatilidade diária média do mercado é três vezes maior do que isso. O mercado só precisa solucionar o problema na direção errada e o comércio é interrompido. Enquanto o comerciante de alta freqüência está tentando se recuperar das perdas, cada parada única faz o buraco, quatro fatores de risco mais profundos.
Para que um sistema de risco / recompensa negativo funcione, você deve acumular uma quantidade esmagadora de negociações vencedoras na perda de negociações. Sofrer uma perda a qualquer momento é um grande revés.
O desespero e a pressão se acumulam imensamente quando as estratégias comerciais de alta freqüência empurram as contas "para o vermelho". Isso começa a induzir o estresse que se transforma em erros irracionais e emocionais de comércio de Forex.
Nenhum sistema comercial de alta freqüência (ou qualquer sistema de negociação, na minha opinião) vai funcionar no longo prazo, a menos que os índices de risco / recompensa sejam positivos.
Se você está arriscando vinte pips, então você deve apontar para pelo menos quarenta pips em retornos, e não cinco. Um modelo de risco / recompensa positivo de 1: 2 permite que você perca a metade de seus negócios, mas ainda ganha dinheiro no longo prazo. É por isso que somos inflexíveis sobre o uso de risco / recompensa positivos em nossa negociação de ações de preço porque você não pode vencer todos os negócios, e ninguém espera que você o faça. É fundamental garantir que seus vencedores superem seus perdedores.
Não perca a parada.
Até este ponto, assumimos que as estratégias de negociação de alta freqüência realmente usam uma parada de perda. Eu sei que a maioria deles não, porque as paradas geralmente requeridas são tão apertadas que qualquer pequena vibração no mercado eliminará o comércio.
Esses tipos de vibrações são o resultado da atividade diária normal no mercado, como quando grandes empresas comerciais realizam transações de moeda no exterior que contribuem para a volatilidade do dia a dia.
Eu notei que a maioria dos comerciantes de alta freqüência culparão esses movimentos de preços intra-dia "anormais" em seu corretor tentando "parar de caçar" seu comércio.
Então, para vencer o mercado e seu corretor, eles não estabelecem um.
Somos grandes crentes de perdas de parada aqui no The War Room, nunca colocamos um comércio sem um. Sem perda de parada, sua conta é efetivamente 100% exposta.
Eu sei que a maioria dos comerciantes de alta freqüência estão executando a alavanca mais alta possível para sua conta. Um lançamento de notícias inesperado poderia levar sua conta exposta a uma chamada de margem.
A falta de uso de uma perda de parada não é uma negociação inteligente; Não consigo pensar em nenhuma vantagem real de não usar um. A sua perda de paradas deve ser colocada no ponto em que, se o preço fosse cruzado, o comércio seria considerado uma falha e você não deveria mais estar no comércio de qualquer maneira.
Não ter perda de parada significa que você precisa se sentar na tela constantemente monitorando seu comércio e decidir quando fechá-lo manualmente. As abordagens comerciais de alta freqüência também correm o risco de ficar presas em erros de re-quote quando o mercado está experimentando maior volatilidade. Você já tentou sair de um comércio durante períodos intensos de volatilidade?
Não é uma posição em que você deseja se colocar. A linha inferior é, sentar e olhar as tabelas de preços durante todo o dia / noite, não é um comportamento saudável e vai levar a problemas de ansiedade, e não usar uma parada de perda é simplesmente loucura!
Alto na emoção.
Os sistemas de negociação de alta freqüência são empreendimentos muito emocionalmente alimentados e atraem aqueles que procuram uma forte adrenalina. Os comerciantes de curto prazo podem ser tão desconectados da disciplina que muitas de suas decisões comerciais são apenas baseadas no "instinto mental".
Com cada nova posição aberta, há muito em jogo para lucros tão próximos. Os métodos de negociação de alta freqüência podem colocar um alto nível de importância em cada comércio. Os comerciantes tornam-se altamente fixados para o sucesso de uma posição. Por quê? simplesmente porque a perda torna-se um grande sucesso. Eu vi comerciantes de alta freqüência que detêm posições abertas em -100 pips; porque eles estão esperando o mercado se virar e atingir seu alvo de lucro de 5 pips.
Quando um comércio perdedor é finalmente fechado, adivinhe o que geralmente vem depois? O comércio de vingança. Este é muitas vezes outro comércio ruim envolvendo o mesmo par (tudo enquanto mantém rancor e acredita que você vai "recuperar seu dinheiro"). Esta é a definição de perder o seu legal e comercial emocionalmente, eu vejo isso o tempo todo. A perseguição constante do preço e a alta das emoções, dá ao comerciante a mentalidade de que estão "lutando contra os mercados".
O que realmente está acontecendo é que eles estão avaliando a adrenalina e as endorfinas. Mesmo quando o comerciante está falhando miseravelmente, nada mais importa para eles! É como um vício em drogas. Esses caras sabem que isso prejudica sua carteira e sua qualidade de vida, mas eles ainda continuam com os mesmos comportamentos e perseguem essa corrida.
É de conhecimento comum que emoções e comércio criam um coquetel bastante perigoso. Você não está fazendo a si mesmo nenhum favor usando um sistema de comércio de alta freqüência que pode facilmente estimular essas emoções para níveis destrutivos. O mercado não leva prisioneiros. Quando um comerciante quebra sob pressão e mostra seus cartões emocionais, o mercado irá explorar essas emoções e jogá-las contra o comerciante.
Over Trading.
O comércio de alta freqüência é um dos mais exigentes de todos os estilos comerciais. A maioria dos comerciantes está descontente com a quantidade de dinheiro que eles estão fazendo em comparação com o dinheiro ilimitado que gera o potencial de dinheiro do mercado. Então, eles acreditam que podem remediar esse problema simplesmente negociando o máximo que puderem. Esta é uma das forças motrizes por trás da atração pelas estratégias de negociação de alta freqüência.
O comércio excessivo é um enorme problema para os comerciantes de curto prazo. Se eles já estão abrindo e fechando negócios em alta freqüência, o que é outro comércio ou dois, quais são outros vinte? Isso encoraja a mentalidade do jogo quando o comerciante não está mais pensando em probabilidades, mas é negociado puramente por ganância, tédio, desespero ou excesso de confiança. Sua atitude em relação ao mercado irá defini-lo como comerciante. Você acha que está perseguindo dinheiro, mas, na realidade, o único assunto que você persegue é a sua própria cauda.
Parálisis de análise.
Os modelos de sistema de negociação de curto prazo e de alta freqüência que eu vi são bastante pesados sobre os indicadores. Alguns deles realmente exigem que você monitore vários cronogramas ao mesmo tempo. Eu sei que as imagens de várias telas de negociação, indicadores de Forex intermitentes e feeds de preços de rolamento parecem emocionantes para o novo comerciante, mas é longe de ser prático quando se trata de seu desempenho comercial.
Mais dados ou mais análises NÃO criarão mais uma "vantagem" para você nos mercados. Na verdade, fará o contrário. Todas as variáveis extras que você traz em seus gráficos só vão dificultar a execução de decisões negociais lógicas e claras.
Muitas vezes, suas preciosas "variáveis escolhidas" entrarão em conflito entre si, então, embora você não perceba isso no momento - você está criando seu próprio pesadelo comercial tentando incorporar todas essas coisas na sua análise.
É por isso que somos grandes fãs de negociação com ação de preços em gráficos de preços nus. A clareza que você obtém é incomparável por qualquer outro sistema comercial, e é por isso que é a metodologia de negociação mais bem sucedida neste setor.
Conclusão.
Há um vencedor de tudo isso, e esse é seu corretor. Os corretores se beneficiam tanto do comércio de alta freqüência, que até mesmo o pressionarão a fazê-lo. Os corretores ganham spreads em cada comércio que você coloca, independentemente de ser um vencedor ou um perdedor. Então, sim eles querem que você seja um comerciante de alta freqüência. Eles querem que todos nós sejam comerciantes de alta freqüência!
O fato realmente triste é que o corretor às vezes ganha o dobro do valor de um comércio que o comerciante de alta freqüência faz. Swing comerciantes, como nós War Room Traders, não precisa se preocupar com a propagação. Mesmo um spread caro como 10 pips, não vai afetar muito um comércio, quando ele tiver um retorno esperado de 150 pips.
Apesar do que você lê nos fóruns de negociação, a negociação de alta freqüência, por qualquer definição, não oferece os meios para um caminho suave e livre de riscos para maiores lucros. É muito exigente mental e fisicamente, ocupa grandes quantidades de seu tempo e pode ter um impacto negativo em sua vida. Em nosso artigo: 95% dos comerciantes perdem dinheiro ?, mostramos que a maioria dos comerciantes perdedores são de fato os comerciantes que usam estratégias de negociação de alta freqüência.
Se você está cansado de ser bombardeado com as falsas promessas que os sistemas comerciais de alta freqüência fazem, ou talvez você tenha apenas compromissos da vida real, como um emprego a tempo inteiro, o que não permitiria que você se envolvesse em negociação de alta freqüência e # 8211 ; Você deve dar uma olhada séria em nossas estratégias comerciais de fim de dia. Essas estratégias de negociação de swing usam ação de preço e exigem uma fração do tempo do gráfico por dia. Na verdade, você deve negociar muito menos, gerando retornos maiores e experimentando uma taxa de sucesso muito maior.
Antes de começar a negociar com dinheiro real, certifique-se de verificar nossa lista de verificação de negociação Forex. Além disso, lembre-se: o escalpelamento, o dia comercial ou qualquer outra estratégia de alta freqüência podem aparecer como "investimento inteligente" em propagandas, mas é apenas uma frase inteligente que é projetada para direcionar suas emoções e incentivá-lo a entregar seu dinheiro arduamente ganho.
Espero que o artigo de hoje tenha destacado os perigos da negociação de alta freqüência. Se você gostou do artigo, ajude-nos a espalhar a palavra e compartilhar o artigo usando os botões abaixo. Desejo-lhe uma semana comercial rentável.
Junkie Forex & amp; Especialista em ações de ação de preço!
Aqui compartilho meu conhecimento & amp; experincia com estratégias técnicas, com foco no comércio de swing e comércio de breakouts.
Também estou obedecendo com psicologia comercial e minha nova área de pesquisa - mineração de dados e amp; análise quantitativa.
No comments:
Post a Comment