Jesse Spaulding.
Como ganhei $ 500k com aprendizado de máquina e HFT (negociação de alta frequência)
Este post irá detalhar o que eu fiz para fazer aprox. 500k de negociação de alta frequência de 2009 a 2010. Desde que eu estava negociando de forma totalmente independente e não estou mais executando o meu programa, estou feliz em dizer tudo. Minha negociação foi principalmente em contratos de futuros Russel 2000 e DAX.
A chave do meu sucesso, acredito, não estava em uma equação financeira sofisticada, mas sim no design geral do algoritmo, que unia muitos componentes simples e usava o aprendizado de máquina para otimizar a máxima lucratividade. Você não precisa conhecer nenhuma terminologia sofisticada aqui, porque quando eu configurei meu programa, tudo foi baseado na intuição. (O surpreendente curso de aprendizado de máquina de Andrew Ng ainda não estava disponível - se você clicar nesse link, você será levado ao meu projeto atual: CourseTalk, um site de revisão para MOOCs)
Primeiro, quero apenas demonstrar que meu sucesso não foi simplesmente o resultado da sorte. Meu programa fazia de 1000 a 4000 negociações por dia (meio longo, meio curto) e nunca ocupava posições de mais do que alguns contratos por vez. Isso significava que a sorte aleatória de qualquer negociação em particular era muito rápida. O resultado foi que eu nunca perdi mais de US $ 2000 em um dia e nunca tive um mês perdido:
(EDIT: Estes números são depois de pagar comissões)
E aqui está um gráfico para lhe dar uma noção da variação diária. Note que isso exclui os últimos 7 meses porque - à medida que os números pararam de subir - perdi minha motivação para entrar neles.
Antes de configurar o meu programa de negociação automatizado, eu tinha 2 anos de experiência como "manual" e "& rdquo; comerciante do dia. Isso foi em 2001 - eram os primeiros dias do comércio eletrônico e havia oportunidades para os "cambistas". fazer um bom dinheiro. Eu só posso descrever o que eu estava fazendo como se fosse jogar videogames / jogos de azar com uma suposta vantagem. Ser bem-sucedido significa ser rápido, ser disciplinado e ter uma boa capacidade intuitiva de reconhecimento de padrões. Consegui ganhar cerca de US $ 250 mil, pagar meus empréstimos estudantis e ter dinheiro sobrando. Ganhar!
Nos próximos cinco anos, eu lançaria duas startups, adquirindo algumas habilidades de programação ao longo do caminho. Não seria até o final de 2008 que eu voltaria a negociar. Com o dinheiro acabando com a venda da minha primeira startup, a negociação oferecia esperanças de algum dinheiro rápido enquanto eu descobria o meu próximo movimento.
Em 2008, eu era "manualmente" e "rdquo; dia negociando futuros usando software chamado T4. Eu estava querendo algumas teclas de atalho de entrada de pedidos personalizadas, então depois de descobrir que o T4 tinha uma API, aceitei o desafio de aprender C # (a linguagem de programação necessária para usar a API) e fui em frente e desenvolvi algumas teclas de atalho.
Depois de molhar os pés com a API, logo tive aspirações maiores: eu queria ensinar o computador a trocar por mim. A API forneceu um fluxo de dados de mercado e uma maneira fácil de enviar pedidos para a troca - tudo o que eu tinha que fazer era criar a lógica no meio.
Abaixo está uma imagem de uma janela de negociação T4. O que foi legal é que quando eu comecei meu programa trabalhando eu pude assistir o comércio de computador exatamente nesta mesma interface. Assistir ordens reais entrando e saindo (por conta própria com meu dinheiro real) era ao mesmo tempo emocionante e assustador.
O design do meu algoritmo.
Desde o início, meu objetivo era configurar um sistema de modo que eu pudesse estar razoavelmente confiante de que ganharia dinheiro antes de fazer qualquer negociação ao vivo. Para conseguir isso, eu precisava construir uma estrutura de simulação de negociação que simulasse a negociação ao vivo, com a maior precisão possível.
Enquanto a negociação no modo ao vivo exigia atualizações do mercado de processamento transmitidas pela API, o modo de simulação exigia a leitura das atualizações do mercado a partir de um arquivo de dados. Para coletar esses dados, configurei a primeira versão do meu programa para simplesmente conectar-me à API e registrar as atualizações do mercado com registros de data e hora. Acabei usando 4 semanas de dados de mercado recentes para treinar e testar meu sistema.
Com uma estrutura básica em vigor, ainda tinha a tarefa de descobrir como criar um sistema comercial lucrativo. Acontece que meu algoritmo se dividiria em dois componentes distintos, que eu exploraria por sua vez:
Previsão de movimentos de preços; e Fazendo negócios lucrativos.
Previsão de movimentos de preços.
Talvez um componente óbvio de qualquer sistema de negociação seja a capacidade de prever onde os preços irão se mover. E o meu não foi exceção. Eu defini o preço atual como a média do lance interno e da oferta interna e estabeleci a meta de prever onde o preço estaria nos próximos 10 segundos. Meu algoritmo precisaria apresentar essa previsão momento a momento ao longo do dia de negociação.
Criando & amp; otimização de indicadores.
Eu criei um punhado de indicadores que provaram ter uma capacidade significativa de prever movimentos de preços de curto prazo. Cada indicador produziu um número que foi positivo ou negativo. Um indicador era útil se, na maior parte dos casos, um número positivo correspondesse ao aumento do mercado e um número negativo correspondesse à queda do mercado.
Meu sistema me permitiu determinar rapidamente a capacidade preditiva de qualquer indicador, por isso pude experimentar muitos indicadores diferentes para ver o que funcionava. Muitos dos indicadores tinham variáveis nas fórmulas que os produziam e eu consegui encontrar os valores ótimos para essas variáveis, fazendo comparações lado a lado dos resultados obtidos com valores variáveis.
Os indicadores que foram mais úteis foram todos relativamente simples e foram baseados em eventos recentes no mercado em que eu estava negociando, bem como nos mercados de títulos correlacionados.
Fazendo previsões precisas de movimentação de preços.
Ter indicadores que simplesmente previam uma alta ou baixa no preço não era suficiente. Eu precisava saber exatamente quanto movimento de preço era previsto por cada valor possível de cada indicador. Eu precisava de uma fórmula que convertesse um valor de indicador em uma previsão de preço.
Para conseguir isso, acompanhei os movimentos de preço previstos em 50 intervalos que dependiam do intervalo em que o valor do indicador caiu. Isso gerou previsões incorretas para cada depósito que eu era capaz de representar graficamente no Excel. Como você pode ver, a mudança de preço esperada aumenta à medida que o valor do indicador aumenta.
Com base em um gráfico como esse, consegui fazer uma fórmula para ajustar a curva. No começo eu fiz isso "ajuste de curva" manualmente, mas logo escrevi algum código para automatizar esse processo.
Note que nem todas as curvas do indicador tinham a mesma forma. Observe também que os buckets foram distribuídos logaritmicamente para distribuir os dados de maneira uniforme. Por fim, observe que os valores dos indicadores negativos (e suas previsões de preços descendentes correspondentes) foram invertidos e combinados com os valores positivos. (Meu algoritmo tratado para cima e para baixo exatamente o mesmo.)
Combinando indicadores para uma única previsão.
Uma coisa importante a considerar era que cada indicador não era totalmente independente. Eu não poderia simplesmente somar todas as previsões que cada indicador fez individualmente. A chave era descobrir o valor preditivo adicional que cada indicador tinha além do que já estava previsto. Isso não era difícil de implementar, mas significava que se eu estivesse "ajustando a curva", vários indicadores ao mesmo tempo, tive que ser cuidadoso; a mudança de um efetuaria as previsões de outro.
Para ajustar a curva & rdquo; Todos os indicadores ao mesmo tempo eu configurei o otimizador para pisar apenas 30% do caminho para as novas curvas de previsão com cada passagem. Com esse salto de 30%, descobri que as curvas de previsão se estabilizariam em poucas passagens.
Com cada indicador nos dando agora a previsão adicional de preço, eu poderia simplesmente adicioná-los para produzir uma única previsão de onde o mercado estaria em 10 segundos.
Por que prever preços não é suficiente.
Você pode pensar que com essa vantagem no mercado eu era de ouro. Mas você precisa ter em mente que o mercado é composto de ofertas e ofertas - não é apenas um preço de mercado. Sucesso na negociação de alta freqüência se resume a obter bons preços e não é assim tão fácil.
Os fatores a seguir dificultam a criação de um sistema lucrativo:
Com cada negócio eu tive que pagar comissões ao meu corretor e à bolsa. O spread (diferença entre oferta mais alta e oferta mais baixa) significava que se eu simplesmente comprasse e vendesse aleatoriamente, estaria perdendo uma tonelada de dinheiro. A maior parte do volume do mercado era de outros bots que só fariam uma troca comigo se achassem que tinham alguma vantagem estatística. Vendo uma oferta não garante que eu poderia comprá-lo. No momento em que minha ordem de compra chegou à bolsa, era muito possível que essa oferta tivesse sido cancelada. Como um pequeno participante do mercado, não havia como competir sozinho com a velocidade.
Construindo uma simulação de negociação completa.
Então eu tive uma estrutura que me permitiu backtest e otimizar os indicadores. Mas eu tive que ir além disso - eu precisava de um framework que me permitisse fazer backtest e otimizar um sistema de negociação completo; aquele em que eu estava mandando pedidos e ficando em posições. Neste caso, eu estaria otimizando para P & amp; L total e, em certa medida, P & amp; L médio por negociação.
Isso seria mais complicado e, de certa forma, impossível modelar exatamente, mas eu fiz o melhor que pude. Aqui estão alguns dos problemas que eu tive que lidar:
Quando um pedido foi enviado ao mercado na simulação, tive que modelar o tempo de atraso. O fato de meu sistema ter visto uma oferta não significa que ela poderia comprá-la imediatamente. O sistema enviaria o pedido, aguardaria aproximadamente 20 milissegundos e somente se a oferta ainda estivesse lá era considerado como um negócio executado. Isso era inexato porque o tempo real de atraso era inconsistente e não relatado. Quando eu fiz lances ou ofertas, tive que olhar para o fluxo de execução de negociação (fornecido pela API) e usá-los para avaliar quando meu pedido seria executado. Para fazer isso direito eu tive que rastrear a posição do meu pedido na fila. (É um sistema first-in first-out). Novamente, eu não pude fazer isso perfeitamente, mas fiz uma melhor aproximação.
Para refinar minha simulação de execução de pedidos, o que fiz foi extrair meus arquivos de log da negociação ao vivo pela API e compará-los aos arquivos de log produzidos pela negociação simulada no mesmo período de tempo. Consegui obter minha simulação ao ponto de ser bastante precisa e, para as partes que eram impossíveis de modelar exatamente, certifiquei-me de, pelo menos, produzir resultados que fossem estatisticamente semelhantes (nas métricas que julguei importantes).
Fazendo negócios lucrativos.
Com um modelo de simulação de pedidos, agora eu poderia enviar pedidos no modo de simulação e ver um P & amp; Mas como meu sistema saberia quando e onde comprar e vender?
As previsões do movimento de preços foram um ponto de partida, mas não toda a história. O que eu fiz foi criar um sistema de pontuação para cada um dos 5 níveis de preço na oferta e oferta. Estes incluíram um nível acima da oferta interna (para uma ordem de compra) e um nível abaixo da oferta interna (para uma ordem de venda).
Se a pontuação de um determinado nível de preço estiver acima de um certo limite, isso significa que o sistema deve ter um lance / oferta ativa - abaixo do limite, então qualquer pedido ativo deve ser cancelado. Com base nisso, não era incomum que meu sistema exibisse um lance no mercado e o cancelasse imediatamente. (Embora eu tentei minimizar isso, é irritante para quem olha para a tela com olhos humanos - inclusive eu.)
As pontuações do nível de preços foram calculadas com base nos seguintes fatores:
A previsão do movimento de preços (que discutimos anteriormente). O nível de preços em questão. (Níveis internos significavam que grandes previsões de movimentação de preço eram necessárias.) O número de contratos na frente do meu pedido na fila. (Menos foi melhor.) O número de contratos por trás do meu pedido na fila. (Mais foi melhor.)
Essencialmente, esses fatores serviram para identificar "seguro". lugares para licitar / oferecer. A previsão do movimento de preços, por si só, não era adequada porque não levava em conta o fato de que, ao fazer uma oferta, eu não era preenchido automaticamente - só fui preenchido se alguém me vendesse lá. A realidade era que o mero fato de alguém me vender a um certo preço mudava as probabilidades estatísticas do negócio.
As variáveis usadas nesta etapa foram todas sujeitas a otimização. Isso foi feito exatamente da mesma maneira que eu otimizei as variáveis nos indicadores de preço, exceto neste caso eu estava otimizando para a linha de fundo P & amp; L.
Quando negociamos como seres humanos, muitas vezes temos emoções e vieses poderosos que podem levar a decisões menos que ótimas. Obviamente, não queria codificar esses vieses. Aqui estão alguns fatores que meu sistema ignorou:
O preço em que uma posição foi inserida - Em um escritório comercial, é bastante comum ouvir conversas sobre o preço em que alguém é comprido ou baixo, como se isso pudesse afetar sua futura tomada de decisão. Embora isso tenha alguma validade como parte de uma estratégia de redução de riscos, ela realmente não tem relação com o curso futuro dos eventos no mercado. Portanto, meu programa ignorou completamente essa informação. É o mesmo conceito que ignorar os custos irrecuperáveis. Indo curto vs. saindo de uma posição longa - Tipicamente um trader teria critérios diferentes que determinam onde vender uma posição comprada versus onde ir short. No entanto, da minha perspectiva de algoritmos, não havia razão para fazer uma distinção. Se meu algoritmo esperava um movimento descendente, a venda era uma boa ideia, independentemente de ser atualmente longa, curta ou plana. A & ldquo; dobrando & rdquo; estratégia - Esta é uma estratégia comum, onde os comerciantes vão comprar mais ações no caso de que o comércio original vai contra eles. Isso faz com que o preço médio de compra seja menor e isso significa que quando (ou se) a ação girar, você estará pronto para recuperar seu dinheiro rapidamente. Na minha opinião, esta é realmente uma estratégia horrível, a menos que você esteja Warren Buffet. Você é levado a pensar que está indo bem porque a maioria de seus negócios será vencedora. O problema é quando você perde você perde grande. O outro efeito é que torna difícil julgar se você realmente tem uma vantagem no mercado ou está apenas tendo sorte. Ser capaz de monitorar e confirmar se meu programa realmente tinha uma vantagem era uma meta importante.
Como meu algoritmo tomava decisões da mesma forma, independentemente de onde ele entrasse em uma negociação ou se era atualmente longo ou curto, ocasionalmente ele fazia parte (e tomava) de algumas grandes negociações perdedoras (além de algumas grandes negociações vencedoras). Mas, você não deve pensar que não houve nenhum gerenciamento de risco.
Para gerenciar o risco, impus um tamanho máximo de posição de dois contratos por vez, ocasionalmente aumentado em dias de alto volume. Eu também tinha um limite máximo de perda diária para proteger contra condições inesperadas de mercado ou um bug no meu software. Esses limites foram aplicados no meu código, mas também no backend por meio do meu corretor. Aconteceu que nunca encontrei problemas significativos.
A partir do momento em que comecei a trabalhar no meu programa, demorei cerca de 6 meses até chegar ao ponto de rentabilidade e comecei a executá-lo ao vivo. Embora, para ser justo, uma quantidade significativa de tempo foi aprender uma nova linguagem de programação. Enquanto trabalhei para melhorar o programa, vi um aumento nos lucros para cada um dos próximos quatro meses.
Toda semana eu reciclaria meu sistema com base nas 4 semanas anteriores de dados. Descobri que isso estabelecia o equilíbrio certo entre captar tendências comportamentais recentes do mercado e garantir que meu algoritmo tivesse dados suficientes para estabelecer padrões significativos. Como o treinamento começou a tomar mais e mais tempo, eu o dividi para que pudesse ser executado por 8 máquinas virtuais usando o amazon EC2. Os resultados foram então reunidos na minha máquina local.
O ponto alto da minha negociação foi em outubro de 2009, quando fiz quase 100k. Depois disso, continuei a passar os próximos quatro meses tentando melhorar meu programa, apesar do lucro reduzido a cada mês. Infelizmente, a essa altura, acho que implementei todas as minhas melhores ideias, porque nada do que tentei parecia ajudar muito.
Com a frustração de não poder fazer melhorias e não ter senso de crescimento, comecei a pensar em uma nova direção. Eu enviei um e-mail para 6 diferentes empresas de negociação de alta frequência para ver se eles estariam interessados em comprar meu software e me contratar para trabalhar para eles. Ninguém respondeu. Eu tive algumas novas idéias de inicialização que eu queria trabalhar, então eu nunca dei continuidade.
ATUALIZAÇÃO - Eu postei isso no Hacker News e tem recebido muita atenção. Eu só quero dizer que eu não defendo ninguém tentando fazer algo assim agora. Você precisaria de uma equipe de pessoas realmente inteligentes com uma variedade de experiências para ter qualquer esperança de competir. Mesmo quando eu estava fazendo isso, acredito que era muito raro para as pessoas alcançarem o sucesso (embora eu tivesse ouvido falar de outras pessoas).
Há um comentário no topo da página que menciona "estatísticas manipuladas" e se refere a mim como um investidor de varejo & rdquo; que quants iria "alegremente escolher". Este é um comentário bastante infeliz que simplesmente não se baseia na realidade. Deixando isso de lado, há alguns comentários interessantes: news. ycombinator / item? Id = 4748624.
ATUALIZAÇÃO # 2 - Fiz uma FAQ de acompanhamento que responde a algumas perguntas comuns que recebi de traders sobre essa postagem.
Noções básicas de negociação algorítmica: conceitos e exemplos.
A negociação algorítmica (negociação automatizada, negociação de caixa preta ou simplesmente negociação de algoritmos) é o processo de usar computadores programados para seguir um conjunto definido de instruções (um algoritmo) para colocar uma negociação para gerar lucros a uma velocidade e freqüência impossível para um comerciante humano. Os conjuntos de regras definidos são baseados em tempo, preço, quantidade ou qualquer modelo matemático. Para além das oportunidades de lucro para o comerciante, a negociação de algoritmos torna os mercados mais nítidos e torna a negociação mais sistemática ao excluir o impacto das emoções humanas nas atividades de negociação.
Suponha que um comerciante siga estes critérios comerciais simples:
Compre 50 ações de uma ação quando a média móvel de 50 dias ultrapassar a média móvel de 200 dias. (Uma média móvel é uma média de pontos de dados passados que suaviza as flutuações diárias de preço e, portanto, identifica as tendências.) Venda ações do estoque quando sua média móvel de 50 dias ficar 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 monitore automaticamente o preço das ações (e os indicadores de média móvel) e coloque as ordens de compra e venda quando as condições definidas forem atendidas. O comerciante não precisa mais ficar de olho nos preços e gráficos ativos, ou colocar os pedidos manualmente. O sistema de negociação algorítmica faz isso automaticamente, identificando corretamente a oportunidade de negociação.
Benefícios do comércio algorítmico.
Algo-trading fornece os seguintes benefícios:
operações realizadas com os melhores preços possíveis e imediatas (com altas chances de execução nos níveis desejados) operações cronometradas corretamente e instantaneamente, para evitar mudanças significativas nos preços reduzindo os custos de transação (veja o exemplo de déficit de implementação abaixo) verificações automatizadas simultâneas em múltiplos as condições de mercado reduziram o risco de erros manuais ao colocar os negócios em teste, em dados históricos e em tempo real disponíveis, para ver se é uma estratégia comercial viável, possibilidade reduzida de erros por parte de comerciantes humanos com base em fatores emocionais e psicológicos.
A maior parte da negociação de algoritmos de hoje é a negociação de alta frequência (HFT), que tenta capitalizar a colocação de um grande número de pedidos em velocidades muito rápidas em vários mercados e vários parâmetros de decisão, com base em instruções pré-programadas.
O comércio de algo é usado em muitas formas de atividades de negociação e investimento, incluindo:
Investidores de médio a longo prazo ou empresas compradoras - fundos de pensão, fundos mútuos, seguradoras - usam-no para comprar ações em grandes quantidades quando não desejam influenciar os preços das ações com investimentos discretos e de grande volume. Comerciantes de curto prazo e participantes de sell-side - formadores de mercado (como corretoras), especuladores e arbitradores - se beneficiam da execução automatizada do comércio; Além disso, o comércio de algo ajuda a criar liquidez suficiente para os vendedores no mercado. Comerciantes sistemáticos - seguidores de tendências, hedge funds ou pares de traders (uma estratégia de negociação neutra de mercado que corresponde a uma posição comprada com uma posição vendida em um par de instrumentos altamente correlacionados, como duas ações, fundos negociados em bolsa (ETFs) ou moedas) etc. - Acha muito mais eficiente programar suas regras de negociação e permitir que o programa troque automaticamente.
O comércio algorítmico fornece uma abordagem mais sistemática ao comércio ativo do que métodos baseados na intuição ou instinto de um operador humano.
Estratégias de Negociação Algorítmica.
Qualquer estratégia para negociação algorítmica requer uma oportunidade identificada que seja lucrativa em termos de ganhos aprimorados ou redução de custos. A seguir estão as estratégias de negociação comuns usadas no comércio de algo:
As estratégias de negociação algorítmica mais comuns seguem as tendências de médias móveis, desvios de canal, movimentos de níveis de preços e indicadores técnicos relacionados. Essas são as estratégias mais fáceis e simples de implementar por meio do comércio algorítmico, porque essas estratégias não envolvem previsões nem previsões de preços. As negociações são iniciadas com base na ocorrência de tendências desejáveis, que são fáceis e diretas de implementar por meio de algoritmos, sem entrar na complexidade da análise preditiva. O exemplo mencionado acima, de usar as médias móveis de 50 e 200 dias, é uma estratégia popular de acompanhamento de tendências.
Comprar uma ação com cotação dupla a um preço menor em um mercado e vendê-la simultaneamente a um preço mais alto em outro mercado oferece o diferencial de preço como lucro ou arbitragem isenta de risco. A mesma operação pode ser replicada para ações versus instrumentos futuros, já que os diferenciais de preços existem de tempos em tempos. A implementação de um algoritmo para identificar esses diferenciais de preço e colocar as ordens permite oportunidades lucrativas de maneira eficiente.
Os fundos de índices definiram períodos de reequilíbrio para aproximar seus investimentos aos seus respectivos índices de referência. Isso cria oportunidades lucrativas para os traders algorítmicos, que capitalizam os negócios esperados que oferecem 20 a 80 pontos-base de lucros, dependendo do número de ações no fundo de índice, pouco antes do rebalanceamento do fundo de índice. Tais negociações são iniciadas através de sistemas de negociação algorítmica para execução atempada e melhores preços.
Modelos matemáticos comprovados, como a estratégia de negociação delta-neutral, permitem negociar com uma combinação de opções e sua segurança subjacente. (A Delta neutra é uma estratégia de carteira que consiste em múltiplas posições com deltas positivos e negativos compensatórios - uma relação que compara a mudança no preço de um ativo, normalmente um título negociável, com a mudança correspondente no preço de seu derivativo - de forma que a delta dos ativos em questão totaliza zero.)
A estratégia de reversão à média baseia-se na ideia de que os preços altos e baixos de um ativo são um fenômeno temporário que revertem para seu valor médio (valor médio) periodicamente. Identificar e definir uma faixa de preço e implementar um algoritmo baseado nele permite que as negociações sejam feitas automaticamente quando o preço do ativo entra e sai de sua faixa definida.
A estratégia de preço médio ponderado por volume divide uma ordem grande e libera pedaços menores da ordem determinada dinamicamente para o mercado, usando perfis de volume histórico específicos do estoque. O objetivo é executar o pedido próximo ao preço médio ponderado por volume (VWAP).
A estratégia de preço médio ponderada pelo tempo quebra uma ordem grande e libera dinamicamente pedaços menores da ordem para o mercado usando intervalos de tempo divididos uniformemente entre uma hora inicial e final. O objetivo é executar o pedido próximo ao preço médio entre os horários inicial e final, minimizando o impacto no mercado.
Até que a ordem de negociação esteja totalmente preenchida, este algoritmo continua enviando ordens parciais, de acordo com a taxa de participação definida e de acordo com o volume negociado nos mercados. A “estratégia de etapas” relacionada envia pedidos em 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 níveis definidos pelo usuário.
A estratégia de déficit de implementação visa minimizar o custo de execução de um pedido negociando o mercado em tempo real, economizando assim no custo do pedido e se beneficiando do custo de oportunidade de execução atrasada. A estratégia aumentará a taxa de participação visada quando o preço das ações se mover favoravelmente e diminuirá quando o preço das ações se mover negativamente.
Existem algumas classes especiais de algoritmos que tentam identificar “acontecimentos” do outro lado. Esses "algoritmos de farejamento", usados, por exemplo, por um criador de mercado de vendas, têm a inteligência incorporada para identificar a existência de quaisquer algoritmos no lado da compra de uma grande ordem. Essa detecção por meio de algoritmos ajudará o criador de mercado a identificar grandes oportunidades de pedidos e permitir que eles se beneficiem do preenchimento dos pedidos a um preço mais alto. Às vezes, isso é identificado como front-running de alta tecnologia.
Requisitos técnicos para negociação algorítmica.
A implementação do algoritmo usando um programa de computador é a última parte, acompanhada de backtesting (experimentando o algoritmo em períodos históricos do desempenho passado do mercado de ações para ver se usá-lo seria lucrativo). O desafio é transformar a estratégia identificada em um processo informatizado integrado que tenha acesso a uma conta de negociação para fazer pedidos. Os seguintes são necessários:
conhecimento de programação de computadores para programar a estratégia de negociação necessária, programadores contratados ou conectividade de rede de software de negociação pré-fabricada e acesso a plataformas de negociação para colocar os pedidos em acesso a feeds de dados de mercado que serão monitorados pelo algoritmo para oportunidades de fazer pedidos. infra-estrutura para backtest o sistema, uma vez que é construído - antes de ir viver em mercados reais dados históricos disponíveis para backtesting, dependendo da complexidade das regras implementadas no algoritmo.
Aqui está um exemplo de como funciona a negociação algorítmica: a Royal Dutch Shell (RDS) está listada na Bolsa de Valores de Amsterdã (AEX) e na Bolsa de Valores de Londres (LSE). Começamos construindo 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 britânicas Devido à diferença horária de uma hora, a AEX abre uma hora antes da LSE, seguida pelas duas bolsas negociadas simultaneamente pelas próximas horas e depois negociadas apenas na LSE durante a última hora como AEX fecha.
Podemos explorar a possibilidade de negociação de arbitragem sobre as ações da Royal Dutch Shell listadas nesses dois mercados em duas moedas diferentes?
um programa de computador capaz de ler os preços atuais de preços de mercado da LSE e AEX, uma taxa forex (taxa de câmbio) para a capacidade de colocação de pedidos de GBP-EUR que pode encaminhar a ordem para a capacidade correta de backtesting de câmbio em preços históricos.
O programa de computador deve executar o seguinte:
Leia o feed de preço de entrada do estoque RDS de ambas as trocas. 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 grande o suficiente (descontando os custos de corretagem) levando a uma oportunidade lucrativa, então coloque a ordem de compra na troca de preço mais baixo e na ordem de venda na troca de preço mais alto. Se as ordens forem executadas conforme desejado, o lucro da arbitragem se seguirá.
Simples e fácil! No entanto, a prática de negociação algorítmica não é tão simples de manter e executar. Lembre-se, se você puder colocar uma negociação gerada por algoritmos, os outros participantes do mercado também poderão. Consequentemente, os preços flutuam em milissegundos e até microssegundos. No exemplo acima, o que acontece se a transação de compra for executada, mas a negociação de venda não ocorre porque os preços de venda mudam quando o seu pedido chega ao mercado? Você vai acabar sentado com uma posição aberta, fazendo com que sua estratégia de arbitragem seja inútil.
Há riscos e desafios adicionais: por exemplo, riscos de falha do sistema, erros de conectividade de rede, atrasos entre ordens de negociação e execução e, o mais importante de tudo, algoritmos imperfeitos. Quanto mais complexo for um algoritmo, o backtesting mais rigoroso é necessário antes de ser colocado em ação.
The Bottom Line.
É emocionante usar a automação auxiliada por computadores com o objetivo de ganhar dinheiro sem esforço. Mas é preciso garantir que o sistema seja completamente testado e que os limites necessários sejam definidos. Comerciantes analíticos devem considerar a aprendizagem de programação e construção de sistemas por conta própria, para ter confiança em implementar as estratégias certas de uma maneira infalível. Uso cauteloso e testes completos de negociação de algoritmos podem criar oportunidades lucrativas.
Veja como você configura sua própria operação de negociação de alta frequência.
Na semana passada, tivemos o privilégio de conversar com Mike Felix e o "doutor" Lawrence Hansen, da Lime Brokerage, corretora de agência sediada em Nova York, especializada em negociações de alta frequência e baixa latência. O principal takeaway :. Aqueles que acham que as velocidades são inaceitáveis, melhor se acostumar com isso, porque eles estão aqui para ficar e só vai ficar mais rápido a partir daqui. Perguntamos a eles como seria possível configurar sua própria operação de negociação de alta frequência em um nível de amador / varejo. Depois de definir exatamente qual é a definição de negociação de alta frequência, examinamos os passos necessários para que isso aconteça.
Começar apresentação de slides "
1. Primeiro venha com um plano de negociação. O que você quer fazer?
Existem várias estratégias quando se trata de negociação de alta frequência. Alguns deles incluem, mas obviamente não se limitam ao seguinte:
Captura de bônus de liquidez (obtenção de dinheiro para fornecer luidez na troca) Arbitragem de latência: Exponha os atrasos nos pedidos que passam por uma troca Criação automática de mercado: Usando algoritmos de baixa latência (programas realmente rápidos), você pode comprar todas as ações disponíveis em um mercado. uma fração de segundo e fazer um mercado / fornecer luidez em uma segurança particular. Rastreamento automático de índice (benchmarking): Um algoritmo básico correlacionará automaticamente uma posição a um índice, como o S & P 500.
2. Levante o capital de acordo.
Acredite ou não, você não precisa de milhões de dólares para fazer negociações de alta frequência. Alguns clientes começam com, digamos, US $ 20.000 e trabalham a partir daí. Outros têm milhões disponíveis e, em seguida, os grandes participantes - os bancos, fundos de hedge e investidores institucionais - têm centenas de milhões prontamente disponíveis à sua disposição.
3. Em seguida, encontre uma câmara de compensação que o aprove como contraparte.
Esta é uma parte integrante da sua operação. Sem uma parte de compensação adequada, que pode ser um jogador pequeno para alguém como o Barclays (na foto), seu modus operandi não funcionará corretamente. Você precisa ter 100% de certeza de que seus negócios serão liquidados no final do dia do mercado.
4. Determine quem será seu principal corretor ou "mini prime", que agrega jogadores menores juntos.
Você deve estar familiarizado com o termo principal corretor, o banco de investimento ou agente de serviços que faz todas as coisas que você não precisa lidar. Liquidar negócios, fornecer alavancagem e emprestar valores mobiliários são parte integrante da negociação e, é claro, da negociação de alta frequência. Se você é um jogador muito pequeno para ir aos grandes cães como o Goldman Sachs, o Fortis e o JP Morgan, existem corretores "mini prime" que são como um consórcio de pequenos jogadores.
5. Inicie o seu back office e as operações de contabilidade.
A menos que você queira que a SEC chegue depois que você e a FINRA enviarem multas por semana, é melhor que você tenha uma operação de backoffice bem definida. O back office cuida das tarefas administrativas associadas à negociação e garante que todas as negociações sejam liquidadas. Se a sua operação não for eficiente, espere muitas dores de cabeça ao tentar resolver uma discrepância em uma transação de quatro milhões de ações.
6. Colocar seus servidores perto das trocas através de um centro de dados. Configure servidores para especificação.
Bem. Essa é a grande parte aqui. Co-location - obtendo seus servidores o mais próximo possível da troca.
As bolsas têm data centers, assim como firmas como a Lime Brokerage. Pense sobre isso: suas ordens dependem da velocidade da luz e da latência entre dois computadores (o tempo que leva um pedido para ir do Computador A para o Computador B). Há uma diferença enorme entre milissegundos (1/1000 de segundo) e microssegundos (1 / 1.000.000 de segundo), então cada bit conta. Você precisará pagar uma taxa para colocar seu servidor no data center e precisará certificar-se de que ele tenha o poder de suportar sua operação.
7. Pregue a sua estratégia de negociação e implemente-a de acordo.
Quando seu servidor estiver no data center, é hora de revisar:
Você estabeleceu uma estratégia de negociação clara, como discutido no primeiro slide? O seu servidor está funcionando corretamente? Você testou os tempos de ping e a latência? Você estabeleceu um escritório totalmente funcional completo com os requisitos mencionados acima (limpeza, back office, etc.)? Se você estiver usando algos, seus algoritmos funcionam corretamente? Você não quer que eles fiquem malucos. Você tem capital adequado para começar sua operação?
8. Configure os algoritmos, se aplicável. Nem todos os HFT são de comércio algorítmico.
Lembre-se: HFT NÃO SIGNIFICA NEGOCIAÇÃO ALGORITÍMICA!
É tudo sobre a velocidade. Mas se você estiver usando algoritmos, certifique-se de configurá-los adequadamente, pois, se uma coisa pequena estiver errada, você poderá perder todo o seu dinheiro em questão de segundos. Ou talvez seus pedidos não sejam executados corretamente. Seja qual for o motivo, leve o seu departamento de informática / TI / nerd sobre isso e faça com que mostrem que você está pronto para rodar.
9. Certifique-se de ter um cliente front-end com uma interface decente para que você possa acessar e configurar seus servidores e estratégias de negociação de longe.
É impraticável ir ao data center toda vez que você quiser fazer alguma coisa ou reconfigurar seu servidor. Um cliente front-end decente para fazer mudanças é essencial para se ater ao seu plano. Alguns serviços vêm com uma GUI (interface gráfica do usuário) que você pode usar, mas outros podem exigir um conhecimento mais complexo de coisas como o UNIX.
10. Teste sua configuração e certifique-se de que tudo esteja funcionando corretamente - no seu lado e no final de qualquer fornecedor de software / hardware.
ESTÁ BEM. Você já fez tudo. Você configurou o negócio, instalou os servidores, configurou os algos, pagou a equipe, comeu a hora do almoço para uma verificação final antes de decolar. Afinal, você precisa ter certeza de que sua estratégia funcionará corretamente quando você "ligar as máquinas".
Alguns serviços oferecem a capacidade de testar uma configuração usando dinheiro engraçado, semelhante ao sistema de negociação PaperMoney da thinkorswim. Certifique-se de fazer isso antes de começar a usar o capital da sua empresa.
11. Entre nos mercados e comece a negociar!
Flickr do Steve Preço.
Ligue tudo e chute de volta. Deixe os comerciantes ou os algos fazer o trabalho para você e parabenize-se por um trabalho bem feito. Você finalmente começou sua própria trading de alta frequência.
Compreender exatamente o que é a negociação de alta frequência.
É muito importante que você entenda que a negociação de alta frequência não é negociação de caixa preta ou negociação algorítmica. Ele pode implementar essas duas coisas em uma estratégia de HFT, mas, novamente, elas não são estratégias específicas de HFT. Negociação de alta frequência é tudo sobre uma coisa: velocidade. Você precisa de co-location (colocando o seu servidor o mais próximo possível da troca) para fazê-lo funcionar e quanto mais milli / micro / nano-seconds você eliminar, melhor. Baixa latência (o tempo que leva para o seu pedido chegar à troca) é fundamental, especialmente quando se trata de execução.
O pessoal da Lime Brokerage sabe uma ou duas coisas sobre velocidade, já que eles vêm fazendo essas coisas há anos, muito antes de a buzzphrase conhecida como "trading de alta frequência" existir. Para eles, a velocidade é a única coisa que é fundamental e deve permanecer fundamental.
US Search Desktop.
Agradecemos seus comentários sobre como melhorar a Pesquisa do Yahoo. Este fórum é para você fazer sugestões de produtos e fornecer feedback atencioso. Estamos sempre tentando melhorar nossos produtos e podemos usar o feedback mais popular para fazer uma mudança positiva!
Se você precisar de assistência de qualquer tipo, visite nosso fórum de suporte à comunidade ou encontre ajuda individualizada em nosso site de ajuda. Este fórum não é monitorado por nenhum problema relacionado a suporte.
O fórum de comentários do produto do Yahoo agora exige um ID e uma senha válidos do Yahoo para participar.
Agora você precisa fazer login usando sua conta de e-mail do Yahoo para nos fornecer feedback e enviar votos e comentários para as ideias existentes. Se você não tiver um ID do Yahoo ou a senha do seu ID do Yahoo, inscreva-se para obter uma nova conta.
Se você tiver um ID e uma senha do Yahoo válidos, siga estas etapas se quiser remover suas postagens, comentários, votos e / ou perfil do fórum de comentários do produto do Yahoo.
Vote em uma ideia existente () ou publique uma nova ideia…
Idéias quentes Idéias superiores Novas ideias Categoria Status Meu feedback.
Xnxx vedios.
Trazer de volta o layout antigo com pesquisa de imagens.
Desinformação na ordem DVD.
Eu pedi DVD / Blueray "AL. A confidencial" tudo que eu consegui foi Blue ray & amp; um contato # para obter o DVD que não funcionou. Eu encomendo minha semana com Marilyn ____DVD / blue ray & amp; Eu peguei os dois - tolamente, assumi que o mesmo se aplicaria a L. A. ___ETC não. Eu não tenho uma máquina de raio azul ----- Eu não quero uma máquina de raio azul Eu não quero filmes blueray. Como obtenho minha cópia de DVD de L. A. Confidential?
yahoo, pare de bloquear email.
Passados vários meses agora, o Yahoo tem bloqueado um servidor que pára nosso e-mail.
O Yahoo foi contatado pelo dono do servidor e o Yahoo alegou que ele não bloquearia o servidor, mas ainda está sendo bloqueado. CEASE & amp; DESISTIR.
Não consigo usar os idiomas ingleses no e-mail do Yahoo.
Por favor, me dê a sugestão sobre isso.
Motor de busca no Yahoo Finance.
Um conteúdo que está no Yahoo Finance não aparece nos resultados de pesquisa do Yahoo ao pesquisar por título / título da matéria.
Existe uma razão para isso, ou uma maneira de reindexar?
consertar o que está quebrado.
Eu não deveria ter que concordar com coisas que eu não concordo com a fim de dizer o que eu acho - eu não tive nenhum problema resolvido desde que comecei a usar o Yahoo - fui forçado a jogar meu antigo mensageiro, trocar senhas, obter novas messenger, disse para usar o meu número de telefone para alertar as pessoas que era o meu código de segurança, receber mensagens diárias sobre o bloqueio de yahoo tentativas de uso (por mim) para quem sabe por que como ele não faz e agora eu obter a nova política aparecer em cada turno - as empresas costumam pagar muito caro pela demografia que os usuários fornecem para você, sem custo, pois não sabem o que você está fazendo - está lá, mas não está bem escrito - e ninguém pode responder a menos que concordem com a política. Já é ruim o suficiente você empilhar o baralho, mas depois não fornece nenhuma opção de lidar com ele - o velho era bom o suficiente - todas essas mudanças para o pod de maré comendo mofos não corta - vou relutantemente estar ativamente olhando - estou cansado do mudanças em cada turno e mesmo aqueles que não funcionam direito, eu posso apreciar o seu negócio, mas o Ameri O homem de negócios pode vender-nos ao licitante mais alto por muito tempo - desejo-lhe boa sorte com sua nova safra de guppies - tente fazer algo realmente construtivo para aqueles a quem você serve - a cauda está abanando o cachorro novamente - isso é como um replay de Washington d c
Eu não deveria ter que concordar com coisas que eu não concordo com a fim de dizer o que eu acho - eu não tive nenhum problema resolvido desde que comecei a usar o Yahoo - fui forçado a jogar meu antigo mensageiro, trocar senhas, obter novas messenger, disse para usar o meu número de telefone para alertar as pessoas que era o meu código de segurança, receber mensagens diárias sobre o bloqueio de yahoo tentativas de uso (por mim) para quem sabe por que isso acontece e agora eu recebo a nova política em cada turno - as empresas costumam pagar muito pela demografia que os usuários fornecem para você ... mais.
Como construir um sistema de negociação HFT para FX ($ EURUSD $ EURGBP)
Construir um ambiente sólido de negociação de alta frequência FX é um exercício extremamente desafiador. Um mecanismo de HFT geralmente contém os seguintes componentes: agregação de luidez, gerente de estratégias de negociação, gerente de estratégias de execução e análise de risco. A agregação de luidez envolve a utilização da rede avançada e das tecnologias de computador atuais para estender as conexões para o maior número possível de participantes do mercado e locais de luidez. Agregando luidities de diferentes fontes, um mecanismo de HFT terá uma excelente visão dos movimentos do mercado FX em uma latência muito baixa. Informações sobre mudanças de preço, volume e volatilidade, etc., chegam em microssegundos. E, como resultado, melhores decisões de negociação e resultados de execução podem ser alcançados com melhor agregação de fluidez. Assim, o acesso ao pool de liquidez é muito crucial na negociação de FX.
O gerente de estratégias de negociação é o cérebro central de um mecanismo de negociação de alta frequência, que contém as estratégias desenvolvidas por traders e modeladores quantitativos. Essas estratégias são geralmente construídas com base na análise de dados estatísticos, experiências de negociação anteriores e pesquisa alfa, etc. São as estratégias de negociação que conduzem todas as análises de dados de mercado em tempo real e tomam decisões comerciais sobre a compra ou venda de determinados pares de moedas. a determinados preços. O gerente de estratégias de execução é projetado para gerenciar diferentes tipos de pedidos (por exemplo, IOC e GTC, etc.) e colocar pedidos no mercado de maneira inteligente e eficiente para obter uma alta taxa de sucesso em sua execução. É muito importante que um mecanismo de HFT seja capaz de capturar o melhor tempo para sua execução nesta competição de microssegundos. O Risk analítico calcula as exposições ao risco em tempo real e as medidas das atividades de negociação de alta frequência. É a ferramenta para os comerciantes monitorarem os processos de negociação automática que são iniciados pelas estratégias de hedge. Os operadores confiam no risco analítico em termos de execução de intervenção humana para o mecanismo de negociação de alta frequência.
Compartilhe se você gosta!
Palavras-chave: #forex #fx #risco $ EURUSD $ EURGBP $ EURJPY.
Stickin 'It to the Nerds: Construindo um sistema de negociação de alta frequência.
Quando criança, você já sonhou em se tornar um nerd? Eu não penso assim. Mas nos últimos dois anos, quantas pessoas sorridentes você viu nos noticiários financeiros que pareciam, bem, nerds? Educados em teoria da computação, matemática, física, o que quer que seja, esses nerds estavam nas manchetes por ganhar muito dinheiro com negociações computadorizadas: compras de alto volume, fração de segundo, vendidas por máquina e vendas que rendiam talvez US $ 0,05 por 100 ações. Isso não parece muito dinheiro, mas multiplique isso por centenas de milhares de ações em milhares de transações por dia, e isso começa a somar. Na verdade, é responsável pela maior parte do volume atual de negociações de ações. E como você liga seu laptop fraco, você pode se perguntar, é isso que eu tenho que fazer para ganhar dinheiro?
Resposta curta: Não.
Resposta mais longa: Absolutamente não.
Repelente de nerd.
O que essas histórias não lhe disseram é que as recentes oscilações na volatilidade forçaram muitas pessoas que desenvolvem transações informatizadas a repensarem suas estratégias. Os movimentos de preços de curto prazo e de ida e volta que a negociação informatizada deve capturar foram mais unidirecionais e deixaram alguns traders com grandes posições perdedoras.
Ok, então, você pergunta, se não de alta freqüência, negociação informatizada, então o que? Você precisa de uma abordagem baseada em estratégia para a negociação, de modo que, independentemente do estoque ou índice, independentemente do ambiente de mercado, você tenha uma abordagem para encontrar e executar negociações que façam sentido. Em outras palavras, um sistema. Isso significa que você precisa criar um conjunto de regras que você siga para entrar e sair das negociações o tempo todo, em vez de simplesmente atirar no quadril. Seu sistema pode nem sempre sair como você esperava, ou sempre ganhar dinheiro, mas você terá um plano para fazer negócios. Você pode não ter uma foto sua nas notícias financeiras, mas talvez você pague suas contas e ainda tenha tempo de ser uma pessoa normal.
Construa um sistema 1-2-3.
Então como você faz isso? Bem, para começar, se você já tem a plataforma thinkorswim ® carregada em seu laptop, você tem ferramentas à sua disposição que são projetadas para oferecer mais do que a maioria dos nerds de Wall Street. A sério. E você usará essas ferramentas para encontrar negociações que atendam aos três critérios a seguir:
2. Decaimento de tempo positivo.
Vamos quebrar cada um deles.
Isso significa que não importa o que o estoque ou índice faça, se ele sobe grande, cai baixo ou em nenhum lugar, a perda potencial máxima é conhecida antes mesmo de você fazer o negócio. Por exemplo, uma chamada curta na vertical definiu risco. Uma chamada curta e nua não. Com a vertical curta, a perda máxima é a diferença entre os preços de exercício menos o crédito recebido. É isso aí. Com uma ligação curta e nua, você realmente não sabe qual será a sua perda máxima. Mesmo se você acha que usará uma ordem de parada para comprar a chamada curta de volta se a perda ficar muito alta, e se a ação parar durante a noite quando você não conseguir negociar? Stick com trades de risco definido.
Além da morte e dos impostos, a única outra coisa com a qual você pode contar é o tempo passar. E se isso não acontecer, todos nós temos problemas maiores. Por causa dessa inevitabilidade, você quer passar o tempo do seu lado. Isso significa que você quer que suas posições tenham tempo de decaimento positivo para que todas as outras coisas sejam iguais, um dia passando significa que sua posição vale um pouco mais. Decaimento de tempo positivo geralmente vem de ter uma opção curta em algum lugar na posição. Ele não precisa ficar nu (veja o critério nº 1), mas como parte de um spread como um calendário curto, vertical ou longo, ou condor de ferro, uma opção curta colocará o tempo do seu lado.
Não importa quanta pesquisa você faça, a probabilidade de um estoque ou índice subindo ou descendo é de 50%. Mas você não quer que sua negociação dependa do lançamento de uma moeda. A maneira de inclinar as probabilidades a seu favor é com uma seleção de estratégia mais inteligente. Isso começa procurando na cadeia de opções uma expiração de prazo mais curto e uma alta probabilidade de expirar sem valor. Isso permitirá que você crie spreads que dependam menos da direção correta e mais da queda do prêmio.
Ok, agora o que?
Não é tão nerd, é? Vamos transformar o teórico em prático com alguns exemplos da vida real para o trader de ações e opções.
Você é um corretor da bolsa. Talvez você ainda não esteja pronto para todas as opções espalhadas. Então, como os três critérios funcionam para você? Se você tem muito estoque, já sabe sua perda máxima potencial se o estoque chegar a zero. Mesmo que esse risco possa ser um número muito grande, eu argumentarei que ele é definido à sua maneira. Esse é o critério 1.
Para o número 2, você procura criar uma chamada curta e encoberta contra esse longo material para obter uma decadência positiva no tempo. Quando você faz uma ligação curta com seu estoque longo, para cada dia em que o preço da ação não se move, essa chamada curta fica mais barata, mais barata e dá a você um pouco de dinheiro.
Para o número 3, ter as chances do seu lado significa vender uma opção sem dinheiro que tem uma probabilidade de expirar em torno de 60%, o que você pode fazer na plataforma de negociação thinkorswim ® da TD Ameritrade (Figura 1, abaixo) . O estoque pode subir até o preço de exercício da chamada curta por vencimento, e a chamada ainda expirará sem valor. Isso reduz a base de custo de seu estoque longo, o que também reduz seu ponto de equilíbrio. Isso significa que a ação pode fazer uma mudança maior, e você ainda pode não perder dinheiro.
Em thinkorswim, veja a probabilidade de uma opção expirar dentro do dinheiro (ITM). Aqui, uma chamada com uma probabilidade de 34% de.
Expirar ITM é o mesmo que dizer que tem 66% de probabilidade de expirar sem valor. Apenas para fins ilustrativos.
Você está ansioso para começar com as opções, mas não tem certeza se deve ser otimista ou de baixa em uma determinada ação ou índice. Não se preocupe com a direção do estoque. Usando os três critérios, você pode encontrar uma estratégia que ainda pode gerar receita mesmo se estiver errado em sua aposta direcional. Vamos ver como.
Primeiro, comece com um viés direcional para o estoque ou índice. Talvez seja baseado em análises técnicas ou fundamentais, ou talvez sua cabeça falante favorita na TV tenha sugerido isso. Vamos criar um spread vertical curto (critérios 1 e 2) - uma chamada curta na vertical se você tiver um viés de baixa ou uma vertical curta se tiver um viés de alta. Comece encontrando a expiração variando de 25 a 45 dias.
Para o critério nº 3, se você estiver em baixa, encontre a chamada curta fora do dinheiro que tem 60% a 70% de probabilidade de expirar sem valor. Se você está otimista, considere encontrar o short-out fora do dinheiro que tem uma probabilidade de expirar entre 60% e 70%. Para criar uma chamada curta na vertical, considere comprar a opção de compra que é um aumento ainda maior do que a sua chamada curta. Para criar uma sequência de venda curta, considere comprar a opção de venda que é um aumento ainda maior do que a sua venda a descoberto.
Agora, aqui está o que pode acontecer. Com a chamada curta fora do dinheiro na vertical, se a ação cair por vencimento, você ganha dinheiro. Se o estoque permanece o mesmo por vencimento, você ganha dinheiro. Se o estoque passar do curto prazo da chamada curta vertical, você provavelmente perderá dinheiro. Mas se ele subir um pouco, não tão alto quanto o curto da vertical, você ainda pode ganhar dinheiro. A opção de venda curta funciona da mesma maneira, mas perde dinheiro se a ação se mover para baixo após o curto movimento da vertical de venda curta.
Esta não é uma maneira infalível e garantida de ganhar dinheiro. Mas é melhor do que ficar de fora, frustrado e confuso por não ser capaz de negociar da maneira que você acha que os profissionais de Wall Street fazem. Cada negociação feita com base nesses critérios terá um raciocínio por trás disso. E mesmo que o comércio perca dinheiro, você saberá exatamente quanto e por quê. Isso é ser um comerciante educado. Em vez de um nerd.
Got thinkorswim?
Se você não tem pensadores para analisar probabilidades, o que você está esperando? Confira o que é tudo sobre & amp; junte-se à diversão.
Jesse Spaulding.
Como ganhei $ 500k com aprendizado de máquina e HFT (negociação de alta frequência)
Este post irá detalhar o que eu fiz para fazer aprox. 500k de negociação de alta frequência de 2009 a 2010. Desde que eu estava negociando de forma totalmente independente e não estou mais executando o meu programa, estou feliz em dizer tudo. Minha negociação foi principalmente em contratos de futuros Russel 2000 e DAX.
A chave do meu sucesso, acredito, não estava em uma equação financeira sofisticada, mas sim no design geral do algoritmo, que unia muitos componentes simples e usava o aprendizado de máquina para otimizar a máxima lucratividade. Você não precisa conhecer nenhuma terminologia sofisticada aqui, porque quando eu configurei meu programa, tudo foi baseado na intuição. (O surpreendente curso de aprendizado de máquina de Andrew Ng ainda não estava disponível - se você clicar nesse link, você será levado ao meu projeto atual: CourseTalk, um site de revisão para MOOCs)
Primeiro, quero apenas demonstrar que meu sucesso não foi simplesmente o resultado da sorte. Meu programa fazia de 1000 a 4000 negociações por dia (meio longo, meio curto) e nunca ocupava posições de mais do que alguns contratos por vez. Isso significava que a sorte aleatória de qualquer negociação em particular era muito rápida. O resultado foi que eu nunca perdi mais de US $ 2000 em um dia e nunca tive um mês perdido:
(EDIT: Estes números são depois de pagar comissões)
E aqui está um gráfico para lhe dar uma noção da variação diária. Note que isso exclui os últimos 7 meses porque - à medida que os números pararam de subir - perdi minha motivação para entrar neles.
Antes de configurar o meu programa de negociação automatizado, eu tinha 2 anos de experiência como "manual" e "& rdquo; comerciante do dia. Isso foi em 2001 - eram os primeiros dias do comércio eletrônico e havia oportunidades para os "cambistas". fazer um bom dinheiro. Eu só posso descrever o que eu estava fazendo como se fosse jogar videogames / jogos de azar com uma suposta vantagem. Ser bem-sucedido significa ser rápido, ser disciplinado e ter uma boa capacidade intuitiva de reconhecimento de padrões. Consegui ganhar cerca de US $ 250 mil, pagar meus empréstimos estudantis e ter dinheiro sobrando. Ganhar!
Nos próximos cinco anos, eu lançaria duas startups, adquirindo algumas habilidades de programação ao longo do caminho. Não seria até o final de 2008 que eu voltaria a negociar. Com o dinheiro acabando com a venda da minha primeira startup, a negociação oferecia esperanças de algum dinheiro rápido enquanto eu descobria o meu próximo movimento.
Em 2008, eu era "manualmente" e "rdquo; dia negociando futuros usando software chamado T4. Eu estava querendo algumas teclas de atalho de entrada de pedidos personalizadas, então depois de descobrir que o T4 tinha uma API, aceitei o desafio de aprender C # (a linguagem de programação necessária para usar a API) e fui em frente e desenvolvi algumas teclas de atalho.
Depois de molhar os pés com a API, logo tive aspirações maiores: eu queria ensinar o computador a trocar por mim. A API forneceu um fluxo de dados de mercado e uma maneira fácil de enviar pedidos para a troca - tudo o que eu tinha que fazer era criar a lógica no meio.
Abaixo está uma imagem de uma janela de negociação T4. O que foi legal é que quando eu comecei meu programa trabalhando eu pude assistir o comércio de computador exatamente nesta mesma interface. Assistir ordens reais entrando e saindo (por conta própria com meu dinheiro real) era ao mesmo tempo emocionante e assustador.
O design do meu algoritmo.
Desde o início, meu objetivo era configurar um sistema de modo que eu pudesse estar razoavelmente confiante de que ganharia dinheiro antes de fazer qualquer negociação ao vivo. Para conseguir isso, eu precisava construir uma estrutura de simulação de negociação que simulasse a negociação ao vivo, com a maior precisão possível.
Enquanto a negociação no modo ao vivo exigia atualizações do mercado de processamento transmitidas pela API, o modo de simulação exigia a leitura das atualizações do mercado a partir de um arquivo de dados. Para coletar esses dados, configurei a primeira versão do meu programa para simplesmente conectar-me à API e registrar as atualizações do mercado com registros de data e hora. Acabei usando 4 semanas de dados de mercado recentes para treinar e testar meu sistema.
Com uma estrutura básica em vigor, ainda tinha a tarefa de descobrir como criar um sistema comercial lucrativo. Acontece que meu algoritmo se dividiria em dois componentes distintos, que eu exploraria por sua vez:
Previsão de movimentos de preços; e Fazendo negócios lucrativos.
Previsão de movimentos de preços.
Talvez um componente óbvio de qualquer sistema de negociação seja a capacidade de prever onde os preços irão se mover. E o meu não foi exceção. Eu defini o preço atual como a média do lance interno e da oferta interna e estabeleci a meta de prever onde o preço estaria nos próximos 10 segundos. Meu algoritmo precisaria apresentar essa previsão momento a momento ao longo do dia de negociação.
Criando & amp; otimização de indicadores.
Eu criei um punhado de indicadores que provaram ter uma capacidade significativa de prever movimentos de preços de curto prazo. Cada indicador produziu um número que foi positivo ou negativo. Um indicador era útil se, na maior parte dos casos, um número positivo correspondesse ao aumento do mercado e um número negativo correspondesse à queda do mercado.
Meu sistema me permitiu determinar rapidamente a capacidade preditiva de qualquer indicador, por isso pude experimentar muitos indicadores diferentes para ver o que funcionava. Muitos dos indicadores tinham variáveis nas fórmulas que os produziam e eu consegui encontrar os valores ótimos para essas variáveis, fazendo comparações lado a lado dos resultados obtidos com valores variáveis.
Os indicadores que foram mais úteis foram todos relativamente simples e foram baseados em eventos recentes no mercado em que eu estava negociando, bem como nos mercados de títulos correlacionados.
Fazendo previsões precisas de movimentação de preços.
Ter indicadores que simplesmente previam uma alta ou baixa no preço não era suficiente. Eu precisava saber exatamente quanto movimento de preço era previsto por cada valor possível de cada indicador. Eu precisava de uma fórmula que convertesse um valor de indicador em uma previsão de preço.
Para conseguir isso, acompanhei os movimentos de preço previstos em 50 intervalos que dependiam do intervalo em que o valor do indicador caiu. Isso gerou previsões incorretas para cada depósito que eu era capaz de representar graficamente no Excel. Como você pode ver, a mudança de preço esperada aumenta à medida que o valor do indicador aumenta.
Com base em um gráfico como esse, consegui fazer uma fórmula para ajustar a curva. No começo eu fiz isso "ajuste de curva" manualmente, mas logo escrevi algum código para automatizar esse processo.
Note que nem todas as curvas do indicador tinham a mesma forma. Observe também que os buckets foram distribuídos logaritmicamente para distribuir os dados de maneira uniforme. Por fim, observe que os valores dos indicadores negativos (e suas previsões de preços descendentes correspondentes) foram invertidos e combinados com os valores positivos. (Meu algoritmo tratado para cima e para baixo exatamente o mesmo.)
Combinando indicadores para uma única previsão.
Uma coisa importante a considerar era que cada indicador não era totalmente independente. Eu não poderia simplesmente somar todas as previsões que cada indicador fez individualmente. A chave era descobrir o valor preditivo adicional que cada indicador tinha além do que já estava previsto. Isso não era difícil de implementar, mas significava que se eu estivesse "ajustando a curva", vários indicadores ao mesmo tempo, tive que ser cuidadoso; a mudança de um efetuaria as previsões de outro.
Para ajustar a curva & rdquo; Todos os indicadores ao mesmo tempo eu configurei o otimizador para pisar apenas 30% do caminho para as novas curvas de previsão com cada passagem. Com esse salto de 30%, descobri que as curvas de previsão se estabilizariam em poucas passagens.
Com cada indicador nos dando agora a previsão adicional de preço, eu poderia simplesmente adicioná-los para produzir uma única previsão de onde o mercado estaria em 10 segundos.
Por que prever preços não é suficiente.
Você pode pensar que com essa vantagem no mercado eu era de ouro. Mas você precisa ter em mente que o mercado é composto de ofertas e ofertas - não é apenas um preço de mercado. Sucesso na negociação de alta freqüência se resume a obter bons preços e não é assim tão fácil.
Os fatores a seguir dificultam a criação de um sistema lucrativo:
Com cada negócio eu tive que pagar comissões ao meu corretor e à bolsa. O spread (diferença entre oferta mais alta e oferta mais baixa) significava que se eu simplesmente comprasse e vendesse aleatoriamente, estaria perdendo uma tonelada de dinheiro. A maior parte do volume do mercado era de outros bots que só fariam uma troca comigo se achassem que tinham alguma vantagem estatística. Vendo uma oferta não garante que eu poderia comprá-lo. No momento em que minha ordem de compra chegou à bolsa, era muito possível que essa oferta tivesse sido cancelada. Como um pequeno participante do mercado, não havia como competir sozinho com a velocidade.
Construindo uma simulação de negociação completa.
Então eu tive uma estrutura que me permitiu backtest e otimizar os indicadores. Mas eu tive que ir além disso - eu precisava de um framework que me permitisse fazer backtest e otimizar um sistema de negociação completo; aquele em que eu estava mandando pedidos e ficando em posições. Neste caso, eu estaria otimizando para P & amp; L total e, em certa medida, P & amp; L médio por negociação.
Isso seria mais complicado e, de certa forma, impossível modelar exatamente, mas eu fiz o melhor que pude. Aqui estão alguns dos problemas que eu tive que lidar:
Quando um pedido foi enviado ao mercado na simulação, tive que modelar o tempo de atraso. O fato de meu sistema ter visto uma oferta não significa que ela poderia comprá-la imediatamente. O sistema enviaria o pedido, aguardaria aproximadamente 20 milissegundos e somente se a oferta ainda estivesse lá era considerado como um negócio executado. Isso era inexato porque o tempo real de atraso era inconsistente e não relatado. Quando eu fiz lances ou ofertas, tive que olhar para o fluxo de execução de negociação (fornecido pela API) e usá-los para avaliar quando meu pedido seria executado. Para fazer isso direito eu tive que rastrear a posição do meu pedido na fila. (É um sistema first-in first-out). Novamente, eu não pude fazer isso perfeitamente, mas fiz uma melhor aproximação.
Para refinar minha simulação de execução de pedidos, o que fiz foi extrair meus arquivos de log da negociação ao vivo pela API e compará-los aos arquivos de log produzidos pela negociação simulada no mesmo período de tempo. Consegui obter minha simulação ao ponto de ser bastante precisa e, para as partes que eram impossíveis de modelar exatamente, certifiquei-me de, pelo menos, produzir resultados que fossem estatisticamente semelhantes (nas métricas que julguei importantes).
Fazendo negócios lucrativos.
Com um modelo de simulação de pedidos, agora eu poderia enviar pedidos no modo de simulação e ver um P & amp; Mas como meu sistema saberia quando e onde comprar e vender?
As previsões do movimento de preços foram um ponto de partida, mas não toda a história. O que eu fiz foi criar um sistema de pontuação para cada um dos 5 níveis de preço na oferta e oferta. Estes incluíram um nível acima da oferta interna (para uma ordem de compra) e um nível abaixo da oferta interna (para uma ordem de venda).
Se a pontuação de um determinado nível de preço estiver acima de um certo limite, isso significa que o sistema deve ter um lance / oferta ativa - abaixo do limite, então qualquer pedido ativo deve ser cancelado. Com base nisso, não era incomum que meu sistema exibisse um lance no mercado e o cancelasse imediatamente. (Embora eu tentei minimizar isso, é irritante para quem olha para a tela com olhos humanos - inclusive eu.)
As pontuações do nível de preços foram calculadas com base nos seguintes fatores:
A previsão do movimento de preços (que discutimos anteriormente). O nível de preços em questão. (Níveis internos significavam que grandes previsões de movimentação de preço eram necessárias.) O número de contratos na frente do meu pedido na fila. (Menos foi melhor.) O número de contratos por trás do meu pedido na fila. (Mais foi melhor.)
Essencialmente, esses fatores serviram para identificar "seguro". lugares para licitar / oferecer. A previsão do movimento de preços, por si só, não era adequada porque não levava em conta o fato de que, ao fazer uma oferta, eu não era preenchido automaticamente - só fui preenchido se alguém me vendesse lá. A realidade era que o mero fato de alguém me vender a um certo preço mudava as probabilidades estatísticas do negócio.
As variáveis usadas nesta etapa foram todas sujeitas a otimização. Isso foi feito exatamente da mesma maneira que eu otimizei as variáveis nos indicadores de preço, exceto neste caso eu estava otimizando para a linha de fundo P & amp; L.
Quando negociamos como seres humanos, muitas vezes temos emoções e vieses poderosos que podem levar a decisões menos que ótimas. Obviamente, não queria codificar esses vieses. Aqui estão alguns fatores que meu sistema ignorou:
O preço em que uma posição foi inserida - Em um escritório comercial, é bastante comum ouvir conversas sobre o preço em que alguém é comprido ou baixo, como se isso pudesse afetar sua futura tomada de decisão. Embora isso tenha alguma validade como parte de uma estratégia de redução de riscos, ela realmente não tem relação com o curso futuro dos eventos no mercado. Portanto, meu programa ignorou completamente essa informação. É o mesmo conceito que ignorar os custos irrecuperáveis. Indo curto vs. saindo de uma posição longa - Tipicamente um trader teria critérios diferentes que determinam onde vender uma posição comprada versus onde ir short. No entanto, da minha perspectiva de algoritmos, não havia razão para fazer uma distinção. Se meu algoritmo esperava um movimento descendente, a venda era uma boa ideia, independentemente de ser atualmente longa, curta ou plana. A & ldquo; dobrando & rdquo; estratégia - Esta é uma estratégia comum, onde os comerciantes vão comprar mais ações no caso de que o comércio original vai contra eles. Isso faz com que o preço médio de compra seja menor e isso significa que quando (ou se) a ação girar, você estará pronto para recuperar seu dinheiro rapidamente. Na minha opinião, esta é realmente uma estratégia horrível, a menos que você esteja Warren Buffet. Você é levado a pensar que está indo bem porque a maioria de seus negócios será vencedora. O problema é quando você perde você perde grande. O outro efeito é que torna difícil julgar se você realmente tem uma vantagem no mercado ou está apenas tendo sorte. Ser capaz de monitorar e confirmar se meu programa realmente tinha uma vantagem era uma meta importante.
Como meu algoritmo tomava decisões da mesma forma, independentemente de onde ele entrasse em uma negociação ou se era atualmente longo ou curto, ocasionalmente ele fazia parte (e tomava) de algumas grandes negociações perdedoras (além de algumas grandes negociações vencedoras). Mas, você não deve pensar que não houve nenhum gerenciamento de risco.
Para gerenciar o risco, impus um tamanho máximo de posição de dois contratos por vez, ocasionalmente aumentado em dias de alto volume. Eu também tinha um limite máximo de perda diária para proteger contra condições inesperadas de mercado ou um bug no meu software. Esses limites foram aplicados no meu código, mas também no backend por meio do meu corretor. Aconteceu que nunca encontrei problemas significativos.
A partir do momento em que comecei a trabalhar no meu programa, demorei cerca de 6 meses até chegar ao ponto de rentabilidade e comecei a executá-lo ao vivo. Embora, para ser justo, uma quantidade significativa de tempo foi aprender uma nova linguagem de programação. Enquanto trabalhei para melhorar o programa, vi um aumento nos lucros para cada um dos próximos quatro meses.
Toda semana eu reciclaria meu sistema com base nas 4 semanas anteriores de dados. Descobri que isso estabelecia o equilíbrio certo entre captar tendências comportamentais recentes do mercado e garantir que meu algoritmo tivesse dados suficientes para estabelecer padrões significativos. Como o treinamento começou a tomar mais e mais tempo, eu o dividi para que pudesse ser executado por 8 máquinas virtuais usando o amazon EC2. Os resultados foram então reunidos na minha máquina local.
O ponto alto da minha negociação foi em outubro de 2009, quando fiz quase 100k. Depois disso, continuei a passar os próximos quatro meses tentando melhorar meu programa, apesar do lucro reduzido a cada mês. Infelizmente, a essa altura, acho que implementei todas as minhas melhores ideias, porque nada do que tentei parecia ajudar muito.
Com a frustração de não poder fazer melhorias e não ter senso de crescimento, comecei a pensar em uma nova direção. Eu enviei um e-mail para 6 diferentes empresas de negociação de alta frequência para ver se eles estariam interessados em comprar meu software e me contratar para trabalhar para eles. Ninguém respondeu. Eu tive algumas novas idéias de inicialização que eu queria trabalhar, então eu nunca dei continuidade.
ATUALIZAÇÃO - Eu postei isso no Hacker News e tem recebido muita atenção. Eu só quero dizer que eu não defendo ninguém tentando fazer algo assim agora. Você precisaria de uma equipe de pessoas realmente inteligentes com uma variedade de experiências para ter qualquer esperança de competir. Mesmo quando eu estava fazendo isso, acredito que era muito raro para as pessoas alcançarem o sucesso (embora eu tivesse ouvido falar de outras pessoas).
Há um comentário no topo da página que menciona "estatísticas manipuladas" e se refere a mim como um investidor de varejo & rdquo; que quants iria "alegremente escolher". Este é um comentário bastante infeliz que simplesmente não se baseia na realidade. Deixando isso de lado, há alguns comentários interessantes: news. ycombinator / item? Id = 4748624.
ATUALIZAÇÃO # 2 - Fiz uma FAQ de acompanhamento que responde a algumas perguntas comuns que recebi de traders sobre essa postagem.
Como construir um sistema de negociação HFT para FX ($ EURUSD $ EURGBP)
Construir um ambiente sólido de negociação de alta frequência FX é um exercício extremamente desafiador. Um mecanismo de HFT geralmente contém os seguintes componentes: agregação de luidez, gerente de estratégias de negociação, gerente de estratégias de execução e análise de risco. A agregação de luidez envolve a utilização da rede avançada e das tecnologias de computador atuais para estender as conexões para o maior número possível de participantes do mercado e locais de luidez. Agregando luidities de diferentes fontes, um mecanismo de HFT terá uma excelente visão dos movimentos do mercado FX em uma latência muito baixa. Informações sobre mudanças de preço, volume e volatilidade, etc., chegam em microssegundos. E, como resultado, melhores decisões de negociação e resultados de execução podem ser alcançados com melhor agregação de fluidez. Assim, o acesso ao pool de liquidez é muito crucial na negociação de FX.
O gerente de estratégias de negociação é o cérebro central de um mecanismo de negociação de alta frequência, que contém as estratégias desenvolvidas por traders e modeladores quantitativos. Essas estratégias são geralmente construídas com base na análise de dados estatísticos, experiências de negociação anteriores e pesquisa alfa, etc. São as estratégias de negociação que conduzem todas as análises de dados de mercado em tempo real e tomam decisões comerciais sobre a compra ou venda de determinados pares de moedas. a determinados preços. O gerente de estratégias de execução é projetado para gerenciar diferentes tipos de pedidos (por exemplo, IOC e GTC, etc.) e colocar pedidos no mercado de maneira inteligente e eficiente para obter uma alta taxa de sucesso em sua execução. É muito importante que um mecanismo de HFT seja capaz de capturar o melhor tempo para sua execução nesta competição de microssegundos. O Risk analítico calcula as exposições ao risco em tempo real e as medidas das atividades de negociação de alta frequência. É a ferramenta para os comerciantes monitorarem os processos de negociação automática que são iniciados pelas estratégias de hedge. Os operadores confiam no risco analítico em termos de execução de intervenção humana para o mecanismo de negociação de alta frequência.
Compartilhe se você gosta!
Palavras-chave: #forex #fx #risco $ EURUSD $ EURGBP $ EURJPY.
Комментариев нет:
Отправить комментарий